深度學習中的優化不同於一般優化演算法

2021-08-13 11:47:21 字數 2706 閱讀 9723

一、經驗風險最小化

1、機器學習中我們關注某些效能度量p,其定義在測試集上並且可能不可解。我們需要間接優化p。我們通過降低代價函式j(

θ)j (θ

)來提高p。

通常代價函式可寫為訓練集上的平均,如: j(

θ)=e

(x,y

)∼p̂ 

data

l(f(

x;θ)

,y)(

1)j (θ

)=e(

x,y)

∼p^d

atal

(f(x

;θ),

y)(1

)l是每個樣本的損失函式,f是輸入x所**的輸出,p̂ 

data

p ^d

at

a是經驗分布。

通常我們更希望最小化取自資料生成分布pd

ata pda

ta

的期望,而不是僅僅在有限訓練集上的對應目標函式: j∗

(θ)=

e(x,

y)∼p

data

l(f(

x;θ)

,y)(

2)j ∗(

θ)=e

(x,y

)∼pd

atal

(f(x

;θ),

y)(2

)2、 機器學習演算法的目標是降低(2)中的期望泛化誤差,我們將之稱為風險。我們注意這裡強調它取自真實的潛在分布pd

ata pda

ta

。如果我們知道了真實分布,那麼最小化風險變成了乙個可以被優化演算法解決的問題,遺憾的是我們不知道pd

ata pda

ta

。 我們的做法是用p̂ 

data

p ^d

at

a代替pd

ata pda

ta

,去優化訓練集上的期望誤差,稱之為最小化經驗風險: e(

x,y)

∼p̂ d

atal

(f(x

;θ),

y)=1

m∑i=

1ml(

f(x(

i);θ

),y(

i))(

3)e (x

,y)∼

p^da

tal(

f(x;

θ),y

)=1m

∑i=1

ml(f

(x(i

);θ)

,y(i

))(3

)3、 然而、經驗風險最小化很容易過擬合,高容量的模型會記住訓練集。在很多情況下,其並非可行。最有效的優化方法是基於梯度下降的,但是有的損失函式如 0-1 損失,沒有有效的導數(要麼為0,要麼沒定義)。這兩個問題說明深度學習中我們很少用到經驗風險最小化。反之,會使用稍有不同的方法,真正優化的目標會更加不同於我們希望優化的目標。

二、**損失函式和提前終止

當我們關心的損失函式無法高效優化時,通常會選擇去優化**損失函式。例如:正確類別的負對數似然通常作為 0-1 損失的替代。負對數似然允許模型估計給定樣本的類別的條件概率,如果該模型效果好,那麼它能夠輸出期望最小分類誤差所對應的類別。

機器學習用於訓練的演算法通常不會停止在區域性極小點。通過優化**損失函式,但是基於提前終止的收斂條件滿足時停止。提前終止使用的是真實潛在損失函式,在過擬合發生前執行。

三、批量演算法和小批量演算法

與一般優化演算法相比,機器學習演算法的目標函式通常可以分解成訓練樣本上的求和。機器學習中的優化演算法在計算引數的每一次更新時通常僅使用在整個代價函式中一部分項來估計代價函式的期望。

例如,最大似然估計問題可以在對數空間中分解成各個樣本的總和: θm

l=argmaxθ∑

i=1m

logpmo

del(

x(i)

,y(i

);θ)

(4) θml

=arg

⁡maxθ∑

i=1m

log⁡pm

odel

(x(i

),y(

i);θ

)(4)

最大化這個總和等價於最大化訓練集在經驗分布上的期望: j(

θ)=e

(x,y

)∼p̂ 

data

logpmo

del(

x,y;

θ)(5

) j(θ

)=e(

x,y)

∼p^d

at

alog⁡p

mode

l(x,

y;θ)

(5

)準確計算這個期望代價很大,需要在每個樣本上評估模型。實踐中,隨即取樣少量樣本,然後計算它們的均值。n個樣本均值的標準差是σ/

n‾√,

σ σ/n,

σ是真實樣本的標準差。分母表明使用更多樣本計算梯度的回報是低於線性的。

另乙個促使我們從小數目樣本中獲得梯度的統計估計的動機是訓練集的冗餘。最壞情況下,訓練集的m個樣本都是彼此的拷貝,我們只需要單個樣本即可得出正確梯度。實踐中,可能大量樣本對梯度的貢獻做了非常相似的貢獻。

使用全部訓練集的演算法稱作

批量,使用單個樣本的演算法叫做

小批量。

nginx的一般優化

user nobody worker processes 1 此數跟cpu的核心數是一致的 error log logs error.log error log logs error.log notice error log logs error.log info 日誌等級 debug info n...

nginx的一般優化

nginx的一般優化 user nobody worker processes 1 此數跟cpu的核心數是一致的 error log logs error.log error log logs error.log notice error log logs error.log info 日誌等級 d...

MySql優化的一般步驟

mysql優化的一般步驟 1.通過show status 命令了解各種sql的執行效率 2.定位執行效率較低的sql語句 dql出現問題的概率較dml的大 mysql支援把慢查詢語句記錄到日誌檔案中。3.通過explain分析低效率的sql語句的執 況 4.常用的優化措施是新增索引。新增索引,我們不...