IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ 富士通株式会社の特許一覧

<>
  • 特許-モデル削減プログラム、装置、及び方法 図1
  • 特許-モデル削減プログラム、装置、及び方法 図2
  • 特許-モデル削減プログラム、装置、及び方法 図3
  • 特許-モデル削減プログラム、装置、及び方法 図4
  • 特許-モデル削減プログラム、装置、及び方法 図5
  • 特許-モデル削減プログラム、装置、及び方法 図6
  • 特許-モデル削減プログラム、装置、及び方法 図7
  • 特許-モデル削減プログラム、装置、及び方法 図8
  • 特許-モデル削減プログラム、装置、及び方法 図9
  • 特許-モデル削減プログラム、装置、及び方法 図10
  • 特許-モデル削減プログラム、装置、及び方法 図11
  • 特許-モデル削減プログラム、装置、及び方法 図12
  • 特許-モデル削減プログラム、装置、及び方法 図13
  • 特許-モデル削減プログラム、装置、及び方法 図14
  • 特許-モデル削減プログラム、装置、及び方法 図15
  • 特許-モデル削減プログラム、装置、及び方法 図16
  • 特許-モデル削減プログラム、装置、及び方法 図17
  • 特許-モデル削減プログラム、装置、及び方法 図18
  • 特許-モデル削減プログラム、装置、及び方法 図19
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2025-06-23
(45)【発行日】2025-07-01
(54)【発明の名称】モデル削減プログラム、装置、及び方法
(51)【国際特許分類】
   G06N 3/08 20230101AFI20250624BHJP
