久久综合九色综合97婷婷-美女视频黄频a免费-精品日本一区二区三区在线观看-日韩中文无码有码免费视频-亚洲中文字幕无码专区-扒开双腿疯狂进出爽爽爽动态照片-国产乱理伦片在线观看夜-高清极品美女毛茸茸-欧美寡妇性猛交XXX-国产亚洲精品99在线播放-日韩美女毛片又爽又大毛片,99久久久无码国产精品9,国产成a人片在线观看视频下载,欧美疯狂xxxx吞精视频

有趣生活

當前位置:首頁>職場>算法工程師項目經歷(一位算法工程師經歷30)

算法工程師項目經歷(一位算法工程師經歷30)

發布時間:2024-01-19閱讀(15)

導讀作者丨燈會來源丨極市平臺編輯丨極市平臺優化算法深度學習優化學習方法(一階、二階)一階方法:隨機梯度下降(SGD)、動量(Momentum)、牛頓動量法(Ne....

作者丨燈會

來源丨極市平臺

編輯丨極市平臺

優化算法

深度學習優化學習方法(一階、二階)

一階方法:隨機梯度下降(SGD)、動量(Momentum)、牛頓動量法(Nesterov動量)、AdaGrad(自適應梯度)、RMSProp(均方差傳播)、Adam、Nadam。

二階方法:牛頓法、擬牛頓法、共軛梯度法(CG)、BFGS、L-BFGS。

自適應優化算法有哪些?(Adagrad(累積梯度平方)、RMSProp(累積梯度平方的滑動平均)、Adam(帶動量的RMSProp,即同時使用梯度的一、二階矩))。

梯度下降陷入局部最優有什么解決辦法? 可以用BGD、SGD、MBGD、momentum,RMSprop,Adam等方法來避免陷入局部最優。

1.梯度下降法原理

梯度下降法又稱最速下降法,是求解無約束最優化問題的一種最常用的方法,在對損失函數最小化時經常使用。梯度下降法是一種迭代算法。選取適當的初值x(0),不斷迭代,更新x的值,進行目標函數的極小化,直到收斂。由于負梯度方向時使函數值下降最快的方向,在迭代的每一步,以負梯度方向更新x的值,從而達到減少函數值的目的。

我們首先確定損失函數:

算法工程師項目經歷(一位算法工程師經歷30)(1)

其中,J(θ)是損失函數,m代表每次取多少樣本進行訓練,如果采用SGD進行訓練,那每次隨機取一組樣本,m=1;如果是批處理,則m等于每次抽取作為訓練樣本的數量。θ是參數,對應(1式)的θ1和θ2。求出了θ1和θ2,h(x)的表達式就出來了:

算法工程師項目經歷(一位算法工程師經歷30)(2)

我們的目標是讓損失函數J(θ)的值最小,根據梯度下降法,首先要用J(θ)對θ求偏導:

算法工程師項目經歷(一位算法工程師經歷30)(3)

由于是要最小化損失函數,所以參數θ按其負梯度方向來更新:

算法工程師項目經歷(一位算法工程師經歷30)(4)

①批量梯度下降(BGD)

批量梯度下降法,是梯度下降法最常用的形式,具體做法也就是在更新參數時使用所有的樣本來進行更新

算法工程師項目經歷(一位算法工程師經歷30)(5)

寫成偽代碼如下:

for i in range(nb_epochs): params_grad = evaluate_gradient(loss_function, data, params) params = params - learning_rate * params_grad

優點:(1)一次迭代是對所有樣本進行計算,此時利用矩陣進行操作,實現了并行。(2)由全數據集確定的方向能夠更好地代表樣本總體,從而更準確地朝向極值所在的方向。當目標函數為凸函數時,BGD一定能夠得到全局最優。

缺點:(1)當樣本數目 m 很大時,每迭代一步都需要對所有樣本計算,訓練過程會很慢。(2)不能投入新數據實時更新模型。

②隨機梯度下降(SGD)

隨機梯度下降法求梯度時選取一個樣本j來求梯度。

算法工程師項目經歷(一位算法工程師經歷30)(6)

寫成偽代碼如下:

for i in range(nb_epochs): np.random.shuffle(data) for example in data: params_grad = evaluate_gradient(loss_function , example ,params) params = params - learning_rate * params_grad

優點:(1)由于不是在全部訓練數據上的損失函數,而是在每輪迭代中,隨機優化某一條訓練數據上的損失函數,這樣每一輪參數的更新速度大大加快。

缺點:(1)準確度下降。由于即使在目標函數為強凸函數的情況下,SGD仍舊無法做到線性收斂。(2)可能會收斂到局部最優,由于單個樣本并不能代表全體樣本的趨勢。(3)不易于并行實現。SGD 因為更新比較頻繁,會造成 cost function 有嚴重的震蕩。

③小批量梯度下降算法(mini-batch GD)

小批量梯度下降法是是對于m個樣本,我們采用x個樣子來迭代,1<x<m。一般可以取x=10,當然根據樣本的數據,可以調整這個x的值。

算法工程師項目經歷(一位算法工程師經歷30)(7)

偽代碼如下:

for i in range(nb_epochs): np.random.shuffle(data) for batch in get_batches(data, batch_size=50): params_grad = evaluate_gradient(loss_function, batch, params) params = params - learning_rate * params_grad

優點:(1)通過矩陣運算,每次在一個batch上優化神經網絡參數并不會比單個數據慢太多。(2)每次使用一個batch可以大大減小收斂所需要的迭代次數,同時可以使收斂到的結果更加接近梯度下降的效果。(比如上例中的30W,設置batch_size=100時,需要迭代3000次,遠小于SGD的30W次)(3)可實現并行化。

缺點(解釋1):

1.不過 Mini-batch gradient descent 不能保證很好的收斂性,learning rate 如果選擇的太小,收斂速度會很慢,如果太大,loss function 就會在極小值處不停地震蕩甚至偏離。(有一種措施是先設定大一點的學習率,當兩次迭代之間的變化低于某個閾值后,就減小 learning rate,不過這個閾值的設定需要提前寫好,這樣的話就不能夠適應數據集的特點。)對于非凸函數,還要避免陷于局部極小值處,或者鞍點處,因為鞍點周圍的error是一樣的,所有維度的梯度都接近于0,SGD 很容易被困在這里。(會在鞍點或者局部最小點震蕩跳動,因為在此點處,如果是訓練集全集帶入即BGD,則優化會停止不動,如果是mini-batch或者SGD,每次找到的梯度都是不同的,就會發生震蕩,來回跳動。)

2.SGD對所有參數更新時應用同樣的 learning rate,如果我們的數據是稀疏的,我們更希望對出現頻率低的特征進行大一點的更新。LR會隨著更新的次數逐漸變小。

缺點(解釋2):

(1)batch_size的不當選擇可能會帶來一些問題。

batcha_size的選擇帶來的影響:在合理地范圍內,增大batch_size的好處:a. 內存利用率提高了,大矩陣乘法的并行化效率提高。b. 跑完一次 epoch(全數據集)所需的迭代次數減少,對于相同數據量的處理速度進一步加快。c. 在一定范圍內,一般來說 Batch_Size 越大,其確定的下降方向越準,引起訓練震蕩越小。

(2)盲目增大batch_size的壞處:

a. 內存利用率提高了,但是內存容量可能撐不住了。b. 跑完一次 epoch(全數據集)所需的迭代次數減少,要想達到相同的精度,其所花費的時間大大增加了,從而對參數的修正也就顯得更加緩慢。c. Batch_Size 增大到一定程度,其確定的下降方向已經基本不再變化。

2.梯度下降算法改進

①動量梯度下降法(Momentum)

Momentum 通過加入 γ*vt?1 ,可以加速 SGD, 并且抑制震蕩。momentum即動量,它模擬的是物體運動時的慣性,即更新的時候在一定程度上保留之前更新的方向,同時利用當前batch的梯度微調最終的更新方向。這樣一來,可以在一定程度上增加穩定性,從而學習地更快,并且還有一定擺脫局部最優的能力。動量法做的很簡單,相信之前的梯度。如果梯度方向不變,就越發更新的快,反之減弱當前梯度。r一般為0.9。

算法工程師項目經歷(一位算法工程師經歷30)(8)

缺點:這種情況相當于小球從山上滾下來時是在盲目地沿著坡滾,如果它能具備一些先知,例如快要上坡時,就知道需要減速了的話,適應性會更好。

②Nesterov accelerated gradient法(NAG)

用 θ?γv_t?1 來近似當做參數下一步會變成的值,則在計算梯度時,不是在當前位置,而是未來的位置上。仍然是動量法,只是它要求這個下降更加智能。這個算法就可以對低頻的參數做較大的更新,對高頻的做較小的更新,也因此,對于稀疏的數據它的表現很好,很好地提高了 SGD 的魯棒性。

算法工程師項目經歷(一位算法工程師經歷30)(9)

esterov 的好處就是,當梯度方向快要改變的時候,它提前獲得了該信息,從而減弱了這個過程,再次減少了無用的迭代。超參數設定值: 一般 γ 仍取值 0.9 左右。

③Adagrad

這個算法就可以對低頻的參數做較大的更新,對高頻的做較小的更新,也因此,對于稀疏的數據它的表現很好,很好地提高了 SGD 的魯棒性,例如識別 Youtube 視頻里面的貓,訓練 GloVe word embeddings,因為它們都是需要在低頻的特征上有更大的更新。

梯度更新規則:

算法工程師項目經歷(一位算法工程師經歷30)(10)

其中g為:t時刻參數θ_i的梯度

算法工程師項目經歷(一位算法工程師經歷30)(11)

如果是普通的 SGD, 那么 θ_i 在每一時刻的梯度更新公式為:

算法工程師項目經歷(一位算法工程師經歷30)(12)

但這里的learning rate η也隨t和i而變:

算法工程師項目經歷(一位算法工程師經歷30)(13)

其中 Gt 是個對角矩陣, (i,i) 元素就是 t 時刻參數 θi 的梯度平方和。

Adagrad 的優點是減少了學習率的手動調節。超參數設定值:一般η選取0.01。

缺點:它的缺點是分母會不斷積累,這樣學習率就會收縮并最終會變得非常小。

④Adadelta

這個算法是對 Adagrad 的改進,和Adagrad相比,就是分母的 G 換成了過去的梯度平方的衰減平均值,指數衰減平均值

算法工程師項目經歷(一位算法工程師經歷30)(14)

這個分母相當于梯度的均方根 root mean squared (RMS),在數據統計分析中,將所有值平方求和,求其均值,再開平方,就得到均方根值 ,所以可以用 RMS 簡寫:

算法工程師項目經歷(一位算法工程師經歷30)(15)

其中 E 的計算公式如下,t 時刻的依賴于前一時刻的平均和當前的梯度:

算法工程師項目經歷(一位算法工程師經歷30)(16)

梯度更新規則:此外,還將學習率η換成了RMS[Δθ],這樣的話,我們甚至都不需要提前設定學習率了:

算法工程師項目經歷(一位算法工程師經歷30)(17)

超參數設定值: γ 一般設定為 0.9

⑤RMSprop

RMSprop 是 Geoff Hinton 提出的一種自適應學習率方法。RMSprop 和 Adadelta 都是為了解決 Adagrad 學習率急劇下降問題的。

梯度更新規則:RMSprop 與 Adadelta 的第一種形式相同:(使用的是指數加權平均,旨在消除梯度下降中的擺動,與Momentum的效果一樣,某一維度的導數比較大,則指數加權平均就大,某一維度的導數比較小,則其指數加權平均就小,這樣就保證了各維度導數都在一個量級,進而減少了擺動,允許使用一個更大的學習率η)。

算法工程師項目經歷(一位算法工程師經歷30)(18)

超參數設定值:Hinton 建議設定 γ 為 0.9, 學習率 η 為 0.001。

⑥Adam:Adaptive Moment Estimation

Adam 算法和傳統的隨機梯度下降不同。隨機梯度下降保持單一的學習率(即 alpha)更新所有的權重,學習率在訓練過程中并不會改變。而 Adam 通過計算梯度的一階矩估計和二階矩估計而為不同的參數設計獨立的自適應性學習率。這個算法是另一種計算每個參數的自適應學習率的方法,相當于 RMSprop Momentum。

除了像 Adadelta 和 RMSprop 一樣存儲了過去梯度的平方 vt 的指數衰減平均值 ,也像 momentum 一樣保持了過去梯度 mt 的指數衰減平均值:

算法工程師項目經歷(一位算法工程師經歷30)(19)

如果mt和vt被初始化為0向量,那它們就會向0偏置,所以做了偏差校正,通過計算偏差校正后的mt和vt來抵消這些偏差:

算法工程師項目經歷(一位算法工程師經歷30)(20)

梯度更新規則:

算法工程師項目經歷(一位算法工程師經歷30)(21)

超參數設定值:建議 β1 = 0.9,β2 = 0.999,? = 10e?8。

實踐表明,Adam 比其他適應性學習方法效果要好。

Adam和 SGD 區別:Adam = Adaptive Momentum,顧名思義Adam集成了SGD的一階動量和RMSProp的二階動量。

3.牛頓法

利用二階導數,收斂速度快;但對目標函數有嚴格要求,必須有連續的一、二階偏導數,計算量大。利用牛頓法求解目標函數的最小值其實是轉化成求使目標函數的一階導為0的參數值。這一轉換的理論依據是,函數的極值點處的一階導數為0.其迭代過程是在當前位置x0求該函數的切線,該切線和x軸的交點x1,作為新的x0,重復這個過程,直到交點和函數的零點重合。此時的參數值就是使得目標函數取得極值的參數值。

簡述梯度下降法和牛頓法的優缺點?梯度下降法和牛頓法區別

1.牛頓法:是通過求解目標函數的一階導數為0時的參數,進而求出目標函數最小值時的參數。①收斂速度很快。②海森矩陣的逆在迭代過程中不斷減小,可以起到逐步減小步長的效果。③缺點:海森矩陣的逆計算復雜,代價比較大,因此有了擬牛頓法。

2.梯度下降法:是通過梯度方向和步長,直接求解目標函數的最小值時的參數。越接近最優值時,步長應該不斷減小,否則會在最優值附近來回震蕩。

Batch Normalization

1.批標準化(Batch Normalization)

可以理解為是一種數據預處理技術,使得每層網絡的輸入都服從(0,1)0均值,1方差分布,如果不進行BN,那么每次輸入的數據分布不一致,網絡訓練精度自然也受影響。前向公式:

算法工程師項目經歷(一位算法工程師經歷30)(22)

前向傳播代碼

def batchnorm_forward(x, gamma, beta, eps): N, D = x.shape #為了后向傳播求導方便,這里都是分步進行的 #step1: 計算均值 mu = 1./N * np.sum(x, axis = 0) #step2: 減均值 xmu = x - mu #step3: 計算方差 sq = xmu ** 2 var = 1./N * np.sum(sq, axis = 0) #step4: 計算x^的分母項 sqrtvar = np.sqrt(var eps) ivar = 1./sqrtvar #step5: normalization->x^ xhat = xmu * ivar #step6: scale and shift gammax = gamma * xhat out = gammax beta #存儲中間變量 cache = (xhat,gamma,xmu,ivar,sqrtvar,var,eps) return out, cache

后向傳播代碼

def batchnorm_backward(dout, cache): #解壓中間變量 xhat,gamma,xmu,ivar,sqrtvar,var,eps = cache N,D = dout.shape #step6 dbeta = np.sum(dout, axis=0) dgammax = dout dgamma = np.sum(dgammax*xhat, axis=0) dxhat = dgammax * gamma #step5 divar = np.sum(dxhat*xmu, axis=0) dxmu1 = dxhat * ivar #注意這是xmu的一個支路 #step4 dsqrtvar = -1. /(sqrtvar**2) * divar dvar = 0.5 * 1. /np.sqrt(var eps) * dsqrtvar #step3 dsq = 1. /N * np.ones((N,D)) * dvar dxmu2 = 2 * xmu * dsq #注意這是xmu的第二個支路 #step2 dx1 = (dxmu1 dxmu2) 注意這是x的一個支路 #step1 dmu = -1 * np.sum(dxmu1 dxmu2, axis=0) dx2 = 1. /N * np.ones((N,D)) * dmu 注意這是x的第二個支路 #step0 done! dx = dx1 dx2 return dx, dgamma, dbeta

Batch Norm即批規范化,目的是為了解決每批數據訓練時的不規則分布給訓練造成的困難,對批數據進行規范化,還可以在梯度反傳時,解決梯度消失的問題。

Batchnorm也是一種正則的方式,可以代替其他正則方式如Dropout,但通過這樣的正則化,也消融了數據之間的許多差異信息。

2. batchnorm的幾個參數,可學習的參數有哪些?

第四步加了兩個參數γ和β,分別叫做縮放參數和平移參數,通過選擇不同的γ和β可以讓隱藏單元有不同的分布。這里面的γ和β可以從你的模型中學習,可以用梯度下降,Adam等算法進行更新。

3. Batch Normalization的作用

神經網絡在訓練的時候隨著網絡層數的加深,激活函數的輸入值的整體分布逐漸往激活函數的取值區間上下限靠近,從而導致在反向傳播時低層的神經網絡的梯度消失。而BatchNormalization的作用是通過規范化的手段,將越來越偏的分布拉回到標準化的分布,使得激活函數的輸入值落在激活函數對輸入比較敏感的區域,從而使梯度變大,加快學習收斂速度,避免梯度消失的問題。

①不僅僅極大提升了訓練速度,收斂過程大大加快;②還能增加分類效果,一種解釋是這是類似于dropout的一種防止過擬合的正則化表達方式,所以不用Dropout也能達到相當的效果;③另外調參過程也簡單多了,對于初始化要求沒那么高,而且可以使用大的學習率等。

4. BN層怎么實現

1.計算樣本均值。2.計算樣本方差。3.樣本數據標準化處理。4.進行平移和縮放處理。引入了γ和β兩個參數。來訓練γ和β兩個參數。引入了這個可學習重構參數γ、β,讓我們的網絡可以學習恢復出原始網絡所要學習的特征分布。

5.BN一般用在網絡的哪個部分???

先卷積再BN

Batch normalization 的 batch 是批數據, 把數據分成小批小批進行 stochastic gradient descent. 而且在每批數據進行前向傳遞 forward propagation 的時候, 對每一層都進行 normalization 的處理

6.BN為什么要重構

恢復出原始的某一層所學到的特征的。因此我們引入了這個可學習重構參數γ、β,讓我們的網絡可以學習恢復出原始網絡所要學習的特征分布。

7.BN層反向傳播,怎么求導

反向傳播:

反向傳播需要計算三個梯度值,分別是

算法工程師項目經歷(一位算法工程師經歷30)(23)

定義

算法工程師項目經歷(一位算法工程師經歷30)(24)

為從上一層傳遞過來的殘差。

算法工程師項目經歷(一位算法工程師經歷30)(25)

觀察縮放和移位與歸一化公式,可以看到從xi到yi的鏈式計算過程:

算法工程師項目經歷(一位算法工程師經歷30)(26)

上式三個加號對應三條鏈式計算。

8. batchnorm訓練時和測試時的區別

訓練階段:首先計算均值和方差(每次訓練給一個批量,計算批量的均值方差),然后歸一化,然后縮放和平移。

測試階段:每次只輸入一張圖片,這怎么計算批量的均值和方差,于是,就有了代碼中下面兩行,在訓練的時候實現計算好mean、 var,測試的時候直接拿來用就可以了,不用計算均值和方差。

9.先加BN還是激活,有什么區別(先激活)

目前在實踐上,傾向于把BN放在ReLU后面。也有評測表明BN放ReLU后面效果更好。

二、基礎卷積神經網絡

1.CNN的經典模型

LeNet,AlexNet,VGG,GoogLeNet,ResNet,DenseNet

2.對CNN的理解

CNN= 數據輸入層 (Input Layer)+ {[卷積計算層(CONV Layer )*a+ReLU激勵層 (ReLU Layer)]*b+ 池化層 (Pooling Layer ) }*c+全連接層 (FC Layer) * d 。

3.CNN和傳統的全連接神經網絡有什么區別?

在全連接神經網絡中,每相鄰兩層之間的節點都有邊相連,于是會將每一層的全連接層中的節點組織成一列,這樣方便顯示連接結構。而對于卷積神經網絡,相鄰兩層之間只有部分節點相連,為了展示每一層神經元的維度,一般會將每一層卷積層的節點組織成一個三維矩陣。全連接神經網絡和卷積神經網絡的唯一區別就是神經網絡相鄰兩層的連接方式。

4.講一下CNN,每個層及作用

卷積層:用它來進行特征提取

池化層:對輸入的特征圖進行壓縮,一方面使特征圖變小,簡化網絡計算復雜度;一方面進行特征壓縮,提取主要特征,

激活函數:是用來加入非線性因素的,因為線性模型的表達能力不夠。

全連接層(fully connected layers,FC)在整個卷積神經網絡中起到“分類器”的作用。全連接層則起到將學到的“分布式特征表示”映射到樣本標記空間的作用。

5.為什么神經網絡使用卷積層?-共享參數,局部連接;

使用卷積層的前提條件是什么?-數據分布一致

6.resnet相比于之前的卷積神經網絡模型中,最大的改進點是什么?,解決了什么問題

跳躍連接(residual block)和瓶頸層。resnet本身是一種擬合殘差的結果,讓網絡學習任務更簡單,可以有效地解決梯度彌散的問題。

Resnet為啥能解決梯度消失,怎么做的,能推導嗎?

由于每做一次卷積(包括對應的激活操作)都會浪費掉一些信息:比如卷積核參數的隨機性(盲目性)、激活函數的抑制作用等等。這時,ResNet中的shortcut相當于把以前處理過的信息直接再拿到現在一并處理,起到了減損的效果。

7.resnet第二個版本做了哪些改進,Resnet性能最好的變體是哪個,結構是怎么樣的,原理是什么?

算法工程師項目經歷(一位算法工程師經歷30)(27)

Resnetv2:1、相比于原始的網絡結構,先激活的網絡中f是恒等變換,這使得模型優化更加容易。2、使用了先激活輸入的網絡,能夠減少網絡過擬合。

Resnet性能最好的變體是Resnext。

算法工程師項目經歷(一位算法工程師經歷30)(28)

ResNeXt可以說是基于Resnet與Inception Split Transfrom Concat而搞出的產物,結構簡單、易懂又足夠強大。(Inception網絡使用了一種split-transform-merge思想,即先將輸入切分到不同的低維度中,然后做一個特征映射,最后將結果融合到一起。但模型的泛化性不好,針對不同的任務需要設計的東西太多。)

ResNeXt提出了一個基數(cardinatity)的概念,用于作為模型復雜度的另外一個度量?;鶖担╟ardinatity)指的是一個block中所具有的相同分支的數目。

