神經網絡

關於神經網絡的基礎理解在知乎下面兩個回答已經說的很好了
如何簡單形象又有趣地講解神經網絡是什麼? --王小龍
如何簡單形象又有趣地講解神經網絡是什麼? --YJango算法

這裏就只把谷歌教程上面的知識補充一下吧,也差很少是最後一趴了。網絡

激活函數

要對非線性問題進行建模,咱們能夠直接引入非線性函數。咱們能夠用非線性函數將每一個隱藏層節點像管道同樣鏈接起來。在下圖所示的模型中,在隱藏層 1 中的各個節點的值傳遞到下一層進行加權求和以前,咱們採用一個非線性函數對其進行了轉換。這種非線性函數稱爲激活函數函數

clipboard.png

常見激活函數:學習

  • S型激活函數
  • ReLU 激活函數。

clipboard.png

相較於 S 型函數等平滑函數,如下修正線性單元激活函數(簡稱爲 ReLU)的效果一般要好一點,同時還很是易於計算。ReLU: F(x)=max(0,x)優化

ReLU 的優點在於它基於實證發現(可能由 ReLU 驅動),擁有更實用的響應範圍。S 型函數的響應性在兩端相對較快地減小。google

clipboard.png

實際上,全部數學函數都可做爲激活函數。假設 表示咱們的激活函數(ReLU、S 型函數等等)。所以,網絡中節點的值由如下公式指定:spa

clipboard.png

訓練神經網絡

反向傳播演示
反向傳播算法是最多見的一種神經網絡訓練算法。藉助這種算法,梯度降低法在多層神經網絡中將成爲可行方法。首先,反向傳播確實依賴於梯度這一律念, 事物必須是可微的,這樣咱們纔可以進行學習。.net

反向傳播算法的一些要點:3d

  • 梯度很重要,若是它是可微的,則咱們也許可以對其進行學習
  • 梯度消失,每一個額外的層都會依次下降信噪比,若是咱們的網絡太過深刻, 信噪比隨着您愈來愈深刻模型而變差,那麼學習速度可能真的會變得很是慢。較低層(更接近輸入)的梯度可能會變得很是小。在深度網絡中,計算這些梯度時,可能涉及許多小項的乘積。當較低層的梯度逐漸消失到0 時,這些層的訓練速度會很是緩慢,甚至再也不訓練ReLU 激活函數有助於防止梯度消失。
  • 梯度爆炸,果網絡中的權重過大,則較低層的梯度會涉及許多大項的乘積。在這種狀況下,梯度就會爆炸:梯度過大致使難以收斂。若是學習速率過高,就會出現極不穩定的狀況, 模型中就可能出現NaN。在這種狀況下,就要以較低的學習速率再試一次。批標準化能夠下降學習速率,於是有助於防止梯度爆炸。
  • ReLU 單元消失,這多是由於咱們將硬性上限設爲0, 若是最終全部內容都低於0值, 梯度就沒法反向傳播, 咱們就永遠沒法返回存在ReLU層的位置。一旦 ReLU 單元的加權和低於 0,ReLU 單元就可能會停滯。它會輸出對網絡輸出沒有任何貢獻的 0 激活,而梯度在反向傳播算法期間將沒法再從中流過。因爲梯度的來源被切斷,ReLU 的輸入可能沒法做出足夠的改變來使加權和恢復到 0 以上。下降學習速率有助於防止 ReLU 單元消失。
  • 丟棄正則化,最後,在訓練深度網絡時還有一個頗有用的技巧, 即正則化的另外一種形式,叫作丟棄。應用丟棄是指,咱們針對機率P取一個節點, 而後從網絡的一個梯度步長中將其移除。在其餘梯度步長中重複此過程, 並隨機取不一樣的節點進行丟棄。丟棄的節點越多,正則化效果就越強。您能夠清楚地看到,若是丟棄全部節點, 就會獲得一個極爲簡單的模型, 這個模型基本上毫無用處。若是一個都不丟棄,則模型便具有完整的複雜性; 若是在訓練過程當中的某個位置進行丟棄, 那就至關於在這個位置應用了某種有效的正則化。咱們最近取得了多項推進深度學習走向前沿的 關鍵進展,丟棄即是其中之一, 使咱們可以得到許多重大的成果。0.0 = 無丟棄正則化。1.0 = 丟棄全部內容。模型學不到任何規律。0.0 和 1.0 之間的值更有用。
  • 通常來說,須要考慮儘可能將模型的深度限制爲最小的有效深度
  • 訓練時,若是特徵值在輸入時就已經標準化, 這一般會對咱們很是有用。若是範圍大體相同, 則有助於提升神經網絡的轉化速度。範圍實際值並不重要;咱們一般推薦的大體範圍是負1到正1。也能夠是負5到正5,或者0到1, 只要全部輸入的範圍大體相同就能夠。避免 NaN陷阱,避免離羣值也會有幫助,可使用一些標準方法:線性縮放爲最大值和最小值設定硬性上下限(截斷)或者對數縮放

