官术网_书友最值得收藏!

9.1 梯度下降陷阱

接下來我們來看梯度下降過程中有可能導致的各種問題:

第一種問題,如圖9-5所示,變化率可能一開始太陡峭了,導致調整的時候從左側一下跳到了右側,又從右側一下跳到了左側,然后又從左側跳到了右側,始終不能趨近底部,這是很可能發生的情況。即使有更多的訓練數據,也無法達到變化率為0的點,這是比較糟糕的狀況。尤其變化率非常陡峭時,一下從最左側跳到最右側,又一下從最右側跳到最左側……,結果是離底部越來越遠,這是個悲劇,花了很大的精力且用了很多的數據,訓練出來的偏差實質上越來越大,這不是我們希望看見的。對于這種情況,我們要怎么處理?這是神經元網絡必須解決的最基本的問題。按照我們最原始的算法,要調整的時候可以想到很多辦法,如果梯度步伐太大,容易出一些問題,將步伐調小一點就行了。例如,在每次調整權重的時候要減去變化率,那么將變化率乘以一個系數α,系數α為0~1,就可以有效解決面臨的問題。

圖9-6是優化以后的狀態。我們將變化率乘以一個系數αα一般設置為0.1、0.01等,就能有效避免步伐過大的問題。首先計算當前狀態的變化率,然后使用當前的權重減去變化率與系數α的乘積,x=x–(α*slope),一直訓練到變化率等于0。

在梯度下降過程中,第一種問題是步伐過大,步伐不合適會導致圓點永遠不能到達底部。第二種問題是局部最小值,圖9-6所示的梯度下降過程非常單純,只有一個最低點,但生產環境中數據的維度可能很多,在進行收斂的時候可能會到達一個局部的最小值,如圖9-7所示,這種情況處理起來較麻煩。

圖9-5 變化率陡峭

圖9-6 用變化率乘以系數來優化

如圖9-8所示,我們要克服將局部的最低點誤認為是全局的最低點問題。將收斂的空間劃分成5個部分,找出每個部分的局部最低點,也就是變化率為0的狀態。找到5個部分中每一個變化率為0的狀態以后,進行比較,找到全局最低點,這是比較樸素的思路。

圖9-7 局部最小值

圖9-8 多個局部最低點

第三個問題,在梯度下降過程中,步伐可能太小,步伐如果太小,就像人走路,每步本來可以移動50cm,但是如果擔心下一步掉到懸崖,就小心翼翼,每步只移動1mm,這就太夸張了。圖9-9描述了這種情況,這也是很不好的一種情況,因為資源是很昂貴的,計算時間特別長,訓練結果又不太好,步伐太大時在更新權重的時候,是每次乘以一個系數αα為0~1),這里做優化時也要乘以一個α,不過這里的α值不是0~1,而是要大于1。

圖9-9 步伐過小的問題

以上是梯度下降可能出現問題的三種情況,我們提出相應的解決方案,一般是由算法來支撐解決。

主站蜘蛛池模板: 天门市| 旬阳县| 囊谦县| 武平县| 平昌县| 孟州市| 永济市| 徐闻县| 方山县| 德钦县| 蛟河市| 客服| 济宁市| 桐城市| 潢川县| 徐州市| 吉木萨尔县| 那曲县| 庆元县| 南岸区| 隆化县| 湘潭县| 荣昌县| 屏边| 和平县| 延寿县| 通山县| 喜德县| 长治市| 鹤岗市| 赤城县| 平山县| 庄河市| 遂川县| 伽师县| 通渭县| 区。| 祁阳县| 洞口县| 沙河市| 阿图什市|