(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-07-31
(45)【発行日】2023-08-08
(54)【発明の名称】構造最適化装置、構造最適化方法、及びプログラム
(51)【国際特許分類】
G06N 3/082 20230101AFI20230801BHJP
G06N 3/0499 20230101ALI20230801BHJP
【FI】
G06N3/082
G06N3/0499
(21)【出願番号】P 2021562709
(86)(22)【出願日】2020-12-03
(86)【国際出願番号】 JP2020044994
(87)【国際公開番号】W WO2021112166
(87)【国際公開日】2021-06-10
【審査請求日】2022-05-06
(31)【優先権主張番号】P 2019218605
(32)【優先日】2019-12-03
(33)【優先権主張国・地域又は機関】JP
(73)【特許権者】
【識別番号】000232092
【氏名又は名称】NECソリューションイノベータ株式会社
(74)【代理人】
【識別番号】110002044
【氏名又は名称】弁理士法人ブライタス
(72)【発明者】
【氏名】中島 昇
【審査官】藤原 敬利
(56)【参考文献】
【文献】特開2019-185275(JP,A)
【文献】特開平11-120158(JP,A)
【文献】米国特許出願公開第2019/0095795(US,A1)
【文献】前田 孝泰, ほか,時空間同期の取れた2人協調動作生成,情報処理学会 研究報告 コンピュータビジョンとイメージメディア(CVIM),日本,情報処理学会,2019年05月30日,Vol.2019-CVIM-217, No31
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/0499
G06N 3/08
G06N 3/082
(57)【特許請求の範囲】
【請求項1】
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成手段と、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層
に対応する第一の寄与度
が、あらかじめ設定された第一の閾値より小さい場合、前記中間層の中から、前記第一の閾値より小さい第一の中間層を選択し、選択した前記第一の中間層が有するニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された第二の閾値以上のニューロンがある場合、当該第一の中間層を選択対象から除外する、選択手段と、
選択
した前記
第一の中間層を削除する、削除手段と、
を有することを特徴とする構造最適化装置。
【請求項2】
請求項1に記載の構造最適化装置であって、
前記選択手段は、更に、選択した
前記第一の中間層が有する前記ニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された前記第二の閾値より小さいニューロンを選択し、
前記削除手段は、更に、
選択した前記第一の中間層から、選択した前記ニューロンを削除する、
ことを特徴とする構造最適化装置。
【請求項3】
請求項1
又は2に記載の構造最適化装置であって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とする構造最適化装置。
【請求項4】
コンピュータが、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成し、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層
に対応する第一の寄与度
が、あらかじめ設定された第一の閾値より小さい場合、前記中間層の中から、前記第一の閾値より小さい第一の中間層を選択し、選択した前記第一の中間層が有するニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された第二の閾値以上のニューロンがある場合、当該第一の中間層を選択対象から除外し、
選択
した前記
第一の中間層を削除する、
ことを特徴とする構造最適化方法。
【請求項5】
請求項
4に記載の構造最適化方法であって、
前記選択において、更に、選択した
前記第一の中間層が有する前記ニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された前記第二の閾値より小さいニューロンを選択し、
前記削除において、更に、
選択した前記第一の中間層から、選択した前記ニューロンを削除する、
ことを特徴とする構造最適化方法。
【請求項6】
請求項
4又は5に記載の構造最適化方法であって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とする構造最適化方法。
【請求項7】
コンピュータに、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成し、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層
に対応する第一の寄与度
が、あらかじめ設定された第一の閾値より小さい場合、前記中間層の中から、前記第一の閾値より小さい第一の中間層を選択し、選択した前記第一の中間層が有するニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された第二の閾値以上のニューロンがある場合、当該第一の中間層を選択対象から除外し、
選択
した前記
第一の中間層を削除する、
処理を実行させる命令を含むプログラム。
【請求項8】
請求項
7に記載のプログラムであって、
前記選択において、更に、選択した
前記第一の中間層が有する前記ニューロンの中に、前記ニューロンに対応する第二の寄与度が、あらかじめ設定された前記第二の閾値より小さいニューロンを選択し、
前記削除において、更に、
選択した前記第一の中間層から、選択した前記ニューロンを削除する
ことを特徴とするプログラム。
【請求項9】
請求項
7又は8に記載のプログラムであって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とするプログラム。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、構造化ネットワークを最適化する構造最適化装置、構造最適化方法に関し、更には、これらを実現するためのプログラムに関する。
【背景技術】
【0002】
ディープラーニング、ニューラルネットワークなどの機械学習において用いられる構造化ネットワークは、構造化ネットワークを構成する中間層(Intermediate Layer)の数が増加すると、演算器の計算量も増加する。そのため、演算器が識別・分類などの処理結果を出力するまでに長時間を要する。なお、演算器は、例えば、CPU(Central Processing Unit)、GPU(Graphical Processing Unit)、FPGA(Field-Programmable Gate Array)などである。
【0003】
そこで、演算器の計算量を削減するための技術として、中間層が有するニューロン(例えば、パーセプトロン、シグモイドニューロン、ノードなどの人工ニューロン)をプルーニング(剪定)する、構造化ネットワーク剪定アルゴリズムなどが知られている。ニューロンは、入力値と重みとを用いて乗算及び和算を実行するユニットである。
【0004】
なお、関連する技術として非特許文献1には、構造化ネットワーク剪定アルゴリズムに対する考察について記載されている。構造化ネットワーク剪定アルゴリズムとは、アイドリングニューロンを検出し、検出したアイドリングニューロンを剪定することにより、演算器の計算量を削減する技術である。なお、アイドリングニューロンとは、識別・分類などの処理に対する寄与度が低いニューロンのことである。
【先行技術文献】
【非特許文献】
【0005】
【文献】Zhuang Liu, Mingjie Sun2,Tinghui Zhou, Gao Huang, Trevor Darrell,“RETHINKING THE VALUE OF NETWORK PRUNING”,28 Sep 2018 (modified: 06 Mar 2019),ICLR 2019 Conference
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上述した構造化ネットワーク剪定アルゴリズムは、中間層のニューロンを剪定するアルゴリズムではあるが、中間層を剪定するアルゴリズムではない。すなわち、構造化ネットワークにおいて、識別・分類などの処理に対する寄与度が低い中間層を削減するアルゴリズムではない。
【0007】
また、上述した構造化ネットワーク剪定アルゴリズムは、ニューロンを剪定するため、識別・分類などの処理精度が低下することがある。
【0008】
本発明の目的の一例は、構造化ネットワークを最適化して演算器の計算量を削減する構
造最適化装置、構造最適化方法、及びプログラムを提供することにある。
【課題を解決するための手段】
【0009】
上記目的を達成するため、本発明の一側面における構造最適化装置は、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成部と、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択部と、
選択された前記中間層を削除する、削除部と、
を有することを特徴とする。
【0010】
また、上記目的を達成するため、本発明の一側面における構造最適化方法は、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成ステップと、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択ステップと、
選択された前記中間層を削除する、削除ステップと、
を有することを特徴とする。
【0011】
更に、上記目的を達成するため、本発明の一側面におけるプログラムは、
コンピュータに、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成ステップと、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択ステップと、
選択された前記中間層を削除する、削除ステップと、
を実行させることを特徴とする。
【発明の効果】
【0012】
以上のように本発明によれば、構造化ネットワークを最適化して演算器の計算量を削減することができる。
【図面の簡単な説明】
【0013】
【
図1】
図1は、構造最適化装置の一例を示す図である。
【
図3】
図3は、残差ネットワークの説明をするための図である。
【
図4】
図4は、構造最適化装置を有するシステムの一例を示す図である。
【
図5】
図5は、残差ネットワークの一例を示す図である。
【
図6】
図6は、残差ネットワークの一例を示す図である。
【
図7】
図7は、構造化ネットワークから中間層を削除した一例を示す図である。
【
図8】
図8は、構造化ネットワークから中間層を削除した一例を示す図である。
【
図9】
図9は、ニューロンとコネクションとの接続の一例を示す図である。
【
図10】
図10は、構造最適化装置を有するシステムの動作の一例を示す図である。
【
図11】
図11は、変形例1におけるシステムの動作の一例を示す図である。
【
図12】
図12は、変形例2におけるシステムの動作の一例を示す図である。
【
図13】
図13は、構造最適化装置を実現するコンピュータの一例を示す図である。
【発明を実施するための形態】
【0014】
(実施の形態)
以下、本発明の実施の形態について、
図1から
図13を参照しながら説明する。
【0015】
[装置構成]
最初に、
図1を用いて、本実施の形態における構造最適化装置1の構成について説明する。
図1は、構造最適化装置の一例を示す図である。
【0016】
図1に示す構造最適化装置1は、構造化ネットワークを最適化して演算器の計算量を削減する装置である。構造最適化装置1は、例えば、CPU、又はGPU、又はFPGAなどのプログラマブルなデバイス、又はそれらを一つ以上有する演算器を有する情報処理装置である。また、
図1に示すように、構造最適化装置1は、生成部2と、選択部3と、削除部4とを有する。
【0017】
このうち、生成部2は、構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する。選択部3は、構造化ネットワークを用いて実行される処理に対する中間層の寄与度(第一の寄与度)に応じて中間層を選択する。削除部4は、選択した中間層を削除する。
【0018】
構造化ネットワークは、ニューロンを有する入力層、出力層、中間層を有する、機械学習により生成される学習モデルである。
図2は、学習モデルの一例を示す図である。
図2の例は、入力された画像を用いて、画像に撮像された自動車、自転車、バイク、歩行者を識別・分類するモデルである。
【0019】
また、
図2の構造化ネットワークにおいて、対象とする層のニューロンそれぞれは、対象とする層の次段に設けられた層の一部又は全部のニューロンと、重み付されたコネクション(Connection:接続線)により接続されている。
【0020】
中間層をショートカットする残差ネットワークについて説明する。
図3は、中間層をショートカットする残差ネットワークの説明をするための図である。
【0021】
図3のAに示す構造化ネットワークを、
図3のBに示す構造化ネットワークに変換する場合、すなわちp層をショートカットする残差ネットワークを生成する場合、コネクションC3、C4、C5、加算器ADDを用いてp層をショートカットする。
【0022】
図3において、p-1層、p層、p+1層は中間層である。p-1層、p層、p+1層それぞれは、n個のニューロンを有する。ただし、層ごとに、ニューロンの個数が異なってもよい。
【0023】
p-1層は、出力値としてx(x1,x2,……,xn)を出力し、p層は、出力値としてy(y1,y2,……,yn)を出力する。
【0024】
コネクションC1は、p-1層のニューロンの出力それぞれと、p層のニューロンすべての入力とを接続する、複数のコネクションを有する。コネクションC1が有する複数のコネクションそれぞれには、重みが付けられている。
【0025】
また、
図3の例では、コネクションC1が有する複数のコネクションはn×n個存在するので、重みもn×n個存在する。なお、以降において、コネクションC1のn×n個の重みをw1と呼ぶことがある。
【0026】
コネクションC2は、p層のニューロンの出力それぞれと、p+1層のニューロンすべての入力とを接続する、複数のコネクションを有する。コネクションC2が有する複数のコネクションそれぞれには、重みが付けられている。
【0027】
また、
図3の例では、コネクションC2が有する複数のコネクションはn×n個存在するので、重みもn×n個存在する。なお、以降において、コネクションC2のn×n個の重みをw2と呼ぶことがある。
【0028】
コネクションC3は、p-1層のニューロンの出力それぞれと、加算器ADDの入力すべてとを接続する、複数のコネクションを有する。コネクションC3が有する複数のコネクションそれぞれには、重みが付けられている。
【0029】
また、
図3の例では、コネクションC3が有する複数のコネクションはn×n個存在するので、重みもn×n個存在する。なお、以降において、コネクションC3のn×n個の重みをw3と呼ぶことがある。ここで、重みw3については、p-1層の出力値xを恒等変換する値でもよいし、又は出力値xを定数倍する値でもよい。
【0030】
コネクションC4は、p層のニューロンの出力それぞれと、加算器ADDの入力すべてとを接続する、複数のコネクションを有する。コネクションC4が有する複数のコネクションそれぞれは、p層の出力値yを恒等変換する重みが付けられている。
【0031】
加算器ADDは、コネクションC3から取得したp-1層の出力値x及び重みw3により決定された値(n個の要素)と、コネクションC4から取得したp層の出力値y(n個の要素)とを足し合わせ、出力値z(z1,z2,……,zn)を算出する。
【0032】
コネクションC5は、加算器ADDの出力それぞれと、p+1層のニューロンすべての入力とを接続する、複数のコネクションを有する。コネクションC5が有する複数のコネクションそれぞれには、重みが付けられている。なお、上述したnは1以上の整数である。
【0033】
また、
図3では説明を簡単にするためにショートカットする中間層を一つとしたが、中間層をショートカットする残差ネットワークを、構造化ネットワークに複数設けてもよい。
【0034】
中間層の寄与度は、対象とする中間層のニューロンと、対象とする中間層の前段に設けられた中間層とを接続するために用いるコネクションの重みを用いて決定する。
図3のBにおいて、p層の寄与度を算出する場合には、コネクションC1の重みw1を用いて、中間層の寄与度を算出する。例えば、コネクションC1が有する複数のコネクションに付けられた重みを合計して合計値を算出し、算出した合計値を寄与度とする。
【0035】
中間層の選択は、例えば、寄与度が、あらかじめ決定した閾値(第一の閾値)以上であるか否かを判定し、判定結果に応じて削除対象とする中間層を選択する。
【0036】
このように、本実施の形態においては、構造化ネットワークに、中間層をショートカットする残差ネットワークを生成した後、構造化ネットワークを用いて実行される処理に対して寄与度が低い中間層を削除するので、構造化ネットワークを最適化できる。したがって、演算器の計算量を削減できる。
【0037】
また、本実施の形態においては、上述したように構造化ネットワークに残差ネットワークを設けて最適化することで、識別・分類などの処理精度の低下を抑止できる。一般的に、構造化ネットワークにおいて、中間層、ニューロンの数の減少は、識別・分類する処理精度の低下につながるが、寄与度が高い中間層は削除しないので、識別・分類などの処理精度の低下を抑止できる。
【0038】
図2の例であれば、自動車を撮像した画像を入力層に入力した場合に、出力層において画像に撮像された被写体が自動車であると識別・分類するために重要な中間層は、処理に対する寄与度が高いとして削除しない。
【0039】
さらに、本実施の形態においては、上述したように構造化ネットワークを最適化することで、プログラムを小さくできるので、演算器、メモリなどの規模を小さくできる。その結果、機器を小型化することができる。
【0040】
[システム構成]
続いて、
図4を用いて、本実施の形態における構造最適化装置1の構成をより具体的に説明する。
図4は、構造最適化装置を有するシステムの一例を示す図である。
【0041】
図4に示すように、本実施の形態におけるシステムは、構造最適化装置1に加えて、学習装置20、入力装置21、記憶装置22を有する。記憶装置22は、学習モデル23を記憶している。
【0042】
学習装置20は、学習データに基づいて、学習モデル23を生成する。具体的には、学習装置20は、まず、入力装置21から複数の学習データを取得する。続いて、学習装置20は、取得した学習データを用いて、学習モデル23(構造化ネットワーク)を生成する。続いて、学習装置20は、生成した学習モデル23を、記憶装置22に記憶する。なお、学習装置20は、例えば、サーバコンピュータなどの情報処理装置が考えられる。
【0043】
入力装置21は、学習装置20に学習をさせるために用いる学習データを、学習装置20に入力する装置である。なお、入力装置21は、例えば、パーソナルコンピュータなどの情報処理装置が考えられる。
【0044】
記憶装置22は、学習装置20が生成した学習モデル23を記憶する。また、記憶装置22は、構造最適化装置1を用いて、構造化ネットワークを最適化した学習モデル23を記憶する。なお、記憶装置22は、学習装置20内に設けてもよい。又は、構造最適化装置1内に設けてもよい。
【0045】
構造最適化装置について説明する。
生成部2は、学習モデル23が有する構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する。具体的には、生成部2は、まず、残差ネットワークを生成する対象となる中間層を選択する。生成部2は、例えば、一部又は全部の中間層を選択する。
【0046】
続いて、生成部2は、選択した中間層に対して残差ネットワークを生成する。残差ネットワークは、例えば、
図3のBに示したように、対象とする中間層がp層である場合、コネクションC3(第一のコネクション)、C4(第二のコネクション)、C5(第三のコネクション)、加算器ADDを生成し、それらを用いて残差ネットワークを生成する。
【0047】
生成部2は、コネクションC3の一方をp-1層の出力に接続し、他方を加算器ADDの一方の入力に接続する。また、生成部2は、コネクションC4の一方をp層の出力に接続し、他方を加算器ADDの他方の入力に接続する。また、生成部2は、コネクションC5の一方を加算器ADDの出力に接続し、他方をp+1層の入力に接続する。
【0048】
さらに、残差ネットワークが有するコネクションC3には、重みw3として入力値xを恒等変換する重みを付けてもよいし、定数倍する重みを付けてもよい。
【0049】
なお、残差ネットワークは、
図5に示すように、中間層ごとに残差ネットワークを設けてもよいし、
図6に示すように、複数の中間層をショートカットするような残差ネットワークを設けてもよい。
図5、
図6は、残差ネットワークの一例を示す図である。
【0050】
選択部3は、構造化ネットワークを用いて実行される処理に対する中間層の寄与度(第一の寄与度)に応じて、削除対象となる中間層を選択する。具体的には、選択部3は、まず、対象とする中間層の入力に接続されているコネクションの重みを取得する。
【0051】
続いて、選択部3は、取得した重みを合計して、その合計値を寄与度とする。
図3のBにおいては、p層の寄与度を算出する場合、コネクションC1の重みw1を用いて、中間層の寄与度を算出する。例えば、コネクションC1が有するコネクションそれぞれの重みを合計して合計値を算出し、算出した合計値を寄与度とする。
【0052】
続いて、選択部3は、寄与度が、あらかじめ決定した閾値(第一の閾値)以上であるか否かを判定し、判定結果に応じて中間層を選択する。閾値は、例えば、実験、シミュレータなどを用いて求めることが考えられる。
【0053】
寄与度があらかじめ決定した閾値以上である場合、選択部3は、対象とする中間層が、構造化ネットワークを用いて実行される処理に対して寄与度が高いと判定する。また、選択部3は、寄与度が閾値より小さい場合、選択部3は、対象とする中間層が、構造化ネットワークを用いて実行される処理に対して寄与度が低いと判定する。
【0054】
削除部4は、選択部3を用いて選択した中間層を削除する。具体的には、削除部4は、まず、寄与度が閾値より小さい中間層を表す情報を取得する。続いて、削除部4は、寄与度が閾値より小さい中間層を削除する。
【0055】
図7、
図8を用いて中間層の削除について説明する。
図7、
図8は、構造化ネットワークから中間層を削除した一例を示す図である。
【0056】
例えば、
図5に示すような残差ネットワークが設けられ、p層の寄与度が閾値より小さい場合、削除部4はp層を削除する。そうすると、
図5に示した構造化ネットワークは、
図7に示すような構成になる。
【0057】
すなわち、加算器ADD2へのコネクションC42からの入力がなくなるので、
図8に示すような、加算器ADD1の出力それぞれが、p+1層の入力すべてに接続された構成になる。
【0058】
[変形例1]
変形例1について説明する。選択した中間層の処理に対する寄与度(第一の寄与度)が低くても、選択した中間層のニューロンの中には、削除すると処理の精度を低下させてしまうような、処理に対して寄与度(第二の寄与度)が高いニューロンが含まれている場合がある。
【0059】
そこで、変形例1においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除しないようにするために、上述した選択部3に、更に機能を追加する。
【0060】
すなわち、選択部3は、選択した中間層が有するニューロンの処理に対する寄与度(第二の寄与度)に応じて、中間層を選択する。
【0061】
このように、変形例1においては、削除対象として選択した中間層に、寄与度の高いニューロンが含まれている場合には、選択した中間層を削除対象から除外するので、処理精度の低下を抑止できる。
【0062】
変形例1について具体的に説明する。
図9は、ニューロンとコネクションとの接続の一例を示す図である。選択部3は、まず、対象とする中間層であるp層のニューロンごとに、接続されているコネクションの重みを取得する。続いて、選択部3は、取得したp層のニューロンごとに重みを合計し、その合計値を寄与度とする。
【0063】
図9における、p層のニューロンNp1の寄与度は、w11、w21、w31の合計を算出して求める。また、p層のニューロンNp2の寄与度は、w12、w22、w32の合計を算出して求める。さらに、p層のニューロンNp3の寄与度は、w13、w23、w33の合計を算出して求める。
【0064】
続いて、選択部3は、p層のニューロンごとの寄与度が、あらかじめ決定した閾値(第二の閾値)以上であるか否かを判定する。閾値は、例えば、実験、シミュレータなどを用いて求めることが考えられる。
【0065】
続いて、ニューロンの寄与度があらかじめ決定した閾値以上である場合、選択部3は、構造化ネットワークを用いて実行される処理に対して、このニューロンの寄与度は高いと判定し、p層を削除対象から除外する。
【0066】
対して、選択部3は、p層のニューロンの寄与度がすべて閾値より小さい場合、対象とする中間層は、構造化ネットワークを用いて実行される処理に対して寄与度が低いと判定し、p層を削除対象として選択する。続いて、削除部4は、選択部3により選択された中間層を削除する。
【0067】
寄与度の計算方法の別の一例として、下記のようにしてもよい。p層に属する全ニューロンについて、一つずつ、出力値を微小量変動させたときに出力層での推論がどの程度影響を受けるかを計測し、その大きさを寄与度とすることが考えられる。具体的には、正解付きのデータを入力し、通常の方法で出力値を得る。これに対して、注目するp層のニューロンの一つの出力値を既定の微小量δだけ増減させたときに、該当する出力値の変化量の絶対値を寄与度とすることが考えられる。p層ニューロンの出力を±δして、出力の差の絶対値を寄与度としてもよい。
【0068】
このように、変形例1においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除しないようにするので、処理精度の低下を抑止できる。
【0069】
[変形例2]
変形例2について説明する。選択した中間層の処理に対する寄与度(第一の寄与度)が低くても、選択した中間層のニューロンの中には、削除することで処理の精度を低下させてしまうような、処理に対して寄与度(第二の寄与度)が高いニューロンが含まれている場合がある。
【0070】
そこで、変形例2においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除しないで、寄与度の低いニューロンだけを削除する。
【0071】
変形例2においては、選択部3は、選択した中間層が有するニューロンの処理に対する寄与度(第二の寄与度)に応じて、ニューロンを選択する。削除部4は、選択したニューロンを削除する。
【0072】
このように、変形例2においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除せず、寄与度の低いニューロンだけを削除するので、処理精度の低下を抑止できる。
【0073】
変形例2について具体的に説明する。
選択部3は、まず、対象とする中間層であるp層のニューロンごとに、接続されているコネクションの重みを取得する。続いて、選択部3は、取得したp層のニューロンごとに、重みを合計して、その合計値を寄与度とする。
【0074】
続いて、選択部3は、p層のニューロンごとの寄与度が、あらかじめ決定した閾値(第二の閾値)以上であるか否かを判定し、判定結果に応じて、p層のニューロンを選択する。
【0075】
続いて、寄与度が、あらかじめ決定した閾値以上のニューロンである場合、選択部3は、構造化ネットワークを用いて実行される処理に対して、このニューロンの寄与度が高いと判定し、ニューロンを削除対象から除外する。
【0076】
対して、選択部3は、p層のニューロンの寄与度が閾値より小さい場合、構造化ネットワークを用いて実行される処理に対して寄与度が低いとニューロンと判定し、寄与度の低いニューロンを削除対象として選択する。続いて、削除部4は、選択部3により選択されたニューロンを削除する。
【0077】
このように、変形例2においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除せず、寄与度の低いニューロンだけを削除するので、処理精度の低下を抑止できる。
【0078】
[装置動作]
次に、本発明の実施の形態における構造最適化装置の動作について
図10を用いて説明する。
図10は、構造最適化装置を有するシステムの動作の一例を示す図である。以下の説明においては、適宜
図1から
図9を参照する。また、本実施の形態では、構造最適化装置を動作させることによって、構造最適化方法が実施される。よって、本実施の形態における構造最適化方法の説明は、以下の構造最適化装置の動作説明に代える。
【0079】
図10に示すように、最初に、学習データに基づいて、学習モデル23を生成する(ステップA1)。具体的には、ステップ
A1において、学習装置20は、まず、入力装置21から複数の学習データを取得する。
【0080】
続いて、ステップA1において、学習装置20は、取得した学習データを用いて、学習モデル23(構造化ネットワーク)を生成する。続いて、ステップA1において、学習装置20は、生成した学習モデル23を、記憶装置22に記憶する。
【0081】
次に、生成部2は、学習モデル23が有する構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する(ステップA2)。具体的には、ステップA2において、生成部2は、まず、残差ネットワークを生成する対象となる中間層を選択する。例えば、生成部2は、一部又は全部の中間層を選択する。
【0082】
続いて、ステップA2において、生成部2は、選択した中間層に対して残差ネットワークを生成する。残差ネットワークは、例えば、
図3のBに示したように、対象とする中間層がp層である場合、コネクションC3(第一のコネクション)、C4(第二のコネクション)、C5(第三のコネクション)、加算器ADDを生成し、それらを用いて残差ネットワークを生成する。
【0083】
次に、選択部3は、構造化ネットワークを用いて実行される処理に対する、中間層ごとに寄与度(第一の寄与度)を算出する(ステップA3)。具体的には、ステップA3において、選択部3は、まず、対象とする中間層の入力に接続されているコネクションの重みを取得する。
【0084】
続いて、ステップA3において、選択部3は、取得した重みを合計して、その合計値を寄与度とする。
図3のBにおいては、p層の寄与度を算出する場合、コネクションC1の重みw1を用いて、中間層の寄与度を算出する。例えば、コネクションC1が有するコネクションそれぞれの重みを合計して合計値を算出し、算出した合計値を寄与度とする。
【0085】
次に、選択部3は、算出した寄与度に応じて、削除対象となる中間層を選択する(ステップA4)。具体的には、ステップA4において、選択部3は、寄与度が、あらかじめ決定した閾値(第一の閾値)以上であるか否かを判定し、判定結果に応じて中間層を選択する。
【0086】
例えば、ステップA4において、選択部3は、寄与度があらかじめ決定した閾値以上である場合、対象とする中間層が、構造化ネットワークを用いて実行される処理に対して寄与度が高いと判定する。また、選択部3は、寄与度が閾値より小さい場合、選択部3は、対象とする中間層が、構造化ネットワークを用いて実行される処理に対して寄与度が低いと判定する。
【0087】
次に、削除部4は、選択部3を用いて選択した中間層を削除する(ステップA5)。具体的には、ステップA5において、削除部4は、まず、寄与度が閾値より小さい中間層を表す情報を取得する。続いて、ステップA5において、削除部4は、寄与度が閾値より小さい中間層を削除する。
【0088】
[変形例1]
変形例1の動作について
図11を用いて説明する。
図11は、変形例1におけるシステムの動作の一例を示す図である。
【0089】
図11に示すように、最初に、ステップA1からステップA4の処理を行う。ステップA1からA4の処理についてはすでに説明をしたので説明を省略する。
【0090】
次に、選択部3は、選択した中間層ごとに、中間層が有するニューロンそれぞれの寄与度(第二の寄与度)を算出する(ステップB1)。具体的には、ステップB1において、選択部3は、まず、対象とする中間層のニューロンごとに、接続されているコネクションの重みを取得する。続いて、選択部3は、ニューロンごとに重みを合計し、その合計値を寄与度とする。
【0091】
次に、選択部3は、算出したニューロンごとの寄与度に応じて、削除対象となる中間層を選択する(ステップB2)。具体的には、ステップB2において、選択部3は、選択した中間層のニューロンごとに、寄与度が、あらかじめ決定した閾値(第二の閾値)以上であるか否かを判定する。
【0092】
続いて、ステップB2において、寄与度が、あらかじめ決定した閾値以上のニューロンが選択した中間層にある場合、選択部3は、構造化ネットワークを用いて実行される処理に対して、このニューロンの寄与度は高いと判定し、選択した中間層を削除対象から除外する。
【0093】
対して、ステップB2において、選択部3は、選択した中間層のニューロンの寄与度がすべて閾値より小さい場合、対象とする中間層は、構造化ネットワークを用いて実行される処理に対して寄与度が低いと判定し、対象とする中間層を削除対象として選択する。
【0094】
続いて、削除部4は、選択部3により削除対象として選択された中間層を削除する(ステップB3)。
【0095】
このように、変形例1においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除しないようにするので、処理精度の低下を抑止できる。
【0096】
[変形例2]
変形例2の動作について
図12を用いて説明する。
図12は、変形例2におけるシステムの動作の一例を示す図である。
【0097】
図12に示すように、最初に、ステップA1からステップA4、ステップB1の処理を行う。ステップA1からA4、ステップB1の処理についてはすでに説明をしたので説明を省略する。
【0098】
次に、選択部3は、算出したニューロンごとの寄与度に応じて、削除対象となるニューロンを選択する(ステップC1)。具体的には、ステップC1において、選択部3は、選択した中間層のニューロンごとに、寄与度が、あらかじめ決定した閾値(第二の閾値)以上であるか否かを判定する。
【0099】
続いて、ステップC1において、寄与度が、あらかじめ決定した閾値以上のニューロンがある場合、選択部3は、構造化ネットワークを用いて実行される処理に対して、このニューロンの寄与度は高いと判定し、選択した中間層を削除対象から除外する。
【0100】
対して、ステップC1において、選択部3は、選択したニューロンの寄与度が閾値より小さい場合、対象とするニューロンは、構造化ネットワークを用いて実行される処理に対して寄与度が低いと判定し、対象とするニューロンを削除対象として選択する。
【0101】
続いて、削除部4は、選択部3により削除対象として選択されたニューロンを削除する(ステップC2)。
【0102】
このように、変形例2においては、選択した中間層に、寄与度の高いニューロンが含まれている場合、その中間層を削除せず、寄与度の低いニューロンだけを削除するので、処理精度の低下を抑止できる。
【0103】
[本実施の形態の効果]
以上のように本実施の形態によれば、構造化ネットワークに、中間層をショートカットする残差ネットワークを生成した後、構造化ネットワークを用いて実行される処理に対して寄与度が低い中間層を削除するので、構造化ネットワークを最適化できる。したがって、演算器の計算量を削減できる。
【0104】
また、本実施の形態においては、上述したように構造化ネットワークに残差ネットワークを設けて最適化することで、識別・分類などの処理精度の低下を抑止できる。一般的に、構造化ネットワークにおいて、中間層、ニューロンの数の減少は、識別・分類する処理精度の低下につながるが、寄与度が高い中間層は削除しないので、識別・分類などの処理精度の低下を抑止できる。
【0105】
図2の例であれば、自動車を撮像した画像を入力層に入力した場合に、出力層において画像に撮像された被写体が自動車であると識別・分類するために必要な中間層は、処理に対する寄与度が高いとして削除しない。
【0106】
さらに、本実施の形態においては、上述したように構造化ネットワークを最適化することで、プログラムを小さくできるので、演算器、メモリなどの規模を小さくできる。その結果、機器を小型化することができる。
【0107】
[プログラム]
本発明の実施の形態におけるプログラムは、コンピュータに、
図10に示すステップA1からA5、又は
図11に示すステップA1からA4、ステップB1からB3、又は
図12に示すステップA1からA4、ステップB1、ステップC1、C2、又はそれら二つ以上を実行させるプログラムであればよい。
【0108】
このプログラムをコンピュータにインストールし、実行することによって、本実施の形態における構造最適化装置と構造最適化方法とを実現することができる。この場合、コンピュータのプロセッサは、生成部2、選択部3、削除部4として機能し、処理を行なう。
【0109】
また、本実施の形態におけるプログラムは、複数のコンピュータによって構築されたコンピュータシステムによって実行されてもよい。この場合は、例えば、各コンピュータが、それぞれ、生成部2、選択部3、削除部4のいずれかとして機能してもよい。
【0110】
[物理構成]
ここで、実施の形態、変形例1、2におけるプログラムを実行することによって、構造最適化装置を実現するコンピュータについて
図13を用いて説明する。
図13は、本発明の実施の形態における構造最適化装置を実現するコンピュータの一例を示すブロック図である。
【0111】
図13に示すように、コンピュータ110は、CPU(Central Processing Unit)111と、メインメモリ112と、記憶装置113と、入力インターフェイス114と、表示コントローラ115と、データリーダ/ライタ116と、通信インターフェイス117とを備える。これらの各部は、バス121を介して、互いにデータ通信可能に接続される。なお、コンピュータ110は、CPU111に加えて、又はCPU111に代えて、GPU(Graphics Processing Unit)、又はFPGA(Field-Programmable Gate Array)を備えていてもよい。
【0112】
CPU111は、記憶装置113に格納された、本実施の形態におけるプログラム(コード)をメインメモリ112に展開し、これらを所定順序で実行することにより、各種の演算を実施する。メインメモリ112は、典型的には、DRAM(Dynamic Random Access Memory)などの揮発性の記憶装置である。また、本実施の形態におけるプログラムは、コンピュータ読み取り可能な記録媒体120に格納された状態で提供される。なお、本実施の形態におけるプログラムは、通信インターフェイス117を介して接続されたインターネット上で流通するものであってもよい。
【0113】
また、記憶装置113の具体例としては、ハードディスクドライブの他、フラッシュメモリなどの半導体記憶装置があげられる。入力インターフェイス114は、CPU111と、キーボード及びマウスといった入力機器118との間のデータ伝送を仲介する。表示コントローラ115は、ディスプレイ装置119と接続され、ディスプレイ装置119での表示を制御する。
【0114】
データリーダ/ライタ116は、CPU111と記録媒体120との間のデータ伝送を仲介し、記録媒体120からのプログラムの読み出し、及びコンピュータ110における処理結果の記録媒体120への書き込みを実行する。通信インターフェイス117は、CPU111と、他のコンピュータとの間のデータ伝送を仲介する。
【0115】
また、記録媒体120の具体例としては、CF(Compact Flash(登録商標))及びSD(Secure Digital)などの汎用的な半導体記憶デバイス、フレキシブルディスク(Flexible Disk)などの磁気記録媒体、又はCD-ROM(Compact Disk Read Only Memory)などの光学記録媒体があげられる。
【0116】
[付記]
以上の実施の形態に関し、更に以下の付記を開示する。上述した実施の形態の一部又は全部は、以下に記載する(付記1)から(付記12)により表現することができるが、以下の記載に限定されるものではない。
【0117】
(付記1)
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成部と、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択部と、
選択された前記中間層を削除する、削除部と、
を有することを特徴とする構造最適化装置。
【0118】
(付記2)
付記1に記載の構造最適化装置であって、
前記選択部は、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記中間層を選択する
ことを特徴とする構造最適化装置。
【0119】
(付記3)
付記1又は2に記載の構造最適化装置であって、
前記選択部は、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記ニューロンを選択し、
前記削除部は、更に、選択された前記ニューロンを削除する
ことを特徴とする構造最適化装置。
【0120】
(付記4)
付記1から3のいずれか一つに記載の構造最適化装置であって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とする構造最適化装置。
【0121】
(付記5)
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成ステップと、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択ステップと、
選択された前記中間層を削除する、削除ステップと、
を有することを特徴とする構造最適化方法。
【0122】
(付記6)
付記5に記載の構造最適化方法であって、
前記選択ステップにおいて、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記中間層を選択する
ことを特徴とする構造最適化方法。
【0123】
(付記7)
付記5又は6に記載の構造最適化方法であって、
前記選択ステップにおいて、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記ニューロンを選択し、
前記削除ステップにおいて、更に、選択された前記ニューロンを削除する
ことを特徴とする構造最適化方法。
【0124】
(付記8)
付記5から7のいずれか一つに記載の構造最適化方法であって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とする構造最適化方法。
【0125】
(付記9)
コンピュータに、
構造化ネットワークに、一つ以上の中間層をショートカットする残差ネットワークを生成する、生成ステップと、
前記構造化ネットワークを用いて実行される処理に対する、前記中間層の第一の寄与度に応じて、中間層を選択する、選択ステップと、
選択された前記中間層を削除する、削除ステップと、
を実行させる命令を含むプログラム。
【0126】
(付記10)
付記9に記載のプログラムであって、
前記選択ステップにおいて、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記中間層を選択する
ことを特徴とするプログラム。
【0127】
(付記11)
付記9又は10に記載のプログラムであって、
前記選択ステップにおいて、更に、選択した前記中間層が有するニューロンの前記処理に対する、第二の寄与度に応じて、前記ニューロンを選択し、
前記削除ステップにおいて、更に、選択された前記ニューロンを削除する
ことを特徴とするプログラム。
【0128】
(付記12)
付記9から11のいずれか一つに記載のプログラムであって、
前記残差ネットワークが有するコネクションは入力値を定数倍する重みを有する
ことを特徴とするプログラム。
【0129】
以上、実施の形態を参照して本願発明を説明したが、本願発明は上記実施の形態に限定されるものではない。本願発明の構成や詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【0130】
この出願は、2019年12月3日に出願された日本出願特願2019-218605を基礎とする優先権を主張し、その開示の全てをここに取り込む。
【産業上の利用可能性】
【0131】
以上のように本発明によれば、構造化ネットワークを最適化して演算器の計算量を削減することができる。本発明は、構造化ネットワークの最適化が必要な分野において有用である。
【符号の説明】
【0132】
1 構造最適化装置
2 生成部
3 選択部
4 削除部
20 学習装置
21 入力装置
22 記憶装置
23 学習モデル
110 コンピュータ
111 CPU
112 メインメモリ
113 記憶装置
114 入力インターフェイス
115 表示コントローラ
116 データリーダ/ライタ
117 通信インターフェイス
118 入力機器
119 ディスプレイ装置
120 記録媒体
121 バス