與 ResNet 相比,相同的參數個數,結果更好:一個 101 層的 ResNeXt 網絡,和 200 層的 ResNet 準確度差不多,但是計算量只有后者的一半。

ResNet的特點 引入跳躍連接,有效地解決了網絡過深時候梯度消失的問題,使得設計更深層次的網絡變得可行。

8.簡述InceptionV1到V4的網絡、區別、改進

Inceptionv1的核心就是把googlenet的某一些大的卷積層換成11, 33, 5*5的小卷積,這樣能夠大大的減小權值參數數量。

inception V2在輸入的時候增加了batch_normal,所以他的論文名字也是叫batch_normal,加了這個以后訓練起來收斂更快,學習起來自然更高效,可以減少dropout的使用。

inception V3把googlenet里一些77的卷積變成了17和71的兩層串聯,33的也一樣,變成了13和31,這樣加速了計算,還增加了網絡的非線性,減小過擬合的概率。另外,網絡的輸入從224改成了299.

inception v4實際上是把原來的inception加上了resnet的方法,從一個節點能夠跳過一些節點直接連入之后的一些節點,并且殘差也跟著過去一個。另外就是V4把一個先11再33那步換成了先33再11.

論文說引入resnet不是用來提高深度,進而提高準確度的,只是用來提高速度的。

