02 - 神經網絡主要知識點
目錄引索
- 簡單神經網絡
- 卷積神經網絡
- Tensorflow playground 演示
簡單神經網絡
神經網絡就是模擬人的神經元進行信號(信息)收集、傳遞、處理的過程。
算法
以人體對於溫度的感知爲例:
網絡
![](http://static.javashuo.com/static/loading.gif)
感知機
- 定義: 有n個輸入數據,經過權重與個數據之間的計算和,比較激活函數結果,得出輸出。
- sum = w1x1+w2x2+w3x3+......
- 應用: 容易解決與、或問題, 分類問題。
- 與問題: 全部輸入爲1,則爲1
- 或問題: 只要有一個爲1,則爲1
- 亦或問題:相同爲0,不一樣爲1 (使用2條直線來劃分,即2個感知機)
![](http://static.javashuo.com/static/loading.gif)
- 感知機與邏輯迴歸的對比
- 感知機是求和之後進行一個簡單的閾值判斷,而邏輯迴歸是經過一個sigmoid激活函數函數轉化爲[0,1]的值。
神經網絡定義
當一個感知機不能解決問題的時候,會用多個感知機來構成網絡。
感知機 --> 神經元
多個神經元構成的網絡 --> 神經網絡
神經網絡是一個多分類問題,得出屬於所有類別的每個機率,誰的機率大,就是誰。ide
神經網絡特色
- 由輸入層(1個)、隱藏層(n個)、輸出層組成(1個)
- 輸入向量的維度和輸入神經元的個數相同 (不是個數)
- 同一層的神經元之間沒有鏈接
- 每一個鏈接都有權重 (相似於線性迴歸)
- 第N層與N-1層的全部神經元全鏈接(最後一層全鏈接)
![](http://static.javashuo.com/static/loading.gif)
神經網絡結構
- 結構: 權重、神經元等
- 激活函數: 加強網絡的非線性,簡單理解,沒有激活函數,只能畫直線分割數據點;增長激活函數,能夠用曲線來劃分。
- 學習規則: 網絡中的權重,如何隨着時間(或者說是迭代)來進行自我調整。 包括正向傳播和反向傳播。
- 正向傳播(前向傳播): 輸入通過一層層計算,(w1x1+w2x2+...) 得出輸出結果
- 反向傳播:總偏差是由不一樣的權重產生的,將偏差按權重的比例進行分割,向後傳遞,例如某個節點的總偏差是0.5,它是由上2個節點傳播而來,對應的權重比例爲1:4, 則這兩個節點分攤偏差爲0.1和0.4,依次向前傳遞。最終經過偏差值來調整各節點的權重。
神經網絡的斷定 (softmax)
- 爲何須要softmax?
- 神經網絡是解決多分類問題,可是它的輸出僅僅就是一個值,使用一個函數來劃分出機率,對目標類別都會輸出一個機率,而目標特徵通常都使用one-hot編碼,經過對比不一樣類別的機率得出結果。
- softmax表達式
![](http://static.javashuo.com/static/loading.gif)
神經網絡算法的優化
【不一樣算法的對比】
函數
損失衡量策略:交叉熵損失(對數似然損失的推廣)
學習
深度神經網絡
深度神經網絡與單一隱藏層神經網絡的區別在於深度,隨着神經網絡深度增長,節點所能識別的特徵也愈來愈複雜。優化
卷積神經網絡
什麼是卷積神經網絡
- 卷積神經網路是深度神經網絡的一種類型,如AlexNex, VGG, GoogLeNet, ResNet, 它是爲了解決全鏈接網絡的一些缺點而存在:
- 參數太多,計算量大
- 沒有利用像素之間的位置信息,(圖片識別每一個像素與周圍像素關係緊密)
- 層數限制
- 卷積神經網絡的特色在於隱藏層分爲卷積層和池化層(下采樣層)
- 卷積層:經過在原始圖像上進行平移來提取特徵(帶着權重偏移,乘加運算)
- 池化層:經過特徵後稀疏參數來減小學習到的參數,下降網絡的複雜度。(最大池化,平均池化)
![](http://static.javashuo.com/static/loading.gif)
神經網絡發展歷史
![](http://static.javashuo.com/static/loading.gif)
卷積層 (Convolutions)
- 過濾器(filter),是一個帶有權重的觀察窗口,一般爲1* 1, 3* 3, 5 *5 的結構,權重與圖片中的數值(RGB)作線性迴歸, (乘加運算),最終得出一個結果。
- 步長 (strides):過濾器在圖片上每次平移的像素點數量
- 0填充 (padding): 當過濾器移動至圖片邊緣之外的處理方式
- same: 越過邊緣取樣,取樣面積與輸入的圖像像素相同
- valid: 不越過邊緣取樣,取樣的面積小於輸入圖像的像素寬度。
單通道圖片卷積操做(灰度圖片)
![](http://static.javashuo.com/static/loading.gif)
注: 當有多個過濾器進行觀察時,過濾器攜帶的權重是不同的,可是其步長和零填充方式一致。有多少個過濾器,最終的結果有多少個。編碼
多通道圖片的卷積操做(RGB圖片)
![](http://static.javashuo.com/static/loading.gif)
激活函數
- 爲何要增長激活函數:
- 增長網格的非線性分割能力
- 在進行梯度求導時,沒有非線性,屢次求導後,梯度就消失了。
- 常見的激活函數
- sigmoid = 1/(1+e^(-x)) , 屢次求導運算量大, 對於深層次網絡,反向傳播時容易出現梯度爆炸。
- relu: max(0, x)
池化層(Pooling) 也稱爲下采樣(Subsampling)
Pooling層的主要做用是特徵提取,經過去掉Feature map中不重要的樣本,進一步減小參數數量。
常見的Max Pooling 取 2*2 , 2步長, 也能夠指定padding
3d
Dropout & Inception
- dropout : 隨機丟棄一部分數據,防止過擬合,加強泛化能力 (通常用於大型網絡)
- Inception: 一組特定的卷積結構,能夠參考GoogLeNet
全鏈接層 (Full Connected層)
卷積池化能夠理解爲作特徵工程,後面的全鏈接至關於作特徵加權。
全鏈接層在神經網絡中起到了 「分類器」的做用。blog
【拓展】對神經網絡的直觀認識
使用tensorflow的playground演示
http://playground.tensorflow.org
圖片