(57)【要約】【課題】精度低下を抑制しながら、ニューラルネットワークのサイズを小さくする。【解決手段】実施形態に係る学習方法は、ニューラルネットワークを最適化する。学習方法は、更新ステップと、特定ステップと、を実行する。更新ステップでは、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、ニューラルネットワークに含まれる複数の重み係数のそれぞれを更新する。特定ステップでは、ニューラルネットワークに含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する。【選択図】図２
2020008993.tif 000002
【特許請求の範囲】
【請求項１】
ニューラルネットワークを最適化する学習方法であって、
基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、前記ニューラルネットワークに含まれる複数の重み係数のそれぞれを更新する更新ステップと、
前記ニューラルネットワークに含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する特定ステップと、
を実行する学習方法。
【請求項２】
前記複数の重み係数のそれぞれについて、前記更新ステップでは、前記目的関数に基づき勾配を算出し、前記勾配および対応する過去の勾配に基づきステップ幅を算出し、算出したステップ幅に基づき前記目的関数を小さくするように前記複数の重み係数を更新する
請求項１に記載の学習方法。
【請求項３】
前記ニューラルネットワークは、微分関数が０となる入力値の区間を含むまたは微分関数が０に漸近する入力値の区間を含む活性化関数が設定されている
請求項２に記載の学習方法。
【請求項４】
前記活性化関数の微分関数は、所定の入力値より正側の入力値の区間が０より大きく、前記所定の入力値より負側の入力値の区間が０または０に漸近する
請求項３に記載の学習方法。
【請求項５】
前記ニューラルネットワークの全ての中間層に含まれる全てのノードおよびチャネルに設定されている活性化関数は、同一である
請求項３または４に記載の学習方法。
【請求項６】
前記特定ステップでは、設定されている全ての重み係数のノルムが所定の閾値以下であるノードおよびチャネルを、不活性ノードおよび不活性チャネルとして特定する
請求項２から５の何れか１項に記載の学習方法。
【請求項７】
前記ニューラルネットワークから、前記不活性ノードおよび前記不活性チャネルを削除する削除ステップをさらに実行する
請求項２から６の何れか１項に記載の学習方法。
【請求項８】
入力ベクトルと出力ベクトルの教師となる教師ベクトルとを含む複数の訓練情報を取得する取得ステップと、
前記出力ベクトルおよび前記教師ベクトルに基づき、誤差ベクトルを生成する誤差算出ステップと、
前記入力ベクトルを前記ニューラルネットワークの入力層に与えて順方向に演算データを伝播させ出力層から前記出力ベクトルを出力させる順方向処理、および、前記誤差ベクトルを前記ニューラルネットワークの出力層に与えて逆方向に誤差データを伝播させる逆方向処理を実行させる反復制御ステップと、
をさらに実行し、
前記更新ステップでは、前記順方向処理および前記逆方向処理の組を実行する毎に、前記複数の重み係数のそれぞれを更新する
請求項７に記載の学習方法。
【請求項９】
前記重み係数の更新を所定回数以上実行した後に、前記削除ステップでは、前記ニューラルネットワークから、前記不活性ノードおよび前記不活性チャネルを削除する
請求項８に記載の学習方法。
【請求項１０】
前記不活性ノードおよび前記不活性チャネルを削除した後、前記不活性ノードおよび前記不活性チャネルを削除した前記ニューラルネットワークが目標サイズ以下であるか否かを判断し、前記目標サイズ以下ではない場合には、前記不活性ノードおよび前記不活性チャネルを削除した前記ニューラルネットワークにおける、前記複数の重み係数のそれぞれを再度更新させて、前記不活性ノードおよび前記不活性チャネルを削除させる学習制御ステップをさらに実行する
請求項９に記載の学習方法。
【請求項１１】
目標削除率に応じて、前記正則化強度を変更する強度設定ステップをさらに実行し、
前記強度設定ステップでは、前記目標削除率が大きい程、前記正則化強度を大きくするように、前記正則化強度を変更する
請求項２から１０の何れか１項に記載の学習方法。
【請求項１２】
前記活性化関数は、ＲｅＬＵである
請求項４に記載の学習方法。
【請求項１３】
前記活性化関数は、ＥＬＵである
請求項４に記載の学習方法。
【請求項１４】
前記活性化関数は、ハイパボリックタンジェントである
請求項３に記載の学習方法。
【請求項１５】
前記更新ステップでは、Ａｄａｍのアルゴリズムにより重み係数を更新する
請求項２から１４の何れか１項に記載の学習方法。
【請求項１６】
前記更新ステップでは、ＲＭＳｐｒｏｐのアルゴリズムにより重み係数を更新する
請求項２から１４の何れか１項に記載の学習方法。
【請求項１７】
ニューラルネットワークを最適化する学習装置であって、
基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、前記ニューラルネットワークに含まれる複数の重み係数のそれぞれを更新する更新部と、
前記ニューラルネットワークに含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する特定部と、
を備える学習装置。
【請求項１８】
前記ニューラルネットワークから、前記不活性ノードおよび前記不活性チャネルを削除する削除部をさらに備え、
前記ニューラルネットワークの全ての中間層に含まれる全てのノードおよびチャネルに設定されている活性化関数は、微分関数が０となる入力値の区間を含むまたは微分関数が０に漸近する入力値の区間を含み、
前記複数の重み係数のそれぞれについて、前記更新部は、前記目的関数に基づき勾配を算出し、前記勾配および対応する過去の勾配に基づきステップ幅を算出し、算出したステップ幅に基づき前記目的関数を小さくするように前記複数の重み係数を更新し、
前記特定部は、設定されている全ての重み係数のノルムが所定の閾値以下であるノードおよびチャネルを、前記不活性ノードおよび前記不活性チャネルとして特定する
請求項１７に記載の学習装置。
【請求項１９】
前記活性化関数は、ＲｅＬＵであり、
前記更新部は、Ａｄａｍの最適化アルゴリズムにより前記複数の重み係数を更新する
請求項１８に記載の学習装置。
【請求項２０】
画像を取得する画像取得部と、
取得された前記画像に基づきオブジェクトを認識するニューラルネットワークと、
前記ニューラルネットワークから出力された認識結果に基づき制御処理を実行する制御部と、
を備え、
前記ニューラルネットワークは、学習処理により最適化されており、
前記学習処理において、
基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、前記ニューラルネットワークに含まれる複数の重み係数のそれぞれを更新する更新ステップと、
前記ニューラルネットワークに含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する特定ステップと、
前記ニューラルネットワークから、前記不活性ノードおよび前記不活性チャネルを削除する削除ステップと、
が実行される画像認識システム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明の実施形態は、学習方法、学習装置および画像認識システムに関する。
【背景技術】
【０００２】
近年、ニューラルネットワークは、画像認識、機械翻訳および音声認識等の様々な分野に適用されている。このようなニューラルネットワークは、高い性能を達成するためには、構成を大きくしなければならなかった。しかし、エッジシステム等で直接動作させるためには、ニューラルネットワークのサイズをなるべく小さくする必要があった。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平９−９１２６３号公報
【非特許文献】
【０００４】
【非特許文献１】N.  Qian,  “On  the  momentum  term  in  gradient  descent  learning  algorithms”,  Neural  Networks:  The  Official  Journal  of  the  International  Neural  Network  Society,  12(1),  145−151,  1999
【非特許文献２】J.  Duchi,  E.  Hazan,  and  Y.  Singer,  “Adaptive  Subgradient  Methods  for  Online  Learning  and  Stochastic  Optimization”,  Journal  of  Machine  Learning  Research,  vol.  12,  pp.  2121−2159,  2011
【非特許文献３】I.  Loshchilov  and  F.  Hutter,  “Fixing  weight  decay  regularization  in  adam”,  arXiv  preprint  arXiv:1711.05101,  2017
【非特許文献４】S.  J.  Reddi,  S.  Kale,  and  S.  Kumar,  “On  the  Convergence  of  Adam  and  Beyond”,  International  Conference  on  Learning  Representations  (ICLR),  2018
【非特許文献５】X.  Glorot  and  Y.  Bengio,  “Understanding  the  difficulty  of  training  deep  feedforward  neural  networks”,  International  Conference  on  Artificial  Intelligence  and  Statistics  (AISTATS),  pp.  249−256,  2010
【非特許文献６】K.  He,  X.  Zhang,  S.  Ren,  and  J.  Sun,  “Delving  deep  into  rectifiers:  Surpassing  human-level  performance  on  imagenet  classification”.  International  Conference  on  Computer  Vision  (ICCV).  2015
【非特許文献７】S.  Scardapane,  D.  Comminiello,  A.  Hussain,  and  A.  Uncini,  “Group  Sparse  Regularization  for  Deep  Neural  Networks”,  Neurocomputing,  Vol.  241,  pp.  81-89,  2017
【発明の概要】
【発明が解決しようとする課題】
【０００５】
本発明が解決しようとする課題は、精度低下を抑制しながら、ニューラルネットワークのサイズを小さくすることにある。
【課題を解決するための手段】
【０００６】
実施形態に係る学習方法は、ニューラルネットワークを最適化する。前記学習方法は、更新ステップと、特定ステップと、を実行する。前記更新ステップでは、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、前記ニューラルネットワークに含まれる複数の重み係数のそれぞれを更新する。前記特定ステップでは、前記ニューラルネットワークに含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する。
【図面の簡単な説明】
【０００７】
【図１】第１実施形態に係る学習装置の構成を示す図。
【図２】第１実施形態に係る学習装置の処理フローを示す図。
【図３】第２実施形態に係る学習装置の構成を示す図。
【図４】第３実施形態に係る学習装置の構成を示す図。
【図５】第３実施形態に係る学習装置の処理フローを示す図。
【図６】第４実施形態に係る自動運転システムの構成を示す図。
【図７】ニューラルネットワークにおける畳み込み層の重み係数を表す図。
【図８】ニューラルネットワークにおける全結合層の重み係数を表す図。
【図９】ＡｄａＭａｘによる重み係数の最適化アルゴリズムを示す図。
【図１０】Ｎａｄａｍによる重み係数の最適化アルゴリズムを示す図。
【図１１】Ａｄａｍ−ＨＤによる重み係数の最適化アルゴリズムを示す図。
【図１２】第１実験例での基本条件を示す図。
【図１３】第２実験例での基本条件を示す図。
【図１４】スパース化割合に対するバリデーション精度を示した図。
【図１５】実施形態に係る学習装置のハードウェア構成の一例を示す図。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら実施形態について詳細に説明する。本実施形態に係る学習装置１０は、学習処理によりニューラルネットワーク２０に含まれる複数の重み係数を更新する。これにより、学習装置１０は、ニューラルネットワーク２０を所定のアプリケーションに対して最適化するとともに、ニューラルネットワーク２０のサイズを小さくすることができる。
【０００９】
（第１実施形態）
まず、第１実施形態について説明する。
【００１０】
図１は、第１実施形態に係る学習装置１０の構成を示す図である。学習装置１０は、入力部２２と、実行部２４と、出力部２６と、取得部３２と、誤差算出部３４と、反復制御部３６と、更新部３８と、特定部４０と、削除部４２とを備える。
【００１１】
入力部２２は、学習処理に先だって、最適化前のニューラルネットワーク２０を実現するための構成情報を外部の装置等から取得する。
【００１２】
実行部２４は、入力部２２が取得した構成情報を内部に記憶する。そして、実行部２４は、データが与えられると、記憶した構成情報に従って演算処理を実行する。これにより、実行部２４は、ニューラルネットワーク２０として機能することができる。
【００１３】
なお、実行部２４に記憶された構成情報に含まれる重み係数は、学習処理中に更新部３８により変更される。また、実行部２４に記憶された構成情報に含まれるノードおよびチャネルに関する情報は、削除部４２により削除される場合がある。
【００１４】
出力部２６は、学習処理が終了した後に実行部２４に記憶されている構成情報を、外部の装置に送信する。これにより、出力部２６は、最適化されたニューラルネットワーク２０を外部の装置に実現させることができる。
【００１５】
取得部３２は、ニューラルネットワーク２０を所定のアプリケーションに対して最適化させるための複数の訓練情報を取得する。複数の訓練情報のそれぞれは、入力ベクトルと、出力ベクトルの教師となる教師ベクトルとを含む。取得部３２は、それぞれの訓練情報に含まれる入力ベクトルを実行部２４により実現されているニューラルネットワーク２０に与える。また、取得部３２は、それぞれの訓練情報に含まれる教師ベクトルを誤差算出部３４に与える。
【００１６】
誤差算出部３４は、出力ベクトル、教師ベクトルおよび基本損失関数に基づき、誤差ベクトルを生成する。具体的には、ニューラルネットワーク２０は、訓練情報に含まれる入力ベクトルが入力層に与えられると、出力層から出力ベクトルを出力する。誤差算出部３４は、ニューラルネットワーク２０の出力層から出力された出力ベクトルを取得する。また、誤差算出部３４は、その訓練情報に含まれる教師ベクトルを取得する。誤差算出部３４は、出力ベクトルと、教師ベクトルとの誤差を表す誤差ベクトルを算出する。例えば、誤差算出部３４は、出力ベクトルおよび誤差ベクトルを予め定められた基本損失関数に与えて誤差ベクトルを算出する。誤差算出部３４は、算出した誤差ベクトルをニューラルネットワーク２０の出力層に与える。
【００１７】
反復制御部３６は、複数の訓練情報のそれぞれについて、反復制御を実行する。具体的には、反復制御部３６は、訓練情報に含まれる入力ベクトルをニューラルネットワーク２０の入力層に与えて、ニューラルネットワーク２０に順方向に演算データを伝播させ出力層から出力ベクトルを出力させる順方向処理を実行させる。続いて、反復制御部３６は、順方向処理において出力された出力ベクトルを誤差算出部３４に与えて、誤差ベクトルを誤差算出部３４から取得する。そして、反復制御部３６は、取得した誤差ベクトルをニューラルネットワーク２０の出力層に与えて、ニューラルネットワーク２０に逆方向に誤差データを伝播させる逆方向処理を実行させる。
【００１８】
更新部３８は、ニューラルネットワーク２０が順方向処理および逆方向処理の組を実行する毎に、ニューラルネットワーク２０が所定のアプリケーションに最適化するように、ニューラルネットワーク２０に含まれる複数の重み係数のそれぞれを更新する。例えば、更新部３８は、１つの訓練情報を順方向および逆方向に伝播した後に重み係数を更新してもよいし、複数の訓練情報を順方向および逆方向に伝播した後に、複数の訓練情報についてまとめて重み係数を更新してもよい。
【００１９】
特定部４０は、ニューラルネットワーク２０に含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する。例えば、更新部３８が重み係数の更新を所定回数分実行した後に、特定部４０は、不活性ノードおよび不活性チャネルを特定する。
【００２０】
例えば、特定部４０は、設定されている全ての重み係数のノルムが所定の閾値以下であるノードおよびチャネルを、不活性ノードおよび不活性チャネルとして特定する。例えば、特定部４０は、設定されている全ての重み係数の絶対値を加算した結果が、所定の閾値以下であるノードおよびチャネルを、不活性ノードおよび不活性チャネルとして特定する。ここで、所定の閾値は、０に非常に近い小さい値である。これにより、特定部４０は、ニューラルネットワーク２０における演算にほとんど寄与していないような、設定されている全ての重み係数のノルムが０または０に近い値のノードおよびチャネルを、不活性ノードおよび不活性チャネルとして特定することができる。このように、ノードまたはチャネルに設定されている全ての重み係数のノルムが所定の閾値以下となり、ニューラルネットワーク２０における演算にほとんど寄与しなくなる現象をグループスパースという。
【００２１】
削除部４２は、ニューラルネットワーク２０から、特定部４０により特定された不活性ノードおよび不活性チャネルを削除する。例えば更新部３８が重み係数の更新を所定回数分実行した後に、削除部４２は、実行部２４に記憶されているニューラルネットワーク２０の構成情報を書き換えて、ニューラルネットワーク２０から不活性ノードおよび不活性チャネルを削除する。なお、不活性ノードおよび不活性チャネルを削除する場合、不活性ノードおよび不活性チャネルに設定されていたバイアスを補償する。例えば、削除部４２は、不活性ノードおよび不活性チャネルおよび設定されている複数の重み係数を全て削除した後に、不活性ノードおよび不活性チャネルに設定されていたバイアスを次の層のノードまたはチャネルに設定されているバイアスに合成する。これにより、削除部４２は、不活性ノードおよび不活性チャネルの削除に伴って推論結果が大きく変動しないようにすることができる。
【００２２】
図２は、第１実施形態に係る学習装置１０の処理フローを示す図である。第１実施形態に係る学習装置１０は、図２に示す流れで処理を実行する。
【００２３】
まず、Ｓ１１において、学習装置１０は、外部の装置等から、ニューラルネットワーク２０の構成情報を取得する。続いて、Ｓ１２において、学習装置１０は、複数の訓練情報を取得する。
【００２４】
続いて、Ｓ１３において、学習装置１０は、複数の訓練情報のうちの１つを用いてニューラルネットワーク２０に対して学習処理を実行する。続いて、Ｓ１４において、学習装置１０は、所定回の学習処理を実行したか否かを判断する。所定回の学習処理を実行していない場合（Ｓ１４のＮｏ）、学習装置１０は、Ｓ１３の処理を繰り返す。所定回の学習処理を実行した場合（Ｓ１４のＹｅｓ）、処理をＳ１５に進める。
【００２５】
Ｓ１５において、学習装置１０は、学習処理後のニューラルネットワーク２０に含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する。続いて、Ｓ１６において、学習装置１０は、特定された不活性ノードおよび不活性チャネルを、ニューラルネットワーク２０から削除する。そして、Ｓ１７において、学習装置１０は、不活性ノードおよび不活性チャネルを削除したニューラルネットワーク２０を、外部の装置等に出力する。
【００２６】
第１実施形態に係る学習装置１０は、以上の処理を実行することにより、ニューラルネットワーク２０を所定のアプリケーションに最適化することができる。なお、学習装置１０は、不活性ノードおよび不活性チャネルを削除した後に、再度、学習処理を実行して、ニューラルネットワーク２０をさらに最適化してもよい。なお、２回目以降の学習処理において、学習装置１０は、不活性ノードおよび不活性チャネルの特定および削除を実行しないことで精度補償を行ってもよいし、実行することでニューラルネットワーク２０のサイズをさらに小さくしてもよい。
【００２７】
ここで、ニューラルネットワーク２０の全ての中間層に含まれる全てのノードおよびチャネルには、微分関数が０となる入力値の区間を含むまたは微分関数が０に漸近する入力値の区間を含む活性化関数が設定されている。例えば、活性化関数は、微分関数が、所定の入力値より正側の入力値の区間が０より大きく、所定の入力値より負側の入力値の区間が０または０に漸近する関数である。
【００２８】
例えば、ニューラルネットワーク２０の全ての中間層に含まれる全てのノードおよびチャネルには、ＲｅＬＵ（Rectified  Linear  Unit）、ＥＬＵ（Exponential  Linear  Units）またはハイパボリックタンジェント（ＴＡＮＨ）が活性化関数として設定される。
【００２９】
ニューラルネットワーク２０の全ての中間層に含まれる全てのノードおよびチャネルには、ソフトサイン、ソフトプラス、ＳｅＬＵ（Scaled  Exponential  Linear  Units）、Ｓｈｉｆｔｅｄ  ＲｅＬＵ、Ｔｈｒｅｓｈｏｌｄｅｄ  ＲｅＬＵ、Ｃｌｉｐｐｅｄ  ＲｅＬＵ、ＣＲｅＬＵ（Concatenated  Rectified  Linear  Units）またはＳｗｉｓｈが活性化関数として設定されていてもよい。
【００３０】
なお、上述の各関数の内容については詳細を後述する。
【００３１】
さらに、更新部３８は、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように、ニューラルネットワーク２０に含まれる複数の重み係数のそれぞれを更新する。目的関数は、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した項に、さらに他の項を含んでいてもよい。Ｌ２正則化項は、全ての重み係数の二乗和である。また、正則化強度は、非負の値（正の整数）である。基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数のことを、Ｌ２正則化項を導入したコスト関数ともいう。
【００３２】
さらに、ニューラルネットワーク２０に含まれる複数の重み係数のそれぞれについて、更新部３８は、目的関数に基づき重み係数の勾配を算出する。そして、ニューラルネットワーク２０に含まれる複数の重み係数のそれぞれについて、更新部３８は、勾配および対応する重み係数の過去の勾配に基づきステップ幅を算出し、算出したステップ幅に基づき目的関数を小さくするように重み係数を更新する。例えば、更新部３８は、直前の重み係数からステップ幅を減じることにより重み係数を更新する。
【００３３】
例えば、更新部３８は、対応する重み係数について、現時点の勾配と、過去の勾配の移動平均とを、所定の比率で加算したパラメータを用いてステップ幅を算出し、算出したステップ幅に基づき重み係数を更新する。なお、過去の勾配の移動平均は、加重移動平均であってもよい。例えば、過去の勾配の移動平均は、過去の値の影響度を徐々に小さくするように（すなわち、現在に近い値の影響度を過去の値より大きくするように）重み付けをして加算をした平均値であってもよい。また、過去の勾配の移動平均は、過去の全ての勾配を平均化した累積移動平均または加重累積移動平均であってもよい。
【００３４】
また、更新部３８は、対応する重み係数について、現時点の勾配の二乗と、過去の勾配の二乗平均とを、所定の比率で加算したパラメータを用いてステップ幅を算出し、算出したステップ幅に基づき重み係数を更新してもよい。また、勾配または勾配の二乗に限らず、勾配を用いて算出した現時点の値と、過去の値の移動平均または加重移動平均とを所定の比率で加算したパラメータを用いて重み係数を更新してもよい。
【００３５】
例えば、更新部３８は、最適化をするためのアルゴリズムとして、ＡｄａｍのアルゴリズムまたはＲＭＳｐｒｏｐのアルゴリズムを用いて、重み係数を更新する。また、例えば、更新部３８は、最適化をするためのアルゴリズムとして、ＡｄａＤｅｌｔａのアルゴリズム、ＲＭＳｐｒｏｐＧｒａｖｅｓのアルゴリズム、ＳＭＯＲＭＳ３のアルゴリズム、ＡｄａＭａｘのアルゴリズム、ＮａｄａｍのアルゴリズムまたはＡｄａｍ−ＨＤのアルゴリズム等を用いて、重み係数を更新してもよい。
【００３６】
以上のような条件でニューラルネットワーク２０を最適化した場合、不活性ノードおよび不活性チャネルが発生する可能性が高くなる。従って、第１実施形態に係る学習装置１０は、以上のような条件でニューラルネットワーク２０の最適化することにより、精度低下を抑制しながら、ニューラルネットワーク２０のサイズを小さくすることができる。
【００３７】
（第２実施形態）
つぎに、第２実施形態に係る学習装置１０について説明をする。第２実施形態に係る学習装置１０は、第１実施形態と略同様の機能および構成を有するので、略同一の機能および構成を有する要素については同一の符号を付けて、相違点を除き詳細な説明を省略する。第３実施形態以降も同様である。
【００３８】
図３は、第２実施形態に係る学習装置１０の構成を示す図である。第２実施形態に係る学習装置１０は、強度設定部５２をさらに備える。
【００３９】
強度設定部５２は、外部の装置等から目標削除率を取得する。削除率は、元のニューラルネットワーク２０のサイズ（最適化前のサイズ）に対する、不活性ノードおよび不活性チャネルを削除した後のニューラルネットワーク２０のサイズ（最適化後のサイズ）の割合を表す。ニューラルネットワーク２０のサイズは、例えば、ニューラルネットワーク２０のノード数、チャネル数、または、ニューラルネットワーク２０に設定されている全ての重み係数の総数である。
【００４０】
強度設定部５２は、取得した目標削除率に応じて、更新部３８における正則化強度を変更する。正則化強度は、目的関数におけるＬ２正則化項（全ての重み係数の二乗和）に乗算される非負のパラメータ（正の整数）である。
【００４１】
強度設定部５２は、目標削除率が大きい程、正則化強度を大きくするように、正則化強度を変更する。すなわち、強度設定部５２は、目標削除率が小さい程、正則化強度を小さくするように、正則化強度を変更する。例えば、強度設定部５２は、目標削除率と正則化強度との対応関係が登録されたテーブルを参照して、目標削除率に基づき正則化強度を決定する。また、例えば、強度設定部５２は、目標削除率と正則化強度との対応関係を表す関数を用いて、目標削除率に基づき正則化強度を決定する。
【００４２】
ここで、第１実施形態に示した条件で学習処理を実行した場合、正則化強度が大きい程、ニューラルネットワーク２０を最適化した後のサイズは、小さくなる。反対に、正則化強度が小さい程、ニューラルネットワーク２０を最適化した後のサイズは、大きくなる。従って、第２実施形態に係る学習装置１０は、目標削除率に応じて正則化強度を変更することにより、最適化後のニューラルネットワーク２０のサイズを調整することができる。
【００４３】
（第３実施形態）
つぎに、第３実施形態に係る学習装置１０について説明をする。
【００４４】
図４は、第３実施形態に係る学習装置１０の構成を示す図である。第３実施形態に係る学習装置１０は、学習制御部５４をさらに備える。
【００４５】
学習制御部５４は、外部の装置等から目標サイズを取得する。目標サイズは、不活性ノードおよび不活性チャネルを削除した後のニューラルネットワーク２０のサイズ（最適化後のサイズ）である。
【００４６】
学習制御部５４は、削除部４２が不活性ノードまたは不活性チャネルを削除した後、不活性ノードおよび不活性チャネルを削除したニューラルネットワーク２０が目標サイズ以下であるか否かを判断する。目標サイズ以下である場合には、学習制御部５４は、学習処理を停止させる。
【００４７】
目標サイズ以下ではない場合には、学習制御部５４は、学習処理を再度実行させて、不活性ノードおよび不活性チャネルを削除したニューラルネットワーク２０における、複数の重み係数のそれぞれを再度更新させて、不活性ノードまたは不活性チャネルを削除させる。学習制御部５４は、目標サイズにできるだけ近くなるように正則化強度を調整しながら学習処理を複数回に分けて実行してもよい。これにより、学習制御部５４は、不活性ノードおよび不活性チャネルを削除した後のニューラルネットワーク２０のサイズを小さくすることができる。
【００４８】
図５は、第３実施形態に係る学習装置１０の処理フローを示す図である。第３実施形態に係る学習装置１０は、図５に示す流れで処理を実行する。
【００４９】
まず、Ｓ２１において、学習装置１０は、外部の装置等から、ニューラルネットワーク２０の構成情報を取得する。続いて、Ｓ２２において、学習装置１０は、複数の訓練情報を取得する。続いて、Ｓ２３において、学習装置１０は、ニューラルネットワーク２０の目標サイズを取得する。
【００５０】
続いて、Ｓ２４において、学習装置１０は、複数の訓練情報のうちの１つを用いてニューラルネットワーク２０に対して学習処理を実行する。続いて、Ｓ２５において、学習装置１０は、所定回分の学習処理を実行したか否かを判断する。所定回の学習処理を実行していない場合（Ｓ２５のＮｏ）、学習装置１０は、Ｓ２４の処理を繰り返す。所定回の学習処理を実行した場合（Ｓ２５のＹｅｓ）、処理をＳ２６に進める。
【００５１】
Ｓ２６において、学習装置１０は、学習処理後のニューラルネットワーク２０に含まれる複数のノードおよび複数のチャネルのうち、不活性ノードおよび不活性チャネルを特定する。続いて、Ｓ２７において、学習装置１０は、特定された不活性ノードおよび不活性チャネルを、ニューラルネットワーク２０から削除する。
【００５２】
続いて、Ｓ２８において、学習装置１０は、不活性ノードおよび不活性チャネルを削除した後のニューラルネットワーク２０のサイズが、目標サイズ以下であるか否かを判断する。目標サイズ以下ではない場合（Ｓ２８のＮｏ）、処理をＳ２９に進める。Ｓ２９において、学習装置１０は、正則化強度を変更する。Ｓ２９を終えると、学習装置１０は、処理をＳ２４に戻して、Ｓ２４から処理を繰り返す。なお、学習装置１０は、Ｓ２９の処理を実行せずに、そのままＳ２４に処理を戻してもよい。
【００５３】
不活性ノードおよび不活性チャネルを削除した後のニューラルネットワーク２０のサイズが、目標サイズ以下である場合（Ｓ２８のＹｅｓ）、処理をＳ３０に進める。Ｓ３０において、学習装置１０は、不活性ノードおよび不活性チャネルを削除したニューラルネットワーク２０を、外部の装置等に出力する。なお、学習装置１０は、Ｓ２４からＳ２７までの処理を繰り返す毎に、ニューラルネットワーク２０のサイズが徐々に目標サイズに近づくように、Ｓ２９において正規化強度を変更する。例えば、学習装置１０は、１回目の学習処理においては、多くのノードまたはチャネルを削除できるように正規化強度を大きくし、２回目以降ではニューラルネットワーク２０が目標サイズに近づくように、正規化強度を小さくしてもよい。
【００５４】
以上のように、学習装置１０は、目標サイズに達成するまで、ニューラルネットワーク２０の学習処理、および、不活性ノードおよび不活性チャネルの削除処理を繰り返す。これにより、学習装置１０は、精度低下を抑制しながら、目標サイズのニューラルネットワーク２０を生成することができる。
【００５５】
（第４実施形態）
つぎに、第４実施形態に係る自動運転システム１１０について説明をする。
【００５６】
図６は、第４実施形態に係る自動運転システム１１０の構成を示す図である。自動運転システム１１０は、車両の運転を補助するシステムである。例えば、自動運転システム１１０は、車両に取り付けられたカメラにより撮像された画像を認識し、認識結果に基づき車両の運転制御を実行する。例えば、自動運転システム１１０は、歩行者、車両、信号、標識、車線等を認識して、車両の運転制御を実行する。
【００５７】
自動運転システム１１０は、画像取得部１２２と、ニューラルネットワーク２０と、車両制御部１２４とを備える。画像取得部１２２は、車両に取り付けられたカメラにより撮像された画像を取得する。画像取得部１２２は、取得した画像をニューラルネットワーク２０に与える。
【００５８】
ニューラルネットワーク２０は、第１実施形態から第３実施形態の何れかにより最適化されている。例えば、ニューラルネットワーク２０は、撮像した画像から歩行者、車両、信号、標識、車線等のオブジェクトを認識する。車両制御部１２４は、ニューラルネットワーク２０から出力された認識結果に基づき、制御処理を実行する。例えば、車両制御部１２４は、車両を制御したり運転者に警告を与えたりする。
【００５９】
このような自動運転システム１１０は、精度低下を抑制しながらサイズが小さくされたニューラルネットワーク２０を用いている。これにより、自動運転システム１１０は、精度良く且つ簡易な構成で車両の制御等を実行することができる。
【００６０】
なお、第１実施形態から第３実施形態の何れかにより最適化されたニューラルネットワーク２０は、自動運転システム１１０に限らず他のアプリケーションに適用することもできる。例えば、ニューラルネットワーク２０は、インフラストラクチャメンテナンスシステムに適用することができる。インフラストラクチャメンテナンスシステムに適用されたニューラルネットワーク２０は、ドローン等に搭載されたカメラにより撮像された画像から、鉄橋または橋等の劣化度等を検出する。
【００６１】
例えば、ニューラルネットワーク２０は、重粒子線治療システムに適用することができる。重粒子線治療システムに適用されたニューラルネットワーク２０は、体内を撮像した画像から臓器または腫瘍等を高速に認識して、ビーム照射を支援する。
【００６２】
（活性化関数）
つぎに、ニューラルネットワーク２０の中間層のそれぞれのノードまたはチャネルに設定される活性化関数について説明する。なお、ｘは、活性化関数の入力値を表す。ｙは、活性化関数の出力値を表す。αおよびβは、予め決定される値または学習処理により決定される値である。
【００６３】
ニューラルネットワーク２０は、活性化関数として、ＲｅＬＵを用いることができる。ＲｅＬＵは、下記の式（１）により表される関数である。
【数１】
2020008993.tif 000003
【００６４】
なお、ｍａｘ（ａ，ｂ）は、ａまたはｂのうち何れか大きい方の値を出力する関数である。
【００６５】
ニューラルネットワーク２０は、活性化関数として、ＥＬＵを用いることができる。ＥＬＵは、下記の式（２）により表される関数である。
【数２】
2020008993.tif 000004
【００６６】
ニューラルネットワーク２０は、活性化関数として、ハイパボリックタンジェントを用いることができる。ハイパボリックタンジェントは、下記の式（３）により表される関数である。
【数３】
2020008993.tif 000005
【００６７】
ニューラルネットワーク２０は、活性化関数として、ソフトサインを用いることができる。ソフトサインは、下記の式（４）により表される関数である。
【数４】
2020008993.tif 000006
【００６８】
ニューラルネットワーク２０は、活性化関数として、ソフトプラスを用いることができる。ソフトプラスは、下記の式（５）により表される関数である。
【数５】
2020008993.tif 000007
【００６９】
ニューラルネットワーク２０は、活性化関数として、ＳｅＬＵを用いることができる。ＳｅＬＵは、下記の式（６）により表される関数である。
【数６】
2020008993.tif 000008
【００７０】
ニューラルネットワーク２０は、活性化関数として、Ｓｈｉｆｔｅｄ  ＲｅＬＵを用いることができる。Ｓｈｉｆｔｅｄ  ＲｅＬＵは、下記の式（７）により表される関数である。
【数７】
2020008993.tif 000009
【００７１】
ニューラルネットワーク２０は、活性化関数として、Ｔｈｒｅｓｈｏｌｄｅｄ  ＲｅＬＵを用いることができる。Ｔｈｒｅｓｈｏｌｄｅｄ  ＲｅＬＵは、下記の式（８）により表される関数である。
【数８】
2020008993.tif 000010
【００７２】
ニューラルネットワーク２０は、活性化関数として、Ｃｌｉｐｐｅｄ  ＲｅＬＵを用いることができる。Ｃｌｉｐｐｅｄ  ＲｅＬＵは、下記の式（９）により表される関数である。
【数９】
2020008993.tif 000011
【００７３】
ニューラルネットワーク２０は、活性化関数として、ＣＲｅＬＵを用いることができる。ＣＲｅＬＵは、下記の式（１０）により表される関数である。式（１０）の関数は、一つの入力値ｘに対して、二つの値を出力する。
【数１０】
2020008993.tif 000012
【００７４】
ニューラルネットワーク２０は、活性化関数として、Ｓｗｉｓｈを用いることができる。Ｓｗｉｓｈは、下記の式（１１）により表される関数である。
【数１１】
2020008993.tif 000013
【００７５】
なお、σ（ａ）は、ａを入力値とするシグモイド関数である。
【００７６】
第１実施形態から第３実施形態に係る学習装置１０は、全ての中間層に含まれる全てのノードおよびチャネルに以上のような活性化関数が設定されたニューラルネットワーク２０を最適化する。これにより、学習装置１０は、ニューラルネットワーク２０を所定のアプリケーションに最適化させるとともに、精度低下を抑制しながらサイズを小さくすることができる。
【００７７】
（最適化問題）
つぎに、学習装置１０により適用される最適化問題について説明する。
【００７８】
図７は、ニューラルネットワーク２０における畳み込み層の重み係数を表す図である。図８は、ニューラルネットワーク２０における全結合層の重み係数を表す図である。
【００７９】
本例では、ニューラルネットワーク２０への入力ベクトルを下記の式（１２）のように表す。
【数１２】
2020008993.tif 000014
【００８０】
本例では、出力ベクトルの教師を下記の式（１３）のように表す。
【数１３】
2020008993.tif 000015
【００８１】
学習装置１０は、下記の式（１４）により表されるＮ個のミニバッチサンプルを用いて、ニューラルネットワーク２０を最適化する。なお、学習装置１０は、重み係数の更新を行う毎に、ミニバッチサンプルを選びなおす。
【数１４】
2020008993.tif 000016
【００８２】
ニューラルネットワーク２０の重み係数を下記の式（１５）のように表す。
【数１５】
2020008993.tif 000017
【００８３】
なお、ｌは、層番号を表す。Ｌは、ニューラルネットワーク２０の層数を表す。式（１５）の中カッコ内は、（ｌ−１）層からｌ層への全ての重み係数のベクトルを表す行列である。この行列は、各列に、チャネル毎の重み係数のベクトルを含む。
【００８４】
また、式（１５）において、Ｗ（ｌ-1）、Ｈ（ｌ-1）は、図７に示すように、カーネルの横幅および縦幅を表す。Ｃ（ｌ−１）およびＣ（ｌ）は、入出力のチャネル数を表す。なお、全結合層の場合、チャネル数＝ノード数となる。従って、図８に示すように、ｗ（ｌ-1）＝Ｈ（ｌ-1）＝１となる。
【００８５】
ニューラルネットワーク２０のバイアスを下記の式（１６）のように表す。
【数１６】
2020008993.tif 000018
【００８６】
ニューラルネットワーク２０は、最終層（ｌ＝Ｌ）を除いた全ての層で同一の活性化関数（η（・））を用いる。従って、各層に与えられる入力ベクトルは、下記の式（１７）のように表される。
【数１７】
2020008993.tif 000019
【００８７】
なお、式（１７）は、全結合層の場合の表記である。畳み込み層の場合は、ｘ（ｌ）は、画像の画素位置ごとに計算される必要がある。しかし、本例では、簡単のため式（１７）の表記を用いる。
【００８８】
ニューラルネットワーク２０を以上のように定義した場合、学習装置１０により適用される最適化問題は、下記の式（１８）により定義される。
【数１８】
2020008993.tif 000020
【００８９】
式（１８）において、Ｌ（・）は、基本損失関数である。λは、正則化強度である。λは、非負の値である。
【００９０】
式（１８）に示すように、学習装置１０により適用される最適化問題は、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化するように定義される。
【００９１】
ｌ層目のｋ番目の重み係数のベクトルは、下記の式（１９）で表される。
【数１９】
2020008993.tif 000021
【００９２】
この場合、ｌ層目のｋ番目の重み係数のベクトルに対する勾配は、下記の式（２０）で表される。
【数２０】
2020008993.tif 000022
【００９３】
例えば、活性化関数（η（・））がＲｅＬＵである場合、下記の式（２１）が成り立つ。
【数２１】
2020008993.tif 000023
【００９４】
従って、活性化関数（η（・））がＲｅＬＵである場合、ｌ層目のｋ番目の重み係数のベクトルに対する勾配は、下記の式（２２）で表される。
【数２２】
2020008993.tif 000024
【００９５】
そして、学習装置１０は、予め定められた最適化アルゴリズムを用いて、この勾配を最小化するようにニューラルネットワーク２０に含まれる重み係数を更新する。
【００９６】
第１実施形態から第３実施形態に係る学習装置１０は、基本損失関数と正則化強度を乗じたＬ２正則化項とを加算した目的関数を最小化する最適化問題を解いて、ニューラルネットワーク２０を最適化する。これにより、学習装置１０は、ニューラルネットワーク２０を所定のアプリケーションに最適化させるとともに、精度低下を抑制しながらサイズを小さくすることができる。
【００９７】
（最適化アルゴリズム）
つぎに、学習装置１０により適用される最適化アルゴリズムについて説明する。学習装置１０の更新部３８は、次に説明する最適化アルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新する。
【００９８】
なお、以下の説明に示す数式において、ｗは、最適化する対象となる重み係数のベクトルを表す。Ｅ（ｗ）は、最適化に用いる評価関数を表す。ｇは、評価関数の勾配を表すベクトルである。ｔは、反復回数を表す。
【００９９】
また、以下の説明に示す数式において、ηは、学習率を表す定数である。εは、定数である。ρ，ρ１，ρ２，ρｔは、０より大きく１より小さい定数であり、過去のパラメータをどれだけ現在のパラメータに影響させるかを表す値である。
【０１００】
更新部３８は、Ａｄａｍのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。Ａｄａｍでは、下記の式（２３）に従って、重み係数のベクトルを更新する。
【０１０１】
【数２３】
2020008993.tif 000025
【０１０２】
また、更新部３８は、ＲＭＳｐｒｏｐのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。ＲＭＳｐｒｏｐでは、下記の式（２４）に従って、重み係数のベクトルを更新する。
【０１０３】
【数２４】
2020008993.tif 000026
【０１０４】
また、更新部３８は、ＡｄａＤｅｌｔａのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。ＡｄａＤｅｌｔａでは、下記の式（２５）に従って、重み係数のベクトルを更新する。
【０１０５】
【数２５】
2020008993.tif 000027
【０１０６】
また、更新部３８は、ＲＭＳｐｒｏｐＧｒａｖｅｓのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。ＲＭＳｐｒｏｐＧｒａｖｅｓでは、下記の式（２６）に従って、重み係数のベクトルを更新する。
【０１０７】
【数２６】
2020008993.tif 000028
【０１０８】
また、更新部３８は、ＳＭＯＲＭＳ３のアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。ＳＭＯＲＭＳ３のアルゴリズムでは、下記の式（２７）に従って、重み係数のベクトルを更新する。
【０１０９】
【数２７】
2020008993.tif 000029
【０１１０】
図９は、ＡｄａＭａｘによる重み係数の最適化アルゴリズムを表す疑似コード１５０を示す図である。更新部３８は、としてＡｄａＭａｘのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。ＡｄａＭａｘでは、図９に示すアルゴリズムに従って、重み係数のベクトルを更新する。
【０１１１】
図１０は、Ｎａｄａｍによる重み係数の最適化アルゴリズムを表す疑似コード１６０を示す図である。更新部３８は、Ｎａｄａｍのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。Ｎａｄａｍでは、図１０に示すアルゴリズムに従って、重み係数のベクトルを更新する。
【０１１２】
図１１は、Ａｄａｍ−ＨＤによる重み係数の最適化アルゴリズムを表す疑似コード１７０を示す図である。更新部３８は、Ａｄａｍ−ＨＤのアルゴリズムを用いて、ニューラルネットワーク２０に含まれる重み係数を更新することができる。Ａｄａｍ−ＨＤでは、図１１に示すアルゴリズムに従って、重み係数のベクトルを更新する。
【０１１３】
第１実施形態から第３実施形態に係る学習装置１０は、以上のような最適化アルゴリズムを用いてニューラルネットワーク２０を最適化する。これにより、学習装置１０は、ニューラルネットワーク２０を所定のアプリケーションに最適化させるとともに、精度低下を抑制しながらサイズを小さくすることができる。
【０１１４】
（第１実験例）
つぎに、第１実験例について説明する。
【０１１５】
図１２は、第１実験例での基本条件を示す図である。第１実験例では、全結合層を中間層として含むニューラルネットワーク２０を学習装置１０で最適化した。第１実験例は、複数の訓練情報として、ＭＮＩＳＴデータセットを用いた。ＭＮＩＳＴデータセットは、０〜９の１０パターンの手書き数字のグレースケール画像（２８×２８）のデータセットである。学習用に６万枚、バリデーション用に１万枚の画像を利用した。
【０１１６】
また、第１実験例では、訓練情報の入力データのそれぞれについて、画素値を１／２５５することで画素値を０〜１の範囲に正規化した。第１実験例では、データオーギュメンテーションを無しとした。第１実験例では、ミニバッチサイズを６４とした。第１実験例では、エポック数を１００とした。第１実験例では、基本の学習率を、２５エポックごとに０．５倍とした。
【０１１７】
さらに、第１実験例では、下記の式（２８）の条件を満たす重み係数のベクトルを、グループスパース化した重み係数のベクトルと判断した。
【数２８】
2020008993.tif 000030
【０１１８】
【表１】
2020008993.tif 000031
【０１１９】
表１は、第１実験例において、最適化アルゴリズムを実現するための最適化ソルバーとして、Ａｄａｍ（ｌｒ＝０．００１）、ｍｏｍｅｎｔｕｍ−ＳＧＤ（ｍＳＧＤ）（ｌｒ＝０．０１）（非特許文献１）、ａｄａｇｒａｄ（ｌｒ＝０．０１）（非特許文献２）およびＲＭＳｐｒｏｐ（ｌｒ＝０．００１）を用いた場合における、バリデーション精度（Ｖａｌｉｄａｔｉｏｎ  Ａｃｃ．［％］）、および、グループスパース化した重み係数のベクトルの割合（スパース化割合）（Ｓｐａｒｓｉｔｙ［％］）を示している。
【０１２０】
表１の実験は、基本条件に加えて、式（２８）の閾値をξ＝１．０×１０−１５としている。さらに、表１の実験では、ニューラルネットワーク２０の中間層を１層とし、中間層のノード数を１０００個とし、活性化関数をＲｅＬＵとしている。さらに、表１の実験は、Ｌ２正則化項の正則化強度をλ＝５．０×１０−４とし、バッチノーマライゼーションを有りとし、初期化値としてＸａｖｉｅｒの手法（非特許文献５）を用いている。
【０１２１】
表１の実験では、最適化ソルバーがＲＭＳｐｒｏｐおよびＡｄａｍである場合、グループスパース化した重み係数のベクトルが発生することが確認できた。ＲＭＳｐｒｏｐおよびＡｄａｍは、勾配の二乗の指数移動平均で更新のステップ幅を決定する。ＲＭＳｐｒｏｐおよびＡｄａｍは、このような勾配の二乗の指数移動平均を用いているので、グループスパース化した重み係数のベクトルが発生したと考えられる。従って、例えばＡｄａＤｅｌｔａ等の、勾配の二乗の指数移動平均を用いる他の最適化ソルバーを用いても、グループスパース化した重み係数が発生すると予測される。
【０１２２】
【表２】
2020008993.tif 000032
【０１２３】
【表３】
2020008993.tif 000033
【０１２４】
表２および表３は、第１実験例において、活性化関数として、ＲｅＬＵ、ハイパボリックタンジェント（ＴＡＮＨ）、ＥＬＵおよびシグモイドを用いた場合の、バリデーション精度およびグループスパース化した重み係数のベクトルの割合を示している。
【０１２５】
表２の実験は、式（２８）の閾値をξ＝１．０×１０−１５としている。表３の実験は、式（２８）の閾値をξ＝１．０×１０−６としている。
【０１２６】
なお、表２の実験および表３の実験は、最適化ソルバーとして、Ａｄａｍを用いている。表２の実験および表３の実験における他の条件は、表１の実験と同様である。
【０１２７】
表２および表３の実験では、活性化関数がＲｅＬＵ、ハイパボリックタンジェント（ＴＡＮＨ）およびＥＬＵの場合、グループスパース化した重み係数のベクトルが発生することが確認できた。
【０１２８】
ＲｅＬＵ、ハイパボリックタンジェント（ＴＡＮＨ）およびＥＬＵは、微分関数が０となる入力値の区間を含む、または、微分関数が０に漸近する入力値の区間を含む関数である。微分関数が０となる入力値の区間（または０に非常に近い入力値の区間）が存在する活性化関数は、勾配が小さくなる場合がある。このため、このような活性化関数につながる重み係数のベクトルでは、損失関数による勾配よりもＬ２正則化による原点に向かう勾配が支配的となり、更新を繰り返した結果、グループスパース化した重み係数のベクトルが発生すると考えられる。従って、微分関数が０となる入力値の区間を含む活性化関数および微分関数が０に漸近する入力値の区間を含む活性化関数が設定されたニューラルネットワーク２０は、グループスパース化した重み係数のベクトルが発生すると予測される。
【０１２９】
また、表２および表３を見ると、ＲｅＬＵおよびＥＬＵは、スパース化割合が大きい。ＲｅＬＵおよびＥＬＵは、微分関数が、所定の入力値より正側の入力値の区間（例えば、０より大きい入力値の区間）が０より大きく、所定の入力値より負側の入力値の区間（例えば、０より小さい入力値の区間）が０または０に漸近する。ＲｅＬＵおよびＥＬＵは、ハイパボリックタンジェント（ＴＡＮＨ）およびシグモイドと比較して、微分関数が０となる入力値の区間（または０に非常に近い入力値の区間）が広く、勾配が小さくなる可能性が高い。このため、このような活性化関数を用いたニューラルネットワーク２０は、損失関数による勾配よりもＬ２正則化による原点に向かう勾配が支配的となり、この結果、グループスパース化した重み係数のベクトルが発生する可能性が高いと考えられる。従って、微分関数が、所定の入力値より正側の入力値の区間（例えば、０より大きい入力値の区間）が０より大きく、所定の入力値より負側の入力値の区間（例えば、０より小さい入力値の区間）が０または０に漸近する活性化関数が設定されたニューラルネットワーク２０は、グループスパース化した重み係数のベクトルが非常に多く発生すると予測される。
【０１３０】
【表４】
2020008993.tif 000034
【０１３１】
表４は、第１実験例において、初期化値として、ＸａｖｉｅｒおよびＨｅの手法（非特許文献６）を用いた場合のバリデーション精度およびグループスパース化した重み係数のベクトルの割合を示している。なお、表４の実験は、活性化関数としてＲｅＬＵを用い、最適化ソルバーとしてＡｄａｍを用いている。表４の実験における他の条件は、表１の実験と同様である。
【０１３２】
表４の実験では、初期化値としてＸａｖｉｅｒを用いても、Ｈｅを用いてもバリデーション精度およびスパース化割合に影響はないことが確認できた。従って、初期化値を変えても、グループスパース化した重み係数の数を変えることができない、と予測される。
【０１３３】
【表５】
2020008993.tif 000035
【０１３４】
表５は、第１実験例において、バッチノーマライゼーションが有る場合と無い場合のバリデーション精度およびグループスパース化した重み係数のベクトルの割合を示している。なお、表５の実験は、活性化関数としてＲｅＬＵを用い、最適化ソルバーとしてＡｄａｍを用いている。表５の実験における他の条件は、表１の実験と同様である。
【０１３５】
表５の実験では、バッチノーマライゼーションの有無によってスパース化割合に影響はないことが確認できた。従って、バッチノーマライゼーションの有無を変えても、グループスパース化した重み係数の数を変えることができない、と予測される。
【０１３６】
【表６】
2020008993.tif 000036
【０１３７】
表６は、第１実験例において、Ｌ２正則化項を適用した場合と、Ｌ２正則化項を適用しなかった場合（正則化強度をλ＝０とした場合）のバリデーション精度およびグループスパース化した重み係数のベクトルの割合を示している。なお、表６の実験は、活性化関数としてＲｅＬＵを用い、最適化ソルバーとしてＡｄａｍを用いている。表６の実験における他の条件は、表１の実験と同様である。
【０１３８】
表６の実験では、Ｌ２正則化項を適用しない場合（正則化強度をλ＝０とした場合）、グループスパース化した重み係数のベクトルが発生しないことが確認できた。従って、学習装置１０は、Ｌ２正則化項を適用した目的関数を用いて学習することが、グループスパース化した重み係数のベクトルを発生させるための必須条件と予測される。
【０１３９】
【表７】
2020008993.tif 000037
【０１４０】
表７は、第１実験例において、中間層のノード数を１０、５０、１００、５００、１０００および２０００とした場合のバリデーション精度およびノード削除処理を実行した後のノード数（残存ノード数）を示している。なお、表７の実験は、活性化関数としてＲｅＬＵを用い、最適化ソルバーとしてＡｄａｍを用いている。表７の実験における他の条件は、表１の実験と同様である。
【０１４１】
表７の実験では、中間層のノード数が１０、５０および１００の場合、残存ノード数は、ノード削除処理をする前と同一であることが確認できた。つまり、表７の実験では、中間層のノード数が１０、５０および１００の場合、グループスパース化した重み係数のベクトルは発生しなかった。中間層のノード数が１０、５０および１００の場合にグループスパース化した重み係数のベクトルが発生しなかったのは、比較的に小さい構成のニューラルネットワーク２０では、損失が大きくなるので、勾配が発生しやすいためであると考えられる。
【０１４２】
表７の実験では、中間層のノード数が５００、１０００および２０００の場合、残存ノード数は、ノード削減処理をする前から減少したことが確認できた。つまり、表７の実験では、中間層のノード数が５００、１０００および２０００の場合、グループスパース化した重み係数のベクトルが発生したことが確認できた。中間層のノード数が５００、１０００および２０００の全ての場合で、残存ノード数およびバリデーション精度が同程度である。このことから、実験によって、ニューラルネットワーク２０における冗長な構成が削減されたと考えられる。
【０１４３】
【表８】
2020008993.tif 000038
【０１４４】
表８は、第１実験例において、中間層の数を、１層、２層、３層、４層および５層とした場合のバリデーション精度および層毎の残存ノード数を示している。なお、表８の実験は、活性化関数としてＲｅＬＵを用い、最適化ソルバーとしてＡｄａｍを用いている。表８の実験における他の条件は、表１の実験と同様である。
【０１４５】
表８の実験では、最終層（出力層の１つ前の層）の中間層を除いて、深い層（後段の層）ほど残存ノード数が小さい傾向があることが確認できた。このような傾向が発生したのは、深い層に進むにつれて特徴量の冗長性が下がっていくものの、最終層では損失関数の勾配が伝播しやすいためであると考えられる。
【０１４６】
（第２実験例）
つぎに、第２実験例について説明する。
【０１４７】
図１３は、第２実験例での基本条件を示す図である。第２実験例では、畳み込み層を中間層として含むニューラルネットワーク２０を学習装置１０で最適化した例を示す。第２実験例は、複数の訓練情報として、ＣＩＦＡＲ−１０データセットを用いた。ＣＩＦＡＲ−１０は、１０パターンの一般物体を表すカラー画像（３２×３２）のデータセットである。第２実験例では、学習用に５万枚、バリデーション用に１万枚の画像を利用した。また、畳み込み層が１３層と、全結合層が３層とから成る１６層のニューラルネットワーク２０を用いた。
【０１４８】
また、第２実験例では、訓練情報の入力データのそれぞれについて、３チャンネルにわたる全画素値の平均と標準偏差を計算し、各画素からその平均を引き標準偏差で割ることで画素値を正規化した。第２実験例では、データオーギュメンテーションを無しとした。第２実験例では、ミニバッチサイズを６４とした。第２実験例では、エポック数を４００とした。第２実験例では、学習率を、２５エポックごとに０．５倍とした。
【０１４９】
【表９】
2020008993.tif 000039
【０１５０】
表９は、第２実験例において、最適化ソルバーとして、ｍＳＧＤ（ｌｒ＝０．０１）、Ａｄａｍ（ｌｒ＝０．００１）、ＡｄａｍＷ（ｌｒ＝０．００１）（非特許文献３）およびＡＭＳＧＲＡＤ（ｌｒ＝０．００１）（非特許文献４）を用いた場合における、バリデーション精度、および、グループスパース化した重み係数のベクトルの割合を示している。なお、バリデーション精度は、４００エポックの中での最大値である。
【０１５１】
なお、表９では、Ａｄａｍにおいて、正則化強度をλ＝０とした場合のバリデーション精度、および、グループスパース化した重み係数のベクトルの割合も示した。他の最適化ソルバーでは、正則化強度は、λ＝５．０×１０−４である。ＡｄａｍＷおよびＡＭＳＧＲＡＤは、Ｌ２正則化による原点方向への減衰が大きくなりすぎないような工夫がなされていることからグループスパース化が発生しない。
【０１５２】
表９の実験では、畳み込み層を中間層として含むニューラルネットワーク２０についても、グループスパース化した重み係数のベクトルを発生させることができることが確認できた。
【０１５３】
図１４は、グループスパース化した重み係数のベクトルの割合に対する、バリデーション精度を示した図である。
【０１５４】
図１４の三角形のプロットは、非特許文献７に示されている、ｍＳＧＤを用い、正則化強度（λ）を変更した場合のスパース化割合およびバリデーション精度の関係である。非特許文献７に示されている方法を用いた場合、λの設定によって、スパース化割合およびバリデーション精度の関係にばらつきが大きい。
【０１５５】
図１４の四角形のプロットは、第２実験例において、Ａｄａｍを用い、正則化強度（λ）を変更した場合のスパース化割合およびバリデーション精度の関係である。図１４の四角形のプロットから、正則化強度（λ）が小さい程、バリデーション精度が高くなる傾向があることが確認できた。また、図１４の四角形のプロットから、正則化強度（λ）が大きい程、スパース化割合が大きいことが確認できた。従って、正則化強度（λ）を変更することにより、スパース化割合およびバリデーション精度を制御することができると予測される。
【０１５６】
（ハードウェア構成）
図１５は、実施形態に係る学習装置１０のハードウェア構成の一例を示す図である。本実施形態に係る学習装置１０は、例えば図１５に示すようなハードウェア構成の情報処理装置により実現される。学習装置１０は、ＣＰＵ（Central  Processing  Unit）２０１と、ＲＡＭ（Random  Access  Memory）２０２と、ＲＯＭ（Read  Only  Memory）２０３と、操作入力装置２０４と、表示装置２０５と、記憶装置２０６と、通信装置２０７とを備える。そして、これらの各部は、バスにより接続される。
【０１５７】
ＣＰＵ２０１は、プログラムに従って演算処理および制御処理等を実行するプロセッサである。ＣＰＵ２０１は、ＲＡＭ２０２の所定領域を作業領域として、ＲＯＭ２０３および記憶装置２０６等に記憶されたプログラムとの協働により各種処理を実行する。
【０１５８】
ＲＡＭ２０２は、ＳＤＲＡＭ（Synchronous  Dynamic  Random  Access  Memory）等のメモリである。ＲＡＭ２０２は、ＣＰＵ２０１の作業領域として機能する。ＲＯＭ２０３は、プログラムおよび各種情報を書き換え不可能に記憶するメモリである。
【０１５９】
操作入力装置２０４は、マウスおよびキーボード等の入力デバイスである。操作入力装置２０４は、ユーザから操作入力された情報を指示信号として受け付け、指示信号をＣＰＵ２０１に出力する。
【０１６０】
表示装置２０５は、ＬＣＤ（Liquid  Crystal  Display）等の表示デバイスである。表示装置２０５は、ＣＰＵ２０１からの表示信号に基づいて、各種情報を表示する。
【０１６１】
記憶装置２０６は、フラッシュメモリ等の半導体による記憶媒体、または、磁気的若しくは光学的に記録可能な記憶媒体等にデータを書き込みおよび読み出しをする装置である。記憶装置２０６は、ＣＰＵ２０１からの制御に応じて、記憶媒体にデータの書き込みおよび読み出しをする。通信装置２０７は、ＣＰＵ２０１からの制御に応じて外部の機器とネットワークを介して通信する。
【０１６２】
本実施形態の学習装置１０で実行されるプログラムは、入力モジュール、実行モジュール、出力モジュール、取得モジュール、誤差算出モジュール、反復制御モジュール、更新モジュール、特定モジュールおよび削除モジュールを含むモジュール構成となっている。このプログラムは、ＣＰＵ２０１（プロセッサ）によりＲＡＭ２０２上に展開して実行されることにより、情報処理装置を入力部２２、実行部２４、出力部２６、取得部３２、誤差算出部３４、反復制御部３６、更新部３８、特定部４０および削除部４２として機能させる。
【０１６３】
なお、学習装置１０は、このような構成に限らず、入力部２２、実行部２４、出力部２６、取得部３２、誤差算出部３４、反復制御部３６、更新部３８、特定部４０および削除部４２の少なくとも一部をハードウェア回路（例えば半導体集積回路）により実現した構成であってもよい。
【０１６４】
また、本実施形態の学習装置１０で実行されるプログラムは、コンピュータにインストール可能な形式または実行可能な形式のファイルで、ＣＤ−ＲＯＭ、フレキシブルディスク、ＣＤ−Ｒ、ＤＶＤ（Digital  Versatile  Disk）等のコンピュータで読み取り可能な記録媒体に記録されて提供される。
【０１６５】
また、本実施形態の学習装置１０で実行されるプログラムを、インターネット等のネットワークに接続されたコンピュータ上に格納し、ネットワーク経由でダウンロードさせることにより提供するように構成してもよい。また、本実施形態の学習装置１０で実行されるプログラムをインターネット等のネットワーク経由で提供または配布するように構成してもよい。また、学習装置１０で実行されるプログラムを、ＲＯＭ２０３等に予め組み込んで提供するように構成してもよい。
【０１６６】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１６７】
１０  学習装置
２０  ニューラルネットワーク
２２  入力部
２４  実行部
２６  出力部
３２  取得部
３４  誤差算出部
３６  反復制御部
３８  更新部
４０  特定部
４２  削除部
５２  強度設定部
５４  学習制御部
１１０  自動運転システム
１２２  画像取得部
１２４  車両制御部
【図１】
2020008993.tif 000040
【図２】
2020008993.tif 000041
【図３】
2020008993.tif 000042
【図４】
2020008993.tif 000043
【図５】
2020008993.tif 000044
【図６】
2020008993.tif 000045
【図７】
2020008993.tif 000046
【図８】
2020008993.tif 000047
【図９】
2020008993.tif 000048
【図１０】
2020008993.tif 000049
【図１１】
2020008993.tif 000050
【図１２】
2020008993.tif 000051
【図１３】
2020008993.tif 000052
【図１４】
2020008993.tif 000053
【図１５】
2020008993.tif 000054