遺傳演算法能不能優化演算法?

也就是能不能用這個演算法進化出更好的演算法?


能啊,這種叫Genetic Programming(遺傳編程)。參見A Field Guide to Genetic Programming。

主要的思想就是,為了解決目標問題,設計一個小的DSL,然後遺傳演算法要演化的就是這門DSL的程序,你需要實現這個DSL的解釋器,以及評估程序質量的fitness function和實現交叉/變異等操作的運算元。


除了點贊最多的GP(Genetic Programming),還有GA和GP的結合改進版GEP(Gene-Expression-Programming),提出者Candida Ferreira指出GEP的改進使演算法效率較之GA和GP提高了100-60000倍。


Adaboost


當然是可以的,如果你的演算法里有自適應參數,那麼可以用遺傳演算法幫助你來調參。有些遺傳演算法本身有自適應參數的,還可以用遺傳演算法來優化遺傳演算法呢。


有目標就有cost function
有 cost function 就可能有最優解
可能有 最優解 就可能有 找到最優解的方法

所有演算法蓋無例外...


首先EA下面還分GA和ES 每個下面還有一堆演算法 EA是一個總的思路 然後的話其實genetic programming 算還是EA的思路但可以把運算元算為參數哦(當初寫LISP寫的頭大) 所以實際用的時候語言不同解決的問題也不同
利用EA的思想根據問題來設計優化演算法

我個人偏喜歡ES(Evolutinary Strategy)
它最初的實用例子 就是使一個噴嘴效率最高的優化問題 然後一個工程師將噴嘴橫截切然後調節每一片的面積 最後得到了一個按照正常思路絕對想不到的噴嘴設計
題主可以先看看EA的書


有限優化是可以的——如果你把變數調整也算的話,但遺傳演算法沒法改善參數項的選擇,至少我不知道


推薦閱讀:

RoboMaster和Battlebots這兩種機器人比賽,哪個技術含量更高,對機器人發展更有意義?
自動駕駛汽車涉及哪些技術?
對機器人或人工智慧的研究能幫助人類更了解自身嗎?
當前深度學習和slam結合有哪些比較好的論文,有沒有一些開源的代碼?
既然機器學習可以在某專業上超越人類,那人類的這個專業技能還有用嗎?

TAG:人工智慧 | 演算法 | 遺傳演算法 | 機器學習 | 深度學習DeepLearning |