9. DenseNet為什么比ResNet有更強的表達能力?

DenseNet在增加深度的同時,加寬每一個DenseBlock的網絡寬度,能夠增加網絡識別特征的能力,而且由于DenseBlock的橫向結構類似 Inception block的結構,使得需要計算的參數量大大降低。

三、損失函數

1.說一下smooth L1 Loss,并闡述使用smooth L1 Loss的優點

算法工程師項目經歷(一位算法工程師經歷30)(29)

Smooth L1的優點:①相比于L1損失函數,可以收斂得更快。②相比于L2損失函數,對離群點、異常值不敏感,梯度變化相對更小,訓練時不容易跑飛。

算法工程師項目經歷(一位算法工程師經歷30)(30)

2. L1_loss和L2_loss的區別

平均絕對誤差(L1 Loss): 平均絕對誤差(Mean Absolute Error,MAE) 是指模型預測值f(x)和真實值y之間距離的平均值,其公式如下:

算法工程師項目經歷(一位算法工程師經歷30)(31)

算法工程師項目經歷(一位算法工程師經歷30)(32)

均方誤差MSE (L2 Loss):均方誤差(Mean Square Error,MSE)是模型預測值f(x) 與真實樣本值y 之間差值平方的平均值,其公式如下

算法工程師項目經歷(一位算法工程師經歷30)(33)

