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

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

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

<>
  • 特開-機械学習装置およびプルーニング方法 図1
  • 特開-機械学習装置およびプルーニング方法 図2
  • 特開-機械学習装置およびプルーニング方法 図3
  • 特開-機械学習装置およびプルーニング方法 図4
  • 特開-機械学習装置およびプルーニング方法 図5
  • 特開-機械学習装置およびプルーニング方法 図6
  • 特開-機械学習装置およびプルーニング方法 図7
  • 特開-機械学習装置およびプルーニング方法 図8
  • 特開-機械学習装置およびプルーニング方法 図9
  • 特開-機械学習装置およびプルーニング方法 図10
  • 特開-機械学習装置およびプルーニング方法 図11
  • 特開-機械学習装置およびプルーニング方法 図12
  • 特開-機械学習装置およびプルーニング方法 図13
  • 特開-機械学習装置およびプルーニング方法 図14
  • 特開-機械学習装置およびプルーニング方法 図15
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024010496
(43)【公開日】2024-01-24
(54)【発明の名称】機械学習装置およびプルーニング方法
(51)【国際特許分類】
   G06N 3/082 20230101AFI20240117BHJP
【FI】
G06N3/08 120
【審査請求】未請求
【請求項の数】10
【出願形態】OL
(21)【出願番号】P 2022111869
(22)【出願日】2022-07-12
(71)【出願人】
【識別番号】000237592
【氏名又は名称】株式会社デンソーテン
(74)【代理人】
【識別番号】110001933
【氏名又は名称】弁理士法人 佐野特許事務所
(72)【発明者】
【氏名】関 竜介
(72)【発明者】
【氏名】岡田 康貴
(72)【発明者】
【氏名】片山 雄喜
(57)【要約】
【課題】プルーニング後に得られるニューラルネットワークにおける計算効率の向上と、処理精度の低下の抑制との両立を図ることができる技術を提供する。
【解決手段】例示的な機械学習装置は、ニューラルネットワークに対してプルーニングを行う処理部を備える。前記処理部は、前記ニューラルネットワークを構成する複数の層の各層に対して求められる重要度に応じて前記プルーニングを実行する。前記重要度は、前記複数の層の中に依存関係にある層が存在しない第1層については層ごとに求められ、前記複数の層の中に依存関係にある層が存在する第2層については当該依存関係にある層をグループ化して求められる。
【選択図】図11
【特許請求の範囲】
【請求項1】
ニューラルネットワークに対してプルーニングを行う処理部を備え、
前記処理部は、前記ニューラルネットワークを構成する複数の層の各層に対して求められる重要度に応じて前記プルーニングを実行し、
前記重要度は、
前記複数の層の中に依存関係にある層が存在しない第1層については層ごとに求められ、
前記複数の層の中に依存関係にある層が存在する第2層については当該依存関係にある層をグループ化して求められる、機械学習装置。
【請求項2】
前記依存関係にある層は、残差コネクションで関係づけられる層である、請求項1に記載の機械学習装置。
【請求項3】
前記第2層は、前記複数の層の中の少なくとも1つの層と依存関係にある、請求項1又は2に記載の機械学習装置。
【請求項4】
前記第2層においては、前記重要度は、前記グループ化された層の層ごとに求められた重要度を平均した値とされる、請求項1又は2に記載の機械学習装置。
【請求項5】
前記重要度は、前記複数の層の各層においてチャネルごとに求められる、請求項1に記載の機械学習装置。
【請求項6】
前記第2層においては、前記チャネルごとの前記重要度は、前記グループ化された各層にて前記チャネルごとに求められた重要度を前記チャネルごとに平均した値とされる、請求項5に記載の機械学習装置。
【請求項7】
前記プルーニングは、前記チャネルごとに求められた前記重要度に応じてチャネル単位で実行される、請求項6に記載の機械学習装置。
【請求項8】
前記処理部は、前記チャネルごとに求められた前記重要度が低い方から順に所定の割合を前記プルーニングの対象とする、請求項7に記載の機械学習装置。
【請求項9】
前記処理部は、前記プルーニング後のニューラルネットワークの学習を行う、請求項1又は8に記載の機械学習装置。
【請求項10】
装置がニューラルネットワークに対してプルーニングを行う方法であって、
前記プルーニングは、前記ニューラルネットワークを構成する複数の層の各層に対して求められる重要度に応じて実行され、
前記重要度は、
前記複数の層の中に依存関係にある層が存在しない第1層については層ごとに求められ、
前記複数の層の中に依存関係にある層が存在する第2層については当該依存関係にある層をグループ化して求められる、プルーニング方法。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ニューラルネットワークに対してプルーニングを行う技術に関する。
【背景技術】
【0002】
従来、ディープラーニングにより学習が行われたニューラルネットワークを、計算リソースが限られたエッジデバイスで動作させる手法としてプルーニング(枝刈り)が知られている。プルーニングでは、ニューラルネットワークに含まれる冗長なパラメータの削除が行われる。プルーニングにより、ニューラルネットワークの圧縮を図り、ニューラルネットワークにおける計算効率の向上を図ることができる。
【0003】
特許文献1には、多層ニューラルネットワークにおける層を削除する技術が開示される。特許文献1における学習装置は、多層ニューラルネットワークにおける各層について、該多層ニューラルネットワークの推定結果に対する寄与の度合いを示す寄与度をそれぞれ計算し、各層の寄与度に基づいて、削除対象の層を選択する。そして、当該学習装置は、選択された削除対象の層を多層ニューラルネットワークから削除し、削除対象の層が削除された多層ニューラルネットワークの学習を行う。
【先行技術文献】
【特許文献】
【0004】
【特許文献1】特開2019-185275号公報
【発明の概要】
【発明が解決しようとする課題】
【0005】
ニューラルネットワークを構成する層単位で削除を行う構成とすると、処理後に得られるニューラルネットワークの計算効率の向上を図れるが、ニューラルネットワークの処理精度が低下することが懸念される。一方で、プルーニングにより冗長なパラメータの削除を十分に行うことができないと、プルーニング後に得られるニューラルネットワークの計算効率を十分に高めることができない可能性がある。
【0006】
本発明は、上記の点に鑑み、プルーニング後に得られるニューラルネットワークにおける計算効率の向上と、処理精度の低下の抑制との両立を図ることができる技術を提供することを目的とする。
【課題を解決するための手段】
【0007】
例示的な本発明の機械学習装置は、ニューラルネットワークに対してプルーニングを行う処理部を備える。前記処理部は、前記ニューラルネットワークを構成する複数の層の各層に対して求められる重要度に応じて前記プルーニングを実行する。前記重要度は、前記複数の層の中に依存関係にある層が存在しない第1層については層ごとに求められ、前記複数の層の中に依存関係にある層が存在する第2層については当該依存関係にある層をグループ化して求められる。
【発明の効果】
【0008】
例示的な本発明によれば、プルーニング後に得られるニューラルネットワークにおける計算効率の向上と、処理精度の低下の抑制との両立を図ることができる。
【図面の簡単な説明】
【0009】
図1】機械学習システムの概略構成を示すブロック図
図2】プルーニングの概要を示す模式図
図3】ニューラルネットワークの構造例について説明するための模式図
図4】ニューラルネットワークが有するステージの構造例を示す模式図
図5】第1のプルーニング処理の一例について説明するための図
図6】第1のプルーニング処理の他の例について説明するための図
図7】第1実施形態に係る、プルーニングを含む機械学習方法の一例を示すフローチャート
図8】第1実施形態に係るプルーニングの流れを示すフローチャート
図9】第1実施形態に係る、プルーニングを含む機械学習方法の変形例を示すフローチャート
図10】第2実施形態に係るプルーニングの流れを示すフローチャート
図11】第2層の重要度の求め方を説明するための図
図12】第2層における不要なチャネルか否かの判定手法について説明するための図
図13】第2実施形態の手法の効果について説明するための図
図14】チャネル単位で行われるプルーニングについて説明するための図
図15】チャネル単位で行われるプルーニングについて説明するための図
【発明を実施するための形態】
【0010】
以下、本発明の例示的な実施形態について、図面を参照しながら詳細に説明する。
【0011】
<<1.第1実施形態>>
<1-1.機械学習システム>
図1は、本発明の実施形態に係る機械学習システム100の概略構成を示すブロック図である。図1に示すように、機械学習システム100は、機械学習装置1とエッジデバイス2とを備える。
【0012】
機械学習装置1は、学習済みのニューラルネットワークの生成に関わる処理を行う。機械学習装置1が行う処理には、少なくとも、学習が行われたニューラルネットに対してプルーニングを行う処理が含まれる。本実施形態では、機械学習装置1が行う処理には、プルーニングの他に、プルーニング後の再学習処理も含まれる。
【0013】
なお、機械学習装置1が行う処理は、プルーニングのみであってもよい。この場合、機械学習装置1は、プルーニング装置であってよい。また、別の例として、機械学習装置1が行う処理には、プルーニングの前に行われるニューラルネットワークを学習する処理(事前学習処理)が含まれてもよい。
【0014】
本実施形態では、機械学習装置1は、インターネット等の通信網を介してエッジデバイス2と接続される。機械学習装置1は、いわゆるサーバ装置であり、プルーニングおよびその後の再学習が行われたニューラルネットワークをエッジデバイス2に配信する。なお、ここで言うサーバ装置は、物理サーバであっても、クラウドサーバであってもよい。エッジデバイス2は、例えば、スマートフォン、パーソナルコンピュータ、車載装置、IoT(Internet of Things)家電等であってよい。
【0015】
なお、機械学習装置1によりプルーニングおよびその後の再学習が行われたニューラルネットワークは、例えば、光記録媒体あるいは磁気記録媒体等の記録媒体に記録され、記録媒体を介して他の装置(車載装置等)に提供される構成であってもよい。機械学習装置1によりプルーニングおよびその後の再学習が行われたニューラルネットワークは、有線を介して他の装置(車載装置等)に提供される構成であってもよい。
【0016】
<1-2.機械学習装置>
(1-2-1.装置の概要)
図1に示すように、機械学習装置1は、処理部11および記憶部12を備える。
【0017】
処理部11は、例えば、1又は複数のプロセッサにより構成される。プロセッサは、例えばCPU(Central Processing Unit)またはGPU(Graphics Processing Unit)を含んで構成されてよい。また、プロセッサは、例えば、CPUおよびGPUを含んで構成されてもよい。
【0018】
記憶部12は、コンピュータにより読み取り可能なプログラムおよびデータ等を非一時的に格納または記憶する。記憶部12は、不揮発性記憶媒体を有する。記憶部12が有する不揮発性記憶媒体は、例えば、半導体メモリ、磁気媒体、および、光学媒体等のうち、少なくとも一種類により構成されてよい。また、記憶部12は、RAM(Random Access Memory)を構成する揮発性記録媒体を有する。
【0019】
図1に示すように、処理部11は、機能的な構成として、プルーニング部111および学習部112を備える。処理部11が備えるプルーニング部111および学習部112は、例えば、記憶部12に記憶されるプログラムに従った演算処理をプロセッサが実行することによって実現される。本実施形態の範囲には、機械学習装置1をコンピュータによって実現するコンピュータプログラムが含まれる。また、本実施形態の範囲には、そのようなプログラムを記録したコンピュータ読取り可能な不揮発性記録媒体が含まれる。
【0020】
なお、上記各部111、112は、上述のように、プロセッサにプログラムを実行させること、すなわちソフトウェアにより実現されてよいが、他の手法により実現されてもよい。上記各部111、112は、例えば、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)等を用いて実現されてもよい。すなわち、上記各部111、112は、専用のIC等を用いてハードウェアにより実現されてもよい。上記各部111、112は、ソフトウェアおよびハードウェアを併用して実現されてもよい。また、上記各部111、112は、概念的な構成要素である。1つの構成要素が実行する機能が、複数の構成要素に分散されてよい。また、複数の構成要素が有する機能が1つの構成要素に統合されてもよい。
【0021】
プルーニング部111は、ニューラルネットワークに対してプルーニングを行う。つまり、機械学習装置1は、ニューラルネットワークに対してプルーニングを行う処理部11を備える。詳細には、プルーニングが行われるニューラルネットワークは、事前に学習が行われた学習済みのニューラルネットワークである。この事前の学習は、機械学習装置1によって行われてもよいし、他の装置によって行われてもよい。なお、プルーニングが行われる学習済みのニューラルネットワークは、機械学習装置1がエッジデバイス2に対して配信する学習済みのニューラルネットワークとは異なる。
【0022】
[1-2-1-1.プルーニングの概要]
図2は、プルーニングの概要を示す模式図である。図2の左側に示すニューラルネットワークNN1は、プルーニングが行われる前のニューラルネットワークである。図2の右側に示すニューラルネットワークNN2は、ニューラルネットワークNN1に対してプルーニングを行った後のニューラルネットワークである。
【0023】
図2に示すように、ニューラルネットワークNN1、NN2は、複数のニューロンNが集まった層Lを複数有する。図2に示す例では、ニューラルネットワークNN1、NN2は、4つの層Lを有する。ニューロンNは、いわゆるノードと同じである。層Lと層Lの間には、ニューロンN同士のつながりの強さを示す重みWが存在する。図2に示すように、プルーニング後のニューラルネットワークNN2は、プルーニング前のニューラルネットワークNN1と比べて、ニューロンNや重みWの数が減っている。すなわち、プルーニングが行われると、ニューラルネットワークの重みWおよびニューロンNのうちの少なくとも一方が取り除かれる。図2に示されたプルーニング後のニューラルネットワークNN2に含まれるニューロンNや重みWの数は、プルーニング前のニューラルネットワークNN1と比較して減少している。言い換えれば、プルーニング後のニューラルネットワークNN2は、プルーニング前と比較して、規模が小さくなっている(圧縮されている)。プルーニング後のニューラルネットワークNN2は圧縮されているので、プルーニング後のニューラルネットワークNN2を利用する場合、計算量に加えてメモリの占有量やメモリへのアクセスも低減され、計算効率の向上を図ることができる。本実施形態におけるプルーニングの詳細については、後述する。
【0024】
図1に戻って、学習部112は、プルーニング後のニューラルネットワークを、データセット(不図示)を用いて再学習する。すなわち、処理部11は、プルーニング後のニューラルネットワークの学習を行う。このような構成とすることによって、プルーニング後のニューラルネットワークの重みの適正化を図り、ニューラルネットワークの処理精度の低下を抑制することができる。
【0025】
なお、学習部112は、機械学習装置1に含まれなくてもよい。また、データセットを用いた学習の手法には、公知の手法が利用されてよい。データセットは、学習データと正解ラベルとを含む教師データ群であってよい。本実施形態では、学習部112は、再学習により得られた学習済みのニューラルネットワークをエッジデバイス2に向けて出力する。
【0026】
(1-2-2.ニューラルネットワーク)
図3は、処理部11によってプルーニングが行われるニューラルネットワーク30の構造例について説明するための模式図である。ニューラルネットワーク30は、例えば、画像分類や物体検出等を行う画像認識用のニューラルネットワークである。ただし、ニューラルネットワーク30は、画像認識用のニューラルネットワークに限らず、例えば音声認識用のニューラルネットワーク等であってもよい。
【0027】
図3に示す例において、プルーニングの対象となるニューラルネットワーク30は、少なくとも1つのブロック32を含むステージ31を複数有する。ニューラルネットワーク30は、詳細には、複数のステージ31が連なった構造を有する。複数のステージ31に含まれるブロック32の数は、互いに同じであっても、異なってもよい。複数のステージ31の中には、複数のブロック32を含むステージ31が少なくとも1つは存在する。
【0028】
図4は、ニューラルネットワーク30が有するステージ31の構造例を示す模式図である。図4に示す例では、ステージ31に含まれるブロック32の数は複数であり、詳細には3つである。図4に示すように、各ブロック32には、複数の層33が含まれる。図4に示す例では、各ブロック32には、3つの畳み込み層33が含まれる。各ブロック32に含まれる層33の数は、3つに限らず、2つや、4つ以上であってもよい。
【0029】
図4に示す例では、ステージ31内に含まれる各ブロック32の最後の畳み込み層33が残差コネクション34により接続される。残差コネクションは、Residual Connection、又は、スキップコネクションと同義である。詳細には、ステージ31内には、残差コネクション34が2つ含まれる。第1残差コネクション34aは、第1ブロック32aの最後の畳み込み層33aLの出力と、第2ブロック32bの最後の畳み込み層33bLの出力とを結合する。第2残差コネクション34bは、第2ブロック32bの最後の畳み込み層33bLの出力と、第3ブロック32cの最後の畳み込み層33cLの出力とを結合する。なお、ステージ31内に含まれる残差コネクション34の数は、ステージ31内に含まれるブロック32の数に応じて適宜変更されてよい。
【0030】
出力が残差コネクション34により結合される畳み込み層33同士は、要素同士の足し合せが行われるために、出力チャネルの構成が同じとされる。このため、残差コネクション34で接続される各ブロック32の最後の畳み込み層33のチャネル数は同じとされる。換言すると、ステージ31内において、各ブロック32の出力チャネル数は同じである。図4に示す例では、第1ブロック32aの最後の畳み込み層33aL、第2ブロック32bの最後の畳み込み層33bL、および、第3ブロック32cの最後の畳み込み層33cLの出力チャネル数は同数C1である。換言すると、3つのブロック32a、32b、32cの出力チャネル数はいずれもC1である。
【0031】
本実施形態では、ステージ31毎に、ブロック32の出力チャネル数が異なる。換言すると、ステージ31は、出力するチャネル数が同じとなるブロック32の集合体である。例えば、ニューラルネットワーク30が5つのステージ31を有する場合、第1ステージ、第2ステージ、第3ステージ、第4ステージ、および、第5ステージの各ブロック32の出力チャネル数は、順に、24、40、80、120、160等とされる。なお、ステージ31間を跨ぐ残差コネクション34は設定されない。
【0032】
以上のように構成されるニューラルネットワーク30は、例えば、公知のResNetやMobileNetV2等を用いて構成されてよい。例えば、ResNetでは、各ブロック32に含まれる層の数は2つである。また、例えば、MobileNetV2では、各ブロック32に含まれる層の数は3つである。
【0033】
以上では、残差コネクション34は、各ブロック32の最後の層33同士を結合する構成とした。ただし、これは例示である。プルーニングの対象となるニューラルネットワークが残差コネクションを含めばよい。例えば、残差コネクションは、各ブロック32の中間の層33同士(例えば、層33aMと層33bM)を結合する構成であってもよい。
【0034】
(1-2-3.プルーニングの詳細)
本実施形態において、プルーニングには、第1のプルーニング処理と、第1のプルーニング処理とは異なる第2のプルーニング処理とが含まれる。このような構成とすれば、ニューラルネットワーク30の構成に応じてプルーニングの手法の使い分けを行うことができる。複数のプルーニング手法の使い分けにより、ニューラルネットワーク30の重みやノードを適切に取り除くことができ、プルーニング後に得られるニューラルネットワーク30における計算効率の向上と処理精度の低下の抑制との両立を図ることができる。
【0035】
詳細には、第1のプルーニング処理と第2のプルーニング処理とは、プルーニングを行う、ニューラルネットワーク30の構成要素の単位が異なる。このような構成とすれば、ニューラルネットワーク30の局所的な構造の違い等に応じてプルーニングの手法の使い分けを行って、ニューラルネットワーク30の重みやノードを適切に取り除くことができる。
【0036】
より詳細には、第1のプルーニング処理は、畳み込み層のチャネル単位でプルーニングを行う。第2のプルーニング処理は、重みパラメータ単位でプルーニングを行う。チャネル単位の方が、重みパラメータ単位よりも、プルーニングを行うニューラルネットワーク30の構成要素の単位が大きい。すなわち、第1のプルーニング処理は、第2のプルーニング処理に比べて、プルーニングを行うニューラルネットワーク30の構成要素の単位が大きい。
【0037】
上述のように、ニューラルネットワーク30は、残差コネクション34を含む。このような構成では、残差コネクション34により接続される畳み込み層33同士の出力チャネルを同じ構成にする必要がある。このために、残差コネクション34により接続される層33に関しては、単独でチャネル単位のプルーニングを行うことができない。すなわち、残差コネクション34で接続される層33に対してチャネル単位でプルーニングを行う場合には、接続される各層33における各チャネルの重要度を総合的に判定してプルーニングを行う必要がある。すなわち、プルーニング処理が複雑となりやすい。
【0038】
また、残差コネクション34で接続される層33の間で、不要なチャネルの数に偏りがある場合、不要なチャネルの数が少ない層33に合わせてプルーニングを行う必要がある。このために、不要なチャネルの数が多い層33において、余分なチャネルが残ってしまい、チャネル単位のプルーニングの効果が小さくなることがある。
【0039】
更に、プルーニングにおいては、ニューラルネットワーク30全体でプルーニングを行う重みパラメータの比率を決める手法が一般的に行われる。この場合、残差コネクション34で接続される層33において、チャネル単位のプルーニングに上述のような制約があるために、残差コネクション34で接続される層33以外の層33にプルーニングが偏って行われる傾向がある。この結果、プルーニング後に得られるニューラルネットワーク30の処理精度が低下することがある。
【0040】
この点、本実施形態では、チャネル単位でのプルーニング処理と、重みパラメータ単位でのプルーニング処理とを使い分けることができるために、プルーニング処理の複雑化、および、プルーニング対象の偏りを避けて適度なプルーニングを行うことができる。この結果、プルーニング後に得られるニューラルネットワーク30における計算効率の向上と、処理精度の低下の抑制との両立を図ることができる。
【0041】
具体的には、処理部11は、ニューラルネットワーク30を構成する複数の層33のうち、出力が残差コネクション34で結合される層33の少なくとも一部を第1のプルーニング処理(チャネル単位のプルーニング処理)の対象外とする。第1のプルーニング処理の対象外とされた層33に対しては、第2のプルーニング処理(重みパラメータ単位でのプルーニング処理)が行われる。このように構成することで、出力が残差コネクション34で結合される層33について、処理が複雑になることを避けつつ、適度なプルーニングを実施することができる。
【0042】
図4に示す例においては、各ブロック32a、32b、32cの最後の畳み込み層33aL、33bL、33cLは、第1のプルーニング処理(チャネル単位のプルーニング)の対象から除外される。そして、これらの畳み込み層33aL、33bL、33cLは、第2のプルーニング処理(重みパラメータ単位のプルーニング)の対象とされる。各ブロック32の最初の畳み込み層33aF、33bF、33cFと、中間の畳み込み層33aM、33bM、33cMは、第1のプルーニング処理の対象となる。
【0043】
なお、各ブロック32の最初の畳み込み層33aF、33bF、33cFと、中間の畳み込み層33aM、33bM、33cMとは、第1のプルーニング処理だけが行われる構成であってよい。ただし、各ブロック32の最初の畳み込み層33aF、33bF、33cFと、中間の畳み込み層33aM、33bM、33cMとは、第1のプルーニング処理に加えて、第2のプルーニング処理も行われることが好ましい。
【0044】
図5は、第1のプルーニング処理の一例について説明するための図である。図5において、iは畳み込み層33の番号、Cはチャネル数、wとhはそれぞれ特徴マップ40の幅と高さを表す。iの値が小さいほど入力層に近く、iの値が大きいほど出力層に近いことを表す。畳み込み層33の重みは、サイズk×kの畳み込みフィルタ(カーネル)がM×N枚配列された構成となっている。行数Mは、出力特徴マップ40のチャネル数(Ci+1)に対応する。列数Nは、入力特徴マップ40のチャネル数(Ci)に対応する。
【0045】
図5に示す例では、各畳み込みフィルタについて、重みパラメータの絶対値和が算出される。例えば、畳み込みフィルタのサイズが3×3である場合、9つの重みパラメータの絶対値和が算出される。入力チャネルごと(列ごと)に、求めた絶対値和の総和(M個の絶対値和の総和)が評価値として算出される。評価値が小さい入力チャネルについて、入力チャネルの畳み込みフィルタと、当該入力チャネルに対応する入力特徴マップ40とが削除される。削除対象となる入力チャネルは、例えば、評価値が小さい方から順番に予め決められた数である。
【0046】
なお、図5においては、1つの入力チャネルが削除対象となっており、当該削除対象の入力チャネルに含まれる全ての畳み込みフィルタと、当該入力チャネルに対応するハッチングを施した入力特徴マップ40が削除されている。また、上述の絶対値和の代わりに、例えば、二乗和や、絶対値の最大値が利用される構成等としてもよい。
【0047】
図6は、第1のプルーニング処理の他の例について説明するための図である。図6においても、図5と同様に、iは畳み込み層33の番号、Cはチャネル数、wとhはそれぞれ特徴マップ40の幅と高さを表す。iの値が小さいほど入力層に近く、iの値が大きいほど出力層に近いことを表す。畳み込み層33の重みは、サイズk×kの畳み込みフィルタがM×N枚配列された構成となっている。行数Mは、出力特徴マップ40のチャネル数(Ci+1)に対応する。列数Nは、入力特徴マップ40のチャネル数(Ci)に対応する。
【0048】
図6に示す例でも、各畳み込みフィルタについて、重みパラメータの絶対値和が算出される。ただし、図6に示す例では、出力チャネルごと(行ごと)に、求めた絶対値和の総和(N個の絶対値和の総和)が評価値として算出される。評価値が小さい出力チャネルについて、出力チャネルの畳み込みフィルタと、当該出力チャネルに対応する出力特徴マップ40とが削除される。削除対象となる出力チャネルは、例えば、評価値が小さい方から順番に予め決められた数である。
【0049】
なお、図6においては、1つの出力チャネルが削除対象となっており、当該削除対象の出力チャネルに含まれる全ての畳み込みフィルタと、当該出力チャネルに対応するハッチングを施した出力特徴マップ40が削除される。また、図5に示す例の場合と同様に、上述の絶対値の和の代わりに、例えば、二乗和や、絶対値の最大値が利用される構成としてもよい。
【0050】
図5に示すプルーニング処理は、入力チャネルの数を削減するプルーニングで、いわゆるチャネルプルーニングである。図6に示すプルーニング処理は、出力チャネルの数を削減するプルーニングで、いわゆるフィルタプルーニングである。図5および図6に示すプルーニングは、上述の説明からわかるように、いずれもチャネル単位でプルーニングが行われる。
【0051】
上述のように、第2のプルーニング処理は、チャネル単位よりも小さい単位である重みパラメータ単位でプルーニングが行われる。例えば、重みパラメータの絶対値の大きさが、予め定められた閾値よりも小さい場合に、重みパラメータがゼロとされる。絶対値の大きさの代わりに、例えば二乗値が利用されてもよい。
【0052】
なお、重みパラメータの絶対値が小さい方から順に所定数が、重みパラメータをゼロとされてもよい。また、別の手法として、例えば、ニューラルネットワーク30の性能(例えば認識率等)に影響を与えない重みパラメータを探索的に見つける手法が用いられてもよい。
【0053】
重みパラメータ単位で行われる第2のプルーニング処理は、ニューラルネットワーク30におけるプルーニングを行う構成要素の単位が、チャネル単位で行われる第1のプルーニング処理に比べて小さい。このために、第2のプルーニング処理は、第1のプルーニング処理に比べて精度劣化を小さく抑えることができる。
【0054】
<1-3.機械学習方法>
次に、本発明の第1実施形態に係る、プルーニング手法を利用した機械学習方法について説明する。図7は、本発明の第1実施形態に係る、プルーニングを含む機械学習方法の一例を示すフローチャートである。
【0055】
ステップS1では、ニューラルネットワーク30の学習が行われる。当該学習は、データセット(不図示)を用いて行われる。データセットは、学習データと正解ラベルとを含む教師データ群であってよい。当該学習は、上述の事前学習である。事前学習は、機械学習装置1によって行われても、他の装置によって行われてもよい。学習が完了すると、次のステップS2に処理が進められる。
【0056】
ステップS2では、機械学習装置1の処理部11が、学習済みのニューラルネットワーク30を対象としてプルーニングを行う。プルーニングが完了すると、次のステップS3に処理が進められる。ステップS3の処理の説明を行う前に、図8を用いてプルーニングの流れについて説明する。図8は、第1実施形態に係るプルーニングの流れを示すフローチャートである。より詳細には、図8は、図7のステップS2におけるプルーニングの詳細な流れを示すフローチャートである。
【0057】
ステップS21では、重みパラメータの削減率が設定される。削減率は、学習済みのニューラルネットワーク30が有する全ての重みパラメータに対して重みパラメータを削減する比率である。例えばニューラルネットワーク30の開発を行う開発者等の人が、削減率の設定を行う。機械学習装置1に対する人による削減率の設定は、不図示の入力装置を利用して行われる。なお、削減率の設定は、機械学習装置1が自動的に設定する構成であってもよい。
【0058】
削減率は、1つの値のみが設定される構成でもよいが、本実施形態では、削減率は、段階的に数値が大きくなるように複数設定される。これは、第1回目のプルーニングからプルーニングの回数を重ねるごとに削減率を大きくする構成とするためである。例えば、削減率は、20%、25%、30%、・・・といった形式で設定される。削減率が設定されると、次のステップS22に処理が進められる。
【0059】
ステップS22では、処理部11が、学習済みのニューラルネットワーク30における不要なチャネルの特定を行う。不要なチャネルの特定を行う処理は、上述したチャネル単位で行われる第1のプルーニング処理に含まれる処理である。ニューラルネットワーク30に含まれる複数の層33のうち、出力が残差コネクション34で結合される層33は、不要なチャネルを特定する対象から除外される。例えば、上述した評価値が小さい方から順に、所定数が不要なチャネルとして特定される。所定数は、例えば、削減率に応じて自動的に決められる構成としてよい。不要なチャネルの特定が行われると、次のステップS23に処理が進められる。
【0060】
ステップS23では、処理部11が、学習済みのニューラルネットワーク30における不要な重みパラメータの特定を行う。不要な重みパラメータの特定を行う処理は、上述した重みパラメータ単位で行われる第2のプルーニング処理に含まれる処理である。本実施形態では、不要な重みパラメータの特定を行う処理は、ニューラルネットワーク30に含まれる全ての層33を対象として行われる。なお、既に不要なチャネルに特定されたチャネルに含まれる重みパラメータは、処理の対象外とされてよい。不要な重みパラメータは、例えば、先の不要なチャネルの特定結果と削減率とに応じて、重みパラメータの絶対値が小さい方から順に特定される。不要な重みパラメータの特定が行われると、次のステップS24に処理が進められる。
【0061】
なお、ステップS22の処理とステップS23の処理とは、処理を行う順番が反対とされてもよい。
【0062】
ステップS24では、処理部11が、先のステップS22およびステップS23の処理で不要と特定されたチャネルおよび重みパラメータをプルーニングする処理を実行する。ステップS24におけるプルーニング処理は、第1のプルーニング処理の一部と、第2のプルーニング処理の一部とを含む。プルーニング処理が実行されると図7に示すステップS3に処理が進められる。
【0063】
以上からわかるように、処理部11は、ニューラルネットワーク30を構成する複数の層33の中から第1のプルーニング処理の対象外となる層33を特定し、当該特定された層33を除く層を対象として第1のプルーニング処理を行う。別の言い方をすると、処理部11は、ニューラルネットワーク30を構成する複数の層の中から第1のプルーニング処理の対象となる層33を特定し、当該特定した層33を対象として第1のプルーニング処理を行う。このような構成とすると、チャネル単位でプルーニングを行う第1のプルーニング処理に適さない層33に対して第1のプルーニング処理を行わない構成とできる。例えば、出力が残差コネクション34で結合される層33の少なくとも一部を第1のプルーニング処理の対象から除外することができる。一方で、チャネル単位でのプルーニングに適した層33には、チャネル単位でのプルーニングが実行されるために、プルーニングの効果が小さくなることを抑制できる。
【0064】
また、処理部11は、複数の層33のうち、第1のプルーニング処理の対象外に特定された層33を対象として第2のプルーニング処理を行う。別の言い方をすると、処理部11は、複数の層33のうち、第1のプルーニング処理の対象となる層33に特定した層33と異なる層33を対象として第2のプルーニング処理を行う。このような構成によれば、第1のプルーニング処理が行われない層33が第2のプルーニング処理の対象となるために、プルーニングの効果が極端に小さくなることを抑制することができる。例えば、出力が残差コネクション34で結合される層33について、重みパラメータ単位でのプルーニングを行うことができる。なお、層33を対象として第2のプルーニング処理を行う場合、層間の重みパラメータがプルーニング処理の対象となる。
【0065】
また、処理部11は、第1のプルーニング処理の対象外に特定された層33を除く層33をさらに対象として第2のプルーニング処理を行う。別の言い方をすると、処理部11は、第1のプルーニング処理の対象となる層33に特定した層33をさらに対象として第2のプルーニング処理を行う。このような構成とすれば、第1のプルーニング処理の対象となった層33についても第2のプルーニング処理の対象とできる。このために、プルーニングが不十分となることを避けることができ、処理後のニューラルネットワーク30の計算効率の向上を期待できる。なお、上述した実施形態の構成は、このような構成である。ただし、処理部11は、第1のプルーニング処理の対象となる層33を対象として第2のプルーニング処理を行わない構成としてもよい。
【0066】
図7に戻って、ステップS3では、処理部11は、データセットを用いて、プルーニング後のニューラルネットワーク30の再学習を行う。再学習が完了すると、次のステップS4に処理が進められる。
【0067】
ステップS4では、処理部11は、プルーニングを終了するか否かを判定する。処理部11は、例えば、プルーニング後のニューラルネットワーク30の処理精度が予め設定した閾値以下となった場合に、プルーニングを終了すると判定する。また、別の例として、処理部11は、プルーニング後のニューラルネットワーク30のタスク(画像認識等)の実行時間が予め設定された目標値以下となった場合に、プルーニングを終了すると判定する。プルーニングを終了すると判定された場合(ステップS4でYes)、図7に示す処理が終了する。プルーニングを終了しないと判定された場合(ステップS4でNo)、ステップS2に戻って、ステップS2以降の処理が行われる。
【0068】
なお、ステップS2に戻った場合、先に使用した削減率よりも大きな削減率に変更されて、プルーニングが行われる。また、図7に示す処理により得られたニューラルネットワーク30は、例えば、エッジデバイス2に配信される。
【0069】
以上では、第1のプルーニング処理と第2のプルーニング処理とが纏めて実行される構成としたが、図9に示すように、第1のプルーニング処理と第2のプルーニング処理とが順番に行われてもよい。図9は、第1実施形態に係る、プルーニングを含む機械学習方法の変形例を示すフローチャートである。
【0070】
まず、ステップN1で学習が行われた学習済みのニューラルネットワークに対して、第1のプルーニング処理が行われる(ステップN2)。削減率が設定され、チャネル単位のプルーニングが行われる。なお、ここでは、出力が残差コネクション34で結合される層33は、プルーニングの対象から除外される。
【0071】
第1のプルーニング処理後に再学習が行われ(ステップN3)、その後、第1のプルーニング処理を終了するか否かの判定が行われる(ステップN4)。例えば、第1のプルーニング処理後のニューラルネットワークの処理精度が予め設定した閾値以下となった場合に、第1のプルーニング処理を終了すると判定する。第1のプルーニング処理を終了しない場合(ステップN4でNo)、ステップN2に戻ってステップN2以降の処理が繰り返される。
【0072】
第1のプルーニング処理を終了する場合(ステップN4でYes)、第1のプルーニング処理が行われたニューラルネットワークに対して第2のプルーニング処理が行われる(ステップN5)。削減率が設定され、重みパラメータ単位のプルーニングが行われる。なお、本例では、出力が残差コネクションで結合される層を含む全ての層がプルーニングの対象とされる。
【0073】
第2のプルーニング処理後に再学習が行われ(ステップN6)、その後、第2のプルーニング処理を終了するか否かの判定が行われる(ステップN7)。例えば、第2のプルーニング処理後のニューラルネットワークの処理精度が予め設定した閾値以下となった場合に、第2のプルーニング処理を終了すると判定する。第2のプルーニング処理を終了しない場合(ステップN7でNo)、ステップN5に戻ってステップN5以降の処理が繰り返される。第2のプルーニング処理を終了する場合(ステップN7でYes)、図9に示す処理が終了する。図9に示す処理により得られたニューラルネットワークは、例えば、エッジデバイス2に配信される。
【0074】
なお、本変形例では、第1のプルーニング処理の後に第2のプルーニング処理が行われる構成としたが、第2のプルーニング処理の後に第1のプルーニング処理が行われる構成としてもよい。
【0075】
<<2.第2実施形態>>
次に、第2実施形態の機械学習装置、および、プルーニング方法を含む機械学習方法について説明する。第2実施形態の機械学習装置は、図1に示す第1実施形態の機械学習装置1と同様の構成を備える。以下、第2実施形態の機械学習装置のことを機械学習装置1Aと表現する。第2実施形態の説明に際しては、第1実施形態と重複する内容については、特に説明の必要がない場合にはその説明を省略し、第1実施形態と異なる部分を中心に説明する。また、第2実施形態の説明に際して、第1実施形態と同様の構成要素については、第1実施形態と同一の符号を用いて説明する。
【0076】
なお、機械学習装置1Aは、上述した機械学習システム100(図1参照)に適用可能である。また、機械学習装置1Aは、ニューラルネットワークに対してプルーニングを行う処理部11を備える。別の言い方をすると、装置1Aは、ニューラルネットワークに対してプルーニングを行う方法を実行する。ここで言うニューラルネットワークは、第1実施形態の場合と同様に、事前に学習が行われた学習済みのニューラルネットワーク30である。ニューラルネットワーク30の構造は、例えば図3図4を用いて説明した上述の構成と同様である。ニューラルネットワーク30は、詳細には、畳み込みニューラルネットワーク(CNN;Convolutional Neural Network)である。
【0077】
第2実施形態におけるプルーニングにおいては、ニューラルネットワーク30を構成する複数の層33(図4等参照)のいずれもが、上述した第1のプルーニング処理(チャネル単位でのプルーニング)の対象に含まれる点で、上述の第1実施形態と異なる。以下、当該異なる点を中心に説明を行う。
【0078】
図10は、第2実施形態に係るプルーニングの流れを示すフローチャートである。
【0079】
なお、第2実施形態における、プルーニングを含む機械学習方法の全体の流れは、第1実施形態の機械学習方法を示す図7のフローチャートと同様であってよい。すなわち、第2実施形態のプルーニングを含む機械学習方法は、学習済みのニューラルネットワーク30に対してプルーニングを行い、当該プルーニング後に再学習(ファインチューニング)を行う構成であってよい。そして、再学習によって得られたニューラルネットワークが所定の要件を満たすまで、プルーニングと再学習が繰り返される構成であってよい。ただし、第2実施形態のプルーニングを含む機械学習方法は、図7のステップS2におけるプルーニングの詳細が、上述した第1実施形態の場合と異なる。図10は、この第1実施形態と異なるプルーニングの詳細を示すフローチャートである。
【0080】
ステップS21Aでは、処理部11が、ニューラルネットワーク30を構成する複数の層33(図4参照)の各層33について重要度を求める。重要度は、プルーニングの対象を決めるために求められる。すなわち、処理部11は、ニューラルネットワーク30を構成する複数の層33の各層33に対して求められる重要度に応じてプルーニングを実行する。更に別の言い方をすると、プルーニングは、ニューラルネットワーク30を構成する複数の層33の各層33に対して求められる重要度に応じて実行される。
【0081】
詳細には、重要度は、複数の層33の各層33においてチャネルごとに求められる。これにより、チャネル単位でのプルーニングを行うことができる。本実施形態では、詳細は後述するように、プルーニングは、チャネルごとに求められた重要度に応じてチャネル単位で行われる。チャネル単位でプルーニングを行うことにより、重みパラメータ単位でプルーニングを行う構成に比べて効率良くプルーニングを行うことができる。
【0082】
各層33におけるチャネルごとの重要度は、例えば、畳み込み演算に用いる上述のサイズk×kの畳み込みフィルタ(例えば図5、6参照)を用いて求められる。チャネルごとの重要度は、例えば、図5を用いて説明した入力チャネルごとの評価値や、図6を用いて説明した出力チャネルごとの評価値であってよい。また、チャネルごとの重要度は、入力チャネルごとの、重みパラメータの絶対値の平均値(L1-Norm)や、重みパラメータの二乗平均値(L2-Norm)であってよい。また、チャネルごとの重要度は、出力チャネルごとの、重みパラメータの絶対値の平均値や、重みパラメータの二乗平均値であってよい。各層33におけるチャネルごとの重要度が求められると、次のステップS22Aに処理が進められる。
【0083】
ステップS22Aの説明を行う前に、本実施形態のニューラルネットワーク30の構成に関わる説明をしておく。本実施形態のニューラルネットワーク30は、依存関係にある層33が存在しない第1層と、依存関係にある層が存在する第2層とを含む。本実施形態において、依存関係にある層33は、残差コネクション34(図4参照)で関係づけられる層である。
【0084】
上述のように残差コネクション34で接続される層33同士は出力チャネルの数を同じとする必要がある。層33ごとに独立してチャネル単位でのプルーニングを実行すると、残差コネクション34で接続される層33同士の間でチャネル数に差が生じる可能性がある。このために、残差コネクション34で関係づけられる層33同士の間では、独立してチャネル単位でのプルーニングを行うことができない。また、残差コネクション34で接続される層33を、プルーニングの対象から除外してプルーニングを行うも考えられる。しかし、この場合には、特定の層33に対してプルーニングが集中して、プルーニング後のニューラルネットワーク30の処理精度が低下する可能性が高くなる。本実施形態のプルーニング手法は、このような残差コネクション34を含むニューラルネットワーク30のプルーニングに好適である。
【0085】
ステップS22Aでは、処理部11が、ニューラルネットワーク30を構成する複数の層33の中から、依存関係にある層33が存在する第2層を抽出する。上述のように、依存関係にある層33は、残差コネクション34で関係づけられる層であるために、第2層は、残差コネクション34で関係づけられる層33が存在する層33と言い換えることができる。図4に示す例を用いて説明すると、第1ブロック32aの最後の畳み込み層33aL、第2ブロック32bの最後の畳み込み層33bL、および、第3ブロック32cの最後の畳み込み層33cLが、第2層に該当する。
【0086】
別の言い方をすると、第2層である第1ブロック32aの最後の畳み込み層33aLは、第2ブロック32bの最後の畳み込み層33bL、および、第3ブロック32cの最後の畳み込み層33cLと依存関係にある。また、第2層である第2ブロック32bの最後の畳み込み層33bLは、第1ブロック32aの最後の畳み込み層33aL、および、第3ブロック32cの最後の畳み込み層33cLと依存関係にある。また、第2層である第3ブロック32cの最後の畳み込み層33cLは、第1ブロック32aの最後の畳み込み層33aL、および、第2ブロック32bの最後の畳み込み層33bLと依存関係にある。以上からわかるように、図4に示す例では、第2層は、複数の層33の中の2つの層と依存関係にある。ただし、これは例示である。すなわち、第2層は、複数の層33の中の少なくとも1つの層33と依存関係にあればよい。依存関係にある層33の数は、奇数でも偶数でもよい。このような構成とすることによって、様々な形態のニューラルネットワークに対応可能とすることができる。
【0087】
なお、図4に示す例では、ニューラルネットワーク30を構成する1つのステージ31のみが示されている。ニューラルネットワーク30を構成する他のステージ31にも第2層が存在してよい。ステップS22Aにおいて、全ての第2層が抽出されると、次のステップS23Aに処理が進められる。
【0088】
ステップS23Aでは、処理部11が、複数の層33の中に依存関係にある層33が存在する第2層の重要度を算出する。第2層については、詳細は後述するように、このステップ23Aで算出された重要度に応じてプルーニングが実行される。すなわち、第2層については、ステップS21Aで求めた重要度でなく、ステップS23Aで求めた重要度が、プルーニングの対象を決めるために利用される。
【0089】
第2層の重要度は、依存関係にある層をグループ化して求められる。すなわち、重要度は、複数の層33の中に依存関係にある層33が存在する第2層については当該依存関係にある層33をグループ化して求められる。詳細には、グループ化された各層33間において、重要度は互いに同じとされる。また、1つのグループに含まれる層33の数は、2以上の偶数又は奇数であってよい。
【0090】
なお、複数の層33の中に依存関係にある層33が存在しない第1層については、ステップS21Aで求められた重要度に応じてプルーニングが実行される。すなわち、重要度は、複数の層33の中に依存関係にある層33が存在しない第1層については層33ごとに求められる。詳細には、第1層については、層33ごとに単独で求められる。なお、図4に示す例では、第1ブロック32aの2つの畳み込み層33aF、33aM、第2ブロック32bの2つの畳み込み層33bF、33bM、および、第3ブロック32cの2つの畳み込み層33cF、33cMが、第1層に該当する。
【0091】
以上からわかるように、本実施形態では、複数の層33の中に依存関係にある層33が存在しない第1層と、依存関係にある層33が存在する第2層とで重要度の算出方法が異なる構成とされている。そして、依存関係にある層33が存在する第2層については、依存関係にある層33をグループ化し、重要度の共通化を図っている。このために、本実施形態の構成では、重要度に応じてプルーニングを行った場合に、依存関係にある層33同士の間でチャネル数に違いが生じるといった事態の発生を防ぐことができる。そして、依存関係にある層33が存在する第2層についても、プルーニングを実行することができるために、依存関係にある層がない第1層に偏ってプルーニングが行われるといった事態の発生を抑制することができる。この結果、本実施形態によれば、プルーニング後に得られるニューラルネットワークにおける計算効率の向上と、処理精度の低下の抑制との両立を図ることができる。
【0092】
ここで、図11を参照して第2層の重要度の求め方の具体例について説明する。なお、図11は、第2層の重要度の求め方を説明するための図である。図11におけるニューラルネットワーク30(正確にはニューラルネットワーク30の一部)は、図4に例示するニューラルネットワーク30と同じである。図11において、ハッチングを施した3つの畳み込み層33aL、33bL、33cLが第2層である。
【0093】
図11に示すように、第2層においては、重要度は、グループ化された層33の層33ごとに求められた重要度を平均した値とされる。詳細には、第2層においては、チャネルごとの重要度が求められ、チャネルごとの重要度は、グループ化された各層33にてチャネルごとに求められた値をチャネルごとに平均した値とされる。平均値の利用により、グループ化された各層33の重要度を容易に求めることができる。
【0094】
図11に示す例では、第2層である畳み込み層33aL単独の重要度(ステップS21Aで求められた重要度)は、第1チャネルが「1」、第2チャネルが「2」、第3チャネルが「3」、第4チャネルが「4」、・・・である。また、第2層である畳み込み層33bL単独の重要度は、第1チャネルが「2」、第2チャネルが「3」、第3チャネルが「4」、第4チャネルが「5」、・・・である。また、第2層である畳み込み層33cL単独の重要度は、第1チャネルが「3」、第2チャネルが「4」、第3チャネルが「5」、第4チャネルが「6」、・・・である。3つの畳み込み層33aL、33bL、33cLは、残差コネクション34で接続されており、互いに依存関係にあるために、1つのグループとされる。
【0095】
3つの畳み込み層33aL、33bL、33cLのそれぞれのチャネルごとの重要度は、各畳み込み層33aL、33bL、33cLでチャネルごとに求められた重要度をチャネルごとに平均した値である。すなわち、3つの畳み込み層33aL、33bL、33cLの第1チャネルの重要度は、「2」=(1+2+3)/3となる。3つの畳み込み層33aL、33bL、33cLの第2チャネルの重要度は、「3」=(2+3+4)/3となる。3つの畳み込み層33aL、33bL、33cLの第3チャネルの重要度は、「4」=(3+4+5)/3となる。3つの畳み込み層33aL、33bL、33cLの第4チャネルの重要度は、「5」=(4+5+6)/3となる。
【0096】
なお、本実施形態では、第2層の重要度を、グループ化された層33の層33ごとに求まる重要度を平均した値としているが、これは例示である。平均値に代えて中央値等としてもよい。また、第2層の重要度は、グループを構成する層33の数に応じて重み付けを変えて求めた値であってもよい。例えば、グループを構成する層33の数が多いほど重み付けが大きくなるようにされてよい。第2層の重要度は、単純平均ではなく加重平均等であってもよい。
【0097】
図10に戻って、ステップS22Aで抽出された第2層の全てについて、グループ化による重要度の算出が完了すると、次のステップS24Aに処理が進められる。
【0098】
ステップS24Aでは、処理部11が不要なチャネルを決定する。不要なチャネルは、プルーニングの対象となるチャネルである。本実施形態では、処理部11は、チャネルごとに求められた重要度が低い方から順に所定の割合をプルーニングの対象とする。処理部11は、重要度が低いチャネルから順に所定の割合をプルーニングの対象とする。所定の割合は、特に限定されないが、例えば20%等である。所定の割合は、人によって設定される構成であっても、装置よって自動的に設定される構成であってもよい。本実施形態のようにプルーニングの対象を決定すると、プルーニングの対象となるチャネルの数が過剰となることや、過小となることを抑制して、安定したプルーニング処理を行うことができる。
【0099】
なお、不要なチャネルの決定方法は、本実施形態の構成に限定されない。例えば、予め設定した閾値と、チャネルごとに求めた重要度とを比較して、予め設定した閾値に比べて重要度が小さな値であるチャネルが、不要なチャネルに決定される構成としてもよい。
【0100】
ここで、図12を参照して、第2層において、不要なチャネルか否かの判定がどうのように行われるかについて説明する。なお、図12は、第2層における不要なチャネルか否かの判定手法について説明するための図である。図12は、図11に示すようにして第2層である3つの畳み込み層33aL、33bL、33cLの重要度が求められたことを前提とした図である。そして、重要度が2以下である場合に、重要度が低い方から順に所定の割合以内となることを想定とする。すなわち、重要度が2以下である場合に、不要なチャネルと判定されることとする。図12において、重要度を表す数字の上のバツ(×)印が付されたチャネルは、不要なチャネルであることを表す。
【0101】
グループ化して求められた各チャネルの重要度(一点鎖線で囲む部分に示される重要度)のうち、第1チャネルだけが、重要度が2以下である。このために、第2層である3つの畳み込み層33aL、33bL、33cLは、第1チャネルだけが不要なチャネルと判定される。
【0102】
仮に、図13に示すように、グループ化した重要度ではなく、第2層ついても第1層と同様に層33ごとに求めた重要度を用いる構成とする場合を考える。そして、本例でも、重要度が2以下である場合に、不要なチャネルと判定されることとする。この場合、第2層である畳み込み層33aLは、第1チャネルおよび第2チャネルが不要なチャネルと判定される。また、第2層である畳み込み層33bLは、第1チャネルが不要なチャネルと判定される。また、第2層である畳み込み層33cLは、いずれのチャネルも不要なチャネルと判定されない。すなわち、図13に示すような構成とすると、プルーニング後において、残差コネクション34で接続される層33間においてチャネル数に差が生じることになる。この結果、残差コネクション34を用いた処理が出来なくなり、問題となる。本実施形態の構成によれば、このような問題は生じない。
【0103】
図10に戻って、ニューラルネットワーク30における不要なチャネルが決定されると、次のステップS25Aに処理が進められる。
【0104】
ステップS25Aでは、処理部11が、ニューラルネットワーク30において不要なチャネルと決定されたチャネルを対象としてプルーニング処理を行う。図14および図15は、チャネル単位で行われるプルーニングについて説明するための図である。図14は、プルーニング前の状態を示す図である。図15は、プルーニング後の状態を示す図である。なお、図14および図15に示す例は、上述したフィルタープルーニング(図6参照)が行われる場合を想定している。
【0105】
図14および図15は、詳細には、図11および図12に示す第1ブロック32aの最後の畳み込み層33aLに対して行われるプルーニング処理を示す。図12を用いて説明したように、畳み込み層33aLは、第1チャネルがプルーニング処理の対象とされている。このために、図15に破線で示されるように、プルーニング処理によって、畳み込み層33aLを構成する第1チャネルの特徴マップ40が削除される。また、プルーニング処理によって、畳み込み層33aLの1つの前の畳み込み層33aMに対する畳み込み演算に利用される畳み込みフィルタ群の第1出力チャネルCHO1が削除される。また、プルーニング処理によって、畳み込み層33aLの次の畳み込み層33bFを得るための畳み込み演算に利用される畳み込みフィルタ群の第1入力チャネルCHI1が削除される。
【0106】
プルーニングの対象とされたチャネルの全てに対して、図15に示すのと同様のプルーニング処理が行われると、一旦、図10に示すプルーニングは終了する。図10に示すプルーニングが終了すると、上述したように、好ましい形態として再学習(図7のステップS3)が行われる。すなわち、処理部11は、プルーニング後のニューラルネットワークの学習を行う。このような構成とすることによって、プルーニング後のニューラルネットワークの重みパラメータの適正化を図り、プルーニング後のニューラルネットワークの処理精度の低下を抑制することができる。
【0107】
<<3.留意事項等>>
本明細書中に開示されている種々の技術的特徴は、上記の実施形態のほか、その技術的創作の主旨を逸脱しない範囲で種々の変更を加えることが可能である。すなわち、上記の実施形態は、全ての点で例示であって、制限的なものではないと考えられるべきである。本発明の技術的範囲は、上記の実施形態の説明ではなく、特許請求の範囲によって示されるものであり、特許請求の範囲と均等の意味及び範囲内に属する全ての変更が含まれると理解されるべきである。また、本明細書中に示される複数の実施形態及び変形例は可能な範囲で適宜組み合わせて実施されてよい。
【符号の説明】
【0108】
1、1A・・・機械学習装置
11・・・処理部
30・・・ニューラルネットワーク
33・・・層、畳み込み層
34・・・残差コネクション
図1
図2
図3
図4
図5
図6
図7
図8
図9
図10
図11
図12
図13
図14
図15