進化算法與神經網絡

傳統的神經網絡訓練方法是根據通過網絡傳回的誤差來調整權重。通過網絡輸入的結果與期望值的比較,計算出了這個誤差。創建神經網絡的人會花一些時間擺弄神經網絡的參數,直到神經網絡能夠從給定的數據中學習,通過使用上述誤差調整其權重。

本文簡要介紹瞭如何使用進化算法來簡化這個過程。

在開始之前,讓我們看一看一些現有的參數優化技術。

自動參數確定

已經存在一些現有方法來自動導出ML算法的參數。

  • Auto-Keras:自動機器學習庫 - 自動搜索參數和架構。
  • 貝葉斯優化:一種統計優化技術,通過對其參數的智能估計來最大化算法的性能。
  • DataRobot:一種專注於提供端到端ML體驗的工具(從數據準備到ML模型部署)。它還允許自動化ML和模型比較。
  • Dataiku:另一個專注於提供端到端ML體驗的工具,可選擇自動化ML。

進化算法

進化算法是對進化過程進行建模的算法。這是通過擁有一群個體來完成的,每個個體由一組基因組成。每個基因代表隨機生成的數據的屬性/特徵,您試圖將其演變為有意義的東西。

與ML算法不同,進化算法從沒有數據開始。相反,我們測量了我們想要實現的目標(例如,對於本文,我們希望根據我們用來訓練它的參數來最大化神經網絡的準確性)。然後我們更改個人以儘可能地滿足此要求。

遺傳算法是進化算法中最流行和最常見的算法。它通過以下步驟演變個體:

1.隨機初始化個體

2.有限的幾代個體

  • 進行突變 - 隨機或通過一些更復雜的方法替換基因。
  • 進行交叉 - 將個體合併在一起,從而產生具有來自每個父母的各種基因的新個體。
  • 計算每個個體的適應度 - 這是指代表您的問題的函數。該函數應用於每個個體,以確定每個個體的好壞。
  • 選擇 - 根據上面計算的適應度選擇哪些個體存活到下一代。這形成了下一代的人口,其中重複這些步驟。

3.選擇具有最佳結果的個體,即具有最高/最低適合度的結果。

進化神經網絡

存在各種方法,其中進化算法可用於神經網絡。這些方法旨在通過自動化一組步驟來簡化設計神經網絡的過程。本節對每個部分進行了高級概述。

進化神經網絡參數

這是指確定神經網絡的訓練參數,例如學習速率,激活函數等。

使用遺傳算法進化的神經網絡參數遵循與上述相同的步驟,其中:

  • 個體的每個基因都是參數
  • 每個個體都是參數的組合,如下圖所示
進化算法與神經網絡

  • 適應度函數包括:
  1. 給定由個體代表的參數訓練神經網絡
  2. 基於作為適應度函數的結果的測試集計算準確度/ f1分數(或任何其他優選的神經網絡性能測量值)

下圖顯示了上述個人的層參數如何轉換為網絡的示例:

進化算法與神經網絡

優點

  • 自動能夠以許多參數組合引導而非強力的方式
  • 可以為參數添加邊界
  • 可以演變更復雜的參數,例如分類(例如:優化類型),因為您可以管理從個體到神經網絡的轉換。

缺點

  • 當您訓練total_individuals * total_generations神經網絡時,可能會很慢
  • 可能需要決定遺傳算法參數(雖然默認值通常可以用於此目的)。

進化神經網絡特徵

神經網絡訓練的一部分是選擇最合適的數據輸入網絡。給定一組參數,這些參數或多或少可以處理大部分數據,我們可以通過演化將這些數據過濾為更有意義的屬性。該過程與上述遺傳算法相同,其中:

  • 個體的每個基因都是一個屬性
  • 每個個體都是一組輸入到網絡的屬性。下面顯示了一個示例個體,其中1表示應該饋送到網絡的特徵,0表示不應該饋送到網絡的特徵。
進化算法與神經網絡

  • 適應度函數包括:
  1. 在給定一組預定義參數的情況下訓練神經網絡,並且僅在訓練時提供所選擇的特徵
  2. 基於作為適應度函數的結果的測試集計算準確度/ f1分數(或任何其他優選的神經網絡性能測量值)

可能適用於某些用例的是使用更大的屬性集來演化神經網絡的參數,然後使用生成的神經網絡參數來演化本小節中描述的特徵。

下圖顯示了上述個體如何轉換為網絡輸入的示例:

進化算法與神經網絡

優點

  • 自動地能夠以引導而非強力方式選擇特徵,這在通過分析不容易確定特徵的有用性時是有利的。

缺點

  • 當您訓練total_individuals * total_generations神經網絡時,可能會很慢
  • 可能需要決定遺傳算法參數(雖然默認值通常可以用於此目的)。

直接進化權重(Neuroevolution)

您也可以自己調整權重,這意味著,與使用反向傳播將誤差傳遞迴並調整一些epoch的權重不同,您可以:

  • 選擇架構(層,層大小,激活函數)
  • 進化權重
  • 測試新的神經網絡

與其他演化選項相同的方式表示,我們可以看作如下:

  • 個體的每個基因都是權重
  • 每個個體都代表一個具有預定義架構的神經網絡
進化算法與神經網絡

  • 適應度函數包括:
  1. 用個體的基因值替換預定義神經網絡的權重
  2. 基於作為適應度函數的結果的測試集計算準確度/ f1分數(或任何其他優選的神經網絡性能測量值)

下圖顯示瞭如何將上述個人轉換為網絡權重的示例:

進化算法與神經網絡

優點

  • 自動為給定數據獲得一個合適的網絡
  • 由於對搜索空間的各個部分進行採樣,因此不太可能陷入局部最小值。

缺點

  • 當您訓練total_individuals * total_generations神經網絡時,可能會很慢
  • 可能需要決定遺傳算法參數(雖然默認值通常可以用於此目的)。

結論

有4種方法可以使用進化算法,例如遺傳算法來設計神經網絡,即:

  • 演變神經網絡訓練的參數
  • 發展要饋入網絡的特徵
  • 使用預定義的體系結構演變網絡的權重
  • 與權重一起發展網絡架構

主要優點是進化算法允許對神經網絡的標準進行引導式探索性搜索。主要缺點是這涉及訓練許多神經網絡,因為每個個體都是不同的網絡 - 根據問題的複雜性,這可能很慢。


分享到:


相關文章: