【文献】
岩崎 正宏ほか,連想記憶モデルを用いた自己組織的特徴抽出,電気学会論文誌C,電気学会,2000年10月 1日,第120-C巻/第10号,pp.1467-1474
(58)【調査した分野】(Int.Cl.,DB名)
前記選択するステップは、前記ノードの活性化頻度数情報及び活性化エントロピー情報のうち少なくとも1つに基づいて前記少なくとも1つのノードを選択するステップを含む、
請求項1乃至5いずれか一項に記載のニューラルネットワーク拡張方法。
前記ノードのうち予め決定した時間区間で活性化エントロピーが予め決定した第3閾値よりも小さく、活性化頻度数が予め決定した第4閾値よりも大きいノードが選択される、
請求項6乃至9いずれか一項に記載のニューラルネットワーク拡張方法。
前記選択されたノードの接続加重値は、前記第1グループに属する接続加重値の和と前記第2グループに属する接続加重値の和との間の差が予め決定した第5閾値以下になるよう前記第1グループ及び前記第2グループに分割する、
請求項14に記載のニューラルネットワーク拡張方法。
前記プロセッサは、トレーニングデータメモリストレージのトレーニングデータを前記拡張されたニューラルネットワークに適用し、前記拡張されたニューラルネットワークの活性化パターンに基づいて隠れレイヤの拡張が要求されるか否かを決定し、前記隠れレイヤの拡張が要求されるとの判断に応じて、前記ニューラルネットワークの隠れレイヤ内のノード数を増加させる、
請求項20乃至22いずれか一項に記載のニューラルネットワーク拡張装置。
【発明の概要】
【発明が解決しようとする課題】
【0003】
本発明の実施形態は、ニューラルネットワークを次第に拡張及び学習させる技術を提供する。実施形態は、拡張以前に学習された結果を保持しながら、次第にもっと精巧にニューラルネットワークを学習させる技術を提供する。
【課題を解決するための手段】
【0004】
一側面に係るニューラルネットワーク拡張方法は、ニューラルネットワークに含まれたノードのうち少なくとも1つのノードを選択するステップと、前記選択されたノードが属するレイヤに新しいノードを生成するステップと、前記新しいノードの接続加重値を設定するステップとを含む。
【0005】
前記ニューラルネットワーク拡張方法は、前記ニューラルネットワークの拡張が必要であるか否かを判断するステップをさらに含んでもよい。
【0006】
前記判断するステップは、前記ニューラルネットワークの性能をモニタリングするステップと、前記ニューラルネットワークの性能が向上する程度が予め決定した第1閾値よりも小さい場合、前記ニューラルネットワークの拡張が必要であると判断するステップとを含んでもよい。
【0007】
前記判断するステップは、前記ニューラルネットワークの性能をモニタリングするステップと、前記ニューラルネットワークの性能が向上する程度が予め決定した第1閾値よりも小さく、前記ニューラルネットワークの以前拡張後の前記ニューラルネットワークの性能が向上した程度が予め決定した第2閾値よりも小さい場合、前記ニューラルネットワークの学習を終了させるステップとを含んでもよい。
【0008】
前記選択するステップは、前記ノードの活性化頻度数情報及び活性化エントロピー情報のうち少なくとも1つに基づいて前記少なくとも1つのノードを選択するステップを含んでもよい。
【0009】
前記ノードのうち予め決定した時間区間で活性化頻度数が最も大きいノードが選択されてもよい。前記ノードのうち予め決定した時間区間で活性化エントロピーが予め決定した第3閾値よりも小さく、活性化頻度数が予め決定した第4閾値よりも大きいノードが選択されてもよい。
【0010】
前記活性化頻度数情報は、予め決定した時間区間内、前記ノードそれぞれが活性化する頻度数を含んでもよい。前記活性化エントロピー情報は、予め決定した時間区間内、前記ノードそれぞれが活性化状態と不活性状態の間で遷移する回数を含んでもよい。
【0011】
前記生成するステップは、前記レイヤの以前レイヤに含まれたノードと前記新しいノードとの間を接続するステップと、前記レイヤの次のレイヤに含まれたノードと前記新しいノードとの間を接続するステップとを含んでもよい。
【0012】
前記ニューラルネットワーク拡張方法は、前記新しいノードの接続加重値を予め決定した初期値に設定するステップをさらに含んでもよい。
【0013】
前記選択されたノードを含むレイヤは、前記ニューラルネットワークの隠れレイヤを含んでもよい。
【0014】
前記設定するステップは、前記選択されたノードの接続加重値のうち少なくとも一部を選択するステップと、前記新しいノードで前記選択された少なくとも一部の接続加重値に対応する接続加重値を前記選択された少なくとも一部の接続加重値に設定するステップとを含んでもよい。前記設定するステップは、前記選択されたノードで前記選択された少なくとも一部の接続加重値を予め決定した初期値に設定するステップをさらに含んでもよい。
【0015】
前記選択されたノードの接続加重値のうち少なくとも一部を選択するステップは、前記選択されたノードの接続加重値を第1グループ及び第2グループに分割するステップと、前記第1グループ及び前記第2グループのいずれか1つのグループに属する接続加重値を選択するステップとを含んでもよい。
【0016】
前記選択されたノードの接続加重値は、前記第1グループに属する接続加重値の和と前記第2グループに属する接続加重値の和との間の差が予め決定した第5閾値以下になるよう前記第1グループ及び前記第2グループに分割してもよい。
【0017】
前記設定するステップは、前記新しいノードの入力接続加重値を前記選択されたノードの入力接続加重値に設定するステップと、前記選択されたノードの出力接続加重値のうち一部を選択するステップと、前記新しいノードで前記選択された一部の出力接続加重値に対応する接続加重値を前記選択された一部の出力接続加重値に設定するステップと、前記選択されたノードで前記選択された一部の出力接続加重値を予め決定した初期値に設定するステップとを含んでもよい。
【0018】
前記ニューラルネットワーク拡張方法は、前記選択されたノードの活性化特性に基づいて前記新しいノードの活性化特性を設定するステップをさらに含んでもよい。
【0019】
前記ニューラルネットワーク拡張方法は、前記新しいノードを含むように拡張されたニューラルネットワークを学習させるステップをさらに含んでもよい。
【0020】
初期ニューラルネットワークは、予め決定した数以下のノードを含む複数の隠れレイヤを含んでもよい。前記選択するステップは、前記複数の隠れレイヤに含まれたノードのうち少なくとも1つのノードを選択するステップを含んでもよい。
【0021】
他の一実施形態に係る次元縮小(dimension reduction)方法は、入力レイヤ、1つ又はそれ以上の隠れレイヤ、及び出力レイヤを含むニューラルネットワークを学習させるステップと、前記ニューラルネットワークを学習させる間に、前記隠れレイヤの拡張が必要であるか否かを判断するステップと、前記隠れレイヤの拡張が必要であるとの判断に応じて、前記隠れレイヤを拡張させるステップとを含む。
【0022】
前記次元縮小方法は、前記ニューラルネットワークを学習させる以前に、前記ニューラルネットワークを初期化するステップをさらに含んでもよい。前記初期化するステップは、前記入力レイヤで前記入力ディメンションに該当する数のノードを生成するステップと、前記隠れレイヤで予め決定した初期値に該当する少なくとも1つのノードを生成するステップと、前記出力レイヤで前記入力ディメンションに該当する数のノードを生成するステップとを含んでもよい。
【0023】
前記判断するステップは、前記入力レイヤに入力される値と前記出力レイヤから出力される値との間の差に基づいて、前記ニューラルネットワークの性能をモニタリングするステップと、前記ニューラルネットワークの性能が向上する程度が予め決定した閾値よりも小さい場合、前記ニューラルネットワークの拡張が必要であると判断するステップとを含んでもよい。
【0024】
前記隠れレイヤを拡張させるステップは、前記隠れレイヤに含まれたノードのうち少なくとも1つのノードを選択するステップと、前記隠れレイヤに新しいノードを生成するステップと、前記選択されたノードの接続加重値に基づいて前記新しいノードの接続加重値を設定するステップとを含んでもよい。
【0025】
前記選択するステップは、前記ノードの活性化頻度数情報及び活性化エントロピー情報のうち少なくとも1つに基づいて前記少なくとも1つのノードを選択するステップを含んでもよい。
【0026】
前記設定するステップは、前記選択されたノードの接続加重値のうち少なくとも一部を選択するステップと、前記新しいノードで前記選択された少なくとも一部の接続加重値に対応する接続加重値を前記選択された少なくとも一部の接続加重値に設定するステップとを含んでもよい。前記設定するステップは、前記選択されたノードで前記選択された少なくとも一部の接続加重値を予め決定した初期値に設定するステップをさらに含んでもよい。
【0027】
前記次元縮小方法は、前記拡張された隠れレイヤを含むニューラルネットワークを学習させるステップをさらに含んでもよい。
【0028】
更なる一実施形態に係るニューラルネットワーク拡張装置は、ニューラルネットワークを格納するメモリと、活性化情報に基づいて前記ニューラルネットワークのノードを選択し、前記選択されたノードを含むレイヤに新しいノードを追加することによって前記ニューラルネットワークを拡張するプロセッサとを含む。
【0029】
前記プロセッサは、前記選択されたノードの接続加重値に基づいて前記新しいノードの接続加重値を設定してもよい。前記プロセッサは、トレーニングデータを用いて前記拡張されたニューラルネットワークを学習させることで前記新しいノードの接続加重値を調整してもよい。
【0030】
前記プロセッサは、トレーニングデータメモリストレージのトレーニングデータを前記拡張されたニューラルネットワークに適用し、前記拡張されたニューラルネットワークの活性化パターンに基づいて隠れレイヤの拡張が要求されるか否かを決定し、前記隠れレイヤの拡張が要求されるとの判断に応じて、前記ニューラルネットワークの隠れレイヤ内のノード数を増加させてもよい。
【0031】
前記ニューラルネットワーク拡張装置は、入力装置をさらに含み、前記プロセッサは、出力データを取得するために、前記入力装置を用いて取得された入力データを前記ニューラルネットワークに適用してもよい。
【0032】
前記選択されたノードを含むレイヤは、前記ニューラルネットワークの隠れレイヤを含んでもよい。
【発明の効果】
【0033】
本発明によると、実施形態はニューラルネットワークを拡張することで、ニューラルネットワークの認識性能を向上させる技術を提供できる。実施形態は、ニューラルネットワークを次第に拡張及び学習させる技術を提供できる。実施形態は、拡張以前に学習された結果を保持しながら、次第に精巧にニューラルネットワークを学習させる技術を提供できる。
【0034】
本発明によると、ニューラルネットワークの拡張及び学習が反復されることにより、一定のレベル以上に複雑な複雑度又は一定のレベル以上に大きい規模のニューラルネットワークが最適に学習され得る。
【発明を実施するための形態】
【0036】
以下、実施形態を添付する図面を参照しながら詳細に説明する。各図面に提示された同一の参照符号は同一の部材を示す。
【0037】
図1は、一実施形態に係るニューラルネットワーク(neural network)を説明する図である。
図1を参照すると、一実施形態に係るニューラルネットワーク100は、接続線(edge)に連結された複数の人工ニューロンを用いて生物学的なシステムの算出能力を模倣する認識モデルである。ニューラルネットワーク100は、ソフトウェア、ハードウェア、または、その組合せで実現できる。ニューラルネットワーク100は、人工ニューラルネットワークと称する。
【0038】
ニューラルネットワーク100は、生物学的なニューロンの機能を単純化した人工ニューロンを用いる。人工ニューロンは、ノードと称する。人工ニューロンは、接続加重値を有する接続線によって相互接続してもよい。接続加重値は、接続線が有する特定の値として、シナプス加重値又は接続強度と称する。ニューラルネットワーク100は、人工ニューロンによって人の認知作用や学習過程を行う。
【0039】
図18は、一実施形態に係る人工ニューロンを説明する図である。
図18を参照すると、人工ニューロンは胴体部に該当するノード、ノードの入力ベクトル、及びノードと以前ノードとの間のエッジを形成する前に、人工ニューロンの出力ベクトルを用いて実現することができる。人工ニューロンのデータ構造に様々な変形が加えられるが、このような変形は実施形態の範囲に属する。
【0040】
人工ニューロンは、n個の入力ソースから入力X
1〜X
Nを受信する。例えば、n個の入力ソースは、他の人工ニューロンのシナプス、センサ、入力データストレージ、または、他のデータソースであってもよい。人工ニューロンの胴体部と入力X
1〜X
Nを接続する入力ベクトルは、個別シナプス加重値W
1〜W
Nを用いてスケールされ得る。シナプス加重値は、人工ニューロンの胴体部によって受信される入力の強度に影響を与える。例えば、シナプス加重値W
1が0.8である場合、入力X
1は人工ニューロンの胴体部に達するとき80%のように減少されることがある。受信された入力は線形合算によって結合されたり、活性化関数AF(
x1、x2、...、xn)に基づいて受信された入力を結合するために追加的な関数が適用され得る。例えば、特定入力ベクトルを用いて受信された入力は、人工ニューロンを活性化させる代わりに不活性化させてもよい。活性化関数AF
(x1、x2、...、xn)に基づいて、人工ニューロンの胴体部は結合された入力を調節することで、出力「Y」を生成することができる。一例示によると、次の人工ニューロンとして出力「Y」を発生するために、活性化関数AF
(x1、x2、...、xn)の結果は人工ニューロンの閾値を超過しなければならない。この場合、人工ニューロンは、入力ベクトルを用いて特定閾値の活性化強度に達する前には次の人工ニューロンに信号を発生することなく、不活性化状態を保持することができる。
【0041】
再び
図1を参照すると、ニューラルネットワーク100は複数のレイヤを含む。例えば、ニューラルネットワーク100は、入力レイヤ(input layer)110、隠れレイヤ(hidden layer)120、出力レイヤ(output layer)130を含む。入力レイヤ110は、学習を行うための入力を受信して隠れレイヤ120に伝達し、出力レイヤ130は、隠れレイヤ120から受信した信号に基づいてニューラルネットワーク100の出力を生成する。隠れレイヤ120は、入力レイヤ110と出力レイヤ130との間に位置し、入力レイヤ110を介して伝えられた学習データを予測しやすい値に変化させ得る。
【0042】
入力レイヤ110、隠れレイヤ120、及び出力レイヤ130は、複数のノードを含む。入力レイヤ110に含まれたノードは入力ノードと称し、隠れレイヤ120に含まれたノードは隠れノードと称し、出力レイヤ130に含まれたノードは出力ノードと称する。
【0043】
入力レイヤ110に含まれた入力ノードと隠れレイヤ120に含まれた隠れノードは、接続加重値を有する接続線によって接続されてもよい。隠れレイヤ120に含まれた隠れノードと出力レイヤ130に含まれた出力ノードは、接続加重値を有する接続線によって接続されてもよい。
【0044】
図面に図示していないが、ニューラルネットワークは複数の隠れレイヤを含んでもよい。複数の隠れレイヤを含むニューラルネットワークは、深度ニューラルネットワーク(deep neural network)と称する。深度ニューラルネットワークを学習させるものは深度学習(deep learning)と称する。
【0045】
隠れレイヤ120に第1隠れレイヤ、第2隠れレイヤ、及び第3隠れレイヤが含まれる場合を仮定すると、第1隠れレイヤに属する隠れノードの出力は、第2隠れレイヤに属する隠れノードに接続され得る。第2隠れレイヤに属する隠れノードの出力は、第3隠れレイヤに属する隠れノードに接続され得る。
【0046】
一実施形態によると、互いに異なる隠れレイヤに属する隠れノード間に再帰的(recurrent)に接続され得る。このように互いに異なる隠れレイヤに属する隠れノード間に再帰的な接続があるニューラルネットワーク100は、回帰ニューラルネットワークと称する。
【0047】
一実施形態に係るニューラルネットワーク学習装置は、監督学習(supervised learning)によりニューラルネットワーク100を学習させることができる。ニューラルネットワーク学習装置は、ソフトウェアモジュール、ハードウェアモジュール、または、この組合せにより実現することができる。監督学習は、学習データとそれに対応する出力データをともにニューラルネットワーク100に入力し、学習データに対応する出力データが出力されるよう、接続線の接続加重値をアップデートする方式である。一例示によると、ニューラルネットワーク学習装置は、新しいノードを追加したり新しいレイヤを追加することでニューラルネットワークを拡張し得る。ニューラルネットワーク学習装置は、トレーニングデータに基づいてニューラルネットワークの構造を変更してもよい。
図1は、ニューラルネットワークの構造をノード構造として表現したが、実施形態はこのようなノード構造に限定されるここはない。メモリストレージにニューラルネットワークを格納するために様々なデータ構造を用いることができる。
【0048】
ニューラルネットワーク学習装置は、エラー逆伝播学習(back−propagation learning)を用いて人工ニューロン間の接続加重値をアップデートする。エラー逆伝播学習は、与えられた学習データに対してフォワード算出(forward computation)によりエラーを推定した後、出力レイヤ130から始まって隠れレイヤ120及び入力レイヤ110に向かう逆方向に推定したエラーを伝播しながら、エラーを減らす方向に接続加重値をアップデートする方法である。ニューラルネットワーク100の処理は、入力レイヤ110→隠れレイヤ120→出力レイヤ130の方向に進行するが、エラー逆伝播学習で接続加重値のアップデート方向は、出力レイヤ130→隠れレイヤ120→入力レイヤ110の方向に進行する。1つ又はそれ以上のプロセッサは、ニューラルネットワークを所望する方向に処理するため、レイヤ又は一連の算出データを格納するバッファメモリを使用することができる。
【0049】
ニューラルネットワーク学習装置は、現在の設定された接続加重値がどれ程最適であるかを測定するための目的関数を定義し、目的関数の結果に基づいて接続加重値を続けて変更して学習を繰り返す。例えば、目的関数は、ニューラルネットワーク100が学習データに基づいて実際に出力した出力値と出力を所望する期待値との間のエラーを算出するためのエラー関数であり得る。ニューラルネットワーク学習装置は、エラー関数の値を減らす方向に接続加重値をアップデートすることができる。
【0050】
下記で詳細に説明するが、一実施形態に係るニューラルネットワーク学習装置は、ニューラルネットワークを拡張させることでニューラルネットワークの認識性能を向上することができる。以下、ニューラルネットワークを拡張させるという表現は、ニューラルネットワークの構造を拡張させるという表現と同一に用いられる。例えば、目的関数の結果が一定のレベル以上に向上されない場合、ニューラルネットワーク学習装置は、隠れレイヤに含まれたノードの個数を増加させながらニューラルネットワークを学習させ得る。
【0051】
図2は、一実施形態に係るニューラルネットワーク構造拡張方法を示した動作フローチャートである。ニューラルネットワークは、学習基盤認識、学習基盤認証、学習基盤分類などの様々な分野で活用される。ニューラルネットワークの構造が複雑になるほど(又は、ニューラルネットワークの規模が大きくなるほど)ニューラルネットワークの性能は向上する。しかし、ニューラルネットワークの構造が複雑になるほど(又は、ニューラルネットワークの規模が大きくなるほど)当該ニューラルネットワークを学習するために必要な演算複雑度も共に増加する。精巧な学習のためには一定のレベル以上に複雑な構造を有する(又は、一定のレベル以上に大きい規模を有する)ニューラルネットワークが必要であるが、一般的な学習方式では当該ニューラルネットワークの性能を最適化するには限界がある。
【0052】
以下で説明する実施形態は、小規模ニューラルネットワークを先に学習させて当該のニューラルネットワークの構造を次第に拡張及び学習させる技術を提供することができる。この場合、ニューラルネットワークは構造拡張以前に学習された結果を保持しながら、次第に精巧に学習され得る。ニューラルネットワークの構造拡張及び学習が反復されることにより、一定のレベル以上に複雑な複雑度又は一定のレベル以上に大きい規模のニューラルネットワークが最適に学習され得る。以下、ニューラルネットワークの構造拡張に対して詳細に説明する。
【0053】
図2を参照すると、一実施形態に係るニューラルネットワーク構造拡張方法は、ノードを選択するステップS210、新しいノードを生成するステップS220、新しいノードをニューラルネットワークに接続するステップS230、接続加重値を設定するステップS240、及び拡張されたニューラルネットワークを学習させることで新しいノードの接続加重値を調整するステップS250を含む。
【0054】
ステップS210において、ニューラルネットワークに含まれたノードのうち少なくとも1つのノードが選択される。ノードの選択のために様々な情報が考慮される。例えば、ノードを選択するために、ノードの活性化頻度数情報及びノードの活性化エントロピー情報などが考慮され得る。活性化頻度数情報は、予め決定した時間区間内にノードそれぞれが活性化する頻度数を含む。活性化エントロピー情報は、予め決定した時間区間内にノードそれぞれが活性化状態と不活性状態との間で遷移する回数を含む。
【0055】
ステップS220において、新しいノードが生成される。新しいノードはステップS210で選択されたノード(以下、「選択されたノード」という)が属するレイヤに生成され得る。例えば、ニューラルネットワークに第1隠れレイヤ、第2隠れレイヤ、及び第3隠れレイヤが含まれ、第2隠れレイヤに含まれたノードが選択されてもよい。この場合、新しいノードは第2隠れレイヤに生成されてもよい。
【0056】
新しいノードは、以前レイヤに含まれたノード及び次のレイヤに含まれたノードと接続される。例えば、新しいノードが第2隠れレイヤに生成される場合、新しいノードは、第1隠れレイヤに含まれたノード及び第3隠れレイヤに含まれたノードと接続されてもよい。
【0057】
ステップS230において、新しいノードとニューラルネットワーク内のノードとの間を接続するエッジが形成することによって、新しいノードはニューラルネットワークと接続され得る。
【0058】
ステップS240において、新しいノードの接続加重値が設定される。新しいノードの接続加重値は、以前レイヤに含まれたノードと新しいノードを接続する接続線の接続加重値、及び新しいノードと次のレイヤに含まれたノードを接続する接続線の接続加重値を含む。
【0059】
新しいノードの接続加重値は、選択されたノードの接続加重値に基づいて設定され得る。例えば、新しいノードの接続加重値のうち一部は選択されたノードの接続加重値のうち一部と同一に設定されてもよい。新しいノードの残り接続加重値は、予め決定した初期値と設定されてもよい。また、選択されたノードの接続加重値のうち新しいノードの接続加重値を設定値に活用された接続加重値も予め決定した初期値に設定されてもよい。
【0060】
ステップS220で新しいノードが生成され、ステップS230で接続加重値が設定される動作は、ステップS210で選択されたノードがコピーされるものとして理解される。ここで、選択されたノードの接続加重値のうち一部のみを新しいノードにコピーされる。選択されたノードにコピーされた接続加重値は、予め決定した初期値に初期化され得る。また、新しいノードに設定されていない接続加重値も予め決定した初期値に初期化され得る。
【0061】
ステップS250において、ニューラルネットワークの構造拡張が行われた後追加的に学習が行われながら、前述した方式により設定された接続加重値が追加的にアップデートされる。ステップS210〜ステップS230に関するより詳細な事項は
図3〜
図8を参照して後述する。
【0062】
図3は、一実施形態に係るノードの選択を説明する図である。
図3を参照すると、一実施形態に係るニューラルネットワーク学習装置は、ニューラルネットワークの構造拡張のために、隠れレイヤ120に含まれたノードのいずれか1つを選択する。
【0063】
ニューラルネットワーク学習装置は、隠れレイヤ120に含まれた隠れノードの活性化パターンをモニタリングする。一例として、
図4Aを参照すると、第1隠れノード121の活性化パターンはoff−on−off−off−offであり、第2隠れノード122の活性化パターンはon−on−off−on−offであってもよい。ニューラルネットワーク学習装置は、隠れノードの活性化パターンに基づいて活性化頻度数情報を生成する。活性化頻度数情報は、モニタリングされた活性化パターン内の隠れノードそれぞれが活性化した頻度数を示す情報である。
図4Aに示す例示として、第1隠れノード121の活性化頻度数は1であり、第2隠れノード122の活性化頻度数は3である。
【0064】
ニューラルネットワーク学習装置は、予め決定した時間区間で活性化頻度数が最も大きいノードを選択する。活性化頻度数が最も大きいノードを選択する理由は、活性化頻度数が最も大きいノードがニューラルネットワーク内で最も負荷の多いノードであるためである。最も負荷の多いノードの負荷を軽減させることで、ニューラルネットワークの認識性能は向上される。
図4Aに示す例示によると、第2隠れノード122の活性化頻度数(例えば、3)が第1隠れノード121の活性化頻度数(例えば、1)よりも大きいため、第2隠れノード122が選択され得る。
【0065】
他の例として、
図4Bを参照すると、第1隠れノード121の活性化パターンはon−off−on−off−onであり、第2隠れノード122の活性化パターンはon−on−on−off−offであってもよい。ニューラルネットワーク学習装置は、隠れノードの活性化パターンに基づいて活性化頻度数情報を生成する。
図4Bに示す例示として、第1隠れノード121の活性化頻度数と第2隠れノード122の活性化頻度数は合わせて3である。
【0066】
また、ニューラルネットワーク学習装置は、隠れノードの活性化パターンに基づいて活性化エントロピー情報を生成することができる。活性化エントロピー情報は、モニタリングされた活性化パターン内の隠れノードそれぞれが活性化状態と不活性状態の間で遷移された回数を示す情報である。
図4Bに示す例示として、第1隠れノード121の活性化エントロピーは4であり、第2隠れノード122の活性化エントロピーは1である。
【0067】
ニューラルネットワーク学習装置は、予め決定した時間区間で活性化エントロピーが予め決定した第3閾値よりも小さく、活性化頻度数が予め決定した第4閾値よりも大きいノードを選択する。活性化頻度数が一定のレベル以上、活性化エントロピーが大きいノードは、予め決定した時間区間内で平均して分布で活性化した確率が高い。また、活性化頻度数が一定のレベル以上であり、活性化エントロピーが小さいノードは、予め決定した時間区間内の特定の時間区間に集中的に活性化する確率が高い。
【0068】
特定の時間区間に集中する活性化を分散してニューラルネットワークの認識性能を向上させるために、活性化エントロピーが予め決定した第3閾値よりも小さくて活性化頻度数が予め決定した第4閾値よりも大きいノードが選択される。例えば、第3閾値と第4閾値が全て2である場合を仮定すると、
図4Bに示す例示として、第2隠れノード122の活性化エントロピー(例えば、1)は第3閾値(例えば、2)よりも小さく、第2隠れノード122の活性化頻度数(例えば、3)は第4閾値(例えば、2)よりも大きいため、第2隠れノード122が選択され得る。
【0069】
図5は、一実施形態に係る新しいノードの生成を説明する図である。
図5を参照すると、一実施形態に係るニューラルネットワーク学習装置は、選択されたノードが属するレイヤに新しいノードを生成する。例えば、第2隠れノード122が選択された場合を仮定すると、ニューラルネットワーク学習装置は、選択された第2隠れノード122が含まれた隠れレイヤ120に新しい第3隠れノード123を生成してもよい。
【0070】
ニューラルネットワーク学習装置は、選択されたノードの活性化特性に基づいて新しいノードの活性化特性を設定することができる。例えば、ニューラルネットワーク学習装置は、選択されたノードの活性化閾値に基づいて新しいノードの活性化閾値を設定してもよい。または、ニューラルネットワーク学習装置は、選択されたノードの活性化関数に基づいて新しいノードの活性化関数を設定してもよい。
【0071】
図6〜
図8は、一実施形態に係る接続加重値の設定を説明する図である。一実施形態に係るニューラルネットワーク学習装置は、選択されたノードの接続加重値に基づいて新しいノードの接続加重値を設定することができる。以下、選択されたノードの接続加重値のうち一部を新しいノードに移動させる実施形態について説明するが、選択されたノードの接続加重値に基づいて新しいノードの接続加重値を設定する方法は様々に変形され得る。例えば、ニューラルネットワーク学習装置は、選択されたノードの接続加重値の様々な統計に基づいて、新しいノードの接続加重値を設定し得る。
【0072】
図6を参照すると、一実施形態に係るニューラルネットワーク学習装置は、選択されたノード122の接続加重値のうち一部を選択する。選択されたノード122の接続加重値は、入力接続加重値と出力接続加重値を含む。ニューラルネットワーク学習装置は、選択されたノード122の入力接続加重値611、612、613を選択する。
【0073】
他の例として、図面に図示していないが、ニューラルネットワーク学習装置は、入力接続加重値を複数の入力グループに分割し、出力接続加重値を複数の出力グループに分割する。ニューラルネットワーク学習装置は、複数の入力グループのいずれか1つのグループを選択し、複数の出力グループのいずれか1つのグループを選択してもよい。
【0074】
例えば、ニューラルネットワーク学習装置は、第1入力接続線の第1入力接続加重値611、第2入力接続線の第2入力接続加重値612、及び第3入力接続線の第3入力接続加重値613を2つの入力グループに分割することができる。2つの入力グループは、{第1入力接続加重値611、第2入力接続加重値612}と{第3入力接続加重値613}であってもよい。ニューラルネットワーク学習装置は、2つの入力グループのいずれか1つの入力グループ、例えば、{第3入力接続加重値613}を選択してもよい。
【0075】
ニューラルネットワーク学習装置は、様々な方式を用いて入力接続加重値を複数のグループに分割することができる。一例として、ニューラルネットワーク学習装置は、第1グループに属する接続加重値の和と第2グループに属する接続加重値の和との間の差が予め決定した第5閾値以下になるよう、選択されたノード122の接続加重値を第1グループ及び第2グループに分割してもよい。
【0076】
他の例として、ニューラルネットワーク学習装置は、選択されたノード122の接続加重値を大きさ順に整列してもよい。選択されたノード122の接続加重値が合わせてn個である場合、接続加重値が整列した整列リストに含まれた接続加重値はそれぞれ1〜nにインデックスされる。ニューラルネットワーク学習装置は、整列リスト内の両端に位置する接続加重値(インデックス1、インデックスn)を第1グループに分類し、整列リスト内に分類されていない接続加重値のうち両端に位置する接続加重値(インデックス2、インデックスn−1)を第2グループに分類してもよい。ニューラルネットワーク学習装置は、整列リスト内の全ての元素が分類されるまで前述した過程を繰り返すことで、選択されたノード122の接続加重値を第1グループ及び第2グループに分割することができる。
【0077】
前述した方式は例示的な事項に過ぎず、選択されたノード122の接続加重値を第1グループ及び第2グループに分割する方式は様々に変形され得る。それだけではなく、実施形態は選択されたノード122の接続加重値を3個以上のグループに分割する方式でも拡張され得る。
【0078】
また、ニューラルネットワーク学習装置は、出力接続加重値を複数のグループに分割することができる。例えば、ニューラルネットワーク学習装置は、第1出力接続線の第1出力接続加重値621、第2出力接続線の第2出力接続加重値622、及び第3出力接続線の第3出力接続加重値623を2つの出力グループに分割してもよい。2つの出力グループは{第1出力接続加重値621}と{第2出力接続加重値622、第3出力接続加重値623}であってもよい。ニューラルネットワーク学習装置は、2つの出力グループのいずれか1つの出力グループ、例えば、{第2出力接続加重値622、第3出力接続加重値623}を選択してもよい。
【0079】
ニューラルネットワーク学習装置は、分割されたグループのいずれか1つのグループに属する接続加重値を選択することができる。例えば、ニューラルネットワーク学習装置は、分割されたグループのいずれか1つのグループを予め決定した方式(例えば、ランダム選択方式など)により選択し、選択されたグループに属する接続加重値を選択することができる。
【0080】
図7を参照すると、一実施形態に係るニューラルネットワーク学習装置は、新しいノード123の接続加重値を設定するために、選択されたノード122から選択された一部の接続加重値を新しいノード123に用いることができる。例えば、ニューラルネットワーク学習装置は、選択されたノード122の入力接続加重値611、612、613の全てを選択する。選択されたノード122の入力接続加重値611、612、613は、入力ノード701、702、703と選択されたノード122を接続する接続線の接続加重値である。ニューラルネットワーク学習装置は、選択された入力接続加重値611、612、613を新しいノード123にコピーしてもよい。ニューラルネットワーク学習装置は、入力ノード701、702、703と新しいノード123を接続する接続線の接続加重値711、712、713を入力接続加重値611、612、613と同一に設定し得る。
【0081】
ニューラルネットワーク学習装置は、選択されたノード122の出力接続加重値621、622、623のうち一部を選択する。例えば、ニューラルネットワーク学習装置は、選択されたノード122の出力接続加重値621、622、623のうち出力接続加重値622、623を選択してもよい。ニューラルネットワーク学習装置は、選択された出力接続加重値622、623を新しいノード123に移動させる。ニューラルネットワーク学習装置は、接続加重値722を出力接続加重値622と同一に設定し、接続加重値723を出力接続加重値623と同一に設定する。ニューラルネットワーク学習装置は、接続加重値722と接続加重値723を設定した後、出力接続加重値622と出力接続加重値623を初期化することができる。例えば、ニューラルネットワーク学習装置は、出力接続加重値622と出力接続加重値623を予め決定した初期値に設定してもよい。
【0082】
実施形態は、出力接続加重値をインデックス単位で移動させることで、深度学習において発生可能な共同適応(co−adaptation)問題を回避することができる。共同適応問題は、複数のノードが類似する出力接続加重値を有する場合、1つのノードのように学習され出力されて、ノードの無駄遣いを招く問題がある。実施形態は、出力接続加重値をインデックス単位に新しいノードに分散させることで、共同適応問題を回避することができる。
【0083】
図8を参照すると、一実施形態に係るニューラルネットワーク学習装置は新しいノード123の残り接続加重値を初期化することができる。残りの接続加重値は、新しいノード123の接続加重値のうちまだ設定されていない接続加重値を含み得る。例えば、新しいノード123の接続加重値721は残り接続加重値であってもよい。ニューラルネットワーク学習装置は、接続加重値721を残りの接続加重値として検出し、接続加重値721を予め決定した初期値に設定する。
【0084】
以上で説明の便宜のために、1つのノードが選択されて1つの新しいノードが生成される場合について説明したが、実施形態は、複数のノードが選択されて複数の新しいノードが生成される場合にもそのまま適用され得る。
【0085】
選択されたノードの接続加重値に基づいて、新しいノードの接続加重値を設定する方式は様々に変形され得る。一例として、選択されたノードの入力接続加重値のうち一部と出力接続加重値のうちの一部のみが新しいノードに移動してもよい。他の例として、選択されたノードの出力接続加重値が全て新しいノードにコピーされ、入力接続加重値のうち一部のみが新しいノードに移動してもよい。
【0086】
図9は、一実施形態に係るニューラルネットワークの構造拡張後の追加的な学習を説明する図である。
図9を参照すると、一実施形態に係るニューラルネットワーク学習装置は、新しいノードを含むように拡張された構造のニューラルネットワーク900を学習させることで、接続加重値をアップデートすることができる。
【0087】
ニューラルネットワーク学習装置は、予め学習されたニューラルネットワークをリサイクルすることで、学習時間の縮小された技術を提供することができる。また、ニューラルネットワーク学習装置は、予め学習されたニューラルネットワークの構造を次第に拡張し学習させることで、ニューラルネットワークの認識性能を次第に向上させる技術を提供できる。
【0088】
ニューラルネットワーク学習装置は、レイヤ特別なプレ−トレーニング(pre−training)なしに深度学習を行う技術を提供することができる。ニューラルネットワーク学習装置は、前述した方式を用いて学習の全過程(例えば、ニューラルネットワーク内の全てのレイヤ)で分類の目的関数を共有しながら、深度ニューラルネットワークを最適化する深度学習を行うことができる。
【0089】
図10、
図11A、及び
図11Bは、一実施形態に係るニューラルネットワーク構造拡張方法の応用を説明する図である。
図10を参照すると、ステップS1010において、ニューラルネットワークが初期化される。例えば、ニューラルネットワークの初期構造、ニューラルネットワーク内の初期接続加重値などが設定され得る。ステップS1020において、ニューラルネットワークが学習される。トレーニングデータは、トレーニングデータストレージから取得され得る。演算は、ニューラルネットワークを介して活性化パターンがモニターされる間にプロセッサによって行われる。例えば、ニューラルネットワークは、監督学習、エラー逆伝播学習などを用いて学習されてもよい。
【0090】
ステップS1030において、ニューラルネットワークの構造拡張が必要であるか否かを判断する。一例として、現在まで学習されたニューラルネットワークの性能が評価される。性能は、ニューラルネットワークによって実行された分析が正確であるか否かを示す。もし、現在まで学習されたニューラルネットワークの性能が予め決定した閾値よりも小さい場合、ニューラルネットワークの構造拡張が必要であると判断される。ニューラルネットワークに与えられたタスク(例えば、認識、認証、分類など)の性能を向上させるために、ニューラルネットワーク内ノードの個数が増加する必要がある。
【0091】
他の例として、外部入力によってニューラルネットワークの構造拡張が必要であるか否かを判断する。もし、ステップS1030で構造拡張を指示する入力が受信される場合、ニューラルネットワークの構造拡張が必要であると判断される。構造拡張を指示する入力は、ユーザインタフェースを介して受信されるなどの様々な方式により受信されてもよい。
【0092】
ステップS1030において、ニューラルネットワークの構造拡張が必要であると判断される場合、ステップS1040でニューラルネットワークの構造が拡張される。ステップS1040は、
図2〜
図8を参照して前述した事項がそのまま適用され得るため、より詳細な説明は省略する。ステップS1050において、拡張された構造のニューラルネットワークが追加的に学習され得る。ステップS1030において、ニューラルネットワークの構造拡張が必要ではないものと判断される場合、構造拡張や追加学習なしにニューラルネットワークの学習を終了する。
【0093】
図11Aを参照すると、ステップS1110において、ニューラルネットワークを初期化する。ステップS1120においてニューラルネットワークが学習され、ステップS1130においてニューラルネットワークの構造拡張が必要であるか否かを判断する。ステップS1120及びステップS1130は、学習エポック(epoch)を構成してもよい。ステップS1120で単一学習エポックのため予め決定した数のトレーニングデータを用いてニューラルネットワークが学習され得る。ステップS1130において、当該の学習エポックにおける性能向上の程度が評価され、評価結果に基づいてニューラルネットワークの構造拡張が必要であるか否かを判断する。
【0094】
例えば、当該の学習エポックにおける性能向上が予め決定した第1閾値よりも大きい場合、現在の構造のニューラルネットワークがさらに学習される余地があるため、ニューラルネットワークの構造拡張は必要でないと判断する。一方、当該の学習エポックにおける性能向上が予め決定した第1閾値よりも小さい場合、現在の構造のニューラルネットワークの性能が飽和されたものであるため、ニューラルネットワークの構造拡張は必要であると判断する。
【0095】
ニューラルネットワークの構造拡張が必要であると判断されれば、ステップS1140において、ニューラルネットワークの学習終了条件が満足されるか否かを判断する。ここで、現在の構造のニューラルネットワークの性能と以前構造のニューラルネットワークの性能とを比較し、比較結果に基づいてニューラルネットワークの学習終了条件が満足されるか否かを判断する。以前構造のニューラルネットワークは、現在の構造のニューラルネットワークで構造拡張される以前のニューラルネットワークを意味する。
【0096】
例えば、現在の構造のニューラルネットワークの性能と以前構造のニューラルネットワークの性能との間の差が予め決定した第2閾値よりも大きい場合、追加的な構造拡張による性能向上が期待されるため、ニューラルネットワークの学習終了条件が満足されないものと判断する。一方、現在の構造であるニューラルネットワークの性能と以前構造のニューラルネットワークの性能との間の差が予め決定した第2閾値よりも小さい場合、追加的な構造拡張による性能向上が期待されないため、ニューラルネットワークの学習終了条件が満足されるものと判断する。
【0097】
ニューラルネットワークの学習終了条件が満足されていない場合、ステップS1150において、ニューラルネットワークの構造は拡張される。ステップS1120〜ステップS1150は、ニューラルネットワークの学習終了条件が満足されるまで反復される。
【0098】
図11Bを参照すると、第1ニューラルネットワーク1160が初期化され得る。第1学習エポック1161で第1ニューラルネットワーク1160が学習され、性能向上の程度が評価される。第1学習エポック1161で第1ニューラルネットワーク1160が学習された結果、性能向上の程度が第1閾値よりも大きいこともある。この場合、性能向上評価の結果は「Pass」であり、まだ構造拡張が必要ではないものと判断される。第2学習エポック1162でも学習及び性能向上評価が行われることができる。第3学習エポック1163で第1ニューラルネットワーク1160が学習された結果、性能向上の程度が第1閾値よりも小さいこともある。この場合、性能向上評価の結果は「Fail」であり、構造拡張が必要であると判断される。
【0099】
ステップS1171で第1ニューラルネットワーク1160が構造拡張されることにより第2ニューラルネットワーク1170が生成される。複数の学習エポックそれぞれで第2ニューラルネットワーク1170は学習され、当該学習エポックにおける性能向上の程度が評価される。第4学習エポック1172で第2ニューラルネットワーク1170が学習された結果、性能向上の程度が第1閾値よりも小さいこともある。この場合、性能向上評価の結果は「Fail」であり、構造拡張が必要であると判断される。
【0100】
ニューラルネットワークの構造拡張が行われる前に、現在の構造のニューラルネットワークの性能と以前構造のニューラルネットワークの性能とを比較することによって、ニューラルネットワークの学習終了条件が満足されるか否かを判断する。ニューラルネットワークの構造が十分大きくない場合、追加的な構造拡張によってニューラルネットワークの性能向上を期待することが難しいためである。
【0101】
ステップS1173において、第2ニューラルネットワーク1170の性能と第1ニューラルネットワーク1160の性能とを比較する。比較の結果、第2ニューラルネットワーク1170の性能と第1ニューラルネットワーク1160の性能との間の差が第2閾値よりも大きいこともある。この場合、性能比較の結果は「Pass」であり、ニューラルネットワークの学習終了条件が満足されないものと判断される。
【0102】
ステップS1181において、第2ニューラルネットワーク1170が構造拡張されることによって第3ニューラルネットワーク1180が生成される。第5学習エポック1182で第3ニューラルネットワーク1180が学習された結果、性能向上の程度が第1閾値よりも小さいこともある。この場合、性能向上評価の結果は「Fail」であり、構造拡張が必要であると判断される。ステップS1183において、第3ニューラルネットワーク1180の性能と第2ニューラルネットワーク1170の性能とが比較される。比較の結果、第3ニューラルネットワーク1180の性能と第2ニューラルネットワーク1170の性能との間の差が第2閾値よりも小さいこともある。言い換えると、構造拡張を通した性能向上の程度が第2閾値よりも小さいこともある。この場合、性能比較の結果は「Fail」であり、ニューラルネットワークの学習終了条件が満足されるものと判断される。
【0103】
図12及び
図13は、一実施形態に係るニューラルネットワーク構造拡張方法によって学習されるニューラルネットワークを説明する図である。
図12を参照すると、一実施形態に係るニューラルネットワーク1200は、入力レイヤ1210、複数の隠れレイヤ1220、及び出力レイヤ1230を含む。複数の隠れレイヤ1220それぞれは、予め決定した数以下のノードを含むように初期化され得る。このような初期化動作は、
図10に示すステップS1010又は
図11に示すステップS1110で行われる。
【0104】
ニューラルネットワーク1200は、
図10に示すステップS1020〜ステップS1050又は
図11に示すステップS1120〜ステップS1150によって構造拡張されながら学習され得る。
図10に示すステップS1040又は
図11に示すステップS1150において、ニューラルネットワーク1200の隠れレイヤ1220で新しいノードが生成されてもよい。
図13を参照すると、一実施形態に係る学習されたニューラルネットワーク1300は構造拡張された隠れレイヤ1320を含む。
【0105】
図14及び
図15は、一実施形態に係るニューラルネットワーク構造拡張方法によって学習されるオートエンコーダを説明する図である。オートエンコーダ(auto encoder)は、次元縮小(dimension reduction)を目的とするニューラルネットワークである。
図14を参照すると、一実施形態に係るオートエンコーダ1400は、入力レイヤ1410、隠れレイヤ1420、及び出力レイヤ1430を含む。
【0106】
入力レイヤ1410、隠れレイヤ1420、及び出力レイヤ1430は、オートエンコーダの入力ディメンションに基づいて初期化され得る。例えば、入力レイヤ1410に含まれるノード数は入力ディメンションに基づいて決定されてもよい。出力レイヤ1430に含まれるノード数は、入力レイヤ1410に含まれるノード数と同一に決定される。隠れレイヤ1420に含まれるノード数は、予め決定した初期値(例えば、2)に決定される。
【0107】
オートエンコーダ1400内で入力レイヤ1410→隠れレイヤ1420の構造と、隠れレイヤ1420→出力レイヤ1430の構造は互いに対称である。オートエンコーダ1400内で入力レイヤ1410→隠れレイヤ1420は符号化に当該し、隠れレイヤ1420→出力レイヤ1430は復号化に該当する。
【0108】
オートエンコーダ1400は、符号化により入力ディメンションをリダクションした後、復号化によりリダクションされた入力ディメンションを復旧する動作を行う。オートエンコーダ1400の目的関数は入力値と出力値が同一であることを要求する。オートエンコーダは次元縮小を目的とするため、隠れレイヤ1420のための予め決定した初期値は、入力ディメンションよりも小さくなければならない。前述した初期化動作は、
図10に示すステップS1010又は
図11に示すステップS1110で行われる。
【0109】
オートエンコーダ1400は、
図10に示すステップS1020〜ステップS1050又は
図11に示すステップS1120〜ステップS1150を介して構造拡張されながら学習され得る。
図10に示すステップS1040又は
図11に示すステップS1150において、オートエンコーダ1400の隠れレイヤ1420で新しいノードが生成され得る。
【0110】
一実施形態に係る次元縮小装置は、隠れレイヤ1420に含まれたノード数をできる限り小さい数に初期化した後、隠れレイヤ1420を拡張させながらオートエンコーダ1400を学習させる。次元縮小装置は、ソフトウェアモジュール、ハードウェアモジュール、またはその組合せで実現し得る。
【0111】
図15を参照すると、オートエンコーダ1500の性能が一定のレベル以上であれば、オートエンコーダ1500の学習は終了する。オートエンコーダ1500は、構造拡張された隠れレイヤ1520を含む。隠れレイヤ1520に含まれたノード数は、入力ディメンションがリダクションされた結果である。
【0112】
図面に図示していないが、オートエンコーダも複数の隠れレイヤを含んでもよい。例えば、オートエンコーダは、入力レイヤ、第1隠れレイヤ、中央隠れレイヤ、第2隠れレイヤ、及び出力レイヤを含んでもよい。オートエンコーダの基本動作を保持するために、入力レイヤ→第1隠れレイヤ→中央隠れレイヤの構造は、中央隠れレイヤ→第2隠れレイヤ→出力レイヤの構造と対称でなければならない。隠れレイヤの構造が拡張されるとき、第1隠れレイヤと第3隠れレイヤは互いに対称を保持し得る。
【0113】
図16は、一実施形態に係るニューラルネットワーク学習装置を示すブロック図である。
図16を参照すると、一実施形態に係るニューラルネットワーク学習装置1600は、選択部1610、生成部1620、接続部1630、設定部1640、及び学習部1650を含む。選択部1610、生成部1620、接続部1630、設定部1640、及び学習部1650は、1つ又はそれ以上のプロセッサとメモリを含む。選択部1610はニューラルネットワークの構造拡張のために、ニューラルネットワークに含まれたノードのうち少なくとも1つのノードを選択する。生成部1620は、選択されたノードが属するレイヤに新しいノードを生成する。接続部1630は、新しいノードを既存ノードに接続する。設定部1640は、選択されたノードの接続加重値に基づいて新しいノードの接続加重値を設定する。学習部1650は、トレーニングデータを用いてニューラルネットワークを学習させることで新しいノードと既存ノード間の接続加重値を調整することができる。トレーニングデータはメモリストレージから取得され得る。
【0114】
図17は、一実施形態に係る次元縮小装置を示すブロック図である。
図17を参照すると、一実施形態に係る次元縮小装置1700は、初期化部1710、判断部1720、及び拡張部1730を含む。初期化部1710、判断部1720、及び拡張部1730は1つ又はそれ以上のプロセッサ及びメモリを含む。初期化部1710は、入力ディメンションに基づいてニューラルネットワークの入力レイヤ、隠れレイヤ、及び出力レイヤを初期化する。判断部1720は、ニューラルネットワークを学習させながら、隠れレイヤの拡張が必要であるか否かを判断する。拡張部1730は、隠れレイヤの拡張が必要であるとの判断に応じて隠れレイヤを拡張させる。
【0115】
図16及び
図17に示された各モジュールは、
図1〜
図15を参照して前述した事項がそのまま適用され得るため、より詳細な説明は省略する。
【0116】
図19は、一実施形態に係るニューラルネットワークを拡張する装置を示すブロック図である。
図1〜
図18を参照して記述した事項は
図19に示す実施形態にそのまま適用され得る。したがって、重複的な技術は省略する。
【0117】
図19を参照すると、ニューラルネットワーク拡張装置は、プロセッサ1910、ニューラルネットワークストレージ1920、算出値を格納するメモリ1930、及びトレーニングデータストレージ1940を含む。プロセッサ1910は単数形態に記載されているが、プロセッサ1910は複数のプロセッサ又はコアを含み得る。例えば、プロセッサ1910は、複数のマルチコアプロセッサを含むコンピュータ装置内で動作してもよい。一例として、マルチコアプロセッサは、GPGPU(general purpose graphic processing unit)であってもよい。他の例として、マルチコアプロセッサそれぞれは、FPGA(field−programmable gate array)であるか、オーダーメード型(customizable)マルチコアプロセッサであってもよい。更なる例として、プロセッサ1910は、PCI−E(peripheral component interconnect express)バスのような内部バスを介してデータを交換してもよい。更なる例として、プロセッサは単一コアプロセッサであってもよい。
【0118】
一実施形態によると、プロセッサ1910は、ニューラルネットワークストレージ1920に格納されたニューラルネットワークをレイヤごとに処理するためにパイプラインアルゴリズムを用いることができる。ニューラルネットワークストレージ1920は、複数のレイヤを含むニューラルネットワークを格納することができる。例えば、ニューラルネットワークは3個以上のレイヤを含んでもよい。トレーニングデータストレージ1940に格納されたトレーニングデータは、ニューラルネットワークストレージ1920に格納されたニューラルネットワークの入力レイヤに入力を提供することができる。例えば、ニューラルネットワークが英語手書文字(hand−written English)のパターンを認識するように学習させるため、トレーニングデータは手書文字のデジタルイメージ及びそのイメージから認識されなければならないテキスト文字を含み得る。テキスト文字は、ニューラルネットワークの性能を決定するために用いる。ニューラルネットワークが音声を認識するように学習させるため、トレーニングデータは、オーディオレコーディングサンプル又は音声コーパス(speech corpus)を含んでもよい。
【0119】
ニューラルネットワークのノード活性化パターン、及びエッジに割り当てられる接続加重値など、プロセッサ1910によって行われる演算はニューラルネットワークが学習される間にメモリ1930に格納され得る。一例によると、ニューラルネットワークストレージ1920に格納されたニューラルネットワークは、学習される間、プロセッサ1910によって新しいノードが追加されたり新しい隠れレイヤが追加されることによって持続的にアップデートされ得る。
【0120】
図20は、一実施形態に係る拡張されたニューラルネットワークを用いて入力データを分析する装置を示すブロック図である。
図1〜
図19を参照して記述した事項は、
図20に示す実施形態にそのまま適用され得るため、重複的な技術は省略する。
【0121】
ニューラルネットワークが十分に学習された後、拡張されたニューラルネットワークは入力データを処理するために用いられる。例えば、プロセッサ2010は、メモリ又は入出力装置からデジタル手書文字のような入力データを取得してもよい。入出力装置は、キーボード、ディスプレイ装置、タッチスクリーン、プリンタなどを含み、この例示に限定されることはない。プロセッサ2010は、入力データをニューラルネットワークストレージ2020に格納された拡張されたニューラルネットワークの入力レイヤに提供することができる。拡張されたニューラルネットワークを用いて、プロセッサ2010は、入力データを認識されたテキストを含む出力データに変換する文字認識を行うことができる。
【0122】
一実施形態によると、プロセッサ2010は、
図20に示すように入力を分析するだけではなく、ニューラルネットワークのディメンションを学習させたり、拡張したり、変更し得る。他の実施形態によると、ニューラルネットワーク拡張及びデータ分析は2つの分離した装置によって行われる。
【0123】
以上で説明された実施形態は、ハードウェア構成要素、ソフトウェア構成要素、及び/又はハードウェア構成要素及びソフトウェア構成要素の組合せで実現してもよい。例えば、プロセッサ、コントローラ、ALU(arithmetic logic unit)、デジタル信号プロセッサ(digital signal processor)、マイクロコンピュータ、FPA(field programmable array)、PLU(programmable logic unit)、マイクロプロセッサー、または、命令(instruction)を実行して応答できる異なる装置のように、1つ以上の汎用コンピュータまたは特定目的のコンピュータを用いて実現されてもよい。処理装置は、オペレーティングシステム(OS)及び前記オペレーティングシステム上で行われる1つ以上のソフトウェアアプリケーションを行ってもよい。また、処理装置は、ソフトウェアの実行に応答してデータをアクセス、格納、操作、処理及び生成してもよい。理解の便宜のために、処理装置は1つ使用されるものと説明される場合もあるが、当該の技術分野で通常の知識を有する者は、処理装置が複数の処理要素(processing element)及び/又は複数類型の処理要素を含んでいることが分かる。例えば、処理装置は、複数のプロセッサまたは1つのプロセッサ及び1つのコントローラを含んでもよい。また、並列プロセッサ(parallel processor)のような、他の処理構成も可能である。
【0124】
ソフトウェアはコンピュータプログラム、コード、命令、またはこのうちの1つ以上の組合せを含んでもよく、希望の通りに動作するよう処理装置を構成したり独立的または結合的に処理装置を命令してもよい。ソフトウェア及び/又はデータは、処理装置によって解釈されたり処理装置に命令またはデータを提供するためどのような類型の機械、構成要素、物理的装置、仮想装置、コンピュータ格納媒体または装置、送信される信号波に永久的または一時的に具体化できる。ソフトウェアは、ネットワークに接続されたコンピュータシステム上に分散し、分散された方法で格納されたり実行されてもよい。ソフトウェア及びデータは1つ以上のコンピュータで読み出し可能な記録媒体に格納されてもよい。
【0125】
実施形態に係る方法は、多様なコンピュータ手段を介して様々な処理を実行することができるプログラム命令の形態で実現され、コンピュータで読取可能な記録媒体に記録されてもよい。コンピュータ読取可能な媒体は、プログラム命令、データファイル、データ構造などのうち1つまたはその組合せを含んでもよい。媒体に記録されるプログラム命令は、本発明の目的のために特別に設計されて構成されたものでもよく、コンピュータソフトウェア分野の技術を有する当業者にとって公知のものであり、使用可能なものであってもよい。コンピュータ読取可能な記録媒体の例としては、ハードディスク、フロッピー(登録商標)ディスク及び磁気テープのような磁気媒体、CD−ROM、DVDのような光記録媒体、光ディスクのような光磁気媒体、及びROM、RAM、フラッシュメモリなどのようなプログラム命令を保存して実行するように特別に構成されたハードウェア装置が含まれてもよい。プログラム命令の例には、コンパイラによって作られるような機械語コードだけでなく、インタープリタなどを用いてコンピュータによって実行できる高級言語コードが含まれる。前記したハードウェア装置は、本発明の動作を行うために1つ以上のソフトウェアモジュールとして動作するように構成されてもよく、その逆も同様である。
【0126】
上述したように、本発明を限定された実施形態と図面によって説明したが、本発明は、上記の実施形態に限定されることなく、本発明が属する分野における通常の知識を有する者であれば、このような実施形態から多様な修正及び変形が可能である。
【0127】
したがって、本発明の範囲は、開示された実施形態に限定されるものではなく、特許請求の範囲だけではなく特許請求の範囲と均等なものなどによって定められるものである。