1. 程式人生 > >【數值分析】—— 深度學習中的數值計算技巧

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

  • underflow:浮點數下溢,數值逼近 0 時出現;
    • 0 作除數,
    • 對 0 取對數;
  • overflow:浮點數上溢,數值逼近無窮大時出現;
  • 浮點數溢位,不論是上溢還是下溢,會使得最終的結果 Undefined(比如為 NaN),或者跟真實的結果相差很大的量級;

1. softmax 函式

softmax 函式用於預測多分類問題,各個類別的概率輸出。

softmax(x)i=exp(xi)j=1nexp(xj)

{xj}j=1,,n全部相等為 c,則經過 softmax 函式的變換,各個類別的輸出均為

1/n,這是理想的情況。但在計算機浮點計算時,當 c

  • 是很大的負數時,exp(c) 逼近 0,分母逼近 0,下溢,結果未定義;
  • 是很大的正數,exp(c) 上溢;結果未定義;

上溢還是下溢均可通過如下的簡單變換解決:

z=xmaxi=1,,nxisoftmax(z)i=exp(zi)j=1nexp(zj)=softmax(x)i
  • z 中的某一項為 0,則分母中至少有一項為 1,避免了浮點數的下溢;
  • 減去最大值,避免了可能的浮點數的上溢;