(58)【調査した分野】(Int.Cl.,DB名)
サーバ、および電子制御装置を備え、複数のニューロンと、前記ニューロン同士を紐付ける結合情報を複数含む結合情報群とを含むニューラルネットワークを更新するニューラルネットワーク更新システムであって、
前記サーバは、記憶部と、演算部と、を備え、
前記記憶部は、入力値が与えられたときに出力値を決定するための前記結合情報群である第1の結合情報群を格納し、
前記演算部は、
所定のデータが前記入力値として与えられた場合に、前記所定のデータに対する影響度が所定値を上回る複数の前記結合情報である第2の結合情報群を特定する係数特定部と、
前記第1の結合情報群と前記第2の結合情報群とに基づき、前記第1の結合情報群から少なくとも1つの結合情報を削除して第3の結合情報群を作成する間引き部と、を備え、
前記電子制御装置は、前記第3の結合情報群を含むニューラルネットワークを格納するニューラルネットワーク更新システム。
【発明を実施するための形態】
【0008】
以下、本発明の実施の形態について図面を参照して説明する。なお、以下に示す各実施の形態では、同じ構成要素や同じ処理内容等については、同一の番号を記載してその説明を簡略にする。各実施の形態では、人工知能処理を用いたAIモデルを備えた電子制御装置、サーバ、全体システムについての説明において、AIモデルの一例として、ニューラルネットワークを用いて説明する。ただしAIモデルは、機械学習、ディープラーニング、および強化学習に関するモデルであってもよい。すなわち、近似や間引き処理により、最適化できる様々なAIモデルに対して、以下に説明する各実施の形態を適用できる。なお以下に説明する実施の形態では、モデルの最適化は、重み係数やニューロンを間引く方法を例に説明し、その処理のことを「ニューラルネットワークの縮約」として記載する。また以下では、「ニューラルネットワーク」を「NN」と記載することもある。
【0009】
―第1の実施の形態―
以下、
図1〜
図5を参照して、ニューラルネットワーク更新システムの第1の実施の形態を説明する。第1の実施の形態では、高精度な推論が要求されるデータ(以下、「重要データ」とも呼ぶ)に深く関連するニューラルネットワークの結合情報を特定し、その情報を用いて結合情報の間引きを行う。なお、間引き処理は結合情報そのものを削除する方法や、値を0に変更する方法が考えられる。
【0010】
図1は、AIモデルの構造の一例を示す図である。
図1に示すように、ニューラルネットワークモデル1は、入力層10と、中間層11と、出力層12を含み、各層はそれぞれI個、J個、K個の演算ユニット100を持つ。それぞれの演算ユニット100は、
図1の符号101や符号102に示すように、演算ユニット100間の結合情報を基に接続される。入力層10に情報が入力されると、結合情報が加味されて中間層11内で伝搬されて、最終的に出力層12より予測結果に相当する情報が出力される。演算ユニット100間の接続に関する結合情報を本実施の形態では「ネットワーク構造情報」と呼ぶ。演算ユニット100は前述の「ニューロン」に相当する。
【0011】
結合情報は結合係数とバイアスから構成され、その結合係数を係数とする演算が行われつつ情報は入力層10から出力層12に伝搬される。AIモデルの演算で使用される結合係数のことを本実施の形態では「重み係数」と呼ぶ。また本実施の形態では、説明を簡略するためにバイアスを除外して結合情報が重み係数のみから構成されるとして説明する。すなわち本実施の形態では、結合情報と重み係数は同一である。ただし結合情報にバイアスが含まれる構成も本発明に含まれる。
【0012】
また本実施の形態では、個別の重み係数を識別するために、それぞれの重み係数に便宜的にIDを付与する。また重み係数の値を「重み係数値」や「重み係数の値」と呼ぶ。すなわち以下では、「IDが11の重み係数の重み係数値はxx」のように表現する。演算の内容は、結合情報に含まれる層の種類によって特定される。結合情報に含まれる層は、たとえば、畳込み層、バッチ正規化、活性化関数、プーリング層、全結合層、LSTM(Long Short Term Memory)層などである。
【0013】
なお演算ユニット100の数や、中間層11を構成する層の数は、実施の形態とは無関係であるため、任意の値とする。また、AIモデルの構造も特段の限定はされず、たとえば演算ユニット100間の結合に再帰性や双方向性を持つものであってもよい。さらに教師有り、教師無しのいずれの機械学習モデル、および強化学習モデル等、いずれのAIモデルに対しても、本実施の形態を適用可能である。これは、高精度な推論が要求される優先度の高いデータに対する推論精度に影響を与えることなく、AIモデルの重み係数や演算ユニットを間引いてAIモデルを縮約できるためである。ただし重み係数の重み係数値をゼロに変更することも、重み係数を間引くことに含まれる。
【0014】
図2は、第1の実施の形態におけるニューラルネットワーク更新システム2の構成図である。ニューラルネットワーク更新システム2は、記憶部20と、サーバ21と、電子制御装置22とから構成される。
図2に示すように、サーバ21と電子制御装置22は、ネットワーク23を介して接続される。なお
図2では記憶部20はサーバ21と直接に接続されているが、記憶部20がサーバ21とネットワーク23を介して接続されてもよい。
【0015】
本実施の形態では、サーバ21にてニューラルネットワークの縮約を行い、電子制御装置22はその縮約されたニューラルネットワークをサーバからダウンロードして更新する。これにより、自動運転などのアプリケーションにおいて、ニューラルネットワークを用いた演算処理を実行する。ただし、本実施の形態はこのような構成に限定されない。すなわちサーバ21を介さず、電子制御装置22を備える車両に閉じてニューラルネットワークの追加学習と更新を行うアーキテクチャになる場合など、上述の機能の全部または一部を電子制御装置22に搭載する構成としてもよい。
【0016】
記憶部20は、不揮発性の記憶領域、たとえばフラッシュメモリである。記憶部20には、ニューラルネットワークの学習、生成、および縮約処理において、サーバ21が使用するニューラルネットワーク情報やデータセットが格納される。具体的には記憶部20には、縮約前ニューラルネットワーク200と、縮約後ニューラルネットワーク201と、重要データ202と、通常データ203とが含まれる。
【0017】
縮約前ニューラルネットワーク200は、縮約を適用する前のニューラルネットワークの情報を指し、第1の結合情報群2000とネットワーク構造情報2001とから構成される。第1の結合情報群2000は縮約適用前のニューラルネットワークの重み係数の重み係数値である。ネットワーク構造情報2001は縮約適用前のニューラルネットワークのネットワーク構造情報である。縮約前NN200はたとえば、
図1に示すニューラルネットワークモデル1の全体である。第1の結合情報群2000はたとえば、
図1に示したNNモデル1から抽出した全ての重み係数の重み係数値である。またネットワーク構造情報2001はたとえば、NNモデル1から全ての重み係数の重み係数値を除いた情報である。
【0018】
縮約後ニューラルネットワーク201は、縮約を適用した後のニューラルネットワークの情報であり、第3の結合情報群2010とネットワーク構造情報2011とから構成される。第3の結合情報群2010は縮約適用後のニューラルネットワークの重み係数の重み係数値を指す。ネットワーク構造情報2011は縮約適用前のニューラルネットワークのネットワーク構造情報を指す。なお、縮約適用前後でニューラルネットワークのネットワーク構造情報に相違がない場合は、ネットワーク構造情報2001とネットワーク構造情報2011は同一のものとなる。
【0019】
重要データ202および通常データ203は、あらかじめ作成されたデータ群であり、ニューラルネットワークの構築や推論のテストに用いられる。重要データ202および通常データ203に含まれるそれぞれデータは、たとえば走行中の車両が収集したセンサ出力と、前方を走行する車両との相対距離と、前方を走行する車両が同一レーンを走行しているか否かの情報の組み合わせである。
【0020】
重要データ202は、高精度な推論が要求されるデータであり、たとえば車両走行制御に直接関連し、推論の誤りを可能な限り低減したいデータ群である。重要データ202はたとえば、相対距離が近く、かつ同一レーンを走行している場合のデータである。通常データ203は、重要データ202以外の、車両走行制御に直接関係しないデータ群である。通常データ203はたとえば、相対距離が非常に遠いデータや、異なるレーンを走行している場合のデータである。あるデータが重要データ202および通常データ203のどちらに分類されるかは、次に説明するデータセット管理テーブル30を参照してサーバ21が演算処理により決定してもよいし、サーバ21のオペレータがあらかじめ定められたルールに従い決定してもよい。
【0021】
図3はデータセット管理テーブル30の一例を示す図である。データセット管理テーブル30は複数のレコードから構成され、各レコードは、データ種別名300、優先度判定条件301、優先度302、操作係数303から構成される。データ種別名300はデータを識別するために便宜的に設けた名称である。したがってデータ種別名300は識別可能であればどのような文字列でもよい。優先度判定条件301は、優先度を判定するための条件であり、換言すると当該レコードへの該当性を示す条件である。
【0022】
優先度302は数値が大きいほど優先度が高い、すなわちより高精度な推論が要求されることを示す。それぞれのデータは、この優先度の値により重要データ202または通常データ203に分類されてもよい。操作係数303は、縮約時に用いられる情報であり、たとえば間引きの対象となる重み係数、すなわち間引きの対象となる重み係数のIDを決定するために使用される。
【0023】
優先度判定条件301は、相対距離3010と先行車フラグ3011とから構成される。相対距離3010は自車とオブジェクトとの相対距離を表す情報であり、相対距離の値が小さいほど、優先度302の値は大きい、すなわち本データの優先度は高いと判定する傾向にある。先行車フラグ3011は、対象のオブジェクトが自車から見て同一走行レーン上の先行車にあたるか否かを表すフラグ情報である。
【0024】
先行車フラグ3011がTRUEの場合は、優先度の値は大きくなる傾向にある。
図3の1行目に示す例では、先行車フラグ3011がオンかつ相対距離3010が30メートル以内の場合は、オブジェクト検出用データ1と判断され、優先度302は3、操作係数は2に設定される。また
図3の最終行に示す例では、先行車フラグ3011がFALSEの場合は相対距離3010が500メートル以内は全てオブジェクト検出用データ4と判断され、優先度302は1、操作係数は1に設定される。
【0025】
図2の説明に戻る。サーバ21は演算部210と、プログラム格納部211と、RAM212とを備える。演算部210は、中央演算装置であるCPU(Central Processing Unit)2100をハードウェアとして少なくとも備えており、CPU2100はプログラム格納部211に格納されたプログラムに従ってニューラルネットワークの学習、生成、および縮約処理を実行する。ただしプログラム格納部211に格納されたプログラムと同様の機能をハードウエア回路として実現してもよい。さらに、プログラム格納部211に格納される全てのプログラムの機能がハードウエア回路として実現される場合は、サーバ21はプログラム格納部211を備えなくてもよい。
【0026】
ニューラルネットワークの学習・生成・縮約を高速化するため、演算部210にアクセラレータ2101が含まれてもよい。アクセラレータ2101は、FPGA、ASIC、およびGPU等のハードウェアデバイスが考えられる。
【0027】
プログラム格納部211は、フラッシュメモリ等の不揮発性半導体メモリを備える。プログラム格納部211には、演算係数特定部2110と、操作係数決定部2111と、係数群算出部2112と、間引き部2113と、NN実行制御部2114と、NN学習制御部2115とを実現するためのプログラムが格納される。これらのプログラムは演算部210により実行される。これらのプログラムの動作は
図4〜
図5を参照して後に説明する。またプログラムの構成は任意であり、どのようにプログラムの結合や分離がされてもよい。たとえば、1つのプログラムが演算係数特定部2110、操作係数決定部2111、係数群算出部2112、間引き部2113、NN実行制御部2114、およびNN学習制御部2115に相当する機能の全てを兼ね備えてもよい。
【0028】
RAM212は揮発性半導体メモリである。RAM212には、演算部210がプログラムを実行するためのデータ、たとえば第2の結合情報群2120が格納される。第2の結合情報群2120は、ニューラルネットワークを縮約する際の判定条件として使用される。第2の結合情報群2120は、「重要関連WHI」とも呼ばれる。詳しくは後述する。
【0029】
ネットワーク23は、電子制御装置22を備える車両がサーバ21へアクセスするための通信網を表す。アクセス手段はたとえばセルラーや無線LANなどの方式が考えられる。これら無線手段以外にOBD(On-Board Diagnostics)やOBD2(On-Board Diagnostics2)を介して有線手段で接続してもよい。
【0030】
電子制御装置22は、記憶部220と、演算部221と、プログラム格納部222と、RAM223とを備える。記憶部220は、フラッシュメモリなどの不揮発性の記憶装置である。記憶部220には縮約後ニューラルネットワーク2200が格納される。縮約後NN2200は、第3の結合情報群22000とネットワーク構造情報22001とから構成される。電子制御装置22に格納される縮約後NN2200は、記憶部20に格納される縮約後NN201と名称は同一であるが、データそのものは必ずしも同一ではない。ただし出荷直後の初期状態では、縮約後NN2200と縮約後NN201とは同一である。
【0031】
演算部221は、中央演算処理装置であるCPU2210を備える。CPU2210はプログラム格納部222に格納されたプログラムに従ってニューラルネットワークを用いた推論処理やニューラルネットワークの学習処理を実行する。演算部221は、これら推論や学習処理を高速化するため、アクセラレータ2101を備えてもよい。アクセラレータ2101はFPGA、ASIC、GPU等のハードウェアデバイスが考えられる。プログラム格納部222は、フラッシュメモリ等の不揮発性半導体メモリを備える。プログラム格納部222には、車両走行制御部2220と、NN実行制御部2221とを実現するためのプログラムが格納される。
【0032】
車両走行制御部2220は、認識、認知、および判断などの車両の走行を制御するために必要な機能を有する。なお、車両走行制御部2220が単独で車両の走行を制御するための認識、認知、および判断を実行しなくてもよく、たとえば車両に搭載された他の機器やネットワーク23を介して接続される他の機器と分担・連携してもよい。
【0033】
NN実行制御部2221は、記憶部220に格納された縮約後NN2200を用いて、推論処理を実行する。図示はしていないが、電子制御装置22は推論処理だけではなく、縮約後ニューラルネットワーク2200の学習機能をさらに有してもよい。電子制御装置22が学習機能を有することにより、サーバ21と連携することなく、電子制御装置22が単独でニューラルネットワークの追加学習と更新が可能になる。
【0034】
(動作)
図4〜
図5を参照して、サーバ21によるニューラルネットワークの縮約を説明する。
図4はサーバ21によるニューラルネットワークの縮約処理を示すフローチャートである。まずステップS400において、NN学習制御部2115は、学習済みの重み係数値WLEを備えるニューラルネットワーク、すなわち縮約前のニューラルネットワークを生成する。
【0035】
そして、ステップS401において、記憶部20に格納されているデータをデータセット管理テーブル30を参照して重要データ202を選定する。この場合に、たとえば優先度が3以上のデータが重要データ202に分類され、優先度が2以下のデータが通常データ203に分類される。なおこの分類はデータの選定はサーバ21のオペレータが行ってもよいし、サーバ21が演算により選別してもよい。また、データがすでに分類済みの場合はS401の処理を省略してもよい。
【0036】
続いてステップS402において、演算係数特定部2110は、学習済み重み係数値WLEのなかで、重要データ202に関与する重み係数を特定し、そのIDの集合を重要関連WHIとして記録する。すなわち重要関連WHIとは、重要データ202に関与する重み係数のID番号が列挙されたものである。S402の詳細は次の
図5で説明する。
【0037】
続くステップS403において、操作係数決定部2111は、データセット管理テーブル30と重要データ202に基づいて操作係数WCOEFを算出する。操作係数WCOEFはそれぞれの重み係数に対応して存在し、全ての操作係数WCOEFの初期値は同一、たとえばゼロである。
図3に示す例において最上段のオブジェクト検出用データ1に分類される重要データ202を用いて特定された重み係数に対応する操作係数WCOEFには、そのデータの操作係数303の値である「2」が加算される。多くの重要データ202により特定される重み係数に対応する操作係数WCOEFほど大きな値を有することになる。
【0038】
ステップS404において、係数群算出部2112は、重要関連WHIと操作係数WCOEFを用いて、ニューラルネットワークにおける重み係数の間引き適用箇所の判定に用いる評価係数WNEWを算出する。評価係数WNEWも、それぞれの重み係数に対して存在する。評価係数WNEWは、それぞれの重み係数に対して、換言するとそれぞれの重み係数のIDに対して、たとえば次の式1のように算出される。
WNEW=D(WHI)*Val(ID)*WCOEF ・・・ (式1)
【0039】
ただしD(WHI)は、処理対象の重み係数のIDが重要関連WHIに含まれる場合は「1」を返し、処理対象の重み係数のIDが重要関連WHIに含まれない場合はゼロを返す関数である。またVal(ID)は、処理対象のIDである重み係数の重み係数値を返す関数である。詳しくは後述するが、評価係数WNEWは間引きの判定処理で参照される値であり、値が大きいほど間引きがされにくくなる。
【0040】
続くステップS405において、間引き部2113は評価係数WNEWの値に基づいて間引きの対象となる重み係数を決定する。そしてステップS406において、学習済み重み係数値WLEから間引き対象の重み係数の重み係数値をゼロにして、新たなニューラルネットワークを生成する。ただし、重み係数の行成分または列成分のすべてがゼロになった場合は、その行または列を削除してもよい。
【0041】
さらに、各演算ユニット100(ニューロン)に接続される全ての重み係数のセット単位で削除しても良い。これは、演算ユニット100に接続される各重み係数の二乗和をそれぞれ算出して、その値が小さいものから順に重み係数のセットを削除する方法が考えられる。生成されたニューラルネットワークは縮約後NN201として記憶部20に格納され、電子制御装置22に送信されて記憶部220に保存される。なお、間引き適用箇所は1つ以上とする。
【0042】
その後ステップS407において、ステップS406にて新たに生成された新たなニューラルネットワークにおける重み係数を再学習、すなわちファインチューニングによって最適化する。このファインチューニングにより推論精度の向上を図ることが可能となる。ただしステップS407は必須ではなくS406の実行が完了したら
図4に示す処理を終了してもよい。
【0043】
図5は、
図4におけるS402の詳細を示すフローチャートである。
図5に示す処理の実行主体は係数特定部2110である。係数特定部2110はまずS500において、NN実行制御部2114に、重要データ202をステップS400において生成したニューラルネットワークに入力して推論を実行させ、ニューラルネットワークの各演算ユニットの出力OHNUを算出する。続くステップS501では係数特定部2110は、出力OHNUに基づき、活性化度合いが高い演算ユニットNHIを特定する。本処理で特定した演算ユニットは重要データ202に大きく関与している演算ユニットであると判断する。
【0044】
ここで活性化度合いが高いか否かは、出力OHNUが閾値ACTTH以上か否かによって判定する方法が考えられる。別の方法としてはニューラルネットワークの各層毎の全ての出力OHNUのうち、値が大きいものから順に上位から一定の割合を活性化度合いが高いと判定する方法が考えられる。
【0045】
その後、ステップS502において、係数特定部2110は、ステップS501で特定した演算ユニットNHIに対して、演算ユニットNHIと接続される重み係数を特定し、特定した重み係数を重要関連WHIとすることによって、本処理フローを終了する。ステップS502の処理の一例を示すと、演算ユニットNHIが
図1に示す演算ユニット100の場合に、以下のように判断する。すなわち、演算ユニット100に接続される重み係数は結合情報101と結合情報102である。このように、それぞれの演算ユニットに接続される重み係数は、ニューラルネットワークのネットワーク構造情報から一意に特定される。
【0046】
上述した第1の実施の形態によれば、次の作用効果が得られる。
(1)ニューラルネットワーク更新システム2は、サーバ21および電子制御装置22を備える。ニューラルネットワーク更新システム2は、複数のニューロン100と、ニューロン同士を紐付ける
図1の符号101や符号102に示す結合情報を複数含む結合情報群とを含むニューラルネットワークを更新する。サーバ21は、記憶部20と、演算部210と、を備える。記憶部20は、入力値が与えられたときに出力値を決定するための第1の結合情報群2000を格納する。演算部210は、所定のデータが入力値として与えられた場合に、所定のデータに対する影響度が所定値を上回る複数の結合情報である第2の結合情報群2120を特定する係数特定部2110と、第1の結合情報群2000と、第2の結合情報群2120とに基づき、第1の結合情報群2000から少なくとも1つの結合情報を削除して第3の結合情報群2010を作成する間引き部2113と、を備える。電子制御装置22は、第3の結合情報群2010を含む縮約後NN2200を格納する。
【0047】
第3の結合情報群2010は第1の結合情報群2000に比べて結合情報が削除されているので演算量、すなわち消費電力を低減できる。さらに、高精度な推論が要求される重要データに対する影響度を考慮して、削除する結合情報を決定するので、重要データに対する推論精度の低下を限定的に留めることができる。
【0048】
(2)所定のデータとは、車両走行に関する優先度が所定値を上回るデータである。そのため車両の走行に関して高精度な推論が要求されるデータに対する推論制度の低下を限定的に留めることができる。
【0049】
(3)間引き部2113は、第2の結合情報群2120に含まれるそれぞれの結合情報に対応する操作係数の集合である操作係数群を決定し、それぞれの操作係数を第1の結合情報群2000に含まれる対応する結合情報に評価係数を乗算して評価係数群とし、評価係数群のうち所定値を上回る評価係数について、対応する結合情報を第1の結合情報群2000の中から特定し、当該特定された結合情報以外の結合情報を第1の結合情報群2000から削除して、第3の結合情報群2010を作成する。このように、高精度な推論が要求される重要データに対する影響度が所定値を上回る結合情報は削除しないので、重要データに対する推論精度の低下を限定的に留めることができる。
【0050】
(4)係数特定部2110は、複数のニューロン100のうち、所定のデータが与えられた場合の出力値が所定値を上回る場合に、当該出力値の決定に関与したニューロン100を特定し、当該特定されたニューロン100に紐付く結合情報を、第2の結合情報群2120を構成する結合情報として特定する。
【0051】
(変形例1)
記憶部20に格納されるデータ、すなわち重要データ202および通常データ203は、前方を走行する車両との相対距離が含まれていなくてもよい。記憶部20に格納されるデータには、高精度な推論が要求されるか否かを判断可能な情報が含まれていればよい。たとえば記憶部20に格納されるデータに物体の種別と高さが含まれる場合は、データセット管理テーブル30を
図6に示すデータセット管理テーブル31に変更する。
【0052】
図6に示すデータセット管理テーブル31は、第1の実施の形態におけるデータセット管理テーブル30と比べて優先度判定条件301の内容が異なり、優先度判定条件301は識別クラス3012とオブジェクト高さ3013とから構成される。識別クラス3012は物体の種別を示し、
図3に示す例では物体が車両、歩行者、および自転車のいずれかの場合は優先度を高く設定される。オブジェクト高さ3013は物体の高さを示し、高いほうが優先度が高く設定される。
【0053】
なお、記憶部20に格納されるデータに様々な情報が含まれる場合は、このデータを使用するアプリケーションに応じて優先度判定条件301が変更されてもよい。すなわちデータごとに優先度302および操作係数303を決定できればよく、優先度判定条件301は他の情報を用いてもかまわない。たとえば優先度判定条件301が、自己位置推定、センサフュージョン、マップフュージョン、フリースペース検知、オブジェクトの移動予測、および走行軌道計画などAIが使用される他の自動運転ロジックに関する条件でもよい。
【0054】
(変形例2)
電子制御装置22の記憶部220に縮約前NN220がさらに格納され、縮約後NN2200に何らかの問題が発生した場合に縮約前NN220に切り替えて、ニューラルネットワークを用いた演算処理を実行してもよい。何らかの問題とはたとえば、縮約後NN2200の出力結果を用いたことで、衝突回避のため急ブレーキを動作せざるを得なくなることである。このような問題が生じた場合に縮約前NN220に切り替えることで、縮約処理を施したことによる車両走行への影響を排除することができる。
【0055】
(変形例3)
評価係数WNEWの決定方法は、第1の実施の形態において示した式1を用いる方法に限定されない。重要データ202に関与する重み係数が間引きされにくくなるように、評価係数WNEWの値が大きくなるようにすればよい。たとえば、処理対象のIDである重み係数の重み係数値に対して操作係数WCOEFなどのような補正値を用いてビットシフト演算を行い評価係数WNEWを算出してもよい。また処理対象のIDである重み係数の重み係数値に操作係数WCOEFなどの補正値を加算して評価係数WNEWを算出してもよい。
【0056】
(変形例4)
図7は変形例4における、
図3に示すステップS402の詳細を示す図である。すなわち本変形例では、
図5に示す処理の代わりに
図6に示す処理が実行される。ただし第1の実施の形態と同一の処理には同一のステップ番号を付して説明を省略する。
図7ではまずステップS500を実行し、第1の実施の形態と同様に出力OHNUを算出する。
【0057】
続くステップS601において、NN学習制御部2115は通常データ203をニューラルネットワークへの入力として推論を実行し、ニューラルネットワークの各演算ユニットの出力OLNUを算出する。そして、ステップS602において、演算係数特定部2110は、OHNUとOLNUに基づき、たとえばOHNUとOLNUの差に基づき、活性化度合いが高い演算ユニットNHIを特定する。続くS502では、第1の実施の形態と同様に重要関連WHIを特定して
図7に示す処理を終了する。
【0058】
図8は、ステップS602の処理の一例を示す図である。
図8(a)は、ステップS600における演算ユニットごとのOHNUを示す図であり、
図8(b)は、ステップS601における演算ユニットごとのOLNUを示す図であり、
図8(c)は演算ユニットごとにOHNUとOLNUの差分を示す図である。ただし
図8(a)〜(c)において横軸方向に異なる演算ユニットの出力が並んでおり、
図8(a)〜(c)の左右方向の位置が同一であれば同一の演算ユニットについて示している。
【0059】
図8では、それぞれの演算ユニットにIDを割り当てている。たとえばIDが「n11」の演算ユニットは
図8(a)〜
図8(c)の左端に示されており、
図8(a)と
図8(b)の差が
図8(c)である。そして
図8(c)において、閾値WTHを設定し、閾値WTHよりも大きい演算ユニットを活性化度合いが高い演算ユニットNHIとして特定する。
【0060】
(変形例5)
図9は変形例5における、
図3に示すステップS402の詳細を示す図である。すなわち本変形例では、
図5に示す処理の代わりに
図9に示す処理が実行される。ただし第1の実施の形態と同一の処理には同一のステップ番号を付して説明を省略する。本変形例では、重要データ202に大きく関連する演算ユニットを特定せずに重み係数を特定する。
【0061】
図9ではまずステップS800において、NN学習制御部2115は、重要データ202を用いてニューラルネットワークの追加学習を行い、追加学習後の重み係数WHADDLEを算出する。ステップS800における追加学習で用いるデータは、縮約前NN200を生成する際に用いたデータとは異なるものである。
【0062】
続くステップS801において、係数特定部2110は、追加学習前の重み係数値WLEと追加学習後の重み係数値WHADDLEとに基づき、たとえば両者の重み係数値の差を演算して重要データ202に関与する重み関数を特定する。追加学習前の重み係数値WLEとは、
図4のS400において算出した重み係数値WLEである。そして
図9に示す処理を終了する。
【0063】
図10は、
図9に示す処理の一例を示す図である。
図10(a)は、縮約前NN200の重み係数のIDごとに重み係数値WLEを示す図であり、
図10(b)は、ステップS800における重み係数のIDごとに重み係数値WHADDLEを示す図であり、
図10(c)は重み係数ごとに重み係数値WHADDLEと重み係数値WLEの差分を示す図である。
【0064】
たとえば、重み係数値WHADDLEと重み係数値WLEの差が所定の閾値WTHよりも大きい重み係数を重要データ202に大きく関連すると判断できる。またこの際に、重み係数値WHADDLEと重み係数値WLEの差の絶対値を評価してもよい。さらに、両者の差が大きいものから順に上位から一定の割合を活性化度合いが高い重み係数と判定してもよい。
【0065】
(変形例6)
図11は変形例6における、
図3に示すステップS402の詳細を示す図である。すなわち本変形例では、
図5に示す処理の代わりに
図11に示す処理が実行される。ただし第1の実施の形態と同一の処理には同一のステップ番号を付して説明を省略する。本変形例では、変形例5と同様に重要データ202に大きく関連する演算ユニットを特定せずに重み係数を特定する。
【0066】
図11ではまずステップS900において、NN学習制御部2115は、重要データ202を用いてニューラルネットワークの学習を行い、重み係数値WHLEを算出する。続くステップS901において、NN学習制御部2115は、通常データ203を用いてニューラルネットワークの学習を行い、重み係数値WLLEを算出する。続くステップS902において、係数特定部2110は、学習済みの重み係数値WHLEと重み係数値WLLEに基づき、重要データ202に関与する重み係数を特定し、重要関連WHIと名付ける。
【0067】
なおステップS900とステップS901は、ステップS400におけるニューラルネットワークを生成する処理において実行されてもよい。また、ステップS400で使用したものと異なる重要データ202および通常データ203を用いてニューラルネットワークの追加学習を行い、これによりステップS900とステップS901の処理を実施してもよい。
【0068】
ステップS902の処理の一例を
図12に示す。
図12(a)は、ステップS900における重み係数のIDごとの重み係数値WHLEを示したものである。
図12(b)は、ステップS901における重み係数のIDごとの重み係数値WHADDLEを示したものである。
図12(c)は重み係数のIDごとの、
図12(a)に示す重み係数値WHLEと、
図12(b)に示す重み係数値WHADDLEとの差を示す図である。
【0069】
図12(c)において、IDごとの差分値が閾値WTH以上か否かの判定を行うことで各重み係数が重要データ202に大きく関連するか否かを判定する。ここで重み係数値WHLEと重み係数値WLLEの差分結果に対して絶対値を取るようにしてもよい。別の方法としては差分値が大きいものから順に上位から一定の割合を活性化度合いが高いと判定する方法が考えられる。
【0070】
(変形例7)
図13は、変形例7におけるシステム構成を示す図である。本変形例では、車両で取得した走行データを活用してサーバ21と連携しながら電子制御装置22に対して縮約したニューラルネットワークを更新する。
図13におけるニューラルネットワーク更新システム2は、
図2で示したシステム構成と比べて、以下のように電子制御装置22の構成が異なる。
【0071】
本変形例では、記憶部220に重要データ2201がさらに保存される。重要データ2201は車両に搭載されるセンサが車両の周囲をセンシングして得られたデータのうち、後述の重要データ選定部2222によって抽出されたデータである。プログラム格納部222には重要データ選定部2222と、NN更新制御部2223と、重要データアップロード部2224とを実行するためのプログラムがさらに格納される。
【0072】
重要データ選定部2222は車両において外界センシング等によって収集したデータの中から車両走行制御に関連し優先度が高いと判定するデータを選定する。選定方法は
図3で説明したものが考えられる。また別の方法として、事故発生には至らなかったが、衝突回避のため急ブレーキが動作した状況に関するセンシングデータを重要データとして選定することが考えられる。それ以外にもドライバによる手動運転時や、ニューラルネットワークを使用しない自動運転ロジックや運転支援ロジックを実行している際、ニューラルネットワークによる推論処理をバックグラウンドで実行しておき、手動運転時の出力結果やニューラルネットワークを用いないロジックの出力結果と、ニューラルネットワークによる推論処理結果に乖離がある場合に、ニューラルネットワークへの入力データを重要データとして選定することが考えられる。
【0073】
NN更新制御部2223は、サーバ21で新たに生成されたニューラルネットワークを取得し、記憶部220に格納される縮約後NN2200を更新する。重要データアップロード部2224は、重要データ選定部2222で選定されて、記憶部220にバッファリングされた重要データ2201を、ネットワーク23を介してサーバ21にアップロードする。
【0074】
(変形例8)
上述した第1の実施の形態では、縮約処理において演算係数を削除する構成を説明した。しかしニューロン、すなわち演算ユニットを削除してもよい。演算ユニットを削除できるのは、その演算ユニットに接続される演算係数が全てゼロになった場合、またはその演算ユニットに接続される演算係数が全て削除された場合である。
【0075】
―第2の実施の形態―
図14〜
図15を参照して、ニューラルネットワーク更新システムの第2の実施の形態を説明する。以下の説明では、第1の実施の形態と同じ構成要素には同じ符号を付して相違点を主に説明する。特に説明しない点については、第1の実施の形態と同じである。本実施の形態では、主に、重み係数を間引く割合を決定する点で、第1の実施の形態と異なる。重み係数を間引く割合を本実施の形態では「縮約率」と呼ぶ。
【0076】
図14は、第2の実施の形態におけるニューラルネットワーク更新システム2の構成図である。
図14に示す構成は、
図2に示した構成と比べて、サーバ21のプログラム格納部211に縮約率補正部2116を実現するためのプログラムがさらに格納され、記憶部20に縮約率補正テーブル204がさらに格納される。縮約率補正部2116は、係数特定部2110によって特定された演算ユニットや重み係数情報と縮約率補正テーブル204とを用いて、間引き部2113で用いられる縮約率を補正する。縮約率補正テーブル204は、縮約率の補正値を決定するために用いられる情報である。
【0077】
図15は、縮約率補正テーブル204の一例を示す図である。縮約率補正テーブル204は重要データに大きく関与する演算ユニット数140と縮約率141とを対応付けて管理するためのテーブルである。重要データ関連演算ユニット数140の欄には、重要データに大きく関与する演算ユニットの数が記述される。縮約率141の欄には、縮約時に使用される縮約率が記述される。縮約率とはニューラルネットワークの層単位で重み係数を間引く程度を表す割合情報である。たとえば縮約率の規定値が20%に設定されている場合は、その層の重み係数を20%間引くことになる。
【0078】
縮約率141の例ではもともと設定されている縮約率に対して乗算や除算で補正することを想定して記述しているが、ビットシフト演算や加減算などの別の手段で設定するようにしても良い。また、縮約率を10%、20%のように絶対値で設定するようにしてもよい。縮約率補正テーブル204を使用する場合、たとえば、ニューラルネットワークの任意の層において、係数特定部2110によって特定された演算ユニットの数=25となった場合は、その層の縮約率は本テーブル情報を使って通常の縮約率から2で除算したものとなる。なお、本例では層単位での処理を記載しているが、層単位以外のニューラルネットワークにおける任意の処理単位であってもよい。
【0079】
上述した各実施の形態および変形例は、それぞれ組み合わせてもよい。上記では、種々の実施の形態および変形例を説明したが、本発明はこれらの内容に限定されるものではない。本発明の技術的思想の範囲内で考えられるその他の態様も本発明の範囲内に含まれる。