電腦算術
以FP16(半精度:符號1・指數部分5・尾數10位元)訓練類神經網路時容易發生問題,而以將損失值放大數倍後再計算的方法(損失縮放,loss scaling)來因應的是下列何者?
- A尾數過長,使記憶體使用量增加
- B可表示的範圍狹窄,使微小的梯度變成0
- C被當作整數處理,無法表示小數
查看答案與解析
正確答案:B. 可表示的範圍狹窄,使微小的梯度變成0
FP16的指數部分只有5位元,因此可表示的正值約從6 × 10⁻⁸(含非正規化數)到65504,範圍狹窄。訓練中計算出的梯度有許多非常小的值,在FP16中會發生下溢而變成0,使訓練無法進行。損失縮放是先將損失乘以例如1024倍之後再進行反向傳播,把梯度提升到可表示的範圍內,並在更新權重之前還原。尾數為10位元,比FP32短,且也能表示小數。
- A. 尾數比FP32短,記憶體使用量為一半。
- B. 正確。為了防止範圍狹窄而使微小的梯度變成0。
- C. FP16是浮點數格式,可以表示小數。