【FI】
G06N3/08
【請求項の数】 9
(21)【出願番号】P 2021191164
(22)【出願日】2021-11-25
(65)【公開番号】P2023077755
(43)【公開日】2023-06-06
【審査請求日】2024-08-08
(73)【特許権者】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110001519
【氏名又は名称】弁理士法人太陽国際特許事務所
(72)【発明者】
【氏名】岩川 明則
(72)【発明者】
【氏名】田原 司睦
【審査官】真木 健彦
(56)【参考文献】
【文献】特開2018-129033(JP,A)
【文献】米国特許出願公開第2020/0184333(US,A1)
【文献】藤井 智也 ほか,2値化畳込みニューラルネットワークのニューロン刈りによるメモリ量削減とFPGA実現について,電子情報通信学会 技術研究報告 Vol.117 No.221,RECONF2017-26 (2017-09),日本,一般社団法人 電子情報通信学会,2017年09月18日,P.25-30
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/00
(57)【特許請求の範囲】
【請求項1】
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定し、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算し、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する
ことを含む処理をコンピュータに実行させるためのモデル削減プログラム。
【請求項2】
前記第1のニューロンを削除対象として特定する処理は、前記第1のニューロンの出力側の重みを0に修正することを含み、
前記第2のニューロンを削除対象として特定する処理は、前記第2のニューロンの入力側の重みを0に修正することを含み、
前記ニューラルネットワークから削除されるニューロンは、前記入力側の重み及び前記出力側の重みが全て0のニューロンである
請求項1に記載のモデル削減プログラム。
【請求項3】
前記ニューラルネットワークにおいて、前記入力層から前記出力層へ向かう順方向探索により前記第1のニューロンを削除対象として特定する処理を実行し、前記出力層から前記入力層へ向かう逆方向探索により前記第2のニューロンを削除対象として特定する処理を実行する請求項2に記載のモデル削減プログラム。
【請求項4】
前記第1のニューロン及び前記第2のニューロンを削除対象として特定する処理は、接続されたニューロンの一方を行、他方を列に割り当てた行列の要素に、前記接続されたニューロン間の重みを格納したパラメータテーブルにおける対応する要素を0に修正することを含む請求項2又は請求項3に記載のモデル削減プログラム。
【請求項5】
前記重みが全て0のニューロンを前記ニューラルネットワークから削除する処理は、前記パラメータテーブルにおいて、削除対象のニューロンの重みに対応する行及び列を削除することを含む請求項4に記載のモデル削減プログラム。
【請求項6】
前記バイアスを合算する処理は、前記第1のニューロンのバイアスと前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむことを含む請求項1~請求項5のいずれか1項に記載のモデル削減プログラム。
【請求項7】
前記バイアスを合算する処理は、前記第1のニューロンのバイアスに前記第1のニューロンの活性化関数を適用した値と、前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむことを含む請求項1~請求項5のいずれか1項に記載のモデル削減プログラム。
【請求項8】
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定する特定部と、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算する補償部と、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する削除部と、
を含むモデル削減装置。
【請求項9】
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定し、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算し、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する
ことを含む処理をコンピュータが実行するモデル削減方法。
【発明の詳細な説明】
【技術分野】
【0001】
開示の技術は、モデル削減プログラム、モデル削減装置、及びモデル削減方法に関する。
【背景技術】
【0002】
深層学習技術の進化などにより、機械学習モデル(以下、単に「モデル」ともいう)が巨大化する傾向にある。モデルのサイズが巨大化するにしたがって、機械学習に必要なメモリやプロセッサ等のコンピューティングリソースも著しく増大することになる。一方で、モバイルデバイスなど、深層学習技術を必要とする環境は多様化の傾向にある。また、機械学習の開始時には巨大なモデルが必要であるが、機械学習の結果、最終的に推論に必要となるパラメータ数は多くない場合がある。そこで、上記のような傾向への対応として、サーバなどのコンピューティングリソースが潤沢な環境でモデルの機械学習を実行し、不要なパラメータを削除して軽量化したモデルを推論に用いる、モデル軽量化技術が台頭してきている。
【0003】
例えば、ファジィ推論モデルを作成する際、無意味な入力パラメータ及び出力パラメータを削除し、ファジィ推論モデルによる演算時間を短縮するファジィ推論モデルの構成の適正化方法が提案されている。この方法は、ファジィ推論モデルに任意の入力データを与え、対応する出力データを算出し、複数組の擬似データを作成し、また、このファジィ推論モデルと共通の入出力パラメータを有するニューラルネットワークを構成する。また、この方法は、擬似データを教師データとして与えてニューラルネットワークの特性値を決定し、このニューラルネットワークを用いて、各出力パラメータに対する各入力パラメータの影響度を算出する。そして、この方法は、いずれの出力パラメータに対しても影響度が小さい入力パラメータ、及びいずれの入力パラメータからも影響度が小さい出力パラメータを摘出する。そして、この方法は、摘出された入出力パラメータを前記ファジィ推論モデルの入出力パラメータの中から削除してファジィ推論モデルを修正する。
【先行技術文献】
【特許文献】
【0004】
【文献】特開2000-322263号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
しかしながら、従来技術のモデル軽量化の手法のように、影響度が小さいパラメータを削除するだけでは、ネットワークの構成上、無駄なパラメータが残存する場合があり、その場合には、生成されたモデルによる推論の計算効率が低下する。また、影響度が小さいパラメータを単純に削除することにより、推論に有用な情報が失われ、パラメータ削除後のモデルの精度が悪化する場合もある。
【0006】
一つの側面として、開示の技術は、機械学習モデルの精度低下を抑制しつつ、機械学習モデルの軽量化の効果を向上させることを目的とする。
【課題を解決するための手段】
【0007】
一つの態様として、開示の技術は、ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定する。また、開示の技術は、前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算する。そして、開示の技術は、特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する。
【発明の効果】
【0008】
一つの側面として、機械学習モデルの精度低下を抑制しつつ、機械学習モデルの軽量化の効果を向上させることができる、という効果を有する。
【図面の簡単な説明】
【0009】
図1】モデル削減装置の機能ブロック図である。
図2】既存のモデル軽量化技術の一例を説明するための図である。
図3】既存のモデル軽量化技術の課題を説明するための図である。
図4】ニューロン間の重みの表記を説明するための図である。
図5】パラメータテーブルの一例を示す図である。
図6】削除対象のニューロンの特定及びバイアスの補償を説明するための図である。
図7】パラメータの削除を説明するための図である。
図8】モデル削減装置として機能するコンピュータの概略構成を示すブロック図である。
図9】モデル削減処理の一例を示すフローチャートである。
図10】順方向重み修正処理の一例を示すフローチャートである。
図11】逆方向重み修正処理の一例を示すフローチャートである。
図12】削除処理の一例を示すフローチャートである。
図13】層情報テーブル及び関数テーブルの一例を示す図である。
図14】コンボリューション層を含むニューラルネットワークについての層情報テーブル及びパラメータテーブルの一例を示す図である。
図15】コンボリューション層を含むニューラルネットワークを対象とした場合のパラメータの削除を説明するための図である。
図16】ニューラルネットワークの層構成の一例を示す図である。
図17】モデルのサイズ削減と精度との関係を説明するための図である。
図18】削減率90%の場合の層毎のデータサイズの一例を示す図である。
図19】削減率98%の場合の層毎のデータサイズの一例を示す図である。
【発明を実施するための形態】
【0010】
以下、図面を参照して、開示の技術に係る実施形態の一例を説明する。
【0011】
図1に示すように、本実施形態に係るモデル削減装置10には、機械学習モデルであるニューラルネットワークを表すパラメータテーブルが入力される。本実施形態において、モデル削減装置10に入力されるパラメータテーブルは、既存のモデル軽量化技術により一部のパラメータが削除されたパラメータテーブルである。
【0012】
図2を参照して、既存のモデル軽量化技術の一例を説明する。なお、図2において、丸はニューラルネットワークのニューロン、矢印はニューロン間の接続を表す。以下の各図においても同様である。また、ニューロン間の接続には、モデルのパラメータの一つである重みが設定されている。既存のモデル軽量化技術は、例えば、図2に示すように、機械学習が実行されたモデルのパラメータであるニューロン間の重みに対して閾値を適用し、閾値以下の重みを0に修正する。図2の中段の図では、破線の矢印で表されるニューロン間の重みが0に修正されたことを表している。そして、既存のモデル軽量化技術は、重みが0の部分を不要なパラメータとして取り除くことにより、図2の下段の図に示すように、パラメータが削減されたモデルを出力する。
【0013】
既存のモデル軽量化技術により軽量化されたモデルの場合、図3に示すように、入力が存在しないニューロン(図3中の太線の丸で示すニューロンI)、及び出力に用いられないニューロン(図3中の二重線の丸で示すニューロンL)がモデルに残存する場合がある。この場合、入力が存在しないニューロンから出力層へ至るまでの各ニューロン間の重み(図3中の破線矢印の部分の重み)は、モデルの出力の計算には使用されない不要なパラメータである。同様に、入力層から、出力に用いられないニューロンへ至るまでの各ニューロン間の重み(図3中の点線矢印の部分の重み)も、モデルの出力の計算には使用されない不要なパラメータである。
【0014】
また、各ニューロンは、パラメータとしてバイアスも有する。例えば、ニューロンから出力される値yが単純な一次関数(y=ax+b)で計算される場合、bがバイアス項である。なお、ここでのxは、前段のニューロンから出力される値、aは前段のニューロンと対象のニューロンとの間の重みである。バイアスは、機械学習の結果得られた、入力に依存しない定数値である。上記のような入力が存在しないニューロン(例えば、I)と、そのニューロンと出力側で接続されるニューロンとの間の重みを単純に削除した場合、そのニューロンが有するバイアスの情報を出力側のニューロンに伝える手段が失われる。これにより、推論に有用な情報が失われ、サイズ削減後のモデルの精度が悪化する場合もある。
【0015】
そこで、本実施形態では、モデルの精度低下を抑制しつつ、モデルの軽量化の効果を向上させることができるようにパラメータを削除して、モデルのサイズを削減する。以下、本実施形態に係るモデル削減装置10の機能構成について詳述する。なお、以下では、図4に示すように、n-1層のニューロンiとn層のニューロンjが接続関係にある場合、ニューロンiとニューロンjとの間の重みを「wi,j (n)」と表記する。また、重みwi,j (n)を、ニューロンiの出力重み、又はニューロンjの入力重みという。さらに、ニューロンiのバイアスを「b」と表記する。なお、出力重みは、開示の技術の「出力側の重み」の一例であり、入力重みは、開示の技術の「入力側の重み」の一例である。
【0016】
モデル削減装置10は、機能的には、図1に示すように、修正部12と、補償部14と、削除部16とを含む。修正部12は、開示の技術の「特定部」の一例である。
【0017】
修正部12は、モデル削減装置10に入力されたパラメータテーブルを取得する。図5に、パラメータテーブルの一例を示す。図5の例は、図5の上図のようなグラフ表現で表されるニューラルネットワークのパラメータテーブルである。図5に示すように、パラメータテーブルは層毎に設けられる。各層のパラメータテーブルでは、図5中の「入力」に示すように、該当の層のニューロンが各行に対応している。また、図5中の「出力」に示すように、該当の層の上位層のニューロン、すなわち出力する値が該当の層のニューロンへ入力されるニューロンが各列に対応している。行列の各要素には、その行及び列に対応するニューロン間の重みが格納されている。より具体的には、パラメータテーブルの各行には、その行に対応するニューロンの入力重みが格納され、パラメータテーブルの各列には、その行に対応するニューロンの出力重みが格納される。さらに、各層のパラメータテーブルには、該当の層のニューロンのバイアスも各行の末尾の列に格納されている。
【0018】
修正部12は、ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定する。そして、修正部12は、パラメータテーブルにおいて、第1のニューロンの出力重みを0に修正し、第2のニューロンの入力重みを0に修正する。
【0019】
具体的には、図6に示すように、修正部12は、ニューラルネットワークにおいて、入力層から出力層へ向かう順方向探索により、削除対象とする第1のニューロンを順次特定する。より具体的には、修正部12は、入力層から順に、入力重みが全て0のニューロンを探索する。図6の例では、修正部12は、n=2層のパラメータテーブルにおいて、ニューロンIの行が全て0になっていることに基づいて、ニューロンIの入力重みが全て0であると判定し、ニューロンIを削除対象として特定する。そして、修正部12は、ニューロンIの出力重み、すなわち、n=3層のパラメータテーブルのニューロンIの列の重みを全て0に修正する。修正部12は、順方向探索で入力重みが全て0のニューロンを順次探索することにより、ニューロンMについても入力重みが全て0になっていることを特定し、ニューロンMの出力重みも全て0に修正する(図6中の破線矢印)。
【0020】
また、同様に、図6に示すように、修正部12は、ニューラルネットワークにおいて、出力層から入力層へ向かう逆方向探索により、削除対象とする第2のニューロンを順次特定する。より具体的には、修正部12は、出力層から順に、出力重みが全て0のニューロンを探索する。図6の例では、修正部12は、n=4層のパラメータテーブルにおいて、ニューロンLの列が全て0になっていることに基づいて、ニューロンLの出力重みが全て0であると判定し、ニューロンLを削除対象として特定する。そして、修正部12は、ニューロンLの入力重み、すなわち、n=3層のパラメータテーブルのニューロンLの行の重みを全て0に修正する。修正部12は、逆方向探索で出力重みが全て0のニューロンを順次探索することにより、ニューロンGについても出力重みが全て0になっていることを特定し、ニューロンGの入力重みも全て0に修正する(図6中の点線矢印)。
【0021】
また、修正部12は、順方向探索で削除対象として特定した第1のニューロンについて、そのニューロンのバイアスを補償する処理を実行するように補償部14へ通知する。
【0022】
補償部14は、修正部12からの通知に基づいて、第1のニューロンのバイアスを、第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算することで、削除対象の第1のニューロンのバイアスを補償する。例えば、補償部14は、第1のニューロンのバイアスと、第1のニューロンと第3のニューロン間の重みとを乗算した値を、第3のニューロンのバイアスに足しこむことによりバイアスを合算する。
【0023】
より具体的に、バイアスがbであるニューロンIが削除対象の第1のニューロンとして特定された場合について説明する。図6の上図中の一点鎖線部及び図6の下図に示すように、n=2層のニューロンIは、n=3層のニューロンL及びニューロンMの各々と接続されている。また、ニューロンLのバイアスはb、ニューロンMのバイアスはb、ニューロンIとニューロンLとの間の重みはwI,L (3)、ニューロンIとニューロンMとの間の重みはwI,M (3)である。この場合、補償部14は、b及びbを下記に示すように算出し、n=3層のパラメータテーブルの、ニューロンL及びニューロンMの各々に対応する行のバイアスの列の値を更新する。
←b+wI,L (3), b←b+wI,M (3)
【0024】
削除部16は、特定された削除対象のニューロンをニューラルネットワークから削除する。削除対象のニューロンは、パラメータテーブルにおいて、入力重み及び出力重みが全て0になっている。具体的には、削除部16は、パラメータテーブルにおいて、削除対象のニューロンの重みに対応する行及び列を削除する。より具体的には、削除部16は、n-1層のニューロンiが削除対象の場合、n-1層のパラメータテーブルで重みが全て0になっているニューロンiの行、及びn層のパラメータテーブルで重みが全て0になっているニューロンiの列を削除する。
【0025】
例えば、図7の左図に示すように、n=2層のニューロンDが削除対象のニューロンとして特定されたとする。この場合、n=2層のパラメータテーブルの「D」の行、及びn=3層のパラメータテーブルの「D」の列の重みが0になっている。削除部16は、図7の右図に示すように、n=2層のパラメータテーブルの「D」の行、及びn=3層のパラメータテーブルの「D」の列を削除する。これにより、パラメータテーブルのサイズ、すなわちモデルのサイズが削減される。削除部16は、サイズが削減されたパラメータテーブルを出力する。
【0026】
モデル削減装置10は、例えば図8に示すコンピュータ40で実現されてよい。コンピュータ40は、CPU(Central Processing Unit)41と、一時記憶領域としてのメモリ42と、不揮発性の記憶部43とを備える。また、コンピュータ40は、入力部、表示部等の入出力装置44と、非一時的な記憶媒体49に対するデータの読み込み及び書き込みを制御するR/W(Read/Write)部45とを備える。また、コンピュータ40は、インターネット等のネットワークに接続される通信I/F(Interface)46を備える。CPU41、メモリ42、記憶部43、入出力装置44、R/W部45、及び通信I/F46は、バス47を介して互いに接続される。
【0027】
記憶部43は、HDD(Hard Disk Drive)、SSD(Solid State Drive)、フラッシュメモリ等によって実現されてよい。記憶媒体としての記憶部43には、コンピュータ40を、モデル削減装置10として機能させるためのモデル削減プログラム50が記憶される。モデル削減プログラム50は、修正プロセス52と、補償プロセス54と、削除プロセス56とを有する。
【0028】
CPU41は、モデル削減プログラム50を記憶部43から読み出してメモリ42に展開し、モデル削減プログラム50が有するプロセスを順次実行する。CPU41は、修正プロセス52を実行することで、図1に示す修正部12として動作する。また、CPU41は、補償プロセス54を実行することで、図1に示す補償部14として動作する。また、CPU41は、削除プロセス56を実行することで、図1に示す削除部16として動作する。これにより、モデル削減プログラム50を実行したコンピュータ40が、モデル削減装置10として機能することになる。なお、プログラムを実行するCPU41はハードウェアである。
【0029】
なお、モデル削減プログラム50により実現される機能は、例えば半導体集積回路、より詳しくはASIC(Application Specific Integrated Circuit)等で実現することも可能である。
【0030】
次に、本実施形態に係るモデル削減装置10の作用について説明する。モデル削減装置10にニューラルネットワークを表すパラメータテーブルであって、既存のモデル軽量化技術により一部のパラメータが削除されたパラメータテーブルが入力されると、モデル削減装置10において、図9に示すモデル削減処理が実行される。なお、モデル削減処理は、開示の技術のモデル削減方法の一例である。
【0031】
ステップS10で、修正部12が、モデル削減装置10に入力されたパラメータテーブルを取得する。次に、ステップS20で、修正部12が、順方向重み修正処理を実行し、入力層からの接続がない第1のニューロンを削除対象として特定し、パラメータテーブルにおいて、第1のニューロンの出力重みを0に修正する。この際、補償部14が、第1のニューロンのバイアスを補償する処理も実行する。次に、ステップS40で、修正部12が、逆方向重み修正処理を実行し、出力層への接続がない第2のニューロンを削除対象として特定し、パラメータテーブルにおいて、第2のニューロンの入力重みを0に修正する。次に、ステップS60で、削除部16が、削除処理を実行し、削除対象のニューロンをニューラルネットワークから削除する。以下、順方向重み修正処理、逆方向重み修正処理、及び削除処理の各々について詳述する。
【0032】
まず、図10を参照して、順方向重み修正処理について説明する。
【0033】
ステップS21で、修正部12が、ニューラルネットワークにおける処理対象の階層を特定する変数nを2に設定する。次に、ステップS22で、修正部12が、nが、ニューラルネットワークの階層数Nを超えたか否かを判定する。nがNを超えていない場合には、ステップS23へ移行する。
【0034】
ステップS23では、修正部12が、n-1層の入力重みが全て0のニューロンのリスト{c}を取得する。iは、n-1層のニューロンの番号であり、i=1,2,・・・,In-1(In-1はn-1層のニューロンの個数)である。cは、n-1層のニューロンのうち、入力重みが全て0のニューロンの番号である。具体的には、修正部12が、n-1層のパラメータテーブルにおいて、重みが全て0の行に対応するニューロンの番号をリストに追加し、{c}を取得する。
【0035】
次に、ステップS24で、修正部12が、iを1に設定する。次に、ステップS25で、修正部12が、iが、リスト{c}に含まれるニューロンの番号の最大値Cn-1を超えたか否かを判定する。iがCn-1を超えていない場合には、ステップS26へ移行する。ステップS26では、修正部12が、jを1に設定する。jは、n層のニューロンの番号であり、j=1,2,・・・,J(Jはn層のニューロンの個数)である。次に、ステップS27で、修正部12が、jがJを超えたか否かを判定する。jがJを超えていない場合には、ステップS28へ移行する。
【0036】
ステップS28では、補償部14が、n-1層のi番目のニューロンのバイアスを、n層のj番目のニューロンのバイアスに合算することで、n-1層のi番目のニューロンのバイアスを補償する。例えば、補償部14は、n層のj番目のニューロンのバイアスを、b←b+wc_i,j (n)のように算出し、n層のパラメータテーブルの、j番目のニューロンに対応する行のバイアスの列の値を更新する。次に、ステップS29で、修正部12が、n-1層のi番目のニューロンから、n層のj番目のニューロンへの出力重みを削除する。具体的には、修正部12が、n層のパラメータテーブルに格納されている重みwc_i,jを0に修正する。これにより、n-1層のi番目のニューロンは、入力重み及び出力重みが共に0になったことになる。なお、「c_i」は、下付きとする都合上表記がcと異なっているが、c_i=cである。後述のc_jについても同様である。
【0037】
次に、ステップS30で、修正部12が、jを1インクリメントして、ステップS27に戻る。ステップS27で、jがJを超えた場合には、ステップS31へ移行する。ステップS31では、修正部12が、iを1インクリメントして、ステップS25に戻る。ステップS25で、iがCn-1を超えた場合には、ステップS32へ移行する。ステップS32では、修正部12が、nを1インクリメントして、ステップS22に戻る。ステップS22で、nがNを超えた場合には、順方向重み修正処理は終了し、モデル削減処理(図9)にリターンする。
【0038】
なお、n-1層のi番目のニューロンと、n層のj番目のニューロンとに接続関係がない場合には、上記ステップS28及びS29の処理はスキップする。また、iがリスト{c}に含まれない場合、すなわち、n-1層のi番目のニューロンの入力重みのいずれかが0ではない場合には、上記ステップS27~S30の処理はスキップする。そして、上記ステップS31でiを1インクリメントしてステップS25に戻るようにすればよい。
【0039】
次に、図11を参照して、逆方向重み修正処理について説明する。
【0040】
ステップS41で、修正部12が、ニューラルネットワークにおける処理対象の階層を特定する変数nをN-1に設定する。次に、ステップS42で、修正部12が、nが2より小さいか否かを判定する。nが2以上の場合には、ステップS43へ移行する。
【0041】
ステップS43では、修正部12が、n層の出力重みが全て0のニューロンのリスト{c}を取得する。cは、n層のニューロンのうち、出力重みが全て0のニューロンの番号である。具体的には、修正部12が、n+1層のパラメータテーブルにおいて、重みが全て0の列に対応するニューロンの番号をリストに追加し、{c}を取得する。
【0042】
次に、ステップS44で、修正部12が、jを1に設定する。次に、ステップS45で、修正部12が、jが、リスト{c}に含まれるニューロンの番号の最大値Cを超えたか否かを判定する。jがCを超えていない場合には、ステップS46へ移行する。ステップS46では、修正部12が、iを1に設定する。次に、ステップS47で、修正部12が、iがIn-1を超えたか否かを判定する。iがIn-1を超えていない場合には、ステップS49へ移行する。
【0043】
ステップS49では、修正部12が、n層のj番目のニューロンへの、n-1層のi番目のニューロンからの入力重みを削除する。具体的には、修正部12が、n層のパラメータテーブルに格納されている重みwi,c_j (n)を0に修正する。これにより、n層のj番目のニューロンは、入力重み及び出力重みが共に0になったことになる。
【0044】
次に、ステップS50で、修正部12が、iを1インクリメントして、ステップS47に戻る。ステップS47で、iがIn-1を超えた場合には、ステップS51へ移行する。ステップS51では、修正部12が、jを1インクリメントして、ステップS45に戻る。ステップS45で、jがCを超えた場合には、ステップS52へ移行する。ステップS52では、修正部12が、nを1デクリメントして、ステップS42に戻る。ステップS42で、nが2より小さくなった場合には、逆方向重み修正処理は終了し、モデル削減処理(図9)にリターンする。
【0045】
なお、n-1層のi番目のニューロンと、n層のj番目のニューロンとに接続関係がない場合には、上記ステップS49の処理はスキップする。また、jがリスト{c}に含まれない場合、すなわち、n層のj番目のニューロンの出力重みのいずれかが0ではない場合には、上記ステップS47~S50の処理はスキップする。そして、上記ステップS51でjを1インクリメントしてステップS45に戻るようにすればよい。
【0046】
次に、図12を参照して、削除処理について説明する。
【0047】
ステップS61で、削除部16が、ニューラルネットワークにおける処理対象の階層を特定する変数nを2に設定する。次に、ステップS62で、削除部16が、nが、ニューラルネットワークの階層数Nを超えたか否かを判定する。nがNを超えていない場合には、ステップS63へ移行する。
【0048】
ステップS63では、削除部16が、n-1層のニューロンのうち、入力重みが全て0のニューロンのリスト{c}を取得する。具体的には、削除部16が、n-1層のパラメータテーブルにおいて、重みが全て0の行に対応するニューロンの番号をリストに追加し、{c}を取得する。次に、ステップS64で、削除部16が、n-1層のニューロンのうち、出力重みが全て0のニューロンのリスト{d}を取得する。具体的には、削除部16が、n層のパラメータテーブルにおいて、重みが全て0の列に対応するニューロンの番号をリストに追加し、{d}を取得する。
【0049】
次に、ステップS65で、削除部16が、リスト{c}とリスト{d}とで共通する要素を要素とするリスト{e}を取得する。すなわち、リスト{e}には、n-1層のニューロンのうち、入力重み及び出力重みが共に全て0のニューロンの番号が格納される。次に、ステップS66で、削除部16が、n-1層のニューロンの番号を全て含むリスト{i}と、リスト{e}との差集合{f}を取得する。すなわち、リスト{f}には、n-1層のニューロンのうち、削除対象ではないニューロンの番号が格納される。
【0050】
次に、ステップS67で、削除部16が、n-1層のパラメータテーブルにおいて、重みwh,f_i (n-1)がwh,i’ (n-1)となるように更新し、n層のパラメータテーブルにおいて、重みwf_i,j (n)がwi’,j (n)となるように更新する。なお、hはn-2層のニューロンの番号(h=1,2,・・・)であり、i’は、{f}に含まれる番号に対して、新たに1,2,・・・のように振り直した番号である。これにより、例えば、{f}={1,3}の場合、n-1層のパラメータテーブルの3行目が、削除後のパラメータテーブルの2行目になり、n層のパラメータテーブルの3列目が、削除後のパラメータテーブルの2列目になる。すなわち、リスト{e}に含まれる番号のニューロンに対応する、n-1層のパラメータテーブルの行と、n層のパラメータテーブルにおける列が削除される。
【0051】
次に、ステップS68では、削除部16が、nを1インクリメントして、ステップS62に戻る。ステップS62で、nがNを超えた場合には、削除処理は終了し、モデル削減処理(図9)にリターンする。
【0052】
以上説明したように、本実施形態に係るモデル削減装置は、ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定する。また、モデル削減装置は、第1のニューロンのバイアスを、第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算することにより補償する。そして、モデル削減装置は、特定した削除対象のニューロンをニューラルネットワークから削除する。これにより、機械学習モデルの精度低下を抑制しつつ、機械学習モデルの軽量化の効果を向上させることができる。
【0053】
なお、上記実施形態では、第1のニューロンのバイアスを補償する処理として、第1のニューロンのバイアスと第3のニューロンとの間の重みとを乗算した値を第3のニューロンのバイアスに足しこむ場合について説明したが、これに限定されない。例えば、第1のニューロンのバイアスに第1のニューロンの活性化関数を適用した値と、第1のニューロンと第3のニューロンとの間の重みとを乗算した値を、第3のニューロンのバイアスに足しこんでもよい。この場合、モデル削減装置は、パラメータテーブルと共に、例えば図13に示すような、層情報テーブル及び関数テーブルを取得する。図13の例では、層情報テーブルには、層番号に対応付けて、その層で利用される活性化関数名が規定されている。関数テーブルには、活性化関数名と、その活性化関数の計算に利用される関数オブジェクトとが対応付けて規定されている。モデル削減装置の補償部は、例えば、n-1層のニューロンiのバイアスをn層のニューロンjに足しこむ際、層情報テーブルから、n-1層に対応する活性化関数を取得し、関数テーブルから、その活性化関数に対応する関数オブジェクトを取得する。そして、補償部は、下記のfに取得した関数オブジェクトを適用して、ニューロンjのバイアスbを更新する。
←b+wi,jf(b
【0054】
また、上記実施形態は、コンボリューション層を含む構成のニューラルネットワークにも適用可能である。この場合、モデル削減装置は、例えば図14に示すような、層情報テーブル及びパラメータテーブルを取得する。図14の例では、層情報テーブルには、層番号に対応付けて、その層の属性が規定されている。なお、図14において、属性の「conv」はコンボリューション層、「fc」は全結合層を表す。また、各層のパラメータテーブルは、その層の属性に応じたフォーマットとなっている。fc層についてのパラメータテーブルは、上記実施形態で説明したパラメータテーブルと同様である。コンボリューション層のパラメータテーブルには、各ニューロンに対応した行列の要素として、その層に適用されるフィルタサイズ分の重みが格納される。図14の例では、フィルタサイズが3×3の例を示している。この場合、n-1層のi番目のニューロンとn層のj番目のニューロン間の、フィルタの左からk番目かつ上からl番目の要素に対応する重みは、wi,j,k,l (n)で表される。例えば、w2,1,2,2 (2)は、図14のパラメータテーブル中の破線で示す要素に相当する。
【0055】
モデル削減装置は、コンボリューション層のパラメータテーブルの場合、フィルタの各要素の重みも含め、全ての重みが0の行又は列に対応するニューロンを、入力重み又は出力重みが0のニューロンとして特定する。例えば、図15の左図の場合、n=2層の3番目のニューロンの入力重みが全て0であるため、モデル削減装置の修正部は、n=2層の3番目のニューロンを削除対象として特定する。そして、修正部は、図15の右図に示すように、n=3層のパラメータテーブルにおいて、n=2層の3番目のニューロンの出力重みである3列目の重みを0に修正する。そして、モデル削減装置の削除部が、図15の右図の網掛部で示す、n=2層のパラメータテーブルの、フィルタの3×3要素を含む3行目、及びn=3層のパラメータテーブルの3列目を削除する。このように、開示の技術は、コンボリューション層を含む構成のニューラルネットワークであっても、モデルのサイズを削減することができる。なお、図15では、パラメータテーブルにおいて、バイアスの値が格納される列の表記を省略している。
【0056】
また、上記実施形態では、既存のモデル軽量化技術により一部のパラメータが削除されたパラメータテーブルがモデル削減装置へ入力される場合について説明したが、モデル軽量化前のパラメータテーブルが入力されてもよい。この場合、モデル削減装置に既存のモデル軽量化の機能も備えるようにすればよい。
【0057】
ここで、開示の技術を適用した場合の、モデルのサイズの削減率と精度との関係の一例について説明する。ここでは、ニューラルネットワークとして、図16に示すような層構成のVGGNetのVGG-19-BNを用い、データセットとして、CIFAR-10を用いた。図17に、サイズの削減率が90%の場合と、98%の場合とについて、それぞれのモデルの精度を示す。全体データサイズは、入力チャネル数×出力チャネル数×フィルタサイズ×4×2で算出している。この算出式において、「4」は、一つの浮動小数点型変数が持つ情報量をbyte単位で表したものであり、「2」は、一つの重みパラメータに重み情報及び勾配情報という二つの情報が含まれるため、2倍しているものである。図17に示すように、いずれの削減率の場合でも、パラメータの削除前後のモデルでの精度に変化がなく、サイズ削減による精度への影響が抑制されていることが分かる。
【0058】
なお、上記の例におけるニューラルネットワークの各層の削減データサイズについて、削減率が90%の場合を図18に、削減率が98%の場合を図19に示す。図18及び図19において、「test_acc」は、テストデータに対するニューラルネットワークの予測の精度であり、図17の「精度」と同様である。また、「train_acc」は、訓練データに対するニューラルネットワークの予測の精度である。なお、「精度」とは、ニューラルネットワークが予測した値と正解とが合致している割合である。
【0059】
また、上記実施形態では、モデル削減プログラムが記憶部に予め記憶(インストール)されている態様を説明したが、これに限定されない。開示の技術に係るプログラムは、CD-ROM、DVD-ROM、USBメモリ等の記憶媒体に記憶された形態で提供することも可能である。
【0060】
以上の実施形態に関し、さらに以下の付記を開示する。
【0061】
(付記1)
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定し、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算し、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する
ことを含む処理をコンピュータに実行させるためのモデル削減プログラム。
【0062】
(付記2)
前記第1のニューロンを削除対象として特定する処理は、前記第1のニューロンの出力側の重みを0に修正することを含み、
前記第2のニューロンを削除対象として特定する処理は、前記第2のニューロンの入力側の重みを0に修正することを含み、
前記ニューラルネットワークから削除されるニューロンは、前記入力側の重み及び前記出力側の重みが全て0のニューロンである
付記1に記載のモデル削減プログラム。
【0063】
(付記3)
前記ニューラルネットワークにおいて、前記入力層から前記出力層へ向かう順方向探索により前記第1のニューロンを削除対象として特定する処理を実行し、前記出力層から前記入力層へ向かう逆方向探索により前記第2のニューロンを削除対象として特定する処理を実行する付記2に記載のモデル削減プログラム。
【0064】
(付記4)
前記第1のニューロン及び前記第2のニューロンを削除対象として特定する処理は、接続されたニューロンの一方を行、他方を列に割り当てた行列の要素に、前記接続されたニューロン間の重みを格納したパラメータテーブルにおける対応する要素を0に修正することを含む付記2又は付記3に記載のモデル削減プログラム。
【0065】
(付記5)
前記重みが全て0のニューロンを前記ニューラルネットワークから削除する処理は、前記パラメータテーブルにおいて、削除対象のニューロンの重みに対応する行及び列を削除することを含む付記4に記載のモデル削減プログラム。
【0066】
(付記6)
前記バイアスを合算する処理は、前記第1のニューロンのバイアスと前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむことを含む付記1~付記5のいずれか1項に記載のモデル削減プログラム。
【0067】
(付記7)
前記バイアスを合算する処理は、前記第1のニューロンのバイアスに前記第1のニューロンの活性化関数を適用した値と、前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむことを含む付記1~付記5のいずれか1項に記載のモデル削減プログラム。
【0068】
(付記8)
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定する特定部と、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算する補償部と、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する削除部と、
を含むモデル削減装置。
【0069】
(付記9)
前記特定部は、前記第1のニューロンの出力側の重みを0に修正し、前記第2のニューロンの入力側の重みを0に修正し、
前記削除部は、前記入力側の重み及び前記出力側の重みが全て0のニューロンを前記ニューラルネットワークから削除する
付記8に記載のモデル削減装置。
【0070】
(付記10)
前記特定部は、前記ニューラルネットワークにおいて、前記入力層から前記出力層へ向かう順方向探索により前記第1のニューロンを削除対象として特定する処理を実行し、前記出力層から前記入力層へ向かう逆方向探索により前記第2のニューロンを削除対象として特定する処理を実行する付記9に記載のモデル削減装置。
【0071】
(付記11)
前記特定部は、前記第1のニューロン及び前記第2のニューロンを削除対象として特定する処理として、接続されたニューロンの一方を行、他方を列に割り当てた行列の要素に、前記接続されたニューロン間の重みを格納したパラメータテーブルにおける対応する要素を0に修正することを含む処理を実行する付記9又は付記10に記載のモデル削減装置。
【0072】
(付記12)
前記削除部は、前記パラメータテーブルにおいて、削除対象のニューロンの重みに対応する行及び列を削除する付記11に記載のモデル削減装置。
【0073】
(付記13)
前記補償部は、前記第1のニューロンのバイアスと前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむ付記8~付記12のいずれか1項に記載のモデル削減装置。
【0074】
(付記14)
前記補償部は、前記第1のニューロンのバイアスに前記第1のニューロンの活性化関数を適用した値と、前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむ付記8~付記12のいずれか1項に記載のモデル削減装置。
【0075】
(付記15)
ニューラルネットワークにおいて、入力層からの接続がない第1のニューロン、及び出力層への接続がない第2のニューロンを削除対象として特定し、
前記第1のニューロンのバイアスを、前記第1のニューロンと出力側で繋がっている第3のニューロンのバイアスに合算し、
特定した前記削除対象のニューロンを前記ニューラルネットワークから削除する
ことを含む処理をコンピュータが実行するモデル削減方法。
【0076】
(付記16)
前記第1のニューロンを削除対象として特定する処理は、前記第1のニューロンの出力側の重みを0に修正することを含み、
前記第2のニューロンを削除対象として特定する処理は、前記第2のニューロンの入力側の重みを0に修正することを含み、
前記ニューラルネットワークから削除されるニューロンは、前記入力側の重み及び前記出力側の重みが全て0のニューロンである
付記15に記載のモデル削減方法。
【0077】
(付記17)
前記ニューラルネットワークにおいて、前記入力層から前記出力層へ向かう順方向探索により前記第1のニューロンを削除対象として特定する処理を実行し、前記出力層から前記入力層へ向かう逆方向探索により前記第2のニューロンを削除対象として特定する処理を実行する付記16に記載のモデル削減方法。
【0078】
(付記18)
前記第1のニューロン及び前記第2のニューロンを削除対象として特定する処理は、接続されたニューロンの一方を行、他方を列に割り当てた行列の要素に、前記接続されたニューロン間の重みを格納したパラメータテーブルにおける対応する要素を0に修正することを含む付記16又は付記17に記載のモデル削減方法。
【0079】
(付記19)
前記重みが全て0のニューロンを前記ニューラルネットワークから削除する処理は、前記パラメータテーブルにおいて、削除対象のニューロンの重みに対応する行及び列を削除することを含む付記18に記載のモデル削減方法。
【0080】
(付記20)
前記バイアスを合算する処理は、前記第1のニューロンのバイアスと前記第1のニューロンと前記第3のニューロン間の重みとを乗算した値を、前記第3のニューロンのバイアスに足しこむことを含む付記15~付記19のいずれか1項に記載のモデル削減方法。
【符号の説明】
【0081】
10 モデル削減装置
12 修正部
14 補償部
16 削除部
40 コンピュータ
41 CPU
42 メモリ
43 記憶部
44 入出力装置
45 R/W部
46 通信I/F
47 バス
49 記憶媒体
50 モデル削減プログラム
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15
図16
図17
図18
図19