日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机视觉(四)全连接神经网络MLP

發布時間:2023/12/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机视觉(四)全连接神经网络MLP 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

目錄

多層感知器/全連接神經網絡

一、全連接神經網絡繪制

二、激活函數

常用的激活函數

三、網絡結構設計

四、損失函數

softmax

交叉熵損失

對比多類支持向量機損失

五、優化算法

計算圖與反向傳播

計算圖的顆粒度(例子)

常見的門單元

激活函數

六、梯度算法改進

梯度下降算法存在的問題

動量法

自適應梯度(AdaGrad,RMSProp)

ADAM

七、訓練過程

隨機權值初始化:保證正反向傳遞

批歸一化Batch Normal:保證正反向傳遞

欠擬合,過擬合,Dropout

模型正則化

超參數調優


多層感知器/全連接神經網絡

  • 定義:級聯多個線性分類器來實現輸入到輸出的映射。
  • 兩層全連接網絡:max函數是激活函數Relu?
  • 三層全連接網絡:
  • 因為線性分類器中只有一個模版記錄不夠準確,比如有兩個馬頭的模版,w是權值模版,w2的行數必須跟類別個數一樣,對w1沒有需求。那么可以指定模版行數w1如100行,大約用4-5個模版去存儲馬,再用w2融合多個模版的匹配結果來實現最終類別打分。
  • w1維度是100*3072,b1維度是100*1,f維度是100*1
  • w2維度是10*100,b2維度是10*1,f維度是10*1

一、全連接神經網絡繪制

  • 兩層全連接神經網絡:

二、激活函數

如果沒有激活函數,全連接神經網絡又退化成了一個線性分類器

常用的激活函數

  • Sigmoid:將數據壓縮在0到1之間,非對稱
  • Relu:大于0的值是值本身,小于0的值是0
  • tanh:雙曲正切函數,將數據壓縮在1到-1之間,對稱
  • Leaky Relu:使小于0的值都有一個小的斜率0.1

三、網絡結構設計

  • 指定隱藏層/深度:增加深度更好
  • 指定神經元/寬度:神經元越多,非線性能力越強,復雜的分類越強,但也越可能過擬合
  • 指定激活函數:同層用同一個激活函數

四、損失函數

softmax

  • 定義:輸出為概率分布,不僅可以預測分類,還可以預測出分到該類的概率
  • 概率化之后,訓練好的神經網絡需要有標答與之對應,那么就用onehot向量編碼表示標答,用1表示真實類別,用0表示其它類別,該向量與分類器預測的維度一致,計算預測分類器與標答的差異,用交叉熵/相對熵來比較。

交叉熵損失

  • 使預測分布與真實分布越接近越好
  • 真實分布用onehot編碼形式來表示
  • 熵是信息量的體現,信息最不確定的情況,就是onehot,熵最大,比如比賽贏的概率?
  • 交叉熵是度量預測與真實兩個分布之間的差異關系
  • 相對熵/KL散度是度量預測與真實兩個分布之間的不相似程度
  • 交叉熵 = 熵 + 相對熵
  • 當真實分布為onehot時,交叉熵損失簡化為:j是真實類別?

對比多類支持向量機損失

  • 支持向量機只要有一個比其它的分值高1分即可,交叉熵損失需要盡可能保證一個最大,其它盡可能小

五、優化算法

計算圖與反向傳播

  • 有向圖,用來表達輸入輸出以及中間變量之間的計算關系,圖中的每個節點對應著一種數學運算。
  • ?PyTorch,TensorFlow
  • 正向是計算輸入到輸出之間的關系
  • 反向是計算輸出到輸入之間的梯度(導數)鏈式法則一直兩梯度相乘,即計算局部梯度時,需要輸入值代入導數公式中,得到局部梯度,然后乘以上游梯度,才能得到當前梯度
  • 如果梯度很小的情況,會導致梯度消失

計算圖的顆粒度(例子)

  • ?-0.77*1=-0.77
  • -0.77*e^(-2)=-0.1
  • -0.1*(-1)=0.1
  • 0.1*1=0.1
  • ?在tensorflow中把sigmoid函數當作一個計算單元,無需拆解,可以加速運算

常見的門單元

激活函數

1. Sigmoid激活函數:

  • 梯度消失:當輸入大于10或小于-10時,局部梯度都為0,由于鏈式法則的乘法特性,會導致梯度消失,梯度為0時,參數無法更新訓練
  • 梯度爆炸:梯度乘以學習率后得到一個非常大的值,每次更新步長后必須走那么遠,從而無法收斂到最低點。需要限制步長,也稱梯度裁剪。新梯度權值=舊權值-學習率*當前梯度

?2. 雙曲正切激活函數:

  • ?
  • ?類似sigmoid,不利于反向梯度傳遞,會導致梯度消失

3. Relu激活函數:

  • ?
  • 當輸入大于0時,局部梯度永遠不會為0,不會導致梯度消失,利于梯度流的傳遞
  • 但當輸入小于0時,梯度為0

