(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2024-08-27
(54)【発明の名称】演算装置、学習制御装置、演算方法、学習制御方法およびプログラム
(51)【国際特許分類】
G06N 3/044 20230101AFI20240820BHJP
G06N 3/063 20230101ALI20240820BHJP
G06N 3/08 20230101ALI20240820BHJP
【FI】
G06N3/044
G06N3/063
G06N3/08
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2024514009
(86)(22)【出願日】2021-09-10
(85)【翻訳文提出日】2024-03-01
(86)【国際出願番号】 JP2021033336
(87)【国際公開番号】W WO2023037503
(87)【国際公開日】2023-03-16
(81)【指定国・地域】
(71)【出願人】
【識別番号】000004237
【氏名又は名称】日本電気株式会社
(71)【出願人】
【識別番号】504137912
【氏名又は名称】国立大学法人 東京大学
(74)【代理人】
【識別番号】100149548
【氏名又は名称】松沼 泰史
(74)【代理人】
【識別番号】100181135
【氏名又は名称】橋本 隆史
(72)【発明者】
【氏名】酒見 悠介
(72)【発明者】
【氏名】レヴィ ティモテ
(72)【発明者】
【氏名】合原 一幸
(57)【要約】
演算装置が、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算する行列積計算手段と、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うシフト演算手段と、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計する合計手段と、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出する活性化関数適用手段と、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する出力値算出手段と、を備える。
【特許請求の範囲】
【請求項1】
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算する行列積計算手段と、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うシフト演算手段と、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計する合計手段と、
前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出する活性化関数適用手段と、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する出力値算出手段と、
を備える演算装置。
【請求項2】
前記活性化関数適用手段は、3次の項と1次の項とによる3次多項式関数を前記活性化関数として用いる、
請求項1に記載の演算装置。
【請求項3】
前記行列積計算手段または前記活性化関数適用手段は、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)を用いて構成される、
請求項1または請求項2に記載の演算装置。
【請求項4】
請求項1から3の何れか一項に記載の演算装置の前記接続表現行列の前記複数の要素について、各要素の値が定められた確率で0になるように設定する仮設定手段と、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記複数の出力値の算出のための前記重み係数を更新させる学習制御手段と、
を備える学習制御装置。
【請求項5】
演算装置に、
1、0または-1の値をとる複数の要素を有する行列である接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、
前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、
を実装する演算方法。
【請求項6】
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計し、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に適応される学習制御方法であって、前記演算装置の前記接続表現行列の複数の要素について、各要素の値を、定められた確率で要素の値が0になるように設定することと、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、
を実装する学習制御方法。
【請求項7】
プログラムに従って動作可能な装置に、
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、
前記シフト演算で得られるベクトルと、複数の重み付けされた入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、
を実装するプログラムを記録する記録媒体。
【請求項8】
コンピュータに、
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習における中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計し、前記シフト演算で得られるベクトルと、前記機械学習において重み係数で重み付けされた複数の入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に、前記演算装置の前記接続表現行列の複数の要素について各要素の値を、定められた確率で要素の値が0になるように設定することと、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、
を実装するプログラムを記録する記録媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、演算装置、学習制御装置、演算方法、学習制御方法および記録媒体に関する。
【背景技術】
【0002】
ニューラルネットワークを用いた情報処理技術の1つにリザバーコンピューティング(Reservoir Computing; RC)がある(例えば、特許文献1参照)。
リザバーコンピューティングでは、ニューラルネットワークの構造としては再帰型ニューラルネットワーク(Recurrent Neural Network; RNN)が用いられ、学習の対象が、出力層における結合の重み係数に限定される。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】米国特許出願公開第2018/0309266号明細書
【発明の概要】
【発明が解決しようとする課題】
【0004】
リザバーコンピューティングのように再帰的なネットワーク構造を有する機械学習モデルにおける計算を簡単化できることが好ましい。
【0005】
本発明の目的の一例は、上述した課題を解決することのできる演算装置、学習制御装置、演算方法、学習制御方法および記録媒体を提供することである。
【課題を解決するための手段】
【0006】
本発明の第一の態様によれば、演算装置は、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算する行列積計算手段と、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うシフト演算手段と、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計する合計手段と、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出する活性化関数適用手段と、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する出力値算出手段と、を備える。
【0007】
本発明の第二の態様によれば、演算方法は、演算装置に、1、0または-1の値をとる複数の要素を有する行列である接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、を実装する。
【0008】
本発明の第三の態様によれば、学習制御方法は、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計し、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に適応される学習制御方法であって、前記演算装置の前記接続表現行列の複数の要素について、各要素の値を、定められた確率で要素の値が0になるように設定することと、前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、を実装する。
【0009】
本発明の第四の態様によれば、記録媒体は、プログラムに従って動作可能な装置に、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、前記シフト演算で得られるベクトルと、複数の重み付けされた入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、を実装するプログラムを記録する。
【0010】
本発明の第五の態様によれば、記録媒体は、コンピュータに、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習における中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計し、前記シフト演算で得られるベクトルと、前記機械学習において重み係数で重み付けされた複数の入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に、前記演算装置の前記接続表現行列の複数の要素について各要素の値を、定められた確率で要素の値が0になるように設定することと、前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、を実装するプログラムを記録する。
【発明の効果】
【0011】
本発明によれば、再帰的なネットワーク構造を有する計算モデルにおける計算を比較的簡単に行うことができる。
【図面の簡単な説明】
【0012】
【
図1】実施形態に係る演算システムの装置構成の例を示す図である。
【
図2】実施形態に係る演算装置の構成の例を示す図である。
【
図3】実施形態に係る学習制御装置の構成の例を示す図である。
【
図4】実施形態に係る演算装置の機械学習モデルのスパース度とスペクトル半径との関係の第1例を示す図である。
【
図5】実施形態に係る演算装置の機械学習モデルのスパース度とスペクトル半径との関係の第2例を示す図である。
【
図6】実施形態に係る学習制御装置の処理の手順の例を示すフローチャートである。
【
図7】実施形態に係るスパース度と演算装置の推定精度との関係の例を示す図である。
【
図8】実施形態に係る演算装置の構成の、もう1つの例を示す図である。
【
図9】実施形態に係る学習制御装置の構成の、もう1つの例を示す図である。
【
図10】実施形態に係る演算方法における処理の手順の例を示すフローチャートである。
【
図11】実施形態に係る学習制御方法における処理の手順の例を示すフローチャートである。
【
図12】少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
【発明を実施するための形態】
【0013】
以下、本発明の実施形態を説明するが、以下の実施形態は請求の範囲にかかる発明を限定するものではない。また、実施形態の中で説明されている特徴の組み合わせの全てが発明の解決手段に必須であるとは限らない。
図1は、実施形態に係る演算システムの装置構成の例を示す図である。
図1に示す構成で、演算システム1は、演算装置10と、学習制御装置20とを備える。
【0014】
演算装置10は、再帰的なネットワーク構造を有する機械学習モデルを用いて演算を行う。ただし、再帰的なネットワーク構造が明示されていなくてもよい。例えば、演算装置10を構成するハードウェアにおける信号線がループを含む形状に配線されていてもよいが、演算装置10の構成方法は、特定の方法に限定されない。
以下では、再帰的なネットワーク構造を有する機械学習モデルが、行列を用いた計算式で示されている場合を例に説明する。
演算装置10が用いる、再帰的なネットワーク構造を有する機械学習モデルを、単にモデルとも称する。機械学習を、単に学習とも称する。
【0015】
学習制御装置20は、学習時に演算装置10を制御して学習を行わせる。演算装置10には、学習による更新対象のパラメータと、学習による更新対象外のパラメータとがある。学習制御装置20は、学習による更新対象外のパラメータの値を設定した後、演算装置10に学習を行わせる。学習制御装置20が、学習による更新対象外のパラメータの値を変えながら、それぞれの値で演算装置10に学習を行わせるようにしてもよい。そして、学習制御装置20が、学習結果に基づいて、学習による更新対象外のパラメータの値を決定するようにしてもよい。
【0016】
ここで、リザバーコンピューティングシステムにおける中間ノードの値は、式(1)のように表すことができる。
【0017】
【0018】
tおよびt-1は、何れも時間ステップのインデックスであり、時刻を示す。時刻t-1は、時刻tよりも1つ前(過去)の時間ステップの時刻である。リザバーコンピューティングでは、時刻ステップ毎に入力ノードが入力値を取得し、時刻ステップ毎に出力ノードの値が更新される。出力ノードの値は、リザバーコンピューティングシステムからの出力値に該当する。
【0019】
x(t)は、時刻tにおける中間ノードの値を示すベクトルである。リザバーコンピューティングシステムの中間ノードと、ベクトルx(t)の要素とが一対一に対応付けられる。ベクトルx(t)は縦ベクトルで表される。
リザバーコンピューティングにおける中間層は、リザバー層とも称される。リザバーコンピューティングにおける中間ノードは、リザバーノードとも称される。
【0020】
Wresは、中間ノードの値に対する重み付けの重み係数を示す行列である。式(1)の「Wresx(t-1)」は、時刻t-1における中間ノードの値に対する重み付けを示す。行列Wresは、行数、列数の何れもベクトルx(t)の要素数と等しい正方行列である。「Wresx(t-1)」の計算結果は、ベクトルx(t)の要素数と同じ要素数の縦ベクトルで表される。
【0021】
u(t)は、時刻tにおける入力ノードの値を示すベクトルである。したがって、ベクトルu(t)は、時刻tにおけるリザバーコンピューティングシステムへの入力値を示す。ベクトルu(t)は縦ベクトルで表される。
Winは、入力ノードの値に対する重み付けの重み係数を示す行列である。式(1)の「Winu(t)」は、時刻tにおける入力ノードの値に対する重み付けを示す。行列Winの行数はベクトルx(t)の要素数と等しく、列数はベクトルu(t)の要素数と等しい。「Winu(t)」の計算結果は、ベクトルx(t)の要素数と同じ要素数の縦ベクトルで表される。
【0022】
fは、活性化関数を示す。式(1)の「(Wresx(t-1)+Winu(t))」の計算結果は、ベクトルx(t)の要素数と同じ要素数の縦ベクトルで表され、「f(Wresx(t-1)+Winu(t))」は、この縦ベクトルの要素毎に活性化関数を適用することを表す。
【0023】
式(1)における行列とベクトルとの積「Wresx(t-1)」および「Winu(t)」のそれぞれで、行列の要素が示す重み係数と、ベクトルの要素が示すノードの値との乗算が行われる。中間ノードの個数が入力ノードの個数よりもおおいことが考えられ、特に、「Wresx(t-1)」での乗算の回数が多いと考えられる。
【0024】
1回の乗算で加算が繰り返し行われるなど、乗算では、加算または減算よりも複雑な処理が行われる。このため、装置が乗算を行う場合の消費電力は、加算または減算を行う場合よりも大きくなる。また、乗算器をハードウェアで実装するハードウェアの規模が比較的大きくなり、装置の小型化の妨げとなること、および、装置の生産コストが高くなることが考えられる。
【0025】
これに対し、演算装置10では、中間ノードの値の計算を、式(1)の計算よりも少ない乗算回数で行えるようにする。計算が簡単になることで、演算装置10の処理速度が速くなると期待される。また、乗算の回数が少ないことで演算装置10の消費電力が小さくなり、センサの設置個所の付近など十分な給電が見込まれない場所でも演算装置10を設置し得ると期待される。また、演算装置10が小型化されることで、演算装置10を設置可能な場所が増えると期待される。また、演算装置10の生産コストが安くなることで、エッジコンピューティング(Edge Computing)など分散型の配置で演算装置10を多数配置することが比較的容易になる。
【0026】
演算装置10は、式(2)に基づいて中間ノードの値を計算する。
【0027】
【0028】
Zは、整数を表す。
Tは、何れの要素も1、0または-1の値をとる行列である。行列Tの行数、列数の何れもベクトルx(t)の要素数と等しい。すなわち、行列Tの行数、列数の何れも、演算装置10の機械学習モデルの中間ノードの個数と等しい。
【0029】
行列Tは、中間ノード同士の接続関係を表していると解することができる。行列Tの要素の値「1」は、中間ノード同士が接続されており、情報が伝達されることを表していると解することができる。行列Tの要素の値「0」は、中間ノード同士が接続されておらず、情報が伝達されないことを表していると解することができる。行列Tの要素の値「-1」は、中間ノード同士が接続されており、情報が伝達されること、および、伝達される情報に-1の重み係数が乗算されることを表していると解することができる。
行列Tを接続表現行列とも称する。
【0030】
式(2)を式(1)と比較すると、式(1)の「Wresx(t-1)」の項が、式(2)では「2ZTx(t-1)」となっている。それ以外の点では、式(2)は式(1)と同様である。
「Tx(t-1)」の計算結果は、ベクトルx(t)と同じ要素数の縦ベクトルで表される。ベクトルのi番目の要素を<>iと表記し、行列の第i行第j列の要素を<>i,jと表記すると、「Tx(t-1)」の計算結果のベクトルのi番目の要素は式(3)のように表される。
【0031】
【0032】
行列Tの要素<T>i,jは、1、0または-1の何れかの値をとるので、式(3)の計算では、ベクトルx(t-1)の要素<x(t-1)>j毎に、「加算する」、「減算する」、または、「演算を行わない」の何れかの処理を行えばよい。したがって、乗算器を必要とせず加算器のみで式(3)の計算を行うことができる。
【0033】
また、上記のようにZは整数なので、「2ZTx(t-1)」の計算における2Zと「Tx(t-1)」の計算結果の縦ベクトルの要素との乗算は、ビット列のシフトによって行うことができる。
したがって、「2ZTx(t-1)」の計算は、加算器とシフトレジスタとを用いて行うことができ、乗算器を必要としない。
【0034】
式(3)の計算について、例を挙げて説明する。
ベクトルx(t-1)の値、行列Tの値、および、整数Zの値が式(4)のように示される例について考える。
【0035】
【0036】
この場合、「Tx(t-1)」の計算は、式(5)のように加算および減算によって行うことができる。
【0037】
【0038】
また、2Zと「Tx(t-1)」の計算結果との乗算は、式(6)のようにシフト演算で行うことができる。
【0039】
【0040】
式(6)に示す例で、「Tx(t-1)」の計算結果の縦ベクトルの要素「3」、「-7」および「-4」のそれぞれについて、2進数表現によるビット列を左(桁が大きくなる側)に1ビットだけシフトさせることで、21を乗算している。
なお、式(6)では、負の数を2の補数で表している。
【0041】
式(1)の活性化関数fについて、リザバーコンピューティングに用いられる活性化関数は特定の関数に限定されないが、例えば、双曲線正接関数(Tangent Hyperbolic Function)など、複雑な関数が用いられる場合がある。活性化関数として複雑な関数が用いられる場合、装置の消費電力が大きくなること、活性化関数を実装するハードウェアの規模が比較的大きくなり、装置の小型化の妨げとなること、および、装置の生産コストが高くなることが考えられる。
【0042】
演算装置10に用いられる活性化関数(式(2)の関数f)も特定の関数に限定されないが、例えば、式(7)に示される多項式関数polyを用いるようにしてもよい。
【0043】
【0044】
a、bは、何れも実数定数である。
多項式関数polyは、3次の項と1次の項とによる3次多項式関数の例に該当する。演算装置10の活性化関数として多項式関数polyを用いた実験で、良好な結果が得られた。
活性化関数として多項式関数polyを用いる場合、式(2)は式(8)のように表される。
【0045】
【0046】
演算装置10が、多項式関数polyのように比較的簡単な関数を活性化関数として用いることで、演算装置10の処理速度が比較的速いことが期待される。また、演算装置10の処理負荷が比較的軽いことで演算装置10の消費電力が比較的小さく、センサの設置個所の付近など十分な給電が見込まれない場所でも演算装置10を設置し得ると期待される。また、演算装置10が小型化されることで、演算装置10を設置可能な場所が増えると期待される。また、演算装置10の構成が比較的簡単であることで生産コストが比較的安く、エッジコンピューティング(Edge Computing)など分散型の配置で演算装置10を多数配置することが比較的容易であると期待される。
【0047】
また、演算装置10は、時刻tにおける演算装置10自らの出力値を、式(9)に基づいて計算する。
【0048】
【0049】
y(t)は、時刻tにおける演算装置10の機械学習モデルの出力ノードの値を示す。演算装置10は、出力ノードに設定される値を出力する。
Woutは、中間ノードから出力ノードへ伝達される値に対する重み付けの重み係数を示す行列である。行列Woutの行数はベクトルy(t)の要素数と等しく、列数はベクトルx(t)の要素数と等しい。「Woutx(t)」は、出力ノード毎に、時刻tにおける中間ノードの値を重み付け加算することを示している。
【0050】
リザバーコンピューティングの機械学習モデルは、式(1)および(9)で示される。リザバーコンピューティングでは、式(9)の行列Woutの値が、学習によって更新される。
演算装置10の機械学習モデルは、リザバーコンピューティングの一種として用いることができる。式(2)および(9)で示される演算装置10の機械学習モデルは、式(1)および(9)で示されるリザバーコンピューティングの機械学習モデルから、式(1)の「Wresx(t-1)」を「2ZTx(t-1)」で置き換えたものと解することができる。
【0051】
図2は、演算装置10の構成の例を示す図である。
図2に示す構成で、演算装置10は、入力値重み付け部11と、行列積計算部12と、シフト演算部13と、合計部14と、活性化関数適用部15と、出力値算出部16と、中間ノード値記憶部17とを備える。
【0052】
入力値重み付け部11は、時間ステップ毎に演算装置10への入力値を取得し、入力値に対する重み付けを行う。入力値重み付け部11が行う処理は、式(2)の「Winu(t)」の計算の例に該当する。
入力値重み付け部11は、重み付けの結果を合計部14へ出力する。入力値重み付け部11が、複数の乗算器と複数の加算器とを用いて構成されていてもよい。
演算装置10が扱う数値が、固定長のビット列で表現されていてもよい。例えば、演算装置10が扱う数値が、固定小数点の16桁の2進数で表現されていてもよい。
【0053】
行列積計算部12は、接続表現行列と、中間ノード値を示すベクトルとの積を計算する。上述したように、接続表現行列は、何れの要素も1、0または-1の値をとる行列である。行列積計算部12が行う処理は、式(2)の「Tx(t-1)」の計算の例に該当する。
行列積計算部12は、積の計算結果をシフト演算部13へ出力する。行列積計算部12が、中間ノードの個数と同じ個数の加算器を用いて構成されていてもよい。
行列積計算部12は、行列積計算手段の例に該当する。
【0054】
シフト演算部13は、行列積計算部12が行う積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。シフト演算部13が行う処理は、式(2)の「2Z」と「Tx(t-1)」とを乗算する処理の例に該当する。
シフト演算部13は、シフト演算の結果を合計部14へ出力する。シフト演算部13が、中間ノードの個数と同じ個数のシフトレジスタを用いて構成されていてもよい。
シフト演算部13は、シフト演算手段の例に該当する。
【0055】
合計部14は、シフト演算部13が行うシフト演算で得られるベクトルと、入力値重み付け部11によって重み付けされた入力値ベクトルとを合計する。合計部14が行う処理は、式(2)の「2ZTx(t-1)」と「Winu(t)」との合計の計算の例に該当する。
合計部14は、合計の結果を活性化関数適用部15へ出力する。合計部14が、1つの加算器を用いて構成されていてもよい。
合計部14は、合計手段の例に該当する。
【0056】
活性化関数適用部15は、合計部14が行う合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。活性化関数適用部15が行う処理は、式(2)の「2ZTx(t-1)+Winu(t)」の計算結果を関数fに入力して「x(t)」を算出する処理の例に該当する。
【0057】
上述したように、活性化関数適用部15が、3次の項と1次の項とによる3次多項式関数を活性化関数として用いるようにしてもよい。具体的には、活性化関数適用部15が、式(7)に示される多項式polyを活性化関数として用いるようにしてもよい。
活性化関数適用部15は、算出したベクトルを出力値算出部16へ出力する。活性化関数適用部15が多項式polyを活性化関数として用いる場合、活性化関数適用部15が、3次の項を計算する1つの乗算器と、1次の項を計算する1つの乗算器と、3次の項と1次の項とを合計する1つの加算器とを用いて構成されていてもよい。
活性化関数適用部15は、活性化関数適用手段の例に該当する。
【0058】
出力値算出部16は、中間ノード値の更新値に対して重み付けを行って出力値を算出する。出力値算出部16が行う処理は、式(9)の「y(t)=Woutx(t)」の計算の例に該当する。
出力値算出部16による計算結果は、演算装置10の出力値として用いられる。出力値算出部16が、複数の乗算器と複数の加算器とを用いて構成されていてもよい。
出力値算出部16は、出力値算出手段の例に該当する。
【0059】
中間ノード値記憶部17は、活性化関数適用部15が算出する中間ノードの値を、時刻tの時間ステップの間記憶する。中間ノード値記憶部17が記憶する値は、行列積計算部12へ出力される。中間ノード値記憶部17から行列積計算部12への値の出力は、式(2)の計算結果の「x(t)」の値を、次の時間ステップにおける式(2)の計算のために、「x(t-1)」の値として用いることの例に該当する。
中間ノード値記憶部17が、中間ノードの個数と中間ノード1ノード当たりのビット数との積と同じ個数のD-FF(D Flip-Flop)を用いて構成されていてもよい。
【0060】
演算装置10が、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)、あるいはこれらの組み合わせを用いて構成されていてもよい。特に、少なくとも行列積計算部12または活性化関数適用部15が、FPGAまたはASIC、あるいはこれらの組み合わせを用いて構成されていてもよい。
【0061】
これにより、行列積計算部12または活性化関数適用部15がハードウェア的に実装され、演算装置10の処理速度が比較的速いこと、演算装置10の消費電力が比較的小さいこと、演算装置10の大きさが比較的小さいこと、または、演算装置10の生産コストが比較的安いこと、あるいはこれらの組み合わせの効果が期待される。
【0062】
図3は、学習制御装置20の構成の例を示す図である。
図3に示す構成で、学習制御装置20は、仮設定部21と、学習制御部22と、評価部23と、演算装置設定部24とを備える。
仮設定部21は、演算装置10の機械学習モデルにおけるハイパーパラメータの値を仮設定する。ここでいうハイパーパラメータは、機械学習モデルのパラメータのうち、学習対象のパラメータ以外のパラメータである。ここでいう学習対象のパラメータは、学習によって値が更新されるパラメータである。
【0063】
演算装置10をリザバーコンピューティングに用いる場合、中間ノードから出力ノードへ伝達される値に対する重み付けの重み係数(式(9)の行列Wout)が学習対象のパラメータとなる。それ以外のパラメータは、ハイパーパラメータとして扱われる。したがって、接続表現行列および2のべき乗のべき数(式(2)の行列Tおよび整数Z)は、ハイパーパラメータとして扱われる。また、入力ノードの値に対する重み付けの重み係数(式(2)の行列Win)も、ハイパーパラメータとして扱われる。また、活性化関数fとして多項式関数polyを用いる場合、式(8)の係数aおよびbも、ハイパーパラメータとして扱われる。
仮設定部21は、仮設定手段の例に該当する。
【0064】
仮設定部21が、行列T(接続表現行列)の要素の値を仮設定する際、定められた確率で要素の値が0になるように設定するようにしてもよい。行列Tの要素の値が0になる確率をスパース度(Sparsity)と称し、「s」で表すこととする。例えば、仮設定部21は、行列Tの要素の値がスパース度sの確率で「0」になり、(1-s)/2の確率で「1」になり、(1-s)/2の確率で「-1」になるように、行列Tの各要素の値を決定する。
スパース度sの値をユーザが設定するようにしてよいし、仮設定部21が設定または仮設定するようにしてもよい。
【0065】
ここで、リザバーコンピューティングにおける処理の精度の指標値の1つとしてスペクトル半径(Spectral Radius)が挙げられる。スペクトル半径は、行列の固有値の最大値として算出される。演算装置10の場合、式(2)の「2ZT」で示される行列の固有値の最大値をスペクトル半径として算出することが考えられ、スパース度およびZの値がスペクトル半径に影響する。
【0066】
図4は、演算装置10の機械学習モデルのスパース度とスペクトル半径との関係の第1例を示す図である。
図4は、中間ノードの個数が100個である場合の例を示している。
図4のグラフの横軸はスパース度を示す。縦軸は、スペクトル半径を示す。
【0067】
線L11は、式(2)のZの値が0である場合の、スパース度とスペクトル半径との関係を示す。線L12は、Zの値が1である場合の、スパース度とスペクトル半径との関係を示す。線L13は、Zの値が2である場合の、スパース度とスペクトル半径との関係を示す。線L14は、Zの値が3である場合の、スパース度とスペクトル半径との関係を示す。
【0068】
線L11からL14の何れでも、スパース度が大きくなるにつれてスペクトル半径が単調減少している。このことから、スパース度を調整することでスペクトル半径を調整することができる。
また、線L11、L12、L13およびL14を比較すると、Zの値が大きいほどスペクトル半径が小さくなっている。このことから、スパース度の調整だけではスペクトル半径の調整が不十分な場合、Zの値を調整することでスペクトル半径をさらに調整することができる。
【0069】
図5は、演算装置10の機械学習モデルのスパース度とスペクトル半径との関係の第2例を示す図である。
図5は、中間ノードの個数が200個である場合の例を示している。
図5のグラフの横軸はスパース度を示す。縦軸は、スペクトル半径を示す。
【0070】
線L21は、式(2)のZの値が0である場合の、スパース度とスペクトル半径との関係を示す。線L22は、Zの値が1である場合の、スパース度とスペクトル半径との関係を示す。線L23は、Zの値が2である場合の、スパース度とスペクトル半径との関係を示す。線L24は、Zの値が3である場合の、スパース度とスペクトル半径との関係を示す。
【0071】
線L21からL24の何れでも、スパース度が大きくなるにつれてスペクトル半径が単調減少している。このことから、スパース度を調整することでスペクトル半径を調整することができる。
また、線L21、L22、L23およびL24を比較すると、Zの値が大きいほどスペクトル半径が小さくなっている。このことから、スパース度の調整だけではスペクトル半径の調整が不十分な場合、Zの値を調整することでスペクトル半径をさらに調整することができる。
【0072】
このように、中間ノードの個数にかかわらず、スパース度およびZの値を調整することで、スペクトル半径を調整できると期待される。仮設定部21がスパース度に基づいて接続表現行列(行列T)の要素の値を設定することで、ユーザまたは演算装置10は、スペクトル半径の調整を比較的容易に行うことができる。
スパース度sのように、学習制御装置20が行う処理におけるパラメータを、学習制御装置20のパラメータとも称する。
【0073】
学習制御部22は、接続表現行列の要素の値などハイパーパラメータの値が設定された演算装置10に学習を行わせて、演算装置10の出力値の算出のための重み係数(行列Woutの値)を更新させる。
学習制御部22は、学習制御手段の例に該当する。
評価部23は、演算装置10の学習結果を評価する。
【0074】
演算装置設定部24は、演算装置10の学習結果に基づいて、演算装置10の設定を行う。
仮設定部21が、ハイパーパラメータの値の設定を複数通り行い、学習制御部22が、ハイパーパラメータの値の設定毎に、演算装置10に学習を行わせるようにしてもよい。そして、評価部23が、ハイパーパラメータの値の設定毎に学習結果を評価し、演算装置設定部24が、学習結果の評価が最も高いときのハイパーパラメータの値を、演算装置10に設定するようにしもよい。これにより、演算装置10の処理の精度が高くなるようにハイパーパラメータの値を設定できると期待される。
【0075】
図6は、学習制御装置20の処理の手順の例を示すフローチャートである。
図6の処理で、仮設定部21は、学習制御装置20のパラメータの値を仮設定する(ステップS11)。特に、学習制御装置20は、スパース度sの値を仮設定する。
次に仮設定部21は、演算装置10のパラメータの値を仮設定する(ステップS12)。具体的には、仮設定部21は、演算装置10のハイパーパラメータの値を仮設定し、学習対象のパラメータの値を初期設定する。仮設定部21は、スパース度sの値に基づいて、接続表現行列Tの要素の値を設定する。
【0076】
次に、学習制御部22は、演算装置10を制御して学習を行わせる(ステップS13)。学習制御部22は、学習によって学習対象のパラメータである行列Woutの要素の値を更新する。
次に、評価部23は、学習結果を評価する(ステップS14)。例えば、演算装置10がクラス分類を行う場合、評価部23は、学習後の演算装置10によるクラス分類の精度を評価する。
【0077】
次に、学習制御部22は、学習の終了条件が成立しているか否かを判定する(ステップS15)。学習制御部22が判定に用いる条件は、特定のものに限定されない。例えば、学習制御部22が、学習の実施回数が所定の回数以上か否かを判定するようにしてもよい。あるいは、学習制御部22が、評価部23が算出する学習結果の評価値が所定値以上か否かを判定するようにしてもよい。
【0078】
学習の終了条件が成立していないと学習制御部22が判定した場合(ステップS15:NO)、仮設定部21は、学習制御装置20のパラメータの値の再設定条件が成立しているか否かを判定する(ステップS21)。仮設定部21が判定に用いる条件は、設定されているパラメータ値で所定回数以上学習を行ったか、という条件であってもよいが、これに限定されない。
【0079】
再設定条件が成立していないと仮設定部21が判定した場合(ステップS21:NO)、処理がステップS12へ戻る。この場合、仮設定部21は、学習制御装置20のパラメータの値は変更せず、ステップS12で、演算装置10のパラメータの値を仮設定し直すことで、演算装置10のパラメータの値を変更する。
【0080】
一方、再設定条件が成立していると仮設定部21が判定した場合(ステップS21:YES)、処理がステップS11へ戻る。この場合、仮設定部21は、ステップS11で、学習制御装置20のパラメータの値を仮設定し直すことで、学習制御装置20のパラメータ値を変更する。
【0081】
一方、学習の終了条件が成立していると学習制御部22が判定した場合(ステップS15:YES)、演算装置設定部24は、演算装置10のパラメータの値を決定する(ステップS31)。例えば、演算装置設定部24は、評価部23による評価が最も高い学習を選択する。そして、演算装置設定部24は、選択した学習の終了時の演算装置10のパラメータの値を、演算装置10に設定するパラメータの値に決定する。
そして、演算装置設定部24は、決定したパラメータ値を演算装置10に設定する。
ステップS32の後、学習制御装置20は、
図6の処理を終了する。
【0082】
図7は、スパース度と演算装置10の推定精度との関係の例を示す図である。
図7は、ベンチマークタスクとしてNARMA10を用いた実験の結果を示している。
実験では、演算装置10は、時刻t-1までの時系列データの入力を受けて時刻tにおけるデータの値を推定する。
【0083】
NARMA10(NARMAは、非線形自己回帰移動平均を意味する。)の時系列データの2000ステップ分を用いて演算装置10の学習を行い、学習用の2000ステップ分とは別の3000ステップを用いて演算装置10の推定精度のテストを行った。NARMA10の時系列データのうち最初の200ステップは、中間ノードの初期状態の影響を避けるために削除した。また、誤り率として、正規化平均二乗誤差(normalized mean-squared error;NMSE)を算出した。
【0084】
図7では、整数Zおよびスパース度sの設定値毎に、スペクトル半径と誤り率とが示されている。また、一般的なリザバーコンピューティングシステムを用いて同様の実験を行った結果が示されている。
図7の例で、整数Zの値およびスパース度sの値の調整によってスペクトル半径が調整されている。また、スペクトル半径に応じて誤り率が変化している。特に、スペクトル半径が0.76の場合および0.74の場合の誤り率が小さくなっており、何れも、一般的なリザバーコンピューティングシステムを用いた場合よりも誤り率が小さくなっている。
【0085】
以上のように、行列積計算部12は、何れの要素も1、0または-1の値をとる行列である接続表現行列と、中間ノード値を示すベクトルとの積を計算する。シフト演算部13は、接続表現行列と、中間ノード値を示すベクトルとの積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。合計部14は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計する。活性化関数適用部15は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとの合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。出力値算出部16は、中間ノード値の更新値に対して重み付けを行って出力値を算出する。
【0086】
演算装置10によれば、再帰的なネットワーク構造を有する計算モデルにおける計算を、比較的簡単に行うことができる。特に、演算装置10によれば、式(2)で示される、再帰的なネットワーク構造を有する計算モデルにおける計算を行うことができる。式(2)の「2ZTx(t-1)」の計算は、加算器とシフトレジスタを用いて行うことができ、乗算器を用いる必要が無い。
【0087】
また、活性化関数適用部15は、3次の項と1次の項とによる3次多項式関数を前記活性化関数として用いる。
活性化関数適用部15によれば、3次の項と1次の項とによる3次多項式関数という比較的簡単な式の計算で、活性化関数の計算を行うことができる。
【0088】
また、少なくとも行列積計算部12または活性化関数適用部15は、FPGAまたはASICを用いて構成される。
これにより、行列積計算部12または活性化関数適用部15がハードウェア的に実装され、演算装置10の処理速度が比較的速いこと、演算装置10の消費電力が比較的小さいこと、演算装置10の大きさが比較的小さいこと、または、演算装置10の生産コストが比較的安いこと、あるいはこれらの組み合わせの効果が期待される。
【0089】
また、学習制御装置20の仮設定部21は、演算装置10の接続表現行列の各要素の値を、定められた確率で要素の値が0になるように設定する。学習制御部22は、接続表現行列の要素の値が設定された演算装置10に学習を行わせて、出力値の算出のための重み係数を更新させる。
【0090】
学習制御部22によれば、接続表現行列の要素の値が0になる確率であるスパース度の値と、2のべき乗のべき数である整数Zの値とを設定するという簡単な方法で、スペクトル半径を調整することができる。スペクトル半径の調整により、演算装置10の処理の精度が高くなることが期待される。
【0091】
図8は、実施形態に係る演算装置の構成の、もう1つの例を示す図である。
図8に示す構成で、演算装置610は、行列積計算部611と、シフト演算部612と、合計部613と、活性化関数適用部614と、出力値算出部615とを備える。
【0092】
かかる構成で、行列積計算部611は、何れの要素も1、0または-1の値をとる行列である接続表現行列と、中間ノード値を示すベクトルとの積を計算する。シフト演算部612は、接続表現行列と中間ノード値を示すベクトルとの積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。合計部613は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計する。活性化関数適用部614は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとの合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。出力値算出部615は、中間ノード値の更新値に対して重み付けを行って出力値を算出する。
行列積計算部611は、行列積計算手段の例に該当する。シフト演算部612は、シフト演算手段の例に該当する。合計部613は、合計手段の例に該当する。活性化関数適用部614は、活性化関数適用手段の例に該当する。出力値算出部615は、出力値算出手段の例に該当する。
【0093】
演算装置610によれば、再帰的なネットワーク構造を有する計算モデルにおける計算を、比較的簡単に行うことができる。特に、演算装置610によれば、行列積計算部611と、シフト演算部612と、合計部613と、活性化関数適用部614とによって、再帰的なネットワーク構造を有する計算モデルにおける計算を行うことができる。行列積計算部611は、加算器を用いて構成することができ、乗算器を用いる必要が無い。シフト演算部612は、シフトレジスタを用いて構成することができ、乗算器を用いる必要が無い。
【0094】
図9は、実施形態に係る学習制御装置の構成の、もう1つの例を示す図である。
図9に示す構成で、学習制御装置620は、仮設定部621と、学習制御部622とを備える。
かかる構成で、仮設定部621は、演算装置の接続表現行列の各要素の値を、定められた確率で要素の値が0になるように設定する。接続表現行列は、何れの要素も1、0または-1の値をとる行列である。演算装置は、行列積計算部と、シフト演算部と、合計部と、活性化関数適用部と、出力値算出部とを備える。行列積計算部は、接続表現行列と、中間ノード値を示すベクトルとの積を計算する。シフト演算部は、接続表現行列と、中間ノード値を示すベクトルとの積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。合計部は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計する。活性化関数適用部は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとの合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。出力値算出部は、中間ノード値の更新値に対して重み付けを行って出力値を算出する。
学習制御部622は、接続表現行列の要素の値が設定された演算装置に学習を行わせて、出力値の算出のための重み係数を更新させる。
仮設定部621は、仮設定手段の例に該当する。学習制御部622は、学習制御手段の例に該当する。
【0095】
学習制御装置620によれば、接続表現行列の要素の値が0になる確率を設定することで、演算装置の機械学習モデルにおけるスペクトル半径を調整することができる。スペクトル半径の調整によって、演算装置の処理の精度が高くなることが期待される。
【0096】
図10は、実施形態に係る演算方法における処理の手順の例を示すフローチャートである。
図10に示す演算方法は、積を計算すること(ステップS611)と、シフト演算を行うこと(ステップS612)と、合計を行うこと(ステップS613)と、活性化関数を適用すること(ステップS614)と、出力値を算出すること(ステップS615)とを含む。積を計算すること(ステップS611)では、何れの要素も1、0または-1の値をとる行列である接続表現行列と、中間ノード値を示すベクトルとの積を計算する。シフト演算を行うこと(ステップS612)では、接続表現行列と中間ノード値を示すベクトルとの積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。合計を行うこと(ステップS613)では、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計する。活性化関数を適用すること(ステップS614)では、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとの合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。出力値を算出すること(ステップS615)では、中間ノード値の更新値に対して重み付けを行って出力値を算出する。
【0097】
図10に示す演算方法によれば、再帰的なネットワーク構造を有する計算モデルにおける計算を、比較的簡単に行うことができる。特に、
図10に示す演算方法によれば、ステップS611からS614における処理によって、再帰的なネットワーク構造を有する計算モデルにおける計算を行うことができる。ステップS611における処理は、加算によって行うことができ、乗算を行う必要が無い。ステップS612における処理は、シフト演算によって行うことができ、乗算を行う必要が無い。
【0098】
図11は、実施形態に係る学習制御方法における処理の手順の例を示すフローチャートである。
図11に示す学習制御方法は、行列を設定すること(ステップS621)と、学習を行わせること(ステップS622)とを備える。
行列を設定すること(ステップS621)では、演算装置の接続表現行列の各要素の値を、定められた確率で要素の値が0になるように設定する。接続表現行列は、何れの要素も1、0または-1の値をとる行列である。演算装置は、行列積計算部と、シフト演算部と、合計部と、活性化関数適用部と、出力値算出部とを備える。行列積計算部は、接続表現行列と、中間ノード値を示すベクトルとの積を計算する。シフト演算部は、接続表現行列と、中間ノード値を示すベクトルとの積で得られるベクトルの要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行う。合計部は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計する。活性化関数適用部は、シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとの合計で得られたベクトルの要素毎に、活性化関数として定められている関数を適用して、タイムステップの進行による中間ノード値の更新値を示すベクトルを算出する。出力値算出部は、中間ノード値の更新値に対して重み付けを行って出力値を算出する。
学習を行わせること(ステップS622)では、接続表現行列の要素の値が設定された演算装置に学習を行わせて、出力値の算出のための重み係数を更新させる。
【0099】
図11に示す学習制御方法によれば、接続表現行列の要素の値が0になる確率を設定することで、演算装置の機械学習モデルにおけるスペクトル半径を調整することができる。スペクトル半径の調整によって、演算装置の処理の精度が高くなることが期待される。
【0100】
図12は、少なくとも1つの実施形態に係るコンピュータの構成を示す概略ブロック図である。
図12に示す構成において、コンピュータ700は、CPU(Central Processing Unit、中央処理装置)710と、主記憶装置720と、補助記憶装置730と、インタフェース740とを備える。
【0101】
上記の演算装置10、学習制御装置20、演算装置610、および、学習制御装置620のうち何れか1つ以上またはその一部が、コンピュータ700に実装されてもよい。その場合、上述した各処理部の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。また、CPU710は、プログラムに従って、上述した各記憶部に対応する記憶領域を主記憶装置720に確保する。各装置と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。
【0102】
演算装置10がコンピュータ700に実装される場合、入力値重み付け部11、行列積計算部12、シフト演算部13、合計部14、活性化関数適用部15、および、出力値算出部16の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0103】
また、CPU710は、プログラムに従って、中間ノード値記憶部17など演算装置10の処理のための記憶領域を主記憶装置720に確保する。演算装置10と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。演算装置10とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示を行い、ユーザ操作を受け付けることで実行される。
【0104】
学習制御装置20がコンピュータ700に実装される場合、仮設定部21、学習制御部22、評価部23、および、演算装置設定部24の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0105】
また、CPU710は、プログラムに従って、学習制御装置20の処理のための記憶領域を主記憶装置720に確保する。学習制御装置20と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。学習制御装置20とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示を行い、ユーザ操作を受け付けることで実行される。
【0106】
演算装置610がコンピュータ700に実装される場合、行列積計算部611、シフト演算部612、合計部613、活性化関数適用部614、および、出力値算出部615の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0107】
また、CPU710は、プログラムに従って、演算装置610の処理のための記憶領域を主記憶装置720に確保する。演算装置610と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。演算装置610とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示を行い、ユーザ操作を受け付けることで実行される。
【0108】
学習制御装置620がコンピュータ700に実装される場合、仮設定部621、および、学習制御部622の動作は、プログラムの形式で補助記憶装置730に記憶されている。CPU710は、プログラムを補助記憶装置730から読み出して主記憶装置720に展開し、当該プログラムに従って上記処理を実行する。
【0109】
また、CPU710は、プログラムに従って、学習制御装置620の処理のための記憶領域を主記憶装置720に確保する。学習制御装置620と他の装置との通信は、インタフェース740が通信機能を有し、CPU710の制御に従って通信を行うことで実行される。学習制御装置620とユーザとのインタラクションは、インタフェース740が表示装置および入力デバイスを備え、CPU710の制御に従って各種画像の表示を行い、ユーザ操作を受け付けることで実行される。
【0110】
なお、演算装置10、学習制御装置20、演算装置610、および、学習制御装置620が行う処理の全部または一部を実行するためのプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータシステムに読み込ませ、実行することにより各部の処理を行ってもよい。なお、ここでいう「コンピュータシステム」とは、オペレーティングシステム(OS)等のソフトウェアや周辺機器等のハードウェアを含むものとする。
また、「コンピュータ読み取り可能な記録媒体」とは、フレキシブルディスク、光磁気ディスク、ROM(Read Only Memory)、CD-ROM(Compact Disc Read Only Memory)等の可搬媒体、コンピュータシステムに内蔵されるハードディスク等の記憶装置のことをいう。また上記プログラムは、前述した機能の一部を実現するためのものであってもよく、さらに前述した機能をコンピュータシステムにすでに記録されているプログラムとの組み合わせで実現できるものであってもよい。
【0111】
以上、この発明の実施形態について図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、添付の請求項に定義された発明の要旨を逸脱しない範囲の設計等も含まれる。
【産業上の利用可能性】
【0112】
本発明は、演算装置、学習制御装置、演算方法、学習制御方法および記録媒体に適用してもよい。
【符号の説明】
【0113】
1 演算システム
10、610 演算装置
11 入力値重み付け部
12、611 行列積計算部
13、612 シフト演算部
14、613 合計部
15、614 活性化関数適用部
16、615 出力値算出部
17 中間ノード値記憶部
20、620 学習制御装置
21、621 仮設定部
22、622 学習制御部
23 評価部
24 演算装置設定部
【手続補正書】
【提出日】2024-03-01
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算する行列積計算手段と、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うシフト演算手段と、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計する合計手段と、
前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出する活性化関数適用手段と、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する出力値算出手段と、
を備える演算装置。
【請求項2】
前記活性化関数適用手段は、3次の項と1次の項とによる3次多項式関数を前記活性化関数として用いる、
請求項1に記載の演算装置。
【請求項3】
前記行列積計算手段または前記活性化関数適用手段は、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)を用いて構成される、
請求項1または請求項2に記載の演算装置。
【請求項4】
請求項1から3の何れか一項に記載の演算装置の前記接続表現行列の前記複数の要素について、各要素の値が定められた確率で0になるように設定する仮設定手段と、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記複数の出力値の算出のための前記重み係数を更新させる学習制御手段と、
を備える学習制御装置。
【請求項5】
演算装置に、
1、0または-1の値をとる複数の要素を有する行列である接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、
前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、
を実装する演算方法。
【請求項6】
学習制御装置に、
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計し、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に適応される学習制御方法であって、前記演算装置の前記接続表現行列の複数の要素について、各要素の値を、定められた確率で要素の値が0になるように設定することと、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、
を実装する学習制御方法。
【請求項7】
プログラムに従って動作可能な装置に、
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、
前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、
前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、
前記シフト演算で得られるベクトルと、複数の重み付けされた入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、
前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、
を実装するプログラ
ム。
【請求項8】
コンピュータに、
1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習における中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計し、前記シフト演算で得られるベクトルと、前記機械学習において重み係数で重み付けされた複数の入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に、前記演算装置の前記接続表現行列の複数の要素について各要素の値を、定められた確率で要素の値が0になるように設定することと、
前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、
を実装するプログラ
ム。
【手続補正3】
【補正対象書類名】明細書
【補正対象項目名】0001
【補正方法】変更
【補正の内容】
【0001】
本発明は、演算装置、学習制御装置、演算方法、学習制御方法およびプログラムに関する。
【手続補正4】
【補正対象書類名】明細書
【補正対象項目名】0005
【補正方法】変更
【補正の内容】
【0005】
本発明の目的の一例は、上述した課題を解決することのできる演算装置、学習制御装置、演算方法、学習制御方法およびプログラムを提供することである。
【手続補正5】
【補正対象書類名】明細書
【補正対象項目名】0008
【補正方法】変更
【補正の内容】
【0008】
本発明の第三の態様によれば、学習制御方法は、学習制御装置に、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計し、前記シフト演算で得られるベクトルと、前記複数の重み付けされた入力値を有するベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に適応される学習制御方法であって、前記演算装置の前記接続表現行列の複数の要素について、各要素の値を、定められた確率で要素の値が0になるように設定することと、前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、を実装する。
【手続補正6】
【補正対象書類名】明細書
【補正対象項目名】0009
【補正方法】変更
【補正の内容】
【0009】
本発明の第四の態様によれば、プログラムは、プログラムに従って動作可能な装置に、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習モデルにおける中間ノード値を示すベクトルとの積を計算することと、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行うことと、前記シフト演算で得られるベクトルと、前記機械学習モデルにおいて重み係数を用いて重み付けされた複数の入力値を含むベクトルとを合計することと、前記シフト演算で得られるベクトルと、複数の重み付けされた入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出することと、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出することと、を実装する。
【手続補正7】
【補正対象書類名】明細書
【補正対象項目名】0010
【補正方法】変更
【補正の内容】
【0010】
本発明の第五の態様によれば、プログラムは、コンピュータに、1、0または-1の値をとる複数の要素を有する接続表現行列と、機械学習における中間ノード値を示すベクトルとの積を計算し、前記積で得られるベクトルの複数の要素の要素毎に、その要素の2進数表現によるビット列に対するシフト演算を行い、前記シフト演算で得られるベクトルと、重み付けされた入力値ベクトルとを合計し、前記シフト演算で得られるベクトルと、前記機械学習において重み係数で重み付けされた複数の入力値を含むベクトルとの合計で得られたベクトルの複数の要素の要素毎に、活性化関数を適用して、タイムステップの進行による前記中間ノード値の更新値を示すベクトルを算出し、前記中間ノード値の更新値に対して重み付けを行って複数の出力値を算出する演算装置に、前記演算装置の前記接続表現行列の複数の要素について各要素の値を、定められた確率で要素の値が0になるように設定することと、前記接続表現行列の要素の値が設定された前記演算装置に学習を行わせて、前記出力値の算出のための重み係数を更新させることと、を実装する。
【国際調査報告】