(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-06-02
(45)【発行日】2022-06-10
(54)【発明の名称】ニューラルネットワークの学習装置および学習方法
(51)【国際特許分類】
G06N 3/063 20060101AFI20220603BHJP
G06N 3/04 20060101ALI20220603BHJP
【FI】
G06N3/063
G06N3/04
(21)【出願番号】P 2018099431
(22)【出願日】2018-05-24
【審査請求日】2021-05-18
【新規性喪失の例外の表示】特許法第30条第2項適用 ≪ポスター発表による公開≫ 1.発明の公開日(開催日) 平成29年11月26日 2.発明を公開した集会名、開催場所 WiNF2017(第15回情報学ワークショップ)、中部大学 10号館 3.発明の公開者名 山内 康一郎、山本 雅治 4.発明の内容 仮想学習マシンSWAP Kernel Regression ≪抄録集による公開≫ 1.発明の公開日(配布日) 平成29年11月26日 2.発明を公開した刊行物名 第15回情報学ワークショップ(WiNF2017)抄録集 発行元:WiNF2017実行委員会 3.発明の公開者名 山内 康一郎、山本 雅治 4.発明の内容 仮想学習マシンSWAP Kernel Regression
(73)【特許権者】
【識別番号】500433225
【氏名又は名称】学校法人中部大学
(74)【代理人】
【識別番号】100147625
【氏名又は名称】澤田 高志
(72)【発明者】
【氏名】山内 康一郎
(72)【発明者】
【氏名】山本 雅治
【審査官】金木 陽一
(56)【参考文献】
【文献】特開2012-098971(JP,A)
【文献】特開平05-233581(JP,A)
【文献】三神 浩平ほか,有限資源環境下における睡眠期間を導入した追加学習法,電子情報通信学会技術研究報告,2007年03月08日,Vol. 106, No. 589,pp. 159-164,ISSN: 0913-5685
【文献】岡本 圭介ほか,ラジアル基底関数ネットの高速追加学習アルゴリズム,計測自動制御学会論文集,2004年12月31日,Vol. 40, No. 12,pp. 1227-1235,ISSN: 0453-4654
【文献】KATO, H., et al.,Quick MPPT microconverter using a limited general regression neural network with adaptive forgetting,2015 International Conference on Sustainable Energy Engineering and Application (ICSEEA) [online],2015年10月05日,pp. 42-48,[retrieved on 2022-04-27], Retrieved from the Internet: <URL: https://ieeexplore.ieee.org/abstract/document/7380743>,<DOI: 10.1109/ICSEEA.2015.7380743>
【文献】近藤 勇祐,ページ置き換えアルゴリズムを導入したLimited General Regression Neural Network 組み込み用学習アルゴリズムの性能向上法の検討,電子情報通信学会技術研究報告,2014年03月10日,Vol. 113, No. 500,pp. 139-143,ISSN: 0913-5685
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/063
G06N 3/04
(57)【特許請求の範囲】
【請求項1】
主記憶部よりも記憶容量が大きい補助記憶部を有する情報処理装置に実装されるGRNN(General Regression Neural Network;一般回帰ニューラルネットワーク)の追記学習を行うニューラルネットワークの学習装置であって、
前記GRNNを構成し得る複数のニューロンユニットのうち所定入力に対して発火する特定ニューロンユニットを前記主記憶部に常駐させる第1手段と、
前記特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットを前記主記憶部に非常駐で実装したり前記補助記憶部に退避させたりする第2手段と、
を備えることを特徴とするニューラルネットワークの学習装置。
【請求項2】
(1) 前記特定ニューロンユニットを前記主記憶部に常駐させるとともに前記関連ニューロンユニットを前記補助記憶部に退避させている場合、前記所定入力があると前記関連ニューロンユニットを前記補助記憶部から読み出して前記主記憶部に実装し、
(2) 前記特定ニューロンユニットを前記主記憶部に常駐させるとともに前記関連ニューロンユニットが前記主記憶部に実装されている場合、前記所定入力がなく且つ前記主記憶部の実装可能領域が不足していると、前記関連ニューロンユニットを前記主記憶部から前記補助記憶部に退避させることを特徴とする請求項1に記載のニューラルネットワークの学習装置。
【請求項3】
前記(1) の場合において、前記1つ以上の関連ニューロンユニットの合計実装サイズが前記主記憶部の実装可能領域を超えているときには、前記関連ニューロンユニットの集まりを前記実装可能領域に収まる実装サイズの複数の集まりに分割し、前記複数の集まりのそれぞれごとに異なるタイミングで前記主記憶部に実装することを特徴とする請求項2に記載のニューラルネットワークの学習装置。
【請求項4】
前記特定ニューロンユニットは、前記GRNNの入力層において当該入力層に入力される複数種類の情報に対してほぼ偏りなく疎に配置されることを特徴とする請求項1~3のいずれか一項に記載のニューラルネットワークの学習装置。
【請求項5】
主記憶部よりも記憶容量が大きい補助記憶部を有する情報処理装置に実装されるGRNN(General Regression Neural Network;一般回帰ニューラルネットワーク)の追記学習を行うニューラルネットワークの学習方法であって、
前記GRNNを構成し得る複数のニューロンユニットのうち所定入力に対して発火する特定ニューロンユニットを前記主記憶部に常駐させ、
前記特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットを前記主記憶部に非常駐で実装したり前記補助記憶部に退避させたりすることを特徴とするニューラルネットワークの学習方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般回帰ニューラルネットワーク(GRNN;General Regression Neural Network)の追記学習を行うニューラルネットワークの学習装置および学習方法に関するものである。
【背景技術】
【0002】
近年、様々な機器装置に組み込まれるマイクロコンピュータシステム(以下「組み込みシステム」という)においても人工知能の利用が進展しつつある。例えば、組み込み対象となる機器装置が専用のハードウェア(例えば、ハードウェアアクセラレータ)を備えている場合には、そのハードウェア上で人工知能を高速に実行させている。また、このようなハードウェアを備えてなくハードウェアリソースが最小限に制限される場合においても、例えば、下記特許文献1に開示される技術等により人工知能の実行を可能にしている。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
ところで、人工知能は、典型的には大規模なニューラルネットワークで構成されることから、それを実装する専用のハードウェアでは大容量の半導体メモリが必要になる。半導体メモリは記憶容量に比例して部品コストが上昇する傾向にあり、また大容量の半導体メモリは外形サイズが大きい。そのため、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においては、製品を構成している半導体メモリの記憶容量に応じてニューラルネットワークのサイズを小さくせざるを得ない実状がある。
【0005】
例えば、大規模なニューラルネットワークは、例えば、枝刈り技法により実装可能なサイズに構成を変更されてから機器装置に組み込まれるが、これには想定される入力情報に対する学習を予め行っておく必要がある。即ち、ニューラルネットワークのサイズを枝刈りにより小さくして実装するためには、入力情報が想定されており、且つ、それについて学習済みであることが前提になる。
【0006】
しかしながら、ニューラルネットワークのサイズを枝刈りにより小さくした場合には、未知の入力情報に対しては、枝刈りにより削除されたニューロンユニットの機能を十分に補うことは容易ではない。そのため、未知の環境下においては人工知能の機能が発揮され難い。つまり、枝刈りによるニューロンユニットの削減は、オンサイトラーニングを実行する際に支障になるだけでなく、人工知能の能力低下にも繋がり得るという問題がある。
【0007】
本発明は、上述した課題を解決するためになされたものであり、未知の環境下における人工知能の能力低下を抑制し得るニューラルネットワークの学習装置および学習方法を提供することを目的とする。
【課題を解決するための手段】
【0008】
上記目的を達成するため、特許請求の範囲に記載された請求項1の技術的手段を採用する。この手段によると、主記憶部よりも記憶容量が大きい補助記憶部を有する情報処理装置に実装されるGRNN(General Regression Neural Network;一般回帰ニューラルネットワーク)の追記学習を行うニューラルネットワークの学習装置は、GRNNを構成し得る複数のニューロンユニットのうち所定入力に対して発火する特定ニューロンユニットを主記憶部に常駐させる第1手段と、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットを主記憶部に非常駐で実装したり補助記憶部に退避させたりする第2手段と、を備える。
【0009】
これにより、情報処理装置の主記憶部には、GRNNを構成し得る複数のニューロンユニットのうち、所定入力に対して発火する特定ニューロンユニットだけを主記憶部に常駐させるため、GRNNを構成し得る複数のニューロンユニットのすべてを主記憶部に常駐(実装)させる必要がない。なお、このような特定ニューロンユニットを特定し得る所定入力は、例えば、主記憶部の実装可能領域のサイズに基づいて予め定められる。また、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットは、例えば、必要なときに、主記憶部に非常駐で実装されることから、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。さらに、このような1つ以上の関連ニューロンユニットは、例えば、不必要なときには、補助記憶部に退避させられることから、不要な関連ニューロンユニットが主記憶部に常駐することにより実装可能領域が減少することも抑制される。
【0010】
また、特許請求の範囲に記載された請求項2の技術的手段を採用する。この手段によると、(1) 特定ニューロンユニットを主記憶部に常駐させるとともに関連ニューロンユニットを補助記憶部に退避させている場合、所定入力があると関連ニューロンユニットを補助記憶部から読み出して主記憶部に実装する。また、(2) 特定ニューロンユニットを主記憶部に常駐させるとともに関連ニューロンユニットが主記憶部に実装されている場合、所定入力がなく且つ主記憶部の実装可能領域が不足していると、関連ニューロンユニットを主記憶部から補助記憶部に退避させる。これにより、補助記憶部に退避していた関連ニューロンユニットは、所定入力があると主記憶部に実装されるため、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。また、主記憶部に実装されていた関連ニューロンユニットは、所定入力がなく且つ主記憶部の実装可能領域が不足しているときには補助記憶部に退避させられるため、主記憶部の実装可能領域が減少することも抑制される。
【0011】
また、特許請求の範囲に記載された請求項3の技術的手段を採用する。この手段によると、特定ニューロンユニットを主記憶部に常駐させるとともに関連ニューロンユニットを補助記憶部に退避させている場合において、1つ以上の関連ニューロンユニットの合計実装サイズが主記憶部の実装可能領域を超えているときには、関連ニューロンユニットの集まりを実装可能領域に収まる実装サイズの複数の集まりに分割し、複数の集まりのそれぞれごとに異なるタイミングで主記憶部に実装する。これにより、補助記憶部に退避していた1つ以上の関連ニューロンユニットの合計実装サイズが主記憶部の実装可能領域を超えている場合においては、1つ以上の関連ニューロンユニットは複数の集まりに分割されてそれぞれごとに異なるタイミングで主記憶部に実装されるので、このような場合においても、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。
【0012】
また、特許請求の範囲に記載された請求項4の技術的手段を採用する。この手段によると、特定ニューロンユニットは、GRNNの入力層において当該入力層に入力される複数種類の情報に対してほぼ偏りなく疎に配置される。例えば、入力層に2種類の情報x,yが入力されそれぞれの情報x,yの大きさや強さにより表現可能なx,y平面において、特定ニューロンユニットはほぼ偏りなく疎に配置される。これにより、例えば、特定ニューロンユニットが密に配置されている場合に比べて、異なる特定ニューロンユニットが代わる代わる発火する可能性が低くなる。そのため、特定ニューロンユニットの発火に伴う関連ニューロンユニットの読込み回数や、他の特定ニューロンユニットの発火に伴う関連ニューロンユニットの退避回数を減らすことが可能になる。また、例えば、特定ニューロンユニットの配置が疎であってもそれが一部の範囲に偏っている場合に比べて、特定ニューロンユニットの発火に伴う関連ニューロンユニットの読込み回数や他の特定ニューロンユニットの発火に伴う関連ニューロンユニットの退避回数が一部において増減したり残部において減増したりする可能性を低減することができる。
【0013】
上記目的を達成するため、特許請求の範囲に記載された請求項5の技術的手段を採用する。この手段によると、主記憶部よりも記憶容量が大きい補助記憶部を有する情報処理装置に実装されるGRNN(General Regression Neural Network;一般回帰ニューラルネットワーク)の追記学習を行うニューラルネットワークの学習方法は、GRNNを構成し得る複数のニューロンユニットのうち所定入力に対して発火する特定ニューロンユニットを主記憶部に常駐させ、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットを主記憶部に非常駐で実装したり補助記憶部に退避させたりする。
【0014】
これにより、情報処理装置の主記憶部には、GRNNを構成し得る複数のニューロンユニットのうち、所定入力に対して発火する特定ニューロンユニットだけを主記憶部に常駐させるため、GRNNを構成し得る複数のニューロンユニットのすべてを主記憶部に常駐(実装)させる必要がない。なお、このような特定ニューロンユニットを特定し得る所定入力は、例えば、主記憶部の実装可能領域のサイズに基づいて予め定められる。また、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットは、例えば、必要なときに、主記憶部に非常駐で実装されることから、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。さらに、このような1つ以上の関連ニューロンユニットは、例えば、不必要なときには、補助記憶部に退避させられることから、不要な関連ニューロンユニットが主記憶部に常駐することにより実装可能領域が減少することも抑制される。
【発明の効果】
【0015】
請求項1の発明では、情報処理装置の主記憶部には、GRNNを構成し得る複数のニューロンユニットのうち、所定入力に対して発火する特定ニューロンユニットだけを主記憶部に常駐させるため、GRNNを構成し得る複数のニューロンユニットのすべてを主記憶部に常駐(実装)させる必要がない。また、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットは、必要なときに主記憶部に非常駐で実装されることから、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。さらに、このような1つ以上の関連ニューロンユニットは、不必要なときには補助記憶部に退避させられることから、不要な関連ニューロンユニットが主記憶部に常駐することにより実装可能領域が減少することも抑制される。したがって、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においても、未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0016】
請求項2の発明では、補助記憶部に退避していた関連ニューロンユニットは、所定入力があると主記憶部に実装されるため、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。また、主記憶部に実装されていた関連ニューロンユニットは、所定入力がなく且つ主記憶部の実装可能領域が不足しているときには補助記憶部に退避させられるため、主記憶部の実装可能領域が減少することも抑制される。したがって、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においても、未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0017】
請求項3の発明では、補助記憶部に退避していた1つ以上の関連ニューロンユニットの合計実装サイズが主記憶部の実装可能領域を超えている場合においては、1つ以上の関連ニューロンユニットは複数の集まりに分割されてそれぞれごとに異なるタイミングで主記憶部に実装されるので、このような場合においても、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。したがって、補助記憶部に退避していた1つ以上の関連ニューロンユニットの合計実装サイズが主記憶部の実装可能領域を超えている場合であっても、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)において未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0018】
請求項4の発明では、特定ニューロンユニットが密に配置されていたり一部の範囲に偏って疎に配置されていたりする場合に比べて、関連ニューロンユニットの読込みや退避の回数が全般的または部分的に増えることを抑制する。したがって、GRNNが実装されている情報処理装置の追記学習に伴う情報処理負荷が低減するので、当該情報処理装置の処理速度の低下を抑制することが可能になる。
【0019】
請求項5の発明では、情報処理装置の主記憶部には、GRNNを構成し得る複数のニューロンユニットのうち、所定入力に対して発火する特定ニューロンユニットだけを主記憶部に常駐させるため、GRNNを構成し得る複数のニューロンユニットのすべてを主記憶部に常駐(実装)させる必要がない。また、特定ニューロンユニットに関連付けられている1つ以上の関連ニューロンユニットは、必要なときに主記憶部に非常駐で実装されることから、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。さらに、このような1つ以上の関連ニューロンユニットは、不必要なときには補助記憶部に退避させられることから、不要な関連ニューロンユニットが主記憶部に常駐することにより実装可能領域が減少することも抑制される。したがって、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においても、未知の環境下における人工知能の能力低下を抑制することが可能になる。
【図面の簡単な説明】
【0020】
【
図1】本発明のニューラルネットワークの学習装置を適用した組み込みシステムの構成例を示すブロック図である。
【
図2】
図1に示すGRNNの基本的な構成例を示す説明図である。
【
図3】本実施形態に係る学習装置のGRNNを構成する各ニューロンユニットの状態を表した説明図である。
【
図4】本実施形態に係る学習装置のGRNNを構成する各ニューロンユニットの状態の他の例を表した説明図である。
【
図5】本実施形態に係る学習処理の流れを示すフローチャートである。
【
図6】
図5に示す学習処理を構成する出力計算処理の流れを示すフローチャートである。
【
図7】
図6に示す出力計算処理を構成する不要不急クラスターユニットに属する関連ユニットの退避等の処理の流れを示すフローチャートである。
【
図8】
図5に示す学習処理を構成するクラスターユニット用学習処理の流れを示すフローチャートである。
【
図9】
図8に示すクラスターユニット用学習処理を構成するクラスターユニット配置変更処理の流れを示すフローチャートである。
【
図10】改変例による出力計算処理の流れを示すフローチャートである。
【
図11】検証実験による結果を示す説明図で、
図11(A)は学習サンプルを「Concrete」に設定したもの、
図11(B)は学習サンプルを「servo」に設定したもの、である。
【
図12】検証実験による結果を示す説明図で、
図12(A)は学習サンプルを「housing」に設定したもの、
図12(B)は学習サンプルを「hearta1」に設定したもの、である。
【発明を実施するための形態】
【0021】
以下、本発明のニューラルネットワークの学習装置および学習方法の実施形態について図を参照して説明する。本発明のニューラルネットワークの学習装置(学習方法)を組み込みシステムに適用した実施形態を
図1~
図12に基づいて説明する。なお、
図1には、本実施形態の組み込みシステム10の構成例を示すブロック図、
図2には、GRNN50の基本的な構成例を示す説明図、がそれぞれ図示されている。また
図3および
図4には、GRNN50を構成する各ニューロンユニットの状態を表した説明図が図示されている。
【0022】
図1に示すように、組み込みシステム10は、ハードウェアとして、制御装置20、二次記憶装置30、アクセラレータ40および図略の入出力装置(例えば、監視カメラやディスプレイ)等を備えている。本実施形態では、組み込みシステム10は、例えば、工場で生産される製品ごとに品質管理を行い得る品質管理システムを想定しており、人工知能の機能を備えている。
【0023】
制御装置20は、例えば、汎用のマイクロコンピュータ(CPU)と、ROM、RAM、EEPROM等の半導体メモリ装置と、入出力インタフェースとから構成される、いわゆるマイコンボードである。制御装置20は、主に、当該組み込みシステム10で行われる情報処理や当該情報処理に関する制御処理を行っている。本実施形態では、制御装置20は、図略の監視カメラから入力された入力情報に基づいて所定の情報処理を行い、それにより得られた結果(出力情報)等を図略のディスプレイ等に表示する。なお、アクセラレータ40のRAMは、特許請求の範囲に記載の「主記憶部」に相当し得るものである。
【0024】
本実施形態では、制御装置20は、人工知能に関する情報処理を高速に実行するため、本来であれば制御装置20が行うべき当該情報処理をアクセラレータ40に肩代わりさせている。そのため、制御装置20は、図略の監視カメラや図略のディスプレイのほかに、入出力インタフェースを介してアクセラレータ40にも接続されており、人工知能による情報処理の結果についてはアクセラレータ40から取得している。なお、図略の監視カメラは、制御装置20を介することなく、直接、アクセラレータ40に接続してもよい。
【0025】
二次記憶装置30は、例えばDRAMである。DRAMは、フラッシュメモリでは書込み回数の制限を超えると発生し得るビット化け等が生じ難く、またアクセス速度も比較的速いため、本実施形態では二次記憶装置30に使用している。なお、半導体技術の向上により書込み回数制限が桁違いに増加したり、GRNN50の使用形態として当該組み込みシステム10の使用可能期間内における二次記憶装置30の使用が書込み回数制限を超えない範囲で想定されたりする場合には、二次記憶装置30にフラッシュメモリを用いてもよい。
【0026】
アクセラレータ40は、本実施形態では、GRNN50や、クラスターユニットの学習モジュール(以下「CU学習モジュール」という)60を機能させるために専用に設けられているハードウェアアクセラレータである。アクセラレータ40は、例えば、画像処理用に構成されているグラフィックスプロセシングユニット(GPU)と、ROM、RAM等の半導体メモリ装置と、入出力インタフェースとから構成されている。アクセラレータ40は、GPUを構成している複数の演算処理装置等が行列計算やベクトル計算に適した構成を採っている点で制御装置20と相違する。
【0027】
なお、本実施形態では、制御装置20やアクセラレータ40の半導体メモリ装置は、例えば、数Gバイト~10数Gバイトの記憶容量を有する。これに対して、二次記憶装置30のDRAMは、数10Gバイト~100Gバイトの記憶容量を有する。つまり、制御装置20やアクセラレータ40に比べて、二次記憶装置30の方が数倍~10倍程度大きな記憶容量を有するようにそれぞれが構成されている。
【0028】
このように組み込みシステム10を構成することによって、図略の監視カメラから入力された画像情報(未知入力)は、制御装置20を介して(または制御装置20を介することなく直接、)アクセラレータ40に入力されてGRNN50に渡される。そして、GRNN50により得られた予測情報(予測出力)は、制御装置20に出力されて制御装置20による所定の情報処理に用いられる。
【0029】
即ち、アクセラレータ40のRAMにより構成される所定のメモリ領域(実装可能領域)にGRNN50を実装可能に構成されている。また、アクセラレータ40のROMには、当該アクセラレータ40の基本機能を働かせる制御プログラムやCU学習モジュール60等の学習プログラムが実装されている。
【0030】
なお、本明細書において「実装」とは、アクセラレータ40等のハードウェアのメモリ(RAM等の半導体メモリ装置)にプログラムやデータ等を読み込んだりロードしたりしてそれらが使用できるようにすることをいい、概念的には、例えば、アクセラレータ40にGRNN50の機能を組み込んで使用可能にすることも含んでいる(インプリメントやインプリメンテーションと称される場合もある)。そのため、本明細書においては、アクセラレータ40のRAMにクラスターユニットCU等を読み込んでGRNN50として機能を発揮し得るようにすることを単に「アクセラレータ40に実装する」と表現している場合があることに注意されたい。
【0031】
ここで、GRNN50の基本的な構成例と、GRNN50を構成する各ニューロンユニットの状態について
図2~
図4を参照して説明する。なお、
図3および
図4においては、図面表現上の便宜から、クラスターユニットCUは濃いグレー、アクティブユニットAUはやや濃いグレー、スリープユニットSUは薄いグレーにそれぞれ着色して区別可能にしている。そのため、これらの各ユニットにはCU,AU,SUの符号が付されていないものがあることに注意されたい。
【0032】
図2に示すように、GRNN50は、入力層、パターン層、加算層および出力層により構成されている(なお、パターン層および加算層は、中間層や隠れ層とも称される)。これらの各層は、複数のニューロンユニット(神経細胞に相当する記憶ユニット)の集まりにより構成されており、これらの各層のニューロンユニットは前後段において相互に接続されている。以下、本明細書において、ニューロンユニットのことを、単に「ユニット」と省略して表現する場合がある。
【0033】
本実施形態のGRNN50では、入力層や中間層等を構成するユニットの数は、例えば数10に設定されており、アクセラレータ40のRAMによる所定のメモリ領域上にはそのすべてを実装することは難しい。そのため、
図3に示すように、例えば、入力層を構成する複数のユニットのうち、特定の入力情報に対して発火したクラスターユニットCUとそれに関連するユニット(アクティブユニットAU)とをアクセラレータ40のRAMに実装し、残りのユニット(スリープユニットSU)は当該RAMに実装せずに二次記憶装置30に格納して退避させている。これらについては、次に
図3や
図4を参照しながら詳しく説明する。
【0034】
GRNN50は、後述するように、学習サンプルが提示されると、このサンプルに対応するユニットが二次記憶装置30に格納されることで、未知のサンプルが入力されるとそれに最も近いユニットを二次記憶装置30から探し出してその出力を予測出力として出力し得るように構成されている。これにより、ユニットは、ルックアップテーブルを連続関数近似で使用できるようにしたものとして解釈することができ、釣鐘型のガウス関数の重み付きの和として出力可能に構成されている。なお、ユニットの数は、複数であれば100でも200でも1000でも良く、特に定数に限定されるものではない。
【0035】
図3に示すように、本実施形態では、GRNN50を構成し得る複数のユニットのうちの一部だけがアクセラレータ40のRAMに実装され得るように構成している。アクセラレータ40のRAMは、所定のメモリ領域(ユニットの実装可能領域)が有限であり、GRNN50を構成し得る複数のユニットのすべてを実装することができない場合があるからである。また、例えば、家電製品や小型機器製品等においては、コスト的やスペース的にハードウェア構成の制約が厳しいため、アクセラレータ40のRAMを大容量にすることが難しいからである。
【0036】
そこで、本実施形態では、例えば、入力層や中間層等を構成する複数のユニットのうち、発火したクラスターユニットCUとこのクラスターユニットCUに関連付けられた関連ユニットをアクセラレータ40のRAMに実装し、当該発火したクラスターユニットCUに関連付けられていない残りのユニットは当該RAMに実装せずに二次記憶装置30に格納して退避させている。このように発火したクラスターユニットCUに関連付けられたユニット(以下「関連ユニット」という)は、アクセラレータ40に一時的に実装されるため、本実施形態ではアクティブユニットAUと称される。
【0037】
しかし、アクティブユニットAUであった関連ユニットは、その後、他のクラスターユニットCUが発火した場合には、当該他のクラスターユニットCUに関連付けられていない限り関連ユニットではなくなる。そのため、スリープユニットSUとなり二次記憶装置30に退避させられる場合がある。つまり、アクティブユニットAUやスリープユニットSUは、クラスターユニットCU以外のユニットについて、一時的な状態を表した名称に過ぎない。これに対し、クラスターユニットCUは、発火の有無に関わらずクラスターユニットCUであり、後述するような配属変更がない限り、二次記憶装置30に格納されることもない。
【0038】
図3(A)に示す例では、受容野RFと加算層ALの間に位置して、この図では3行3列で表示される4つのユニット群のうち、紙面右上、右下および左上の3つのユニット群については、それぞれ中央に位置するクラスターユニットCUだけがアクセラレータ40に実装されており、クラスターユニットCUの周囲に位置する8個のスリープユニットSUは、いずれも二次記憶装置30に退避させられている。これに対して、紙面左下のユニット群においては、その中央のクラスターユニットCUに加えて、周囲の8個のアクティブユニットAUもアクセラレータ40に実装されている。
【0039】
クラスターユニットCUは、クラスターユニットCUの配属を変更する場合を除いて、アクセラレータ40に常に実装されている(常駐している)ユニットである。クラスターユニットCUは、予め決められた一定数だけ存在しており、後述するクラスターカーネル用学習処理(
図8参照)において置き換えや配属変更等が行われる。なお、クラスターユニットCUの数(一定数)は、例えば、入力層に入力される情報(入力信号等)の数に基づいて決められる。
【0040】
クラスターユニットCU以外のユニットは、アクティブユニットAUおよびスリープユニットSUのいずれにもなり得る。即ち、アクティブユニットAUやスリープユニットSUは、特定のクラスターユニットCUの特性に近い特性を有するユニットであり、当該特定のクラスターユニットCUに対して関連付けられている。「関連付け」は、紐付けとも称される。特定のクラスターユニットCUの特性に対して、あるユニットがそれに近い特性を有するか否かは、動径基底関数(例えば、カーネル関数)を用いて判定される。次の式(1) にガウスカーネル関数を示す。ベクトルxは式(2)で表される(Tは転置記号)。
【0041】
【0042】
【0043】
式(1)において、xiは、カーネル関数の中心位置を表すベクトルであり、ユニットiが記憶している中心位置に相当する。またσはユニットiの広がりを示す標準偏差を表す。この関数は、ある入力ベクトル(中心相当の入力)に対して大きな値を出力しその入力ベクトルから位置(入力ベクトルを位置ベクトルとした場合の概念)が離れるにつれて出力値が小さくなる釣鐘型の出力特性を有する。そのため、このようなガウスカーネル関数により得られる値が各ユニットから出力されることにより、GRNN50を構成する各ユニットの役割が単純かつ明確になる。これにより、それぞれのユニットの特性(役割)の近さを中心位置ベクトルの近さとして判定することが可能になる。
【0044】
本実施形態では、受容野RFに入力された入力情報に対して、あるクラスターユニットCUが最も強く反応(発火)すると、それに関連付けられているユニット(関連ユニット)が、まだアクセラレータ40に実装されていない場合には、二次記憶装置30からアクセラレータ40のRAMに読み込まれ実装されてアクティブユニットAUになる。クラスターユニットCU以外のユニットは、アクセラレータ40のRAMに一時的に実装されると、スリープユニットSUとして退避させられるまでアクティブユニットAUの状態を維持する。アクティブユニットAUがスリープユニットSUになるか否かは、例えば、その中心位置が最も現在の入力に似ていないもの、またはLRU(Least Recently Used)のルールに従う。つまり、アクティブユニットAUになってから、使用されていない時間が最も長いユニットが退避の対象となる。
【0045】
例えば、
図3(A)に示す例では、受容野RFに入力された入力情報X
1により、紙面左下のユニット群のクラスターユニットCUが強く反応(発火)したことによって、発火した当該クラスターユニットCUに関連付け(紐付け)られている複数のユニットがアクティブユニットAUとして二次記憶装置30から読み込まれてアクセラレータ40に実装される。また、受容野RFに入力された入力情報X
1により、発火していないクラスターユニットCU(紙面右上、右下および左上の3個のクラスターユニットCU)に関連付け(紐付け)られている複数のユニットは、スリープユニットSUとして、二次記憶装置30に格納されてアクセラレータ40のRAMから退避させられる。なお、4個のクラスターユニットCUは、発火の有無に関わらず、アクセラレータ40のRAMに実装されている(常駐している)。
【0046】
また、
図3(B)に示す例では、受容野RFに入力情報X
2が入力されたことにより、紙面右上のユニット群のクラスターユニットCUが強く反応(発火)したことによって、紙面右上のユニット群には、その中央の常駐しているクラスターユニットCUに加えて、周囲の8個のアクティブユニットAUもアクセラレータ40に実装されている。また、受容野RFに入力情報X
2が入力されても発火していない他のクラスターユニットCU(紙面右下、左上および左下の3個のクラスターユニットCU)は、それぞれアクセラレータ40に常駐してはいるものの、これら他のクラスターユニットCUに関連付けられているそれぞれ8個のスリープユニットSUはいずれも二次記憶装置30に退避させられている。
【0047】
なお、
図3(A)や
図3(B)に示す例の上記の説明においては、説明を簡素化するため、ユニットが退避の対象になるか否かを決めるルール(例えば、LRU)の部分は割愛した。
【0048】
本実施形態で使用するGRNN50は、このようなガウスカーネル関数の出力を次の式(3)により表されるソフトマックス関数により計算して出力yを算出する。式(3)において、k(xi,xt)は式(1)のガウスカーネル関数を表し、wiはユニットiとの間における結合荷重を表す。
【0049】
【0050】
ところで、アクセラレータ40のRAMは、そのメモリ領域(実装可能領域)が有限である。そのため、あるクラスターユニットCUに関連付けられている関連ユニット(1個のクラスターユニットCUに属する複数の関連ユニット(アクティブユニットAUやスリープユニットSU))の合計実装サイズがアクセラレータ40のRAMの記憶容量(メモリ領域の最大値)Bを超えている場合には、それらの関連ユニットのすべてを同時にアクセラレータ40に実装することができない。なお、本明細書においては、関連ユニットの実装サイズ(メモリ上の占有領域サイズ)のことをユニットの個数に換算して「関連ユニットの数」等と表現する場合があることに注意されたい。
【0051】
本実施形態では、このような場合には、複数の関連ユニットを複数グループ(複数の集まり)に分割して、それぞれ異なるタイミングで、二次記憶装置30からアクセラレータ40に読み込んで実装する。例えば、
図4に示すように、アクセラレータ40の実装可能領域がユニット12個分の実装サイズである場合において、受容野RFに入力情報X
3が入力されて、17個の関連ユニット(
図4に示す破線内)が関連付けられているクラスターユニットCUが発火したと仮定する。このようなケースでは、17個の関連ユニットを2つのグループに分けて異なるタイミングでアクセラレータ40に実装する。
【0052】
例えば、
図4(A)に示すように、17個のうちの8個の関連ユニットをアクティブユニットAUaとしてアクセラレータ40に実装する。そして、アクティブユニットAUaの計算が完了しその計算結果がアクセラレータ40のRAM等に記憶された後、
図4(B)に示すように、残りの9個の関連ユニットをアクティブユニットAUbとしてアクセラレータ40に実装する。これらのアクティブユニットAUbの計算結果は、先に行われたアクティブユニットAUaの計算結果に加算されて最終出力が得られる。
【0053】
より詳細には、次の3つのパターン(第1のパターン~第3のパターン)に分類される。第1のパターンは、クラスターユニットCUに関連付けられている関連ユニットの数Nがアクセラレータ40の記憶容量B以上の場合である(N≧B)。この場合には、その直前(現在時刻t-1)に使用されたアクティブユニットAUが現在の発火したクラスターユニットCUにも関連付けられているときには、そのアクティブユニットAUについて、現時点の入力情報に対する出力を計算してその結果をアクセラレータ40のRAM等に記憶する。そして、そのアクティブユニットAUをスリープユニットSUとして二次記憶装置30に退避させた後、残りの関連ユニットを二次記憶装置30からアクセラレータ40に読み込んで実装する。これにより、残りのアクティブユニットAUについても現時点の入力情報に対する出力を計算し、その後行計算の結果を先行計算の結果に加算して最終出力を得る。
【0054】
第2のパターンは、クラスターユニットCUに関連付けられている関連ユニットの数Nがアクセラレータ40の記憶容量B未満の場合であって(N<B)、現在の発火したクラスターユニットCUと関係のないクラスターユニットCUの関連ユニットがアクセラレータ40に実装されているときである。このような場合には、たとえ関連ユニットの数Nがアクセラレータ40の記憶容量B未満であったとしても、二次記憶装置30からアクセラレータ40に関連ユニットを順次読み込んでいく過程においてアクセラレータ40の記憶容量Bが不足する蓋然性が高い。そのため、このような場合には、アクセラレータ40の記憶容量Bが不足したタイミングで、それまでに実装することのできたアクティブユニットAUについても現時点の入力情報に対する出力を計算してその結果をアクセラレータ40のRAM等に記憶する。そして、それらのアクティブユニットAUをスリープユニットSUとして二次記憶装置30に退避させた後、残りの関連ユニットを二次記憶装置30からアクセラレータ40に読み込んで実装する。これにより、残りのアクティブユニットAUについても現時点の入力情報に対する出力を計算し、その後行計算の結果を先行計算の結果に加算して最終出力を得る。
【0055】
第3のパターンは、クラスターユニットCUに関連付けられている関連ユニットの数Nがアクセラレータ40の記憶容量B未満の場合であって(N<B)、現在の発火したクラスターユニットCUと関係のないクラスターユニットCUの関連ユニットがアクセラレータ40に実装されていないときである。つまり、アクセラレータ40の記憶容量Bがすべて空いているときである。このような場合には、クラスターユニットCUの関連ユニットをすべてアクセラレータ40に実装することができるため、すべての関連ユニットを二次記憶装置30からアクセラレータ40に読み込んで実装した後、それぞれのアクティブユニットAUについて現時点の入力情報に対する出力を計算してそれらを加算して最終出力を得る。
【0056】
図1に戻って、CU学習モジュール60について説明する。CU学習モジュール60は、予測誤差計算モジュール61、新規ユニット追加モジュール63、削除ユニット肩代わりモジュール65、ユニット削除・追加モジュール66により構成されている。CU学習モジュール60には、未知入力(ベクトルX)のほかに学習サンプル(ベクトルx,y)も入力される。学習サンプル(ベクトルx,y)は、クラスターカーネルの学習に用いられるとともに、それに対応するカーネルも生成されて二次記憶装置30に格納される。つまり、未知入力(ベクトルX)を含めてすべてのサンプルが二次記憶装置30に格納されて記録(記憶)される。なお、予測誤差計算モジュール61、新規ユニット追加モジュール63、削除ユニット肩代わりモジュール65、ユニット削除・追加モジュール66は、後述する学習処理を可能にするプログラム群であり前述したアクセラレータ40のROMに格納されている。
【0057】
<学習処理>
次に、CU学習モジュール60による学習処理のアルゴリズムについて、
図5~
図9を参照しながら説明する。
図5には、本実施形態に係る学習処理の流れを示すフローチャートが図示されている。また
図6には、
図5に表されている出力計算処理の流れを示すフローチャートが図示されている。さらに
図7には、
図6に表されている不要不急クラスターユニットに属する関連ユニットの退避等の処理の流れを示すフローチャートが図示されている。また
図8には、
図5に表されているクラスターユニット用学習処理の流れを示すフローチャートが図示されている。また
図9には、
図8に表されているクラスターユニット配置変更処理の流れを示すフローチャートが図示されている。
【0058】
図5に示すように、まず本実施形態の学習処理では、ステップS101により新規の学習サンプルを入力情報として取り込む処理が行われる。現在時刻tにおける入力ベクトルx
tとそれに対応する出力y
tである。なお、このステップS101は、単位時刻ごとに実行されるため、学習サンプルが入力されるごとに行われる。当該組み込みシステム10の場合には、学習サンプルの入力情報は、例えば、図略の監視カメラから入力される既知の画像情報である。
【0059】
続くステップS200では出力計算処理が行われる。この処理は、不要不急なユニットをアクセラレータ40から二次記憶装置30に退避させたり、また必要なユニットを二次記憶装置30からアクセラレータ40に読み込んだり、さらには前掲の式(3)の計算を行ったりするものである。このような出力計算処理(サブルーチン)は、そのアルゴリズムが
図6に表されているため、後で
図6を参照しながら詳述する。
【0060】
ステップS103では、ecum=ecum+(yt-y)2により累積誤差ecumが算出される。ytは、学習サンプルの出力であり、yはGRNN50による最終出力である。
【0061】
続くステップS300ではクラスターユニット用学習処理が行われる。この処理は、第iクラスターユニット(クラスターユニットCU)が学習を行うものであり、
図8にアルゴリズムが図示されている。そのため、このようなクラスターユニット用学習処理(サブルーチン)の流れ等についても、後で
図8を参照しながら詳述する。
【0062】
次のステップS105では、次の式(4)で表される集合演算による探索処理が行われる。即ち、この探索処理では、一定数のクラスターユニットCUが集まる集合Cにおいて、新たなサンプル(入力ベクトルxt)が入力された場合に出力が最も大きい(最大発火する)第iクラスターユニットを探す処理である。
【0063】
【0064】
ステップS107では、新規(時刻t)の学習サンプルに対応したユニットを生成する(Ni=Ni∪{t})とともにそれを二次記憶装置30に追加(S2=S2∪{t})する処理が行われる。Niは、第iクラスターユニットに関連付けられたユニットの集合である。またS2は、二次記憶装置30に退避したユニット(スリープユニットSU)の集合である。なお「∪」は、集合に加える意の演算子である。また、iは、出力計算処理(S200)により最大出力を出しているクラスターユニットCUに付与されている番号である。また、ユニットが二次記憶装置30に退避させられた時刻tt
Rは、0(ゼロ)に設定される。なお、本明細書において「XA
B」の表記は、記号Xに対して、Aが下付き記号でありBが上付き記号であることを表す。
【0065】
そして、ステップS109では、現在時刻tを単位時刻だけ進める処理(t=t+1)が行われる。この現在時刻tは、出力計算処理(S200)等において用いられる。ステップS109の処理が終わると、一連の学習処理が完了するため、ステップS101に処理を移行して、再び新規の学習サンプルを取り込む処理が行われる。
【0066】
<出力計算処理>
次に
図6を参照しながら、出力計算処理(S200)について説明する。
図6に示すように、出力計算処理では、まずステップS201により変数α,βをそれぞれ初期化(ゼロクリア)する処理が行われる。この変数α,βは、式(3)の分子(α)と分母(β)に相当するものである。
【0067】
続くステップS203では、前掲の式(4)で表される集合演算による探索処理が行われる。即ち、この探索処理では、一定数のクラスターユニットCUが集まる集合Cにおいて、新たなサンプル(入力ベクトルxt)が入力された現在時刻tにおける出力が最も大きい(最大発火する)第iクラスターユニットを探す処理である。
【0068】
この第iクラスターを探索する処理は、前述のようにクラスターユニット用学習処理(S300)の後で行われる探索処理(S105)と同じである。クラスターユニット用学習処理(S300)によってクラスターユニットCUの集合の構成に変化が生じ得ることから、当該ステップS203により実行される時点で得られる探索結果と、ステップS105により実行される時点で得られる探索結果と、異なる場合がある。そのため、本実施形態では、クラスターユニット用学習処理(S300)が行われる前後においてこのような探索が実行される。なお、本来は式(5)により求められるが、式(4)で求める方が計算量が少なくなるため、本実施形態では、式(4)の演算式により探索処理が行われる。
【0069】
【0070】
ステップS205では、Ac=Ac∪{i}が実行される。Acは、クラスターユニットのうちそれに関連付けられているユニット(関連ユニット)の集合Niのなかの1個以上のユニットがアクセラレータ40に実装されているクラスターユニットCUの集合である。そのため、このステップS205では、ステップS203の探索により見つかった第iクラスターユニットを、集合Acに加える処理が行われる。
【0071】
ステップS207は、ループ処理の一端側であり、他端側のループ端(S213)との間において、現在時刻よりも前の時刻tj*
Rに二次記憶装置30に退避したユニットの集合S2に第iクラスターユニットに関連付けられた関連ユニットが存在している場合にステップS209,S400,S211の各処理を繰り返す。
【0072】
ステップS209では、アクセラレータ40に実装されているユニット(クラスターユニットCUおよびアクティブユニットAU)の数(|S1|)がアクセラレータ40の記憶容量B未満であるか否かを判定する処理が行われる。そして、アクセラレータ40に実装されているユニット数が、記憶容量B未満でない場合には(S209;No)、ステップS400の「不要不急クラスターに属する関連ユニットの退避等の処理」を実行し、記憶容量B未満である場合には(S209;Yes)、ステップS400をスキップする。
【0073】
続く、ステップS211では、ステップS203により見つけられた第iクラスターユニットに関連付けられている関連ユニットを、二次記憶装置30から読み出してアクセラレータ40に実装する処理(S
2=S
2\{j
*},S
1=S
1∪{j
*})が行われる。「\」は、集合から取り除く意の演算子である。なお、ステップS400による「不要不急クラスターに属する関連ユニットの退避等の処理」は、
図7にアルゴリズムが図示されている。これについては後で詳述する。
【0074】
ステップS214では、Ac=Ac\{r}が実行される。rは、不要不急クラスターに属する関連ユニットの退避等の処理(S400)において、探索されるクラスターユニットを示す記号であり、第rクラスターユニットは、クラスターユニットに関連付けられているユニット(関連ユニット)の集合Niのなかの1個以上のユニットがアクセラレータ40に実装されているクラスターユニットCUの集合において、新たなサンプル(入力ベクトルxt)が入力された現在時刻tにおける出力が最も小さいクラスターユニットである。即ち、ステップS214では、このようなクラスターユニットCUの集合から、第rクラスターユニットを除く処理が行われる。
【0075】
ステップS215では、式(3)の分子α、分母βの演算がそれぞれ行われ、さらにステップS217では、式(3)の演算(y=α/β)が行われる。なお「+=」は加算代入演算子である。これにより、GRNN50による最終出力yが得られる。ステップS217の演算処理が終了すると、このような一連の出力計算処理が完了するため、
図5に示す学習処理(メインルーチン)に戻る。
【0076】
<不要不急クラスターの関連ユニット処理>
続いて
図7を参照しながら、不要不急クラスターに属する関連ユニットの退避等の処理(S400)について説明する。なお、以下「不要不急クラスターに属する関連ユニットの退避等の処理」のことを「不要不急クラスターの関連ユニット処理」と省略する。
図7に示すように、不要不急クラスターの関連ユニット処理では、まずステップS401により次の式(6)で表される集合演算による探索処理が行われる。
【0077】
【0078】
即ち、このステップS401では、クラスターユニットのうちそれに関連付けられているユニット(関連ユニット)の集合Niのなかの1個以上のユニットがアクセラレータ40に実装されているクラスターユニットCUの集合において、新たなサンプル(入力ベクトルxt)が入力された現在時刻tにおける出力が最も小さい第rクラスターユニットを探す。このようなクラスターユニットは、現在時刻tにおいては、重要ではなくまた急遽必要になる蓋然性も低い。そのため、このような第rクラスターユニットに関連付けられている関連ユニットが退避の対象になり得る。次のステップS403では、このような第rクラスターユニットについて、式(3)の分子α、分母βの演算がそれぞれ行われる。
【0079】
ステップS405は、ループ処理の一端側であり、他端側のループ端(S409)との間において、第rクラスターユニットに関連付けられている関連ユニットのうちアクセラレータ40に実装されているものについて、二次記憶装置30に退避した時刻ti
Rを現在時刻に設定する(S407)。これにより、前述した第1のパターンにおいて、当該第rクラスターユニットの関連ユニットが二次記憶装置30からアクセラレータ40に読み込まれて実装される際に、二次記憶装置30に退避した時刻ti
Rにおける入力情報に対する計算が行われているか否かを容易に判定することが可能になる。
【0080】
続く、ステップS411では、ステップS401により見つけられた第rクラスターユニットに関連付けられている関連ユニットのうちアクセラレータ40に実装されているものについて、アクセラレータ40から二次記憶装置30に退避させる処理(S2=S2∩{Nr∩S1},S1=S1\{Nr∩S1})が行われる。
【0081】
なお、ステップS401において、関連ユニットの集合Niのなかの1個以上のユニットが、アクセラレータ40に実装されているクラスターユニットCUの集合で唯一1個になるまで削減された場合には、このようなクラスターユニットCUは、ステップS203で探索される第iクラスターユニットに一致することになる。この場合、このクラスターユニットCUに関連付けられている関連ユニットの数は、アクセラレータ40の記憶容量Bよりも大きいことを意味する。
【0082】
このような場合であっても不要不急クラスターの関連ユニット処理(S400)では、ステップS403で計算済みとなったユニットをアクセラレータ40から二次記憶装置30に退避させる(S411)。そして、ステップS209(|S1|<B;Yes)→ステップS211→ステップS213によって未計算の関連ユニットが二次記憶装置30から読み込まれる。したがって、クラスターユニットCUに関連付けられている関連ユニットの数がアクセラレータ40の記憶容量Bよりも大きい場合であっても正確に出力計算が実行される。
【0083】
換言すると、ステップS401で探索された第rクラスターユニットに関連付けられてアクセラレータ40に実装されている関連ユニットは、すべて二次記憶装置30に退避されてアクセラレータ40から第rクラスターユニットが取り除かれる。これにより、アクセラレータ40の記憶容量Bに生じた空き領域には、ステップS207→ステップS209(|S1|<B;Yes)→ステップS211によって、ステップS203で探索される第iクラスターユニットに関連付けられている関連ユニットがアクセラレータ40の記憶容量Bが満杯になるまで二次記憶装置30から読み込まれる(実装される)。
【0084】
そして、アクセラレータ40が満杯になるたびに、再びステップS401により探索された第rクラスターユニットに関連付けられている関連ユニットが二次記憶装置30に退避される。したがって、第iクラスターユニットに関連付けられていないユニットは、アクセラレータ40から完全に排除されてしまう場合があり、このような場合には、S203で探索された第iクラスターユニットと、二次記憶装置30に唯一残った第rクラスターユニットと、が一致することになる。
【0085】
なお、第rクラスターユニットに関連付けられている関連ユニットの数が、アクセラレータ40の記憶容量Bを超えるときには、前述したステップS214により、アクセラレータ40に実装されているクラスターユニットCUの集合から、このような第rクラスターユニットは取り除かれる。そして、未だ計算されていないユニットが二次記憶装置30から読み込まれて計算の対象になる。
【0086】
ステップS411の処理が終了すると、このような一連の不要不急クラスターの関連ユニット処理が完了するため、
図6に示す出力計算処理に移行する。
【0087】
<クラスターユニット用学習処理>
次に
図8を参照しながら、クラスターユニット用学習処理(S300)について説明する。
図8に示すクラスターユニット用学習処理は、[先行技術文献]の欄の特許文献1(特開2012-98971号公報)に開示されているLGRNN(Limited General Regression Neural Network)の学習方法を活用したものである。なお、当該特許文献1は、本件出願人による特許出願に係る公開公報であり、発明者は本件の筆頭発明者である。
【0088】
この学習方法は、元々限られた個数のユニット(カーネル)で追記学習を可能にするものであり、この学習モデルによる学習を継続することにより自ずとユニット(カーネル)の配置が疎になるように再配置される。冗長なユニットは、互いに発火領域が大きく重なり得ることから、再配置を繰り返すことによって近接したユニットが存在しなくなる結果、ユニットの配置が疎になるからである。このように入力層においてユニットの配置が疎になることは、本実施形態の学習装置や学習方法にとっては望ましい。
【0089】
ユニットの配置において一部分が「密」で他部分が「疎」というようにユニットの配置にバラツキがある場合には、例えば、あるクラスターユニットCUが反応する範囲は広く、別のクラスターユニットCUが反応する範囲が狭いというような現象が生じ得る。すると、それぞれのクラスターユニットCUに関連付けられている関連ユニットの個数にもバラツキが生じてしまうことから、このようなバラツキによる関連ユニットの個数差が極端に大きくなると、クラスターという一定の集まりに分けて関連ユニットを分散させることが困難になる。これは、二次記憶装置30から読み込まれるユニットの個数を絞り込むことができないことに繋がる。そのため、ユニットは万遍なく配置されている方が本実施形態の学習装置や学習方法にとって好適であるといえる。
【0090】
図8に示すように、クラスターユニット用学習処理では、まずステップS301により、アクセラレータ40に実装されているクラスターユニットCUのユニット数がアクセラレータ40の記憶容量B以下であるか否かを判定する処理が行われる。ユニット数がアクセラレータ40の記憶容量B以下でないと判定された場合には(S301;No)、現在実装されている適当なクラスターユニットCUを選んでそれと置き換えを行う必要がある。そのため、次のステップS303により最も冗長なクラスターユニットCUを探す処理が行われる。
【0091】
ステップS303により冗長ユニットを探す処理は、i*=argmini{δi}による探索処理により行われる。冗長度δiは、次式(7)により求められ、最も小さいものが置き換え対象として選出される。即ち、式(8)により冗長度δiの値が最も小さいクラスターユニットCUを探す処理がステップS303により行われる。これにより、冗長度δiが最も小さいクラスターユニットCUを置き換えの対象にする。冗長度δiが小さいクラスターユニットCUは、受容野RFが大きくないことから、入力情報に対してユニットが反応するために必要な空間が狭くなるからである。
【0092】
【0093】
【0094】
これに対して、ユニット数がアクセラレータ40の記憶容量B以下であると判定された場合には(S301;Yes)、アクセラレータ40のRAMにはクラスターユニットCUを実装する余裕があるので、ステップS302に移行して新たなクラスターユニットCUを追加、つまり新規ユニットの追加処理を行い、追記学習を行う。この処理は、
図1に示す新規ユニット追加モジュール63により行われる。
【0095】
ステップS305では、ステップS303で探したクラスターユニットCUに対して、無視(e
ignore)や置き換え処理(e
replace)について予測誤差を求める処理を行う。この処理は、
図1に示す予測誤差計算モジュール61により行われる。置き換え処理による予測誤差e
replaceは、特許文献1(特開2012-98971号公報)に開示されている[数13]の式(13)により定義され、また無視による予測誤差e
ignoreは、同特許文献1に開示されている[数15]の式(15)により定義されている。そして、ステップS305によりそれぞれの予測誤差が算出されると、続くステップS307によって、予測誤差の最も小さいものに対応する処理(置き換え処理(Replace処理)、無視(Ignore))を選択する処理が行われる。この処理も
図1に示す予測誤差計算モジュール61により行われる。
【0096】
そして、ステップS307によりReplace処理が選択された場合には(S309;Replace)、ステップS309によりReplace処理(t
j
R=t,S
2=S
2∪{j},C=C\{j},C=C∪{t},S
1=S
1∪{t})が実行された後、クラスターユニット配置変更処理(S500)が行われる。このステップS500によるクラスターユニット配置変更処理は、
図9にアルゴリズムが図示されている。これについては次に説明する。
【0097】
また、ステップS307により、Ignoreが選択された場合には(S307;Ignore)、今回の学習サンプルに対して追記学習を行うことなく無視する。このようにして一連のクラスターユニット用学習処理が完了すると、
図5に示す学習処理に戻る。なお、ステップS309のReplace処理により置き換えの対象になったクラスターユニットCUは、新しいユニットとしてそのガウスカーネル関数に掛け合わされる係数(y
tk(x
t,・))等が置き換わる。なお、このような係数等が置き換えられる場合においても、第jクラスターユニットのパラメータを二次記憶装置30に退避させる必要はない。本実施形態では、すべての学習サンプルを二次記憶装置30に保存しているからである。
【0098】
<クラスターユニット配置変更処理>
続いて
図9を参照しながら、クラスターユニット配置変更処理(S500)について説明する。クラスターユニット配置変更処理(S500)は、前述したクラスターユニットCUの置き換え処理(Replace処理)(S309)が行われた場合等に行われる。クラスターユニットCUが置き換わると、それに関連付けられている関連ユニットもその所属が変更される。
【0099】
そこで、クラスターユニット配置変更処理(S500)によって、すべてのユニットについてクラスターユニットの配属の更新を行う。つまり、第iクラスターユニットに関連付けられているユニットの集合Niを作り直す。これは、二次記憶装置30に格納されているすべての関連ユニットについて行う必要があるため、二次記憶装置30の関連ユニットをすべて一旦アクセラレータ40に読み込んで集合Niを更新する。
【0100】
即ち、
図9に示すように、クラスターユニット配置変更処理では、まずステップS501により、すべてのクラスターユニットについて、それらに関連付けられているユニットの集合N
iや、1個以上のユニットがアクセラレータ40に実装されているクラスターユニットCUの集合A
cを、空(無)にする。
【0101】
ステップS503は、ループ処理の一端側であり、他端側のループ端(S525)との間において、アクセラレータ40に読み込まれたクラスターユニットが存在している場合にステップS505~S523の各処理を繰り返す。
【0102】
ステップS505は、別のループ処理の一端側であり、他端側の別のループ端(S513)との間において、アクセラレータ40に読み込まれたクラスターユニット以外のすべてのユニットについてステップS507,S509,S511の各処理を繰り返す。
【0103】
ステップS507では、次の式(9)で表される集合演算による探索処理が行われる。即ち、この探索処理では、一定数のクラスターユニットCUが集まる集合Cにおいて、関連ユニットに最も近い(新たなサンプルが入力された現在時刻tにおける出力が最も大きい)第iクラスターユニットを探す処理である。
【0104】
【0105】
ステップS509では、ステップS507により探索された第iクラスターユニットに関連付けられている関連ユニットの集合Ni*に関連ユニットを追加し、さらにステップS511により二次記憶装置30に退避させる時刻tj
Rとして現在時刻tを設定する。ループ端(S505)~ループ端(S513)の間においては、クラスターユニットCUとそれに関連付けられる関連ユニットを探す処理が一定数のクラスターユニットの集合Cに対して繰り返し行われる。
【0106】
このようにして探索された関連ユニットは、ステップS515により二次記憶装置30に退避される。即ち、クラスターユニット以外のユニット(関連ユニット)は、アクセラレータ40から退避させられて二次記憶装置30に格納される(S2=S2∩{S1\C})。一方、クラスターユニットは、アクセラレータ40に実装される(S1=C)。
【0107】
ステップS517は、ループ処理の一端側であり、他端側のループ端(S523)との間において、まだ所属を変更していないユニットが二次記憶装置30に格納されている場合にステップS519~S523の各処理を繰り返す。
【0108】
ステップS519では、アクセラレータ40に読み込まれているユニットの合計サイズがアクセラレータ40の記憶容量未満であれば(S519;Yes)、ステップS521により、二次記憶装置30に格納されているユニットをアクセラレータ40に読み込む。このような処理が二次記憶装置30に格納されているユニットがなくなるまで繰り返し行われる。
【0109】
このように本実施形態の組み込みシステム10に組み込まれる学習装置や学習方法においては、二次記憶装置30を備えることから、アクセラレータ40の記憶容量以上の学習を行うことが可能になる。これにより、特許文献1(特開2012-98971号公報)に開示されているLGRNNに比べて、記憶容量の制限に起因した汎化能力の限度がほぼなくなり得ると考えられる。本願発明者らは、これを確認するために次の検証実験を行った。
【0110】
ここで、検証実験(ベンチマークテスト)による結果を説明する。なお、
図11および
図12には、学習サンプルを「Concrete」に設定した結果(
図11(A))、「servo」に設定した結果(
図11(B))、「housing」に設定した結果(
図12(A))、「hearta1」に設定した結果(
図12(B))、がそれぞれ図示されている。
【0111】
ベンチマークテストに使用したデータセット(学習サンプル)の諸元は次の通りである。ベンチマークテスト用のデータセットについて、データを1つずつシステムに提示して認識と学習を行わせる。まず、認識フェーズにおいて出力計算を行い、この時点で誤差を計測する。この誤差は累積誤差として蓄積されるため、この累積した誤差の値がどれほど小さいかにより評価する。このように累積誤差を計測した後、与えられている学習サンプルを学習する。データセットの一覧は次の通りである。
【0112】
<データセットの一覧>
データセット名 サイズ 入力数 出力数
Concrete 1030 7 1
servo 167 12 1
housing 501 13 1
hearta1 460 15 1
【0113】
なお、実験では、アクセラレータ40の記憶容量Bはユニット30個分とし(B=30)、またクラスターユニットCUの個数は6にしている。また、カーネルの分散の値は、σ=1にしている。データは、各次元ともに[0,1]で正規化している。
【0114】
実験は50個のデータの提示順序を変えながら繰り返し行い、結果は50回で平均している。
図11および
図12に実験結果を示す。これらの図において、実線により表されている累積誤差の特性カーブは、組み込みシステム10に組み込まれた学習装置や学習方法(以下「本実施形態の学習法」という)によるものであり、破線により表されている累積誤差の特性カーブは、特許文献1のLGRNNによるものである。また、一点鎖線により表されている累積誤差の特性カーブは、次に説明する改変例によるものである。
【0115】
この改変例は、学習を予定しているサンプル数に対してアクセラレータ40のRAMが十分な記憶容量Bを有する場合に行われる出力計算処理(
図10参照)である。
図10には、改変例による出力計算処理の流れを示すフローチャートが図示されている。なお、
図10においては、
図6の出力計算処理と実質的に同一の処理ステップについては、
図6と同一の符号を付して説明を省略する。
【0116】
即ち、
図10に示す改変例の出力計算処理では、外側のループ処理(S701,705)により、次の3つの条件(イ)~(ハ)がすべて満たされている間は、ステップS703,S205,S214の各処理およびS207~S213のループ処理を行う。
(イ)アクセラレータ40に実装されているユニット(クラスターユニットCUおよびアクティブユニットAU)の数(|S
1|)がアクセラレータ40の記憶容量B未満である。
(ロ)ステップS214で処理される{r}が空集合である。
(ハ)クラスターユニットのうち自分に関連付けられている関連ユニットが1つでもアクセラレータ40に実装されているものの集合(A
c)がクラスターユニットの集合(C)ではない。
【0117】
即ち、アクセラレータ40に実装されているユニットの数(|S1|)がアクセラレータ40の記憶容量B未満でなくなるまで(記憶容量B以上になるまで)、または不要不急クラスターに属する関連ユニットの退避等の処理(S400)が一度でも実行されるまで、またはクラスターユニットに関連付けられている関連ユニットがすべてアクセラレータ40に読み込まれるまでは、ステップS703,S205,S214の各処理およびS207~S213のループ処理が実行される。
【0118】
ステップS703では、次の式(10)で表される集合演算による探索処理が行われる。クラスターユニットのうちそれに関連付けられているユニット(関連ユニット)の集合Niのなかの1個以上のユニットがアクセラレータ40に実装されているクラスターユニットの集合Acを、除いたクラスターユニットCUの集合において、新たなサンプル(入力ベクトルxt)が入力された現在時刻tにおける出力が最も大きい(最大発火する)第iクラスターユニットを探す処理が行われる。
【0119】
【0120】
そして、見つけられた第iクラスターユニットがステップS205により集合Acに加えられて、現在時刻よりも前の時刻tj*
Rに二次記憶装置30に退避したユニットの集合S2に第iクラスターユニットに関連付けられた関連ユニットが存在している場合に、ステップS209,S400,S211の処理を繰り返す(S207,S213)。
【0121】
これにより、アクセラレータ40の記憶容量Bが満杯になるまで、計算対象となるユニットに対応するクラスターユニットの数を増やすことが可能になるため、累積誤差を小さくすることができる。このことは、
図11および
図12において一点鎖線により表されている累積誤差の特性カーブからもわかるように、検証実験の結果として、改変例の方が累積誤差が比較的小さくなる傾向にあることが判明しており、本改変例の有効性が示されている。
【0122】
図11および
図12に示すように、実線で表されている本実施形態の学習法や一点鎖線で表されている改変例の学習法の方が、特許文献1のLGRNNによるものよりも累積誤差が小さく良好な結果が得られていることがわかった。また改変例の学習法については、データセットがservoの場合を除いて、本実施形態の学習法よりも優れた結果が得られた。このような結果は、本実施形態の学習法やその改変例の学習法が汎化能力の向上に寄与していることを示している。
【0123】
即ち、本実施形態の組み込みシステム10が、工場で生産される製品ごとに品質管理を行い得る品質管理システムとして機能する場合には、例えば、生産される製品に変更が生じたり、少量他品種の製品がランダムに生産されたりする生産現場においても、本実施形態の学習法やその改変例の学習法を用いることによって、検査対象の変動に対して動的に対応し得ることを示している。つまり、本実施形態の学習法やその改変例の学習法は、検査対象の変動に対する新しい学習をその生産現場で行うことが可能であるため、例えば、ディープラーニングのように予め学習したものをシステムに組み込んでから生産現場に導入されるものと比較して非常に使い勝手がよい。
【0124】
なお、本明細書において用いた特有の表記についてまとめると次のようになる。
S1 … アクセラレータ40に実装されている(RAMに常駐または読み込まれているユニットの集合である。
S2 … 二次記憶装置30に退避しているユニットの集合である。
Ni … 第iクラスターユニットに関連付けられている関連ユニットの集合である。
C … クラスターユニットの集合である。集合を構成するユニットの数は予め定められおり一定である。
B … アクセラレータ40の記憶容量である。本実施形態では、単位はユニット数である。
Ac … クラスターユニットのうち、自分に関連付けられている関連ユニットが1つでもアクセラレータ40に実装されているものの集合である。
tt
R … 二次記憶装置30に退避している第iユニットの二次記憶装置30に退避した時刻である。
【0125】
以上説明したように、本実施形態に係るニューラルネットワークの学習装置や学習方法によると、GRNN50を構成し得る複数のニューロンユニットのうち所定入力(入力ベクトル)に対して発火するクラスターユニットCUをアクセラレータ40のRAMに常駐するように実装し(第1手段)、当該クラスターユニットCUに関連付けられている1つ以上の関連ユニットをアクセラレータ40のRAMに一時的(非常駐で)実装したり二次記憶装置30に退避させたりする(第2手段)。
【0126】
これにより、アクセラレータ40のRAMには、GRNN50を構成し得る複数のニューロンユニットのうち、所定入力に対して発火するクラスターユニットCUだけをアクセラレータ40のRAMに常駐させるため、GRNN50を構成し得る複数のニューロンユニットのすべてをアクセラレータ40のRAMに常駐(実装)させる必要がない。また、クラスターユニットCUに関連付けられている1つ以上の関連ニューロンユニットは、必要なときに二次記憶装置30から読み出されてアクセラレータ40のRAMに非常駐で実装されることから(アクティブユニットAU)、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。さらに、このような1つ以上の関連ニューロンユニットは、不必要なときには二次記憶装置30に退避させられることから(スリープユニットSU)、不要な関連ニューロンユニットがアクセラレータ40のRAMに常駐することにより実装可能領域が減少することも抑制される。したがって、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においても、未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0127】
また、本実施形態に係るニューラルネットワークの学習装置や学習方法によると、(1) クラスターユニットCUをアクセラレータ40のRAMに常駐させるとともに関連ニューロンユニットをスリープユニットSUとして二次記憶装置30に退避させている場合、所定入力があるとスリープユニットSUを二次記憶装置30から読み出してアクセラレータ40のRAMに実装する。また、(2) クラスターユニットCUをアクセラレータ40のRAMに常駐させるとともに関連ニューロンユニットがアクティブユニットAUとしてアクセラレータ40のRAMに実装されている場合、所定入力がなく且つアクセラレータ40のRAMの実装可能領域が不足しているときには、関連ニューロンユニットをアクセラレータ40のRAMから二次記憶装置30に退避させる(スリープユニットSU)。
【0128】
これにより、二次記憶装置30に退避していたスリープユニットSUは、所定入力があるとアクセラレータ40のRAMにアクティブユニットAUとして実装されるため、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。また、アクセラレータ40のRAMに実装されていた関連ニューロンユニットは、所定入力がなく且つアクセラレータ40のRAMの実装可能領域が不足しているときにはスリープユニットSUとして二次記憶装置30に退避させられるため、アクセラレータ40のRAMの実装可能領域が減少することも抑制される。したがって、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)においても、未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0129】
さらに、本実施形態に係るニューラルネットワークの学習装置や学習方法によると、クラスターユニットCUをアクセラレータ40のRAMに常駐させるとともに関連ニューロンユニットを二次記憶装置30に退避させている場合において、1つ以上の関連ニューロンユニットの合計実装サイズがアクセラレータ40のRAMの実装可能領域を超えているときには、関連ニューロンユニットの集まりを実装可能領域に収まる実装サイズの複数の集まりに分割し、複数の集まりのそれぞれごとに異なるタイミングでアクセラレータ40のRAMに実装する。
【0130】
これにより、二次記憶装置30に退避していた1つ以上のスリープユニットSUの合計実装サイズがアクセラレータ40のRAMの実装可能領域を超えている場合においては、1つ以上のスリープユニットSUは複数の集まりに分割されてそれぞれごとに異なるタイミングでアクセラレータ40のRAMにアクティブユニットAUとして実装されるので、このような場合においても、枝刈りによりニューロンユニットが削除されてその機能を喪失することもない。したがって、二次記憶装置30に退避していた1つ以上のスリープユニットSUの合計実装サイズがアクセラレータ40のRAMの実装可能領域を超えている場合であっても、コスト的やスペース的にハードウェア構成の制約が厳しい分野の製品(例えば、家電製品や小型機器製品等)において未知の環境下における人工知能の能力低下を抑制することが可能になる。
【0131】
さらにまた、本実施形態に係るニューラルネットワークの学習装置や学習方法によると、クラスターユニットCUは、GRNN50の入力層において当該入力層に入力される複数種類の情報に対してほぼ偏りなく疎に配置される。例えば、入力層に2種類の情報x,yが入力されそれぞれの情報x,yの大きさや強さにより表現可能なx,y平面において、クラスターユニットCUはほぼ偏りなく疎に配置される。
【0132】
これにより、例えば、クラスターユニットCUが密に配置されている場合に比べて、異なるクラスターユニットCUが代わる代わる発火する可能性が低くなる。そのため、クラスターユニットCUの発火に伴う関連ニューロンユニットの読込み回数や、他のクラスターユニットCUの発火に伴う関連ニューロンユニットの退避回数を減らすことが可能になる。また、例えば、クラスターユニットCUの配置が疎であってもそれが一部の範囲に偏っている場合に比べて、クラスターユニットCUの発火に伴う関連ニューロンユニットの読込み回数や他のクラスターユニットCUの発火に伴う関連ニューロンユニットの退避回数が一部において増減したり残部において減増したりする可能性を低減することができる。したがって、クラスターユニットCUが密に配置されていたり一部の範囲に偏って疎に配置されていたりする場合に比べて、関連ニューロンユニットの読込みや退避の回数が全般的または部分的に増えることが抑制されることから、GRNN50が実装されている組み込みシステム10の追記学習に伴う情報処理負荷が低減し、当該組み込みシステム10の処理速度の低下を抑制することが可能になる。
【0133】
なお、上述した実施形態では、本発明に係るニューラルネットワークの学習装置や学習方法を、機器装置ではなくシステム(組み込みシステム10)に組み込んだが、本発明の適用対象はシステムに限られることはなく、家電製品や小型機器製品等の機器装置も含まれる。つまり、本発明に係るニューラルネットワークの学習装置や学習方法は、家電製品や小型機器製品等の機器装置に適用して組み込んでもよく、この場合においても、上述した組み込みシステム10と同様に本発明に特有の作用や効果を得ることが可能である。また、パーソナルコンピュータやワークステーションに適用して組み込んでもよい。
【0134】
また、上述した実施形態では、情報処理装置として、アクセラレータ40にGRNN50が実装される場合を例示して説明したが、組み込みシステム10の制御装置20にGRNN50を実装してもよい。この場合には、制御装置20のRAMにクラスターユニットCU等が実装されることなるが、上述した組み込みシステム10と同様に本発明に特有の作用や効果を得ることが可能である。
【0135】
さらに、上述した実施形態では、補助記憶装置として、DRAMが搭載された二次記憶装置30が用いられる場合を例示して説明したが、データの書き込み速度や読み出し速度等が問題にならないケースであれば、HDD(ハードディスク(磁気ディスク)装置)を備えた二次記憶装置を補助記憶装置として用いてもよい。
【0136】
以上、本発明の具体例を詳細に説明したが、これらは例示に過ぎず、特許請求の範囲を限定するものではない。特許請求の範囲に記載の技術には、上述した具体例を様々に変形または変更したものが含まれる。また、本明細書または図面に説明した技術要素は、単独であるいは各種の組合せによって技術的有用性を発揮するものであり、出願時の請求項に記載の組合せに限定されるものではない。さらに、本明細書または図面に例示した技術は、複数の目的を同時に達成するものであり、そのうちの一つの目的を達成すること自体で技術的有用性を持つ。なお、[符号の説明]の欄における括弧内の記載は、上述した各実施形態で用いた用語と、特許請求の範囲に記載の用語との対応関係を明示し得るものである。
【符号の説明】
【0137】
10…組み込みシステム(情報処理装置)
20…制御装置
30…二次記憶装置(補助記憶部)
40…アクセラレータ(学習装置、主記憶部、第1手段、第2手段)
50…GRNN
60…CU学習モジュール
AL…加算層
AU…アクティブユニット(関連ニューロンユニット)
CU…クラスターユニット(特定ニューロンユニット)
SU…スリープユニット(関連ニューロンユニット)
RF…受容野