Main Content

正味勾配と正味バイアスの精度

正味勾配および正味バイアスとは

固定小数点数は、一般的な勾配とバイアスのエンコード スキームにより表すことができます。

VV˜=SQ+B,

ここで、

  • V は、任意の精度をもつ実際値です。

  • V˜ は近似実際値です。

  • 格納された値 Q は、V をエンコードする整数です。

  • S = F2E は勾配です。

  • B はバイアスです。

キャスト演算に対しては、次のようになります。

SaQa+Ba=SbQb+Bb

または

Qa=SbQbSa+(BbBaSa),

ここで、

  • SbSa は正味勾配です。

  • BbBaSa は正味バイアスです。

正味勾配と正味バイアスの精度に関する問題の検出

精度の問題が固定小数点定数、正味勾配、および正味バイアスで発生することがあります。これは、浮動小数点から固定小数点への変換時に量子化誤差が生じるためです。これらの固定小数点定数の精度の問題により、モデル内の数値が不正確になることがあります。

モデルは、固定小数点定数の精度の問題が発生したときに警告を受けるように設定できます。

モデルは、固定小数点定数の精度の問題が発生したときに警告を受けるように設定できます。固定小数点定数の精度に関する問題が発生したときに警告を受けるには、Simulink® の [コンフィギュレーション パラメーター] ダイアログ ボックスにある [診断][型変換] ペインで利用できる以下のオプションを使用します。このパラメーターを [警告] または [エラー] に設定すると、精度の問題が発生したときに Simulink で警告が表示されるようになります。

コンフィギュレーション パラメーター指定内容既定の設定
アンダーフローの検出 固定小数点定数のアンダーフローがシミュレーション中に発生したときの診断アクション警告またはエラーは生成しません。
オーバーフローの検出固定小数点定数のオーバーフローがシミュレーション中に発生したときの診断アクション警告またはエラーは生成しません。
桁落ちの検出固定小数点定数の桁落ちがシミュレーション中に発生したときの診断アクション警告またはエラーは生成しません。

Fixed-Point Designer™ ソフトウェアでは、次の情報を提供します。

  • 精度の問題の種類: アンダーフロー、オーバーフロー、または桁落ち

  • 固定小数点定数の元の値

  • 固定小数点定数の量子化値

  • 固定小数点定数の値の誤差

  • 誤差が発生したブロック

この情報は、このブロックからの出力が正確でないことを警告するものです。可能であれば、モデル内のデータ型を変更して問題を修正してください。

固定小数点定数のアンダーフロー

固定小数点定数のアンダーフローは、定数の理想値がゼロに近すぎるため、Fixed-Point Designer ソフトウェアで検出された固定小数点定数のデータ型に十分な精度がなく、この値を表現できない場合に発生します。理想値を固定小数点データ型にキャストすると、固定小数点定数の値がゼロになります。したがって、固定小数点定数の値はその理想値とは異なります。

固定小数点定数のオーバーフロー

固定小数点定数のオーバーフローは、Fixed-Point Designer ソフトウェアによって変換される固定小数点定数のデータ型に、その理想値が妥当な精度で表現できる大きさの範囲をもたない場合に発生します。そのデータ型では、理想値が大きすぎるか小さすぎるために正確にその値を表現できません。理想値を固定小数点データ型にキャストすると、オーバーフローが発生します。たとえば、理想値が 200 で、変換されたデータ型が int8 であるとします。この場合、int8 が表現できる最大値は 127 であるので、オーバーフローが発生します。

量子化値がデータ型の精度を超えて理想値からかけ離れている場合は、Fixed-Point Designer ソフトウェアによってオーバーフロー エラーが報告されます。データ型の精度は、既定のスケーリングとほぼ同じです (詳細は、固定小数点データ型パラメーターを参照してください)。したがって、正の値の場合、Fixed-Point Designer ソフトウェアでは勾配よりも大きい誤差をオーバーフローとして取り扱います。負の値の場合は、勾配以上の誤差をオーバーフローとして取り扱います。

たとえば、int8 が表現できる最大値は 127 です。int8 の精度は 1.0 です。127.3 の理想値は、0.3 の絶対誤差で 127 に量子化されます。理想値 127.3int8 の最大表現可能値よりも大きくなりますが、量子化誤差は int8 の精度に相対して小さくなります。したがって、Fixed-Point Designer ソフトウェアではオーバーフローは報告されません。ただし、128.1 の理想値では量子化誤差は 1.1 となり、これは int8 の精度よりも大きいため、オーバーフローが発生します。

メモ

固定小数点定数のオーバーフローは、固定小数点定数の桁落ちとは異なります。桁落ちは、固定小数点定数の理想値が現在のデータ型とスケーリングの範囲内にあっても、ソフトウェアがこの値を正確に表現できないときに発生します。

固定小数点定数の桁落ち

固定小数点定数の桁落ちは、Fixed-Point Designer ソフトウェアによって変換される固定小数点定数のデータ型が、その値を正確に表現するだけの精度をもたない場合に発生します。その結果、量子化された値は理想値と異なります。この動作の例は、固定小数点定数の桁落ちの検出を参照してください。

メモ

固定小数点定数の桁落ちは、固定小数点定数のオーバーフローとは異なります。オーバーフローは、パラメーターのデータ型の範囲、つまりパラメーターが表現できる最大値が、パラメーターの理想値よりも小さいときに発生します。

関連するトピック