The Nature of Code閱讀心得與Python實作:9.1 Genetic Algorithms: ...

更新 發佈閱讀 4 分鐘
這一節的標題是
9.1 Genetic Algorithms: Inspired by Actual Events
因為方格子標題字數限制,所以沒完整顯現

在開發具備演化能力的程式系統時,所使用的主要手段,就是受到達爾文演化論啟發所發展出來的基因演算法(genetic algorithm),簡稱GA。在GA中,會讓問題可能的解答形成一個族群,然後這個族群會透過模仿自然界生物演化時的天擇方式,一代一代地進行演化。

雖然利用電腦來模擬演化過程可追溯至1950年代,但現在我們對基因演算法的許多理解,其實都源自於密西根大學John Holland教授的研究成果;他在1975年所發表,由MIT所出版的《Adaptation in Natural and Artificial》一書,開創了GA研究的先河。時至今日,GA已成為演化式運算(evolutionary computing)這個更廣泛領域的一部分。

關於GA,有一點要注意的是,雖然它是受到遺傳、演化等理論的啟發所發展出來的,但它並沒有要把這些領域的相關理論給全部拿來使用的意思,更不會想要精準地去模擬那些過程;那是計算生物學(computational biology)領域在做的事。所以,在這章中,會把重點放在如何把演化策略應用到程式中,而不會去模擬真實世界中生物實際進行的演化過程。

嚴格來說,GA這個術語所指的,是以特定的方式來解決某些特定類型的問題所開發出來的演算法。這裡頭的細節很多,不過,有些細節對原書來說並不是那麼重要。雖然這章的範例是基於正規的GA所設計出來的,但因為我們的重點是在於如何發揮創意來把演化理論給應用到程式裡頭,所以也就不會太去強調精準無誤地實作出演算法這件事。基於這樣的考量,本章會區分為下面三個部分:

  • 傳統的基因演算法:先從傳統教科書中會看到的GA介紹起。在電腦科學中,有些問題的解空間(solution space)非常大,使用暴力法來解會耗時過長。為了解決這個問題,所以開發出像GA這樣的演算法。例如,如果有個數字介於1和10億之間,那我們要花多少時間才能猜中這個數字?如果用暴力式的解法,那就必須一個數字一個數字去猜。運氣好的話,第一次就猜中;運氣背到極點的話,猜到最後一個數字才猜中。不過那都是極端的狀況,平均來說,如果從1開始猜,那也要猜個好幾年才能猜中。那如果每次猜的時候,都能知道猜得有多準,然後根據猜的結果來選擇下一個要猜的數字,這樣不就能快一點猜中數字了嗎?這也就是說,我們所猜的數字透過演化的方式,不斷地接近正確的數字,最後找出正確的數字。傳統的GA,就是這麼做的。
  • 互動式挑選(interactive selection):介紹過傳統的GA之後,會來看看GA在視覺藝術中的應用。「互動式挑選」指的是透過與使用者互動的方式所進行的演化過程。例如,你有一些圖片,透過互動式挑選的方式,你挑出幾張喜歡的,然後演算法就可以根據你的喜好,產製新的圖片出來。
  • 生態系統模擬:傳統的GA和互動式挑選技術雖然都有演化的功能在其中,但並不能真正的針對發生在真實世界的演化過程進行模擬。在這一章中,也會針對由人造生物所組成的生態系統,探討可用於模擬其演化過程的技術。例如,要怎麼做,才能讓模擬世界中的物件相遇、交配,並把它們的基因傳遞給下一代呢?




留言
avatar-img
ysf的沙龍
20會員
165內容數
寫點東西自娛娛人
你可能也想看
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
在 vocus 與你一起探索內容、發掘靈感的路上,我們又將啟動新的冒險——vocus App 正式推出! 現在起,你可以在 iOS App Store 下載全新上架的 vocus App。 無論是在通勤路上、日常空檔,或一天結束後的放鬆時刻,都能自在沈浸在內容宇宙中。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
vocus 慶祝推出 App,舉辦 2026 全站慶。推出精選內容與數位商品折扣,訂單免費與紅包抽獎、新註冊會員專屬活動、Boba Boost 贊助抽紅包,以及全站徵文,並邀請你一起來回顧過去的一年, vocus 與創作者共同留下了哪些精彩創作。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
模擬世界是我們寫程式造出來的,我們就是模擬世界的主宰,所以各種作用力要長什麼樣子、要怎麼個作用法,都由我們決定。不過,如果希望這些作用力看起來像真實世界的作用力一樣,那在寫程式的時候,套用這些作用力在真實世界中的物理公式,會是比較省時省力的做法。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
在資料分析過程中,透過衡量變數之間的線性或非線性關係,能有效探索數據集,篩選出重要特徵,並進行預測建模。本文介紹瞭如何理解數據、使用相關矩陣找出變數關聯性,以及利用互資訊評估變數之間的依賴程度,幫助資料科學家在建模過程中選擇適當的變數,提升模型效果。
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
呈上篇介紹如何訓練模型,此篇就主要介紹如何利用訓練好的模型來生成圖片 [深度學習][Python]DCGAN訓練生成手寫阿拉伯數字_生成篇 生成的結果 生成的圖片大小會根據,當初設置的生成器輸出大小來決定,當你使用生成對抗網絡(GAN)生成圖像時,生成器模型的最後一層通常會決定生成圖
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文參考TensorFlow官網Deep Convolutional Generative Adversarial Network的程式碼來加以實作說明。 示範如何使用深度卷積生成對抗網路(DCGAN) 生成手寫數位影像。
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
本文主要介紹,如何利用GAN生成對抗網路來訓練生成圖片。 利用tensorflow,中的keras來建立生成器及鑑別器互相競爭訓練,最後利用訓練好的生成器來生成圖片。 GAN生成對抗網路的介紹 它由生成網路(Generator Network)和鑑別網路(Discriminator Netwo
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節談的是向量的定義,以及如何運用向量來建立模擬物體運動時,關於位置和速度間的關係式。
Thumbnail
這一節介紹使用accept-reject algorithm來產生符合特定機率分布的亂數,使得random walker具備Lévy flight的能力。
Thumbnail
這一節介紹使用accept-reject algorithm來產生符合特定機率分布的亂數,使得random walker具備Lévy flight的能力。
Thumbnail
在模擬自然界中的事物時導入隨機性,可以讓結果看起來比較自然,但如果導入的隨機性都是uniform distribution,那未免也太呆板了。這時候,我們需要nonuniform distribution亂數,來讓模擬出來的結果,更像真的一樣。
Thumbnail
在模擬自然界中的事物時導入隨機性,可以讓結果看起來比較自然,但如果導入的隨機性都是uniform distribution,那未免也太呆板了。這時候,我們需要nonuniform distribution亂數,來讓模擬出來的結果,更像真的一樣。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
Thumbnail
宣告變數 變數是程式中用來儲存和表示數據的標識符號​,並將變數存放在某個記憶體位子 可以用ID的方法查找變數存在哪個記憶體,此方法有利於以後查找問題用。 在大多數程式語言中,變數需要事先聲明(宣告)並賦值。 而Python是一種動態類型語言,不需要顯式宣告變數類型,而是在賦值時自動進行推斷。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News