計算機算術

FP16(半精度:符号1・指数部5・仮数10ビット)でニューラルネットワークを学習させるときに問題になりやすく、損失の値を何倍かに拡大して計算する工夫(ロススケーリング)で対策するのはどれか。

  1. A仮数が長すぎて、メモリの使用量が増えること
  2. B表せる範囲が狭く、小さな勾配が0になってしまうこと
  3. C整数として扱われ、小数を表せないこと
答えと解説を見る

正解:B. 表せる範囲が狭く、小さな勾配が0になってしまうこと

FP16は指数部が5ビットしかないため、表せる正の値はおよそ6 × 10⁻⁸(非正規化数を含む)から65504までと範囲が狭くなります。学習で計算される勾配には非常に小さな値が多く、FP16ではアンダーフローして0になり、学習が進まなくなります。ロススケーリングでは損失を例えば1024倍してから逆伝播し、勾配を表せる範囲に持ち上げ、重みを更新する前に元に戻します。仮数は10ビットでFP32より短く、小数も表せます。

  • A. 仮数はFP32より短く、メモリの使用量は半分です。
  • B. 正しい。範囲が狭く、小さな勾配が0になるのを防ぐためです。
  • C. FP16は浮動小数点の形式で、小数を表せます。
この分野を解く 分野ページへ

計算機算術のほかの問題

  1. FP16(符号1・指数部5ビット(バイアス15)・仮数10ビット)で表せる最大の有限の値はいくらか。
  2. FP8の2つの形式、E4M3(指数部4・仮数3ビット)とE5M2(指数部5・仮数2ビット)の使い分けとして一般的なものはどれか。
  3. AIの推論で、重みをFP32からINT8に変換(量子化)する主な利点はどれか。
  4. 値の範囲が −6.35〜6.35 のデータを、0を中心にした対称なINT8(−127〜127)に量子化する。スケールを「最大の絶対値 ÷ 127」とすると、1.0 はどの整数で表されるか。
  5. 小さなマイコンやDSPで、浮動小数点ではなく固定小数点の演算がよく使われる主な理由はどれか。