Renascence架構簡介

Renascence架構

Renascence架構是 A-GP-B 式的橋樑架構,它要求下層庫不直接對外提供接口,而是往GP庫註冊函數,上層庫用GP公式間接調用下層庫的代碼。
GP庫位於應用與lib庫之間,作爲應用調用lib庫的橋樑而存在,它本身不依賴任何基礎庫。

上層調用

通過引入訓練這一過程,應用跨平臺的問題有了最好的解決方案,即在安裝過程中,應用提供一個模板供平臺訓練,得到適合的實際運行的程序,然後應用在運行時用該程序就可以。
應用本身無須考慮平臺問題,在任一平臺下功能自動兼容、性能自動達到最優,而這是HTML5技術所做不到的。

訓練

在應用安裝/升級時,執行這一步驟
ADF訓練

使用

在應用運行時,執行這一步驟,生成的ADF需要通過GP去執行(後續可能做相應優化,將ADF變成代碼,生成一個新庫)
ADF使用

訓練過程的作用

1、允許自動化參數調節

寫程序,尤其是算法類程序時,調參數是不可避免的事情,比如梯度下降中的學習速率,遺傳算法中的變異比率、交叉比率,圖像模糊算法中模糊半徑。做代碼優化時也會配置不少參數,如多線程優化中開啓的線程數,開啓多線程優化的閾值,使用OpenCL時device端緩存的大小,一次運算的globalsize, localsize,等等。
Renascence可提供一個框架,以公式鏈接起來的所有函數參數,會通過一個通一的方案調優。既然要調優,自然,優化的目標是什麼,需要應用指定的:對優化而言,是時間的快慢;對預測而言,是準確率;對圖像去噪而言,是與原圖的信噪比。但如果是對於圖像美化這種主觀因素比較強的情形,沒有什麼比較好的評價函數,這時Renascence可提供一個枚舉的機制,得出一系列參數——結果表,由人眼再去鑑別。

2、允許部分程序邏輯根據實際應用場景動態生成與調節

(1)類型自動匹配
如機器學習庫中,對一批數據做K-Means聚類,模型輸入的是矩陣(MATRIX),但數據可能源於是數據庫(DATABASE),也可能是csv文件(CS >)
輸入如下公式:KMeans(ADF(x0)),並在運行時指定x0的類型是DATABASE/CSV,Renascence便會去找能把DATABASE/CSV轉化爲矩陣MATRIX的函數,然後再與 KMeans 這個函數接起來。
(2)算法遍歷尋優
如數據預測迴歸有 CART、線性迴歸等方法。寫如下公式,可完成建模與預測:
Predict(ADF(x0), x1)
x0 爲訓練集,x1爲測試集,這個公式中 ADF(x0)會對應翻譯爲某一種迴歸方法,在 OptInfo 中加入評價函數後,會去訓練一個最優算法。

下層適配

下層lib庫需要按GP的標準提供庫函數,並且提供相應的庫描述文件。

代碼結構

對外接口

include/user 目錄下爲上下層的接口。
上層調用使用 GPAPI 中提供的函數,另外,一般而言需要使用GP公式。
下層適配使用IFunctionTable、GPContents等數據結構。

仿編譯器架構

仿編譯器架構

前端

公式——GPFunctionTree
GP的前端比較特別,它不僅是語法解析,還包括了遺傳規劃算法的自動邏輯生成。

中端

主要作子樹去重優化。

後端

GPFunctionTree——ADF
將 GPFunctionTree轉化爲 ADF,目前主要是樹形(無優化)、圖形(帶優化)和流式(允許間斷輸入)。

尋優算法

optimizor 下爲相對獨立的參數尋優算法,目前主要包括優選法(黃金618法)、網格法、粒子羣算法(PSO)。其中優選法最快,但效果一般,網格法可以保證無遺漏,但極慢,粒子羣算法爲啓發式算法,結果有一定隨機性。
evolution下爲遺傳規劃算法,用於優化函數結構。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章