算法工程師項目經歷(一位算法工程師經歷30)(34)

3.為何分類問題用交叉熵而不用平方損失?啥是交叉熵

算法工程師項目經歷(一位算法工程師經歷30)(35)

1.用平方誤差損失函數,誤差增大參數的梯度會增大,但是當誤差很大時,參數的梯度就會又減小了。2.使用交叉熵損失是函數,誤差越大參數的梯度也越大,能夠快速收斂。

分類中為什么交叉熵損失函數比均方誤差損失函數更常用?

交叉熵損失函數關于輸入權重的梯度表達式與預測值與真實值的誤差成正比且不含激活函數的梯度,而均方誤差損失函數關于輸入權重的梯度表達式中則含有,由于常用的sigmoid/tanh等激活函數存在梯度飽和區,使得MSE對權重的梯度會很小,參數w調整的慢,訓練也慢,而交叉熵損失函數則不會出現此問題,其參數w會根據誤差調整,訓練更快,效果更好。

4.一張圖片多個類別怎么設計損失函數,多標簽分類問題

多標簽分類怎么解決,從損失函數角度考慮

分類問題名稱 輸出層使用激活函數 對應的損失函數

二分類 sigmoid函數 二分類交叉熵損失函數(binary_crossentropy)

多分類 Softmax函數 多類別交叉熵損失函數(categorical_crossentropy)

