(57)【要約】【課題】  機械学習における学習の必要な計算量を減らす。【解決手段】データをパラメータに基づいて変化させてデータを処理して出力する活性化状態決定ユニット100は、それぞれが管理するパラメータに基づいて該データを処理させる複数のパラメータユニット120を有する。複数の各パラメータユニット120は、符号が変化する数値を発生する数値発生器300と、前記パラメータと、前記数値発生器の発生した数値に基づいて、前記データを処理するためのパラメータを作成する数値処理器(例えば加算器180)と、前記処理したデータを評価システムにて評価した評価値と、前記数値発生器が発生した数値に基づいて、前記パラメータを更新するパラメータ更新ユニット400とを備え、数値発生器300は、データ処理ごとに発生させる数値を変化させ、前記各パラメータユニット間で前記数値の符号変化の順番がそれぞれ異なるように数値を発生する。【選択図】図８
2019045944.tif 000002
【特許請求の範囲】
【請求項１】
データをパラメータに基づいて変化させてデータを処理して出力する活性化状態決定ユニットを有する機械学習システムであって、
前記活性化状態決定ユニットは、それぞれが管理するパラメータに基づいて該データを処理させる複数のパラメータユニットを有し、
かつ前記複数の各パラメータユニットは、
符号が変化する数値を発生する数値発生器と、
前記パラメータと、前記数値発生器の発生した数値に基づいて、前記データを処理するためのパラメータを作成する数値処理器と、
前記処理したデータを評価システムにて評価した評価値と、前記数値発生器が発生した数値に基づいて、前記パラメータを更新するパラメータ更新ユニットと、を備え、
前記数値発生器は、データ処理ごとに発生させる数値を変化させ、前記各パラメータユニット間で前記数値の符号変化の順番がそれぞれ異なるように数値を発生する
ことを特徴とする機械学習システム。
【請求項２】
前記数値発生器は、符号が異なる数値を発生させる乱数発生器を含むことを特徴とする請求項１の機械学習システム。
【請求項３】
前記数値発生器の乱数発生器は、周期的に発生させる数値が変化する疑似乱数発生器であり、
前記疑似乱数発生器は、各パラメータユニット間で、符号変化の順番が異なるように設定されていることを特徴とする機械学習システム。
【請求項４】
前記数値発生器の発生する数値は、その絶対値が一定ではなく、
前記数値処理器は、前記パラメータに前記数値を加算した値を用い、
前記パラメータ更新ユニットは、前記評価値を前記数値で除算した値を用いる
ことを特徴とする請求項１の機械学習システム。
【請求項５】
前記数値発生器が発生する数値を固定した状態で、前記更新のパラメータを作成し、
前記パラメータを更新する場合に、前記前記数値発生器が発生する数値を更新する
請求項１の機械学習システム。
【請求項６】
前記機械学習システムは、
前記数値発生器の発生させた数値を用いて前記データ処理を行う学習モードと、前記数値を用いずに前記データ処理を行う推論モードとを動作モードで制御する制御部と、を有し、
前記制御部は、
前記推論モードにて評価システムにて評価した評価値を基準評価値として記憶し、
前記学習モードにて評価システムにて評価した評価値を、前記基準評価値と比較した差分を、前記パラメータ更新するための評価値として前記パラメータユニットに送信する
ことを特徴とする請求項１の機械学習システム。
【請求項７】
前記学習モードと前記推論モードとを変更する場合には、前記パラメータを更新する
請求項６の機械学習システム。
【請求項８】
前記活性化状態決定ユニットは人工ニューロンを構成する請求項１記載の機械学習システム。
【請求項９】
データをパラメータに基づいて変化させてデータを処理して出力する活性化状態決定ユニットを有する機械学習システムにおける機械学習方法であって、
前記活性化状態決定ユニットは、それぞれが管理するパラメータに基づいて該データを処理させる複数のパラメータユニットを有し、
かつ前記複数の各パラメータユニットは、
符号が変化する数値を発生する数値発生器と、
前記パラメータと、前記数値発生器の発生した数値に基づいて、前記データを処理するためのパラメータを作成する数値処理器と、
前記処理したデータを評価システムにて評価した評価値と、前記数値発生器が発生した数値に基づいて、前記パラメータを更新するパラメータ更新ユニットと、を備え、
前記数値発生器は、データ処理ごとに発生させる数値を変化させ、前記各パラメータユニット間で前記数値の符号変化の順番がそれぞれ異なるように数値を発生する
ことを特徴とする機械学習方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、機械学習装置及び機械学習方法に係り、特に機械学習におけるパラメータの学習に関する。
【背景技術】
【０００２】
機械学習の発展により、大量のデータに基づいて少ない工数で有用な知見を得る技術が実用化されてきている。機械学習の中でも、ニューラルネットワークを用いた推論システムは画像認識や言語翻訳などの特定の分野では実用に足る精度に達してきており、さらなる発展が期待されている。
【０００３】
ニューラルネットワークベースの機械学習では、ネットワークのパラメータを学習（調整）する手法として誤差逆伝播法が広く用いられている。誤差逆伝播法はパラメータを調整するべき方向を定めるための評価関数に対する勾配を、数値微分法よりも少ない計算負荷で求めることができる。近年では複雑な問題の近似解を精度良く推測するために、ネットワークの段数を増やすディープラーニングが広く試みられている。誤差逆伝播法は、ディープラーニングにおけるネットワークの段数の増加に伴って増加する計算負荷を抑えるための不可欠な技術となっている。
【０００４】
一方、誤差逆伝播法では、評価関数を微分可能かつプログラミング可能な数式で定義しておかなければ、学習ができない。現在の応用例ではデジタル化されたデータを確率論や統計理論に基づいて分類する問題が主であるために、評価関数式は理論的に求められている。しかし、現実の問題に対して広くニューラルネットワークを用いて近似解を求めようとする場合、出力の評価はできても評価関数の数式定義が困難な場合がある。例えば、ニューラルネットワークの出力に基づいて現実世界に物理的な作用を及ぼし、その結果を観測するような場合では、物理作用とその結果についてのモデルを定義しなければ、数式の定義ができない。
【０００５】
数値微分法を用いれば、評価関数の数式が定義できていなくとも、評価結果さえ得られれば学習は可能である。しかし、ディープラーニングを実施する場合には調整対象のパラメータ数が多くなるため、数値微分法では計算量が膨大となり、現実的な時間内に近似解を得ることがほとんど困難となる。
【０００６】
ディープラーニングをより幅広い分野（例えば評価関数が微分不能である場合や数式定義が困難な分野）に適用するためには、従来の数値微分法や誤差逆伝播法以外でパラメータ調整のための勾配を推定する方法が望まれる。
【０００７】
例えば、特許文献１には機械学習システムに学習させる際に評価関数が不連続・微分不能な場合に対して学習を行わせる方法が開示されている。この学習方法は、Webページの評価アルゴリズムが不連続で微分不能な性質を持つため、微分不能アルゴリズムが出力する値に一定のルールで変形を行うことで勾配の推定値を算出して、その勾配に基づいて学習する方法である。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特表２００９−５１５２３１公報（WO2007/011529）
【発明の概要】
【発明が解決しようとする課題】
【０００９】
評価関数の数式の定義が困難または定義できても微分不能である場合、その評価関数を用いて機械学習を行う際には誤差逆伝播法を利用することは不可能である。そのため、そのような条件で学習を行う際には数値微分法を使わざるを得ないが、数値微分法は計算量が大きくなるために現実的な時間で計算を完了させることが困難となる。数値微分法では、パラメータを一つずつ変化させ、その変化に対する評価値の変化からパラメータの勾配を推定するため、パラメータ数をNとしたとき、一回の勾配推定に必要な計算量例えば積和演算回数が0(N2)となり、複雑なネットワークでは学習完了までに必要となる計算量が莫大となる。そのため、数値微分法を用いて実用的な規模のモデルを機械学習で得ることは困難である。
【００１０】
本発明の目的は、機械学習における学習に必要な計算量を減らすことにある。
【課題を解決するための手段】
【００１１】
本発明に係る機械学習は、数値微分法のようにパラメータを一つずつ変化させるのではなく、複数のパラメータを同時に変化させることで学習完了までに必要な計算量を削減する。複数のパラメータを同時に変化させる際に、それぞれのパラメータの変化方向を互いに相関が小さい数列を用いて決定し、得られた評価値変化量数列に対してパラメータを変化させた方向に対応して正または負の符号を掛け合わせながら積分することで、同時に変化させた個々のパラメータが評価値に与える影響量を分離し、勾配を推定してパラメータの調整を実行する。
【００１２】
本発明の好ましい例によれば、データをパラメータに基づいて変化させてデータを処理して出力する活性化状態決定ユニットを有する機械学習システムであって、
前記活性化状態決定ユニットは、それぞれが管理するパラメータに基づいて該データを処理させる複数のパラメータユニットを有し、
かつ前記複数の各パラメータユニットは、
符号が変化する数値を発生する数値発生器と、
前記パラメータと、前記数値発生器の発生した数値に基づいて、前記データを処理するためのパラメータを作成する数値処理器と、
前記処理したデータを評価システムにて評価した評価値と、前記数値発生器が発生した数値に基づいて、前記パラメータを更新するパラメータ更新ユニットと、を備え、
前記数値発生器は、データ処理ごとに発生させる数値を変化させ、前記各パラメータユニット間で前記数値の符号変化の順番がそれぞれ異なるように数値を発生することを特徴とする機械学習システム、と構成される。
【発明の効果】
【００１３】
本発明によれば、機械学習における学習に必要な計算量を減らすことができる。
【図面の簡単な説明】
【００１４】
【図１】機械学習システムの全体構成を示す図。
【図２】データ処理システム1000の構成を示す図。
【図３】データ処理システム1000のハードウェア構成を示す図。
【図４】制御部1300の構成を示す図。
【図５】制御部1300の動作フローチャートを示す図。
【図６】学習完了判定部1340の構成を示す図。
【図７】学習完了判定部1340の動作フローチャートを示す図。
【図８】活性化状態決定ユニット100の構成を示す図。
【図９】パラメータユニット120の構成を示す図。
【図１０】パラメータユニット120の動作フローチャートを示す図。
【図１１】パラメータ更新ユニット400の構成を示す図。
【図１２】パラメータ更新ユニット400の動作フローチャートを示す図。
【図１３】数値発生器300の構成を示す図。
【図１４】疑似乱数発生器の構成を示す図。
【図１５】学習条件の設定画面の例を示す図。
【図１６】実施例２における数値発生器の構成を示す図。
【図１７】実施例３におけるパラメータ更新ユニットの構成を示す図。
【図１８】実施例３におけるパラメータ更新ユニットの動作フローチャートを示す図。
【図１９】実施例３におけるフィルタ回路の構成を示す図。
【図２０】実施例４における制御部の構成を示す図。
【図２１】実施例４における制御部の動作フローチャートを示す図。
【図２２】実施例４における学習完了判定部の構成を示す図。
【図２３】実施例４における学習完了判定部の動作フローチャートを示す図。
【発明を実施するための形態】
【００１５】
以下、図面を参照して、本発明の好ましい実施形態について説明する。  
図１は機械学習システムの全体構成を示す図である。機械学習システムは、データ処理システム1000と、学習結果を評価する評価システム2000から構成される。データ処理システム1000は主に機械学習を行うものであり、学習に必要な情報（例えば複数のセンサ情報）をデータ入力として受け取り、学習処理を行って、データを出力する。評価システム2000はデータ処理システム1000の出力情報である学習結果について評価を行う。データ処理システム1000は例えばサーバであり、評価システム2000はデータ処理システム1000とは独立に動作するシステムである。
【００１６】
データ処理システム1000は、一つ以上の入力と、一つ以上の評価システム2000からの評価値を受け取り、一つ以上の出力を生成する。データ処理システム1000は推論モードと学習モードの2つの動作モードを持つ。推論モードではパラメータの値に基づいた処理を行って出力を生成する。学習モードでは、パラメータの値を微小だけ変化させた状態で処理を行って、出力を生成する。学習モードでは一つの入力に対してパラメータの変化パターンを変えた複数の出力を生成することができる。
【００１７】
評価システム2000は、データ処理システム1000の出力に対して処理目的との合致度を評価して定量的な評価値を出力する。評価は、学習期間中においてデータ処理システム1000の動作モードにかかわらず常に行われている。評価システム2000はデータ処理システムの出力を直接評価するだけでなく、データ処理システムの出力を用いて物理的な作用を行い、その結果を監視して評価するものでも良い。例えば、データ処理システム1000の出力結果に基づいて機械を動作させ、その動作がもたらす結果を人間が主観的に評価して点数を付けた結果を評価値としても良い。このように構成した場合、機械学習システムの観点からは評価システム2000は、サーバ等のコンピュータに限らず、物理的な作用を行う機械、監視カメラ等の監視装置、人間が評価を行う場合にはその評価値を入力する端末、等の情報処理装置を含む。
【００１８】
まず、複数のパラメータを同時に変化させて学習させるために利用している原理について述べる。  
本発明の好ましい例では、数値発生位相を持つ数値発生器300が持つ性質として、位相が等しい数値発生器300aおよび300bの組が発生させる数列組の相関が高くなり、位相が異なる数値発生器300aおよび300cの組が発生させる数列組の相関が低くなるという特徴を用いている。数値発生器300は正(+1)または負(-1)の数列を発生し、発生周期がTである場合、異なる位相設定から生成される数列Cn, Cmは、以下の式１を満たすとする。
【００１９】
【数１】
2019045944.tif 000003
【００２０】
すなわち、同位相の数値発生器から得られる数列組の積を数値発生器の周期T期間累積した値は周期Tとなり、異なる位相の数値発生器から得られる数列組の積を数値発生器の周期T期間累積した値は0に漸近する。この性質は、符号分割多重法で用いられる基本原理である。
【００２１】
この性質を利用してパラメータが評価値に与える影響の推定を行う。数値微分法ではパラメータを一つずつ変更して、そのパラメータが評価値に与える影響量を推定する。これに対して本発明は、数値発生器から得られる数列に従ったパターンでパラメータを変更し、同時に複数のパラメータを変更した上で処理を実行して評価値数列を得る。この評価値数列に含まれる各要素にはパラメータ毎の影響量が混合された状態にあるが、それぞれのパラメータが異なるパターンで変更されているため、q番目のパラメータの変更パターンを規定する数列と評価値数列を掛け合わせて積分することで、q番目のパラメータの影響量だけを抽出することができる。
【００２２】
数学的な仮定と勾配推定手順を以下に示す。データ処理システムの中のk番目のパラメータの値pkを長さTの数列Ckに従って正と負の方向に微少量だけ変化させた数列（式２）を作成する。
【００２３】
【数２】
2019045944.tif 000004
【００２４】
パラメータの数だけ作成されたpkのそれぞれのm番目の要素を用いて同じ入力データをデータ処理システムに通して処理を行い、その出力結果を評価システムによってT回評価した結果によって構成される数列を評価値数列Eとする。なお、評価システムが複数ある場合には評価システム毎の重視度を設定する重みレジスタ1500に従って重み付けされた後の評価値によって数列を構成する。この評価値数列Eは、パラメータを変化させないときの処理結果に対する評価値をE0とした時、m番目の構成要素は、式３のように近似できると仮定する。なお、k番目のパラメータの勾配値gkは数値微分法を用いて、k番目以外のパラメータを固定値として、微少値εだけパラメータを変化させたときの評価値の変化量である。
【００２５】
【数３】
2019045944.tif 000005
【００２６】
この仮定は複数パラメータを同時に変更したときの評価値の変化量は、パラメータを個別に変化させたときの線形結合で表現できることを意味している。実際にはデータ処理システム内部の活性化状態決定ユニットや評価システムが非線形性を持つが、本発明は真の勾配値に対して線形近似を行っていると見なすことができる。
【００２７】
本発明において、求めたいのはパラメータの勾配値gである。上述の式３からq番目のパラメータの勾配gqを求めたい場合、式４のように変形する。
【００２８】
【数４】
2019045944.tif 000006
【００２９】
ここに、q番目のパラメータを変化させたときに用いた数列Cqを用いてT回の試行それぞれに数列Cqを掛け合わせる、下記の式５の計算を行う。
【００３０】
【数５】
2019045944.tif 000007
【００３１】
ここで、数列CkとCqを周期Tの期間掛け合わせて累積計算した場合には前述の定義からq=kではT、q≠kでは0に収束するため、下記の式６、式７により、gqを求めることができる。
【００３２】
【数６】
2019045944.tif 000008
【００３３】
【数７】
2019045944.tif 000009
【００３４】
この数学的規則を適用して近似解を求めるためには、T回の試行が必要になる。このTの値は最大でも数値発生器の周期となるが、勾配推定に誤差を許容することでより小さい値を用いることができる。前述の計算過程でTが小さくなるほど、q≠kの時に数列CkとCqの乗算累積値が0に収束しにくくなるため、誤差成分が発生することになるが、誤差成分と勾配成分の比は1:Tとなるため、Tに対して反比例して誤差成分が小さくなることが期待できる。よって、実用上はTの値を数値発生器の周期よりも小さくしてパラメータの調整を行うことができる。
【００３５】
誤差を許容した場合、理論上最低限必要な処理回数は、パラメータ数をKとしたときlog2Kになる。これは、全てのパラメータが異なるパターンとなる数列Ckを持つためには、数列の長さがlog2K以上で無くてはならないからである。ただし、数値発生器300が持つ性質によりlog2K回の処理では全てのパラメータに異なるパターンの数列を割り当てられない位相状態があることと、異なるパラメータの影響を十分に0に漸近させるため、実用上はこの値よりも処理回数を大きくすることが必要となる。
【実施例１】
【００３６】
図２は、データ処理システム1000の具体的な構成を示す。  
データ処理システム1000は、複数の活性化状態決定ユニット100、評価差分値配信経路200、動作モード配信経路210、パラメータ更新信号配信経路220、入力レジスタ1100、出力レジスタ1200、制御部1300、評価差分計算器1400、現在評価値レジスタ1410、基準評価値レジスタ1420、評価値レジスタ選択器1430、評価システム重みレジスタ1500、および周辺回路から構成される。活性化状態決定ユニット100は人工ニューロンを構成し、ここでは複数の活性化状態決定ユニット100の集合を活性化状態決定ユニット群10ということにする。データ処理システム1000に入力されたデータは入力レジスタ1100に保持され、その入力データが活性化状態決定ユニット群10を通る間に処理が行われて、その処理結果が出力レジスタ1200に格納される。
【００３７】
入力レジスタ1100は、制御部1300から動作モード信号を受け取る。動作モードが学習モードであることを検知した場合には、外部からの入力信号が変化してもその値を取り込まず、現在の値を保持し続ける。一方、動作モードが推論モードであることを検知した場合には、外部からの入力信号を取り込み、入力レジスタ1100の状態を更新する。
【００３８】
書き込みレジスタ選択器1430は、制御部1300から動作モード信号を受け取る。動作モードが学習モードであることを検知した場合には、選択器1430に入力された評価値で現在評価値レジスタ1410を書き換える。推論モードであることを検知した場合には、基準評価値レジスタ1420を書き換える。
【００３９】
複数の評価値重みレジスタ1500は、複数ある評価システム2000ごとに異なる重み値を登録する。重み値は、機械学習システムの設計時にその値を決定して、このシステムの学習が開始する前の初期化の段階に各評価値重みレジスタ1500に設定しておく。なお、評価システム2000が一つしか存在しない場合には評価値重みレジスタ1500を省略しても良い。
【００４０】
図３は、データ処理システム1000のハードウェア構成を示す。  
データ処理システムは、外部からの入力データを受け取る入出力装置3040a、評価システムからの評価を受け取る入出力装置3040b、データ処理システムの計算結果を出力する入出力装置3040c、中央処理装置（ＣＰＵ）3010、主記憶3020、活性化状態決定ユニット群10が実装される演算加速装置（アクセラレータ）3030から構成される。入出力装置3040は、例えばネットワークインターフェイスカード(NIC)、ホストバスアダプタ(HBA)、ホストチャネルアダプタ(HCA)、等である。なお、入出力装置3040には、データ入力するキーボードやマウス等の入力部と、データを表示する表示部が含まれる。
【００４１】
アクセラレータ3030は、再構成可能回路(FPGA)、用途特化集積回路(ASIC)、またはミニプログラムを実行可能なコプロセッサ群、等が含まれる。主記憶3020は、入力データ、出力データ、現在評価値、基準評価値等を保持する。中央処理装置3010は、制御部1300や評価差分計算器1400の動作に関するプログラムを実行する。なお、制御部や評価差分器の動作に相当する機能をハードウェアとしてアクセラレータ3030に作り込んでも良い。その場合、中央処理装置3010は入出力処理を担当することになる。
【００４２】
図４は、制御部1300の構成を示す。  
制御部1300は、データ処理システム1000の動作モードを決定し、他の構成要素の動作を制御する。制御部1300は、動作モードを保持する動作モードレジスタ1310と、学習を行う周期（サイクル）数を保持するチップ長レジスタ1320と、現在のサイクル数を保持するチップカウンタ1330と、評価値を監視して学習の完了を検知する学習完了判定部1340を有する。制御部1300はまた、外部から現在の評価値の値を受け取るポートEと、評価値差分値を受け取るポートΔEと、現在の動作モードを出力するポートMと、パラメータ更新タイミングを出力するポートUを持つ。
【００４３】
動作モードとして、推論モードと学習モードの２つが存在する。推論モードでは入力データから出力データを生成する処理のみを実行し、パラメータの更新は行わない。学習モードでは、一つの入力データから一つ以上の出力を生成し、評価システム2000からの評価値を用いてパラメータ更新に必要な勾配を計算し、パラメータの更新を行う。一つのステップが進む度に、選択器1321を介してチップカウンタ1330の値が減算され、チップカウンタ1330の値が0になると、チップ長レジスタ1320の値がチップカウンタに入力され、次の学習サイクルが始まる。
【００４４】
動作モードレジスタ1310は、チップカウンタの値が0以外の場合には学習モードを表す値を格納し、0の場合には推論モードを表す値を格納する。また、チップカウンタ1330の値が1から0に変わるタイミングを検知して、パラメータ更新信号が送出される。学習完了判定部1340は、現在の評価値と評価値の変化量をポートEおよびポートΔEから平均化演算器1301を通して受け取り、学習が完了したかを判定する。平均化演算器は動作モードが学習モードの間は外部からの値を累積し続け、推論モードに切り替わる時に平均値を計算して学習完了判定部1340に供給する。学習完了判定部1340は平均値を受け取ることで、学習モード期間中の１回の処理毎の評価値の変化によって学習完了が誤判定されることを防ぐ。
【００４５】
本実施例では、推論モード１回に対して、学習モードを１回以上行う。すなわち、はじめに推論モードで基準評価値を取得し、次に、複数の数値発生器から数値をひとつずつ発生させてそれぞれを複数のパラメータに加算した値を用いてデータ処理を行い、評価システムによる現在評価値を取得し、評価値差分と発生させた数値を用いてパラメータ更新のために必要な勾配値を算出する学習モードを１回以上実施する。その後、推論モードに戻すタイミングで前述の学習モードで算出された１つ以上の勾配値の和をとり、学習モードを実施した回数で除した値をパラメータに加算して、パラメータの更新を行う。これは、図５を参照した動作説明から容易に理解されよう。
【００４６】
図５は、制御部1300の動作フローチャートを示す。  
学習開始前に、本システムの操作者によってチップ長レジスタの値、学習完了基準（目標評価値および評価値が変動しない場合に打ち切るまでの学習サイクル数）が、事前に制御部に与えられるものとする。
(10000) 動作モードレジスタ1310の値を、推論モードを示す値に設定し、動作モード信号        を出力する。
(10100) チップ長レジスタ1320の値をチップカウンタ1330に設定する。
(10200) 学習完了判断部1340が評価値から学習の完了を判定する。
【００４７】
学習が完了したと判断した場合にはフローチャートを抜けて動作を停止する。学        習が未完了と判断した場合には手順(10300)に進む。
(10300) データ処理システム1000が、入力レジスタ1100に設定されたデータから出力結果        を生成して、評価システムによる評価が完了するまで待機する。この待機期間中        に、現在の入力データに対してデータ処理システムによって処理を適用した結果        に対する評価値を計算して、基準評価値レジスタ1420に書き込む。
【００４８】
完了するまで手順(10300)を繰り返す。
(10400) 動作モードレジスタ1310の値を学習モードに設定し、動作モード信号を出力する。
(10500) データ処理システム1000が、入力レジスタ1100に設定されたデータから出力結果        を生成して、評価システムによる評価が完了するまで待機する。完了するまで手        順(10500)を繰り返す。
(10600) チップカウンタ1330の値を1減算する。
(10700) チップカウンタ1330の値が0である場合には手順(10800)に進む。  
0以外の場合には手順(10500)に進む。
(10800) パラメータ更新信号を出力する。手順(10000)に進む。
【００４９】
図６は学習完了判定部1340の構成を示す。  
学習完了判定部1340は、目標評価値レジスタ1341、停滞閾値レジスタ1342、停滞期間限界レジスタ1343、停滞期間カウントレジスタ1344と、周辺回路から構成される。外部から与えられる評価値Eは、目標評価値レジスタ1341と評価値比較器13402に入力され、目標値よりも現在の評価値が大きいまたは小さい場合に正の信号が出力される。評価差分値ΔEの絶対値は停滞閾値レジスタ1342と差分値比較器13401に入力され、評価差分値の絶対値が停滞閾値レジスタ1342の値よりも小さいときに正の信号が出力される。停滞期間カウントレジスタ1344は、評価システムによる評価が完了する毎に差分値比較器13401の出力によって、選択器13404を介してその値が更新される。
【００５０】
すなわち、停滞期間カウントレジスタ1344は、差分値比較器13404の出力が正の時は加算器13403で1加算した値により更新され、負の時は0で更新される。停滞期間限界レジスタ1343の出力と停滞期間カウントレジスタ1344の出力は停滞期間比較器13405に入力され、停滞カウントレジスタ1344の値が停滞期間限界レジスタ1343の値以上の場合は正の信号が出力される。評価値比較器13405と停滞期間比較器13402の出力は論理和ゲート13406に入力され、どちらかが正の信号を発すると、外部に対して学習完了信号を送出する。
【００５１】
次に、図７に示す、学習完了判定部1340の動作フローチャートを参照して、動作手順について説明する。
(13000) 外部から与えられる評価値の評価値の目標値Edestを目標評価値レジスタ1341に         、評価差分値の閾値ΔEthを停滞閾値レジスタ1342に、停滞期間の限界値Nを停滞        期間限界レジスタ1343に設定する。  
停滞期間カウントレジスタ1344を0に設定する
(13100) データ処理システムによる出力生成と評価システムによる評価が完了するまで手        順(13100)を繰り返す。評価が完了したら手順(13200)に進む。  
(13200) 現在の評価値Eが目標評価値レジスタ1341に設定された目標値Edestを超えている        かの判断において、現在の評価値Eが目標値Edestを超えている場合、学習完了と        判定する。超えていない場合、手順(13200)に進む。ここでの「超えた」とは、         評価値の最小化が目的であれば「小さくなった」ことを意味し、評価値の最大化        が目的であれば「大きくなった」ことを意味する。
(13300) 現在の評価値差分値の絶対値|ΔE|は停滞閾値レジスタ1342より小さいか、の判         断において、現在の評価値差分値の絶対値|ΔE|が閾値ΔEth以下の場合、手順(1        3500)に進む。閾値よりも大きい場合は手順(13400)に進む。
(13400) 停滞期間カウントレジスタ1344の値を0に設定する。手順(13100)に進む。
(13500) 停滞期間カウントレジスタ1344の値を1加算する。
(13600) 停滞期間カウントレジスタ1344の値が停滞期間限界レジスタ1343の値を超えた場        合、学習完了と判定する。超えていない場合、手順(13100)へ進む。
【００５２】
なお、学習を完了と判断した場合にチップ長レジスタ1320を0にリセットし、学習完了判断がなされたことを示す。または、他の手段で外部に学習完了を通知しても良い。
【００５３】
図８は活性化状態決定ユニット100の構成を示す。  
活性化状態決定ユニット100は、１つ以上のパラメータユニット120と、パラメータユニットの出力と活性化状態決定ユニットへの入力の積を計算する乗算器130と、複数の乗算器130の出力を加算する加算器140と、加算器の出力結果に基づいて活性化状態決定ユニットの活性化状態を決定する活性化関数器150から構成される。活性化状態決定ユニット100内の複数のパラメータユニット120には、評価差分値配信経路200、動作モード配信経路210、パラメータ更新信号配信経路220がそれぞれ接続される。
【００５４】
図９はパラメータユニット120の構成を示す。  
パラメータユニット120は、パラメータレジスタ110、数値発生器300、パラメータ更新ユニット400および周辺機能ブロックから構成される。入力として、評価差分値配信経路200、動作モード配信経路210、パラメータ更新信号配信経路220がパラメータユニット120に接続される。外部へパラメータ値を出力する。数値発生器300の出力は、動作モードによって切り替えが可能な選択器170に入力される。選択器170は、推論モードの時には0を出力し、学習モードの時には数値発生器300が発生させた値を出力する。選択器170からの出力値とパラメータレジスタ110の値は数値処理器例えば加算器180によって加算され、外部に出力される。また、数値発生器300の出力を用いて、評価差分値配信経路200から入力される差分値を、除算器160で除算して推定勾配値を算出し、パラメータ更新ユニット400に入力する。パラメータ更新ユニット400は、推定勾配値と現在のパラメータレジスタ110の値を用いて、パラメータ更新信号配信経路220からの更新信号が到達したときにパラメータレジスタ110の値を更新する。
【００５５】
次に、図１０に示す、パラメータユニット120の動作フローチャートを参照して、動作手順について説明する。
(11000) 動作モードの判定において、動作モードが学習モードである場合、手順(11100)         に進む。動作モードが推論モードである時には、手順(11700)に進む。
(11100) 数値発生器300から値を一つ取り出す。取り出した値を以下ではAとする。
(11200) パラメータレジスタ110の値にAを加算して出力する。
(11300) 現在の入力データと手順(11200)で出力したパラメータを用いて処理を行い、デ         ータ処理システムの出力が生成され、それを評価システムが評価して評価値が計        算されるまで待機する。評価値は現在評価値レジスタ1410に入力され、基準評価        値レジスタ1420との差分が評価差分計算器1400によって計算され、評価差分値配        信経路200を通じてパラメータユニットまで配信される。
(11400) 評価差分値配信経路200から配信された値をAで除算し、推定勾配値Bを算出する。
(11500) 推定勾配値Bをパラメータ更新ユニット400に入力する。
(11600) 学習が完了していなければ手順(11000)に進む。学習が完了している場合は動作         を終了する。
(11700) パラメータレジスタ110の値を外部に出力する。手順(11600)に進む。
【００５６】
図１１はパラメータ更新ユニット400の構成を示す。  
パラメータ更新ユニット400は、積分レジスタ410、学習係数レジスタ420、チップ長レジスタ430から構成され、外部からパラメータユニット120内部で計算された推定勾配値、パラメータレジスタ110の現在の値、パラメータ更新信号配信経路220からの信号を受け取り、パラメータレジスタ110の値を更新するための信号を出力する。パラメータ更新信号が来ていない期間は、加算器180で推定勾配値の値を積分レジスタ410の値に加算する。パラメータレジスタ110の更新は現在のパラメータレジスタ110の値を用いるように選択器170を設定して、実質的に更新を行わない。パラメータ更新信号が到着した場合、除算器160で、積分レジスタ410の値をチップ長レジスタ430の値で除算し、更に学習係数レジスタ420の値と乗算器190で掛け合わせたものに現在のパラメータレジスタ110の値を加算器180で加算した値を計算する。その加算された値でパラメータレジスタ110の値を更新する。また、積分レジスタの値を0にリセットする。
【００５７】
次に、図１２に示すパラメータ更新ユニットの動作フローチャートを参照して、動作手順について説明する。
(12000) データ処理システムによる出力生成と評価システムによる評価が完了していなければ、データ処理システムによる出力生成と評価システムによる評価が完了し、パラメータユニット120に評価差分値が配信され、推定勾配が計算されるまで待機する。推定勾配値が与えられるまで手順(12000)を繰り返す。
(12100) パラメータユニット120内部で計算された推定勾配値を積分レジスタ410の現在値に加算し、積分レジスタ410の値を更新する。
(12200) パラメータ更新信号配信経路220から更新信号が来ている場合は手順(12200)に進む。到着していない場合は手順(12000)に進む。
(12300) 積分レジスタ410の値をチップ長カウンタ430で除算し、推定勾配値を補正する。補正結果に学習係数を掛け合わせてパラメータ更新量を算定する。
(12400) 当該パラメータ更新量と現在のパラメータレジスタ110の値を加算し、計算結果を用いてパラメータレジスタ110の値を更新する。
(12500) 積分レジスタ410の値を0にリセットする。
(12600) 学習が完了している場合にはフローチャートを抜けて動作を停止する。学習が完了していない場合には手順(12000)に進む。
【００５８】
図１３は数値発生器300の構成を示す。  
数値発生器300は、疑似雑音源（または疑似乱数源）310と、数値微分用微少数発生器320、数値発生器300の出力に応じて正または負の符号を発生させる選択器170、および選択器170の出力と数値微分用微少数発生器320の積を計算して外部に出力する乗算器190から構成される。数値発生器300は要求に応じて正または負の微少数いずれか一つの数値を発生させて出力する。数値微分用微少数発生器320は数値格納レジスタを用いて、常に定数を発生させるように実装しても良い。
【００５９】
図１４は疑似雑音源310の構成を示す。  
疑似雑音源310は、位相が等しいベクトル同士の相関性が、位相が異なるベクトル同士の相関性よりも高い性質を持つ。換言すれば、位相が異なるベクトル同士を掛け合わせて積分した値が、位相が同じベクトル同士を掛け合わせて積分した値よりも優位に小さい性質を持つ。
【００６０】
具体的には、疑似雑音源310は、シフトレジスタ3101と、排他的論理和演算器3102から構成される。シフトレジスタ3101の特定の位置の値を排他的論理和演算器3102に入力（以下、”タップ”するという）し、計算結果を出力するとともにシフトレジスタの初段に入力してシフトレジスタの状態を更新する。なお、出力はシフトレジスタの最終段から行っても良い。シフトレジスタの長さとタップ位置の決定は、原始多項式に従う。このような回路で生成される疑似雑音はシフトレジスタの長さをNとしたときN段のM系列疑似雑音(M sequence Pseudo Noise)と呼ばれる。N段M系列疑似雑音は、T=2N-1 の周期を持ち、0と1の出現回数がほぼ等しくなる性質を持つ。また、0と1を-1と+1に割り当てた場合、シフトレジスタの初期値（以下、位相と呼ぶ）が等しい場合の相関値は1となり、位相が異なる場合の相関値は-1/Nとなる性質を持つ。Nが十分大きければ位相が異なる雑音源から発される信号の積分は0に漸近するため、位相が等しい雑音源に従って値を変化させたパラメータ以外の影響を排除することができる。
【００６１】
以上の説明から、パラメータユニット120は、一つの入力データに対して、疑似乱数発生器310を持つ数値発生器300の出力に基づいて内部パラメータの値を同時に変化させ、評価値の変化を積分することで内部パラメータの値を更新するものであり、入力データを変化させる毎に内部パラメータの値の更新を行って、機械学習することが理解される。
【００６２】
なお、数値発生器は乱数発生器でもよい。しかしながら、ランダムな乱数発生器では、各パラメータユニット間の相関が十分に低いことが保証されていない。そこで、数値発生器を周期変化する疑似乱数発生器として、各パラメータユニット間の相関が十分に低くすることで、学習にかかる工程を少なくすることができる。
【００６３】
図１５は、機械学習システムにおける学習条件の設定画面の例を示す。  
設定画面は、データ処理システム1000を構成する計算機3000（図３）の入出力装置3040の１つである表示部に表示される。  
設定画面4000は、チップ長設定4010、学習係数設定4020、微分係数設定4030、学習完了閾値設定4040および評価システム重み設定4050の各項目を含む。チップ長設定4010は学習の周期を表す値であり、制御部1300のチップ長レジスタ1320及びパラメータ更新ユニットのチップ長レジスタ430に反映される。学習係数設定4020の値は、パラメータ更新ユニット400の学習係数レジスタ420に反映される。微分係数設定4030の値は、数値発生器300の数値微分用微少数発生器320に反映される。学習完了閾値設定4040は制御部1000の学習完了判定部1340において学習完了を判断するために用いられる。評価システム重み設定4050はデータ処理システム1000の評価値重みレジスタ1500に反映される。
【００６４】
なお、図示の例では主要な設定項目を挙げているが、これ以外にも本実施例に含まれる任意の位置のレジスタと対応づいた設定パラメータが存在しても良い。また、この例ではグラフィカル・ユーザー・インターフェイスを用いて示しているが、コマンドベースで設定するインターフェイスを持っていても良い。
【実施例２】
【００６５】
実施例２は、数値発生器300の他の構成例を示すものである。  
図１６は、実施例２に係る数値発生器300の構成を示す。数値発生器300は、発信器330、周波数レジスタ340、チップ長レジスタ350、数値微分用微少数発生器320、および乗算器190から構成される。周波数レジスタ340とチップ長レジスタ350の値に基づいて発信器330は信号を発生させる。乗算器190は、発信器330の出力と数値微分用微少数発生器320を乗算して外部に出力する。
【００６６】
発信器330は、周波数レジスタ340とチップ長レジスタの値がそれぞれF、Tである時、下記の式８に従う周期Tの離散的な正弦波とみなせる数列を発生させる。
【００６７】
【数８】
2019045944.tif 000010
【００６８】
実施例２における数値発生器の位相は周波数レジスタの値Fに相当し、パラメータユニット毎に異なる値が設定される。
【００６９】
実施例２における二つの異なる数値発生器300の周波数レジスタ340の値をFN,FMとするとき、以下の関係が成り立つ。
【００７０】
【数９】
2019045944.tif 000011
【００７１】
これを離散化すると、下記の式１０のようになる。
【００７２】
【数１０】
2019045944.tif 000012
【００７３】
このように、位相が同じ場合には1、異なる場合には0に収束するため、本実施例の数値発生器300から発生させる数列を用いて実施例１と同様の動作が可能である。
【実施例３】
【００７４】
実施例３は、パラメータ更新ユニット400の他の構成例を示すものである。  
本発明では、数値発生器300が持つ相関性を利用した処理により、位相が同じパラメータユニット120がデータ処理システムの出力に与える影響量を、位相が異なるパラメータユニット120の影響量から分離している。学習モードの開始から終了までを一学習サイクルとしたとき、この位相が異なるパラメータユニットの影響量はランダムノイズとして観測されることが期待できる。一方で、学習サイクル毎にわずかずつパラメータ値を更新している場合には、勾配の変化について変化が緩やかであることが期待できる。
【００７５】
この仮定を利用してランダムノイズを削減するために、ローパスフィルタのようなフィルタ回路440をパラメータ更新ユニット400に追加して推定勾配値を算出する。フィルタ回路は、周波数領域にかかわらず存在するランダムノイズの中から、低い周波数領域に存在することが期待される勾配の時間変化信号を取り出す。
【００７６】
図１７は、実施例３におけるパラメータ更新ユニット400の構成を示す。実施例1におけるパラメータ更新ユニット400（図１１）と異なる点は、除算器160の後段にフィルタ回路440が配置されたところにある。除算器160でチップ長レジスタ430の値で積分レジスタ410の値を除算した後に、フィルタ回路440で低周波数領域における勾配の時間変化信号を取り出し、乗算器190においてフィルタ回路440の出力と学習係数レジスタ420の値とを掛け合わせて推定勾配値を得る。これ以外の部位は、実施例１と同様であるため、説明を省略する。
【００７７】
図１８に示す動作フローチャートを参照して、実施例３におけるパラメータ更新ユニット400の動作手順を説明する。実施例1における手順(12300)（図１２参照）が、下記手順(12301)のように変更される。
(12301)積分レジスタ410の値をチップ長カウンタ430で除算し、フィルタ回路440に入力する。フィルタ回路の出力に学習係数を掛け合わせてパラメータ更新量を算定する。  
上記手順(12300)以外は、実施例１（図１２）と同様であるため、説明を省略する。
【００７８】
図１９にフィルタ回路440の構成を示す。  
フィルタ回路440は、1つ以上の遅延素子4401と、遅延素子の出力と掛け合わせるフィルタ係数を保持する複数のフィルタ係数レジスタ4402と、遅延素子4401の出力とそれぞれのフィルタ係数レジスタ4402の係数とを掛け合わせる複数の乗算器4403と、乗算器4403で掛け合わせた値を加算する加算器4404により構成される。加算器4404の出力がフィルタ回路440の出力となる。
【００７９】
なお、図示の例では典型的なＦＩＲフィルタ構成を示しているが、ＩＩＲフィルタで構成しても良い。フィルタ係数はローパスフィルタとして働くように値に調整する。カットオフ周波数は勾配変化の状況に応じて調整可能としておき、評価システムの評価値の変化傾向を見て設定する。
【実施例４】
【００８０】
機械学習システムにおいて、チップ長の設定は勾配推定精度に影響を及ぼし、同様に学習の進捗にも影響を及ぼす。そのため、学習の進捗が滞ったと判断されたときに、学習完了と判断する前にチップ長を増加させることで学習をさらに進めることができる可能性がある。実施例４では、制御部1300と学習完了判定部1340の構成および動作の一部を変更する。
【００８１】
図２０は制御部1300の構成を示す。チップ長レジスタ1320の周辺に、学習完了判定部1340からのチップ長加算信号に基づいてチップ長レジスタ1320の値を加算する加算器1322及び選択器1323等の周辺回路を追加する。チップ長加算信号が送出されていない場合にはチップ長レジスタ1320の値をそのまま保持する。
【００８２】
図２１に制御部1300の動作フローチャートを示す。実施例1における制御部の動作（図５のフローチャート）と同一の手順について同じ符号を付す。図５の動作に対して、実施例４ではステップ10900とステップ10910が追加された。以下、追加された特徴的な動作について述べる。なお、学習開始時は手順(10900)から開始する。
(10800) パラメータ更新信号を出力する。手順(10900)に進む。
(10900) 学習完了判定部1340からチップ長増加信号が到着している場合、手順(10910)に         進む。到着していない場合は手順(10000)に進む。
(10910) チップ長レジスタの値を+1加算する。手順(10000)に進む。
【００８３】
図２２は学習完了判定部1340の構成を示す。  
学習完了判定部1340は、実施例１の学習完了判定部1340の構成（図６）に対して、チップ加算限界レジスタ1345、チップ加算回数レジスタ1346およびその周辺回路が追加して構成される。実施例１では、一定期間評価値の変化量が閾値を下回ると、学習完了信号が送出されるように更新される。これに対して、実施例４では、変化量が閾値を下回る状況が一定期間発生した場合、チップ長を増加させる信号を送出するとともに、チップ長加算回数レジスタ1346を、加算器13407及び選択器13408を介して「1」加算する。チップ長を増加させても変化量が閾値を下回り続け、比較器13409によりチップ長加算回数レジスタ1346の値がチップ加算限界レジスタ1345を超えたと判断された場合、学習完了信号を生成する。生成された信号は評価値比較器13402からの信号と論理和13405が取られ、外部に出力される。一方、比較器13409においてチップ長を増加させた次のサイクルで評価差分値が閾値を上回った場合、チップ長加算回数レジスタ1346の値は「0」にリセットされる。
【００８４】
図２３の動作フローチャートを参照して、学習完了判定部1340の動作手順について説明する。以下では実施例１と異なる部位の動作について述べる。
(13600) 停滞期間カウントレジスタ1344の値が停滞期間限界レジスタ1343の値を超えた場        合、手順(13700)へ進む。超えていない場合、手順(13720)へ進む。
(13700) チップ長加算信号を送出する。さらにチップ長加算回数レジスタ1346を+1加算す        る。
(13710) チップ長加算回数レジスタ1346の値がチップ加算限界レジスタ1345以上となった        場合、動作フローを抜けて学習完了状態に遷移する。限界未満である場合には手        順(13100)に進む。
(13720) チップ長加算回数レジスタ1346の値を「0」にリセットする。
手順(13100)に進む。
【００８５】
以上説明したように、本発明の好ましい実施形態によれば、誤差逆伝播を適用することが困難な、評価関数の数式が定義困難または評価関数式が微分不能な問題について解くことができる。また、数値微分法では現実的な計算量で勾配推定が困難なほどの規模のニューラルネットワークにおいて、計算量を現実的な規模にまで削減できる。
【符号の説明】
【００８６】
100  活性化状態決定ユニット
10   活性化状態決定ユニット群
110  パラメータレジスタ
120  パラメータユニット
200  評価差分値配信経路
210  動作モード配信経路
220  パラメータ更新信号配信経路
300  数値発生器
310  疑似乱数発生器
320  数値微分用微少数発生器
330  発信器
340  周波数レジスタ
350  チップ長レジスタ
400  パラメータ更新ユニット
410  積分レジスタ
420  学習係数レジスタ
430  チップ長レジスタ
440  フィルタ回路
1000 データ処理システム
1100 入力レジスタ
1200 出力レジスタ
1300 制御部
1310 動作モードレジスタ
1320 チップ長レジスタ
1330 チップカウンタ
1340 学習完了判定部
1341 目標評価値レジスタ
1342 停滞閾値レジスタ
1343 停滞期間限界レジスタ
1344 停滞期間カウントレジスタ
1345 チップ加算限界レジスタ
1346 チップ長加算回数レジスタ
1400 評価差分計算器
1410 現在評価値レジスタ
1420 基準評価値レジスタ
1430 書き込みレジスタ選択器
1500 評価値重みレジスタ
2000 評価システム
3000 計算機システム
3010 中央処理装置
3020 主記憶
3030 演算加速装置
3040 入出力装置
4000 学習条件設定画面
4010 チップ長設定
4020 学習係数設定
4030 微分係数設定
4040 学習完了閾値設定
4050 評価システム重み設定
【図１】
2019045944.tif 000013
【図２】
2019045944.tif 000014
【図３】
2019045944.tif 000015
【図４】
2019045944.tif 000016
【図５】
2019045944.tif 000017
【図６】
2019045944.tif 000018
【図７】
2019045944.tif 000019
【図８】
2019045944.tif 000020
【図９】
2019045944.tif 000021
【図１０】
2019045944.tif 000022
【図１１】
2019045944.tif 000023
【図１２】
2019045944.tif 000024
【図１３】
2019045944.tif 000025
【図１４】
2019045944.tif 000026
【図１５】
2019045944.tif 000027
【図１６】
2019045944.tif 000028
【図１７】
2019045944.tif 000029
【図１８】
2019045944.tif 000030
【図１９】
2019045944.tif 000031
【図２０】
2019045944.tif 000032
【図２１】
2019045944.tif 000033
【図２２】
2019045944.tif 000034
【図２３】
2019045944.tif 000035