【実施例1】
【0036】
図2は、データ処理システム1000の具体的な構成を示す。
データ処理システム1000は、複数の活性化状態決定ユニット100、評価差分値配信経路200、動作モード配信経路210、パラメータ更新信号配信経路220、入力レジスタ1100、出力レジスタ1200、制御部1300、評価差分計算器1400、現在評価値レジスタ1410、基準評価値レジスタ1420、評価値レジスタ選択器1430、評価システム重みレジスタ1500、および周辺回路から構成される。活性化状態決定ユニット100は人工ニューロンを構成し、ここでは複数の活性化状態決定ユニット100の集合を活性化状態決定ユニット群10ということにする。データ処理システム1000に入力されたデータは入力レジスタ1100に保持され、その入力データが活性化状態決定ユニット群10を通る間に処理が行われて、その処理結果が出力レジスタ1200に格納される。
【0037】
入力レジスタ1100は、制御部1300から動作モード信号を受け取る。動作モードが学習モードであることを検知した場合には、外部からの入力信号が変化してもその値を取り込まず、現在の値を保持し続ける。一方、動作モードが推論モードであることを検知した場合には、外部からの入力信号を取り込み、入力レジスタ1100の状態を更新する。
【0038】
書き込みレジスタ選択器1430は、制御部1300から動作モード信号を受け取る。動作モードが学習モードであることを検知した場合には、選択器1430に入力された評価値で現在評価値レジスタ1410を書き換える。推論モードであることを検知した場合には、基準評価値レジスタ1420を書き換える。
【0039】
複数の評価値重みレジスタ1500は、複数ある評価システム2000ごとに異なる重み値を登録する。重み値は、機械学習システムの設計時にその値を決定して、このシステムの学習が開始する前の初期化の段階に各評価値重みレジスタ1500に設定しておく。なお、評価システム2000が一つしか存在しない場合には評価値重みレジスタ1500を省略しても良い。
【0040】
図3は、データ処理システム1000のハードウェア構成を示す。
データ処理システムは、外部からの入力データを受け取る入出力装置3040a、評価システムからの評価を受け取る入出力装置3040b、データ処理システムの計算結果を出力する入出力装置3040c、中央処理装置(CPU)3010、主記憶3020、活性化状態決定ユニット群10が実装される演算加速装置(アクセラレータ)3030から構成される。入出力装置3040は、例えばネットワークインターフェイスカード(NIC)、ホストバスアダプタ(HBA)、ホストチャネルアダプタ(HCA)、等である。なお、入出力装置3040には、データ入力するキーボードやマウス等の入力部と、データを表示する表示部が含まれる。
【0041】
アクセラレータ3030は、再構成可能回路(FPGA)、用途特化集積回路(ASIC)、またはミニプログラムを実行可能なコプロセッサ群、等が含まれる。主記憶3020は、入力データ、出力データ、現在評価値、基準評価値等を保持する。中央処理装置3010は、制御部1300や評価差分計算器1400の動作に関するプログラムを実行する。なお、制御部や評価差分器の動作に相当する機能をハードウェアとしてアクセラレータ3030に作り込んでも良い。その場合、中央処理装置3010は入出力処理を担当することになる。
【0042】
図4は、制御部1300の構成を示す。
制御部1300は、データ処理システム1000の動作モードを決定し、他の構成要素の動作を制御する。制御部1300は、動作モードを保持する動作モードレジスタ1310と、学習を行う周期(サイクル)数を保持するチップ長レジスタ1320と、現在のサイクル数を保持するチップカウンタ1330と、評価値を監視して学習の完了を検知する学習完了判定部1340を有する。制御部1300はまた、外部から現在の評価値の値を受け取るポートEと、評価値差分値を受け取るポートΔEと、現在の動作モードを出力するポートMと、パラメータ更新タイミングを出力するポートUを持つ。
【0043】
動作モードとして、推論モードと学習モードの2つが存在する。推論モードでは入力データから出力データを生成する処理のみを実行し、パラメータの更新は行わない。学習モードでは、一つの入力データから一つ以上の出力を生成し、評価システム2000からの評価値を用いてパラメータ更新に必要な勾配を計算し、パラメータの更新を行う。一つのステップが進む度に、選択器1321を介してチップカウンタ1330の値が減算され、チップカウンタ1330の値が0になると、チップ長レジスタ1320の値がチップカウンタに入力され、次の学習サイクルが始まる。
【0044】
動作モードレジスタ1310は、チップカウンタの値が0以外の場合には学習モードを表す値を格納し、0の場合には推論モードを表す値を格納する。また、チップカウンタ1330の値が1から0に変わるタイミングを検知して、パラメータ更新信号が送出される。学習完了判定部1340は、現在の評価値と評価値の変化量をポートEおよびポートΔEから平均化演算器1301を通して受け取り、学習が完了したかを判定する。平均化演算器は動作モードが学習モードの間は外部からの値を累積し続け、推論モードに切り替わる時に平均値を計算して学習完了判定部1340に供給する。学習完了判定部1340は平均値を受け取ることで、学習モード期間中の1回の処理毎の評価値の変化によって学習完了が誤判定されることを防ぐ。
【0045】
本実施例では、推論モード1回に対して、学習モードを1回以上行う。すなわち、はじめに推論モードで基準評価値を取得し、次に、複数の数値発生器から数値をひとつずつ発生させてそれぞれを複数のパラメータに加算した値を用いてデータ処理を行い、評価システムによる現在評価値を取得し、評価値差分と発生させた数値を用いてパラメータ更新のために必要な勾配値を算出する学習モードを1回以上実施する。その後、推論モードに戻すタイミングで前述の学習モードで算出された1つ以上の勾配値の和をとり、学習モードを実施した回数で除した値をパラメータに加算して、パラメータの更新を行う。これは、
図5を参照した動作説明から容易に理解されよう。
【0046】
図5は、制御部1300の動作フローチャートを示す。
学習開始前に、本システムの操作者によってチップ長レジスタの値、学習完了基準(目標評価値および評価値が変動しない場合に打ち切るまでの学習サイクル数)が、事前に制御部に与えられるものとする。
(10000) 動作モードレジスタ1310の値を、推論モードを示す値に設定し、動作モード信号 を出力する。
(10100) チップ長レジスタ1320の値をチップカウンタ1330に設定する。
(10200) 学習完了判断部1340が評価値から学習の完了を判定する。
【0047】
学習が完了したと判断した場合にはフローチャートを抜けて動作を停止する。学 習が未完了と判断した場合には手順(10300)に進む。
(10300) データ処理システム1000が、入力レジスタ1100に設定されたデータから出力結果 を生成して、評価システムによる評価が完了するまで待機する。この待機期間中 に、現在の入力データに対してデータ処理システムによって処理を適用した結果 に対する評価値を計算して、基準評価値レジスタ1420に書き込む。
【0048】
完了するまで手順(10300)を繰り返す。
(10400) 動作モードレジスタ1310の値を学習モードに設定し、動作モード信号を出力する。
(10500) データ処理システム1000が、入力レジスタ1100に設定されたデータから出力結果 を生成して、評価システムによる評価が完了するまで待機する。完了するまで手 順(10500)を繰り返す。
(10600) チップカウンタ1330の値を1減算する。
(10700) チップカウンタ1330の値が0である場合には手順(10800)に進む。
0以外の場合には手順(10500)に進む。
(10800) パラメータ更新信号を出力する。手順(10000)に進む。
【0049】
図6は学習完了判定部1340の構成を示す。
学習完了判定部1340は、目標評価値レジスタ1341、停滞閾値レジスタ1342、停滞期間限界レジスタ1343、停滞期間カウントレジスタ1344と、周辺回路から構成される。外部から与えられる評価値Eは、目標評価値レジスタ1341と評価値比較器13402に入力され、目標値よりも現在の評価値が大きいまたは小さい場合に正の信号が出力される。評価差分値ΔEの絶対値は停滞閾値レジスタ1342と差分値比較器13401に入力され、評価差分値の絶対値が停滞閾値レジスタ1342の値よりも小さいときに正の信号が出力される。停滞期間カウントレジスタ1344は、評価システムによる評価が完了する毎に差分値比較器13401の出力によって、選択器13404を介してその値が更新される。
【0050】
すなわち、停滞期間カウントレジスタ1344は、差分値比較器13404の出力が正の時は加算器13403で1加算した値により更新され、負の時は0で更新される。停滞期間限界レジスタ1343の出力と停滞期間カウントレジスタ1344の出力は停滞期間比較器13405に入力され、停滞カウントレジスタ1344の値が停滞期間限界レジスタ1343の値以上の場合は正の信号が出力される。評価値比較器13405と停滞期間比較器13402の出力は論理和ゲート13406に入力され、どちらかが正の信号を発すると、外部に対して学習完了信号を送出する。
【0051】
次に、
図7に示す、学習完了判定部1340の動作フローチャートを参照して、動作手順について説明する。
(13000) 外部から与えられる評価値の評価値の目標値E
destを目標評価値レジスタ1341に 、評価差分値の閾値ΔE
thを停滞閾値レジスタ1342に、停滞期間の限界値Nを停滞 期間限界レジスタ1343に設定する。
停滞期間カウントレジスタ1344を0に設定する
(13100) データ処理システムによる出力生成と評価システムによる評価が完了するまで手 順(13100)を繰り返す。評価が完了したら手順(13200)に進む。
(13200) 現在の評価値Eが目標評価値レジスタ1341に設定された目標値E
destを超えている かの判断において、現在の評価値Eが目標値E
destを超えている場合、学習完了と 判定する。超えていない場合、手順(13200)に進む。ここでの「超えた」とは、 評価値の最小化が目的であれば「小さくなった」ことを意味し、評価値の最大化 が目的であれば「大きくなった」ことを意味する。
(13300) 現在の評価値差分値の絶対値|ΔE|は停滞閾値レジスタ1342より小さいか、の判 断において、現在の評価値差分値の絶対値|ΔE|が閾値ΔE
th以下の場合、手順(1 3500)に進む。閾値よりも大きい場合は手順(13400)に進む。
(13400) 停滞期間カウントレジスタ1344の値を0に設定する。手順(13100)に進む。
(13500) 停滞期間カウントレジスタ1344の値を1加算する。
(13600) 停滞期間カウントレジスタ1344の値が停滞期間限界レジスタ1343の値を超えた場 合、学習完了と判定する。超えていない場合、手順(13100)へ進む。
【0052】
なお、学習を完了と判断した場合にチップ長レジスタ1320を0にリセットし、学習完了判断がなされたことを示す。または、他の手段で外部に学習完了を通知しても良い。
【0053】
図8は活性化状態決定ユニット100の構成を示す。
活性化状態決定ユニット100は、1つ以上のパラメータユニット120と、パラメータユニットの出力と活性化状態決定ユニットへの入力の積を計算する乗算器130と、複数の乗算器130の出力を加算する加算器140と、加算器の出力結果に基づいて活性化状態決定ユニットの活性化状態を決定する活性化関数器150から構成される。活性化状態決定ユニット100内の複数のパラメータユニット120には、評価差分値配信経路200、動作モード配信経路210、パラメータ更新信号配信経路220がそれぞれ接続される。
【0054】
図9はパラメータユニット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の値を更新する。
【0055】
次に、
図10に示す、パラメータユニット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)に進む。
【0056】
図11はパラメータ更新ユニット400の構成を示す。
パラメータ更新ユニット400は、積分レジスタ410、学習係数レジスタ420、チップ長レジスタ430から構成され、外部からパラメータユニット120内部で計算された推定勾配値、パラメータレジスタ110の現在の値、パラメータ更新信号配信経路220からの信号を受け取り、パラメータレジスタ110の値を更新するための信号を出力する。パラメータ更新信号が来ていない期間は、加算器180で推定勾配値の値を積分レジスタ410の値に加算する。パラメータレジスタ110の更新は現在のパラメータレジスタ110の値を用いるように選択器170を設定して、実質的に更新を行わない。パラメータ更新信号が到着した場合、除算器160で、積分レジスタ410の値をチップ長レジスタ430の値で除算し、更に学習係数レジスタ420の値と乗算器190で掛け合わせたものに現在のパラメータレジスタ110の値を加算器180で加算した値を計算する。その加算された値でパラメータレジスタ110の値を更新する。また、積分レジスタの値を0にリセットする。
【0057】
次に、
図12に示すパラメータ更新ユニットの動作フローチャートを参照して、動作手順について説明する。
(12000) データ処理システムによる出力生成と評価システムによる評価が完了していなければ、データ処理システムによる出力生成と評価システムによる評価が完了し、パラメータユニット120に評価差分値が配信され、推定勾配が計算されるまで待機する。推定勾配値が与えられるまで手順(12000)を繰り返す。
(12100) パラメータユニット120内部で計算された推定勾配値を積分レジスタ410の現在値に加算し、積分レジスタ410の値を更新する。
(12200) パラメータ更新信号配信経路220から更新信号が来ている場合は手順(12200)に進む。到着していない場合は手順(12000)に進む。
(12300) 積分レジスタ410の値をチップ長カウンタ430で除算し、推定勾配値を補正する。補正結果に学習係数を掛け合わせてパラメータ更新量を算定する。
(12400) 当該パラメータ更新量と現在のパラメータレジスタ110の値を加算し、計算結果を用いてパラメータレジスタ110の値を更新する。
(12500) 積分レジスタ410の値を0にリセットする。
(12600) 学習が完了している場合にはフローチャートを抜けて動作を停止する。学習が完了していない場合には手順(12000)に進む。
【0058】
図13は数値発生器300の構成を示す。
数値発生器300は、疑似雑音源(または疑似乱数源)310と、数値微分用微少数発生器320、数値発生器300の出力に応じて正または負の符号を発生させる選択器170、および選択器170の出力と数値微分用微少数発生器320の積を計算して外部に出力する乗算器190から構成される。数値発生器300は要求に応じて正または負の微少数いずれか一つの数値を発生させて出力する。数値微分用微少数発生器320は数値格納レジスタを用いて、常に定数を発生させるように実装しても良い。
【0059】
図14は疑似雑音源310の構成を示す。
疑似雑音源310は、位相が等しいベクトル同士の相関性が、位相が異なるベクトル同士の相関性よりも高い性質を持つ。換言すれば、位相が異なるベクトル同士を掛け合わせて積分した値が、位相が同じベクトル同士を掛け合わせて積分した値よりも優位に小さい性質を持つ。
【0060】
具体的には、疑似雑音源310は、シフトレジスタ3101と、排他的論理和演算器3102から構成される。シフトレジスタ3101の特定の位置の値を排他的論理和演算器3102に入力(以下、”タップ”するという)し、計算結果を出力するとともにシフトレジスタの初段に入力してシフトレジスタの状態を更新する。なお、出力はシフトレジスタの最終段から行っても良い。シフトレジスタの長さとタップ位置の決定は、原始多項式に従う。このような回路で生成される疑似雑音はシフトレジスタの長さをNとしたときN段のM系列疑似雑音(M sequence Pseudo Noise)と呼ばれる。N段M系列疑似雑音は、T=2
N-1 の周期を持ち、0と1の出現回数がほぼ等しくなる性質を持つ。また、0と1を-1と+1に割り当てた場合、シフトレジスタの初期値(以下、位相と呼ぶ)が等しい場合の相関値は1となり、位相が異なる場合の相関値は-1/Nとなる性質を持つ。Nが十分大きければ位相が異なる雑音源から発される信号の積分は0に漸近するため、位相が等しい雑音源に従って値を変化させたパラメータ以外の影響を排除することができる。
【0061】
以上の説明から、パラメータユニット120は、一つの入力データに対して、疑似乱数発生器310を持つ数値発生器300の出力に基づいて内部パラメータの値を同時に変化させ、評価値の変化を積分することで内部パラメータの値を更新するものであり、入力データを変化させる毎に内部パラメータの値の更新を行って、機械学習することが理解される。
【0062】
なお、数値発生器は乱数発生器でもよい。しかしながら、ランダムな乱数発生器では、各パラメータユニット間の相関が十分に低いことが保証されていない。そこで、数値発生器を周期変化する疑似乱数発生器として、各パラメータユニット間の相関が十分に低くすることで、学習にかかる工程を少なくすることができる。
【0063】
図15は、機械学習システムにおける学習条件の設定画面の例を示す。
設定画面は、データ処理システム1000を構成する計算機3000(
図3)の入出力装置3040の1つである表示部に表示される。
設定画面4000は、チップ長設定4010、学習係数設定4020、微分係数設定4030、学習完了閾値設定4040および評価システム重み設定4050の各項目を含む。チップ長設定4010は学習の周期を表す値であり、制御部1300のチップ長レジスタ1320及びパラメータ更新ユニットのチップ長レジスタ430に反映される。学習係数設定4020の値は、パラメータ更新ユニット400の学習係数レジスタ420に反映される。微分係数設定4030の値は、数値発生器300の数値微分用微少数発生器320に反映される。学習完了閾値設定4040は制御部1000の学習完了判定部1340において学習完了を判断するために用いられる。評価システム重み設定4050はデータ処理システム1000の評価値重みレジスタ1500に反映される。
【0064】
なお、図示の例では主要な設定項目を挙げているが、これ以外にも本実施例に含まれる任意の位置のレジスタと対応づいた設定パラメータが存在しても良い。また、この例ではグラフィカル・ユーザー・インターフェイスを用いて示しているが、コマンドベースで設定するインターフェイスを持っていても良い。
【実施例4】
【0080】
機械学習システムにおいて、チップ長の設定は勾配推定精度に影響を及ぼし、同様に学習の進捗にも影響を及ぼす。そのため、学習の進捗が滞ったと判断されたときに、学習完了と判断する前にチップ長を増加させることで学習をさらに進めることができる可能性がある。実施例4では、制御部1300と学習完了判定部1340の構成および動作の一部を変更する。
【0081】
図20は制御部1300の構成を示す。チップ長レジスタ1320の周辺に、学習完了判定部1340からのチップ長加算信号に基づいてチップ長レジスタ1320の値を加算する加算器1322及び選択器1323等の周辺回路を追加する。チップ長加算信号が送出されていない場合にはチップ長レジスタ1320の値をそのまま保持する。
【0082】
図21に制御部1300の動作フローチャートを示す。実施例1における制御部の動作(
図5のフローチャート)と同一の手順について同じ符号を付す。
図5の動作に対して、実施例4ではステップ10900とステップ10910が追加された。以下、追加された特徴的な動作について述べる。なお、学習開始時は手順(10900)から開始する。
(10800) パラメータ更新信号を出力する。手順(10900)に進む。
(10900) 学習完了判定部1340からチップ長増加信号が到着している場合、手順(10910)に 進む。到着していない場合は手順(10000)に進む。
(10910) チップ長レジスタの値を+1加算する。手順(10000)に進む。
【0083】
図22は学習完了判定部1340の構成を示す。
学習完了判定部1340は、実施例1の学習完了判定部1340の構成(
図6)に対して、チップ加算限界レジスタ1345、チップ加算回数レジスタ1346およびその周辺回路が追加して構成される。実施例1では、一定期間評価値の変化量が閾値を下回ると、学習完了信号が送出されるように更新される。これに対して、実施例4では、変化量が閾値を下回る状況が一定期間発生した場合、チップ長を増加させる信号を送出するとともに、チップ長加算回数レジスタ1346を、加算器13407及び選択器13408を介して「1」加算する。チップ長を増加させても変化量が閾値を下回り続け、比較器13409によりチップ長加算回数レジスタ1346の値がチップ加算限界レジスタ1345を超えたと判断された場合、学習完了信号を生成する。生成された信号は評価値比較器13402からの信号と論理和13405が取られ、外部に出力される。一方、比較器13409においてチップ長を増加させた次のサイクルで評価差分値が閾値を上回った場合、チップ長加算回数レジスタ1346の値は「0」にリセットされる。
【0084】
図23の動作フローチャートを参照して、学習完了判定部1340の動作手順について説明する。以下では実施例1と異なる部位の動作について述べる。
(13600) 停滞期間カウントレジスタ1344の値が停滞期間限界レジスタ1343の値を超えた場 合、手順(13700)へ進む。超えていない場合、手順(13720)へ進む。
(13700) チップ長加算信号を送出する。さらにチップ長加算回数レジスタ1346を+1加算す る。
(13710) チップ長加算回数レジスタ1346の値がチップ加算限界レジスタ1345以上となった 場合、動作フローを抜けて学習完了状態に遷移する。限界未満である場合には手 順(13100)に進む。
(13720) チップ長加算回数レジスタ1346の値を「0」にリセットする。
手順(13100)に進む。
【0085】
以上説明したように、本発明の好ましい実施形態によれば、誤差逆伝播を適用することが困難な、評価関数の数式が定義困難または評価関数式が微分不能な問題について解くことができる。また、数値微分法では現実的な計算量で勾配推定が困難なほどの規模のニューラルネットワークにおいて、計算量を現実的な規模にまで削減できる。