多標簽分類 sigmoid函數 二分類交叉熵損失函數(binary_crossentropy)

(多標簽問題與二分類問題關系在上文已經討論過了,方法是計算一個樣本各個標簽的損失(輸出層采用sigmoid函數),然后取平均值。把一個多標簽問題,轉化為了在每個標簽上的二分類問題。)

5. LR的損失函數?它的導數是啥?加了正則化之后它的導數又是啥?

Logistic regression (邏輯回歸)是當前業界比較常用的機器學習方法。

Logistic回歸雖然名字里帶“回歸”,但是它實際上是一種分類方法,主要用于兩分類問題,利用Logistic函數(或稱為Sigmoid函數),自變量取值范圍為(-INF, INF),自變量的取值范圍為(0,1),函數形式為:

算法工程師項目經歷(一位算法工程師經歷30)(36)

LR的損失函數為交叉熵損失函數。

參考文獻
  • LeCun Y, Bottou L, Bengio Y, et al. Gradient-based learning applied to document recognition[J]. Proceedings of the IEEE, 1998, 86(11): 2278-2324.
  • Krizhevsky A, Sutskever I, Hinton G E. Imagenet classification with deep convolutional neural networks[J]. Advances in neural information processing systems, 2012, 25: 1097-1105.
  • Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition[J]. arXiv preprint arXiv:1409.1556, 2014.
  • Szegedy C, Liu W, Jia Y, et al. Going deeper with convolutions[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 1-9.
  • He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.
  • Huang G, Liu Z, Van Der Maaten L, et al. Densely connected convolutional networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 4700-4708.
  • He K, Zhang X, Ren S, et al. Identity mappings in deep residual networks[C].European conference on computer vision. Springer, Cham, 2016: 630-645.
  • Xie S, Girshick R, Dollár P, et al. Aggregated residual transformations for deep neural networks[C].Proceedings of the IEEE conference on computer vision and pattern recognition. 2017: 1492-1500.
參考鏈接
  • https://zhuanlan.zhihu.com/p/26138673
  • https://blog.csdn.net/elaine_bao/article/details/50923198
  • https://www.cnblogs.com/guoyaohua/p/8724433.html
  • https://blog.csdn.net/bl128ve900/article/details/95309305
  • https://blog.csdn.net/bll1992/article/details/87431604
  • https://blog.csdn.net/kittyzc/article/details/107444373
  • https://blog.csdn.net/qq122716072/article/details/107083623
  • https://www.cnblogs.com/wangguchangqing/p/12021638.html
  • https://zhuanlan.zhihu.com/p/97324416
  • https://blog.csdn.net/zouxy09/article/details/20319673
  • https://blog.csdn.net/google19890102/article/details/69942970
  • https://www.cnblogs.com/guoyaohua/p/8542554.html
  • https://blog.csdn.net/qq_39852676/article/details/86529995
,
TAGS標簽:  算法  工程師  項目  經歷  一位

Copyright ? 2024 有趣生活 All Rights Reserve吉ICP備19000289號-5 TXT地圖HTML地圖XML地圖