導航:首頁 > 源碼編譯 > 演算法筆記知乎

演算法筆記知乎

發布時間:2025-09-29 05:57:15

『壹』 進化演算法入門讀書筆記(一)

這里我參考學習的書籍是:

《進化計算的理論和方法》,王宇平,科學出版社

《進化優化演算法:基於仿生和種群的計算機智能方法》,[美]丹·西蒙,清華大學出版社。

進化演算法是 求解優化問題 的一種演算法,它是 模仿生物進化與遺傳原理 而設計的一類隨機搜索的優化演算法。

不同的作者稱進化演算法有不同的術語,以下。註:這里僅列舉出了我自己比較容易混淆的一些,並未全部列出。

進化計算: 這樣能強調演算法需要在 計算機上 實施,但進化計算也可能指不用於優化的演算法(最初的遺傳演算法並不是用於優化本身,而是想用來研究自然選擇的過程)。因此,進化優化演算法比進化計算更具體。

基於種群的優化: 它強調進化演算法一般是讓問題的候選解 種群 隨著時間的進化以得到問題的更好的解。然而許多進化演算法每次迭代只有單個候選解。因此,進化演算法比基於種群的優化更一般化。

計算機智能/計算智能: 這樣做常常是為了區分進化演算法與專家系統,在傳統上專家系統一直被稱為人工智慧。專家系統模仿演繹推理,進化演算法則模仿歸納推理。進化演算法有時候也被看成是人工智慧的一種。計算機智能是比進化演算法更一般的詞,它包括神經計算、模糊系統、人工生命這樣的一些技術,這些技術可應用於優化之外的問題。因此,進化計算可能比計算機智能更一般化或更具體。

由自然啟發的計算/仿生計算: 像差分進化和分布估計演算法這些進化演算法可能並非源於自然,像進化策略和反向學習這些進化演算法與自然過程聯系甚微。因此,進化演算法比由自然啟發的演算法更一般化,因為進化演算法包括非仿生演算法。

機器學習: 機器學習研究由經驗學到的計算機演算法,它還包括很多不是進化計算的演算法,如強化學習、神經網路、分簇、SVM等等。因此,機器學習比進化演算法更廣。

群智能演算法: 一些人認為群智能演算法應與進化演算法區分開,一些人認為群智能演算法是進化演算法的一個子集。因為群智能演算法與進化演算法有相同的執行方式,即,每次迭代都改進問題的候選解的性能從而讓解的種群進化。因此,我們認為群智能演算法是一種進化演算法。

進化演算法的簡單定義可能並不完美。在進化演算法領域術語的不統一會讓人困惑,一個演算法是進化演算法如果它通常被認為是進化演算法,這個戲謔的、循環的定義一開始有些麻煩,但是一段時間後,這個領域工作的人就會習慣了。

優化幾乎適用於生活中的所有領域。除了對如計算器做加法運算這種過於簡單的問題,不必用進化演算法的軟體,因為有更簡單有效的演算法。此外對於每個復雜的問題,至少應該考慮採用進化演算法。

一個優化問題可以寫成最小化問題或最大化問題,這兩個問題在形式上很容易互相轉化:

函數 被稱為目標函數,向量 被稱為獨立變數,或決策變數。我們稱 中元素的個數為問題的維數。

優化問題常常帶有約束。即在最小化某個函數 時,對 可取的值加上約束。不舉例。

實際的優化問題不僅帶有約束,還有多個目標。這意味著我們想要同時最小化不止一個量。

例子:

這里評估這個問題的一種方式是繪制 作為函數 的函數的圖:

如圖,對在實線上的 的值,找不到能同時使 和 減小的 的其他值,此實線被稱為 帕累托前沿 ,而相應的 的值的集合被稱為帕累托集。(此處的帕累托最優問題十分重要,可以參考這個鏈接來學習和理解: 多目標優化之帕累托最優 - 知乎 ,非常清晰易懂。)

該例子是一個非常簡單的多目標優化問題,它只有兩個目標。實際的優化問題通常涉及兩個以上的模目標,因此很難得到它的帕累托前沿,由於它是高維的,我們也無法將它可視化。後面的章節將會仔細討論多目標進化優化。

多峰優化問題是指問題不止一個局部最小值。上例中的 就有兩個局部最小值,處理起來很容易,有些問題有很多局部最小值,找出其中的全局最小值就頗具挑戰性。

對於前面的簡單例子,我們能用圖形的方法或微積分的方法求解,但是許多實際問題除了有更多獨立變數、多目標,以及帶約束之外更像上面的Ackley函數這樣,對於這類問題,基於微積分或圖形的方法就不夠用了,而進化演算法卻能給出更好的結果。

到現在為止我們考慮的都是連續優化問題,也就是說,允許獨立變數連續地變化。但有許多優化問題中的獨立變數智能在一個離散集合上取值。這類問題被稱為組合優化問題。如旅行商問題。