多類別神經網絡

前面您已經瞭解了二元分類模型,該模型可從兩個可能的選項中選擇其一,例如:blog

  • 特定電子郵件是垃圾郵件仍是非垃圾郵件。
  • 特定腫瘤是惡性腫瘤仍是良性腫瘤

在本單元中,咱們將研究多類別分類,這種模型可從多種可能的狀況中進行選擇。例如

  • 這是一張蘋果、熊、糖果、狗狗仍是雞蛋的圖片

當類別總數較少時,這種方法比較合理,但隨着類別數量的增長,其效率會變得愈來愈低下。

用Softmax激活函數解決單標籤多類別分類

咱們已經知道,邏輯迴歸可生成介於 0 和 1.0 之間的小數。例如,某電子郵件分類器的邏輯迴歸輸出值爲 0.8,代表電子郵件是垃圾郵件的機率爲 80%,不是垃圾郵件的機率爲 20%。很明顯,一封電子郵件是垃圾郵件或非垃圾郵件的機率之和爲 1.0

Softmax本質上就是對咱們所使用的這種邏輯迴歸的泛化, 只不過泛化成了多個類別。在遇到單一標籤的多類別分類問題時,咱們使用會Softmax。也就是說,在多類別問題中,Softmax 會爲每一個類別分配一個用小數表示的機率。這些用小數表示的機率相加之和必須是 1.0。與其餘方式相比,這種附加限制有助於讓訓練過程更快速地收斂

例如,Softmax 可能會得出圖片屬於某一特定類別的如下機率:

clipboard.png

Softmax 層是緊挨着輸出層以前的神經網絡層。Softmax 層必須和輸出層擁有同樣的節點數。

clipboard.png

關於Softmax:
詳解softmax函數以及相關求導過程 - 憶臻的文章 - 知乎
https://zhuanlan.zhihu.com/p/...
Softmax 函數的特色和做用是什麼? - 楊思達zzzz的回答 - 知乎
https://www.zhihu.com/questio...

在訓練多類別分類時,咱們有幾個選項能夠選擇。

  • 完整 SoftMax(就是以前將的SoftMax):暴力破解,針對全部類別進行計算, 此時訓練成本相對昂貴。
  • 候選採樣:針對全部正類別標籤進行計算,但僅針對負類別標籤的隨機樣本進行計算。 此時,咱們要針對輸出節點所屬的類別來訓練輸出節點, 而後對負分類進行採樣,而且只更新輸出節點的採樣。這種方式在訓練時效率更高一些,並且在許多狀況下 彷佛都不會對效果產生很大影響;但顯而易見的是, 咱們在推理時仍然須要評估每個輸出節點。

類別數量較少時,完整 Softmax 代價很小,但隨着類別數量的增長,它的代價會變得極其高昂。候選採樣能夠提升處理具備大量類別的問題的效率。

候選採樣:
一種訓練時進行的優化,會使用某種函數(例如 softmax)針對全部正類別標籤計算機率,但對於負類別標籤,則僅針對其隨機樣本計算機率。例如,若是某個樣本的標籤爲「小獵犬」和「狗」,則候選採樣將針對「小獵犬」和「狗」類別輸出計算預測機率和相應的損失項,但沒必要針對每一個非狗狗樣本提供機率。這種採樣基於的想法是,只要正類別始終獲得適當的正加強,負類別就能夠從頻率較低的負加強中進行學習,這確實是在實際中觀察到的狀況。候選採樣的目的是,經過不針對全部負類別計算預測結果來提升計算效率。

一個標籤與多個標籤

Softmax 假設每一個樣本只是一個類別的成員。可是,一些樣本能夠同時是多個類別的成員。對於此類示例:

  • 不能使用 Softmax。
  • 列表項目

例如,假設您的樣本是隻包含一項內容(一塊水果)的圖片。Softmax 能夠肯定該內容是梨、橙子、蘋果等的機率。若是您的樣本是包含各類各樣內容(幾種不一樣種類的水果)的圖片,您必須改用多個邏輯迴歸。

相關文章
相關標籤/搜索