深度学习02——Softmax、DNN、WideDeep Model
說明:本系列是七月算法深度學習課程的學習筆記
1 背景介紹
深度學習在圖片上的應用:功能上講:圖像分類和物體識別;應用上:可以用來分類圖片:白菜形狀的玉器擺件、白菜、大白菜;圖片搜索;給照片打標簽;識別超市的蔬菜;自動駕駛;模仿畫家作畫;拍立淘:以圖搜索產品。
深度學習在nlp上的應用:模仿作家寫作;抽取圖片中的文字。
綜合應用:識別圖片中的物品以及人物。
2 神經網絡非線性能力及原理
2.1 感知器與邏輯門
2.1 得分函數
線性分類器
分類問題:輸入圖像數據;輸出所屬分類;線性分割:f(x,W)。找到合適的映射函數f。
f(x,W) = Wx
輸入是一個32x32x3的圖片,W是一個10x3072的矩陣,x是一個3072x1的向量),其中W叫做參數或者權重。f稱為得分函數。
把輸入值全部展開就是一個3072x1的向量。
如果我們的分類是3個:cat,dog,ship。
W中每一行是對一個分類的線性參數。
b是偏移,相當于是截距。
最后一列是得分,在哪個分類上得分最高就最 可能是哪種分類。
2.2 損失函數
f(x,W) = Wx是否與實際符合,需要用損失函數來衡量。
損失函數:用來衡量參數W的吻合度。
損失函數1: hinge loss 支持向量機損失
衡量的是當前樣本計算的得分與標準答案之間的差異到底有多大。
例如在圖片分類中有3個分類,標準答案是分類2,那么藍色的線就是分類2的得分。delta是警戒線。如果藍色線是90,分類1和分類3的得分都比90小,那就分類正確,沒有損失。但是有點不靠譜。加個delta可以讓正確答案更靠譜一些。其他分類的值,只要不超過警戒線損失就是0,否則就有損失。
計算每個錯誤分類的錯誤距離之和。對于第i個圖片的損失值等于:
Li=∑j!=yimax(0,f(xi,W)j?f(xi,W)yi+δ)L_i=\sum_{j!=y_i}max(0,f(x_i,W)_j-f(x_i,W)_{y_i}+\delta)Li?=∑j!=yi??max(0,f(xi?,W)j??f(xi?,W)yi??+δ)
損失函數2: 交叉熵損失(softmax)
如果將每個分類上的得分記為s1,s2,s3。我們將它們處理為es1e^{s1}es1,es2e^{s2}es2,es3e^{s3}es3,然后對他們做歸一化得到概率。做指數的原因是每個分類的得分可正可負,沒法計算概率。
對于訓練集中的第i張圖片數據xix_ixi?,如果真實分類是dog,如果我們把分類記為:cat,dog,ship,那真實的向量應該是:[0,1,0]。如果我們計算得到的向量是(已經是e的次方了):[0.9,0.05,0.05]。那這個向量和真實的向量之間的差距有多大,這時候從極大似然的角度來看,我們會希望dog的概率pdogp_{dog}pdog?是最大的,從而logpdogp_{dog}pdog?也應該是最大的。那么?logpdog-logp_{dog}?logpdog?就會希望是最小值。
極大似然會將所有分類的概率乘積起來,這里使用log是因為概率值比較小,概率值相乘可能會超出計算機的精度范圍。
那么最后得到損失函數:對于訓練集中的第i張圖片數據xix_ixi?,在W下會有一個得分結果向量fff,損失值等于:
Li=?log(efyi∑jefj)L_i=-log(\dfrac{e^{f_{y_i}}}{\sum_{j} e^{f_j}})Li?=?log(∑j?efj?efyi???)
j:所有的類別,fyi{f_{y_i}}fyi??是第i張圖片計算得到的結果向量在正確分類上的數值。
例如上面例子中的Li=?log(0.050.9+0.05+0.05)=?log(0.05)=3.0L_i=-log(\dfrac{0.05}{0.9+0.05+0.05})=-log(0.05)=3.0Li?=?log(0.9+0.05+0.050.05?)=?log(0.05)=3.0
這樣我們的目標就是求LiL_iLi?的最小值。
問題:這里為什么不用MSE做損失函數?
在做線性回歸問題的時候(也就是函數的結果值是一個連續的數,例如房價預測),我們經常使用MSE做損失函數。MSE是一個非凸的函數,而交叉熵是一個凸函數。我們給交叉熵加入softmax之后,是一個具有單調性的函數,損失越大,梯度越大,非常利于梯度下降的反向傳播。所以softmax經常和交叉熵一起使用。參考鏈接
2.3 神經網絡
一般神經網絡的結構分為:輸入層、1-多個隱藏層、輸出層。
在logistic回歸中
z=θ0+θ1x1+θ2x2z=\theta_0+\theta_1x_1+\theta_2x_2z=θ0?+θ1?x1?+θ2?x2?
a=g(z)=11+e?za=g(z)=\dfrac{1}{1+e^{-z}}a=g(z)=1+e?z1?
可以把這個看所一個神經元感知器。
神經網絡有若干個這樣的感知器。就相當于有多個logistic回歸,有多個線性切分。多個線性切分可以得到什么結果呢?
2.3 非線性切分
logistic回歸在上圖數據中就沒有辦法畫出非線性的邊界。
通過神經元的邏輯與、邏輯或操作多個線性切分就可以畫出復雜的決策邊界。但是也是復雜的線性邊界。
邏輯與
邏輯或
對線性分類器的與或 進行組合就可以得到復雜的線性切分
2.4 網絡表達能力與過擬合問題
提升隱層層數或者隱層神經元的個數,神經網絡的容量會變大,空間表達能力會更強。
解決方法:不要試圖通過降低神經網絡參數數量來緩解,用正則化或者dropout。
2.5 神經網絡之激活函數
sigmoid 和 雙s函數tahn,通常是非線性函數。在每一個隱藏層后面都會加一個激活函數層。
加激活函數是要起到非線性的作用。否則無論加多少個隱層,這個符合函數還是線性的。遇到下圖這樣的數據,即使多復雜的線性表達式也不能完全區分。
如果使用激活函數,例如sigmoid。三個隱藏層每層過sigomoid函數,就能得到下圖右邊的效果。參考鏈接
2.6 BP與SGD
BP:反向傳播,傳播誤差;做題,傳回修正值。
SGD:相當于改題,找到梯度,沿著梯度的方向更新參數
總結
以上是生活随笔為你收集整理的深度学习02——Softmax、DNN、WideDeep Model的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ios PNG Crush error
- 下一篇: 深度学习第三次课-梯度下降与反向传播