丸め誤差とは、数値計算において無限小数や指定された桁数を超える数値を、有限のビット数で表現する際に生じる計算誤差のことです。コンピュータ内部の浮動小数点数表現では扱える精度に限界があるため、最下位桁の丸め処理によって真の値との間にズレが生じます。AIのディープラーニングなど大量の計算を行う場面で重要な影響を及ぼします。
丸め誤差とは
丸め誤差とは、コンピュータが有限の桁数で数値を表現する際に、入りきらない桁を四捨五入や切捨てなどで処理することによって生じる真の値との差のことです。
詳しく解説
コンピュータ内部では、実数を表現するために浮動小数点数が用いられます。しかし、メモリの制約から扱えるビット数(桁数)には限界があります。例えば「1/3」のような循環小数や非常に精度の高い数値を扱う際、最下位の桁を四捨五入や切り捨て、切り上げによって特定の精度内に収める処理(丸め)が行われます。この時に発生するわずかなずれが丸め誤差です。AIやディープラーニングのモデル訓練では、数百万から数十億回以上の計算が繰り返されるため、丸め誤差が蓄積して最終的なモデルの精度低下や計算の不安定化を引き起こす可能性があります。そのため、FP32(単精度)からFP16やBF16といった低精度演算へ移行する際には、丸め誤差の影響を慎重に評価することが重要です。
具体例・使われ方
身近な例として、電卓で1を3で割った後に3を掛けた際、「0.9999999」のように元の1に戻らない現象があります。AI分野では、大規模なニューラルネットワークの重みを更新する際、微小な勾配値が丸め誤差によって消滅したり、累積した誤差によって予測精度に影響が出たりする場面が挙げられます。
似た用語との違い
混同されやすい計算誤差として打切り誤差、桁落ち、情報落ちが存在します。打切り誤差は無限級数や繰り返し計算を途中で終了したことで生じる誤差です。桁落ちは値がほぼ等しい2つの数の引き算で有効桁数が減る現象を指し、情報落ちは絶対値が極端に異なる数の加減算で小さい方の数が無視される現象です。これらはいずれも浮動小数点数の計算で生じますが、丸め誤差は規定の桁数に数値を収める「丸め処理」そのものが原因である点が異なります。
注意点
丸め誤差は1回の計算では極めて微小ですが、計算回数が多くなるほど無視できない大きさに蓄積します。特にAIの学習処理や科学技術計算では、計算順序を変えるだけで丸め誤差の蓄積量が変わり、実行結果が一致しなくなる場合があります。誤差を完全に防ぐことは不可能であるため、適切なデータ型やアルゴリズムを選択して誤差を制御する必要があります。