深度學習中的數值計算問題

2021-09-10 01:12:02 字數 2949 閱讀 1801

連續數學在數字計算機上的根本困難:我們需要通過有限數量的位模式來表示無限多的實數。計算機在表示實數時總會引入一些近似誤差,這些捨入誤差會導致上溢和下溢問題。

舉例:softmax函式:sof

tmax

(x)i

=exi

∑jn(

exj)

softmax(x)_ = \frac}}^(e^})}

softma

x(x)

i​=∑

jn​(

exj​

)exi

​​當x

ix_i

xi​非常大時會導致exi

e^ex

i​上溢,同理,當x

ix_i

xi​非常小時會導致exi

e^ex

i​下溢,可以通過下面公式解決該問題(其中d為x

ix_i

xi​中的最大值):

s i=

evi−

d∑i=

0cev

i−

ds_= \frac-d}}^e^-d}}

si​=∑i

=0c​

evi​

−dev

i​−d

​基礎當導數等於0時,導數無法提供往哪個方向移動的資訊。

駐點有三種:區域性極小點,區域性極大點、鞍點。

梯度向量∇xf

(x

)\nabla_f(x)

∇x​f(x

)指向上坡,負梯度向量指向下坡,我們在負梯度方向上移動可以減少f

ff,這被稱為最速下降法(method of steepest descent)或梯度下降法(gradient descent),更新公式:x『=

x−α∇

xf(x

)x^` = x - \alpha\nabla_f(x)

x『=x−α

∇x​f

(x)

jacobian和hessian矩陣

定義:如果我們有乙個函式:f:r

m→

rf:r^m \rightarrow r

f:rm→r

,則海森矩陣h∈r

mh\in r^

h∈rm×m

,其中hi,

j=∂2

∂xix

jf

h_ = \fracf

hi,j​=

∂xi​

xj​∂

2​f二階導數是對曲率的衡量,它告訴我們一階導數如何隨著輸入的變化而改變。

曲率為零⟹

\longrightarrow

⟹一階導數是常數⟹

\longrightarrow

⟹函式f是一條平坦的線⟹

\longrightarrow

⟹代價函式下降的速度與步長α

\alpha

α相等曲率為負時(即二階導數為負)函式向下凹陷,為正向上凹陷

hessian矩陣是實對稱矩陣,因此我們可以將其分解成一組是特徵值和一組特徵向量的正交基,最大的特徵值確定最大的二階導數,最小的特徵值確定最小的二階導數

某個特定方向d上的二階導數為dth

dd^thd

dthd

,當d是h的乙個特徵向量時,此方向上的二階導數就是對應的特徵值,對於其他方向d,方向的二階導數是所有特徵值的加權平均,權重在0和1之間,且與d的夾角越小的特徵向量權重越大。

二階導數可以用來確定最優步長,α∗=

gtgg

th

g\alpha^* = \frac

α∗=gth

ggtg

​,其中g是梯度,最壞情況下梯度g與h最大特徵值λma

x\lambda_

λmax

​對應的特徵向量對齊,此時α∗=

1λma

x\alpha^* = \frac}

α∗=λma

x​1​

二階導數可以用來確定乙個臨界點是否是區域性極大值、區域性極小值或鞍點。當hessian矩陣正定時,為區域性極小點、反之,負定時為區域性極大值;當hessian既有正特徵值也有負特徵值時,此臨界點很可能是鞍點;當包含零特徵值,且非零特徵值是同號時,無法確定。

一階優化演算法,如梯度下降法,只使用了函式的一階資訊,並沒有利用hessian矩陣中的曲率資訊,當hessian矩陣條件數很差時,會導致梯度下降法表現很差,可以通過對資料進行標準化處理來解決該問題。(另外,梯度下降法不會被卡在鞍點,但牛頓法,可能會)

二階優化演算法,如牛頓法, 會使用到hessian矩陣的資訊。

約束問題

假設我們希望在x的某些集合s中找f(x)的最大值或最小值,一般使用拉格朗日乘子法。

假設s

=s = \\ and\ \forall j, h^ \leq 0\}

s=第一步:我們設拉格朗日函式為:l(x

,λ,α

)=f(

x)+∑

iλig

(i)(

x)+∑

jαjh

(j)(

x)

l(x, \lambda, \alpha) = f(x) + \sum_i\lambda_ig^(x) + \sum_j\alpha_jh^(x)

l(x,λ,

α)=f

(x)+

i∑​λ

i​g(

i)(x

)+j∑

​αj​

h(j)

(x)第二步:優化min

xmax

λmax

α,α≥

0l(x

,λ,α

)min_x\ max_\ max_\ l(x,\lambda, \alpha)

minx​m

axλ​

maxα

,α≥0

​l(x

,λ,α

)第三步:使用kkt條件來尋找最優點,kkt條件是必要條件,不一定是充分條件;

數值分析 深度學習中的數值計算技巧

overflow 浮點數上溢,數值逼近無窮大時出現 浮點數溢位,不論是上溢還是下溢,會使得最終的結果 undefined 比如為 nan 或者跟真實的結果相差很大的量級 softmax 函式用於 多分類問題,各個類別的概率輸出。softmax x i exp x i n j 1exp x j sof...

數值問題 深度學習 Softmax

softmax函式 上溢和下溢數值穩定 s of tmax xi exi iex softmax x i frac e softma x xi i ex exi 問題 假設所有的x ix i xi 都等於某個常數c textbf c,理論上對所有x ix i xi 上式結果為1 n frac n1 ...

oracle 中數值的計算

運算子 含義 加 加法 加 字串相加 減 減法 乘 乘法 除 除法 mod 模 返回乙個除法的整數餘數 例如,12 5 2,這是因為 12 除以 5,餘數為 2 示例 select5 6 5 nullfromdual select5 6fromdual select5 6fromdual selec...