(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2024-04-18
(45)【発行日】2024-04-26
(54)【発明の名称】情報処理装置、情報処理方法およびプログラム
(51)【国際特許分類】
G06N 3/08 20230101AFI20240419BHJP
G06N 20/00 20190101ALI20240419BHJP
【FI】
G06N3/08
G06N20/00
(21)【出願番号】P 2020038120
(22)【出願日】2020-03-05
【審査請求日】2023-03-03
(73)【特許権者】
【識別番号】000001007
【氏名又は名称】キヤノン株式会社
(74)【代理人】
【識別番号】110003281
【氏名又は名称】弁理士法人大塚国際特許事務所
(72)【発明者】
【氏名】小松 和志
【審査官】武田 広太郎
(56)【参考文献】
【文献】特開2019-096285(JP,A)
【文献】再公表特許第2017/154284(JP,A1)
【文献】再公表特許第2017/138220(JP,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
G06N 20/00
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークの構成を特定する情報と当該ニューラルネットワークにおける演算最大回数とを含んだ、前記ニューラルネットワークの構成を拘束する1つ以上の拘束条件を指定する指定手段と、
前記指定された拘束条件に基づいて構成されるニューラルネットワークの演算を実行する処理手段と、を有し、
前記処理手段は、ニューラルネットワークを学習させる際に、前記指定された拘束条件のもとでそれぞれのニューラルネットワークを学習させ、前記指定された拘束条件のもとで学習された学習済みモデルのなかの所定の学習済みモデルを推論用に採用する、ことを特徴とする情報処理装置。
【請求項2】
前記演算最大回数は、前記ニューラルネットワークの演算を実行する際に必要な積和演算の演算回数を表す、ことを特徴とする請求項1に記載の情報処理装置。
【請求項3】
前記ニューラルネットワークの積和演算は、当該ニューラルネットワークの同一の値の重み係数を適用する入力同士をあらかじめ加算したうえで当該重み係数を乗算する演算を含む、ことを特徴とする請求項2に記載の情報処理装置。
【請求項4】
前記処理手段は、前記指定された拘束条件のもとで学習された学習済みモデルのなかで、学習済みモデルの最適化度合いを評価するための評価値が所定の評価値より低い学習済みモデルを前記所定の学習済みモデルとして選択する、ことを特徴とする請求項1から3のいずれか1項に記載の情報処理装置。
【請求項5】
前記処理手段は、前記指定された拘束条件のもとで学習された学習済みモデルのなかで、他の学習済みモデルより演算回数の少ない学習済みモデルを前記所定の学習済みモデルとして選択する、ことを特徴とする請求項1から4のいずれか1項に記載の情報処理装置。
【請求項6】
前記ニューラルネットワークの構成を特定する情報は、当該ニューラルネットワークの入力層のノード数、当該ニューラルネットワークの出力層のノード数、当該ニューラルネットワークを構成する層の数、当該ニューラルネットワークの隠れ層それぞれのノード数、の少なくとも一部を含む、ことを特徴とする請求項1から4のいずれか1項に記載の情報処理装置。
【請求項7】
前記ニューラルネットワークの重み係数は量子化された重み係数を含む、ことを特徴とする請求項1から6のいずれか1項に記載の情報処理装置。
【請求項8】
指定手段が、ニューラルネットワークの構成を特定する情報と当該ニューラルネットワークにおける演算最大回数とを含んだ、前記ニューラルネットワークの構成を拘束する1つ以上の拘束条件を指定する指定工程と、
処理手段が、前記指定された拘束条件に基づいて構成されるニューラルネットワークの演算を実行する処理工程と、を有し、
前記処理工程では、ニューラルネットワークを学習させる際に、前記指定された拘束条件のもとでそれぞれのニューラルネットワークを学習させ、前記指定された拘束条件のもとで学習された学習済みモデルのなかの所定の学習済みモデルを推論用に採用する、ことを特徴とする情報処理方法。
【請求項9】
コンピュータを、請求項1から7のいずれか1項に記載の情報処理装置の各手段として機能させるためのプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、情報処理装置、情報処理方法およびプログラムに関する。
【背景技術】
【0002】
従来、機械学習における演算を効率化するため、当該機械学習における演算において行列演算を最適化する技術が知られている(特許文献1)。特許文献1では、ニューラルネットワークの積和演算について、複数の入力値に対して各重み係数で積和演算する際に、同じ入力値同士をラベリングして複数の乗算器へ並列に入力して積算することで、演算時間の短縮を図る技術を開示している。
【先行技術文献】
【特許文献】
【0003】
【発明の概要】
【発明が解決しようとする課題】
【0004】
上述の従来技術では、推論器に搭載された積和演算器の数を上回る同一の値が入力される場合、一度の並列演算で積和演算を行うことができないため、演算に必要な時間を見積もることが難しい場合がある。例えば、デジタルカメラなどリアルタイム性の要求される装置では、推論器による処理をリアルタイムに完了させることが望まれる場合がある。このような装置で用いられる推論器には、行列演算の最適化による演算の高速化に加え、所定の時間内で演算を終了させることが可能な技術が望まれる。
【0005】
本発明は、上記課題に鑑みてなされ、その目的は、ニューラルネットワークのための演算を所定の時間内で終了させるように学習させた推論器を備えることが可能な技術を実現することである。
【課題を解決するための手段】
【0006】
この課題を解決するため、例えば本発明の情報処理装置は以下の構成を備える。すなわち、ニューラルネットワークの構成を特定する情報と当該ニューラルネットワークにおける演算最大回数とを含んだ、前記ニューラルネットワークの構成を拘束する1つ以上の拘束条件を指定する指定手段と、前記指定された拘束条件に基づいて構成されるニューラルネットワークの演算を実行する処理手段と、を有し、前記処理手段は、ニューラルネットワークを学習させる際に、前記指定された拘束条件のもとでそれぞれのニューラルネットワークを学習させ、前記指定された拘束条件のもとで学習された学習済みモデルのなかの所定の学習済みモデルを推論用に採用する、ことを特徴とする。
【発明の効果】
【0007】
本発明によれば、ニューラルネットワークのための演算を所定の時間内で終了させるように学習させた推論器を備えることが可能になる。
【図面の簡単な説明】
【0008】
【
図1】本実施形態における情報処理装置の一例としてのパーソナルコンピュータ(PC)の機能構成例を示すブロック図
【
図2】ニューラルネットワークが有する複数の層のうちの1つの層における演算処理を模式的に示す図
【
図3】本実施形態における重み係数の量子化について説明するための図
【
図4】本実施形態における重み係数の量子化前後の効果の一例を示す図
【
図5】実施形態1における学習時の一連の動作を示すフローチャート
【
図6】実施形態2における学習時の一連の動作を示すフローチャート
【発明を実施するための形態】
【0009】
(実施形態1)
以下、添付図面を参照して実施形態を詳しく説明する。なお、以下の実施形態は特許請求の範囲に係る発明を限定するものではない。実施形態には複数の特徴が記載されているが、これらの複数の特徴の全てが発明に必須のものとは限らず、また、複数の特徴は任意に組み合わせられてもよい。さらに、添付図面においては、同一若しくは同様の構成に同一の参照番号を付し、重複した説明は省略する。
【0010】
以下では情報処理装置の一例として、ニューラルネットワークを用いた学習の可能なパーソナルコンピュータ(PC)を用いる例を説明する。なお、以下に示す実施形態は、PCに限らず、ニューラルネットワークを用いた学習が可能な他の機器にも適用可能である。これらの機器には、例えば、スマートフォンを含む携帯電話機、ゲーム機、タブレット端末、時計型や眼鏡型の情報端末、医療機器、監視システムや車載用システムの機器、データセンタで動作するサーバ機器などが含まれてよい。
【0011】
以下の実施形態に係るPCは、ニューラルネットワークで構成される推論器を用いて、機械学習を用いた学習及び推論処理を行う。本実施形態では、推論器を構成するニューラルネットワークを所定の条件で拘束して学習させることにより構成し、構成された行列演算を推論処理で行うことにより、演算時間を短縮し且つ所定の時間内に推論器の演算を完了させることを可能にする。
【0012】
(PCの構成)
図1は、本実施形態の情報処理装置の一例としてのPCの機能構成例を示すブロック図である。なお、
図1に示す機能ブロックの1つ以上は、ASICやプログラマブルロジックアレイ(PLA)などのハードウェアによって実現されてもよいし、CPUやGPU等のプログラマブルプロセッサがソフトウェアを実行することによって実現されてもよい。また、ソフトウェアとハードウェアの組み合わせによって実現されてもよい。従って、以下の説明において、異なる機能ブロックが動作主体として記載されている場合であっても、同じハードウェアが主体として実現されうる。
【0013】
システムバス101は、PC100内の各ブロック間の情報のやり取りを行うためのデータバスである。CPU102は、PC100の各ブロックの制御および外部との入出力に対する制御を行う中央演算処理装置である。CPU102は、ROM103に格納されたコンピュータプログラムをRAM104に展開し、実行することによりPC100の全体動作及び各構成要素の動作を制御する。
【0014】
ROM103は、Read Only Memoryであり、例えばEEPROMなどの不揮発性の半導体メモリで構成され、例えばCPU102がPC100を制御するコンピュータプログラムを格納している。RAM104は、Random Access Memoryであり、例えばDRAMなどの揮発性の半導体メモリである。RAM104は、CPU102のほか、PC100内の各ブロックにより、必要に応じて一時記憶としての情報の置き場所として使用される。これらの情報は、例えば、プログラムの実行に関する情報や、プログラムの実行後の結果情報や、機械学習に係る各種演算の入出力情報が含まれる。
【0015】
HDD105は、Hard Disk Driveである。PC100内の各ブロックにより、必要に応じて長期記憶としての情報置き場所として使用される。HDD105に格納される情報は、例えば、機械学習における学習モデルや学習済みモデルなどが含まれる。本実施形態では、HDDを一例として説明するが、ストレージとして用いることができれば、例えばSSDなどの半導体メモリを用いたものであってもよい。また、RAM104の代替手段としてHDD105を使用してもよい。
【0016】
GPU106は、Graphics Processing Unitであり、例えば機械学習の学習時或いは推論時の演算に使用される。GPU106は、情報をより多く並列処理することで効率的な演算を行うことができる。このため、GPU106は、機械学習のような学習モデルを用いて複数回に渡って繰り返し演算を行う場合に有効である。本実施形態では、機械学習に係る演算を行うためにCPU102に加えてGPU106を用いる。例えば、学習モデルを含むプログラムを実行する場合には、CPU102とGPU106とが協働して演算を行うことで学習や推論の処理を実行する。
【0017】
入力部108は、例えば、パーソナルコンピュータで使用されるキーボードやマウスを含み、PC100を使用するユーザからの操作指示を受け付ける。表示部109は、例えばモニターやそれに準ずる表示装置の画面表示を制御する。表示部109は、モニターなどの表示装置そのものを含んでもよい。画面表示は、PC100を使用するユーザからの操作指示に対する動作状態の表示や、操作用のメニュー表示、各種アプリケーションの表示などを含む。
【0018】
(ニューラルネットワークに係る演算処理)
次に、
図2を参照して、機械学習に用いられるニューラルネットワークの演算処理について説明する。
図2は、本実施形態に係る1つの推論器を構成するニューラルネットワークが有する複数の層のうちの1つの層における演算処理を模式的に示している。なお、ニューラルネットワークは、例えば、
図2に図示される層を1つ又は複数用いることにより隠れ層(中間層といわれる場合もある)を形成し、その隠れ層の前段に入力層、隠れ層の後段に出力層とを有する構成をなす。入力層は、当該ニューラルネットワークへ入力される情報が入力される層を形成し、また、出力層は、ニューラルネットワークの出力値(例えば、推論結果を示す出力値など)を出力する層を形成する。
【0019】
ノード201~205は、それぞれニューラルネットワークのノードを表す。ノード202~205は、入力用のノード(或いは前段の層を形成するノード)を表しており、「1」で識別されるノード(ノード201)は入力値に対するバイアス値を表現するためのノードを表している。入力用の各ノードからノード210~212へ引かれた線に付された係数は、入力用のノードに入力された信号に乗算される重み係数を表す。すなわち、各入力用のノードから入力された入力値X1~X4には重み係数である係数が乗算されて、ノード210~212へ入力される。この演算は例えば、式1のような行列演算で表される。
【0020】
【数1】
式1に示すY1~Y3の導出計算を具体的に表すと式2のようになる。
【0021】
【数2】
ここで、X
1~X
4からY
1~Y
3の演算はニューロン演算と呼ばれ、Y
1~Y
3のニューロン演算の結果は、1入力1出力の計算を行う活性化関数h()に入力される。活性化関数には、一例としてReLU関数などが用いられてよい。活性化関数の出力Z
1~Z
3は入力値X
1~X
4に対するニューラルネットワークの1層分の出力に対応する。ニューラルネットワークが入力層と出力層の間に複数の中間層を有する場合、出力Z
1~Z
3は2層目の入力となる。なお、Y
1~Y
3からZ
1~Z
3への変換を数式で表すと式3のようになる。
【0022】
【数3】
なお、ニューラルネットワークの構造を、本実施形態では一例として、入力ノード数を4つとし、出力ノード数を3つとする場合を例に説明した。しかし、ニューラルネットワークのノード数には他のノード数を用いることができる。
【0023】
(学習モデルの学習時の処理に係る一連の動作)
次に、
図3~
図5を参照して、ニューロン演算のうちの式2に示した行列演算の処理に着目した、本実施形態に係る学習モデルの学習時の処理について説明する。なお、
図3は、本実施形態に係る重み係数の量子化を説明するための具体例を示しており、
図4は、本実施形態に係る拘束条件を示している。
【0024】
図5は、本実施形態の行列演算の演算方法を用いた、学習モデルの学習時の処理に係る一連の動作を示している。なお、本処理は、CPU102がROM103に記憶されたプログラムをRAM104の作業用領域に展開、実行することにより、PC100を動作させることにより実現される。
【0025】
S501において、CPU102は、学習を行う際の拘束条件を1つ以上指定する。拘束条件は、例えば、ニューラルネットワークの構成を特定する情報(すなわち入力層のノード数、出力層のノード数、層の数、それぞれの隠れ層の要素数(層ごとのノード数))、演算最大回数、及び評価値を含む。
【0026】
演算最大回数は、推論器(すなわちニューラルネットワーク)で演算可能な演算回数である。例えば、1サイクルで1度の演算を行うことができる演算器が搭載されている推論器を1MHzで駆動して1秒間で推論結果を求めたい場合は、1,000,000回以内の演算で推論結果が出ればよい。この場合、演算最大回数は1,000,000回で拘束される。なお、演算最大回数は、回数で表現する以外に、推論器の駆動周波数と、推論器を駆動することできる時間の情報とで表現されてもよい。また、評価値は、正解率、適合率、再現率又はF値、若しくはこれらに基づく評価方法に係る数値を、評価する対象や目的に応じて選択した値でよい。
【0027】
拘束条件は、例えば、予め実験等により定めた、入力層及び出力層のノード数、層の合計数(或いは隠れ層の数)、隠れ層それぞれのノード数、演算最大回数、及び評価値の組を複数用意しておいてもよい。或いは、複数用意した組のうちの一部の組を評価する対象や目的に応じて選択するようにしてもよい。また、PC100のユーザが入力部108を介して拘束条件を指定できるようにしてもよい。このように、本実施形態では、演算最大回数も含む拘束条件を用いることにより、当該演算最大回数以下の演算回数で推論器の演算を終えることができるようにして、学習時或いは推論時の処理を予め定められた時間内で実行することができるようになる。
【0028】
S502において、CPU102は、S501で指定された全ての拘束条件において学習を行う。CPU102は、例えば所定のエポック数による繰り返し演算を行って学習を進めた後に、学習の結果として、拘束条件ごとに学習済みモデルと学習済みモデルの評価値を出力する。学習済みモデルは、例えば、特定の拘束条件の下で学習されて、重み付け係数が更新、最適化された状態を指す。また、学習済みモデルの評価値は、例えば、学習済みモデルに入力値を入力した際に出力される出力値と当該入力値に対する正解値との差分値に基づく値(例えば差分値の二乗和など)である。なお、学習で行う演算は、GPU106で行わせることで学習の時間短縮を図ることが可能である。また、複数のGPU106を用いて並行して複数の条件を同時に学習することでさらなる時間短縮を図ってもよい。
【0029】
以下具体的に、拘束条件の1つである演算回数を例として、推論器が行う際の演算回数を減らす方法について、
図3を参照して説明する。
図3(a)は、式1の重み係数であるW
11、W
12、W
13、W
14、W
21、W
22、W
23、W
24、W
31、W
32、W
33、W
34で構成される行列を表している。行列の各要素を表す記号は式1と同一である。
図3(b)は、
図3(a)の一例として具体的な数値に置き換えた行列を示している。
図3(b)の数値は、実施形態1を説明するための数値であるが、この例に限らず実数であってよい。
図3(c)と
図3(e)と
図3(g)は、
図3(b)の数値を丸めることで量子化した値の例を示している。重み係数である行列の数値を量子化することにより、他の数値(重み係数)と一致する数値(重み係数)が増加することとなり、後に説明するような加算及び乗算の効率化を行い易くなる。具体的には、
図3(c)は、
図3(b)に示す各係数について、その上位4ビットを残し、3ビット右シフト演算した値となっている。
図3(e)は、
図3(b)に示す各係数について、その上位3ビットを残し、4ビット右シフト演算した値を示している。また、
図3(g)に示す例では、
図3(b)に示す各係数について、上位2ビットを残し、5ビット右シフトしている。
図3(d)と
図3(f)と
図3(h)は、
図3(c)と
図3(e)と
図3(g)における同じ数値(重み係数)ごとに記号でまとめたものである。この例では、数値の0をW
40、数値の1をW
41、数値の2をW
42、数値の3をW
43、数値の4をW
44、数値の5をW
45、数値の6をW
46、数値の7をW
47、数値の8をW
48としている。
図3(d)は、
図3(c)に示す係数に対応しており、
図3(f)は
図3(e)示す係数に対応しており、
図3(h)は
図3(g)に対応している。
【0030】
【数4】
【数5】
【数6】
式4d、式4f、式4hは、それぞれ、式2に対して
図3(d)と
図3(f)と
図3(h)の具体例を適用した場合に、演算回数を減らすために行列演算を所定の法則に従ってまとめた式を表している。所定の法則とは、同一の値の重み係数を適用する入力同士をあらかじめ加算したうえで当該重み係数を乗算し、そのうえで重み係数ごとの乗算結果の総和をとるものである。
【0031】
式4dの例について説明すると、Y1についての演算では、まずW40は対応する入力のX1と乗算される。次にW42は対応する入力のX2とX3をあらかじめ加算した結果と乗算される。さらにW43は対応する入力のX4と乗算される。最後にW40の乗算結果と、W42の乗算結果と、W43の乗算結果とバイアス値b1の総和をとる。この方法によりY1に対する演算は乗算1回分の演算を省略することが可能になる。Y2とY3についても同様に同じ重み係数の入力をあらかじめ加算した結果と対応する重み係数を乗算し、全ての乗算結果の総和をとる。この演算方法を行うと式4dで示す演算式となる。式4fと式4hも同様の法則に従った演算を行う式を表している。
【0032】
図4は、式2、式4d、式4f及び式4hに従って演算を実行する場合の演算回数を示している。式2では、401の乗算12回と402の加算12回により403の合計24回の演算を行う。式4dは404の乗算10回と405の加算12回で406の合計22回の演算を行う。つまり、式4dでは、式2に対して2回の演算を削減することができることを示している。同様に式4fでは、407の乗算9回と408の加算12回で409の合計21回の演算を行うので3回の演算を削減することができる。また、、式4hでは、410の乗算6回と411の加算12回で412の合計18回の演算を行うので6回の演算を削減することができる。
【0033】
S503において、CPU102は、S502における学習の結果から学習済みモデルを評価する。このような評価は、S502で出力された評価値(すなわち学習モデルの最適化度合いを評価するための評価値)を元にlearning curveやvalidation curveに基づく公知の方法を用いて行うことができる。或いは、学習済みモデルの精度などを用いてもよい。
【0034】
S504において、CPU102は、学習結果がほぼ収束したかを判定する。CPU102は、学習結果が収束していないと判定した場合には、S502における学習により評価がある程度収束するまで繰り返すように処理をS502に戻す。CPU102は、学習結果がある程度収束したと判定した場合には、S505へ進む。CPU102は、学習結果がある程度収束したか否かを、例えば、評価値が所定の評価値より低いかを判定することにより行うことができる。「ある程度収束したか」を判定するのは、学習結果が完全に収束した場合、一般的には過学習の恐れがあるため、学習データ以外のデータに対して推論を行う際に精度の高い推論結果を得ることができない可能性があるためである。ただし、あまりにも収束していない場合は未学習として使用することのできない学習モデルとなるため、所定の評価値は、過学習とならない程度に収束を判断するように実験等において予め定められていてよい。
【0035】
S505において、CPU102は、S502において拘束パターン毎に出力された学習済みモデルを取捨選択する(すなわち推論用に採用する)。取捨選択の方法の一例として、再現率が一定の水準より低いものは信用ができない学習済みモデルであるため、使用しない学習済みモデルとして破棄すればよい。すなわち、CPU102は、再現率が予め定められた閾値より高い学習モデルを選択する。他にもユーザが定めた水準を超える評価値を有する学習済みモデルを選択し、水準以下の学習済みモデルは破棄するようにしてもよい。また一定の水準以上の学習済みモデルが複数残る場合には、CPU102は、さらなる判断材料として、推論器で使用する際の演算回数を利用してもよい。例えば、CPU102は、演算回数が所定の閾値よりも多い学習済みモデルは破棄する(演算回数が拘束条件に係る所定の閾値以下である学習済みモデルを選択する)。更に、CPU102は、学習済みモデルの演算回数が拘束条件に収まる場合であっても、より演算回数が少ないモデルを選択する。このようにすれば推論器の処理が少なくなり、処理時間の短縮や低電力化として有利になる。
【0036】
以上説明したように本実施形態では、ニューラルネットワークの構成を拘束する1つ以上の拘束条件を指定し、指定された拘束条件のもとでニューラルネットワークを学習させ、得られる学習済みモデルを推論用に採用する。学習済みモデルを採用する場合、例えば、(学習済みモデルの最適化度合いを評価するための)評価値が所定の評価値より低い学習済みモデルを選択してもよい。また、演算回数が他の学習済みモデルより少ない学習済みモデルを選択してもよい。このようにすることで、学習における演算時間を短縮し、所定の時間内に推論を完了させること可能にした学習済みモデルを生成可能になる。ここで、拘束条件は、ニューラルネットワークの構成を特定する情報と当該ニューラルネットワークにおける演算最大回数とを含む。また、ネットワークの構成を特定する情報は、例えば、ニューラルネットワークの入力層のノード数、出力層のノード数、ニューラルネットワークを構成する層の数(入力層と出力層と隠れ層の数の合計)、隠れ層それぞれのノード数の少なくとも一部を含む。このようにすることで、特定の構成に拘束された構成でニューラルネットワークを学習させて、演算回数(ひいては演算時間の要件)を満たすように推論器を構成することができる。すなわち、本実施形態に係る情報処理装置は、ニューラルネットワークのための演算を所定の時間内で終了させるように学習させた推論器を備えることができる。
【0037】
(実施形態2)
次に実施形態2について説明する。本実施形態では、学習モデルの学習時の処理に係る動作の一部が実施形態1と異なるが、PC100の構成は実施形態1と同一又は実質的に同一である。このため、実施形態1と同一又は実質的に同一である構成については同一の参照番号を付して説明を省略し、相違点について重点的に説明する。
【0038】
図6を参照して、本実施形態に係る学習モデルの学習時の処理に係る一連の動作について説明する。まず、CPU102は、実施形態1と同様に、S501において学習を行う際の拘束条件を指定する。
【0039】
S601において、CPU102は、拘束条件の1つを選択する。例えば、CPU102は、
図3(b)か、
図3(c)か、
図3(e)か、
図3(g)のいずれか1つを選択するユーザからの操作指示を受け付ける。
【0040】
S602において、CPU102は、S601で選択された拘束条件にて学習を行う。学習の方法は、実施形態1で説明したS502と同様でよい。S602でも実施形態1と同様にGPU106を利用して学習時間の短縮を図ってよい。そして、CPU102は、S504~S506の処理を実施形態1と同様に実行する。
【0041】
S603で、CPU102は、学習を終了するか否か判定する。判定では、S506で選択した学習済みモデルがユーザの指定した拘束条件の評価値や演算回数を満たしているならば、これ以上学習しなくても十分だと判断して全ての学習を終了してよい。また、未実施の拘束条件パターンがある場合、未実施の拘束条件も学習させて、さらによい結果の得られる拘束条件パターンがあるか判断してから学習を終えてもよい。未実施の拘束条件を更に学習させる場合には、再びS601において未実施の拘束条件パターンを選択して、S602、S504、S505、S506、S603を繰り返す。
【0042】
以上説明したように、本実施形態では、機械学習における学習時に所定の条件で拘束して、演算時間を短縮し且つ所定の時間内に推論を完了させることを可能にした学習済みモデルを生成することができる。特に、
図6に示す学習に係る一連の動作を用いることで、必ずしも全ての拘束条件パターンを実行する必要がなく、学習の時間短縮を図ることが可能である。換言すれば、本実施形態によっても、情報処理装置は、ニューラルネットワークのための演算を所定の時間内で終了させるように学習させた推論器を備えることができる。
【0043】
なお、上述の実施形態では、重み係数の量子化について、ビット演算による量子化の方法を例に説明した。しかし、量子化の方法はこれに限らず他の方法を用いてもよい。例えば、ベクトル量子化などを用いて、重み係数をある程度の数にクラスタリングするようにしてもよい。このようにすることで、上述の実施形態と同様の効果を得つつ、各クラスタの重み係数値を多いビット数に割り当てることでより高精度な学習済みモデルを得ることがあり得る。
【0044】
(その他の実施形態)
本発明は、上述の実施形態の1以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける1つ以上のプロセッサがプログラムを読出し実行する処理でも実現可能である。また、1以上の機能を実現する回路(例えば、ASIC)によっても実現可能である。
【0045】
発明は上記実施形態に制限されるものではなく、発明の精神及び範囲から離脱することなく、様々な変更及び変形が可能である。従って、発明の範囲を公にするために請求項を添付する。
【符号の説明】
【0046】
102…CPU、103…ROM、104…ROM、105…HDD、106…GPU、108…入力部、109…表示部