(57)【要約】【課題】固定小数点を用いた学習における学習精度を向上させる演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供する。【解決手段】演算実行部１０１は、小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す。スケールファクタ算出部１０２は、各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し演算実行部１０１に提供する。オフセット算出部１０３は、次回の小数点位置情報と以前の回の小数点位置情報との比較結果を基に調整量を算出して演算実行部１０１に提供する。【選択図】図４
2020190901.tif 000002
【特許請求の範囲】
【請求項１】
小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す演算実行部と、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し前記演算実行部に提供する取得部と、
次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し前記演算実行部に提供する調整量算出部と
を備えたことを特徴とする演算処理装置。
【請求項２】
前記調整量算出部は、前記演算実行部により前記固定小数点演算が所定回数繰り返される毎に、前記調整量の算出及び提供を行うことを特徴とする請求項１に記載の演算処理装置。
【請求項３】
前記小数点位置情報は、前記固定小数点演算で用いる複数のビットで表される固定小数点数における少数点以下を表すビットのうちの最下位ビットを指定する実数であることを特徴とする請求項１又は２に記載の演算処理装置。
【請求項４】
前記小数点位置情報は、２の冪数で表されることを特徴とする請求項１〜３のいずれか一つに記載の演算処理装置。
【請求項５】
前記演算実行部は、前記取得部から提供された前記小数点位置情報の冪数に前記調整量を加えて前記固定小数点演算に用いる調整後小数点位置情報とすることを特徴とする請求項１〜４のいずれか一つに記載の演算処理装置。
【請求項６】
前記取得部は、各回の演算における固定小数点表現が行われる前の計算結果の統計情報から前記小数点位置情報を取得することを特徴とする請求項１〜５のいずれか一つに記載の演算処理装置。
【請求項７】
同種の固定小数点演算を複数回繰り返す演算処理装置の制御プログラムであって、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し
次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し、
次回の前記小数点位置情報及び前記調整量を用いて次回の前記固定小数点演算を実行する
処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御プログラム。
【請求項８】
同種の固定小数点演算を複数回繰り返す演算処理装置の制御方法であって、
各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し
次回の前記小数点位置情報と既に取得した以前の回の前記小数点位置情報との比較結果を基に調整量を算出し、
次回の前記小数点位置情報及び前記調整量を用いて次回の前記固定小数点演算を実行する
処理を前記演算処理装置に実行させることを特徴とする演算処理装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法に関する。
【背景技術】
【０００２】
ニューラルネットワークを多層に拡張したＤｅｅｐ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋ（ＤＮＮ）は、従来困難であった問題に適用できることが明らかとなり、様々な分野への適用が期待される。ここで、ニューラルネットワークとは脳の神経細胞（ニューロン）を機械的に模したものである。
【０００３】
ニューラルネットワークは、全体で１つの関数になっており、入力が与えられれば、その入力にしたがって決まった値を出力する。ニューラルネットワークが既存のプログラムと異なる箇所は、入力に対して教師信号とも呼ばれる目的の値が与えられれば、その目的の値に合わせて出力する値を目的に近づけるように調整することができる点である。ニューラルネットワークには、内部に多数のパラメタが存在し、それらのパラメタの値を調整することにより、目的とする関数の形を実現していく。
【０００４】
そして、ニューラルネットワークの計算は全て数学的に表現できるため、ニューラルネットワークの出力の評価結果に対する各パラメタの偏微分を求めることができる。ここで、評価結果とは、２乗誤差などである。各パラメタに対して、評価結果が小さくなる方向、すなわち、負の偏微分の方向にパラメタを変化させて評価結果を小さくすることで、ニューラルネットワークが目的の関数の形に近づく。ここで、各パラメタの偏微分は、一度に求めることは困難であるが、誤差逆伝播法と呼ばれる方法により、ニューラルネットワークにおける出力側の層から入力側の層へと機械的に求めることができる。このような多層のニューラルネットワークによる機械的学習手法が、深層学習と呼ばれる。深層学習においては、乗算、積和演算、ベクトル乗算を含む様々な演算が実行される。
【０００５】
ところで、深層学習では、個々の演算精度への要求は、他のコンピュータ処理ほど厳密ではない。例えば、従来の信号処理等では、プログラマは極力桁あふれを発生させないようにコンピュータプログラムを開発する。一方、深層学習では、大きな値がある程度飽和することは許容される。深層学習では、複数の入力データを畳み込み演算するときの係数（重み）の調整が主な処理となり、入力データのうち、極端なデータは重視されないことが多いからである。また、大量のデータを繰り返し用いて係数を調整するため、一度飽和された値も、学習の進行に合わせて桁調整を行なうことで、飽和されずに係数調整に反映できるようになるためである。
【０００６】
そこで、このような深層学習の特性を考慮し、深層学習用の演算処理装置のチップ面積の削減、電力性能の向上等を図るため、浮動小数点数を用いないで、固定小数点数による整数演算を用いることが考えられる。浮動小数点数演算よりも整数演算の方が回路構成を簡素にできるからである。
【０００７】
しかしながら、固定小数点数は、ダイナミックレンジが狭いので、浮動小数点数より演算精度が劣化する場合がある。したがって、深層学習においても、小さな値を表現する精度、すなわち、有効桁数について、配慮が求められる。このため、固定小数点数を拡張した技術が提案されている。
【０００８】
具体的には、深層学習では、表現されるデータの範囲が、データの種類や学習の経過により変化する。そこで、固定小数点数を用いて演算を行う場合、小数点位置を表すスケールファクタが適切に調整されることが好ましい。スケールファクタとは、元の小数表現と量子化した整数表現、すなわち固定小数点数で表現されたデータとを繋ぎ合わせる乗数である。固定小数点表現は、元の値に対してスケールファクタ２ω（ωは整数）が掛けられて、小数部が切り捨てられた符号付整数値として表現される。例えば、値ｘの固定小数点表現は、Ｒ（ｘ，ω）はＲ（ｘ，ω）＝ｃｅｉｌ（ｘ×２ω）と表される。ここで、ｃｅｉｌ関数は、小数点以下の切り捨てを行う関数である。この場合、２ωがスケールファクタである。例えば、深層学習におけるイテレーション毎に計算結果のビット位置に関する統計情報を取得し、取得した統計情報に基づいてスケールファクタを決定する従来技術がある。
【０００９】
このスケールファクタを決定する従来技術では、以下の手順でスケールファクタの更新が行われる。まず、入力データから出力データが計算される。そして、全ての出力データを生成し終えると統計情報を解析し、イテレーションで参照されるスケールファクタが更新される。更新されたスケールファクタは、次のイテレーションにおけるデータの出力時に使用される。
【００１０】
なお、固定小数点演算の技術として、固定小数点精度でニューラルネットワークの処理を行うが、重み値は浮動小数点精度で保持し、重み更新時に浮動小数点演算を行う従来技術がある。また、画像処理において周辺画素値の平均値を固定小数点演算で求める際に平均値を求める範囲に応じて小数点位置を決定する従来技術がある。また、音声信号のデジタル処理において、処理対象の信号の平均値に基づいて固定小数点演算の小数点位置を求める従来技術がある。
【先行技術文献】
【特許文献】
【００１１】
【特許文献１】特開平７−８４９７５号公報
【特許文献２】特開２００８−０５９２８７号公報
【特許文献３】特開平４−１９０３９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１２】
しかしながら、上述した前段のイテレーションの統計情報から求めたスケールファクタを次のイテレーションの出力に用いる方法では、統計情報を取得するイテレーションとその統計情報に基づいて推定したスケールファクタを使用するイテレーションとが異なる。生成されるデータの分布がイテレーション間で異なる場合、推定したスケールファクタでは正しく値を表すことが困難である。
【００１３】
例えば、学習の初期段階では値の分布の変化が大きい。このため、学習の初期段階では、固定小数点表現の場合にはオーバーフローが発生する確率が上昇し精度を落とす要因となる。そこで、学習の初期段階では、推定されたスケールファクタにオフセットを加えて固定小数点数の上位桁に余裕を持たせることが好ましい。このようにすることで、オーバーフローを抑制し精度を維持することができる。逆に、学習がある程度進むと値の分布の変化が小さくなる。このため、スケールファクタにオフセットによる調整を加えなくても、固定小数点表現を行うことができる。
【００１４】
このように、固定小数点表現における適切な小数点位置は学習の経過に依存して変化する。このため、従来の前段のイテレーションの統計情報から求めたスケールファクタを次のイテレーションの出力に用いて固定小数点表現を行う方法では、固定小数点数を用いた学習における学習精度を向上させることは困難である。
【００１５】
また、固定小数点精度でのニューラルネットワーク処理で重み値に関しては浮動小数点数を用いる従来技術では、学習中のデータにしたがって小数点位置を変化させることは行われておらず、学習精度を向上させることは困難である。また、周辺画素値の平均値を求める範囲に応じて小数点位置を決定する従来技術では、計算式を用いて小数点位置を求めるため、実際の計算に則した小数点位置を得ることは困難であり、学習精度を向上させることは困難である。また、処理対象の信号の平均値に基づいて固定小数点演算の小数点位置を求める従来技術では、計算結果の分布に応じて小数点位置を決定するため適切な小数点位置の決定は困難であり、学習精度を向上させることは困難である。
【００１６】
開示の技術は、上記に鑑みてなされたものであって、固定小数点を用いた学習における学習精度を向上させる演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法を提供することを目的とする。
【課題を解決するための手段】
【００１７】
本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の一つの態様において、演算実行部は、小数点位置情報及び調整量を取得し、取得した前記小数点位置情報及び前記調整量を用いて同種の固定小数点演算を複数回繰り返す。取得部は、各回の演算に関する統計情報から回毎に次回の小数点位置情報を取得し前記演算実行部に提供する。調整量算出部は、次回の前記小数点位置情報と以前の回の前記小数点位置情報との比較結果を基に調整量を算出し前記演算実行部に提供する。
【発明の効果】
【００１８】
１つの側面では、本発明は、固定小数点を用いた学習における学習精度を向上させることができる。
【図面の簡単な説明】
【００１９】
【図１】図１は、実施例に係る深層学習システムの概略構成図である。
【図２】図２は、ホストマシンの一例のハードウェア構成図である。
【図３】図３は、深層学習実行装置の一例のハードウェア構成図である。
【図４】図４は、実施例に係る深層学習実行装置のブロック図である。
【図５】図５は、演算処理の概要を示す図である。
【図６】図６は、通常の演算処理時のイテレーション間の各処理の関係を表す図である。
【図７】図７は、オフセット更新時のイテレーション間の各処理の関係を表す図である。
【図８】図８は、深層学習全体の処理のフローチャートである。
【図９】図９は、学習処理の実行におけるオフセット処理及び通常の演算処理の切り替えのフローチャートである。
【図１０】図１０は、オフセット更新処理のフローチャートである。
【図１１】図１１は、スケールファクタの冪指数の差をオフセットとする場合のオフセット算出処理のフローチャートである。
【図１２】図１２は、通常の演算処理のフローチャートである。
【図１３】図１３は、オフセットとして用いることが可能な指標のいくつかの例を表した図である。
【図１４】図１４は、スケールファクタの冪指数の最小値から最大値を減算した値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【図１５】図１５は、スケールファクタの冪指数の最小値から最小値を減算した値の半分の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【図１６】図１６は、スケールファクタの冪指数の平均値から最大値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【図１７】図１７は、スケールファクタの冪指数の最小値から平均値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【図１８】図１８は、スケールファクタの冪指数の標準偏差の符号を反転させて小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【発明を実施するための形態】
【００２０】
以下に、本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する演算処理装置、演算処理装置の制御プログラム及び演算処理装置の制御方法が限定されるものではない。
【実施例】
【００２１】
図１は、実施例に係る深層学習システムの概略構成図である。本実施例では、深層学習システムが、ホストマシン１、深層学習実行装置２及び利用者端末３を有する。
【００２２】
ホストマシン１と深層学習実行装置２は、専用インタフェースで接続される。利用者は、利用者端末３を用いてホストマシン１に接続し、深層学習実行装置２を操作して深層学習を実行させる。ホストマシン１は、利用者端末３から入力された利用者からの指示にしたがい、深層学習実行装置２が実行するプログラムを作成して深層学習実行装置２へ送信する。深層学習実行装置２は、送信されたプログラムを実行し結果のデータを生成する。
【００２３】
図２は、ホストマシンの一例のハードウェア構成図である。ホストマシン１は、例えば、高速入出力インタフェース１１、プロセッサ１２、ＲＡＭ（Random  Access  Memory）１３、内部バス１４、ＨＤＤ（Hard  Disk  Drive）１５及び低速入出力インタフェース１６を有する。
【００２４】
プロセッサ１２は、高速入出力インタフェース１１及びＲＡＭ１３に接続される。また、プロセッサ１２は、内部バス１４を介してＨＤＤ１５及び低速入出力インタフェース１６に接続される。プロセッサ１２は、ＨＤＤ１５に格納されたプログラムを読み出してＲＡＭ１３に展開して実行する。
【００２５】
高速入出力インタフェース１１は、プロセッサ１２とホストマシン１の外部にある深層学習実行装置２とを接続する。高速入出力インタフェース１１は、例えば、ＰＣＩ（Peripheral  Component  Interconnect）  Ｅｘｐｒｅｓｓなどのプロトコルを用いて通信を行う。
【００２６】
ＲＡＭ１３は、プロセッサ１２が実行するプログラムやデータを格納する。ＲＡＭ１３は、例えば、ＤＤＲ（Double  Data  Rate）４−ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）である。
【００２７】
内部バス１４は、プロセッサ１２と比較して低速な周辺機器とプロセッサ１２とを接続する。そして、内部バス１４は、周辺機器とプロセッサ１２との間の通信を中継する。ＨＤＤ１５は、プロセッサ１２が実行するプログラムやデータを永続的に格納する。
【００２８】
低速入出力インタフェース１６は、利用者端末３とホストマシン１との通信におけるインタフェースである。低速入出力インタフェース１６は、例えば、ＵＳＢ（Universal  Serial  Bus）によるキーボード及びマウスとの通信や、イーサネット（登録商標）によるネットワーク越しの通信に使用される。
【００２９】
図３は、深層学習実行装置の一例のハードウェア構成図である。深層学習実行装置２は、例えば、高速入出力インタフェース２１、制御部２２、深層学習実行プロセッサ２３、メモリアクセスコントローラ２４及び内部ＲＡＭ２５を有する。この深層学習実行装置２が、「演算処理装置」の一例にあたる。
【００３０】
深層学習実行プロセッサ２３は、制御部２２及びメモリアクセスコントローラ２４に接続する。深層学習実行プロセッサ２３は、制御部２２を介してホストマシン１から提供されたプログラム及びデータを受信する。そして、深層学習実行プロセッサ２３は、受信したプログラム及びデータを用いて深層学習の処理を実行する。
【００３１】
高速入出力インタフェース２１は、ホストマシン１との通信インタフェースである。高速入出力インタフェース２１は、例えば、ＰＣＩ  Ｅｘｐｒｅｓｓなどのプロトコルを用いて通信を行う。
【００３２】
制御部２２は、ホストマシン１からの指令にしたがって、深層学習実行プロセッサ２３の駆動や内部ＲＡＭ２５に対するプログラム及びデータの転送を行う。
【００３３】
メモリアクセスコントローラ２４は、制御部２２及び深層学習実行プロセッサ２３からの信号を選択して、メモリアクセスのためのプロトコルにしたがって内部ＲＡＭ２５に対するメモリアクセスを実行する。
【００３４】
内部ＲＡＭ２５は、深層学習実行プロセッサ２３が実行するプログラム、深層学習の処理対象のデータ及び深層学習の処理結果のデータを格納する。内部ＲＡＭ２５としては、例えば、ＤＤＲ４−ＳＤＲＡＭ、より高速なＧＤＤＲ（Graphics  Double  Data  Rate）５のメモリ、又はより広帯域のＨＢＭ（High  Bandwidth  Memory）２のメモリ等が用いられる。
【００３５】
次に、図４を参照して、本実施例に係る深層学習実行装置２による深層学習処理について説明する。図４は、実施例に係る深層学習実行装置のブロック図である。
【００３６】
深層学習実行装置２は、演算実行部１０１、スケールファクタ算出部１０２及びオフセット算出部１０３を有する。これらの各部は、図３に示した深層学習実行プロセッサ２３が、内部ＲＡＭ２５の上にプログラムを展開して実行することで実現される。
【００３７】
演算実行部１０１は、同種の固定小数点演算を複数回繰り返して学習処理を行い深層学習を実行する。演算実行部１０１は、学習処理として具体的には、学習データをミニバッチと呼ばれる集合に分割し、分割された学習データに対して順伝播処理、逆伝播処理、パラメタ更新処理を実行する。
【００３８】
演算実行部１０１は、順伝播処理、逆伝播処理、パラメタ更新処理は、多層のニューラルネットワークにおいて行われる。それぞれの階層で実行される計算の内容は異なるが、演算実行部１０１は、例えば、畳み込み（Convolution）演算及び内積演算とも呼ばれるフルコネクト（Full  Connect）演算を実行する。また、演算実行部１０１は、例えば、正規化（Batch  Normalization）、活性化演算とも呼ばれるＲｅＬＵ（Rectified  Linear  Unit）演算、プーリング（Pooling）演算、ソフトマックス（Softmax）演算及び誤差評価演算などを実行する。例えば、畳み込み演算は、フィルタ演算とも呼ばれ、主に画像データに対して実行される。
【００３９】
畳み込み演算では、入力及び出力の全てのチャネルの組み合わせに対してフィルタが用意されており、全ての入力チャネルの結果の合計にバイアスを加えることで出力値が算出される。また、フルコネクト演算は、内積演算とも呼ばれる。フルコネクト演算では、入力及び出力全ての組に対して重みが定義されており、全ての入力とその重みの積とを求めて、それらの和にバイアスを加えることで出力値が算出される。
【００４０】
例えば、画像分類の場合、演算実行部１０１は、ニューラルネットワークにおける初めのいくつかの層は畳み込み演算、ＲｅＬＵ演算及びプーリング演算を行う。その後、演算実行部１０１は、フルコネクト演算及びＲｅＬＵ演算を行い、最後に、ソフトマックス演算を行って入力画像に対する分類カテゴリの確率を出力する。
【００４１】
ここで、１つのバッチに対する順伝播処理、逆伝播処理及びパラメタ更新処理をまとめた単位が、１イテレーションと呼ばれる。また、全ての学習データに対する学習処理の単位が、１エポックと呼ばれる。１エポックは複数のイテレーションを含む。演算実行部１０１は、全てのミニバッチを処理し終えたら学習率と呼ばれるパラメタを更新し、再び同じデータに対して学習処理を実行する。このイテレーションで実行される演算が、複数回繰り返される「同種の固定小数点演算」の一例にあたる。
【００４２】
図５は、演算処理の概要を示す図である。演算実行部１０１は、図５に示す流れで各イテレーションにおける演算を繰り返す。演算実行部１０１は、各イテレーションにおける順伝播処理、逆伝播処理及びパラメタ更新処理において図５で示す固定小数点演算を実行する。
【００４３】
具体的には、演算実行部１０１は、入力Ｄ１〜ＤＮのそれぞれを取得する。また、演算実行部１０１は、前回のイテレーションで取得した統計情報から求められたスケールファクタを取得する。ここで、本実施例で用いるスケールファクタは、２ω（ωは整数）で表される値である。演算実行部１０１は、固定小数点表現されていない数に対してスケールファクタである２ωを乗算し、さらに小数部を切り捨てて符号付整数値として表現すことで、元の数の固定小数点表現を行う。例えば、演算実行部１０１は、値ｘの固定小数点表現であるＲ（ｘ，ω）を、Ｒ（ｘ，ω）＝ｃｅｉｌ（ｘ×２ω）により求める。このスケールファクタが、「小数点位置情報」の一例にあたる。本実施例に係るスケールファクタは、ビットを用いて表される固定小数点数における小数点以下を表すビットのうちの最下位ビットを指定する実数である。ただし、スケールファクタは、固定小数点数における小数点位置を表す情報であれば、他の表現を用いることもできる。
【００４４】
さらに、演算実行部１０１は、オフセットをオフセット算出部１０３から取得する。オフセットは、固定小数点表現を行う場合に上位桁に余裕を持たせるための値である。オフセットは、定期的に更新される値である。
【００４５】
そして、演算実行部１０１は、通常の演算処理の場合、入力Ｄ１〜ＤＮに対して固定小数点演算Ｐ１を実行する。具体的には、演算実行部１０１は、入力Ｄ１〜ＤＮを用いて演算を行い固定小数点表現前の演算結果を求める。例えば、８ビットの入力データを用いて乗算を行う演算の場合、演算実行部１０１は、演算を実行して演算結果を１６ビットのレジスタに格納する。すなわち、この状態では、入力データに対する情報の欠落は発生しない。そして、演算実行部１０１は、固定小数点表現前の演算結果をスケールファクタ算出部１０２へ出力する。その後、演算実行部１０１は、演算結果に対してスケールファクタの冪指数にオフセットを加えた値を冪指数として用いて、出力データの固定小数点表現を行い出力する固定小数点数を算出する。その後、演算実行部１０１は、算出した固定小数点数を固定小数点演算Ｐ１の演算結果として出力する。
【００４６】
例えば、スケールファクタが２ωであれば、スケールファクタの冪指数はωである。さらに、オフセットがｄの場合、演算実行部１０１は、ω＋ｄを固定小数点表現に用いる冪指数とする。すなわち、演算実行部１０１は、値ｘの固定小数点表現であるＲ（ｘ，ω）をｃｅｉｌ（ｘ×２ω＋ｄ）として算出する。このスケールファクタの冪指数にオフセットを加えた値が、「調整後小数点位置情報」の一例にあたる。
【００４７】
演算実行部１０１は、図５に示した固定小数点演算Ｐ１の演算結果として出力したデータを次のイテレーションの入力として演算を繰り返す。そして、演算実行部１０１は、指定回数のイテレーションの実行を終えると学習を終了する。
【００４８】
一方、演算実行部１０１は、予め決められたオフセット更新イテレーションに達するとオフセット更新処理を実行する。ここで、繰り返されるイテレーションのうち、１つ又は複数のイテレーションがオフセット更新イテレーションとして決定される。例えば、オフセット更新イテレーションは、所定回数毎のイテレーションとされる。本実施例では、オフセット更新イテレーションは、１０万イテレーション毎に繰り返される。他にも、例えば、１エポック毎の間隔でオフセット更新イテレーションが繰り返されてもよい。
【００４９】
オフセット更新処理の場合、演算実行部１０１は、入力Ｄ１〜ＤＮを用いて演算を行い固定小数点表現前の計算結果を求める。そして、演算実行部１０１は、固定小数点表現前の計算結果をオフセット算出部１０３へ出力する。その後、演算実行部１０１は、更新されたオフセットをオフセット算出部１０３から取得する。そして、演算実行部１０１は、スケールファクタ算出部１０２から取得したスケールファクタ及びオフセット算出部１０３から取得した新たなオフセットを用いて、入力Ｄ１〜ＤＮに対して固定小数点演算Ｐ１を実行して演算結果を出力する。
【００５０】
図４に戻って説明を続ける。スケールファクタ算出部１０２は、演算実行部１０１が算出した固定小数点表現前の計算結果を取得する。そして、スケールファクタ算出部１０２は、取得した固定小数点表現前の計算結果を用いて図５に示すスケールファクタ更新処理Ｐ２を実行する。以下にスケールファクタ更新処理Ｐ２の詳細を説明する。
【００５１】
スケールファクタ算出部１０２は、演算実行部１０１から取得した固定小数点表現前の計算結果の統計情報を求める。本実施例では、スケールファクタ算出部１０２は、非符号となる最上位ビット位置（ＭＳＢ：Most  Significant  Bit）のヒストグラムを求めて、非符号となる最上位ビット位置の分布を統計情報として取得する。統計情報には、他にも、非ゼロの最下位ビット位置の分布、非符号となる最上位ビットの最大値、非ゼロの最下位ビット位置の最小値などがある。この固定小数点表現前の計算結果の統計情報が、「各回の演算に関する統計情報」の一例にあたる。
【００５２】
次に、スケールファクタ算出部１０２は、求めた統計情報を解析して次回のイテレーションで使用するスケールファクタを算出する。その後、スケールファクタ算出部１０２は、算出したスケールファクタを次回のイテレーションで使用するスケールファクタとして演算実行部１０１へ出力する。また、オフセット更新イテレーションの場合、スケールファクタ算出部１０２は、算出したスケールファクタをオフセット算出部１０３へ出力する。このスケールファクタ算出部１０２が、「取得部」の一例にあたる。
【００５３】
オフセット算出部１０３は、オフセット更新イテレーションに達すると、そのイテレーションの入力データから求められた固定小数点表現前の演算結果を演算実行部１０１から取得する。また、オフセット算出部１０３は、そのイテレーションで求められたスケールファクタの入力をスケールファクタ算出部１０２から受ける。そして、オフセット算出部１０３は、図５に示すオフセット更新処理Ｐ３を実行してオフセットを更新する。ここで、本実施例では、オフセット更新イテレーションは、１０万イテレーション毎に繰り返される。すなわち、オフセット算出部１０３は、１０万イテレーション毎にオフセットの更新を行う。この１０万イテレーションが、「所定回」の一例にあたる。以下に、オフセット更新処理Ｐ３の詳細を説明する。
【００５４】
オフセット算出部１０３は、取得した固定小数点表現前の計算結果を解析して統計情報を求める。そして、オフセット算出部１０３は、求めた統計情報からスケールファクタを求める。ここで、このスケールファクタの求め方は、スケールファクタ算出部１０２による方法と同じでよい。次に、オフセット算出部１０３は、今回の入力データから求めたスケールファクタの冪指数とスケールファクタ算出部１０２から取得したスケールファクタの冪指数の差を求めて新たなオフセットとする。その後、オフセット算出部１０３は、新たに求めたオフセットを演算実行部１０１へ出力する。このオフセット算出部１０３が、「調整量算出部」の一例にあたり、オフセットが「調整量」の一例にあたる。
【００５５】
ここで、本実施例に係るオフセットについて説明する。例えば、本実施例では、値ｘの固定小数点表現であるＲ（ｘ，ω）は、Ｒ（ｘ，ω）＝ｃｅｉｌ（ｘ×２ω）と表される。この場合、２の冪数であるωの値を減らすことで固定小数点表現を行う場合の上位桁に余裕を持たせることができる。例えば、１０進表現の０．７５を２進数の固定小数点表現について説明する。０．７５は、２進表現では、０．１１と表される。ω＝７であれば、Ｒ（０．７５，７）＝ｃｅｉｌ（０．７５×２７）＝９６である。これに対して、ω＝４であれば、Ｒ（０．７５，４）＝ｃｅｉｌ（０．７５×２４）＝１２である。すなわち、ωを７から４に減らすことで、ビットで表した場合、上位桁の猶予を３ビット増やすことができる。すなわち、オフセットに応じた値をスケールファクタの冪指数から減らすことで、上位桁に余裕を与えることができ、桁あふれを回避することができる。
【００５６】
ここで、図６及び７を参照して、各イテレーションにおける処理の関係を説明する。図６は、通常の演算処理時のイテレーション間の各処理の関係を表す図である。また、図７は、オフセット更新時のイテレーション間の各処理の関係を表す図である。ここでは、ｎ−１番目のイテレーション＃ｎ−１とｎ番目のイテレーション＃ｎを例に説明する。
【００５７】
通常の演算処理の場合、図６に示すように、イテレーション＃ｎ−１では、固定小数点演算Ｐ１１が実行される。さらに、固定小数点演算Ｐ１１の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理Ｐ２１が実行される。そして、イテレーション＃ｎでは、固定小数点演算Ｐ１１により出力されたデータを入力データとして、スケールファクタ更新処理Ｐ２１で算出されたスケールファクタ及び前のイテレーションでも用いたオフセットを用いて、固定小数点演算Ｐ１２が実行される。さらに、固定小数点演算Ｐ１２の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理Ｐ２２が実行される。スケールファクタ更新処理Ｐ２２により算出されたスケールファクタは、次のイテレーションで使用される。
【００５８】
このように、通常の演算処理の場合、１つ前のイテレーションで算出されたスケールファクタを用いて、次のイテレーションで固定小数点表現が実行される。ここで、イテレーション間で生成されるデータの分布、すなわち統計情報が異なる場合、１つ前のイテレーションで算出されたスケールファクタを用いると、既存のオフセットを用いても桁あふれなどが発生して、正しく値を表すことができないおそれがある。
【００５９】
そこで、オフセットを調整することで、統計情報が異なる状態が発生した場合の桁あふれなどを抑制して、正しい値を求めることが好ましい。例えば、本実施例のように、１０万イテレーション毎にオフセット更新イテレーションを設けて、オフセットを更新することで、その時点での統計情報に合わせたオフセットを設定することができる。
【００６０】
例えば、イテレーション＃ｎがオフセット更新イテレーションの場合、図７に示すように、イテレーション＃ｎでは、固定小数点演算Ｐ１１により出力されたデータを用いて統計情報算出用演算Ｐ４１が行われる。ここで、統計情報算出用演算Ｐ４１は、固定小数点演算Ｐ１２における固定小数点表示前の計算結果を算出する演算である。次に、イテレーション＃ｎで算出される固定小数点表示前の計算結果からスケールファクタを算出するスケールファクタ取得処理Ｐ４２が実行される。そして、イテレーション＃ｎ−１で求められたスケールファクタとイテレーション＃ｎ−１で求められたスケールファクタとを比較してオフセットを再評価してオフセットを更新するオフセット再評価処理Ｐ３１が実行される。その後、通常の演算処理に戻り、固定小数点演算Ｐ１１の出力を入力データとして、スケールファクタ更新処理Ｐ２１で算出されたスケールファクタ及びオフセット再評価処理Ｐ３１で求められた新たなオフセットを用いて、固定小数点演算Ｐ１２が実行される。さらに、固定小数点演算Ｐ１２の中で求められた固定小数点表現前の演算結果を用いてスケールファクタ更新処理Ｐ２２が実行される。スケールファクタ更新処理Ｐ２２により算出されたスケールファクタは、次回のイテレーションで使用される。
【００６１】
以上のように、オフセット更新イテレーションである図７のイテレーション＃ｎでは、紙面に向かって一点鎖線より上のオフセット更新処理が実行される。その後、イテレーション＃ｎでは、オフセット更新処理で求められた新たなオフセットを用いて、一点鎖線より下の通常の演算処理が実行される。
【００６２】
次に、図８及び９を参照して、深層学習の全体的な流れを説明する。図８は、深層学習全体の処理のフローチャートである。図９は、学習処理の実行におけるオフセット処理及び通常の演算処理の切り替えのフローチャートである。
【００６３】
深層学習実行装置２は、プログラム及び学習データの入力をホストマシン１から受ける。そして、深層学習実行装置２は、学習データをミニバッチに分割して、順伝播処理、逆伝播処理及びパラメタ更新処理を含む学習処理を実行する（ステップＳ１）。この１回の学習処理が１イテレーションにあたる。
【００６４】
その後、深層学習実行装置２は、指定回数学習処理を実行したか否かを判定する（ステップＳ２）。指定回数の学習処理の実行が完了していない場合（ステップＳ２：否定）、深層学習実行装置２は、ステップＳ１へ戻る。これに対して、指定回数の学習処理の実行が完了した場合（ステップＳ２：肯定）、深層学習実行装置２は、深層学習を終了する。
【００６５】
このように、深層学習実行装置２は、全体の処理として、学習データ全体に対する処理を指定回数実行する。また、実装によっては、深層学習実行装置２が実行する深層学習は、誤差として表される学習結果の評価値が一定の範囲内に収まったことを以て学習終了の条件としてもよい。
【００６６】
図９に示した各処理は、図８におけるステップＳ１で実行される処理の一例にあたる。
【００６７】
深層学習実行装置２は、現在のイテレーションがオフセット更新イテレーションか否かを判定する（ステップＳ２１）。現在のイテレーションがオフセット更新イテレーションでない場合（ステップＳ２１：否定）、深層学習実行装置２は、ステップＳ２３へ進む。
【００６８】
これに対して、現在のイテレーションがオフセット更新イテレーションの場合（ステップＳ２１：肯定）、深層学習実行装置２は、オフセット更新処理を実行する（ステップＳ２２）。
【００６９】
その後、深層学習実行装置２は、１つ前のイテレーションで求められたスケールファクタ及びオフセットを用いて通常の演算処理を実行する（ステップＳ２３）。
【００７０】
次に、図１０を参照して、オフセット更新処理の流れを説明する。図１０は、オフセット更新処理のフローチャートである。図１０に示す各処理は、図９におけるステップＳ２２で実行される処理の一例にあたる。
【００７１】
オフセット算出部１０３は、自己が有する統計情報を初期化する（ステップＳ１０１）。
【００７２】
次に、オフセット算出部１０３は、１つ前のイテレーションの統計情報から算出されたスケールファクタをスケールファクタ算出部１０２から取得する（ステップＳ１０２）。
【００７３】
演算実行部１０１は、１つ前のイテレーションで実行された固定小数点演算の出力を入力データとして取得する（ステップＳ１０３）。
【００７４】
次に、演算実行部１０１は、取得した入力データを用いて計算を実行する（ステップＳ１０４）。これにより、演算実行部１０１は、固定小数点表現前の計算結果を取得する。そして、演算実行部１０１は、算出した固定小数点表現前の計算結果をオフセット算出部１０３へ出力する。
【００７５】
オフセット算出部１０３は、現在のイテレーションにおける固定小数点表現前の計算結果の入力を演算実行部１０１から受ける。次に、オフセット算出部１０３は、取得した固定小数点表現前の計算結果から得られる統計情報を、その時点で有する統計情報に加えて統計情報を更新する（ステップＳ１０５）。
【００７６】
次に、オフセット算出部１０３は、全ての入力データの処理が完了したか否かを判定する（ステップＳ１０６）。処理を終えていない入力データが残っている場合（ステップＳ１０６：否定）、オフセット算出部１０３は、ステップＳ１０３へ戻る。
【００７７】
これに対して、全ての入力データの処理が完了した場合（ステップＳ１０６：肯定）、オフセット算出部１０３は、現在のイテレーションの統計情報に基づくスケールファクタを算出する（ステップＳ１０７）。
【００７８】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報に基づくスケールファクタの冪指数と１つ前のイテレーションの統計情報に基づくスケールファクタの冪指数との差を求めてオフセットを算出する（ステップＳ１０８）。その後、オフセット算出部１０３は、求めた新しいオフセットを演算実行部１０１へ出力する。
【００７９】
ここで、図１１を参照して、本実施例に係るオフセット算出処理の流れを説明する。図１１は、スケールファクタの冪指数の差をオフセットとする場合のオフセット算出処理のフローチャートである。
【００８０】
オフセット算出部１０３は、１つ前のイテレーションで得られたスケールファクタの冪指数をω１とする（ステップＳ１１１）。
【００８１】
オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ１１２）。
【００８２】
そして、オフセット算出部１０３は、ω−ω１によりオフセットを算出する（ステップＳ１１３）。
【００８３】
次に、図１２を参照して、通常の演算処理の流れを説明する。図１２は、通常の演算処理のフローチャートである。図１２に示す各処理は、図９におけるステップＳ２３で実行される処理の一例にあたる。
【００８４】
スケールファクタ算出部１０２は、自己が有する統計情報を初期化する（ステップＳ２０１）。
【００８５】
次に、演算実行部１０１は、前回のイテレーションの統計情報から算出されたスケールファクタをスケールファクタ算出部１０２から取得する（ステップＳ２０２）。
【００８６】
次に、演算実行部１０１は、取得したスケールファクタの冪指数にオフセットを加える（ステップＳ２０３）。
【００８７】
演算実行部１０１は、前回のイテレーションで実行された固定小数点演算の出力を入力データとして取得する（ステップＳ２０４）。
【００８８】
次に、演算実行部１０１は、入力データを用いて計算を実行する（ステップＳ２０５）。これにより、演算実行部１０１は、固定小数点表現前の計算結果を取得する。そして、演算実行部１０１は、算出した固定小数点表現前の計算結果をスケールファクタ算出部１０２へ出力する。
【００８９】
スケールファクタ算出部１０２は、現在のイテレーションにおける固定小数点表現前の計算結果の入力を演算実行部１０１から受ける。次に、スケールファクタ算出部１０２は、取得した固定小数点表現前の計算結果から得られる統計情報を、その時点で有する統計情報に加えて統計情報を更新する（ステップＳ２０６）。
【００９０】
演算実行部１０１は、オフセットを加えたスケールファクタを用いて固定小数点数を算出する（ステップＳ２０７）。
【００９１】
そして、演算実行部１０１は、算出した固定小数点数を出力する（ステップＳ２０８）。
【００９２】
その後、演算実行部１０１は、全ての入力データの処理が完了したか否かを判定する（ステップＳ２０９）。処理を終えていない入力データが残っている場合（ステップＳ２０９：否定）、演算実行部１０１は、ステップＳ２０４へ戻る。
【００９３】
これに対して、全ての入力データの処理が完了した場合（ステップＳ２０９：肯定）、スケールファクタ算出部１０２は、現在のイテレーションの統計情報を用いて次回のイテレーションのスケールファクタを算出する（ステップＳ２１０）。
【００９４】
その後、スケールファクタ算出部１０２は、算出したスケールファクタを演算実行部１０１へ出力して、演算実行部１０１が使用するスケールファクタを更新する（ステップＳ２１１）。
【００９５】
以上に説明したように、本実施例に係る深層学習実行装置は、統計情報の変化に応じてオフセットを調整して固定小数点演算を実行する。これにより、演算結果の正確性を向上させることができ、学習精度を向上させることができる。
【００９６】
ここで、オフセット更新時のイテレーションでは、オフセット更新用の演算と通常の演算との２回の演算を行うため、オフセットの更新による計算コストが、オフセットの更新をしない場合に比べて発生する。ただし、オフセットの更新はそれほど頻繁に行わなくてもよく、１０万イテレーション程度の間隔でよい。そのため、オフセット更新に要する計算コスト及び実行時間は学習処理全体から見るとそれほど大きくない。したがって、学習に要する計算コスト及び実行時間の増加を抑えつつ、学習精度を向上することができる。
【００９７】
（変形例）
本実施例では、１つ前のイテレーションで求められたスケールファクタの冪指数から現在のイテレーションで求められたスケールファクタを減算したものをオフセットとして用いた。ただし、オフセットは他の指標を用いてもよい。どのような指標をオフセットとするかは、取り扱う学習データや演算内容に合わせて決定されることが好ましい。
【００９８】
図１３は、オフセットとして用いることが可能な指標のいくつかの例を表した図である。ここでは、オフセット更新イテレーションの１つ前のイテレーションからＮ個前までのイテレーションで求められた各スケールファクタを、２ω１，２ω２，・・・，２ωＮとする。また、オフセット更新イテレーションで求められたスケールファクタを２ωとする。すなわち、オフセット更新イテレーションのスケールファクタの冪指数はωであり、オフセット更新イテレーションの１つ前のイテレーションからＮ個前までのイテレーションのスケールファクタの冪指数は、ω１，ω２，・・・・ωＮである。そして、ω，ω１，ω２，・・・・ωＮの平均をｍｅａｎ（ω）とし、標準偏差をσ（ω）とし、最大値をｍａｘ（ω）とし、ｍｉｎ（ω）とする。
【００９９】
例えば、図１３では、オフセットの指標の一例として、オフセット２０１〜２０５が記載されている。オフセット２０１は、スケールファクタの冪指数の最小値から最大値を減算した値である。オフセット２０２は、スケールファクタの冪指数の最小値から最小値を減算した値の半分の小数点以下を切り捨てた値である。オフセット２０３は、スケールファクタの冪指数の平均値から最大値を減算した値の小数点以下を切り捨てた値である。オフセット２０４は、スケールファクタの冪指数の最小値から平均値を減算した値の小数点以下を切り捨てた値である。オフセット２０５は、スケールファクタの冪指数の標準偏差の符号を反転させて小数点以下を切り捨てた値である。以下に各オフセットを算出する場合の処理の流れについて説明する。
【０１００】
図１４は、スケールファクタの冪指数の最小値から最大値を減算した値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【０１０１】
オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部１０２から取得する。そして、オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタの冪指数をω１，ω２，・・・・ωＮとする（ステップＳ３１１）。
【０１０２】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ３１２）。
【０１０３】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最大値をｍａｘ（ω）とする（ステップＳ３１３）。
【０１０４】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最小値をｍｉｎ（ω）とする（ステップＳ３１４）。
【０１０５】
その後、オフセット算出部１０３は、ｍｉｎ（ω）−ｍａｘ（ω）をオフセットとする（ステップＳ３１５）。
【０１０６】
図１５は、スケールファクタの冪指数の最小値から最小値を減算した値の半分の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【０１０７】
オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部１０２から取得する。そして、オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタの冪指数をω１，ω２，・・・・ωＮとする（ステップＳ３２１）。
【０１０８】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ３２２）。
【０１０９】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最大値をｍａｘ（ω）とする（ステップＳ３２３）。
【０１１０】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最小値をｍｉｎ（ω）とする（ステップＳ３２４）。
【０１１１】
その後、オフセット算出部１０３は、（ｍｉｎ（ω）−ｍａｘ（ω））の１／２の小数点以下を切り捨てた値をオフセットとする（ステップＳ３２５）。
【０１１２】
図１６は、スケールファクタの冪指数の平均値から最大値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【０１１３】
オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部１０２から取得する。そして、オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタの冪指数をω１，ω２，・・・・ωＮとする（ステップＳ３３１）。
【０１１４】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ３３２）。
【０１１５】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最小値をｍｉｎ（ω）とする（ステップＳ３３３）。
【０１１６】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの平均値をｍｅａｎ（ω）とする（ステップＳ３３４）。
【０１１７】
その後、オフセット算出部１０３は、（ｍｉｎ（ω）−ｍｅａｎ（ω））の小数点以下を切り捨てた値をオフセットとする（ステップＳ３３５）。
【０１１８】
図１７は、スケールファクタの冪指数の最小値から平均値を減算した値の小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【０１１９】
オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部１０２から取得する。そして、オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタの冪指数をω１，ω２，・・・・ωＮとする（ステップＳ３４１）。
【０１２０】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ３４２）。
【０１２１】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの最大値をｍａｘ（ω）とする（ステップＳ３４３）。
【０１２２】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの平均値をｍｅａｎ（ω）とする（ステップＳ３４４）。
【０１２３】
その後、オフセット算出部１０３は、（ｍｅａｎ（ω）−ｍａｘ（ω））の小数点以下を切り捨てた値をオフセットとする（ステップＳ３４５）。
【０１２４】
図１８は、スケールファクタの冪指数の標準偏差の符号を反転させて小数点以下を切り捨てた値をオフセットとする場合のオフセットの算出処理のフローチャートである。
【０１２５】
オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタをスケールファクタ算出部１０２から取得する。そして、オフセット算出部１０３は、１つ前からＮ個前までのイテレーションで得られたスケールファクタの冪指数をω１，ω２，・・・・ωＮとする（ステップＳ３５１）。
【０１２６】
次に、オフセット算出部１０３は、現在のイテレーションの統計情報からスケールファクタを算出する。そして、オフセット算出部１０３は、現在のイテレーションで得られたスケールファクタの冪指数をωとする（ステップＳ３５２）。
【０１２７】
次に、オフセット算出部１０３は、ω，ω１，ω２，・・・・ωＮの標準偏差をσ（ω）とする（ステップＳ３５３）。
【０１２８】
その後、オフセット算出部１０３は、−σ（ω）の小数点以下を切り捨てた値をオフセットとする（ステップＳ３５４）。
【０１２９】
以上に説明したように、オフセットを表す指標には様々な値を利用することができる。そして、オフセットを表す指標としていずれを用いても、学習処理の各段階において統計情報に合わせたオフセットを設定することができ、より確からしい計算結果を得ることができ、学習精度を向上させることができる。
【符号の説明】
【０１３０】
１  ホストマシン
２  深層学習実行装置
３  利用者端末
１１  高速入出力インタフェース
１２  プロセッサ
１３  ＲＡＭ
１４  内部バス
１５  ＨＤＤ
１６  低速入出力インタフェース
２１  高速入出力インタフェース
２２  制御部
２３  深層学習実行プロセッサ
２４  メモリアクセスコントローラ
２５  内部ＲＡＭ
１０１  演算実行部
１０２  スケールファクタ算出部
１０３  オフセット算出部
【図１】
2020190901.tif 000003
【図２】
2020190901.tif 000004
【図３】
2020190901.tif 000005
【図４】
2020190901.tif 000006
【図５】
2020190901.tif 000007
【図６】
2020190901.tif 000008
【図７】
2020190901.tif 000009
【図８】
2020190901.tif 000010
【図９】
2020190901.tif 000011
【図１０】
2020190901.tif 000012
【図１１】
2020190901.tif 000013
【図１２】
2020190901.tif 000014
【図１３】
2020190901.tif 000015
【図１４】
2020190901.tif 000016
【図１５】
2020190901.tif 000017
【図１６】
2020190901.tif 000018
【図１７】
2020190901.tif 000019
【図１８】
2020190901.tif 000020