極市導(dǎo)讀 作者燈會(huì)為21屆中部985研究生,七月份將入職某互聯(lián)網(wǎng)大廠(chǎng)cv算法工程師,。在去年灰飛煙滅的算法求職季中,,經(jīng)過(guò)幾十場(chǎng)不同公司以及不同部門(mén)的面試中積累出了CV總復(fù)習(xí)系列,此為深度學(xué)習(xí)補(bǔ)缺補(bǔ)漏篇,。 >>加入極市CV技術(shù)交流群,,走在計(jì)算機(jī)視覺(jué)的最前沿
一,、深入理解Batch Normalization批標(biāo)準(zhǔn)化機(jī)器學(xué)習(xí)領(lǐng)域有個(gè)很重要的假設(shè):IID獨(dú)立同分布假設(shè),就是假設(shè)訓(xùn)練數(shù)據(jù)和測(cè)試數(shù)據(jù)是滿(mǎn)足相同分布的,,這是通過(guò)訓(xùn)練數(shù)據(jù)獲得的模型能夠在測(cè)試集獲得好的效果的一個(gè)基本保障,。那BatchNorm的作用是什么呢,?BatchNorm就是在深度神經(jīng)網(wǎng)絡(luò)訓(xùn)練過(guò)程中使得每一層神經(jīng)網(wǎng)絡(luò)的輸入保持相同分布的。 BN的基本思想其實(shí)相當(dāng)直觀(guān):因?yàn)樯顚由窠?jīng)網(wǎng)絡(luò)在做非線(xiàn)性變換前的激活輸入值(就是那個(gè)x=WU+B,,U是輸入)隨著網(wǎng)絡(luò)深度加深或者在訓(xùn)練過(guò)程中,,其分布逐漸發(fā)生偏移或者變動(dòng),之所以訓(xùn)練收斂慢,,一般是整體分布逐漸往非線(xiàn)性函數(shù)的取值區(qū)間的上下限兩端靠近(對(duì)于Sigmoid函數(shù)來(lái)說(shuō),,意味著激活輸入值WU+B是大的負(fù)值或正值),所以這導(dǎo)致反向傳播時(shí)低層神經(jīng)網(wǎng)絡(luò)的梯度消失,,這是訓(xùn)練深層神經(jīng)網(wǎng)絡(luò)收斂越來(lái)越慢的本質(zhì)原因,,而B(niǎo)N就是通過(guò)一定的規(guī)范化手段,把每層神經(jīng)網(wǎng)絡(luò)任意神經(jīng)元這個(gè)輸入值的分布強(qiáng)行拉回到均值為0方差為1的標(biāo)準(zhǔn)正態(tài)分布,,其實(shí)就是把越來(lái)越偏的分布強(qiáng)制拉回比較標(biāo)準(zhǔn)的分布,,這樣使得激活輸入值落在非線(xiàn)性函數(shù)對(duì)輸入比較敏感的區(qū)域,這樣輸入的小變化就會(huì)導(dǎo)致?lián)p失函數(shù)較大的變化,,意思是這樣讓梯度變大,,避免梯度消失問(wèn)題產(chǎn)生,而且梯度變大意味著學(xué)習(xí)收斂速度快,,能大大加快訓(xùn)練速度,。 BN在訓(xùn)練的時(shí)候可以根據(jù)Mini-Batch里的若干訓(xùn)練實(shí)例進(jìn)行激活數(shù)值調(diào)整,但是在推理(inference)的過(guò)程中,,從所有訓(xùn)練實(shí)例中獲得的統(tǒng)計(jì)量來(lái)代替Mini-Batch里面m個(gè)訓(xùn)練實(shí)例獲得的均值和方差統(tǒng)計(jì)量,。 BatchNorm為什么NB呢,關(guān)鍵還是效果好,。①不僅僅極大提升了訓(xùn)練速度,,收斂過(guò)程大大加快;②還能增加分類(lèi)效果,,一種解釋是這是類(lèi)似于Dropout的一種防止過(guò)擬合的正則化表達(dá)方式,,所以不用Dropout也能達(dá)到相當(dāng)?shù)男Ч虎哿硗庹{(diào)參過(guò)程也簡(jiǎn)單多了,,對(duì)于初始化要求沒(méi)那么高,,而且可以使用大的學(xué)習(xí)率等。 總而言之,,經(jīng)過(guò)這么簡(jiǎn)單的變換,,帶來(lái)的好處多得很,這也是為何現(xiàn)在BN這么快流行起來(lái)的原因,。 二,、拉格朗日乘子法和 KKT 條件為了方便和好記,就把原來(lái)的優(yōu)化問(wèn)題寫(xiě)成f(x,y)+λh(x,y)的形式,然后分別對(duì)λ,x,y求偏導(dǎo),,并且令偏導(dǎo)為0就行了,,和之前得到的方程組是一樣的。這種方法叫拉格朗日乘數(shù)法,。
三,、L0、L1,、L2范式一般來(lái)說(shuō),,監(jiān)督學(xué)習(xí)可以看做最小化下面的目標(biāo)函數(shù): 其中,第一項(xiàng)L(yi,f(xi;w)) 衡量我們的模型(分類(lèi)或者回歸)對(duì)第i個(gè)樣本的預(yù)測(cè)值f(xi;w)和真實(shí)的標(biāo)簽yi之前的誤差,。因?yàn)槲覀兊哪P褪且獢M合我們的訓(xùn)練樣本的嘛,所以我們要求這一項(xiàng)最小,,也就是要求我們的模型盡量的擬合我們的訓(xùn)練數(shù)據(jù),。但正如上面說(shuō)言,我們不僅要保證訓(xùn)練誤差最小,,我們更希望我們的模型測(cè)試誤差小,,所以我們需要加上第二項(xiàng),也就是對(duì)參數(shù)w的規(guī)則化函數(shù)Ω(w)去約束我們的模型盡量的簡(jiǎn)單,。 正則函數(shù)部分:規(guī)則化函數(shù)Ω(w)也有很多種選擇,,一般是模型復(fù)雜度的單調(diào)遞增函數(shù),模型越復(fù)雜,規(guī)則化值就越大,。比如,,規(guī)則化項(xiàng)可以是模型參數(shù)向量的范數(shù)。然而,,不同的選擇對(duì)參數(shù)w的約束不同,,取得的效果也不同,但我們?cè)谡撐闹谐R?jiàn)的都聚集在:L0范數(shù),,L1范數(shù),,L2范數(shù),跡范數(shù),,F(xiàn)robenius范數(shù),,核范數(shù)等。 1,、L0范數(shù)L0范數(shù)是指向量中非0的元素的個(gè)數(shù),。如果用L0規(guī)則化一個(gè)參數(shù)矩陣W,就是希望W中大部分元素是零,,實(shí)現(xiàn)稀疏,。 L0范數(shù)的應(yīng)用: 1)特征選擇:實(shí)現(xiàn)特征的自動(dòng)選擇,去除無(wú)用特征,。稀疏化可以去掉這些無(wú)用特征,,將特征對(duì)應(yīng)的權(quán)重置為零。 2)可解釋性(interpretability):例如判斷某種病的患病率時(shí),,最初有1000個(gè)特征,,建模后參數(shù)經(jīng)過(guò)稀疏化,最終只有5個(gè)特征的參數(shù)是非零的,,那么就可以說(shuō)影響患病率的主要就是這5個(gè)特征,。 2、L1范數(shù)L1范數(shù)是指向量中各個(gè)元素絕對(duì)值之和,。L1范數(shù)也可以實(shí)現(xiàn)稀疏,,通過(guò)將無(wú)用特征對(duì)應(yīng)的參數(shù)W置為零實(shí)現(xiàn)。 L1范數(shù): 既然L0可以實(shí)現(xiàn)稀疏,,為什么不用L0,,而要用L1呢?個(gè)人理解一是因?yàn)長(zhǎng)0范數(shù)很難優(yōu)化求解(NP難問(wèn)題),,二是L1范數(shù)是L0范數(shù)的最優(yōu)凸近似,,而且它比L0范數(shù)要容易優(yōu)化求解。 3,、L2范數(shù)L2范數(shù)是指向量各元素的平方和然后求平方根,。,用在回歸模型中也稱(chēng)為嶺回歸(Ridge regression)。 L2范數(shù): L2避免過(guò)擬合的原理是:讓L2范數(shù)的規(guī)則項(xiàng) 盡可能小,,可以使得W每個(gè)元素都很小,,接近于零,但是與L1不同的是,,不會(huì)等于0,;這樣得到的模型抗干擾能力強(qiáng),參數(shù)很小時(shí),,即使樣本數(shù)據(jù)x發(fā)生很大的變化,,模型預(yù)測(cè)值y的變化也會(huì)很有限。 L2范數(shù)的作用:1)學(xué)習(xí)理論的角度:從學(xué)習(xí)理論的角度來(lái)說(shuō),,L2范數(shù)可以防止過(guò)擬合,,提升模型的泛化能力。2)優(yōu)化計(jì)算的角度:從優(yōu)化或者數(shù)值計(jì)算的角度來(lái)說(shuō),,L2范數(shù)有助于處理 condition number不好的情況下矩陣求逆很困難的問(wèn)題,。 四、L1 Loss& L2 Loss&smooth L1 Loss1,、L1 LossL1 我理解成 1 維向量的距離,。 使用L1損失函數(shù)也被叫做最小化絕對(duì)誤差(Least Abosulote Error)。這 個(gè)名稱(chēng)非常的形象,。 就是最小化真實(shí)值yi和預(yù)測(cè)值 之間差值 的絕對(duì)值的和,。 這里的 其實(shí)就是平均絕對(duì)誤差(MAE),使用L1 損失函數(shù)也就是min 公式: 導(dǎo)數(shù): 2、L2 LossL2 就是二維空間向量的距離,。 公式: 導(dǎo)數(shù): 3,、smooth L1 Loss:公式: 導(dǎo)數(shù): 比較: 1、L1 loss 在零點(diǎn)不平滑,,用的較少,;L1loss在零點(diǎn)不平滑,學(xué)習(xí)慢,;2,、Smooth L1 Loss 改善了零點(diǎn)不平滑問(wèn)題。 smooth L1 loss和L1 loss函數(shù)的區(qū)別在于,,L1 loss在0點(diǎn)處導(dǎo)數(shù)不唯一,,可能影響收斂。smooth L1 loss的解決辦法是在0點(diǎn)附近使用平方函數(shù)使得它更加平滑,。 smooth L1 loss讓loss function對(duì)于離群點(diǎn)更加魯棒,即:相比于L2損失函數(shù),,其對(duì)離群點(diǎn)/異常值(outlier)不敏感,,梯度變化相對(duì)更小,訓(xùn)練時(shí)不容易跑飛。 Smooth L1 Loss 相比L1修改零點(diǎn)不平滑問(wèn)題,,而且在x較大的時(shí)候不像L2對(duì)異常值敏感,,是一個(gè)緩慢變化的loss; 3,、L2 loss:對(duì)離群點(diǎn)比較敏感,,如果feature 是 unbounded的話(huà),需要好好調(diào)整學(xué)習(xí)率,,防止出現(xiàn)梯度爆炸的情況,。 L2loss學(xué)習(xí)快,因?yàn)槭瞧椒皆鲩L(zhǎng),,但是當(dāng)預(yù)測(cè)值太大的時(shí)候,,會(huì)在loss中占據(jù)主導(dǎo)位置(如真實(shí)值為1,預(yù)測(cè)多次,,有一次預(yù)測(cè)值為100,,其余預(yù)測(cè)為2)。 4,、一般來(lái)說(shuō),,L1正則會(huì)制造稀疏的特征,大部分無(wú)用特征的權(quán)重會(huì)被置為0,。L2正則會(huì)讓特征的權(quán)重不過(guò)大,,使得特征的權(quán)重比較平均。 python numpy實(shí)現(xiàn) 五,、Sigmoid與softmax的區(qū)別1,、Sigmoid函數(shù)sigmoid常用于二元分類(lèi),將二元輸入映射成0和1,。 函數(shù): 導(dǎo)數(shù): sigmoid函數(shù)推導(dǎo): 其實(shí)logistic函數(shù)也就是經(jīng)常說(shuō)的sigmoid函數(shù),,它的幾何形狀也就是一條sigmoid曲線(xiàn)(S型曲線(xiàn))。A logistic function or logistic curve is a common “S” shape (sigmoid curve). 也就是說(shuō),,sigmoid把一個(gè)值映射到0-1之間,。 該函數(shù)具有如下的特性:當(dāng)x趨近于負(fù)無(wú)窮時(shí),y趨近于0,;當(dāng)x趨近于正無(wú)窮時(shí),,y趨近于1;當(dāng)x= 0時(shí),,y=0.5. 優(yōu)點(diǎn): 1.Sigmoid函數(shù)的輸出映射在(0,1)之間,,單調(diào)連續(xù),輸出范圍有限,,優(yōu)化穩(wěn)定,,可以用作輸出層,。2.求導(dǎo)容易,處處可導(dǎo),,導(dǎo)數(shù)為:f′(x)=f(x)(1?f(x)) 缺點(diǎn): 1.由于其軟飽和性,,容易產(chǎn)生梯度消失,導(dǎo)致訓(xùn)練出現(xiàn)問(wèn)題,。2.其輸出并不是以0為中心的,。 2、Softmax函數(shù)公式: 其中 θi和x是列向量, 可能被換成函數(shù)關(guān)于x的函數(shù) fi(x),。 參考鏈接 https://www.cnblogs.com/guoyaohua/p/8724433.html https://www.cnblogs.com/xinchen1111/p/8804858.html https://zhuanlan.zhihu.com/p/51912576 https://blog.csdn.net/hejunqing14/article/details/48980321/ 如果覺(jué)得有用,,就請(qǐng)分享到朋友圈吧! |
|
來(lái)自: 極市平臺(tái) > 《待分類(lèi)》