AI硬體與軟體堆疊
計算softmax函數exp(xi)/Σexp(xj)時,常先從各xi減去最大值再計算,其原因下列何者正確?
- A為了把計算結果換成近似值而加快速度
- B為了必定使最大的元素變成0
- C因為結果維持不變,並且可以避免exp的值過大而溢位(變成無限大)
查看答案與解析
正確答案:C. 因為結果維持不變,並且可以避免exp的值過大而溢位(變成無限大)
exp是急遽增大的函數,例如在FP16中,x超過11左右時,exp(x)就會超過可表示的最大值。從所有的x減去同一個常數m,分子與分母都只是變為exp(-m)倍,結果不變。減去最大值後指數會小於等於0,exp的值就會收在1以下而不致溢位。這對以低精度計算的AI特別重要,在高速注意力的實作中也會用到。
- A. 結果是完全相同的。
- B. 最大元素的輸出最大,不會變成0。
- C. 正確。只是分子與分母乘上了相同的係數。