以下、学習システム等の実施形態について図面を参照して説明する。なお、実施の形態において同じ符号を付した構成要素は同様の動作を行うので、再度の説明を省略する場合がある。
(実施の形態1)
本実施の形態において、フォーワードプロパゲーションとバックワードプロパゲーションとを行う深層学習による学習を高速かつ精度高く行う学習システムについて説明する。
特に、実施の形態1の学習システムは、例えば、データ並列を用いた短期事前学習により、同一プロセス内で高速・並列に複数のLRセットを評価する。さらに、具体的には、複数のLRセットを用意し、エポックより少数の反復回数(α)だけ短期の事前学習を行い、学習データセットの推論結果を元に精度を比較する。そして、最も精度の良いLRで残りの学習(β)を行う。かかる本願の発明を用いることで、未知のネットワーク試験でも数少ない演算量・時間で複数のLRの検証を行うことができる。
なお、フォーワードプロパゲーション、バックワードプロパゲーションは公知技術であるので、詳細な説明を省略する。
また、本実施の形態において、特に、処理装置において事前学習を行った後に主学習を行う学習システムについて説明する。
また、本実施の形態において、事前学習で使用する学習係数を変更する処理を行う学習システムについて説明する。
また、本実施の形態において、2以上の変更情報セットを用いて、学習係数の変更を行う学習システムについて説明する。
図1は、本実施の形態における学習システムAの概念である。学習システムAは、1または2以上の処理装置1とサーバ装置2とを備える。1または2以上の各処理装置1とサーバ装置2とは、通信路により通信可能である。通信路は、例えば、バスであるが、インターネット等のネットワークでも良い。また、処理装置1は後述する演算を行う。後述する演算は、フォーワードプロパゲーションとバックワードプロパゲーションとを含む。また、サーバ装置2は、例えば、後述するモデル更新のための処理を行う。モデル更新は、後述する深層学習モデルの更新のための処理である。なお、モデル更新は、各処理装置1が行っても良い。
学習システムAは、例えば、深層学習の並列化における主流である同期型データ並列の処理を行うシステムである。
処理装置1は、事前学習と主学習とを含む1または2以上のエポックを実行し、深層学習モデルを更新していき、最終的な深層学習モデルを取得する。
なお、事前学習とは、1または2以上の各処理装置1で、異なる学習係数を使って、フォーワードプロパゲーションとバックワードプロパゲーションとを実施し、通常、最も効果の良かった学習係数を選定する処理である。また、事前学習において、2以上の各学習対象情報を深層学習モデルに順次、適用し、フォーワードプロパゲーションと、バックワードプロパゲーションとを行い、深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報を用いて深層学習モデルが有する重みを修正し、深層学習モデルを更新する。なお、一の処理装置1で、2以上の異なる学習係数を使って、事前学習を実施しても良い。
また、主学習とは、事前学習で選定された学習係数を用いて、フォーワードプロパゲーションとバックワードプロパゲーションとを実施し、深層学習モデルを更新する処理である。また、主学習において、2以上の各学習対象情報を深層学習モデルに順次、適用し、フォーワードプロパゲーションと、バックワードプロパゲーションとを行い、深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報をサーバ装置2に送信し、当該修正情報の送信に応じて、サーバ装置2から深層学習モデルの更新に関する更新情報を受信し、当該更新情報を用いて、深層学習モデルを更新する。
そして、処理装置1では、更新した深層学習モデルを用いて、次の学習対象情報を用いて、事前学習と主学習とを含む次のエポックを行う。
サーバ装置2は、2以上の各処理装置1から修正情報を受信し、当該2以上の修正情報を用いて、更新情報を取得し、当該更新情報を2以上の各処理装置1に送信する。
図2は、本実施の形態における学習システムAのブロック図の例である。学習システムAは、2以上の処理装置1、およびサーバ装置2を備える。
処理装置1は、格納部11、処理部12、送信部13、および受信部14を備える。格納部11は、モデル格納部111、学習情報格納部112、学習係数格納部113、および変更情報格納部114を備える。処理部12は、事前学習部121、主学習部122、更新部123、学習係数変更部124、および制御部125を備える。事前学習部121は、事前予測手段1211、および事前修正情報取得手段1212を備える。主学習部122は、主予測手段1221、および主修正情報取得手段1222を備える。
サーバ装置2は、サーバ格納部21、サーバ受信部22、サーバ処理部23、サーバ送信部24を備える。サーバ処理部23は、およびサーバ取得部231を備える。
処理装置1を構成する格納部11には、各種の情報が格納される。各種の情報とは、例えば、後述する深層学習モデル、後述する学習情報、後述する学習係数、後述する変更情報である。
モデル格納部111は、1または2以上の深層学習モデルが格納される。モデル格納部111に2以上の深層学習モデルが格納される場合、2以上の処理装置1で一のフォーワードプロパゲーションが行われた際に使用された深層学習モデルと、当該一のフォーワードプロパゲーションに対応するバックワードプロパゲーションが行われた結果を用いて更新された深層学習モデル(重みが更新された深層学習モデル)とを含む。深層学習モデルは、深層学習で使用されるモデルである。深層学習モデルは、2以上の各入力層と1または2以上の中間層と出力層とを有する。なお、重みとは、学習により更新されるパラメータ(「数値」と言っても良い)であり、例えば、0以上、1未満の数値である。ただし、パラメータは、負の値の場合もあり、深層学習モデルにより決まるものであり、限定されるものではない。
深層学習モデルとは、入力層と2層以上の中間層と出力層とを有する。入力層、中間層、および出力層の各層が有する2以上のノードのうちの少なくとも一部のノードの間が、重み付きのエッジにより連結されている。
入力層は、2以上のノードを有する。2以上の各ノードは、入力を受け付ける。入力を受け付けることは、入力からのエッジと接続されていることでも良い。2以上の各ノードは、中間層のノードへの2以上のエッジと接続されている。エッジとの接続を特定するデータ構造は問わない。エッジは、重みを有する。
中間層は、2以上のノードを有する。2以上の各ノードは、入力層のノードまたは他の中間層のノードまたは出力層のノードへ繋がる2以上のエッジと接続されている。
出力層は、2以上のノードを有する。2以上の各ノードは、中間層のノードからの2以上のエッジと接続されている。出力層の2以上の各ノードから情報が出力される。
深層学習モデルのイメージ図を図3に示す。図3において、ノードは、301の図柄の丸である(図3において一部のノードに符号301を付している)。エッジは、線302である(図3において一部のエッジに符号302を付している)。入力は、X0・・・Xnである。出力は、Y0・・・Ynである。また、図3において、各エッジには重み(Wi,Wj,Wk・・・)が付与されている(図3において一部のエッジにのみ重みを記載している)。
なお、深層学習モデルのデータ構造は問わないことは言うまでもない。深層学習モデルのデータ構造は、図3の構造が実現できるデータ構造であれば良い。
学習情報格納部112には、2以上の学習情報が格納される。学習情報は、学習対象情報を有する。学習情報は、学習対象情報と正解情報とを有することは好適である。学習対象情報は、学習対象の情報である。学習対象情報は、例えば、画像であるが、そのデータは問わない。学習対象情報は、例えば、動画、テキスト、音声等でも良い。正解情報は、正しい情報(正解)である。また、学習対象情報に対応付いている正解情報は、例えば、2以上である。正解情報は、例えば、出力層のノードに対応付けて格納されている。なお、教師なし学習の場合であれば、正解情報を有しない。
学習係数格納部113には、学習係数が格納される。学習係数は、深層学習モデルの重みを算出する際に使用する係数である。学習係数(「学習率」と言っても良い)をどのように設定するかは、計算時間や精度に大きく影響を与える。重みを算出する演算式は、例えば、以下の数式1である。
また、学習係数は、例えば、以下の数式1におけるLRである。数式1において、wは重みである。つまり、w(k)のkは、ステップの回数を示す。1ステップは、1回のフォーワードプロパゲーションと1回のバックワードプロパゲーションとにより、深層学習モデルが更新されるまでの処理である。つまり、w(k+1)は「k+1」回目のステップの重み、w(k)はk回目のステップの重みである。また、LR(k)は、k回目のステップで使用される学習係数である。L(w)は、後述するロス関数である。「∂L(w)/∂w」は、損失関数の勾配である。つまり、「∂L(w)/∂w」は、ロス関数の重みでの微分値(ロスの勾配∇L(w))である。
なお、数式1は、重みを算出する演算式の例であり、重みを算出するための演算式は、他の演算式でも良い。ただし、重みを算出する演算式は、項「-LR(k)∂L(w)/∂w|w=w(k)」を有することは好適である。
また、数式1に変えて、重みを算出する演算式は、以下の数式2、数式3でも良い。
数式2、3は、確率的勾配低下法による重み算出の演算式である。数式2において、wijが重みである。数式2のε、α、λはパラメータであり、上手く選ぶことが好適に学習には必要である。また、数式2のεは学習係数である。数式3のPjは出力層のノードの出力値である。数式3のdjは分類カテゴリのラベルデータである。
なお、本発明における事前処理と主処理とを組み合わせた学習処理は、重みを算出するための演算式の中に、学習係数とロス関数の微分値との積から求める項が入っている場合に、特に、有用である。
2以上の各処理装置1の学習係数格納部113には、他の処理装置1の係数とは異なる係数である学習係数が格納される。一の深層学習モデルに対して、例えば、学習係数は一つであるが、複数でも良い。一の深層学習モデルに対して、例えば、エッジごとに異なる学習係数が管理されていても良い。
変更情報格納部114には、変更情報が格納される。変更情報は、学習係数を変更するための情報である。2以上の各処理装置ごとに、変更情報が格納される。変更情報は、例えば、倍率である。2以上の各処理装置1ごとの変更情報のうちの1以上の変更情報は1未満であり、1以上の変更情報は1より大きいことは好適である。変更情報は、例えば、加算される数、減算される数でも良い。変更情報は、例えば、学習係数を変更するための演算式でも良い。
変更情報格納部114には、2以上の変更情報が格納されても良い。そして、2以上の各処理装置1ごとの変更情報のセットである変更情報セットは、異なっていても良い。つまり、2以上の各処理装置1で同じタイミングで使用される変更情報の集合である変更情報セットは、2以上存在しても良い。異なる2以上の変更情報セットは、ナローセットと、ワイドセットとを含むことは好適である。また、異なる2以上の変更情報セットは、ナローセットと、ミドルセットと、ワイドセットとを含むことはさらに好適である。ナローセットとは、2以上の各処理装置1ごとの変更情報の最大値と最小値の差が小さいセットである。ミドルセットとは、2以上の各処理装置1ごとの変更情報の最大値と最小値の差が中程度のセットである。ワイドセットとは、と、2以上の各処理装置ごとの変更情報の最大値と最小値の差がナローセットまたはミドルセットより大きいセットである。また、ナローセットは、ワイドセットより前のエポックで使用されることは好適である。また、ミドルセットは、ナローセットより後のエポックで使用され、ワイドセットより前のエポックで使用されることは好適である。
処理部12は、各種の処理を行う。各種の処理とは、例えば、事前学習部121、主学習部122、更新部123、学習係数変更部124、制御部125が行う処理である。
事前学習部121は、事前学習を行う。事前学習とは、主学習で使用する学習係数を選定するための学習である。
事前学習部121は、フォーワードプロパゲーション、およびバックワードプロパゲーションを行う。また、事前学習部121は、予測情報と正解情報とを用いて精度に関する精度情報を取得する。事前学習部121は、通常、2以上の予測情報と2以上の正解情報とを用いて精度に関する精度情報を取得する。なお、予測情報は、フォーワードプロパゲーションにより取得される。また、正解情報は、フォーワードプロパゲーションのために与えられた学習対象情報と対になる正解情報である。なお、精度情報を用いて、サーバ装置2で学習係数が選定される。また、2以上の予測情報は、出力層の2以上の各ノードの出力値である。予測情報は、予測値と言っても良い。また、2以上の正解情報は、出力層の2以上の各ノードに対応する正解情報である。正解情報は、正解値といっても良い。なお、正解情報は、例えば、学習対象情報と対に学習情報格納部112に格納されている正解情報、または学習対象情報から取得され得る正解情報である。なお、教師データ無し学習の場合、出力が目的関数に入力され、その出力を最小化する方向に重みの更新が行われる。
さらに詳細には、事前学習部121は、学習情報格納部112の2以上の各学習対象情報をモデル格納部111の深層学習モデルに適用し、予測情報を取得するフォーワードプロパゲーションを行う。また、事前学習部121は、フォーワードプロパゲーションで取得した予測情報とフォーワードプロパゲーションの対象である学習対象情報と対になる正解情報と学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、深層学習モデルが有する重みを修正し、深層学習モデルを更新するバックワードプロパゲーションを行う。また、事前学習部121は、取得した予測情報と正解情報とを用いて精度に関する精度情報を取得する。なお、精度情報を取得する処理とバックワードプロパゲーションの処理の順序は問わない。
また、事前学習部121の精度取得処理は問わない。事前学習部121は、フォーワードプロパゲーションで取得した予測情報の精度を取得できれば良い。事前学習部121は、例えば、格納部11に格納されているロス関数に、予測情報と正解情報とを代入し、ロスを算出する。ロス関数の例は、以下の数式4である。数式4は、平均2乗誤差を算出するロス関数である。
なお、数式4において、y(k)が予測値、y(k)は正解値である。
また、ロス関数は、クロスエントロピーを算出するロス関数等でも良い。かかるクロスエントロピーを算出するロス関数は、例えば、上述した数式3である。
精度の算出の概念図は図4である。図4において、例えば、学習対象情報は、画像である。また、予測値y(k)と正解値y(k)との差の2乗の平均値がロス「L(w)」である。
そして、事前学習部121は、ロス「L(w)」を用いて、精度情報を取得する。事前学習部121は、例えば、「Validation Top 5 error「%」」を使って、精度を算出する。なお、「Validation Top 5 error「%」」は、上位5つの候補に正解が含まれていない率を表す。また、精度を算出する演算式は、格納部11に格納されている。また、精度は、「Validation Top 1 error「%」」等でも良い。
また、事前学習部121は、ロス関数の出力L(w)を精度情報として取得しても良い。また、事前学習部121は、L(w)を学習係数選択のための「評価値」として,用いても良い。また、事前学習部121は、クロスエントロピーとソフトマックスとを組み合わせたものを精度情報として取得しても良い。ソフトマックスは分類問題において常用されている手法である(URL:https://www.hellocybernetics.tech/entry/2016/11/30/012350 参照のこと)。
事前学習部121は、例えば、一のエポックの次のエポックにおいて、後述する学習係数変更部124が変更した学習係数を用いて、バックワードプロパゲーションを行う。
事前学習部121は、通常、2回以上、フォーワードプロパゲーションとバックワードプロパゲーションとを行う。
事前予測手段1211は、学習情報格納部112の2以上の各学習対象情報をモデル格納部111の深層学習モデルに順次、適用し、学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーションを行う。なお、事前予測手段1211が一度用いた学習対象情報は、再度、用いないことは好適である。また、事前予測手段1211は、同一のエポック内で、一度用いた学習対象情報は、再度、用いないことは好適である。なお、かかるフォーワードプロパゲーション自体の処理は公知技術であるので、詳細な説明は省略する。
事前修正情報取得手段1212は、予測情報とフォーワードプロパゲーションの対象である学習対象情報に対応する正解情報と学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、フォーワードプロパゲーションで使用した深層学習モデルが有する重みを修正し、深層学習モデルを更新するバックワードプロパゲーションを行い、かつ精度に関する精度情報を取得する。なお、かかるバックワードプロパゲーション自体の処理、精度情報の取得処理は公知技術であるので、詳細な説明は省略する。なお、教師なし学習の場合は、事前修正情報取得手段1212は、予め格納されている目的関数に出力を入力し、その出力を最小化する方向に重みの更新を行う。また、教師なし学習の場合の重みの更新の技術は公知技術であるので、詳細な説明は省略する。
主学習部122は、学習情報格納部112の学習対象情報を深層学習モデルに適用し、学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーションを行う。そして、主学習部122は、フォーワードプロパゲーションで取得した予測情報とフォーワードプロパゲーションの対象である学習対象情報に対応する正解情報と、選別された学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、フォーワードプロパゲーションで使用した深層学習モデルが有する重みを修正するための修正情報を取得するバックワードプロパゲーションを行う。
選別された学習係数は、例えば、後述する受信部14がサーバ装置2から受信した学習係数である。本実施の形態において、主に、サーバ装置2が2以上の処理装置1から受信した精度情報を用いて、最も精度の良い処理装置1における学習係数を1以上の処理装置1に送信する場合を説明する。ただし、選別された学習係数は、例えば、いずれかの処理装置1により、2以上の各処理装置1が取得した精度情報を用いて、選別された学習係数でも良い。つまり、予め決められた条件を満たすほど高い精度を示す精度情報に対応する学習係数であれば良く、選別の処理を行う装置は問わない。なお、予め決められた条件を満たすほど高い精度を示す精度情報は、通常、最も高い精度を示す精度情報である。
主学習部122は、通常、2回以上、フォーワードプロパゲーションとバックワードプロパゲーションと繰り返して行う。
主予測手段1221は、学習情報格納部112の学習対象情報を更新部123が更新した深層学習モデルに適用し、学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーションを行う。
主修正情報取得手段1222は、予測情報と正解情報と受信部14が受信した学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、フォーワードプロパゲーションで使用した深層学習モデルが有する重みを修正するための修正情報を取得するバックワードプロパゲーションを行う。
更新部123は、後述する受信部14が受信した更新情報を用いて、深層学習モデルを更新する。更新対象の深層学習モデルは、通常、最新の深層学習モデルである。
更新部123は、受信部14が受信した更新情報を用いて、例えば、モデル格納部111の深層学習モデルを更新する。
更新情報は、例えば、重みを更新するための修正情報である。修正情報は、前のエッジの重みに対する修正値でも良い。かかる場合、例えば、修正情報は、エッジ識別子と修正値の対の情報の集合でも良いし、エッジの順序が決まっている場合において、修正値の集合でも良い。また、修正情報は、各エッジに対して修正された重みの集合でも良い。かかる場合、例えば、修正情報は、エッジ識別子と重みの対の情報の集合でも良いし、エッジの順序が決まっている場合において、重みの集合でも良い。
更新情報は、例えば、重みが更新された深層学習モデルそのものでも良い。
学習係数変更部124は、一のエポックで使用された学習係数に対して、変更情報を用いて、学習係数を変更する。学習係数変更部124は、例えば、関数「変更された学習係数=f(学習係数,変更情報)」により、変更された学習係数を取得する。
学習係数変更部124は、例えば、一のエポックで使用された学習係数に変更情報を乗算し、変更された学習係数を取得する。なお、かかる場合、変更情報は倍率である。
学習係数変更部124は、少なくとも2つの各エポックにおける変更情報を用いる場合に、異なる変更情報セットの変更情報を用いて、学習係数を変更する。
異なる2以上の変更情報セットとして、ナローセットと、ワイドセットとが存在する場合、学習係数変更部124は、ナローセットをワイドセットより前のエポックで使用されることは好適である。
また、異なる2以上の変更情報セットとして、ナローセットと、ミドルセットと、ワイドセットとが存在する場合、学習係数変更部124は、ナローセット、ミドルセット、ワイドセットの順で、3以上の各エポックにおいて、変更情報セットが使用されることは好適である。
制御部125は、事前学習部121が行う事前学習および主学習部122が行う主学習のセットであるエポックを2以上行わせる。
制御部125は、事前学習および主学習のセットであるエポックの繰り返し処理を終了させる。制御部125は、予め決められた条件を満たした場合に、処理を終了させる。なお、制御部125は、例えば、予め格納されている終了条件に合致するか否かを判断し、合致する場合は次のエポックを実施し、合致しない場合は次のエポックを実施しない。終了条件は、例えば、格納されているエポック数に関する条件である。格納されているエポック数に関する条件は、例えば、「現在までに実行されたエポック数<予定されているエポック数」である。なお、予定されているエポック数は、例えば、100である。また、終了条件は、例えば、サーバ装置2から処理終了の情報を受信したことである。また、終了条件は、例えば、直前のエポックにおける処理結果である更新情報の絶対値が閾値以下または閾値未満であることである。その他、終了条件は問わない。
送信部13は、主学習部122が取得した修正情報をサーバ装置2に送信する。送信部13は、修正情報と精度情報と学習係数とをサーバ装置2に送信しても良い。送信とは、バスを経由した情報の送付でも良い。
受信部14は、サーバ装置2から深層学習モデルの更新に関する更新情報を受信する。受信部14は、サーバ装置2から深層学習モデルの更新に関する更新情報と学習係数とを受信する。受信とは、バスを経由した情報の受け付けでも良い。
サーバ装置2を構成するサーバ格納部21には、各種の情報が格納される。各種の情報とは、例えば、修正情報、更新情報である。
サーバ受信部22は、2以上の各処理装置1から修正情報を受信する。サーバ受信部22は、修正情報と精度情報と学習係数とを2以上の各処理装置1から受信しても良い。
サーバ処理部23は、各種の処理を行う。各種の処理とは、例えば、サーバ取得部231が行う処理である。
サーバ取得部231は、2以上の精度情報を用いて、予め決められた条件を満たすほど高い精度を示す精度情報に対応する学習係数と修正情報とを取得し、修正情報を用いて更新情報を取得しても良い。予め決められた条件は、例えば、最も高い精度を示すことである。
サーバ取得部231は、サーバ受信部22が受信した2以上の修正情報を用いて、更新情報を取得する。
サーバ取得部231は、例えば、サーバ受信部22が受信した2以上の各修正情報が有する各エッジの更新量の代表値を算出し、当該各エッジの代表値を有する更新情報を取得する。代表値は、例えば、平均値であるが、中央値等でも良い。なお、かかる場合、更新情報は、各エッジの重みの更新量の集合を有する。更新情報は、例えば、エッジ識別子と更新量の組の集合である。ただし、エッジの順序が決まっている場合において、更新情報は、2以上の各エッジの新しい重みを取得するための更新量の集合でも良い。
サーバ取得部231は、サーバ受信部22が受信した2以上の各修正情報を用いて、各エッジの更新された重みを取得しても良い。かかる場合、更新情報は、各エッジの更新された重みを含む。そして、更新情報は、例えば、エッジ識別子と更新された重みの組の集合である。ただし、エッジの順序が決まっている場合において、更新情報は、2以上の各エッジの更新された重みの集合でも良い。なお、サーバ取得部231は、公知技術により実現可能である。
サーバ送信部24は、サーバ取得部231が取得した更新情報を2以上の各処理装置1に送信する。サーバ送信部24は、サーバ取得部231が取得した更新情報と学習係数とを2以上の各処理装置に送信しても良い。
格納部11、モデル格納部111、学習情報格納部112、学習係数格納部113、変更情報格納部114、およびサーバ格納部21は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。
格納部11等に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部11等で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部11等で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部11等で記憶されるようになってもよい。
処理部12、事前学習部121、主学習部122、更新部123、学習係数変更部124、制御部125、事前予測手段1211、事前修正情報取得手段1212、主予測手段1221、主修正情報取得手段1222、サーバ処理部23、およびサーバ取得部231は、通常、MPUやメモリ等から実現され得る。処理部12等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
送信部13、およびサーバ送信部24は、通常、無線または有線の通信手段で実現される。
受信部14、およびサーバ受信部22は、通常、無線または有線の通信手段で実現される。
次に、学習システムAの動作について説明する。まず、処理装置1の動作について、図5のフローチャートを用いて説明する。
(ステップS501)処理部12は、カウンタiに1を代入する。
(ステップS502)事前学習部121は、i番目のエポックの事前学習処理を行う。事前学習処理について、図6のフローチャートを用いて説明する。なお、エポックは、事前学習と主学習との組である。
(ステップS503)主学習部122は、i番目のエポックの主学習処理を行う。主学習処理について、図7のフローチャートを用いて説明する。
(ステップS504)処理部12は、カウンタiを1、インクリメントする。
(ステップS505)制御部125は、i番目のエポックを実施するか否かを判断する。i番目のエポックを実施する場合はステップS502に戻り、i番目のエポックを実施しない場合は処理を終了する。なお、制御部125は、例えば、予め格納されている終了条件に合致するか否かを判断し、合致する場合はi番目のエポックを実施し、合致しない場合はi番目のエポックを実施しない。
次に、ステップS502の事前学習処理について、図6のフローチャートを用いて説明する。
(ステップS601)事前学習部121は、学習係数を取得する。この学習係数は、予め学習係数格納部113に格納されている学習係数、またはサーバ装置2から受信した学習係数である。
(ステップS602)学習係数変更部124は、変更情報を使用するか否かを判断する。変更情報を使用する場合はステップS603に行き、変更情報を使用しない場合はステップS605に行く。なお、学習係数変更部124は、例えば、変更情報格納部114に変更情報が格納されている場合は変更情報を使用すると判断し、変更情報格納部114に変更情報が格納されていない場合は変更情報を使用しないと判断する。また、学習係数変更部124は、例えば、学習係数変更部124は、例えば、1回目のエポックでは変更情報を使用しないと判断し、2回目以降のエポックでは変更情報を使用すると判断する。
(ステップS603)学習係数変更部124は、変更情報格納部114の変更情報を取得する。
(ステップS604)学習係数変更部124は、ステップS601で取得した学習係数と、ステップS603で取得した変更情報とを用いて、学習係数を変更し、変更した学習係数を取得する。
(ステップS605)事前学習部121は、カウンタiに1を代入する。
(ステップS606)事前学習部121は、i回目のサイクルを実施するか否かを判断する。i回目のサイクルを実施する場合はステップS607に行き、i回目のサイクルを実施しない場合はステップS614に行く。なお、1サイクルは、1回のフォーワードプロパゲーションとバックワードプロパゲーションの処理である。1サイクルは、ステップS607からステップS612の処理である。また、事前学習部121は、例えば、予め格納されている第二の終了条件に合致するか否かを判断し、合致する場合はi回目のサイクルを実施し、合致しない場合はi回目のサイクルを実施しない。第二の終了条件は、例えば、格納されている事前学習のサイクル数に関する条件である。事前学習のサイクル数に関する条件は、例えば、「サイクル数>i」または「サイクル数>=i」である。なお、サイクル数は、例えば、200である。また、第二の終了条件は、例えば、直前のサイクルにおける処理結果である修正情報の絶対値が閾値以下または閾値未満であることである。その他、第二の終了条件は問わない。
(ステップS607)事前学習部121は、学習情報格納部112から学習対象情報を取得する。なお、ここで取得される学習対象情報は、本エポックでは使用されていない学習対象情報であることは好適である。また、ここで取得される学習対象情報は、必ず今までに使用されていない学習対象情報であっても良い。
(ステップS608)事前学習部121は、深層学習モデルを取得する。なお、ここで取得される深層学習モデルは、ステップS612で更新された最新の深層学習モデルであることは好適である。また、1回目のサイクルで使用される深層学習モデルは、モデル格納部111の深層学習モデルである。
(ステップS609)事前予測手段1211は、ステップS608で取得された深層学習モデルに、ステップS607で取得された学習対象情報を適用し、フォーワードプロパゲーションを行い、予測情報を取得する。なお、取得される予測情報は、通常、2以上である。
(ステップS610)事前修正情報取得手段1212は、ステップS607で取得された学習対象情報に対応する正解情報を学習情報格納部112から取得する。
(ステップS611)事前修正情報取得手段1212は、ステップS608で取得された深層学習モデルを用いて、バックワードプロパゲーションを行い、修正情報を取得する。
(ステップS612)事前修正情報取得手段1212は、ステップS611で取得した修正情報を用いて、ステップS608で取得された深層学習モデルを更新し、更新された深層学習モデルを取得する。なお、深層学習モデルの更新は、修正情報を用いた更新であり、深層学習モデルの重みの更新である。
(ステップS613)カウンタiを1、インクリメントする。ステップS606に戻る。
(ステップS614)事前修正情報取得手段1212は、予測情報と正解情報とを用いて、精度情報を取得する。なお、ここで用いられる予測情報は、例えば、最後のサイクルのフォーワードプロパゲーションにより取得された予測情報である。また、ここで用いられる正解情報は、例えば、最後のサイクルで用いられた学習対象情報に対応する正解情報である。
(ステップS615)送信部13は、ステップS611で取得された修正情報と、ステップS614で取得された精度情報と、事前学習で用いた学習係数とをサーバ装置2に送信する。なお、ここで送信される修正情報は、最後のサイクルにおけるステップS611で取得された修正情報である。
(ステップS616)受信部14は、サーバ装置2から深層学習モデルの更新に関する更新情報と学習係数とを受信したか否かを判断する。学習係数等を受信した場合はステップS617に行き、学習係数等を受信しなかった場合はステップS616に戻る。
(ステップS617)処理部12は、ステップS616で受信された学習係数等を格納部11に少なくとも一時蓄積する。
次に、ステップS503の主学習処理について、図7のフローチャートを用いて説明する。図7のフローチャートにおいて、図6のフローチャートと同様のステップについて説明を省略する。なお、図6のフローチャートにおいて事前予測手段1211が行った処理は、図7のフローチャートにおいて主予測手段1221が行う。また、図6のフローチャートにおいて事前修正情報取得手段1212が行った処理は、図7のフローチャートにおいて主修正情報取得手段1222が行う。
(ステップS701)送信部13は、ステップS711で取得された修正情報をサーバ装置2に送信する。
(ステップS702)主学習部122は、カウンタiを1、インクリメントする。
(ステップS703)受信部14は、サーバ装置2から深層学習モデルの更新に関する更新情報を受信したか否かを判断する。更新情報を受信した場合はステップS704に行き、更新情報を受信しなかった場合はステップS703に戻る。
(ステップS704)更新部123は、ステップS703で受信された更新情報を用いて、深層学習モデルを更新する。ステップS706に戻る。なお、更新された深層学習モデルは、モデル格納部111に蓄積される。
なお、図7のフローチャートにおいて、ステップS606で「N」と判断された場合、上位処理にリターンする。
次に、サーバ装置2の動作について、図8のフローチャートを用いて説明する。
(ステップS801)サーバ受信部22は、処理装置1から精度情報等を受信したか否かを判断する。精度情報等を受信した場合はステップS802に行き、精度情報等を受信しなかった場合はステップS807に行く。なお、精度情報等とは、例えば、精度情報と学習係数である。
(ステップS802)サーバ処理部23は、ステップS801で受信された精度情報等をサーバ格納部21に蓄積する。
(ステップS803)サーバ処理部23は、今回の処理において、すべての処理装置1から精度情報等を受信したか否かを判断する。すべての処理装置1から精度情報等を受信した場合はステップS804に行き、すべての処理装置1から修正情報を受信していない場合はステップS801に戻る。
(ステップS804)サーバ処理部23は、すべての処理装置1から送信された精度情報等をサーバ格納部21から取得する。
(ステップS805)サーバ処理部23は、すべての精度情報の中から最も精度の高い精度情報を決定し、当該精度情報と対になる学習係数等を取得する。
(ステップS806)サーバ送信部24は、ステップS805で取得された学習係数等を2以上の各処理装置1に送信する。ステップS801に戻る。
(ステップS807)サーバ受信部22は、処理装置1から修正情報を受信したか否かを判断する。修正情報を受信した場合はステップS808に行き、修正情報を受信しなかった場合はステップS801に戻る。
(ステップS808)サーバ処理部23は、ステップS807で受信された修正情報をサーバ格納部21に蓄積する。
(ステップS809)サーバ処理部23は、今回の処理において、すべての処理装置1から修正情報を受信したか否かを判断する。すべての処理装置1から修正情報を受信した場合はステップS810に行き、すべての処理装置1から修正情報を受信していない場合はステップS801に戻る。
(ステップS810)サーバ取得部231は、今回の処理において、サーバ格納部21に蓄積されたすべての修正情報をサーバ格納部21から読み出す。
(ステップS811)サーバ取得部231は、ステップS810で取得したすべての修正情報を用いて更新情報を取得する。
(ステップS812)サーバ送信部24は、ステップS811で取得された更新情報を2以上の各処理装置1に送信する。ステップS801に戻る。
なお、図8のフローチャートにおいて、電源オフや処理終了の割り込みにより処理は終了する。
以下、本実施の形態における学習システムAの具体的な動作について説明する。学習システムAの概念図は図1である。また、以下、3つの具体例について説明する。
(具体例1)
具体例1において、Linux(登録商標)サーバを使用し、学習システムAを実現した。また、Linuxサーバには、図9の構成である。図9では、学習システムAは、サーバ装置2に該当する「Main CPU」と、n個の処理装置1に該当するn個のGPGPU(GPGPU1~GPGPUn)とを含む。処理装置1は、Workerと言っても良い。つまり、図9では、学習システムAは、Worker1~Workernを有する。そして、深層学習のフレームワークとして、Chainer(オープンソースライブラリー)を使用した。また、モデル格納部111の深層学習モデル(深層学習のネットワークモデルと言っても良い。)として、ResNet50(Residual Network50)を使用した。なお、ResNet50は、50層を持った畳み込みニューラルネットワーク(CNN)のモデルである。また、学習情報格納部112の学習対象情報として、128万枚の画像データを使用した。そして、本具体例において、1演算時の画像処理数を512個とした。
本具体例において、図10に示すように、学習システムAは、2500回の処理(Forward演算とBackward演算)を含むエポック(R)を、100回行う学習を実施した。なお、Forward演算とはフォーワードプロパゲーションである。Backward演算は、バックワードプロパゲーションである。
そして、学習システムAでは、上述したように、学習係数を取得する事前学習と、その事前学習の中最も良かった学習係数を選定し、主学習を行う。つまり、学習システムAでは、事前学習と主学習とを分けて行い、1エポックを終了する。そして、事前学習(ここでは、事前学習の回数α=200回)では、複数の異なる学習係数を使って、フォーワードプロパゲーションとバックワードプロパゲーションとを実施し、最も精度の良かった学習係数を選定する。そして、学習システムAは、選定した学習係数を用いて、主学習(ここでは、主学習の回数β=2300回)を行う。なお、主学習として、フォーワードプロパゲーションとバックワードプロパゲーションとを実施する。そして、上記の事前学習と主学習の組を、エポック数だけ繰り返す。
また、本具体例において、精度情報を取得するためのロス関数として、上記の数式4(平均2乗誤差)を使用した。
なお、図10では、事前学習と主学習を行って、保有する学習データ128万枚を全て処理した場合を1エポックと表現する。ここでは、エポック数をRとする。エポック数は、無限に増やすことができるが、どこかで止める必要がある。その時の条件は、例えば、エポック数や精度や一定のエポック数を超えた後の精度等の条件である。また、図10において、エポックRの時の事前学習をP(R)とし、主学習をM(R)とする。また、図10において、LRi(R)(i=1~8)は、エポックRの時の事前学習に使用する学習係数を表す。LRp(R)は、エポックRの時の事前学習時に、最も良い精度を示した学習係数を表し、そのエポック時の主学習に使用する学習係数である。A(R)は、エポックRの時の主学習を終わった場合の精度を表す。
R+1のエポック時の事前学習の学習係数LRi(R+1)と、Rエポック時の主学習の学習係数LRp(R)との関係は以下の数式5である。
なお、数式5において、Viは、倍率である。倍率は、変更情報の例である。また、8個のViは、それぞれ異なる値である。ここでは、8個の各Viは、1、1より大きい数字、1より小さい数字である。
また、8個の処理装置1の事前学習部121は、図11に示すように処理を行う。つまり、8個の処理装置1の各事前学習部121は、200サイクルの処理を行う。
そして、図11において、重みwi(k)は、i番のWorkerでのサイクルkの時の重みを表す。Di(K)は、i番のWorkerに入力されるサイクルKの時のData画像(学習対象情報)を表す。Data画像は、ランダムに、学習情報格納部112から抽出され、一度使用した学習対象情報は、そのエポック内では、使用されないように、事前学習部121は、学習対象情報を選択する。図11において、Ai(K)は、i番のWorkerでフォワード演算、バックワード演算を実施した時の精度(精度情報と言っても良い)を表す。LRiは、i番のWorkerで使用する学習係数を表す。事前学習では、各Workerで使うLRは異なるが、各サイクルでは、同じLRを使用する。
そして、8個の処理装置1の各事前学習部121が使用する重みは「W1(1)=W2(1)・・・=Wi(1)・・・=W8(1)」であり、8個の処理装置1の各事前学習部121は、事前学習のサイクル1では、同じ重みを使用して、処理を開始する。よって、初期値の重みは同じであるが、サイクルを重ねる毎に、各Workerで使用する重みWi(K)は、異なるものになる。その為に、精度Ai(K)については、各サイクル毎に異なる値を示し、サイクル200では、Ai(200)(i=1~8)については、各Worker毎に異なる為、最適なLRを決めるのは、Ai(200)(i=1~8)の精度を比較し、 LRi(i=1~8)の中から最もよい精度を示すLRpを選出する。なお、ここでは、最もよい精度を示すLRpを選出する処理は、サーバ装置2が行う。
また、本具体例において、事前学習では、8個の処理装置1の各事前学習部121は、それぞれLR1~LR8の異なる学習係数を用いて、深層学習の演算を行い、その精度を算出し、サイクル200での、精度の比較を行って、最もよい精度を得た学習係数を選び、それをLRpとした。図12は、かかる場合のサイクルと精度の関係を示すグラフである。図11によれば、200回のサイクルの終了後、精度が最も高いLR4が選択された。つまり、学習係数LR4を使って主学習が実施される。
図13は、主学習の概念を説明する図である。図13において、図11の事前学習での重み、Data画像、精度と区別する為に、それぞれの記号の後に(β)を入れる。図13において、Dβi(K)は、i番のWorkerに入力されるサイクルKの時のData画像を表す。Data画像は、ランダムに、学習データから抽出し、一度使用した学習データは、そのエポック内では、使用しないことは、事前学習の際と同様である。Aβi(K)は、i番のWorkerで、フォワード演算、バックワード演算を実施した時の精度を表す。サイクルKの時の精度は、8Workerの平均精度を取る。学習係数(LR)について、主学習では、事前学習で求めたLRpをすべてのWorkerが使用している。
サイクルKでの重みは8Workerで同じ重みを使用し、一つ前のサイクルで各Worker毎に上記の数式1で重みを算出する。
そして、サーバ装置2は、サイクルKの終了後、各Workerから重みを受け取り、Workerから受け取った重みの平均値を出して、平均重み
W
β(更新情報)を以下の数式6で求める。
そして、その平均値を、次サイクルの各Workerの重みWβi(k+1)とする。但し、Wβi(1)は、事前学習のサイクル200の時の重みWi(200)の内、最も精度がよかった学習係数LRpに対応する重みである。
以上のように、2300回のサイクルを行い、主学習を終了する。
なお、上記の具体例において、図14に示すように、従来技術と比較して、同様の学習を行うのに、87.5%の処理量の削減が図れた。つまり、従来技術では、2500回の演算を8つの各処理装置1で行うため、20000iterationsの処理が必要であった。
一方、本具体例において、1エポック(2500回)の中で、事前学習(200回の処理)により学習係数を選定し、選定した学習係数を用いて主学習(2300回の処理)を実施した。そのため、本具体例において、精度をそれほど落とすことなく、学習係数を選択する際の演算時間を大幅に削減できた。
なお、具体例1における学習システムAの動作例を説明するフローチャートは、図15である。
(ステップS1501)各処理装置1の処理部12は、1エポックの演算回数Q、1エポックの事前学習回数α、および主学習回数βを格納部11から読み出す。なお、ここでは、Q=2500、α=200、β=2300である。
(ステップS1502)事前学習部121は、エポック数のカウンタRに0を代入する。また、事前学習部121は、学習係数LRpの初期値を格納部11から取得する。なお、LRpの初期値は、ここでは、0.1である。
(ステップS1503)学習係数変更部124は、事前学習時の学習係数算出のための倍率を格納部11から読み出す。なお、倍率は、ここでは、V1・・・Vnである。
(ステップS1504)学習係数変更部124は、演算式「LRi=LRp*Vi (i=1・・・n)」により、事前学習時の学習係数を算出する。
(ステップS1505)事前学習部121は、カウンタNに0を代入する。
(ステップS1506)事前学習部121は、上述した事前学習を実施する。
(ステップS1507)事前学習部121は、「N=N+1」を実行し、カウンタNを更新する。
(ステップS1508)事前学習部121は、「N<=α」を満たすか否かを判断する。満たす場合はステップS1509に行き、満たさない場合はステップS1506に戻る。
(ステップS1509)サーバ装置2のサーバ処理部23は、各処理装置1が使用した学習係数LR1・・・LRnの中から、最良の学習係数LRpを選定する。
(ステップS1510)各処理装置1の主学習部122は、選定された学習係数LRpを用いて、上述した主学習を実施する。
(ステップS1511)主学習部122は、「N=N+1」を実行し、カウンタNを更新する。
(ステップS1512)主学習部122は、「N<=Q」を満たすか否かを判断する。満たす場合はステップS1513に行き、満たさない場合はステップS1510に戻る。
(ステップS1513)処理部12は、「N<=Q」を満たすか否かを判断する。満たす場合は処理を終了し、満たさない場合はステップS1514に行く。
(ステップS1514)処理部12は、「R=R+1」を実行する。ステップS1504に戻る。
なお、具体例1では、Worker(処理装置1)を8個で、LRを8個使って、事前学習を行ったため、並列で同時に実施可能であったが、これに限定するものではなく、並列で同時に実施可能にする為には、Worker(処理装置1)の個数よりも、事前学習で使用するLRの候補数が同じか少ない場合であれば、特に、同じような効果を得るものである。一方、Worker(処理装置1)の個数よりも、事前学習で使用するLRの候補数が多い場合でも、事前学習を行う回数や時間等は増加するが、事前学習を行う事で、最適なLRを選択し、選択したLRを用いて主学習を行うことで、本願発明の有する効果は得られることは言うまでもない。
(具体例2)
具体例2において、図16に示す環境で、学習システムAを動作させた。つまり、具体例2において使用した深層学習のネットワークモデルは、具体例1で使用したNesNet50でなく、VGG‐fという深層学習のモデルである。また、具体例2において使用したデータセット(学習対象情報)は、約5万枚(厳密には、256*195イタレーション=49920枚)の画像である。また、具体例2において、1エポックのサイクル数は195回、事前学習の回数は40回、主学習の回数は155回であった。また、LR1(3.0)、LR2(1.0)、LR3(0.5)の3つの学習係数を使用した。
具体例1では、Worker(処理装置1)を8個で、LRを8個使って、事前学習を行ったため、並列で同時に実施可能であったが、具体例2においては、Worker(処理装置1)が1つである為に、Worker において、LR1を使って深層学習の演算を実施し、その後、LR2、LR3を使って演算をシリアルに実施した。そのために、具体例2において、事前学習での演算時間は、3つのWorkerを使う場合と比較して、約3倍の演算時間が必要であった。
具体例2では、Worker(処理装置1)が1つである為、事前学習で使用するLRの候補数がWorker(処理装置1)の個数より多い場合に相当するが、上記でも述べたように、事前学習を行う回数や時間等は増加するが、事前学習を行う事で、最適なLRを選択し、選択したLRを用いて主学習を行うことで、本願発明の有する効果は得られることは言うまでもない。
そして、上記の環境で、1つの処理装置1が3つの各学習係数を用いて、学習係数ごとの精度を算出した。
また、具体例2において、初期値の学習係数は、LRpは0.1設定した。また、変更情報格納部114の変更情報として、3つの倍率(V1=3,V2=1,V3=0.5)を準備した。なお、ここでの倍率は、エポックによって変化することはなく、固定である。
そして、本具体例では、LRpが決まった場合に、学習係数変更部124は、式「LRi=LRp*Vi (i=1・・・n)」を用いて、LRiを算出する。
「V3=0.5」を使用した場合、一エポック前の主学習時に使用した学習係数を、次のエポックの主学習では、半分にした値を使い、深層学習の演算を行うこととなる。
上記の環境で、学習システムAを動作させた場合のエポックの進行と精度との関係を示す図を図17に示す。図17において、縦軸が精度、横軸がエポックの回数を示す。
図17によれば、R変更直後から精度が変化しており、特に、R変更直後は感度が高いため、少数の反復回数(事前学習)でも各LRの精度比較を行うことができる。図17は、この特性を使った場合の例である。図17によれば、事前学習で最も精度が高い学習係数を用いて、主学習で学習を行えていることが分かる。
(具体例3)
具体例3は、変更情報である倍率の組合せをエポックの途中で変更した例で、全体の演算等は同じである。ハード構成は、具体例1と同じであり、図9に示す通りである。
具体例3における学習システムAの構成で、種々の学習係数のセットを使用して、実験した場合のエポックの進行に伴う学習係数の変化を、図18に示す。
なお、図18の「Narrow set」(以下、適宜、ナローセットと言う。)の場合には、各エポック毎の学習係数は、略減少、エポック数が30を超えた辺りで、略一定の値の範囲で上下している。また、「Middle set」は、以下、適宜、ミドルセットと言う。さらに、「Wide set」以下、適宜、ワイドセットと言う。
図18の「Mix」の場合には、ナローセット、ミドルセット、ワイドセットを用いる。また、ナローセット、ミドルセット、ワイドセットの各々の倍率の情報は、図19である。
図19において、Valuesの#1から#8は、8つの各処理装置1(Worker)である。また、本具体例において、学習係数の初期値LRpは0.1を使用した。なお、図19に示すように、ナローセット((a)Narrow)において、倍率は1.25から0.80で、狭い範囲の中のいずれかの値の変更情報が採用される。また、ミドルセット((b)Middle)において、倍率は2.50から0.40の範囲の中のいずれかの値の変更情報が採用される。さらに、ワイドセット((c)Wide)において、倍率は5.00から0.20で、広い範囲の中のいずれかの値の変更情報が採用される。
図18の「Mix」の場合、図20に示すスケジュールで学習を進める。つまり、エポックの1~4は、「Warm up」を実施する。なお、「Warmup」とは、学習初期に小さい値の学習係数で数エポックの学習を行う事で、学習安定性と精度向上を図るための公知の技術である。そして、エポック5から深層学習を開始する。また、エポック5から19では、変更情報セットとしてナローセット((a)Narrow)を用いる。また、エポック20から29では、変更情報セットとしてミドルセット((b)Middle)を用いる。さらに、エポック30から40では、変更情報セットとしてワイドセット((c)Wide)を用いる。つまり、具体例3において、ナローセットは、ワイドセットより前のエポックで使用される。また、ミドルセットは、ナローセットより後のエポックで使用され、ワイドセットより前のエポックで使用される。
ナローセット(エポック5―19)では、学習係数は略減少し、ミドルセット(エポック20―29)では、最初大きく変動し、減少後、所定の値で、上下していた。また、ワイドセット(エポック30-40)では、エポック毎に上下しているが、若干値が上昇しながら、上下していた。
図18によれば、「Narrow set」の場合でも、従来の「Ref.」よりも精度は向上(エポック数40で、「Ref.」より、3.6%向上)しているが、エポック数が25を超えたぐらいから、精度が悪くなるという傾向が見られた。一方、「Mix」の場合には、「Narrow set」に比べてエポック数40の段階では、精度が、1.2%向上している。「Narrow set」→「Middle set」→「Wide set」と遷移した場合には、倍率の選択幅を大きくすることで、より良い精度が得られる学習係数が見つかったと言える。最終的には、精度が向上するような、学習係数が見つかり、より最適な重みを用いて、深層学習することができるようになった。
上記の環境で、学習システムAを動作させた場合のエポックの進行に従った精度の変化を示すグラフを図21に示す。
図21において、「Ref.」は従来技術を用いた従来例である。従来例では、初期値の学習係数が0.1で、16エポック毎に、学習係数を、10分の1に減らしている。エポック1-16は学習係数0.1で、エポック17-32は学習係数0.01で、エポック33-48は学習係数0.001になっている。
図21の「Narrow」では、図19の8個の倍率を使用して、事前学習時の学習係数の候補8個を算出する。
図21の「Mix」は、図19のスケジュールに従って、エポック1-4は「Warmup」で、エポック5-19は「Narrow set」で、エポック20-29は「Middle set」で、エポック30-40は「Wide set」で深層学習を実施した。
図21によれば、変更情報である倍率の組合せをエポックの途中で変更する「Mix」の場合、「Narrow」と比較して1.2%の精度の向上、「Ref.」と比較して4.8%の精度の向上が見られ、倍率の組合せをエポックの途中で変更することが有効であることが分かった。
なお、具体例3における学習システムAの動作例を説明するフローチャートは、図22である。また、図22のフローチャートにおいて、図15のフローチャートと同一のステップについて説明を省略する。
(ステップS2201)各処理装置1の学習係数変更部124は、倍率を変更するか否かを判断する。倍率を変更する場合はステップS2202に行き、倍率を変更しない場合はステップS1513に行く。
(ステップS2202)学習係数変更部124は、新たな倍率を格納部11から読み出す。ステップS1514に行く。
以上、本実施の形態によれば、深層学習において、高速に精度高く、学習処理を行える。
なお、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における処理装置1を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、入力層と中間層と出力層とを有する深層学習モデルが格納されるモデル格納部と、学習対象の情報である学習対象情報を有する2以上の学習情報が格納され学習情報格納部と、前記深層学習モデルの重みを算出する際に使用する係数であり、他の処理装置の係数とは異なる係数である学習係数が格納される学習係数格納部とにアクセス可能なコンピュータを、前記学習情報格納部の2以上の各学習対象情報を前記モデル格納部の深層学習モデルに適用し、前記学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーション、および前記予測情報と前記フォーワードプロパゲーションの対象である学習対象情報に対応する正解情報と前記学習係数とを用いて、前記予測情報が前記正解情報に一致するまたは近づくために、前記深層学習モデルが有する重みを修正し、前記深層学習モデルを更新するバックワードプロパゲーションを行い、かつ前記予測情報と前記正解情報とを用いて精度に関する精度情報を取得する事前学習部と、前記学習情報格納部の学習対象情報を深層学習モデルに適用し、前記学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーション、および前記予測情報と前記フォーワードプロパゲーションの対象である学習対象情報に対応する正解情報と、前記精度情報を用いて選別された学習係数とを用いて、前記予測情報が前記正解情報に一致するまたは近づくために、前記深層学習モデルが有する重みを修正するための修正情報を取得するバックワードプロパゲーションを行う主学習部と、前記主学習部が取得した修正情報をサーバ装置に送信する送信部と、前記サーバ装置から深層学習モデルの更新に関する更新情報を受信する受信部と、前記更新情報を用いて、前記深層学習モデルを更新する更新部として機能させるためのプログラムである。
また、本実施の形態におけるサーバ装置2を実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、コンピュータを、1または2以上の各処理装置から修正情報を受信するサーバ受信部と、前記サーバ受信部が受信した2以上の修正情報を用いて、更新情報を取得するサーバ取得部と、前記更新情報を前記2以上の各処理装置に送信するサーバ送信部として機能させるためのプログラムである。
(実施の形態2)
本実施の形態において、実施の形態1に対して、処理を行う装置が一つである場合について説明する。つまり、本願発明の事前学習と主学習とを行う学習システムは、いくつの装置で処理を分担しても良い。
図23は、本実施の形態における学習システムBのブロック図である。学習システムBは、格納部3、および処理部4を備える。格納部3は、モデル格納部111、学習情報格納部112、学習係数格納部113、および変更情報格納部114を備える。処理部4は、事前学習部41、主学習部42、更新部43、学習係数変更部124、および制御部125を備える。
処理部4は、各種の処理を行う。各種の処理は、例えば、事前学習部121、主学習部122、更新部123、学習係数変更部124、制御部125が行う処理である。
事前学習部41は、事前学習を行う。つまり、まず、事前学習部41は、学習情報格納部112の学習対象情報をモデル格納部111の深層学習モデルに適用し、当該学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーションを行う。また、事前学習部41は、取得した予測情報とフォーワードプロパゲーションの対象である学習対象情報と対になる正解情報と学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報を用いて深層学習モデルを更新するバックワードプロパゲーションを行う。なお、事前学習部41は、学習係数格納部の2以上の異なる各学習係数を用いて、繰り返して、フォーワードプロパゲーションとバックワードプロパゲーションとを行う。そして、事前学習部41は、2以上の異なる各学習係数ごとに、精度に関する精度情報を取得し、予め決められた条件を満たすほど高い精度を示す精度情報に対応する学習係数と修正情報とを取得する。なお、かかる学習係数の取得の処理は、学習係数の選別処理である。
そして、主学習部42は、主学習を行う。つまり、主学習部42は、事前学習部41が取得した学習係数が取得した学習係数を用いて、上述したフォーワードプロパゲーションとバックワードプロパゲーションとを行う。なお、事前学習部41の処理は、学習係数の選別処理を除いて、概ね事前学習部121の処理と同様である。また、実施の形態1において、学習係数の選別処理は、通常、サーバ装置2が行った。
さらに詳細には、主学習部42は、学習情報格納部112の学習対象情報を、事前学習部41が取得した修正情報を用いて更新された深層学習モデルまたはさらに更新された深層学習モデルに適用し、学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーションを行う。また、主学習部42は、取得した予測情報と、フォーワードプロパゲーションの対象である学習対象情報と対になる正解情報と、事前学習部41が取得した学習係数とを用いて、予測情報が正解情報に一致するまたは近づくために、深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報を用いて深層学習モデルを更新するバックワードプロパゲーションを行う。そして、主学習部42は、通常、フォーワードプロパゲーションとバックワードプロパゲーションとを繰り返して行う。なお、主学習部42の処理は、概ね主学習部122の処理と同様である。
更新部43は、主学習部42が更新した深層学習モデルを蓄積する。更新部43は、主学習部42が更新した深層学習モデルを、通常、格納部3に蓄積する。
格納部3は、不揮発性の記録媒体が好適であるが、揮発性の記録媒体でも実現可能である。格納部3に情報が記憶される過程は問わない。例えば、記録媒体を介して情報が格納部3で記憶されるようになってもよく、通信回線等を介して送信された情報が格納部3で記憶されるようになってもよく、あるいは、入力デバイスを介して入力された情報が格納部3で記憶されるようになってもよい。
処理部4、事前学習部41、主学習部42、更新部43は、通常、MPUやメモリ等から実現され得る。処理部4等の処理手順は、通常、ソフトウェアで実現され、当該ソフトウェアはROM等の記録媒体に記録されている。但し、ハードウェア(専用回路)で実現しても良い。
以上、本実施の形態によれば、深層学習において、高速に精度高く、学習処理を行うことができる。
なお、本実施の形態において、処理装置1は、複数であり複数の処理装置1が並列処理を行うことが好適である。しかし、本実施の形態において、処理装置1は一つでも良い。処理装置1が一つである場合、処理装置1は、複数の各学習係数を用いた事前学習をシーケンシャルに行い、選別する学習係数が決定される。
また、本実施の形態における処理は、ソフトウェアで実現しても良い。そして、このソフトウェアをソフトウェアダウンロード等により配布しても良い。また、このソフトウェアをCD-ROMなどの記録媒体に記録して流布しても良い。なお、このことは、本明細書における他の実施の形態においても該当する。なお、本実施の形態における学習システムBを実現するソフトウェアは、例えば、以下のようなプログラムである。つまり、このプログラムは、入力層と中間層と出力層とを有する深層学習モデルが格納されるモデル格納部と、学習対象の情報である学習対象情報と正解を示す正解情報とを有する2以上の学習情報が格納され学習情報格納部と、前記深層学習モデルの重みを算出する際に使用する2以上の異なる学習係数が格納される学習係数格納部とにアクセス可能なコンピュータを、前記学習情報格納部の学習対象情報を前記モデル格納部の深層学習モデルに適用し、前記学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーション、および前記予測情報と前記フォーワードプロパゲーションの対象である学習対象情報と対になる正解情報と前記学習係数とを用いて、前記予測情報が前記正解情報に一致するまたは近づくために、前記深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報を用いて前記深層学習モデルを更新するバックワードプロパゲーションを、前記学習係数格納部の2以上の異なる各学習係数を用いて、繰り返して行い、かつ前記2以上の異なる各学習係数ごとに、精度に関する精度情報を取得し、予め決められた条件を満たすほど高い精度を示す精度情報に対応する学習係数と修正情報とを取得する事前学習を行う事前学習部と、前記学習情報格納部の学習対象情報を、前記事前学習部が取得した修正情報を用いて更新された深層学習モデルまたはさらに更新された深層学習モデルに適用し、前記学習対象情報に対応する結果である予測情報を取得するフォーワードプロパゲーション、および前記予測情報と、前記フォーワードプロパゲーションの対象である学習対象情報と対になる正解情報と、前記事前学習部が取得した学習係数とを用いて、前記予測情報が前記正解情報に一致するまたは近づくために、前記深層学習モデルが有する重みを修正するための修正情報を取得し、当該修正情報を用いて前記深層学習モデルを更新するバックワードプロパゲーションを含む主学習を行う主学習部と、前記主学習部が更新した深層学習モデルを蓄積する更新部として機能させるためのプログラムである。
また、図24は、本明細書で述べたプログラムを実行して、上述した種々の実施の形態の処理装置1、サーバ装置2を実現するコンピュータの外観を示す。上述の実施の形態は、コンピュータハードウェア及びその上で実行されるコンピュータプログラムで実現され得る。図24は、このコンピュータシステム300の概観図であり、図25は、システム300のブロック図である。
図24において、コンピュータシステム300は、CD-ROMドライブを含むコンピュータ301と、キーボード302と、マウス303と、モニタ304とを含む。
図25において、コンピュータ301は、CD-ROMドライブ3012に加えて、GPGPU3013と、CD-ROMドライブ3012等に接続されたバス3014と、ブートアッププログラム等のプログラムを記憶するためのROM3015と、GPGPU3013に接続され、アプリケーションプログラムの命令を一時的に記憶するとともに一時記憶空間を提供するためのRAM3016と、アプリケーションプログラム、システムプログラム、及びデータを記憶するためのハードディスク3017とを含む。ここでは、図示しないが、コンピュータ301は、さらに、LANへの接続を提供するネットワークカードを含んでも良い。
コンピュータシステム300に、上述した実施の形態の処理装置1等の機能を実行させるプログラムは、CD-ROM3101に記憶されて、CD-ROMドライブ3012に挿入され、さらにハードディスク3017に転送されても良い。これに代えて、プログラムは、図示しないネットワークを介してコンピュータ301に送信され、ハードディスク3017に記憶されても良い。プログラムは実行の際にRAM3016にロードされる。プログラムは、CD-ROM3101またはネットワークから直接、ロードされても良い。
プログラムは、コンピュータ301に、上述した実施の形態の処理装置1等の機能を実行させるオペレーティングシステム(OS)、またはサードパーティープログラム等は、必ずしも含まなくても良い。プログラムは、制御された態様で適切な機能(モジュール)を呼び出し、所望の結果が得られるようにする命令の部分のみを含んでいれば良い。コンピュータシステム300がどのように動作するかは周知であり、詳細な説明は省略する。
また、上記プログラムを実行するコンピュータは、単数であってもよく、複数であってもよい。すなわち、集中処理を行ってもよく、あるいは分散処理を行ってもよい。
また、上記各実施の形態において、一の装置に存在する2以上の通信手段は、物理的に一の媒体で実現されても良いことは言うまでもない。
また、上記各実施の形態において、各処理は、単一の装置によって集中処理されることによって実現されてもよく、あるいは、複数の装置によって分散処理されることによって実現されてもよい。
また、本発明の実施の形態において、学習対象情報は、各処理装置1の学習情報格納部112に格納されているように記載されているが、これに限定するものではなく、学習対象情報を、処理装置1以外の場所であるサーバ装置2内や学習対象情報のみを格納している装置内に格納しておき、必要な場合に、各処理装置1に送信し、学習情報格納部112に一時的に格納されても良いことは言うまでもない。
本発明は、以上の実施の形態に限定されることなく、種々の変更が可能であり、それらも本発明の範囲内に包含されるものであることは言うまでもない。