在神經網路的引數更新方法中為什麼不用遺傳演算法,而一般都採用梯度下降型別的演算法?因為過擬合?

時間 2021-05-05 11:59:01

1樓:caloi

首先神經網路演算法與遺傳演算法屬於兩類演算法!神經網路的核心是通過當前梯度更新網路權重來進行迭代,而遺傳演算法是通過染色體的交配和變異進行迭代,兩者除了都需要迭代沒啥共同點。所以通過遺傳演算法來對神經網路的權重進行更新,如果你做到了,那其實就是個遺傳演算法...

不通過梯度更新權重的神經網路還是神經網路嗎?

所以目前大家多是通過優化器讓網路更新更具效率以及脫離區域性最優,比如通過考慮歷史梯度或者像退火演算法中那樣以一定概率去改變梯度方向之類的。

2樓:

遺傳演算法一定概率上確實能夠收斂到全域性最優解,但是這個概率和具體問題相關,引數較少或者問題較為簡單則智慧型演算法相較於確定性演算法能夠有更好的表現,但是對於神經網路這種多峰問題,則效果會大打折扣. 特別是目前深度模型大則億萬引數空間的情況下,再加上種群帶來的引數擴散,雖然GPU或者TPU能夠一定程度上進行並行,但是就目前而言對於遺傳演算法在引數學習的應用還是存在一定的運算壁壘。

不過隨著量子計算的發展,未來針對真正意義上的大規模多峰優化問題的求解也許會迎來爆發的一天,那時候可能在深度學習等問題中群智慧型演算法會大展拳腳也說不定~

3樓:

但事實上,隨著技術的發展,前者的優點在變得越來越不重要,缺點卻越來越嚴重。我覺得主要是幾方面導致的:

1,隨著神經網路越來越深,那些「區域性最優」往往也足夠優了。

2,隨機梯度下降(SGD)使得優化的過程增加了隨機性,這彌補了梯度下降的缺點。

3,一些Adam之類的優化器的引入也彌補了很多梯度下降的不足。

4,隨著神經網路越來越深,記憶體、視訊記憶體、算力消耗越來越大,遺傳演算法維護整個種群,相當於占用了成倍的資源,這對於深度學習來說是無法接受的。

5,遺傳演算法優化的速度慢的問題在深度學習中會更嚴重,因為搜尋空間更大了。以上。

4樓:xxbxyt

遺傳演算法是用來優化初始權值閾值,因為神經網路初始值是隨機的,可能會使網路陷入區域性極小值,用遺傳演算法優化可以減少這樣的機率

5樓:Daniel

我想說兩個原因:

遺傳演算法面臨維度災難。目前深度學習的引數基本都是百萬甚至更高,這麼大的搜尋空間,遺傳演算法很難處理。cooperative GA可能能較好處理高維優化問題,但是面對百萬級別的引數,也很困難,我倒是覺得能不能把梯度下降和GA結合一下呢?

取長補短

遺傳演算法太慢,而且耗費更多儲存空間。乙個種群要包含幾百上千個模型,對計算是乙個很大的考驗。

6樓:zephyr

個人感覺有梯度資訊的情況下用一階演算法通常比較高效和直接,因為梯度資訊直接給出了搜尋方向。而遺傳演算法屬於隨機搜尋演算法,它的搜尋方向取決於編碼,運算元設計,而這些非常依靠經驗。另外,隨著神經網路結構的變化,運算元可能都需要重新設計,所以講遺傳演算法的通用性方面也不如梯度下降。

在工程專案中,出於成本的考慮,演算法可重用性很重要,出於實際考慮也會選擇梯度下降。所以,梯度下降容易實現,可擴充套件性強,能直接能利用連續優化的性質,它被廣泛使用。

7樓:乙隻年輕的科研狗

因為遺傳演算法慢呀,每次都要維護乙個種群,意味著一堆的神經網路模型。我們跑乙個模型都要好久,何況你這一堆,還要多次迭代這一堆。相比之下,梯度下降只需要迭代乙個模型,就快了很多。

在卷積神經網路中卷積核為什麼都是方形的?

智星雲服務 Why convolutions always use odd numbers as filter size 卷積運算,簡單地說,是兩個矩陣的元素乘積的組合。只要這兩個矩陣在維度上是一致的,就不應該有問題,所以我可以理解你的查詢背後的動機。然而,卷積的意圖是根據濾波器或核心對源資料矩陣 ...

為什麼多層的卷積神經網路訓練時不用深度學習方法訓練,難道誤差 梯度不會逐層擴散和消失?

Monstarxtt 理論上講深度學習是通過稀疏自編碼求得有用特徵向量之後輸入網路中的。但目前這種非監督學習方法效能不夠好,所以像cnn這種深度學習方法其實也是通過分類監督學習的,優化方法跟普通神經網路差不多。無非網路比較大而已。資料充足的情況下網路越大最終結果越好這一點也沒啥辯駁的。網路雖然很大但...

為什麼在普通神經網路中,訓練的誤差實際上是隨著網路層數的加深,先減小再增加

好逸惡勞 如果最後訓練集誤差很小,而驗證集誤差偏大,一般就是過擬合,在網路容量不變的情況下,可以加入dropout,引數正則化等,再去試一下看看驗證誤差有沒有減小。判斷一下是不是過擬合的問題。前幾天我在寫乙個簡單的卷積網路時也發現了類似的問題,測試集準確率先公升後降,後來調整了學習率後就好了。 淺小...