對於有 個城市的旅行商問題,有 個可能的解。對於一些過大的問題,硬算的方法不可行,像旅行商這樣的組合問題沒有連續的獨立變數,因此不能利用導數求解。除非對每個可能的解都試一遍,不然就無法確定所得到的組合問題的解是否就是最好的解。進化演算法對這類大規模、多維的問題,它至少能幫我們找出一個好的解(不一定是最好的)。

『貳』 鎬庝箞瀛︿範浜哄伐鏅鴻兘錛

絎涓姝ワ細澶嶄範綰挎т唬鏁般傦紙瀛︽福鐨勭嚎浠e繕浜嗗ソ澶-_-||錛

鎳掑緱鐪嬩功灝辯洿鎺ョ敤浜嗚憲鍚嶇殑鈥斺旈夯鐪佺悊宸ュ叕寮璇撅細綰挎т唬鏁幫紝娣卞叆嫻呭嚭鏁堟灉鎷旂兢錛屼互鍚庝細鐢ㄥ埌鐨凷VD銆佸笇灝斾集鐗圭┖闂寸瓑閮芥湁浠嬬粛錛

騫垮憡錛氳竟鐪嬭竟鎬葷粨浜嗕竴濂楃瑪璁 GitHub - zlotus/notes-linear-algebra: 綰挎т唬鏁扮瑪璁般

絎浜屾ワ細鍏ラ棬鏈哄櫒瀛︿範綆楁硶銆

榪樻槸鍥犱負姣旇緝鎳掞紝涔熷氨鐩存帴鐢ㄤ簡钁楀悕鐨勨斺旀柉鍧︾忓ぇ瀛﹀叕寮璇 錛氭満鍣ㄥ︿範璇劇▼錛屽惔鎮╄揪鏁欐巿鐨勮佺増cs229鐨勮嗛戱紝璁茬殑闈炲父緇嗭紙綆楁硶鐨勭洰鏍->鏁板︽帹婕->浼浠g爜錛夈傝繖濂楁暀紼嬪敮涓鐨勭己鐐瑰湪浜庢病鏈変粙緇嶆渶榪戝ぇ鐏鐨勭炵粡緗戠粶錛屼絾鍏跺疄榪欎篃綆楁槸浼樼偣錛岃╂垜鏄庣櫧浜嗙畻娉曢兘鏈夊悇鑷鐨勫簲鐢ㄩ嗗煙錛屽苟涓嶆槸鎵鏈夐棶棰橀兘闇瑕佺敤紲炵粡緗戠粶鏉ヨВ鍐籌紱

澶氳翠竴鐐癸紝榪欎釜璇劇▼閲岃︾粏浠嬬粛鐨勫唴瀹規湁錛氫竴鑸綰挎фā鍨嬨侀珮鏂緋誨垪妯″瀷銆丼VM鐞嗚哄強瀹炵幇銆佽仛綾葷畻娉曚互鍙奅M綆楁硶鐨勫悇縐嶇浉鍏沖簲鐢ㄣ丳CA/ICA銆佸︿範鐞嗚恆侀┈灝斿彲澶緋誨垪妯″瀷銆傝懼爞絎旇板湪錛欳S 229: Machine Learning (Course handouts)錛屽悓鏍烽潪甯歌︾粏銆

騫垮憡錛氳竟鐪嬭竟鎬葷粨浜嗕竴濂楃瑪璁 GitHub - zlotus/notes-LSJU-machine-learning: 鏈哄櫒瀛︿範絎旇

絎涓夋ワ細灝濊瘯鐢ㄤ唬鐮佸疄鐜扮畻娉曘

渚濈劧鍥犱負姣旇緝鎳掞紝緇х畫鐩存帴浣跨敤浜嗚憲鍚嶇殑鈥斺旀満鍣ㄥ︿範 | Coursera 錛岃繕鏄鍚存仼杈炬暀鎺堢殑璇劇▼錛屽彧涓嶈繃榪欎釜鏄鏋佺畝鐗堢殑cs229錛屽嚑涔庡氨鏄鏁欐庝箞鍦╩atlab閲屽揩閫熷疄鐜頒竴涓妯″瀷錛堣繖濂楁暀紼嬮噷鏈夌炵粡緗戠粶鍩烘湰姒傚康鍙婂疄鐜幫級銆傝繖濂楄劇▼鐨勭己鐐規槸闅懼害姣旇緝浣庯紝鎺ㄥ艱繃紼嬮潪甯哥畝鐣ワ紝浣嗘槸榪欎篃鏄瀹冪殑浼樼偣鈥斺旇╂垜涓撴敞浜庢妸鐞嗚鴻漿鍖栨垚浠g爜銆

騫垮憡錛氫綔涓氬弬鑰 GitHub - zlotus/Coursera_Machine_Learning_Exercises: Machine Learning by Andrew Ng from Coursera

絎鍥涙ワ細鑷宸卞疄鐜板姛鑳藉畬鏁寸殑妯″瀷鈥斺旇繘琛屼腑銆

