當前位置:
首頁 > 科技 > AI產品:BP前饋神經網路與梯度問題

AI產品:BP前饋神經網路與梯度問題

原標題:AI產品:BP前饋神經網路與梯度問題

通過上一章《神經元與神經網路》,我們大概了解了單個神經元的工作模式和簡單神經網路的基本結構。接下來就要正式進入關於「神經網路」這個重頭戲的學習了,神經網路分為「淺層」和「深層」,今天我們來探討一下「淺層學習」中最經典的BP前饋神經網路,只要把它的工作原理搞清楚,其實後面的深度神經網路、卷積神經網路和循環神經網路都是在它基礎上的變體。


一. BP前饋神經網路 1. BP前饋神經網路核心理念


BP前饋神經網路的英文全稱為 Back Propagation Networks(反響傳播網路),怎麼理解這個「反響傳播」呢,我們已經了解其實DL的核心理念就在於找到全局性誤差函數Loss符合要求的,對應的權值「w」與「b」,也知道數據是從神經網路的輸入層,進入隱含層,最後通過輸出層輸出的工作流程。

那麼問題就來了,當得到的誤差Loss不符合要求(即誤差過大),就可以通過「反響傳播」的方式,把輸出層得到的誤差反過來傳到隱含層,並分配給不同的神經元,以此調整每個神經元的「權值」,最終調整至Loss符合要求為止,這就是「誤差反響傳播」的核心理念



2. 從「找關係」到「求誤差」


前面我們已經多次提到」y=wx+b」,現在我給這個函數加一個「e」代表誤差,其他的含義均不變



下面的轉換,別被它嚇到,其實很好理解,e的誤差等於「真實數據y」減去「擬合值」,i代表數據的個數(簡單理解為1、2、3……)



接下來點更好玩的(其實已經省略了一些步驟),我們一步一步來解釋,Loss相信大家很熟悉了,就是所謂「全局性誤差函數」,我們的最終目的,不就是讓Loss等於「0」最好嘛,這就相當於是「現實的值」與「擬合值」完全吻合,也就是找到了數據與某種特徵的現實「對應關係」。



前面那個怪怪的圖形,表示所有數據的「加和」(不然海量數據是咋來的呢),為什麼要把誤差「e」平方呢?其實是做了個「非負化」的處理,這樣更方便運算嘛,正負不重要,重要的是「絕對值」。

最後,讓我們看看我們得到了個什麼東西:



請各位不要慌,它就是一個「二次函數」,簡化理解它的圖像如下:



一切就到這裡,通過上述過程的轉換,讓Loss這個全局性誤差等於「0」,不就是轉換成了求得這個函數「極小值」的問題了么!


理解到這一層,我想是時候對機器學習其中的一個本質做個總結:我們通過對數據進行「標籤化」、提取特徵「向量化」,將現實客觀世界的「關係問題」,描述轉換成數學函數中求「誤差」的問題,又通過函數性質轉換成求「極值」問題。換句話說,找到了這個數學的「解」,也就找到了現實世界的「關係描述」。情不自禁感嘆「數學之美」!


二. 梯度下降與梯度消失/爆炸 1. 迭代法


我們已經理解到「求極值」這一層面,但還有問題等待解決。在一個演算法模型訓練最開始,權值w和偏置b都是隨機賦予的,理論上它可能是出現在整個函數圖像中的任何位置,那如何讓他去找到我們所要求的那個值呢。


這裡就要引入「迭代」的思想:我們可以通過代入左右不同的點去嘗試,假設代入當前x左面的一個點比比右面的更小,那麼不就可以讓x變為左面的點,然後繼續嘗試,直到找到「極小值」么。這也是為什麼演算法模型需要時間去不斷迭代很訓練的原因


2. 梯度下降

使用迭代法,那麼隨之而來另外一個問題,這樣一個一個嘗試,雖然最終結果是一定會找到我們所需要的值,但有沒有什麼方法可以讓它離「極值」遠的時候,挪動的步子更大,離「極值」近的時候,挪動的步子變小(防止越過極值),實現更快更準確地「收斂」


請觀察上面那個「二次函數」的圖像,如果取得點越接近「極小值」,是不是在這個點的函數「偏導」越小呢?(偏導即「在那個點的函數斜率」),接下來引出下面這個方法:



梯度下降核心思想:Xn代表的就是挪動的「步長」,後面的表示當前這個點在函數的「偏導」,這樣也就代表當點越接近極值點,那麼「偏導」越小,所以挪動的「步長」就短;反之如果離極值點很遠,則下一次挪動的「步長」越大。


把這個公式換到我們的演算法模型,就找到了「挪動步長」與Loss和(w,b)之間的關係,實現快速「收斂」:




通過「迭代法」和「梯度下降法」的配合,我們實現了一輪一輪地迭代,每次更新都會越來越接近極值點,直到更新的值非常小或已經滿足我們的誤差範圍內,訓練結束,此時得到的(w,b)就是我們尋找的模型。


怎麼樣,現在是不是開始覺得對ML的本質理解的越來越深入,一旦轉換成數學問題,我們就有很多方法可以實現我們的目標


3. 梯度消失

梯度消失,即在反響傳播的過程中,因為層數太多或神經元激勵函數作用,導致網路前端的w幾乎沒有變化,越往前的隱含層這種情況就越嚴重。


解決方式:目前常用的解決方式是選取合適的激勵函數,如把Sigmoid函數換位ReLU函數,原理在這裡就不過多解釋了


4. 梯度爆炸


梯度爆炸,可以理解為梯度消失的「反向概念」,梯度消失本質是網路前層w權值變化太小,導致無法收斂,而梯度爆炸則是w權值一次的變化量太大,這樣可能會導致直接挪動越過「極值點」。


最後


到這裡已經基本介紹完神經網路BP前饋的基本原理,有沒有覺得其實並沒有想像中的那麼難?而深度學習中的DNN(深度神經網路),如果不嚴格細糾的話,是可以簡單理解為「隱含層層數」的增加的,基本的訓練方法和工作原理也是一樣通過誤差反響傳播,當然也做了很多優化來解決BP前饋網路的「缺陷」,這個我們在後面還會講到~


AI產品之路:神經元與神經網路


本文由 @ Free 原創發佈於人人都是產品經理。未經許可,禁止轉載。

題圖來自unsplash,基於CC0協議

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 人人都是產品經理 的精彩文章:

內容付費將進入下半場,知識掮客們為何慌了?
用戶體驗地圖和服務藍圖有何區別?
運營如何做年度總結與年度計劃?
項目經驗|邀請活動可以怎麼做?
共享經濟編年史:盛世之下,群魔亂舞

TAG:人人都是產品經理 |