(57)【要約】  学習装置５００は、学習用データが入力されると、所定の判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、推論処理の結果に基づいて、推論処理において各ユニットの出力を計算する際に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う学習手段５０１を備え、学習手段５０１は、推論処理において行われる演算のうちの指定された演算を、第１の演算精度で実施する高効率推論手段５０２と、パラメタ更新処理において行われる演算のうちの指定された演算を、第１の演算精度よりも高い第２の演算精度で実施する高精度パラメタ学習手段５０３とを含む。
2020008642.tif 000002
【特許請求の範囲】
【請求項１】
層状に結合された２以上のユニットで構成される所定の判別モデルを学習する学習装置であって、
学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う学習手段を備え、
前記学習手段は、
前記推論処理において行われる演算のうちの指定された演算を、第１の演算精度で実施する高効率推論手段と、
前記パラメタ更新処理において行われる演算のうちの指定された演算を、前記第１の演算精度よりも高い第２の演算精度で実施する高精度パラメタ更新手段とを含む
ことを特徴とする学習装置。
【請求項２】
前記高精度パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算する際に用いられるパラメタを更新するための演算のみを、前記第２の演算精度で実施する
請求項１に記載の学習装置。
【請求項３】
前記高効率推論手段は、前記推論処理において行われるすべての演算を、前記第１の演算精度で実施する
請求項１または請求項２に記載の学習装置。
【請求項４】
前記学習手段は、前記パラメタ更新処理において行われる演算のうちの指定された演算を、前記第１の演算精度で実施する高効率パラメタ更新手段をさらに含み、
前記高精度パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算する際に用いられるパラメタを更新するための演算のみを、前記第２の演算精度で実施し、
前記高効率パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、前記高精度パラメタ更新手段が実施する演算以外の演算を、前記第１の演算精度で実施する
請求項１から請求項３のうちのいずれかに記載の学習装置。
【請求項５】
前記学習手段は、前記推論処理において行われる演算のうちの指定された演算を、前記第２の演算精度で実施する高精度推論手段をさらに含み、
前記高効率推論手段は、前記推論処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算するための演算のみを、前記第１の演算精度で実施し、
前記高精度推論手段は、前記推論処理において行われる演算のうち、前記高効率推論手段が実施する演算以外の演算を、前記第２の演算精度を実施する
請求項１から請求項４のうちのいずれかに記載の学習装置。
【請求項６】
前記推論処理および前記パラメタ更新処理において行われる演算の実施先を制御する制御部を備える
請求項１から請求項５のうちのいずれかに記載の学習装置。
【請求項７】
相対的に高い演算精度で所定の演算を行う高精度演算回路と、
相対的に低い演算精度で所定の演算を行う低精度演算回路と、
学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる少なくとも一部の演算を前記低精度演算回路に実行させ、かつ前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる少なくとも一部の演算を前記高精度演算回路に実行させる制御装置とを備える
ことを特徴とする学習装置。
【請求項８】
学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる演算のうちの指定された演算を、相対的に低い演算精度で実行する低精度演算回路と、
前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる演算のうちの指定された演算を、相対的に高い演算精度で実行する高精度演算回路とを備える
ことを特徴とする学習回路。
【請求項９】
学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行い、
前記推論処理において行われる少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、かつ前記パラメタ更新処理において行われる少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させる
ことを特徴とする学習方法。
【請求項１０】
コンピュータに、
学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを実行させ、
前記推論処理で、前記各ユニットの出力を計算するために実行する演算のうちの少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、
前記パラメタ更新処理で、
前記パラメタを更新するために実行する演算のうちの少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させる
ための学習プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、学習用データを使って機械学習を行う学習装置、学習回路、学習方法および学習プログラムに関する。
【背景技術】
【０００２】
機械学習の普及が進み、時々刻々と変化する状況に対応するための更なる工夫が求められている。【０００３】
そのためには、実際に使用される環境で取得される多様な生データを学習用データとして学習に取り入れる必要がある。学習用データを用いた学習（機械学習）では、例えば、学習用データで示される入力と出力の関係等に基づいて、所定の学習器で使用される演算式や判別式のパラメタが調整される。学習器は、例えば、データが入力されると、１つまたは複数のラベルについての判別を行う判別モデル等である。【０００４】
機械学習における演算資源と演算精度の関係について、例えば、非特許文献１には、ニューラルネットワークの深層学習を効率的に、特に低い消費電力で実行するための学習用演算回路および学習方法の例が記載されている。【０００５】
また、非特許文献２には、ＣＮＮ（Convolutional Neural Network）における深層学習において、複数ある畳込み層を、重みが固定される層と重みが更新される層（拡張機能層）に分けて学習範囲を制限することで、学習時間の短縮を図る学習方法の例が記載されている。【０００６】
また、機械学習における学習演算用の回路構成の例として、非特許文献３には、ＦＰＧＡ（Field-Programmable Gate Array）をベースとしたアクセラレータ設計の最適化例が記載されている。
【先行技術文献】
【非特許文献】
【０００７】
【非特許文献１】Y.H.Chen, et.al., "Eyeriss: an Energy-Efficient Reconfigurable Accelerator for Deep Convolutional Neural Networks", in IEEE Jornal of Slid-State Circuits, vol.52, no.1, Jan. 2017, pp.127-138.
【非特許文献２】Wei. Liu, et.al., "SSD: Single shot MultiBox Detector", arXiv:1512.02325v5, Dec. 2016.
【非特許文献３】Chen Zhang, et.al., "Optimizing FPGA-based Accelerator Design for Deep convolutional Neural Networks", In ACM FPGA 2015, pp.160-170.
【発明の概要】
【発明が解決しようとする課題】
【０００８】
学習用データを用いた機械学習の多くは、汎用用途の学習アルゴリズムに対応すべく、大規模な高精度演算回路を構築可能なクラウド環境で行われていた。【０００９】
しかし、現場によっては、ネットワーク帯域の制限やプライバシの保護等、種々のデータ移動の制約があるため、クラウド環境ではなく、現場にあるデバイス内（以下、エッジ・デバイス層という）で学習できる仕組みが望まれる。そのためには、より少ないコンピュータ資源ひいては低消費電力で、十分な認識率を得られる学習方法が望まれる。【００１０】
非特許文献１に記載の学習方法によれば、３２ｂｉｔ浮動小数点の演算回路を用いて学習を行うＮＶＩＤＩＡ社のＴＫ１（Jetson Kit）と比較して、１６ｂｉｔ固定小数点の演算回路を用いることで、より低い消費電力で学習を実現できるとされている。しかし、当該方法は、すべての学習演算（パラメータの調整を行うための全ての演算）を行う演算回路におけるビット幅を削減することにより、演算精度の低下と引き換えに消費電力を低減しようというものにすぎず、演算回路そのものの演算精度が低下することによる弊害については何ら考慮されていない。例えば、学習演算を実施するのに十分な演算精度が確保されないおそれ等については何ら考慮されていない。【００１１】
例えば、深層学習を行う演算回路では、複数のユニットが層状に結合された構成を利用した多層演算が行われるが、この時の多層演算は、層ごとにユニットの出力を計算する部分（いわゆる推論処理。例えば、順伝搬処理）と、該計算に用いるパラメタ（例えば、重み等）を更新するための計算をする部分（いわゆるパラメタ更新処理。例えば、逆伝搬処理）とに大別される。このうちの特にパラメタ更新処理が、機械学習における実際の学習演算部分に相当するといえる。したがって、パラメタ更新処理の演算精度は、運用時の認識率に大きく影響を与える演算であり、高精度であればあるほど好ましい。【００１２】
また、非特許文献２に記載の学習方法は、学習範囲を制限することで学習時間の短縮をしようとするものにすぎず、推論処理を含む学習演算に必要な精度とコンピュータ資源の関係等については何ら考慮されていない。【００１３】
なお、非特許文献３に記載の方法は、すべての学習演算を行う回路の回路構成の最適化により回路規模や計算時間の縮小を行おうというものにすぎず、学習演算に必要な精度とコンピュータ資源の関係等については何ら考慮されていない。【００１４】
本発明は、上述した課題に鑑みて、学習時における演算精度の確保と演算に必要なコンピュータ資源の効率化（ひいては低消費電力化）とを両立できる学習装置、学習回路、学習方法および学習プログラムを提供することを目的とする。
【課題を解決するための手段】
【００１５】
本発明による学習装置は、層状に結合された２以上のユニットで構成される所定の判別モデルを学習する学習装置であって、学習用データが入力されると、判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、推論処理の結果に基づいて、各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う学習手段を備え、学習手段は、推論処理において行われる演算のうちの指定された演算を、第１の演算精度で実施する高効率推論手段と、パラメタ更新処理において行われる演算のうちの指定された演算を、第１の演算精度よりも高い第２の演算精度で実施する高精度パラメタ更新手段とを含むことを特徴とする。【００１６】
また、本発明による学習装置は、相対的に高い演算精度で所定の演算を行う高精度演算回路と、相対的に低い演算精度で所定の演算を行う低精度演算回路と、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる少なくとも一部の演算を低精度演算回路に実行させ、かつ各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる少なくとも一部の演算を高精度演算回路に実行させる制御装置とを備える構成であってもよい。【００１７】
本発明による学習回路は、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる演算のうちの指定された演算を、相対的に低い演算精度で実行する低精度演算回路と、各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる演算のうちの指定された演算を、相対的に高い演算精度で実行する高精度演算回路とを備えることを特徴とする。【００１８】
本発明による学習方法は、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、推論処理の結果に基づいて、各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行い、推論処理において行われる少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、かつパラメタ更新処理において行われる少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させることを特徴とする。【００１９】
本発明による学習プログラムは、コンピュータに、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、推論処理の結果に基づいて、各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを実行させ、推論処理で、各ユニットの出力を計算するために実行する演算のうちの少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、パラメタ更新処理で、パラメタを更新するために実行する演算のうちの少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させることを特徴とする。
【発明の効果】
【００２０】
本発明によれば、学習時における演算精度の確保と演算に必要なコンピュータ資源の効率化（ひいては低消費電力化）とを両立できる。
【図面の簡単な説明】
【００２１】
【図１】本発明の学習方法の概略を示す説明図である。
【図２】あるユニットの入出力および他ユニットとの結合の例を示す説明図である。
【図３】第１の実施形態の学習装置の構成例を示すブロック図である。
【図４】学習処理部１０６のハードウエア構成の例を示す構成図である。
【図５】低精度演算回路１１における演算精度と高精度演算回路１２における演算精度の組み合わせの例を示す説明図である。
【図６】学習装置１００にかかるコンピュータの構成例を示す概略ブロック図である。
【図７】演算回路の例を示す概略構成図である。
【図８】演算回路の他の例を示す概略構成図である。
【図９】演算回路の他の例を示す概略構成図である。
【図１０】演算回路の他の例を示す概略構成図である。
【図１１】第１の実施形態の学習装置１００の動作の例を示すフローチャートである。
【図１２】学習装置１００のより具体的な動作例を示すフローチャートである。
【図１３】学習装置１００のより具体的な動作の他の例を示すフローチャートである。
【図１４】学習装置１００のより具体的な動作の他の例を示すフローチャートである。
【図１５】本発明の学習装置の概要を示すブロック図である。
【図１６】本発明の学習装置の他の構成を示す構成図である。
【発明を実施するための形態】
【００２２】
以下、本発明の実施形態について図面を参照して説明する。まず、本発明の学習方法の概略を説明する。図１（ａ）は、入力層と出力層との間に１つ以上の中間層を含むニューラルネットワークにおける一般的な学習方法およびそのための回路構成の例を示す説明図であり、図１（ｂ）は、本発明による学習方法およびそのための回路構成の例を示す説明図である。
【００２３】
図１（ａ）に示す例では、汎用用途の学習アルゴリズムに対応すべく、大規模学習回路９０を用いて、所定の判別モデルであるニューラルネットワーク全体を学習する。
【００２４】
なお、図１では、回路に付した吹き出しに、ニューラルネットワークの学習過程における処理の方向およびその範囲を模式的に示している。吹き出し内において、符号５１（図中の丸）はニューラルネットワークにおけるニューロンに相当するユニットを表す。また、符号５２（図中のユニット間を結ぶ線）は、ユニット間結合を表す。また、符号５３（図中の右向きの太線矢印）は、推論処理およびその範囲を表す。また、符号５４（図中の左向きの太線矢印）は、パラメタ更新処理およびその範囲を表す。なお、図１では、各ユニットへの入力が前段の層のユニットの出力となるフィードフォワード型のニューラルネットワークの例を示しているが、各ユニットへの入力はこれに限らない。例えば、時系列情報を保持している場合には、リカレント型のニューラルネットワークのように、各ユニットへの入力に、前の時刻における前段の層のユニットの出力を含めることも可能である。なお、そのような場合も、推論処理の方向は、入力層から出力層へと向かう方向（順方向）であるとみなされる。このように入力層から所定の順番で行われる推論処理は「順伝搬」とも呼ばれる。一方、パラメタ更新処理の方向は、特に限定されない。図中のパラメタ更新処理のように、出力層から入力層へと向かう方向（逆方向）であってもよい。なお、図中のパラメタ更新処理の方向は、誤差逆伝搬法の例であるが、パラメタ更新処理は誤差逆伝搬法に限定されない。例えば、パラメタ更新処理がＳＴＤＰ（Spike Timing Dependent Plasticity）等であってもよい。
【００２５】
ニューラルネットワークに限らず、深層学習におけるモデルの学習方法の例としては、次のような学習方法が挙げられる。まず、入力層に学習用データを入力した後、出力層までの各層で順方向に各ユニットの出力を計算する推論処理を行う（順伝搬：図中の矢印５３参照）。次いで、出力層からの出力（最終出力）と学習用データで示される入力と出力の関係等とから算出される誤差に基づいて、その誤差を最小化するように、出力層から第１層までの各層を逆方向に辿って、層内の各ユニットの出力を計算するためのパラメタを更新するパラメタ更新処理を行う（逆伝搬：図中の矢印５４参照）。
【００２６】
図１（ａ）に示すように、モデル全体を学習対象とした場合、パラメタ更新処理で、入力層より後段の全ての層（第１層〜第ｎ層）において層内の各ユニットの出力を計算するためのパラメタ（例えば、層内の各ユニットと他の層のユニットを結合するユニット結合の重み等）を更新する。このようなパラメタ更新処理を、例えば学習用データを替えながら複数回繰り返すことにより、高い認識率を有する学習済みモデルを生成できる。図１（ａ）では、そのような学習を行う演算回路の実現例として、上記の推論処理とパラメタ更新処理とを高い演算精度で行う大規模学習回路９０が示されている。しかし、推論処理やパラメタ更新処理の演算精度が高いほど、またその処理の計算範囲が広いほど、誤差関数の展開項数が増えて回路が大規模化するため、消費電力が非常に増大する。
【００２７】
一方、本発明では、図１（ｂ）に示すように、モデルの一部のみを学習対象とする。なお、ここでいう学習は、上記と同様、より実際の学習処理である、パラメタ更新処理を指す。モデルの一部のみを学習対象とした場合、順伝搬までは上記と同様に行う。その上で、出力層からの出力（最終出力）と学習用データで示される入力と出力の関係等とから算出される誤差に基づいて、指定されたユニット（例えば、出力層である第ｎ層から第ｋ層までの各層内のユニット）についてのみ、当該ユニットの出力を計算するためのパラメタ（例えば、他ユニットとの結合にかかる重み等）を更新するパラメタ更新処理を行う。
【００２８】
図１（ｂ）では、そのような学習を行う演算回路１０の実現例として、高い演算精度で指定された一部のユニットのパラメタ更新処理を行う高精度演算回路１２と、高精度演算回路１２よりも低い演算精度で少なくとも指定されたユニットの推論処理を行う低精度演算回路１１とを組み合わせた例が示されている。このような２つの異なる演算精度を有する演算回路を備えた上で、高精度演算回路１２に対しては、例えば、高精度演算が必要な一部のユニットについてパラメタ更新処理を行わせ、低精度演算回路１１に対しては、高精度演算が必要でない他の処理を行わせる。このようにして１つの学習用データに対する学習演算の中で、推論処理の少なくとも一部を低い演算精度で実施し、かつパラメタ更新処理の少なくとも一部を高い演算精度で実施するとともに、高い演算精度で実施するパラメタ更新処理の範囲を最適化することで、コンピュータ資源を効率化（低消費電力等）しつつ、十分な演算精度を確保する。
【００２９】
なお、図１（ｂ）では出力側の一部の層をパラメタの更新を行う範囲（実際の学習範囲）とする例を示したが、パラメタの更新範囲は出力側の層に限られず、例えば、第１層〜第ｎ層のうちの奇数層や偶数層などといった個別的な指定も可能である。また、図１（ｂ）では、パラメタ更新処理自体の範囲を制限する例を示したが、パラメタ更新処理自体の範囲は制限せず、高演算精度で実施するパラメタ更新処理の範囲を制限してもよい。すなわち、全てのユニットのうちの一部のユニットについてのみ高演算精度でパラメタ更新処理を行い、それ以外のユニットについては低い演算精度でパラメタ更新処理を行うことも可能である。なお、パラメタ更新処理の対象として、高精度演算により実施されるユニットと、低精度演算により実施されるユニットと、実施されないユニット（その際、パラメタは固定される）の３種類に分けることも可能である。
【００３０】
また、高精度演算と低精度演算の対象とする処理の分け方の他の例としては、全てのユニットの推論処理を低精度演算で行い、かつ全てのユニットのパラメタ更新処理を高精度演算で行うことも可能である。また、例えば、全てのユニットの推論処理を低精度演算で行い、かつ一部のユニットのパラメタ更新処理を高精度演算で行うことも可能である。その場合、高精度演算の対象外とされた残りの一部のユニットについては、低精度演算でパラメタ更新処理を行ってもよいし、パラメタ更新処理の対象外としてもよい。また、例えば、一部のユニットについては推論処理およびパラメタ更新処理を低精度演算で行い、残りの一部のユニットについては推論処理およびパラメタ更新処理を高精度演算で行うことも可能である。
【００３１】
換言すると、本発明による学習方法は、学習装置が、相対的に低い演算精度を有する低精度演算回路と、相対的に高い演算精度を有する高精度演算回路とを備え、低精度演算回路に少なくとも一部のユニットの推論処理を行わせ、かつ高精度演算回路に少なくとも一部のユニットのパラメタ更新処理を行わせるものであればよい。その上で、残りの一部のユニットの推論処理については低精度演算回路で行ってもよいし、高精度演算回路で行ってもよい。また、上記の残りの一部のユニットのパラメタ更新処理については低精度演算回路で行ってもよいし、処理そのものを省略してもよい。どのユニットについて高精度の推論処理の対象とするか低精度の推論処理の対象とするかや、どのユニットについて高精度のパラメタ更新処理の対象とするか低精度のパラメタ更新処理の対象とするかもしくは処理対象外とするか等については、特に限定されない。
【００３２】
なお、上記は、異なる演算精度を有する２つの演算回路を利用する場合の例であるが、例えば、異なる演算精度を有する２以上の演算回路を利用する場合も基本的に同様である。すなわち、ある一部のユニットの推論処理を行う演算回路の演算精度に対して、より高い演算精度を有する演算回路にてある一部のユニットのパラメタ更新処理が行われる構成であれば、他の一部のユニットの推論処理およびパラメタ更新処理が具体的にどの演算回路で行われるかまたは処理自体が行われないかは特に限定されない。
【００３３】
図２は、１つのユニットに着目したときの当該ユニットの入出力および他ユニットとの結合の例を示す説明図である。図２（ａ）に１つのユニットの入出力の例、（ｂ）に２層に並べられたユニット間の結合の例を示す。図２（ａ）に示すように、１つのユニットに対して４つの入力（ｘ１〜ｘ４）と１つの出力（ｚ）があった場合に、当該ユニットの動作は例えば、式（１Ａ）のように表される。ここで、ｆ（）は活性化関数を表している。
【００３４】
ｚ＝ｆ（ｕ）  ・・・（１Ａ）
ただし、ｕ＝ａ＋ｗ１ｘ１＋ｗ２ｘ２＋ｗ３ｘ３＋ｗ４ｘ４  ・・・（１Ｂ）
【００３５】
式（１Ｂ）において、ａは切片、ｗ１〜ｗ４は各入力（ｘ１〜ｘ４）に対応した重み等のパラメタを表す。
【００３６】
一方、図２（ｂ）に示すように、２層に並べられた層間で各ユニットが結合されている場合、後段の層に着目すると、当該層内の各ユニットへの入力（それぞれｘ１〜ｘ４）に対する当該各ユニットの出力（ｚ１〜ｚ４）は、例えば、次のように表される。なお、ｉは同一層内のユニットの識別子（本例ではｉ＝１〜３）である。
【００３７】
ｚｉ＝ｆ（ｕｉ）  ・・・（２Ａ）
ただし、ｕｉ＝ａ＋ｗｉ，１ｘ１＋ｗｉ，２ｘ２＋ｗｉ，３ｘ３＋ｗｉ，４ｘ４  ・・・（２Ｂ）
【００３８】
以下では、式（２Ｂ）を単純化して、ｚｉ＝Σｗｉ，ｋ＊ｘｋと記す場合がある。なお、切片ａは省略した。なお、切片ａを値１の定数項の係数（パラメタの１つ）とみなすことも可能である。ここで、ｋは当該層における各ユニットへの入力、より具体的にはその入力を行う他のユニットの識別子を表す。このとき、当該層における各ユニットへの入力が前段の層の各ユニットの出力のみである場合には、上述の簡略式を、ｕｉ（Ｌ）＝Σｗｉ，ｋ（Ｌ）＊ｚｋ（Ｌ−１）と記すことも可能である。なお、Ｌは層の識別子を表す。これらの式において、ｗｉ，ｋが、当該層（第Ｌ層）における各ユニットｉのパラメタ、より具体的には、各ユニットｉと他のユニットｋとの結合（ユニット間結合）の重みに相当する。以下では、ユニットを特に区別せず、ユニットの出力値を決める関数（活性化関数）を簡略化して、ｚ＝Σｗ＊ｘと記す場合がある。
【００３９】
上記の例において、あるユニットについて入力ｘから出力ｚを求める計算が、当該ユニットにおける推論処理に相当する。このとき、パラメタｗは固定される。一方、あるユニットについてパラメタｗを求める計算が当該ユニットにおけるパラメタ更新処理に相当する。
【００４０】
［学習装置］
図３は、第１の実施形態の学習装置の構成例を示すブロック図である。図３に示す学習装置１００は、学習前モデル記憶部１０１と、学習用データ記憶部１０２と、学習処理部１０６と、学習後モデル記憶部１０７とを備える。
【００４１】
学習前モデル記憶部１０１は、学習前のモデルの情報を記憶する。学習前のモデルの情報には、パラメタの初期値が含まれていてもよい。
【００４２】
学習用データ記憶部１０２は、モデルの学習に用いるデータである学習用データを記憶する。なお、学習用データの形式は特に問わない。
【００４３】
学習処理部１０６は、学習用データ記憶部１０２に記憶された学習用データを用いて、学習前モデル記憶部１０１に記憶されているモデルの学習を行う。
【００４４】
本実施形態の学習処理部１０６は、少なくとも高効率推論処理部１０３ａと高精度パラメタ更新処理部１０４ｂと制御部１０５とを含む。なお、学習処理部１０６は、図３に示すように、さらに高精度推論処理部１０３ｂと高効率パラメタ更新処理部１０４ａを含んでいてもよい。
【００４５】
高効率推論処理部１０３ａは、指定された層またはユニットを対象とする推論処理を、第１の演算精度で行う。
【００４６】
高精度パラメタ更新処理部１０４ｂは、指定された層、ユニットまたはパラメタを対象とするパラメタ更新処理を、第１の演算精度よりも高い演算精度の第２の演算精度で行う。
【００４７】
制御部１０５は、学習処理を実施する各処理部（本例では、高効率推論処理部１０３ａ、高精度推論処理部１０３ｂ、高効率パラメタ更新処理部１０４ａおよび高精度パラメタ更新処理部１０４ｂ）を制御して、必要な学習処理を実施させる。制御部１０５は、より具体的には、学習前のモデルおよび学習用データの読み込み、学習処理を実施する各処理部へ演算の指示を行うことによる学習処理にかかる演算精度の切替制御を行う。演算の指示には、演算対象とするユニットの指定や演算に必要なパラメータの入力が含まれる。
【００４８】
学習後モデル記憶部１０７は、学習後のモデルの情報を記憶する。学習後のモデルの情報には、各ユニットの更新後のパラメタの値が含まれていてもよい。
【００４９】
また、図４は、学習処理部１０６のハードウエア構成の例を示す構成図である。図４に示すように、学習処理部１０６は、低精度演算回路１１と、高精度演算回路１２と、メモリ１３と、制御装置１４とがそれぞれバス１５を介して接続された演算処理装置等により実現されてもよい。なお、高精度演算回路１２は、低精度演算回路１１よりも高い演算精度で演算が可能な回路であればよい。
【００５０】
その場合において、高効率推論処理部１０３ａおよび高効率パラメタ更新処理部１０４ａは、例えば、低精度演算回路１１により実現されてもよい。また、高精度推論処理部１０３ｂおよび高精度パラメタ更新処理部１０４ｂは、例えば、高精度演算回路１２により実現されてもよい。また、制御部１０５は、例えば、制御装置１４により実現されてもよい。
【００５１】
本例において、低精度演算回路１１と高精度演算回路１２はそれぞれバス１５を介して接続されており、バス１５を介してお互いの演算結果を通知するなどのデータのやり取りを行うことができる。なお、バス１５にはさらにメモリ１３が接続されていてもよく、その場合、低精度演算回路１１と高精度演算回路１２がそれぞれメモリ１３を介してデータのやりとりを行うことも可能である。その場合、メモリ１３は通信路の一部として扱われる。なお、メモリ１３は、On-chip memoryとして、低精度演算回路１１および高精度演算回路１２と同一のチップ上に実装されてもよい。すなわち、低精度演算回路１１、高精度演算回路１２およびメモリ１３が、チップ内で内部接続されていてもよい。また、メモリ１３は、Off-chip memoryとして、低精度演算回路１１や高精度演算回路１２と同一のチップ上に実装されなくてもよい。すなわち、外部メモリインタフェースを介して外部接続されていてもよい。
【００５２】
本実施形態では、学習処理（特に、推論処理およびパラメタ更新処理）を実施する処理部が実際に演算に用いる数字データの値域の広さ・細かさの尺度（より具体的には、その処理部を実現する演算回路におけるビット幅および小数点の取り扱い等で定まる数字データの値域の広さ・細かさの尺度）を、「精度」または「演算精度」と呼ぶ。低精度演算回路１１における演算精度である低演算精度と高精度演算回路１２における演算精度である高演算精度の組み合わせの例としては、例えば、図５に示すような組み合わせが挙げられる。図５は、低精度演算回路１１における演算精度である低演算精度と高精度演算回路１２における演算精度である高演算精度の組み合わせの例を示す説明図である。
【００５３】
なお、低精度演算回路１１における演算精度と高精度演算回路１２における演算精度の組み合わせは、図５に示すものに限定されない。例えば、低精度演算回路１１における演算精度（低演算精度）を、固定少数点の｛１，２，８，１６｝ビットのいずれかまたは整数の｛１，２，８，１６｝ビットのいずれかとし、高精度演算回路１２における演算精度（高演算精度）を、固定小数点の｛２，８，１６，３２｝ビット、浮動小数点の｛９，１６，３２｝ビットのいずれかまたはpower of 2の浮動小数点の｛８，１６，２４，３２｝ビットのいずれかとしてもよい。ただし、高演算精度は、低演算精度に比べて、高精度（例えば、数字データの値域がより広い、数値データの値域がより細かいなど、表現可能な有効桁数がより大きい）であるものとする。
【００５４】
また、図６は、学習装置１００にかかるコンピュータの構成例を示す概略ブロック図である。コンピュータ１０００は、プロセッサ１００８と、主記憶装置１００２と、補助記憶装置１００３と、インタフェース１００４と、ディスプレイ装置１００５と、入力デバイス１００６とを備える。また、プロセッサ１００８は、ＣＰＵ１００１や、ＧＰＵ１００７などの各種演算・処理装置を含んでいてもよい。
【００５５】
学習装置１００は、例えば、図６に示すようなコンピュータ１０００に実装されてもよい。その場合、学習装置１００（特に、制御部１０５）の動作は、プログラムの形式で補助記憶装置１００３に記憶されていてもよい。ＣＰＵ１００１は、プログラムを補助記憶装置１００３から読み出して主記憶装置１００２に展開し、そのプログラムに従って学習装置１００における所定の処理を実施する。なお、ＣＰＵ１００１は、プログラムに従って動作する情報処理装置の一例であり、コンピュータ１０００は、ＣＰＵ（Central Processing Unit）以外にも、例えば、ＭＰＵ（Micro Processing Unit）やＭＣＵ（Memory Control Unit）やＧＰＵ（Graphics Processing Unit）を備えていてもよい。
【００５６】
図６では、コンピュータ１０００が、ＣＰＵ１００１に加えて、上記の低精度演算回路１１および高精度演算回路１２を実装するＧＰＵ１００７をさらに備える例が示されているが、低精度演算回路１１および高精度演算回路１２が他のプロセッサや演算装置（後述するＭＡＣ（multiplier-accumulator）や乗算器ツリーやＡＬＵ（Arthmetic Logic Unit）アレイ等）により実装される場合は本例の限りではなく、当該他のプロセッサや演算装置を備えていればよい。また、低精度演算回路１１および高精度演算回路１２は異なるチップに実装されてもよく、具体的なチップ構成は特に限定されない。
【００５７】
補助記憶装置１００３は、一時的でない有形の媒体の一例である。一時的でない有形の媒体の他の例として、インタフェース１００４を介して接続される磁気ディスク、光磁気ディスク、ＣＤ−ＲＯＭ、ＤＶＤ−ＲＯＭ、半導体メモリ等が挙げられる。また、このプログラムが通信回線によってコンピュータ１０００に配信される場合、配信を受けたコンピュータは１０００がそのプログラムを主記憶装置１００２に展開し、学習装置１００における所定の処理を実行してもよい。
【００５８】
また、プログラムは、学習装置１００における所定の処理の一部を実現するためのものであってもよい。さらに、プログラムは、補助記憶装置１００３に既に記憶されている他のプログラムとの組み合わせで学習装置１００における所定の処理を実現する差分プログラムであってもよい。
【００５９】
インタフェース１００４は、他の装置との間で情報の送受信を行う。また、ディスプレイ装置１００５は、ユーザに情報を提示する。また、入力デバイス１００６は、ユーザからの情報の入力を受け付ける。
【００６０】
また、学習装置１００における処理内容によっては、コンピュータ１０００の一部の要素は省略可能である。例えば、コンピュータ１０００がユーザに情報を提示しないのであれば、ディスプレイ装置１００５は省略可能である。例えば、コンピュータ１０００がユーザから情報入力を受け付けないのであれば、入力デバイス１００６は省略可能である。
【００６１】
また、上記の各構成要素の一部または全部は、汎用または専用の回路（Circuitry）、プロセッサ等やこれらの組み合わせによって実施される。これらは単一のチップによって構成されてもよいし、バスを介して接続される複数のチップによって構成されてもよい。また、上記の各構成要素の一部又は全部は、上述した回路等とプログラムとの組み合わせによって実現されてもよい。
【００６２】
上記の各構成要素の一部又は全部が複数の情報処理装置や回路等により実現される場合には、複数の情報処理装置や回路等は、集中配置されてもよいし、分散配置されてもよい。例えば、情報処理装置や回路等は、クライアントアンドサーバシステム、クラウドコンピューティングシステム等、各々が通信ネットワークを介して接続される形態として実現されてもよい。
【００６３】
［回路構成］
次に、少なくとも高効率推論処理部１０３ａの実装例とされる推論回路の構成をいくつか例示する。高効率推論処理部１０３ａは、例えば、指定された層の各ユニットまたは指定されたユニットについて、当該ユニットへの入力を受け付けると、当該ユニットの出力を計算する推論処理を所定の低演算精度で行い、計算結果を出力してもよい。そのとき、高効率推論処理部１０３ａは、ユニットの出力を計算する際に用いる入力の値および他の変数（重みや切片等のパラメタ）の値を入力として受け付けて、上記の処理を行ってもよい。以下、推論処理で行われる演算を推論演算という場合がある。
【００６４】
以下では、推論演算を行うための回路を「推論回路」と呼び、特に、高精度パラメタ更新処理部１０４ｂが行うパラメタ更新演算の演算精度よりも低い演算精度で推論演算を行うための回路を「高効率推論回路」と呼ぶ。このようにして、推論回路の演算精度をできるだけ低く、少なくとも高精度パラメタ更新処理部１０４ｂが行うパラメタ更新演算の演算精度よりも低くする（例えば、ビット幅を３２ビットから１６ビットにする、浮動小数点演算を固定少数点演算にする等）ことで、消費電力を低減する。なお、高効率推論回路と区別するために、高精度パラメタ更新処理部１０４ｂが行うパラメタ更新演算の演算精度と同じ演算精度で推論演算を行うための回路を「高精度推論回路」と呼ぶ場合がある。上述した高精度推論処理部（図示せず）は、そのような高精度推論回路により実現されてもよい。
【００６５】
以下に示す推論回路の構成は、推論演算が高精度で行われるか低精度で行われる回路かを問わず実現可能である。すなわち、高効率推論処理部１０３ａと高精度推論処理部１０３ｂの違いが、当該処理部の動作を実装した演算回路において演算に用いる各変数、加算器、乗算器の精度のみであってもよい。
【００６６】
推論回路の最も単純な例は、乗算器と加算器を組み合わせた乗加算器（ＭＡＣ）２２１を１つ備えた構成である（図７（ａ）の演算回路２２ａ参照）。なお、符号２１はバスを表している。
【００６７】
ＭＡＣ２２１は、乗算器と、加算器と、３つの入力を保持する記憶素子と、１つの出力を保持する記憶素子とを含んでいてもよい（図７（ｂ）参照）。図７（ｂ）に示すＭＡＣ２２１は、３つの変数ａ，ｗ，ｘを受け付けると、１つの出力変数ｚ＝ａ＋ｗ＊ｘを計算する演算回路の例である。本例において、ｚがユニットの出力、ａ、ｗがパラメタ（推論処理では固定）、ｘがユニットの入力に相当する。このような構成において、当該回路の演算精度は、当該回路が含む乗算器や加算器のビット幅および小数点の取り扱い（浮動小数点か固定小数点か等）により決定される。例えば、高効率推論処理部１０３ａが演算回路２２ａにより実現される場合、当該回路が含むＭＡＣ２２１における各変数（ａ，ｗ，ｘ，ｚ）、加算器および乗算器による演算が低演算精度（第１の演算精度）に対応していればよい。このとき、当該回路における各変数、加算および乗算のすべてが同じ精度である必要はない（以下、同様）。例えば、各変数、加算および乗算のいずれかで用いられる精度が、高精度パラメタ更新処理部１０４ｂを実現する演算回路の各変数、加算および乗算のいずれかで用いられる精度よりも低ければよい。
【００６８】
図８〜１０は、推論演算用の演算回路（推論回路）の他の例を示す概略構成図である。推論回路は、例えば、図８に示す演算回路２２ｂのように、複数のＭＡＣ２２１を並列に接続した構成（いわゆるＧＰＵの構成）であってもよい。このような構成においても、当該回路の演算精度は、当該回路に含まれる乗算器や加算器のビット幅および小数点の取り扱い（浮動小数点か固定小数点か等）により決定される。
【００６９】
また、推論回路は、例えば図９に示す演算回路２２ｃのように、メモリ層２２２を介して複数の乗加算ツリー２２３が並列に接続された構成であってもよい。図９に示す乗加算ツリー２２３は、４つの乗算器と２つの加算器と１つの加算器がツリー状に接続された構成の回路である。なお、図９に示す演算回路２２ｃの一例は、非特許文献３にも開示されている。このような構成においても、当該回路の演算精度は、当該回路に含まれる乗算器や加算器のビット幅および小数点の取り扱い（浮動小数点か固定小数点か等）により決定される。
【００７０】
また、推論回路は、例えば図１０に示す演算回路２２ｄのように、メモリ層２２２を介して複数のＡＬＵ２２４がアレイ状に接続された構成（シストリックアレイ構成）であってもよい。なお、図１０に示す演算回路２２ｄの一例は、非特許文献１にも開示されている。このような構成においても、当該回路の演算精度は、当該回路に含まれる乗算器や加算器のビット幅および小数点の取り扱い（浮動小数点か固定小数点か等）により決定される。
【００７１】
なお、例えば、高効率推論処理部１０３ａが図８〜図１０に示した演算回路２２ｂ、演算回路２２ｃまたは演算回路２２ｄにより実現される場合、当該回路において演算に用いられる各変数、加算器または乗算器による演算が低演算精度（第１の演算精度）に対応していればよい。
【００７２】
一方、例えば、高精度推論処理部１０３ｂが演算回路２２ａ，演算回路２２ｂ、演算回路２２ｃまたは演算回路２２ｄにより実現される場合、当該回路において演算に用いられる各変数、加算器または乗算器による演算が高演算精度（第２の演算精度）に対応していればよい。
【００７３】
次に、少なくとも高精度パラメタ更新処理部１０４ｂの実装例とされるパラメタ更新用回路の構成をいくつか例示する。高精度パラメタ更新処理部１０４ｂは、例えば、指定された層の各ユニットにおける各パラメタ、指定されたユニットにおける各パラメタまたは指定されたパラメタについて、当該パラメタを調整パラメータとして含む誤差関数などの目的関数の最適化問題を解いて該調整パラメータを更新するパラメタ更新処理を所定の高演算精度で行い、更新後の値を出力してもよい。そのとき、高精度パラメタ更新処理部１０４ｂは、最適化問題を解く際に用いる変数の値（更新前のパラメタの値を含みうる）をパラメータとして受け付けて、上記の処理を行ってもよい。以下、パラメタ更新処理で行われる演算をパラメタ更新演算という場合がある。
【００７４】
以下では、パラメタ更新演算を行うための回路を「パラメタ更新回路」と呼び、特に、高効率推論処理部１０３ａが行う推論演算の演算精度よりも高い演算精度で思い学習演算を行うための回路を「高精度パラメタ更新回路」と呼ぶ。なお、高精度パラメタ更新回路と区別するために、高効率推論処理部１０３ａが行う推論演算の演算精度と同じ演算精度でパラメタ更新演算を行うための回路を「高効率パラメタ更新回路」と呼ぶ場合がある。上述した高効率パラメタ更新処理部（図示せず）は、そのような高効率パラメタ更新回路により実現されてもよい。
【００７５】
以下に示すパラメタ更新回路の構成は、パラメタ更新演算が高精度で行われるか低精度で行われる回路かを問わず実現可能である。すなわち、高効率パラメタ更新処理部１０４ａと高精度パラメタ更新処理部１０４ｂの違いが、当該処理部の動作を実装した演算回路において演算に用いる各変数、加算器または乗算器の精度のみであってもよい。
【００７６】
パラメタ更新回路の最も単純な例は、推論回路と同様、乗算器と加算器を組み合わせた乗加算器（ＭＡＣ）２２１を１つ備えた構成である（図７（ａ）の演算回路２２ａ，図７（ｂ）のＭＡＣ２２１等参照）。また、パラメタ更新回路は、例えば、図８〜１０に示す演算回路２２ｂ、演算回路２２ｃ、演算回路２２ｄによっても実現できる。すなわち、図７〜図１０に示す演算回路は、パラメタ更新演算用の演算回路の例でもある。
【００７７】
例えば、高精度パラメタ更新処理部１０４ｂが演算回路２２ａ，演算回路２２ｂ、演算回路２２ｃまたは演算回路２２ｄにより実現される場合、当該回路において演算に用いられる各変数、加算器および乗算器による演算が高演算精度（第２の演算精度）に対応していればよい。このとき、各変数、加算および乗算のすべてが同じ精度である必要はなく、当該回路においてパラメタ更新演算に用いられる各変数、加算および乗算のいずれかの精度が、高効率推論処理部１０３ａを実現する演算回路において推論演算に用いられる各変数、加算および乗算のいずれかの精度よりも高ければよい。
【００７８】
一方、例えば、高効率パラメタ更新処理部１０４ａが演算回路２２ａ，演算回路２２ｂ、演算回路２２ｃまたは演算回路２２ｄにより実現される場合、当該回路において演算に用いられる各変数、加算器および乗算器による演算が低演算精度（第１の演算精度）に対応していればよい。
【００７９】
［動作］
次に、本実施形態の学習装置１００の動作を説明する。図１１は、本実施形態の学習装置１００の動作の例を示すフローチャートである。図１１に示す動作は、例えば、制御部１０５による制御に基づいて実行される。
【００８０】
図１１に示す例では、まず、制御部１０５が、学習前モデル記憶部１０１から学習前モデルを読み出すとともに、学習用データ記憶部１０２から学習用データを読み出す（ステップＳ１１）。
【００８１】
次いで、制御部１０５は、必要に応じて高効率推論処理部１０３ａおよび高精度推論処理部１０３ｂを制御して、第１層〜第ｎ層までの全ての層に含まれる各ユニットについて順に推論処理を実施する（ステップＳ１２：順伝搬）。このとき、制御部１０５は、少なくとも一部のユニットの推論処理を高効率推論処理部１０３ａに実施させる。なお、制御部１０５は、全てのユニットの推論処理を高効率推論処理部１０３ａに実施させてもよいし、一部のユニットの推論処理を高効率推論処理部１０３ａに実施させてもよい。順伝搬で、高効率推論処理部１０３ａに一部のユニットの推論処理を実施させる場合、制御部１０５は、残りのユニットの推論処理を高精度推論処理部１０３ｂに実施させてもよい。
【００８２】
高効率推論処理部１０３ａおよび高精度推論処理部１０３ｂは、制御部１０５からの指示に応じて、指定された層またはユニットの推論処理を実施する。
【００８３】
次いで、制御部１０５は、必要に応じて高効率パラメタ更新処理部１０４ａおよび高精度パラメタ更新処理部１０４ｂを制御して、各層のユニットの出力を計算するためのパラメタのうちの所定のパラメタについて、パラメタ更新処理を実施する（ステップＳ１３：パラメタ更新処理）。このとき、制御部１０５は、少なくとも一部のパラメタについてパラメタ更新処理を高精度パラメタ更新処理部１０４ｂに実施させる。なお、制御部１０５は、全てのパラメタのパラメタ更新処理を高精度パラメタ更新処理部１０４ｂに実施させてもよいし、一部のパラメタのパラメタ更新処理を高精度パラメタ更新処理部１０４ｂに実施させてもよい。パラメタ更新処理で、高精度パラメタ更新処理部１０４ｂに一部のパラメタのパラメタ更新処理のみを実施させる場合、制御部１０５は、残りのパラメタの全てのパラメタ更新処理を高効率パラメタ更新処理部１０４ａに実施させてもよいし、残りのパラメタの一部のパラメタ更新処理を高効率パラメタ更新処理部１０４ａに実施させてもよい。なお、後者の場合、一部のパラメタについてはパラメタ更新処理自体が省略される。
【００８４】
高効率パラメタ更新処理部１０４ａおよび高精度パラメタ更新処理部１０４ｂは、制御部１０５からの指示に応じて、指定されたパラメタのパラメタ更新処理を実施する。
【００８５】
最後に、制御部１０５は、ステップＳ１３で更新されたパラメタを含む学習済みモデルを学習後モデル記憶部１０７に記憶する（ステップＳ１４）。
【００８６】
上記動作の他のバリエーションとして、例えば、複数の学習用データが保持されている場合には、学習用データの数分、ステップＳ１１〜ステップＳ１４の動作を繰り返してもよい。なお、その場合、１つ前の学習用データに対する学習結果としての学習済みモデルが、次の学習用データに対する学習の学習前モデルとして使用される。
【００８７】
また、例えば、複数の学習用データが保持されている場合において、学習用データの数分、ステップＳ１２〜ステップＳ１３の動作を繰り返し行うことも可能である。
【００８８】
さらには、学習用データの数に関わらず、同じ学習用データを使って上記のステップＳ１１〜ステップＳ１４の繰り返し動作またはステップＳ１２〜ステップＳ１４の繰り返し動作を、複数回繰り返すことも可能である（ｅｐｏｃｈ処理）。
【００８９】
また、ステップＳ１２の順伝搬で、例えば、低演算精度で推論処理を行う範囲（低精度推論範囲）を、予め定めておくだけでなく、ユーザから指定できるようにしたり、学習用データ毎やｅｐｏｃｈ処理の繰り返し毎に変化させることも可能である。
【００９０】
また、ステップＳ１３のパラメタ更新処理で、例えば、高演算精度でパラメタ更新処理を行う範囲（高精度パラメタ更新範囲）を全結合層のみに限定してもよい。また、例えば、高精度パラメタ更新範囲、低演算精度でパラメタ更新処理を行う範囲（低精度パラメタ更新範囲）、パラメタ更新処理を行わない範囲を、予め定めておくだけでなく、ユーザから指定できるようにしたり、処理の度（学習用データ毎やｅｐｏｃｈ処理の繰り返し毎）に変化させることも可能である。
【００９１】
また、図１２および図１３は、本実施形態の学習装置１００のより具体的な動作例を示すフローチャートである。なお、図１２および図１３に示す動作例は、学習装置１００を構成するハードウエアに着目して各ステップの動作を例示した例である。なお、ハードウエア構成は図４に示す構成とした。
【００９２】
図１２に示す例では、まず高効率推論処理部１０３ａとしての低精度演算回路１１が、制御部１０５としての制御装置１４からの指示に応じて、学習用データ・学習前モデルをメモリ１３から読み出す（ステップＳ１１１）。
【００９３】
次いで、該低精度演算回路１１が、順伝搬の一部（本例では第１層〜第（ｋ−１）層までの各層に含まれる各ユニットの出力を計算する推論演算）を低演算精度で実施する（ステップＳ１１２）。そして、低精度演算回路１１は、ステップＳ１１２の演算結果（本例では、第ｋ−１層の各ユニットからの出力）をメモリ１３に保存する（ステップＳ１１３）。
【００９４】
なお、本例では、学習前モデルは、入力層を第０層、出力層を第ｎ層として、第０層から第ｎ層までのｎ＋１層の多層構造のニューラルネットワークであるとする。また、上記の第（ｋ−１）層は、入力層（第０層）よりも後段でかつ出力層（第ｎ層）よりも前段の中間層とする。すなわち、ｋは、０＜ｋ−１＜ｎを満たす整数とする。
【００９５】
次いで、高精度推論処理部１０３ｂとしての高精度演算回路１２が、制御装置１４の指示に応じて、ステップＳ１１３で保存された演算結果（第ｋ−１層の各ユニットからの出力）を読み出す（ステップＳ２１１）。
【００９６】
そして、該高精度演算回路１２は、順伝搬の続き（本例では、第ｋ層〜第ｎ層までの各層に含まれる各ユニットの出力を計算する推論演算）を高演算精度で実施する（ステップＳ２１２）。
【００９７】
次いで、高精度パラメタ更新処理部１０４ｂとしての高精度演算回路１２が、制御装置１４の指示に応じて、一部の層（本例では第ｋ層〜第ｎ層までの各層）に含まれる各ユニットにおけるパラメタ（他ユニットとの結合重み等）を更新するためのパラメタ更新演算を高演算精度で実施する（ステップＳ２１２）。そして、高精度演算回路１２は、ステップＳ２１２の演算結果（本例では、第ｋ層〜第ｎ層の各層に含まれる各ユニットにおける更新後のパラメタ）をメモリ１３に保存する（ステップＳ２１３）。
【００９８】
なお、ステップＳ２１３で演算結果として保存された更新後のパラメタが、上述した学習済みモデルに相当する。
【００９９】
図１２に示す例は、まず低精度演算回路１１が、高効率推論処理部１０３ａとして、一部の層について推論処理を行った上で、高精度演算回路１２が、高精度パラメタ更新処理部１０４ｂとして、残りの層について推論処理とパラメタ更新処理とを行う動作例である。
【０１００】
また、図１３に示す例では、まず高効率推論処理部１０３ａとしての低精度演算回路１１が、制御部１０５としての制御装置１４からの指示に応じて、学習用データ・学習前モデルをメモリ１３から読み出す（ステップＳ１２１）。
【０１０１】
次いで、該低精度演算回路１１が、順伝搬（本例では第１層〜第ｎ層までの各層に含まれる各ユニットの出力を計算する推論演算）を低演算精度で実施する（ステップＳ１２２）。そして、低精度演算回路１１は、ステップＳ１２２の演算結果（本例では、出力層である第ｎ層のユニットからの出力）をメモリ１３に保存する（ステップＳ１２３）。
【０１０２】
なお、本例でも、学習前モデルは、入力層を第０層、出力層を第ｎ層として、第０層から第ｎ層までのｎ＋１層の多層構造のニューラルネットワークであるとする。
【０１０３】
次いで、高精度推論処理部１０３ｂとしての高精度演算回路１２が、制御装置１４の指示に応じて、ステップＳ１２３で保存された演算結果（出力層である第ｎ層のユニットからの出力）を読み出す（ステップＳ２２１）。
【０１０４】
次いで、該高精度演算回路１２は、制御装置１４の指示に応じて、一部の層（本例では第ｋ層〜第ｎ層までの各層）に含まれる各ユニットにおけるパラメタ（他ユニットとの結合重み等）を更新するためのパラメタ更新演算を高演算精度で実施する（ステップＳ２２２）。そして、高精度演算回路１２は、ステップＳ２２２の演算結果（本例では、第ｋ層〜第ｎ層の各層に含まれる各ユニットにおける更新後のパラメタ）をメモリ１３に保存する（ステップＳ２２３）。
【０１０５】
なお、ステップＳ２２３で演算結果として保存された更新後のパラメタが、上述した学習済みモデルに相当する。
【０１０６】
図１３に示す例は、低精度演算回路１１が、高効率推論処理部１０３ａとして、全ての層について推論処理を行った上で、高精度演算回路１２が、高精度パラメタ更新処理部１０４ｂとして、一部の層についてパラメタ更新処理を行う動作例である。
【０１０７】
なお、図１２のステップＳ２１３や図１３のステップＳ２２３の後に、さらに、低精度演算回路１１が、高効率パラメタ更新処理部１０４ａとして、図１４に示すような動作を行うことも可能である。
【０１０８】
すなわち、低精度演算回路１１が、高効率パラメタ更新処理部１０４ａとして、メモリ１３に保存されていた第ｋ層〜第ｎ層の各層に含まれる各ユニットにおける更新後のパラメタを読み出す（ステップＳ２３１）。
【０１０９】
次いで、該低精度演算回路１１が、残りの層（本例では、第１層〜第（ｋ−１）層までの各層）に含まれる各ユニットにおけるパラメタ（他ユニットとの結合重み等）を更新するためのパラメタ更新演算を低演算精度で実施する（ステップＳ２３２）。そして、低精度演算回路１１は、ステップＳ２３２の演算結果（本例では、第１層〜第（ｋ−１）層の各層に含まれる各ユニットにおける更新後のパラメタ）をメモリ１３に保存する（ステップＳ２３３）。
【０１１０】
本例の場合、ステップＳ２１３またはステップＳ２２３で演算結果として保存された更新後のパラメタとステップＳ２３３で演算結果として保存された更新後のパラメタとが、上述した学習済みモデルに相当する。
【０１１１】
なお、図１２〜図１４に示す動作は、１つの学習用データに対する学習処理の例である。したがって、複数の学習用データが保持されている場合には、学習用データの数分、上記動作や上記動作に含まれる各演算ステップを繰り返すことも可能である。また、学習用データの数に関わらず、同じ学習用データを使って上記動作または上記動作に含まれる各演算ステップを、複数回繰り返すことも可能である（ｅｐｏｃｈ処理）。また、上記動作において高精度パラメタ更新範囲とされる第ｋ層〜第ｎ層は全結合層であってもよいし、ｋをユーザが指定したり、処理の度に変化させることも可能である。
【０１１２】
以上のように、本実施形態によれば、学習アルゴリズムの演算処理を、推論処理とパラメタ更新処理とに分け、推論処理の少なくとも一部を低演算精度で演算し、かつパラメタ更新処理の少なくとも一部を高演算精度で演算することで、高演算精度を必要とする演算部分を最適化できるので、消費電力を低減しつつ十分な精度での学習が可能になる。
【０１１３】
次に、本発明の概要を説明する。図１５は、本発明の学習装置の概要を示すブロック図である。図１５に示す学習装置５００は、層状に結合された２以上のユニットで構成される所定の判別モデルを学習する学習装置であって、学習手段５０１を備える。
【０１１４】
学習手段５０１（例えば、学習処理部１０６）は、学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う。
【０１１５】
また、学習手段５０１は、高効率推論手段５０２と、高精度パラメタ更新手段５０３とを含む。
【０１１６】
高効率推論手段５０２（例えば、高効率推論処理部１０３ａ）は、推論処理において行われる演算のうちの指定された演算を、第１の演算精度で実施する。
【０１１７】
高精度パラメタ更新手段５０３（例えば、高精度パラメタ更新処理部１０４ｂ）は、パラメタ更新処理において行われる演算のうちの指定された演算を、前記第１の演算精度よりも高い第２の演算精度で実施する。
【０１１８】
このような構成により、高演算精度を必要とする演算部分を最適化することで、学習時における演算精度の確保と演算に必要なコンピュータ資源の効率化（ひいては低消費電力化）とを両立できる。
【０１１９】
また、図１６は、本発明の学習装置の他の構成を示す構成図である。図１６に示す学習装置６００は、低精度演算回路６０１と、高精度演算回路６０２と、制御装置６０３とを備える。
【０１２０】
低精度演算回路６０１（例えば、低精度演算回路１１）は、相対的に低い演算精度で所定の演算を行う。
【０１２１】
高精度演算回路６０２（例えば、高精度演算回路１２）は、相対的に高い演算精度で所定の演算を行う。
【０１２２】
制御装置６０３（例えば、制御装置１４）は、学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる少なくとも一部の演算を前記低精度演算回路に実行させ、かつ前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる少なくとも一部の演算を前記高精度演算回路に実行させる。
【０１２３】
このような構成によっても、高演算精度を必要とする演算部分を最適化することで、学習時における演算精度の確保と演算に必要なコンピュータ資源の効率化（ひいては低消費電力化）とを両立できる。
【０１２４】
なお、上記の実施形態は以下の付記のようにも記載できる。
【０１２５】
（付記１）層状に結合された２以上のユニットで構成される所定の判別モデルを学習する学習装置であって、学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行う学習手段を備え、前記学習手段は、前記推論処理において行われる演算のうちの指定された演算を、第１の演算精度で実施する高効率推論手段と、前記パラメタ更新処理において行われる演算のうちの指定された演算を、前記第１の演算精度よりも高い第２の演算精度で実施する高精度パラメタ更新手段とを含むことを特徴とする学習装置。
【０１２６】
（付記２）前記高精度パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算する際に用いられるパラメタを更新するための演算のみを、前記第２の演算精度で実施する付記１に記載の学習装置。
【０１２７】
（付記３）前記高効率推論手段は、前記推論処理において行われるすべての演算を、前記第１の演算精度で実施する付記１または付記２に記載の学習装置。
【０１２８】
（付記４）前記学習手段は、前記パラメタ更新処理において行われる演算のうちの指定された演算を、前記第１の演算精度で実施する高効率パラメタ更新手段をさらに含み、前記高精度パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算する際に用いられるパラメタを更新するための演算のみを、前記第２の演算精度で実施し、前記高効率パラメタ更新手段は、前記パラメタ更新処理において行われる演算のうち、前記高精度パラメタ更新手段が実施する演算以外の演算を、前記第１の演算精度で実施する付記１から付記３のうちのいずれかに記載の学習装置。
【０１２９】
（付記５）前記学習手段は、前記推論処理において行われる演算のうちの指定された演算を、前記第２の演算精度で実施する高精度推論手段をさらに含み、前記高効率推論手段は、前記推論処理において行われる演算のうち、指定された層に属するユニットまたは指定されたユニットの出力を計算するための演算のみを、前記第１の演算精度で実施し、前記高精度推論手段は、前記推論処理において行われる演算のうち、前記高効率推論手段が実施する演算以外の演算を、前記第２の演算精度を実施する付記１から付記４のうちのいずれかに記載の学習装置。
【０１３０】
（付記６）前記推論処理および前記パラメタ更新処理において行われる演算の実施先を制御する制御部を備える付記１から付記５のうちのいずれかに記載の学習装置。
【０１３１】
（付記７）相対的に高い演算精度で所定の演算を行う高精度演算回路と、相対的に低い演算精度で所定の演算を行う低精度演算回路と、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる少なくとも一部の演算を前記低精度演算回路に実行させ、かつ前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる少なくとも一部の演算を前記高精度演算回路に実行させる制御装置とを備えることを特徴とする学習装置。
【０１３２】
（付記８）学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理において行われる演算のうちの指定された演算を、相対的に低い演算精度で実行する低精度演算回路と、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理において行われる演算のうちの指定された演算を、相対的に高い演算精度で実行する高精度演算回路とを備えることを特徴とする学習回路。
【０１３３】
（付記９）学習用データが入力されると、前記判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを行い、前記推論処理において行われる少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、かつ前記パラメタ更新処理において行われる少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させることを特徴とする学習方法。
【０１３４】
（付記１０）コンピュータに、学習用データが入力されると、層状に結合された２以上のユニットで構成される判別モデルの各ユニットの出力を所定の順番で計算する推論処理と、前記推論処理の結果に基づいて、前記各ユニットの出力の計算に用いられるパラメタの少なくとも一部を更新するパラメタ更新処理とを実行させ、前記推論処理で、前記各ユニットの出力を計算するために実行する演算のうちの少なくとも一部の演算を、相対的に低い演算精度を有する低精度演算回路に実行させ、前記パラメタ更新処理で、前記パラメタを更新するために実行する演算のうちの少なくとも一部の演算を、相対的に高い演算精度を有する高精度演算回路に実行させるための学習プログラム。
【０１３５】
以上、実施形態および実施例を参照して本願発明を説明したが、本願発明は上記実施形態および実施例に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【産業上の利用可能性】
【０１３６】
本発明は、深層学習に限らず、高い精度を必要とする演算と高い精度を必要としない演算が混在している処理を行う装置において、消費電力を抑えつつ該処理を行いたい場合に好適に適用可能である。
【符号の説明】
【０１３７】
１０  演算回路
１１  低精度演算回路
１２  高精度演算回路
１３  メモリ
１４  制御装置
１５  バス
５１  ユニット
５２  ユニット間結合
５３  推論処理
５４  パラメタ更新処理
１００  学習装置
１０１  学習前モデル記憶部
１０２  学習用データ記憶部
１０３ａ  高効率推論処理部
１０３ｂ  高精度推論処理部
１０４ａ  高効率パラメタ更新処理部
１０４ｂ  高精度パラメタ更新処理部
１０５  制御部
１０６  学習処理部
１０７  学習後モデル記憶部
１０００  コンピュータ
１００１  ＣＰＵ
１００２  主記憶装置
１００３  補助記憶装置
１００４  インタフェース
１００５  ディスプレイ装置
１００６  入力デバイス
１００７  ＧＰＵ
１００８  プロセッサ
２１  バス
２２ａ、２２ｂ、２２ｃ、２２ｄ  演算回路
２２１  ＭＡＣ
２２２  メモリ層
２２３  乗加算ツリー
２２４  ＡＬＵ
５００、６００  学習装置
５０１  学習手段
５０２  高効率推論手段
５０３  高精度パラメタ更新手段
６０１  低精度演算回路
６０２  高精度演算回路
６０３  制御装置
９０  大規模学習回路
【図１】
2020008642.tif 000003
【図２】
2020008642.tif 000004
【図３】
2020008642.tif 000005
【図４】
2020008642.tif 000006
【図５】
2020008642.tif 000007
【図６】
2020008642.tif 000008
【図７】
2020008642.tif 000009
【図８】
2020008642.tif 000010
【図９】
2020008642.tif 000011
【図１０】
2020008642.tif 000012
【図１１】
2020008642.tif 000013
【図１２】
2020008642.tif 000014
【図１３】
2020008642.tif 000015
【図１４】
2020008642.tif 000016
【図１５】
2020008642.tif 000017
【図１６】
2020008642.tif 000018
【国際調査報告】
2020008642.tif 000019
2020008642.tif 000020