4. Leakly Relu激活函數:

  • ?使輸入永遠乘以一個斜率0.1,保證梯度永遠不會為0

為了避免梯度消失的問題,盡可能選擇Relu和LeaklyRelu作為激活函數,訓練過程收斂的快

六、梯度算法改進

梯度下降算法存在的問題

  • 隨機梯度下降所采集的部分樣本中存在數據噪聲,無法代表所有數據
  • 小批量梯度下降雖然可以解決隨機梯度下降的問題,但運行速度依舊慢
  • 損失下降的慢,把時間用于無用的震蕩中,簡單增大步長無法解決這個問題,需要使用動量法和自適應梯度法
  • 梯度幅度大的地方,不斷震蕩;梯度幅度小的地方,行進緩慢
  • 局部最小點與拐點梯度為0時,算法無法通過,需要使用動量法和自適應梯度法
  • 動量法

  • 利用累加歷史梯度信息來更新梯度
  • 避免左右震蕩,因為左右兩邊累加會彼此抵消
  • 加速收斂,因為單方向的累加會使梯度越來越大,直到收斂
  • 動量系數mean:取值范圍[0,1),mean為0時等價于梯度下降算法,為1時無法停止訓練,建議0.9?
  • 可以解決局部最小點和拐點,因為動量系數相當于摩擦,可以一點點減速繼續前進,找到最優解
  • 步驟3用于累加歷史梯度信息
  • 步驟4用于更新梯度
  • 自適應梯度(AdaGrad,RMSProp)

    • 分別改變步長:減小震蕩方向步長,增大平坦方向步長
    • 判斷震蕩方向和平坦方向:梯度幅度大平方,較大為震蕩,較小為平坦
    • AdaGrad自適應梯度法:
  • 統計并累加歷史梯度的平方值,如果平方值一直很大時,代表該處為震蕩處
  • 問題:當r變得非常大時,步長會變得非常小,收斂非常慢,用RMSProp改進
    • RMSProp自適應梯度法:
  • 解決AdaGrad的方法:在每次歷史梯度r上增加一個衰減值row,每次當前梯度的平方g*g上增加一個控制項(1-row),混合兩個梯度生成累加平方梯度
  • 衰減速率row:取值范圍[0,1),row控制著需要考慮多少歷史值,為0時僅考慮當前梯度的強度,為1時考慮所有歷史梯度那么row不起作用了,建議0.999,經過迭代使得累加平方梯度r很小
  • ADAM

    • 同時使用動量和自適應梯度的思想,但是調整傳統的SGD+動量法的學習率會比adam更好,找到合適的學習率就是煉丹過程
    • 步驟3:v是歷史梯度的累加值,用于更新速度,是動量法,決定了要走的方向
    • 步驟4:r是歷史梯度的平方的累加值,表示當前點是否為震蕩方向,用于改變學習率
    • 步驟6:根號r那一項用于減小震蕩方向步長,增大平坦方向步長
    • 步驟5:修正偏差可以解決算法初期的冷啟動問題,當mean=0.9時,1-mean=0.1,梯度值僅為0.1,縮小了10倍更新,會使系統初始時走的很慢,累加變量r也會變得很小。修正偏差v冒可以保證不縮小梯度值,

    七、訓練過程

    隨機權值初始化:保證正反向傳遞

    • 如何給定一個初始點進行梯度下降,同時保證正向的數據流和反向的梯度正常不消失,也就是保證輸出y與輸入z具有相同的分布
    • ?定義:z為輸入,w為權值,z與w獨立,f是激活函數,n是輸入神經元個數

    • 目標:每次輸出和輸入有相同的分布,使各層的激活值和局部梯度的方差保持一致,即尋找w的分布使得輸出y與輸入z的方差一致

    • Xavier初始化方法(針對tahn/Sigmoid函數)
  • 當均值=0,方差=1/n時,去采樣權值時,可以保證輸入和輸出的變量有相同的分布,可以保證最后一層的輸出結果依然符合正態分布
    • ?HE初始化/MSRA方法(針對Relu/LeaklyRelu函數)
  • 當均值=0,方差=2/n時,使響應結果更均勻
  • 批歸一化Batch Normal:保證正反向傳遞

    • 對神經元的輸出進行批歸一化:對輸出y進行減均值除方差,得到y',以保證當前神經元的輸出分布符合0均值1方差,可以解決前向傳遞過程中的信號消失問題
    • ?把批歸一化插入到全連接層后,非線性激活前
    • 通常全連接層之后的輸入數據會落在小梯度或無梯度的區域,但是經過批歸一化之后,會保證輸入數據回到有梯度的地方,再進行激活,可以保證信息流傳遞正常,保證輸出數據是0均值1方差,不會呈現飽和狀態,從而解決梯度消失問題
    • 定義:
    • 步驟4是讓神經網絡自己選擇適合分布的均值和方差

    欠擬合,過擬合,Dropout

    模型正則化

    超參數調優

    未完。。。

    總結

    以上是生活随笔為你收集整理的计算机视觉(四)全连接神经网络MLP的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。