榪樻槸鍥犱負姣旇緝鎳掞紝鎼滃埌浜哻s231n鐨勮劇▼瑙嗛 CS231n Winter 2016 - YouTube 錛屾潕椋為炴暀鎺堢殑璇撅紝涓昏茶繕鏈堿ndrej Karpathy鍜孞ustin Johnson錛屼富瑕佷粙緇嶅嵎縐紲炵粡緗戠粶鍦ㄥ浘鍍忚瘑鍒/鏈哄櫒瑙嗚夐嗗煙鐨勫簲鐢錛堝墠闈㈢炵粡緗戠粶鐨勪唬鐮佹病鍐欏燂紵榪欓棬璇懼寘浣犲棬鍒扮垎~鍒板勯兘鏄浠庨浂鎵嬪啓~錛夈傝繖闂ㄨ劇▼鐨勪綔涓氬氨鏇磋創蹇冧簡錛岀洿鎺ョ敤Jupyter Notebook甯冪疆鐨勶紝鍙浠ユ湰鍦拌繍琛屽苟鑷宸辨鏌ラ敊璇銆備富瑕佷嬌鐢≒ython浠ュ強Python緋誨垪鐨勭戝﹁$畻搴擄紙Scipy/Numpy/Matplotlib錛夈傝懼爞絎旇扮殑緲昏瘧鍙浠ュ弬鑰 鏅鴻兘鍗曞厓 - 鐭ヤ箮涓撴爮錛屼富瑕佺敱鐭ュ弸鏉滃㈢炕璇戱紝鍐欑殑闈炲父濂絶

鍦ㄥ氳翠竴鐐癸紝榪欓棬璇懼圭▼搴忓憳鏉ヨ存瘮杈冭蛋蹇冿紝鍥犱負榪欎釜涓嶅儚涓婁竴姝ヤ腑鐢╩atlab瀹炵幇鐨勪綔涓氶偅鏍峰嚲鍚戠畻娉曞拰妯″瀷錛岃繖闂ㄨ劇敤Python瀹炵幇鐨勬ā鍨嬪悓鏃舵敞閲嶈蔣浠跺伐紼嬶紝鍖呮嫭甯歌佺殑灝佽卨ayer鐨刦orward/backward銆佽嚜瀹氫箟緇勫悎layer銆佸備綍灝唋ayer緇勬垚緗戠粶銆佸備綍鍦ㄧ綉緇滀腑闆嗘垚batch-normalization鍙奷ropout絳夊姛鑳姐佸備綍鍦ㄥ嶆潅妯″瀷涓嬪仛姊搴︽鏌ョ瓑絳夛紱鏈鍚庝竴涓浣滀笟涓榪樻湁鎵嬪姩瀹炵幇RNN鍙婂叾鍩哄弸LSTM銆佺紪鍐欐湁鍔╀簬璋冭瘯鐨凜NN鍙瑙嗗寲鍔熻兘銆丟oogle鐨凞eepDream絳夌瓑銆傦紙鍋氬畬浣滀笟鍩烘湰灝卞彲浠ョ湅鎳傜幇鍦ㄦ祦琛岀殑鍚勭嶅浘鐗囬庢牸鍙樻崲紼嬪簭浜嗭紝濡 cysmith/neural-style-tf錛夊彟澶栵紝榪欓棬璇劇殑浣滀笟瀹炵幇闈炲父鎺ㄥ磭computational graph錛屼笉鐭ラ亾鏄涓嶆槸鎴戠殑騫昏??瑕佹敞鎰忕殑鏄璁插笀A.K鐨勮閫熷囧揩鏃犳瘮錛屽ソ鍦╕ouTube鏈夎嚜鍔ㄧ敓鎴愯В璇磋瘝鐨勫姛鑳斤紝鍑嗙『鐜囪繕涓嶉敊錛屽彲浠ュ綋瀛楀箷鐪嬨

騫垮憡錛氫綔涓氬弬鑰 GitHub - zlotus/cs231n: CS231n Convolutional Neural Networks for Visual Recognition (winter 2016) 錛堟垜鐨勫湪浣滀笟鐨刵otebook涓婂姞浜嗕竴浜涙帹瀵兼紨綆楀摝~鍙浠ョ敤鏉ュ弬鑰:D錛

閱讀全文

與演算法筆記知乎相關的資料

熱點內容
centos一鍵安裝php環境 瀏覽:609
少兒編程調查 瀏覽:523
windows下php搭建網站 瀏覽:820
程序員任務緊 瀏覽:141
java修改session 瀏覽:973
一般下的app放在哪裡 瀏覽:38
ipad上編程工具 瀏覽:606
壓縮後的數據大小 瀏覽:783
小白學python量化分析多久 瀏覽:629
元角換演算法 瀏覽:509
程序員自降80薪水轉行 瀏覽:42
私服伺服器如何賺錢 瀏覽:833
演算法筆記知乎 瀏覽:402
程序員最失敗的職業 瀏覽:897
阿里巴巴進貨的app叫什麼 瀏覽:437
用戶對程序員的評價 瀏覽:627
框梁箍筋加密區長度在圖集哪頁 瀏覽:179
鵬程萬里視頻加密播放器的都是些什麼人啊 瀏覽:355
把文件復制到同一文件夾中 瀏覽:223
阿里雲代金券伺服器 瀏覽:484