100天搞定機器學習|Day36用有趣的方式解釋梯度降低算法

本文爲3Blue1Brown神經網絡課程講解第二部分《Gradient descent, how neural networks learn 》的學習筆記,觀看地址:www.bilibili.com/video/av16144388前文咱們已經搭建了一個包含兩個隱藏層的神經網絡,咱們須要這樣一種算法:網絡獲得訓練數據後,算法會調整全部的權重和偏置值,提升網絡對訓練數據的表現。咱們還但願這種分層結構能夠觸類旁通,識別其餘圖像。訓練好網絡後,再給它未見過的帶標記的數據做爲測試,這樣就能知道新圖像分類的準確度。image算法

這實際上就是找某個函數的最小值,在一開始,咱們會徹底隨機地初始化全部的權重和偏置值。可想而知,這個網絡對於給定的訓練示例,會表現得很是糟糕。例如輸入一個3的圖像,理想狀態應該是輸出層3這個點最亮。但是實際狀況並非這樣。這是就需定義一個代價函數。image網絡

網絡能夠對圖像正確分類時,這個平方和就比較小,反之就很大。接下來就要考慮幾萬個訓練樣本中代價的平均值。image框架

神經網絡自己是個函數,它有784個輸入值,10個輸出,13000多個參數。imageide

代價函數則要再抽象一層,13000多個權重和偏置值做爲他的輸入,輸出是單個數值,表示參數的表現優劣程度。image函數

代價函數取決於網絡對上萬個訓練數據的綜合表現,可是咱們還須要告訴網絡該如何改變這些權重和偏置值,讓其表現更好。爲了簡化問題,咱們先不去想一個有13000多個變量的函數,而考慮簡單的一元函數,只有一個輸入變量,只輸出一個數字。image學習

學過微積分的都知道,有時你能夠直接算出這個最小值,不過函數很複雜的話就不必定能寫出,而咱們這個超複雜的13000元的代價函數,就更加不可能作到了。一個靈活的技巧是:如下圖爲例,先隨便挑一個輸入值,找到函數在這裏的斜率,斜率爲正就向左走,斜率爲負就向右走,你就會逼近函數的某個局部最小值。(實際上是沿着負梯度方向,函數減小的最快)image測試

但因爲不知道一開始輸入值在哪裏,最後你可能會落到許多不一樣的坑裏,並且沒法保證你落到的局部最小值就是代價函數的全局最小值。值得一提的是,若是每步的步長與斜率成比例,那麼在最小值附近斜率會愈來愈平緩,每步會愈來愈小,這樣能夠防止調過頭。image設計

咱們想象一個更復雜的兩個輸入一個輸出的二元函數,代價函數是圖中右側的紅色曲面。在輸入空間被沿着哪一個方向走,才能使輸出結果降低最快?image3d

在多元微積分領域,函數梯度指的是函數的最陡增加方向,沿着其相反的方向,函數值降低的最快,梯度向量的長度表明了最陡的斜坡的到底有多陡峭。imagecdn

讓函數值最小的算法其實就是先計算梯度,在按反方向走一小步,而後循環。處理13000個輸入的函數也是這個道理。image

只是把這些權重、偏置都放在一個列向量中,代價函數的負梯度也是一個向量。負梯度指出了在這個函數輸入空間內,具體如何改變每一項參數,才能讓讓代價函數的值降低的最快。image

對於這個咱們設計的神經網絡的代價函數,更新權重和偏置來下降代價函數的值,意味着輸入訓練集的每一份樣本的輸出,都會愈來愈接近真實結果。又由於咱們選擇的是全部訓練樣本代價函數的平均值,因此最小化即對全部樣本獲得的整體結果會更好。image

當咱們提到讓網絡學習,實質上就是讓代價函數的值最小。代價函數有必要是平滑的,這樣咱們才能夠挪動以找到全局最小值,這也就是爲何人工神經元的激活值是連續的。到這裏,咱們終於引出了梯度降低法的定義:image

負梯度內每一項值的正負號告訴咱們輸入向量對應該調大仍是調小,每一項的相對大小也告訴了咱們哪一個值影響更大,改變哪一個參數值,性價比最高。image

訓練後的神經網絡就能夠進行數字識別了,可是當輸入是一個噪音圖片時,神經網絡卻仍很自信的把它識別成一個數字。換句話說,即便網絡學會了如何識別數字,可是它卻不會本身寫數字。緣由就在於網絡的訓練被限制在很窄的框架內,對於第一層網絡,它的視角整個宇宙都是由小網格內清晰定義的靜止數字組成的,它的代價函數則會促使它對最後的判斷有絕對的自信。研究越深,你就會發現,神經網絡沒有那麼智能。image

本節完!下節課咱們學習3Blue1Brown關於神經網絡的第3部分《偏導數和反向傳播法》。

相關文章
相關標籤/搜索