(57)【要約】【課題】メモリの使用量を抑制することができる演算装置を提供する。【解決手段】演算装置は、誤差逆伝播法で補正を行う多層ニューラルネットワークの一部であり、入力されたデータを演算する第１及び第２処理層と、第２処理層の入力及び出力を接続する迂回経路と、第１及び第２処理層の演算結果を評価する評価部と、評価結果に基づいて、第１及び第２処理層にかかる重み係数を補正する補正部と、を備え、第１処理層にかかる第１重み係数を補正する場合、多層ニューラルネットワークは、迂回経路を介して第２処理層の順伝播か逆伝播の少なくとも一方の演算を行わずに第１処理層の演算結果を供給し、評価部は、第１処理層の演算結果を評価し、補正部は、評価結果に基づいて、第１重み係数を補正する。【選択図】      図６
2019200657.tif 000002
【特許請求の範囲】
【請求項１】
誤差逆伝播法で補正を行う多層ニューラルネットワークの一部であり、入力されたデータを演算する第１処理層及び第２処理層と、
前記第２処理層の入力及び出力を接続する迂回経路と、
前記第１及び第２処理層の演算結果を評価する評価部と、
前記評価部の評価結果に基づいて、前記第１及び第２処理層にかかる重み係数を補正する補正部と、
前記第１及び第２処理層の演算結果と、前記第１処理層にかかる第１重み係数と、前記第２処理層にかかる第２重み係数と、を記憶する記憶部と、
を備え、
前記第１処理層にかかる前記第１重み係数を補正する場合、前記多層ニューラルネットワークは、前記迂回経路を介して前記第２処理層の順伝播か逆伝播の少なくとも一方の演算を行わずに前記第１処理層の演算結果を供給し、前記評価部は、前記第１処理層の演算結果を評価し、前記補正部は、前記評価部の評価結果に基づいて、前記第１処理層にかかる前記第１重み係数を補正し、前記記憶部は、前記第１処理層の演算結果及び前記第１処理層にかかる重み係数を記憶する
演算装置。
【請求項２】
前記第１処理層は、入力されたデータを演算し、前記第２処理層は、前記第１処理層の出力データを演算し、
前記第１及び第２処理層にかかる重み係数を補正する場合、前記第１処理層にかかる前記第１重み係数、及び前記第２処理層にかかる前記第２重み係数の順で補正される
請求項１に記載の演算装置。
【請求項３】
前記第２処理層にかかる前記第２重み係数を補正する場合、補正前の前記第１処理層にかかる前記第１重み係数の演算結果を用いて補正を行なう
請求項１または２に記載の演算装置。
【請求項４】
前記第２処理層にかかる前記第２重み係数を補正する場合、補正後の前記第１処理層にかかる前記第１重み係数の演算結果を用いて補正を行なう
請求項１または２に記載の演算装置。
【請求項５】
誤差逆伝播法で補正を行う多層ニューラルネットワークの一部であり、入力されたデータを演算する第１処理層及び第２処理層と、
前記第２処理層の入力及び出力を接続する迂回経路と、
前記第１及び第２処理層の演算結果を評価する評価部と、
前記評価部の評価結果に基づいて、前記第１及び第２処理層にかかる重み係数を補正する補正部と、
前記第１及び第２処理層の演算結果と、前記第１処理層にかかる第１重み係数と、前記第２処理層にかかる第２重み係数と、を記憶する記憶部と、
を備える演算装置の制御方法であって、
前記第１処理層にかかる第１重み係数を補正する場合、前記多層ニューラルネットワークにより、前記迂回経路を介して前記第２処理層の順伝播か逆伝播の少なくとも一方の演算を行わずに前記第１処理層の演算結果を供給し、前記評価部により、前記第１処理層の演算結果を評価し、前記補正部により、前記評価部の評価結果に基づいて、前記第１処理層にかかる前記第１重み係数を補正し、前記記憶部により、前記第１処理層の演算結果及び前記第１処理層にかかる重み係数を記憶する
演算装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、ニューラルネットワークに用いられる演算装置及び演算装置の制御方法に関する。
【背景技術】
【０００２】
ニューラルネットワークは、脳のニューロンおよびシナプスを模して考えられたモデルであり、少なくとも学習および識別の２段階の処理を含む。学習段階では、多数の入力からその特徴を学習し、識別処理のためのニューラルネットワークを構築する。識別段階では、構築されたニューラルネットワークを用いて新たな入力が何であるかを識別する。
【０００３】
近年では、学習段階の技術が大きく発展しており、例えばディープラーニングにより、高い表現力を持った多層ニューラルネットワークを構築できるようになりつつある。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１５−５３００８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態は、メモリの使用量を抑制することができる演算装置及び演算装置の制御方法を提供する。
【課題を解決するための手段】
【０００６】
実施形態の演算装置は、誤差逆伝播法で補正を行う多層ニューラルネットワークの一部であり、入力されたデータを演算する第１処理層及び第２処理層と、前記第２処理層の入力及び出力を接続する迂回経路と、前記第１及び第２処理層の演算結果を評価する評価部と、前記評価部の評価結果に基づいて、前記第１及び第２処理層にかかる重み係数を補正する補正部と、前記第１及び第２処理層の演算結果と、前記第１処理層にかかる第１重み係数と、前記第２処理層にかかる第２重み係数と、を記憶する記憶部と、を備え、前記第１処理層にかかる前記第１重み係数を補正する場合、前記多層ニューラルネットワークは、前記迂回経路を介して前記第２処理層の順伝播か逆伝播の少なくとも一方の演算を行わずに前記第１処理層の演算結果を供給し、前記評価部は、前記第１処理層の演算結果を評価し、前記補正部は、前記評価部の評価結果に基づいて、前記第１処理層にかかる前記第１重み係数を補正し、前記記憶部は、前記第１処理層の演算結果及び前記第１処理層にかかる重み係数を記憶する。
【図面の簡単な説明】
【０００７】
【図１】図１は、識別システムの学習段階及び識別段階を示した図である。
【図２】図２は、識別システムのハードウェア構成を示すブロック図である。
【図３】図３は、識別システムの識別装置を示すブロック図である。
【図４】図４は、識別システムの学習部を示すブロック図である。
【図５】図５は、識別システムの中間層のモデルを示す図である。
【図６】図６は、識別システムの学習動作を示すフローチャートである。
【図７】図７は、学習動作における第１処理層の動作を示す模式図である。
【図８】図８は、学習動作における第２処理層の動作を示す模式図である。
【図９】図９は、学習動作における第３処理層の動作を示す模式図である。
【図１０】図１０は、学習動作における第Ｎ処理層の動作を示す模式図である。
【図１１】図１１は、比較例に係る識別システムの中間層のモデルを示す図である。
【図１２】図１２は、実施形態の効果を示す図であり、縦軸はメモリの使用量を示し、横軸は、処理層の層数を示している。
【図１３】図１３は、変形例に係る識別システムの学習動作を示すフローチャートである。
【発明を実施するための形態】
【０００８】
以下、実施形態について図面を参照して説明する。以下に示す幾つかの実施形態は、技術思想を具体化するための装置および方法を例示したものであって、構成部品の形状、構造、配置等によって、技術思想が特定されるものではない。各機能ブロックは、ハードウェア及びソフトウェアのいずれかまたは両者を組み合わせたものとして実現することができる。各機能ブロックが以下の例のように区別されていることは必須ではない。例えば、一部の機能が例示の機能ブロックとは別の機能ブロックによって実行されてもよい。さらに、例示の機能ブロックがさらに細かい機能サブブロックに分割されていてもよい。なお、以下の説明において、同一の機能及び構成を有する要素については同一符号を付し、重複説明は必要な場合にのみ行う。
【０００９】
＜１＞  実施形態
＜１−１＞  構成
＜１−１−１＞  識別システムの概要
本実施形態では、多層ニューラルネットワークを利用した識別システム（演算装置）について説明する。識別システムは、識別対象データ（入力データ）の内容を識別するためのパラメータを学習し、学習結果に基づいて、識別対象データを識別する。識別対象データとは、識別させる対象となるデータであり、例えば、画像データ、音声データ、テキストデータなどである。以下では、一例として、識別対象データが画像データであり、識別する対象が画像の内容（車、木、人など）である場合を説明する。
【００１０】
図１に示すように、本実施形態に係る識別システムでは、学習段階において、学習させるための複数のデータ（データセット）が識別装置に入力される。識別装置はデータセットに基づいて学習済みモデル（ニューラルネットワーク）を構築する。
【００１１】
より、具体的には、識別装置は、ラベルを用いて識別対象データを分類するための学習済みモデルを構築する。識別装置は、入力データとラベルの評価とを用いて学習済みモデルを構築する。ラベルの評価には、データの内容がラベルに合致することを示す「正評価」、及び、データの内容がラベルに合致しないことを示す「負評価」を含む。正評価又は負評価は、「０」「１」などの数値（正解スコア、または識別スコア）に関連付けられており、これらの数値は正解値（Ground  Truth）ともいう。なお、「スコア」は数値であり、学習済みモデルでやり取りされる信号そのものを示す。識別装置は、入力データを演算し、演算結果である識別スコアと、正解スコアとが近づくように、演算時のパラメータを調整する。また、「識別スコア」とは、入力データと、入力データに関連づけされたラベルとの合致の度合いを示す。「正解スコア」とは、入力データに関連付けされたラベルの評価を示す。
【００１２】
そして、学習済みモデルが構築されると、識別段階として、この学習済みモデルを用いて、任意の入力が何であるかを識別できる。
【００１３】
＜１−１−２＞  識別システムの構成
続いて、図２を用いて、本実施形態に係る識別システムについて説明する。図２は、識別システムのハードウェア構成を示すブロック図である。
【００１４】
図２に示すように、識別システム１は、入出力インターフェース（Ｉ／Ｆ）１０、プロセッサ（ＣＰＵ：Central  Processing  Unit）２０、メモリ３０、識別装置４０を含む。
【００１５】
入出力インターフェース１０は、例えばデータセットが入力されたり、識別結果を出力したりする。
【００１６】
プロセッサ２０は、識別システム１の全体を制御する。
【００１７】
メモリ３０は、例えばＲＡＭ（Random Access Memory）、ＲＯＭ（Read Only Memory）を含む。
【００１８】
識別装置４０は、学習段階において、例えばデータセットから、特徴を学習し、学習済みモデルを構築する。構築された学習済みモデルは、識別装置４０における各演算部で用いられる重み係数として表される。すなわち、識別装置４０は、例えば、ある画像「Ｘ」が描かれた画像に対応する入力データが入力されたときに、入力データが画像「Ｘ」であることを出力するような学習済みモデルを構築する。識別装置４０は、多くの入力データを受信することで、学習済みモデルの精度を向上できる。なお、識別装置４０の学習済みモデルの構築方法については後述する。
【００１９】
識別装置４０は、識別段階において、学習済みモデルにおける重み係数を取得する。学習済みモデルがアップデートされた場合、識別装置４０は、新たな学習済みモデルの重み係数を取得することで、識別の精度を向上させる。重み係数を取得した識別装置４０は、識別対象の入力データを受け取る。そして、識別装置４０は、重み係数を用いた学習済みモデルに入力データを入力して、入力データを識別する。
【００２０】
識別システム１の各機能は、プロセッサ２０が、メモリ３０などのハードウェア上に所定のソフトウェアを読み込ませ、プロセッサ２０の制御の元でメモリ３０におけるデータの読み出し及び書き込みを行うことで実現される。識別装置４０は、ハードウェアでも良いし、プロセッサ２０に実行されるソフトウェアでも良い。
【００２１】
＜１−１−３＞  識別装置の構成
次に、図３を用いて、本実施形態に係る識別システムの識別装置について説明する。図３は、本実施形態に係る識別システムの識別装置を示すブロック図である。ここでは、学習段階における識別装置について説明する。
【００２２】
図３に示すように、識別装置４０は、学習部４１と、損失算出部４２と、補正部４３と、を備えている。例えば、識別装置４０の動作は、プロセッサ２０によって制御される。
【００２３】
メモリ３０に設けられた第１記憶部３１には、学習済みモデル（例えば複数の重み係数ｗ）が記憶されている。そして、学習部４１に、学習済みモデルが読み出される。
【００２４】
学習部４１は、第１記憶部３１から学習済みモデルが読み出されることで構成される。そして、学習部４１は、入出力インターフェース１０から受信した入力データに基づいて中間データを生成する。学習部４１は、メモリ３０に設けられた第２記憶部３２に、中間データを記憶させる。学習部４１は、中間データに基づいて、学習済みモデルの一部となる出力データ（識別スコア）を生成する。学習部４１は、メモリ３０に設けられた第３記憶部３３に、出力データを記憶させる。また、学習部４１は、入出力インターフェース１０から受信した入力データではなく、第２記憶部３２に記憶された中間データに基づいて、学習済みモデルの一部となる出力データを生成しても良い。
【００２５】
損失算出部４２は、第３記憶部３３から供給された出力データと、メモリ３０に設けられた第４記憶部３４に記憶された正解データと、に基づいて、出力データ（識別スコア）と正解データ（正解スコア）との損失（誤差）を算出する。つまり、損失算出部４２は、学習部４１からの演算結果を評価する評価部として機能する。損失算出部４２は、メモリ３０に設けられた第５記憶部３５に、損失を示すデータ（損失データ）を記憶させる。なお、正解データは、例えば第４記憶部３４に記憶されている。
【００２６】
補正部４３は、第５記憶部３５から供給された損失データに基づき、出力データ（識別スコア）と正解データ（正解スコア）とが近づくように、学習部４１の演算パラメータを補正（更新）するための補正データを生成し、出力する。また、補正部４３は、補正データを用いて、第１記憶部３１のデータを補正する。これにより、学習モデルは補正される。なお、補正部４３による補正は、例えば勾配法を用いた補正を適用できる。
【００２７】
＜１−１−４＞  学習部の構成
次に、図４を用いて、本実施形態に係る識別システムの学習部について説明する。図４は、本実施形態に係る識別システムの学習部を示すブロック図である。上述したように、学習部は、第１記憶部３１に記憶された学習済みモデルに基づいて構成される。以下では、学習済みモデルとして、多層（３層以上）の処理層を備える多層ニューラルネットワークを採用する場合について説明する。以下では、学習済みモデルと、多層ニューラルネットワークと、は同義とする。
【００２８】
図４に示すように、学習部４１は、入力層４１１と、中間層４１２と、出力層４１３と、を備えている。
【００２９】
入力層４１１は、入力用のニューロンが並列に配置される。入力用のニューロンは、入力データを、中間層４１２にて処理できるような処理データとして取得して、中間層４１２に含まれる処理用のニューロンへ出力（分配）する。本実施形態のニューロンとは、脳のニューロンを模したモデルである。また、ニューロンをノードと記載しても良い。
【００３０】
中間層４１２は、多層（例えば３階層以上）の処理層を備え、各層は処理用のニューロンが並列に配置される。処理用のニューロンのそれぞれは、重み係数を用いて処理データを演算し、演算結果（演算データ）を後続する層のニューロン（１つ、または複数のニューロン）に出力する。
【００３１】
出力層４１３は、ラベルの数と同じ数の出力用のニューロンが並列に配置される。このラベルは、識別対象データに関連付けられている。出力層４１３は、中間層４１２から受信した中間データに基づき、出力用のニューロン毎に、識別スコアを出力する。つまり、学習部４１では、ラベルごとに識別スコアを出力する。例えば、学習部４１が「車」、「木」、「人」の３つの画像を識別する場合、出力層４１３は、「車」、「木」、「人」の３つのラベルに合わせて３つの出力用のニューロンが配置されている。出力用のニューロンは、「車」のラベルに対応する識別スコア、「木」のラベルに対応する識別スコア、「人」のラベルに対応する識別スコアを出力する。
【００３２】
＜１−１−５＞  中間層の構成
次に、図５を用いて、本実施形態に係る識別システムの中間層について説明する。図５は、実施形態に係る識別システムの中間層のモデルを示す図である。中間層の構成は、残差ネットワーク（Ｒｅｓｉｄｕａｌ  ｎｅｔｗｏｒｋ、またはＲｅｓＮｅｔ)と呼ばれるモデルである。この残差ネットワークは、処理層の数（層数とも記載する）が通常のニューラルネットワークのモデルにおける処理層の数よりも多く、且つ処理層の入力と出力を接続する迂回経路（ショートカット及び加算器）が設けられている点で、通常のニューラルネットワークと異なる。なお、下記の中間層のモデルは一例である。
【００３３】
図５に示すように、中間層４１２は、複数の処理層（図５の例では、Ｎ（Ｎは４以上の整数）層）４１２０を備える。処理層４１２０（２）〜（Ｎ）のそれぞれの出力には加算器４１２１（２）〜（Ｎ）が設けられる。また、処理層４１２０（２）〜（Ｎ）のそれぞれに入力されるデータを、演算させないようにバイパスさせるショートカットが設けられている、そして、それぞれの加算器４１２１（２）〜（Ｎ）は、処理層４１２０（２）〜（Ｎ）の出力と、ショートカットを介して供給された処理層４１２０（１）〜（Ｎ−１）の出力と、を足し合せる。なお、ショートカットの位置や数等は適宜変更可能である。
【００３４】
各処理層４１２０は、図示しない複数の処理用のニューロンを並列に備えている。そして、処理用のニューロンは、各処理層４１２０に設定された重み係数ｗに基づいて、入力データを演算し、各ニューロンの出力データであるデータｙ（アクティベーションとも記載する）を生成する。
【００３５】
各ショートカットは、ある処理層４１２０の入力データを、その処理層４１２０をバイパスして、その処理層４１２０の後段の加算器に供給する。
【００３６】
加算器４１２１は、ショートカットを介して供給されたデータと、前段の処理層４１２０から供給されたデータを加算する。
【００３７】
なお、中間層４１２は、データの入力される処理層４１２０から、データが出力される処理層４１２０へと順に、処理層４１２０、及び加算器４１２１が設けられている。ある処理層４１２０に着目したとき、データの入力側の処理層４１２０または加算器４１２１を「前段」と記載し、データの出力側の処理層４１２０または加算器４１２１を「後段」と記載する。
【００３８】
以下に、中間層４１２の具体例について説明する。
【００３９】
中間層４１２の入力側に配置された第１処理層４１２０（１）は、図示しない複数の処理用のニューロンを並列に備えている。処理用のニューロンはそれぞれ、入力層４１１のニューロンに接続される。そして、処理用のニューロンはそれぞれ、第１処理層４１２０（１）に設定された重み係数ｗ１に基づいて、入力データｘを演算し、データｙ１を生成する。データｙ１は、第２処理層４１２０（２）と、ショートカットを介して加算器４１２１（２）と、に送られる。
【００４０】
第２処理層４１２０（２）の複数のニューロンはそれぞれ、第１処理層４１２０（１）のニューロンに接続される。そして、処理用のニューロンはそれぞれ、第２処理層４１２０（２）に設定された重み係数ｗ２に基づいて、データｙ１を演算し、データｙ２を生成する。
【００４１】
加算器４１２１（２）は、第２処理層４１２０（２）からのデータｙ２と、第１処理層４１２０（１）からのデータｙ１と、を加算してデータｙ２ｐを生成する。データｙ２ｐは、第３処理層４１２０（３）と、加算器４１２１（３）と、に送られる。
【００４２】
第３処理層４１２０（３）の複数のニューロンそれぞれは、加算器４１２１（２）に接続される。そして、処理用のニューロンはそれぞれ、第３処理層４１２０（３）に設定された重み係数ｗ３に基づいて、データｙ２ｐを演算し、データｙ３を生成する。
【００４３】
加算器４１２１（３）は、第３処理層４１２０（３）からのデータｙ３と、加算器４１２１（２）からのデータｙ２ｐと、を加算してデータｙ３ｐを生成する。データｙ３ｐは、図示しない第４処理層４１２０（４）と、図示しない加算器４１２１（４）と、に送られる。
【００４４】
第Ｎ処理層４１２０（Ｎ）の複数の処理用のニューロンはそれぞれ、図示しない加算器４１２１（Ｎ−１）に接続される。そして、処理用のニューロンはそれぞれ、第Ｎ処理層４１２０（Ｎ）に設定された重み係数ｗＮに基づいて、データｙ（Ｎ−１）ｐ（★図も修正）を演算し、データｙＮを生成する。
【００４５】
加算器４１２１（Ｎ）は、第Ｎ処理層４１２０（Ｎ）からのデータｙＮと、加算器４１２１（Ｎ−１）からのデータｙ（Ｎ−１）ｐと、を加算してデータｙＮｐを生成する。加算器４１２１（Ｎ）は、生成したデータｙＮｐを、中間データとして出力する。
【００４６】
＜１−２＞  動作
＜１−２−１＞  学習段階の動作の概要
本実施形態に係る識別システムの学習段階の動作（学習動作）の概要について説明する。
【００４７】
学習動作において、学習部４１は、処理層４１２０毎に出力データを生成する。そして、損失算出部４２は、処理層４１２０毎に出力データと正解データとの損失を算出する。さらに、補正部４３は、損失データに基づき、出力データと正解データとが近づくように、処理層４１２０毎の演算パラメータを補正するための補正データを生成する。このようにして、 補正部４３は、すべての処理層４１２０に関する補正データを生成する。
【００４８】
＜１−２−２＞  学習段階の動作の詳細
次に、図６を用いて、本実施形態に係る識別システムの学習動作について詳細に説明する。図６は、本実施形態に係る識別システムの学習動作を示すフローチャートである。
【００４９】
［Ｓ１００１］
学習部４１は、第１記憶部３１に記憶された学習済みモデルを読み出す。この学習済みモデルは、例えばプロセッサ２０に設定される。
【００５０】
［Ｓ１００２］
上述したように、学習部４１は、第Ｍ処理層４１２０（Ｍ）毎に出力データを生成する（Ｍは１以上の任意の整数）。学習動作を行なう際、学習部４１は、第１処理層４１２０（１）を選択するために、変数Ｍを１に設定する（Ｍ＝１）。
【００５１】
［Ｓ１００３］
学習部４１は、入力データ、または第２記憶部３２に記憶された中間データ（学習済みモデルの補正前に演算した前段の第Ｍ−１処理層からのデータ）を用いて、第Ｍ処理層４１２０（Ｍ）の中間データ及び出力データを生成する。本処理において、学習部は、ショートカットを介して他の処理層による演算をスキップする。
【００５２】
［Ｓ１００４］
学習部４１は、メモリ３０に（Ｓ１００３）で生成された中間データ及び出力データを記憶させる。具体的には、学習部４１は、第Ｍ処理層４１２０（Ｍ）によって生成された中間データを、第２記憶部３２に記憶する。学習部４１は、第Ｍ処理層４１２０（Ｍ）によって生成された中間データに基づいて、出力データを生成する。そして、第Ｍ処理層４１２０（Ｍ）に関する出力データを、第３記憶部３３に記憶する。つまり、第２記憶部３２には、少なくとも第Ｍ処理層４１２０（Ｍ）の中間データと、第Ｍ処理層４１２０（Ｍ）に入力されるデータと、が記憶されていれば良く、全ての処理層の中間データが記憶される必要はない。同様に、第３記憶部３３には、少なくとも第Ｍ処理層４１２０（Ｍ）の出力データが記憶されていればよく、全ての処理層の出力データが記憶される必要はない。
【００５３】
なお、中間データ及び出力データは、メモリ３０の未使用の領域に書き込まれても良いし、続く（Ｓ１００３）において使用されない無効なデータが記憶されている領域に上書きされても良い。メモリの使用量の抑制の観点から、できるだけ使用されないデータに上書きされることが好ましい。
【００５４】
［Ｓ１００５］
損失算出部４２は、第Ｍ処理層４１２０（Ｍ）に基づく出力データと正解データとの損失を算出する。
【００５５】
［Ｓ１００６］
補正部４３は、算出した損失に関する損失データに基づき、出力データと正解データとが近づくように、第Ｍ処理層４１２０（Ｍ）の演算パラメータ（重み係数ｗＭ）を補正するための補正データを生成する。この補正データを用いて、第１記憶部３１に記憶された学習済みモデルの補正が行われる。
【００５６】
［Ｓ１００７］
プロセッサ２０は、変数Ｍが第１値（例えば図５のＮ）に達したか否かを判定する。
【００５７】
［Ｓ１００８］
プロセッサ２０は、Ｍが第１値に達していないと判定する場合（Ｓ１００７のＮＯ）、Ｍを１繰り上げて、Ｓ１００３以降の動作を繰り返す。
【００５８】
また、プロセッサ２０は、変数Ｍが第１値に達したと判定する場合（Ｓ１００７のＹＥＳ）、中間層４１２の全処理層４１２０に関する一巡の学習動作を終了する。つまり、識別装置４０は、入力に近い処理層４１２０から出力に近い処理層４１２０へ逐次的に重み係数を補正する。
【００５９】
以上のＳ１００１〜Ｓ１００８を所望の回数繰り返すことにより、学習済みモデルが構築される。
【００６０】
＜１−２−３＞  学習動作の具体例
上述したように、識別装置４０は、学習動作において、第１処理層から第Ｎ処理層まで順に演算及び補正を行なう。
【００６１】
以下に、学習動作の理解を容易にするために、具体例について説明する。ここでは、第１〜第Ｎ処理層４１２０（１）〜（Ｎ）のうち、第１処理層４１２０（１）、第２処理層４１２０（２）、第３処理層４１２０（３）、及び第Ｎ処理層４１２０（Ｎ）について説明する。
【００６２】
まず図７を用いて、第１処理層４１２０（１）の学習動作における中間層４１２の動作について説明する。図７は、学習動作における第１処理層４１２０（１）の動作を示す模式図である。
【００６３】
図７に示すように、入力層４１１に入力データが入力されると、まず、中間層４１２は、第１処理層４１２０（１）にのみ演算させる。そして、中間層４１２は、他の処理層４１２０による演算は行なわず（他の処理層４１２０の演算をスキップし）、ショートカットを介して、第１処理層４１２０（１）によって生成されたデータｙ１を中間データとして出力する。そして、中間層４１２は、第２記憶部３２に、データｙ１を記憶する。また、出力層４１３は、データｙ１に基づいて、出力データを生成する。
【００６４】
これにより、メモリ３０には、第１処理層４１２０（１）に関する中間データ及び出力データが記憶される。そして、損失算出部４２、及び補正部４３により、第１処理層４１２０（１）に関する補正データが生成される。これにより、第１処理層４１２０（１）に関する重み係数ｗ１が補正データに基づいて補正される。
【００６５】
第１処理層４１２０（１）に関する重み係数ｗ１が補正されると、続いて次段の第２処理層４１２０（２）を用いて演算が行なわれる。
【００６６】
図８を用いて、第２処理層４１２０（２）の学習動作における中間層４１２の動作について説明する。図８は、学習動作における第２処理層４１２０（２）の動作を示す模式図である。
【００６７】
図８に示すように、中間層４１２は、第２処理層４１２０（２）にのみ演算させて、データを出力する。第２処理層４１２０（２）は、第２記憶部３２に記憶された第１処理層４１２０（１）の演算結果（データｙ１）に基づいてデータｙ２を生成する。中間層４１２は、加算器４１２１（２）により、データｙ１と、データｙ２と、に基づいてデータｙ２ｐを生成する。そして、中間層４１２は、他の処理層４１２０による演算は行なわず（他の処理層４１２０の演算をスキップし）、ショートカットを介して、データｙ２ｐを中間データとして出力する。そして、中間層４１２は、第２記憶部３２に、データｙ２ｐを記憶する。また、出力層４１３は、データｙ２ｐに基づいて、出力データを生成する。
【００６８】
これにより、メモリ３０には、第２処理層４１２０（２）に関する中間データ及び出力データが記憶される。そして、損失算出部４２、及び補正部４３により、第２処理層４１２０（２）に関する補正データが生成される。これにより、第２処理層４１２０（２）に関する重み係数ｗ２が補正データに基づいて補正される。
【００６９】
第２処理層４１２０（２）に関する重み係数ｗ２が補正されると、続いて次段の第３処理層４１２０（３）を用いて演算が行なわれる。
【００７０】
図９を用いて、第３処理層４１２０（３）の学習動作における中間層４１２の動作について説明する。図９は、学習動作における第３処理層４１２０（３）の動作を示す模式図である。
【００７１】
図９に示すように、中間層４１２は、第３処理層４１２０（３）にのみ演算させて、データを出力する。第３処理層４１２０（３）は、第２記憶部３２に記憶された第２処理層４１２０（２）の演算結果（データｙ２ｐ）に基づいてデータｙ３を生成する。中間層４１２は、加算器４１２１（３）により、データｙ２ｐと、データｙ３と、に基づいてデータｙ３ｐを生成する。そして、中間層４１２は、他の処理層４１２０による演算は行なわず（他の処理層４１２０の演算をスキップし）、ショートカットを介して、データｙ３ｐを中間データとして出力する。そして、中間層４１２は、第２記憶部３２に、データｙ３ｐを記憶する。また、出力層４１３は、データｙ３ｐに基づいて、出力データを生成する。
【００７２】
これにより、メモリ３０には、第３処理層４１２０（３）に関する中間データ及び出力データが記憶される。そして、損失算出部４２、及び補正部４３により、第３処理層４１２０（３）に関する補正データが生成される。これにより、第３処理層４１２０（３）に関する重み係数ｗ３が補正データに基づいて補正される。
【００７３】
第３処理層４１２０（３）に関する重み係数ｗ３が補正されると、続いて図示しない次段の第４処理層４１２０（４）を用いて演算が行なわれる。
【００７４】
第４〜第Ｎ−１処理層４１２０（４）〜（Ｎ−１）の動作は、第３処理層４１２０（３）に関する動作と同様である。
【００７５】
図１０を用いて、第Ｎ処理層４１２０（Ｎ）の学習動作における中間層４１２の動作について説明する。図１０は、学習動作における第Ｎ処理層４１２０（Ｎ）の動作を示す模式図である。
【００７６】
図１０に示すように、中間層４１２は、第Ｎ処理層４１２０（Ｎ）にのみ演算させて、データを出力する。第Ｎ処理層４１２０（Ｎ）は、第２記憶部３２に記憶された第Ｎ−１処理層４１２０（Ｎ−１）の演算結果（データｙ（Ｎ−１）ｐ）に基づいてデータｙＮを生成する。中間層４１２は、加算器４１２１（Ｎ）により、データｙＮ−１ｐと、データｙＮと、に基づいてデータｙＮｐを生成する。そして、中間層４１２は、データｙＮｐを中間データとして出力する。そして、中間層４１２は、第２記憶部３２に、データｙＮｐを記憶する。また、出力層４１３は、データｙＮｐに基づいて、出力データを生成する。
【００７７】
これにより、メモリ３０には、第Ｎ処理層４１２０（Ｎ）に関する中間データ及び出力データが記憶される。そして、損失算出部４２、及び補正部４３により、第Ｎ処理層４１２０（Ｎ）に関する補正データが生成される。これにより、第Ｎ処理層４１２０（Ｎ）に関する重み係数ｗＮが補正データに基づいて補正される。
【００７８】
＜１−３＞  効果
上述した実施形態によれば、識別システムは、学習段階において、少なくとも１回は、中間層における処理層の１つの演算結果を、ショートカットを介して、処理層の演算をスキップさせる。そして、識別システムは、スキップにより得られた演算結果に基づいて、損失を演算する。そして、識別システムは、得られた損失に基づいて、当該処理層の重み係数を補正する。
【００７９】
以下に、本実施形態の効果を説明するために、比較例について説明する。
【００８０】
中間層として採用されるモデルの１つとして、ショートカットを有さない多層ネットワークモデルが考えられる（図１１参照）。このようなモデルを用いた学習動作では、データの入力側に近い処理層から、データの出力側に近い処理層に向かって、順次演算が行なわれる。この動作を順伝播とも記載する。そして、順伝播によって算出された中間データに基づいて、補正データが生成され、中間層において、データの出力側に近い処理層から、データの入力側に近い処理層に向かって、順次補正される。この動作を誤差逆伝播法（単に逆伝播とも記載する）とも記載する。処理層の数が多層となる場合、データの入力側に近い処理層になるにつれて、勾配が小さい値に収束してしまい、勾配が消失してしまうという問題がある。勾配が消失してしまうと、更新が行われず学習が進まないという問題がおきる。
【００８１】
そこで、上述したように、ある処理層４１２０の演算をスキップさせるショートカットを設けることで、上記の問題を解決することができる。
【００８２】
また、一方で、ある処理層４１２０の演算をスキップさせるショートカットを設けたモデルにおいて、逆伝播を用いて、処理層の重み係数を補正することも考えられる。逆伝播によって、補正を行なう場合、順伝播によって、全ての処理層の演算を行なう必要がある。この場合、メモリ３０に、全ての処理層の演算結果を記憶する必要がある。そのため、処理層の数の増加に応じて、メモリ３０に求められる容量も増加してしまうという問題がある。
【００８３】
しかしながら、本実施形態では、学習動作として、１つの処理層にて演算を行い、当該処理層の補正を行なう方式を採用している。その結果、少なくとも、メモリ３０には、補正が行なわれる処理層の演算結果と、補正が行なわれる処理層に入力される演算結果と、が記憶されていれば良い。
【００８４】
そのため、図１２に示すように、処理層の数が増加しても、メモリの使用量の増加をア抑制できる。なお、図１２の横軸は、処理層の層数を示し、縦軸はメモリの使用量を示している。図１２は具体的な例の１つであり、必ずしもこれに限らない。
【００８５】
以上のように、上述した実施形態によれば、学習の速度の低下を抑制しつつ、メモリの使用量も抑制できる識別システムを提供できる。
【００８６】
＜２＞変形例
続いて、実施形態の変形例について説明する。
【００８７】
変形例では、図１３を用いて、識別システムの他の学習動作について詳細に説明する。図６を用いて説明した動作と同様の動作に関しては説明を省略する。
【００８８】
［Ｓ１００１］〜［Ｓ１００７］
図１３におけるＳ１００１〜Ｓ１００７は、基本的に図６におけるＳ１００１〜Ｓ１００７と同じである。
【００８９】
［Ｓ２００８］
プロセッサ２０は、変数Ｍが第１値に達していないと判定する場合（Ｓ１００７のＮＯ）、学習部４１は、入力データ、または第２記憶部３２に記憶された中間データ（学習済みモデルの補正後に演算した前段の第Ｍ−１処理層４１２０（Ｍ−１）のデータ）を用いて、第Ｍ処理層４１２０（Ｍ）の中間データを生成する。本処理において、学習部は、ショートカットを介して他の処理層による処理をスキップする。
【００９０】
［Ｓ２００９］
学習部４１は、メモリ３０にＳ２００８で生成された中間データを記憶させる。具体的には、学習部４１は、学習済みモデルの補正後の第Ｍ処理層４１２０（Ｍ）によって生成された中間データを、第２記憶部３２に記憶する。
【００９１】
これにより、第２記憶部３２には、学習済みモデルの補正後に演算した第Ｍ処理層のデータが記憶されることになる。
【００９２】
［Ｓ２０１０］
プロセッサ２０は、変数Ｍを１繰り上げて、Ｓ１００３以降の動作を繰り返す。
【００９３】
上述したように、図６で説明した動作に対し、Ｓ２００８、Ｓ２００９の処理を追加したことにより、Ｓ１００３では、学習済みモデルの補正後に演算した前段の第Ｍ−１処理層４１２０（Ｍ−１）のデータを用いて、第Ｍ処理層４１２０（Ｍ）の中間データを生成することができる。そのため、より高精度に第Ｍ処理層４１２０（Ｍ）の重み係数を補正することができる。
【００９４】
なお、上述した実施形態では、学習動作において、補正が行なわれる処理層以外の処理層の動作をスキップできる旨を記載したが、必ずしもこれに限らない。例えば、モデルの都合上、スキップできない処理層、つまりショートカットが設けられていない処理層が存在しても、本実施形態を適用することが可能となる。
【００９５】
以上、本発明の実施形態を説明したが、本発明は上記実施形態に限定されるものではなく、その趣旨を逸脱しない範囲内において種々変形して実施することが可能である。さらに、上記実施形態には種々の段階の発明が含まれており、開示された構成要件を適宜組み合わせることによって種々の発明が抽出される。例えば、開示された構成要件からいくつかの構成要件が削除されても、所定の効果が得られるものであれば、発明として抽出され得る。
【符号の説明】
【００９６】
１…識別システム
１０…入出力インターフェース
２０…プロセッサ
３０…メモリ
３１…記憶部
３２…記憶部
３３…記憶部
３４…記憶部
３５…記憶部
４０…識別装置
４１…学習部
４２…損失算出部
４３…補正部
４１１…入力層
４１２…中間層
４１３…出力層
４１２０…処理層
４１２１…加算器
【図１】
2019200657.tif 000003
【図２】
2019200657.tif 000004
【図３】
2019200657.tif 000005
【図４】
2019200657.tif 000006
【図５】
2019200657.tif 000007
【図６】
2019200657.tif 000008
【図７】
2019200657.tif 000009
【図８】
2019200657.tif 000010
【図９】
2019200657.tif 000011
【図１０】
2019200657.tif 000012
【図１１】
2019200657.tif 000013
【図１２】
2019200657.tif 000014
【図１３】
2019200657.tif 000015