JP2023129041A - 機械学習プログラム、機械学習方法、及び、情報処理装置 - Google Patents

機械学習プログラム、機械学習方法、及び、情報処理装置 Download PDF

Info

Publication number
JP2023129041A
JP2023129041A JP2022033798A JP2022033798A JP2023129041A JP 2023129041 A JP2023129041 A JP 2023129041A JP 2022033798 A JP2022033798 A JP 2022033798A JP 2022033798 A JP2022033798 A JP 2022033798A JP 2023129041 A JP2023129041 A JP 2023129041A
Authority
JP
Japan
Prior art keywords
layers
layer
pruning
tensor
calculation unit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2022033798A
Other languages
English (en)
Inventor
靖文 坂井
Yasubumi Sakai
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2022033798A priority Critical patent/JP2023129041A/ja
Priority to US17/984,285 priority patent/US20230281440A1/en
Priority to EP22209303.1A priority patent/EP4239529A1/en
Priority to CN202211533974.7A priority patent/CN116702857A/zh
Publication of JP2023129041A publication Critical patent/JP2023129041A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/16Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0495Quantised networks; Sparse networks; Compressed networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Image Analysis (AREA)

Abstract

【課題】複数のレイヤ(層)を含むニューラルネットワークの軽量化を実現する。【解決手段】機械学習プログラムは、複数の層を含むニューラルネットワーク170の機械学習済モデルにおける、複数の層の各々の要素の削減割合を取得し、ニューラルネットワークが、前段層165からのテンソルと、前段層165よりも前から演算処理161にショートカット結合される1以上の層163からの1以上のテンソルとに対する所定の演算結果のテンソルを出力する演算処理161を含む場合、層163、165の各々と演算処理との間にゼロパディング処理を行なう第2の層171、172をそれぞれ挿入し、各削減割合に応じた要素削減後の層163、165から演算処理に入力される各テンソルの要素数が第1の数となるように、層163、165に対応付けられた各第2の層において1個以上のゼロ行列によるパディングを行なう、処理をコンピュータに実行させる。【選択図】図18

Description

本発明は、機械学習プログラム、機械学習方法、及び、情報処理装置に関する。
画像処理等のAI(Artificial Intelligence)タスクに利用されるNN(Neural Network)は、その構成を複雑にすることで高い性能(例えば高い推論精度)を実現できる傾向にある。一方で、NNの構成の複雑化により、計算機によるNNを実行における演算回数、及び、当該計算機がNNの実行に用いるメモリサイズが増加し得る。
当該演算回数の削減、換言すれば演算時間の短縮(高速化)、並びに、当該メモリサイズの削減、換言すればNNの機械学習モデルの軽量化を図るための手法として、「プルーニング」(枝刈り;Pruning)が知られている。
プルーニングは、NNのエッジ(重み)、ノード、及び、チャネルの少なくともいずれか1種類の要素を削減する(刈り取る)ことで、機械学習モデルのデータサイズを小さくし、演算時間及び通信時間を削減する手法である。
過剰なプルーニングは、NNの推論精度の劣化を引き起こす。このため、推論精度を維持したまま、又は、推論精度の低下量を所定の水準に留めたまま、NNのプルーニングを行なうことが重要である。
例えば、プルーニングにおいて、NNの推論精度に大きな影響を与えないレイヤ(層)を選択する手法が知られている。当該手法は、例えば、畳込み層に続くバッチノーマライゼーション(BN;Batch Normalization)層に用いられるパラメータに基づき、プルーニングを行なう畳込み層のチャネルを決定する手法である。
特開2019-49977号公報
NNの推論精度に大きな影響を与えないレイヤを選択する手法は、BN層が接続された畳込み層に対して適用されるが、それ以外のレイヤ、例えば、BN層が接続されていない畳込み層、及び、全結合層等への適用は想定されていない。
また、これらの複数のレイヤを含むNNには、2以上のレイヤからの入力を連結するconcatenate演算を行なう、concatenate演算部が含まれることがある。なお、以下、concatenate演算をconcat演算と表記し、concatenate演算部をconcat部と表記する場合がある。
concat部は、或る層と、当該層よりも前段の1以上の層とから入力されるテンソルをショートカット結合し、1つのテンソルを出力する演算処理を実行する。例えば、ショートカット結合は、入力されるテンソルに対する演算、一例として、次元ごと及び要素ごとの加算を含む。
例えば、NNの推論精度に大きな影響を与えないレイヤを選択する手法を、上述した複数のレイヤに適用できるようにした場合において、当該NNがconcat部を含む場合を考える。この場合、当該手法によりプルーニングを行なうと、concat部にテンソルを入力する2以上のレイヤ間で、テンソルの次元(行列サイズ)が不一致になり、concat部から正常な演算結果の出力が得られない可能性がある。
このため、concat部にテンソルを入力する2以上のレイヤについては、プルーニング対象のレイヤから除外することが考えられる。しかし、この場合、機械学習モデル全体のプルーニング率は低下するため、プルーニングによる機械学習モデルのデータサイズの圧縮(軽量化)効果が低減する。
1つの側面では、本発明は、複数のレイヤ(層)を含むニューラルネットワークの軽量化を実現させることを目的の1つとする。
1つの側面では、機械学習プログラムは、コンピュータに、以下の処理を実行させてよい。前記処理は、複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得する処理を含んでよい。また、前記処理は、前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入する処理を含んでよい。さらに、前記処理は、前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう処理を含んでよい。
1つの側面では、本発明は、複数のレイヤ(層)を含むニューラルネットワークの軽量化を実現できる。
プルーニングを行なう畳込み層のチャネルを決定する処理の一例を説明するための図である。 L1正則化学習の一例を示す図である。 NNのレイヤにおける図1及び図2の手法の適用可否の一例を示す図である。 一実施形態に係るサーバの機能構成例を示すブロック図である。 精度保証できるプルーニング率の算出例を示す図である。 プルーニング前後のモデルの精度の算出例を示す図である。 プルーニング率の探索例を示す図である。 閾値の導出手法の一例を説明する図である。 閾値の上限と閾値との一例を示す図である。 プルーニングするチャネルの決定手法の一例を説明する図である。 プルーニング誤差の算出例を説明する図である。 プルーニングするノードの決定手法の一例を説明する図である。 プルーニング誤差の算出例を説明する図である。 プルーニングする重みの決定手法の一例を説明する図である。 プルーニング誤差の算出例を説明する図である。 concat部を含むNNの一例を示す図である。 concat部を含むNNに対する一実施形態に係る手法の適用前後のテンソルの一例を示す図である。 モデルへのゼロパディング層の挿入例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 concat部のconcat直前レイヤに対するゼロパディング例を説明するための図である。 ゼロパディング処理の適用有無に応じた、NNのプルーニング前後の精度、及び、データサイズの圧縮率の一例を示す図である。 ゼロパディング処理の適用有無に応じた、NNの各レイヤの出力チャネル数の一例を示す図である。 一実施形態に係るサーバによる処理の動作例を説明するためのフローチャートである。 一実施形態に係る手法における信頼半径の更新に応じたプルーニング誤差比較結果の一例を示す図である。 第1変形例に係るサーバの機能構成例を示すブロック図である。 信頼半径を増加させる場合の信頼半径更新処理の一例を説明する図である。 信頼半径を減少させる場合の信頼半径更新処理の一例を説明する図である。 第1変形例に係るサーバによる処理の動作例を説明するためのフローチャートである。 第2変形例に係るサーバの機能構成例を示すブロック図である。 信頼半径の初期値の設定例を説明する図である。 第2変形例に係るサーバによる処理の動作例を説明するためのフローチャートである。 コンピュータのハードウェア(HW)構成例を示すブロック図である。
以下、図面を参照して本発明の実施の形態を説明する。ただし、以下に説明する実施形態は、あくまでも例示であり、以下に明示しない種々の変形又は技術の適用を排除する意図はない。例えば、本実施形態を、その趣旨を逸脱しない範囲で種々変形して実施することができる。なお、以下の説明で用いる図面において、同一符号を付した部分は、特に断らない限り、同一若しくは同様の部分を表す。
〔1〕一実施形態
図1は、プルーニングを行なう畳込み層のチャネルを決定する処理の一例を説明するための図であり、図2は、L1正則化学習の一例を示す図である。図1では、NNの推論精度に大きな影響を与えないレイヤを選択する手法として、計算機が、畳込み層に続くBN層100で利用されるスケーリング係数γを用いて、プルーニングを行なう畳込み層のチャネルを決定する手法を説明する。なお、図1のチャネル111~113に示すグラフは、出力テンソルの分布を表す。
図1に示すように、計算機は、畳込み層からBN層100に入力される複数のチャネル111(#1~#n;nは2以上の整数)のそれぞれに対して、正規化処理(normalization)101を実行する。例えば、計算機は、正規化処理101において、下記式(1)に従い、チャネル111ごとに平均値μ及び分散σを算出することで、平均“0”、分散“1”の正規化された分布を表す複数のチャネル112(#1~#n)を取得する。下記式(1)において、zin及びzmidは、それぞれ、チャネル111及び112を示し、μ及びσ は、それぞれ、現在のミニバッチBにおける平均値及び分散を示す。
Figure 2023129041000002
また、計算機は、複数のチャネル112(#1~#n)に対してスケーリング(scaling)102を実行する。例えば、計算機は、スケーリング102において、複数のチャネル112のそれぞれに対して、下記式(2)に従い、スケーリング係数γを乗算し、乗算結果にバイアスβを加算することで、パラメータγ及びβによりスケールされた分布を表す複数のチャネル113(#1~#n)を出力する。下記式(2)において、zoutはチャネル113を示す。なお、パラメータγ及びβは、機械学習により最適化されてよい。
Figure 2023129041000003
ここで、γが小さい場合におけるスケーリング102の結果となるチャネル113(図1の例ではチャネル#n)の出力は、ほぼ無くなる。これは、当該チャネルをプルーニングにより削除しても、NNの推論精度に大きな影響を与えないことを意味する。そこで、計算機は、小さい(例えば“0”になる)γを探索することで、チャネル単位でのプルーニングの対象となるチャネルを判定する。
例えば、計算機は、L1正則化学習をγに適用することで、小さい(小さくなる)γを探索する。L1正則化学習は、NNが出力で計算する損失関数に、L1の正則化項を追加して機械学習を行なうことで、学習対象のパラメータを「疎」にできることで知られている機械学習手法である。
図2に例示するように、計算機は、或るベクトル121に対して、損失関数122を用いたL1正則化学習を行なうことで、L1正則化が行なわれたベクトル123を取得する。損失関数122は、下記式(3)に示すように、クロスエントロピー等の元の損失関数(第1項)と、L1ノルム(Σg(γ)=Σ|γ|)を使用するL1正則化項(第2項)とを加算した関数Lであってよい。
Figure 2023129041000004
L1正則化学習により、ベクトル123の各パラメータは、ベクトル121の各パラメータがゼロになるか、非ゼロになるかのいずれかを示すパラメータとなる(2分化される)。このようなL1正則化学習を利用することで、計算機は、γがゼロになる(ゼロに近くなる)チャネルをプルーニングの対象のチャネルとして特定することができる。
図1及び図2に示すL1正則化学習を利用したプルーニング対象の特定は、BN層が接続された畳込み層に対して適用されるが、それ以外のレイヤ、例えば、BN層が接続されていない畳込み層、及び、全結合層等への適用は想定されていない。
図3は、NN130の層(レイヤ)131~139における図1及び図2の手法の適用可否の一例を示す図である。図3に示すように、畳込み層131及び133並びにBN層132及び134は、図1及び図2に示すL1正則化学習を適用可能な層であり、畳込み層135~137並びに全結合層138及び139は、図1及び図2に示すL1正則化学習を適用不可能な層である。
そこで、一実施形態では、レイヤの種類に依らずに、レイヤごとのプルーニング率を決定することで、NNの軽量化を実現するための手法を説明する。
〔1-1〕一実施形態に係るサーバの機能構成例
図4は、一実施形態に係るサーバ1の機能構成例を示すブロック図である。サーバ1は、プルーニング率を出力する計算機、コンピュータ又は情報処理装置の一例である。図4に示すように、サーバ1は、例示的に、メモリ部11、取得部12、機械学習部13、プルーニング率算出部(以下、単に「算出部」と表記する)14、及び、出力部15を備えてよい。取得部12、機械学習部13、算出部14、及び、出力部15は、制御部16の一例である。
メモリ部11は、記憶領域の一例であり、サーバ1が利用する種々のデータを記憶する。図4に示すように、メモリ部11は、例示的に、未学習モデル11a、機械学習用データ11b、機械学習済モデル11c、プルーニング率11d、及び、軽量化済モデル11eを記憶可能であってよい。
取得部12は、未学習モデル11a及び機械学習用データ11bを取得し、メモリ部11に格納する。例えば、取得部12は、未学習モデル11a及び機械学習用データ11bの一方又は双方を、サーバ1で生成してもよいし、図示しないネットワークを介してサーバ1の外部のコンピュータから受信してもよい。
未学習モデル11aは、未学習パラメータを含むNNの機械学習前のモデルであってよい。当該NNは、種々のレイヤを含んでよく、例えばDNN(Deep NN)であってもよい。当該NNは、例えば、BN層が接続されていない畳込み層、又は、全結合層を含んでもよいし、BN層が接続された畳込み層を含んでもよく、一例として、図3に例示するNN130であってもよい。
機械学習用データ11bは、例えば、未学習モデル11aの機械学習(訓練)に用いる訓練用のデータセットであってよい。一例として、画像処理を実現するためのNNの機械学習を行なう場合、機械学習用データ11bには、例えば、画像データ等の訓練データと、当該訓練データに対する正解ラベルとを含む教師データのペアが複数含まれてよい。
機械学習部13は、機械学習フェーズにおいて、機械学習用データ11bに基づいて、未学習モデル11aを機械学習する機械学習処理を実行する。例えば、機械学習部13は、未学習モデル11aの機械学習処理により、機械学習済モデル11cを生成してよい。機械学習済モデル11cは、機械学習済パラメータを含むNNモデルであってよい。
なお、機械学習済モデル11cは、未学習モデル11aに含まれるパラメータの更新により得られてよく、例えば、機械学習処理を通じて、未学習モデル11aから機械学習済モデル11cに変化した結果のモデルと捉えられてもよい。機械学習処理は、既知の種々の手法により実現されてよい。
算出部14は、機械学習済モデル11cに対するプルーニング率算出処理の実行によりプルーニング率11dを算出し、メモリ部11に格納する。
例えば、算出部14は、プルーニング率候補のうちの1つを選択するための閾値を層ごとに算出する閾値算出部14aと、プルーニング率候補によりプルーニングしたモデルの推論精度に基づき、採用するプルーニング率11dを決定する決定部14bとを備えてよい。
出力部15は、算出部14により生成(取得)されたプルーニング率11dに基づく出力データを出力する。出力データとしては、例えば、プルーニング率11dそのもの、及び、軽量化済モデル11eの一方又は双方を含んでよい。
軽量化済モデル11eは、機械学習済モデル11cに対してプルーニング率11dに基づくプルーニングの実施により得られる、機械学習済モデル11cを軽量化したモデルのデータである。例えば、出力部15は、機械学習部13と協働して、プルーニング率11dを適用して機械学習済モデル11cのプルーニング及び再学習を実行することで軽量化済モデル11eを取得し、メモリ部11に格納してもよい。なお、軽量化済モデル11eは、例えば、機械学習済モデル11cとは別に生成されてもよいし、プルーニング及び再学習を通じて、機械学習済モデル11cを更新したデータであってもよい。
出力部15は、出力データの出力において、例えば、出力データを図示しない他のコンピュータに送信(提供)してもよいし、出力データをメモリ部11に蓄積してサーバ1又は他のコンピュータから取得可能に管理してもよい。或いは、出力部15は、出力データの出力において、出力データを示す情報をサーバ1等の出力装置に画面出力してもよく、その他の種々の態様により出力データを出力してよい。
〔1-2〕プルーニング率算出処理の一例
次に、サーバ1の算出部14によるプルーニング率算出処理の一例を説明する。以下の説明では、プルーニング率の算出対象が、レイヤのパラメータの一例である重み行列Wであるものとする。
算出部14は、プルーニングにより発生する層ごとのテンソルの誤差を利用することで、層の種類に依らずに、プルーニング率を決定する。一例として、算出部14は、下記の(i)~(iii)の手順により、プルーニング率を算出してよい。
(i)算出部14(閾値算出部14a)は、精度保証できるプルーニング率を、層ごとに決定(算出)する。
なお、「精度保証」とは、例えば、機械学習済モデル11cに対するプルーニングにより得られる軽量化済モデル11eを利用した推論の精度(推論精度)が所定の基準を超えることを保証することである。
図5は、精度保証できるプルーニング率の算出例を示す図である。図5に例示するように、閾値算出部14aは、(i)において、プルーニング対象の機械学習済モデル11cに含まれる各層の重み行列Wに適用するプルーニング率を、複数の層のそれぞれの重み行列Wごとに決定する。なお、図5では、層131~133に着目して説明するが、これに限定されるものではなく、図3に例示する層131~139のいずれにおいても図5の説明が適用されてよい。
ここで、プルーニング率は、層(レイヤ)の要素を削減する割合(削減割合)の一例であり、機械学習済モデル11cにおけるプルーニング対象を「疎」にする割合を示し、図2の例では、ベクトル123において“0”にした箇所の数を意味する。
図5に例示するように、閾値算出部14aは、層131の重み行列W(層132に接続される重み行列W)、及び、層132の間の重み行列W(層133に接続される重み行列W)のそれぞれについて、複数のプルーニング率候補の中から1つのプルーニング率を選択する。プルーニング率候補は、削減割合候補の一例であり、例えば、0%~100%の間の2つ以上の割合であってよく、複数の層で共通であってもよいし、層ごとに異なる割合であってもよく、これらの組み合わせであってもよい。図5の例では、プルーニング率候補は、0%、20%、40%、60%であるものとする。
閾値算出部14aは、例えば、プルーニング率候補のそれぞれによりプルーニングを行なった場合のプルーニング前後のテンソルの誤差を求め、閾値Tよりも誤差が小さいプルーニング率候補のうちの最大のプルーニング率候補を決定する。図5の例では、閾値算出部14aは、Wについて、閾値Tw1よりも誤差が小さい最大のプルーニング率候補を40%と決定する(矢印141参照)。また、閾値算出部14aは、Wについて、閾値Tw2よりも誤差が小さい最大のプルーニング率候補を20%と決定する(矢印142参照)。
閾値Tは、プルーニング前後のテンソルの誤差の閾値であり、精度保証できるプルーニング率の上限である。例えば、閾値算出部14aは、プルーニング対象をプルーニングした場合の損失関数を近似式、例えば1次テイラー展開することで、層ごとに閾値Tを算出してよい。閾値Tの算出手法の詳細は後述する。
なお、(i)で算出されるプルーニング率は、(ii)及び(iii)の処理との関係で、「仮算出」されるプルーニング率と位置付けられてよい。
以上のように、閾値算出部14aは、複数の層を含むNNの機械学習済モデル11cにおける、複数の層の各々の要素の削減前後のテンソルの誤差の閾値Tを算出する。また、閾値算出部14aは、複数の閾値Tと、複数の層の各々において複数の削減割合候補の各々により要素を削減する場合の削減前後のテンソルの誤差とに基づき、複数の層の各々に適用する削減割合候補を選択する。
(ii)算出部14(決定部14b)は、(i)で決定したプルーニング率を用いてプルーニング(軽量化)した機械学習モデルの精度と、プルーニング未実行の機械学習モデルの精度とに基づき、プルーニング率を決定する。
例えば、決定部14bは、近似式(1次テイラー展開)による誤差を考慮し、(i)で決定した各層のプルーニング率でプルーニングしたモデルの精度Accと精度マージンAccとの和と、プルーニングしないモデルの精度Accwoとを比較する。精度マージンAccは、推論精度の低下を許容できるマージンであり、設計者により設定されてよい。なお、マージンは“0”であってもよく、この場合、決定部14bは、精度Accと、プルーニングしないモデルの精度Accwoとを比較すればよい。
図6は、プルーニング前後のモデルの精度の算出例を示す図である。例えば、決定部14bは、全ての層(W、W、・・・)に対してプルーニングしないモデル(機械学習済モデル11c)の精度Accwoを算出する(矢印143参照)。プルーニングしないモデルは、各層のプルーニング率を0%としてプルーニングしたモデルと位置付けられてもよい。また、決定部14bは、各層を(i)で算出したプルーニング率(W=40%、W=20%、・・・)でプルーニングしたモデルの精度Accを算出する(矢印144参照)。
決定部14bは、精度の和Acc+Accが精度Accwo以上である場合に、(i)で決定したプルーニング率を採用すると決定する。例えば、決定部14bは、(i)で決定したプルーニング率をプルーニング率11dとしてメモリ部11に保存する。
一方、決定部14bは、精度の和Acc+Accが精度Accwo未満である場合、(i)で決定したプルーニング率を破棄すると決定する。例えば、決定部14bは、(i)で決定したプルーニング率を破棄して、直前の(ii)で決定した(或いは初期の)プルーニング率11dを採用すると決定する。
(iii)算出部14(決定部14b)は、(i)及び(ii)を複数回に亘って繰り返し適用することで、精度保証できる最大のプルーニング率を探索する。
図7は、プルーニング率の探索例を示す図である。図7の例では、算出部14が3つの層(131~133)のプルーニング率を3回に亘って実施する場合を示す。
図7に例示するように、1回目(符号145参照)の探索では、(i)において、閾値算出部14aが、閾値Tを算出し、閾値Tに基づき、層131~133のプルーニング率を“0%,0%,0%”(初期値)から“40%,20%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAcc+Acc<Accwoと判定すると、(i)で決定されたプルーニング率を破棄し、決定前の“0%,0%,0%”を採用する。
2回目(符号146参照)の探索では、(i)において、閾値算出部14aが、閾値Tを算出(更新)し、更新した閾値Tに基づき、層131~133のプルーニング率を“0%,0%,0%”から“20%,20%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAcc+Acc≧Accwoと判定すると、“20%,20%,40%”を採用し、プルーニング率11dとしてメモリ部11に格納する。
3回目(符号147参照)の探索では、(i)において、閾値算出部14aが、閾値Tを算出(更新)し、更新した閾値Tに基づき、層131~133のプルーニング率を“20%,20%,40%”から“20%,40%,40%”に決定した場合を想定する。例えば、決定部14bは、(ii)において、推論精度の比較でAcc+Acc≧Accwoと判定すると、“20%,40%,40%”を採用し、プルーニング率11dとしてメモリ部11に格納(更新)する。
決定部14bは、例えば予め設定された回数等の所定の回数に亘って、プルーニング率の探索を行なってよい。
以上のように、決定部14bは、機械学習済モデル11cによる推論精度と、機械学習済モデル11cにおける複数の層の各々の要素を、適用する削減割合候補に応じて削減して得られる削減済モデルの機械学習後の推論精度とに基づき、複数の層の各々に適用する削減割合を決定する。
次に、上述したプルーニング率算出処理の具体例を説明する。図8は、閾値の導出手法の一例を説明する図であり、図9は、閾値の上限と閾値との一例を示す図である。
閾値算出部14aは、プルーニングした場合の損失関数を1次テイラー展開することで、精度保証できるプルーニング率の閾値を層ごとに算出する。例えば、プルーニングにより発生する層ごとのテンソルの誤差をΔw、プルーニングした場合の損失関数をL(w+Δw)、プルーニング対象のモデルの損失関数をL(w)、プルーニングしない場合の損失関数(Lideal)をLwo+Lとすると、精度保証できるプルーニング率の閾値は、下記式(4)により算出される。なお、Lwoはプルーニングしない場合のモデルの損失関数であり、Lは設計者が設定する損失関数のマージンである。
Figure 2023129041000005
上記式(4)の左辺(図8の破線枠参照)は、プルーニングした場合の損失関数L(w+Δw)のテイラー展開であり、プルーニング対象のレイヤごとの重み勾配“∂L(W)/∂w”を含む。レイヤごとの勾配は、逆伝播により算出されてよい。また、上記式(4)の右辺(図8の一点鎖線枠参照)は、プルーニングをしても損失関数は理想値(例えばFP32の損失関数)よりも小さくなる、という制約である。
このように、閾値算出部14aは、複数の層の各々の要素を削減する際の機械学習済モデル11cの損失関数の値と、複数の層の各々の重み勾配とに基づき閾値Tを算出する。
上記式(4)を整理すると、下記式(5)に示すように、プルーニングしたときの損失関数が理想損失関数よりも小さくなるという制約を満たす、「プルーニングの誤差」の条件を導出できる。換言すれば、精度(損失関数)を保証する、プルーニングによる誤差の上限(閾値)を導出できる。閾値算出部14aは、下記式(5)の右辺を閾値Tに設定する。
Figure 2023129041000006
図9に例示するように、閾値算出部14aは、レイヤごとに設定される閾値Tと、プルーニングによるL1ノルムの誤差とを比較する。そして、閾値算出部14aは、閾値Tよりも誤差が小さくなるプルーニング率候補のうちの最大の値のプルーニング率候補(図9の例では40%)を、(i)の結果としてのプルーニング率に決定する。
一例として、閾値算出部14aは、下記式(6)に従い、プルーニング対象のレイヤごとに、プルーニング誤差(左辺)が閾値(右辺)以下となるプルーニング率を決定してよい。下記式(6)において、“||ΔW||1”はプルーニング対象となった重みのL1ノルムであり、“n”はプルーニング対象のレイヤの重みの要素数である。
Figure 2023129041000007
上記式(6)に示すように、閾値Tは、近似により導出したパラメータとなる。近似誤差によるプルーニング率の決定の誤りを防ぐために、閾値Tには、上限が設定されてよい(図9参照)。例えば、閾値算出部14aは、信頼領域法に基づき、「信頼半径」により閾値Tの大きさを制限してよい。信頼半径は、閾値上限の一例である。一例として、閾値算出部14aは、全層の閾値TのL2ノルムが、信頼半径以下となるように閾値Tをスケーリングしてよい。図9の例において、Tは各層の閾値Tによるベクトルを示し、“||Th||2”は、全層の閾値TのL2ノルムを示す。
例えば、閾値算出部14aは、決定部14bによる(ii)の処理での精度の比較結果に応じて、プルーニング率に加えて、信頼半径を(例えば定数倍等により)更新してもよい。なお、信頼半径の初期値は、例えば設計者等により設定されてよい。
一例として、閾値算出部14aは、精度の和Acc+Accが精度Accwo以上である場合に、信頼半径を定数K(“K>1.0”)倍し、精度の和Acc+Accが精度Accwo未満である場合、信頼半径を定数k(“0<k<1.0”)倍してよい。
〔1-3〕プルーニング対象の種類に応じた説明
次に、プルーニング対象の種類に応じた、プルーニングの手法及びプルーニング誤差の算出手法の例を説明する。プルーニング対象の種類としては、例えば、チャネルプルーニング、ノードプルーニング、及び、重みプルーニング等が挙げられる。算出部14は、プルーニング対象の種類に応じて、プルーニング対象に対応する重みを用いて、プルーニング対象及びプルーニング誤差を決定してよい。
〔1-3-1〕チャネルプルーニングの例
図10は、プルーニングするチャネルの決定手法の一例を説明する図であり、図11は、プルーニング誤差の算出例を説明する図である。
なお、図10及び図11では、畳込み演算の処理フローを示している。また、添字の付いたH及びWは、入力データ、カーネル、出力データのサイズを示し、添字の付いたChは、入力データ、カーネル、出力データのチャネル数を示す。以下、プルーニング対象の他の種類に係る説明においても同様である。
(プルーニングするチャネルの決定手法の一例)
プルーニング対象の種類がチャネルである場合、算出部14は、出力データのチャネルに対応するカーネル単位でL1ノルムを算出(計算)する。例えば、算出部14は、図10の“pruning前”に示すように、プルーニング前のCh個全てのカーネルについて、それぞれのL1ノルムを算出する。これにより、Ch個分のL1ノルムが算出される。
次いで、算出部14は、図10の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する出力データのチャネルをプルーニングする。
(プルーニング誤差の算出例)
図11に例示するように、算出部14は、プルーニング対象のカーネルのL1ノルムを算出する。プルーニング対象のカーネルのL1ノルムは、プルーニング前の全カーネルのL1ノルムから、プルーニング後の全カーネルのL1ノルムを減じたもの、すなわち、プルーニング前後のL1ノルムの差である。
算出部14は、算出したL1ノルムを、プルーニング前の全カーネルの要素数で割ることで、プルーニング誤差を取得してよい。
〔1-3-2〕ノードプルーニングの例
図12は、プルーニングするノードの決定手法の一例を説明する図であり、図13は、プルーニング誤差の算出例を説明する図である。
(プルーニングするノードの決定手法の一例)
プルーニング対象の種類がノードである場合、算出部14は、出力ノードに接続される重み単位で、L1ノルムを算出する。図12の“pruning前”の例では、算出部14は、実線、破線、一点鎖線の各単位でL1ノルムを算出する。
次いで、算出部14は、図12の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する出力ノードをプルーニングする。例えば、算出部14は、L1ノルムが小さかった重み群に対応する出力ノードをプルーニング対象のノードに決定する。
(プルーニング誤差の算出例)
図13に例示するように、算出部14は、プルーニング対象の重み群のL1ノルムを算出する。プルーニング対象の重み群のL1ノルムは、プルーニング前の全重みのL1ノルムから、プルーニング後の全重みのL1ノルムを減じたものである。
算出部14は、算出したL1ノルムを、プルーニング前の全重みの要素数で割ることで、プルーニング誤差を取得してよい。図13の“pruning後”の例では、算出部14は、二点鎖線の重み群のL1ノルムを算出し、プルーニング前の全重みの要素数(=“6”;線の本数)でL1ノルムを除算する。
〔1-3-3〕重みプルーニングの例
図14は、プルーニングする重みの決定手法の一例を説明する図であり、図15は、プルーニング誤差の算出例を説明する図である。
(プルーニングする重みの決定手法の一例)
プルーニング対象の種類が重みである場合、算出部14は、全ての重みについて、要素単位でL1ノルムを算出する。図14の“pruning前”の例では、重みの要素数=“6”であるため、算出部14は、“6”個のL1ノルムを算出する。
次いで、算出部14は、図14の“pruning後”に例示するように、算出したL1ノルムの小さい順に、設定されたプルーニング率に応じて、対応する重みをプルーニングする。例えば、算出部14は、L1ノルムが小さかった重みをプルーニング対象の重みに決定する。
(プルーニング誤差の算出例)
図15に例示するように、算出部14は、プルーニング対象の重みのL1ノルムを算出する。プルーニング対象の重みのL1ノルムは、プルーニング前の全重みのL1ノルムから、プルーニング後の全重みのL1ノルムを減じたものである。
算出部14は、算出したL1ノルムを、プルーニング前の全重みの要素数で割ることで、プルーニング誤差を取得してよい。図15の“pruning後”の例では、算出部14は、破線の重みのL1ノルムを算出し、プルーニング前の全重みの要素数(=“6”;線の本数)でL1ノルムを除算する。
〔1-4〕concat部を含むNNのプルーニング処理の説明
図16は、concat部154を含むNN150の一例を示す図であり、図17は、concat部154を含むNN150に対する上述した一実施形態に係る手法の適用前後のテンソルの一例を示す図である。
図16に例示するように、NN150は、レイヤ151~153、155(それぞれレイヤ1、3、2、4と表記)と、concat部154とを含む。concat部154は、レイヤ1及び2からのテンソルを入力とし、これらのテンソルの加算を行ない、加算した結果をレイヤ4に出力する。concat演算は、レイヤ1からのテンソルとレイヤ2からのテンソルとに対する所定の演算結果のテンソルを出力する演算処理の一例である。なお、以下の説明では、concat部154にテンソルを入力する入力レイヤが2つである場合を例に挙げるが、これに限定されるものではなく、入力レイヤは、3つ以上であってもよい。換言すれば、concat部154には、concat部154の前段に接続された前段層からのテンソルと、当該前段層よりも前の層であってconcat部154にショートカット結合される1以上の層からの1以上のテンソルとが入力されてよい。
以下、簡単のために、プルーニング対象の要素がチャネルであり、レイヤ1及び2のそれぞれが3チャネル(要素数“3”)の1次元テンソルを出力する場合を例に挙げる。なお、要素としては、例えば、チャネルの他に、重み又はノードが挙げられる。
図16の例では、concat部154は、レイヤ1から出力されるテンソル[101]と、レイヤ2から出力されるテンソル[011]とをチャネルごとに加算し、加算結果のテンソル[112]をレイヤ4に出力する。なお、テンソル内の各列は、プルーニング対象の要素(例えばチャネル)に対応する。以下、テンソル内の各列を、[ch1,2]のように表記する場合がある。[ch1,2]は、レイヤ1のチャネル2を意味する。レイヤ内のチャネルの位置は、インデックスにより特定(指定)可能である。
ここで、図16に示すNN150に対して上述した一実施形態に係る手法を適用すると、レイヤ1~4のそれぞれのプルーニング率が個別に決定され、決定されたプルーニング率により各レイヤ1~4のプルーニングが行なわれる。
例えば、図17に示すように、レイヤ1から出力されるテンソル:[Ch1,1],[ch1,2],[ch1,3]のうちの[ch1,3]がプルーニングされ、レイヤ2から出力されるテンソル:[Ch2,1],[ch2,2],[ch2,3]のうちの[ch2,2],[ch2,3]がプルーニングされる場合を想定する。この場合、concat部154は、レイヤ1及びレイヤ2からそれぞれ入力されるチャネル数、換言すればテンソルのチャネルの次元の要素数(サイズ)が“2”及び“1”で異なるため、concat演算を行なうことが不可能である。図17の例では、[ch1,2]の加算相手が存在しないためである。
concat演算が不可能になることを回避するためには、例えば、concat演算への入力となるテンソルを出力する全てのレイヤを一律に、プルーニング率の決定対象から除外することが考えられる。しかし、この場合、NNに含まれるconcat部154の数が増加するほど、NNの機械学習モデル全体のプルーニング率が低下し、プルーニングによる機械学習モデルのデータサイズの圧縮(軽量化)効果が低減する。
そこで、一実施形態に係る算出部14は、ゼロパディング層を、concat部154への入力となる(concat部154にテンソルを出力する)全てのレイヤ(以下、「concat直前レイヤ」と表記する場合がある)の出力側に挿入する。
ゼロパディング層は、テンソルの所定の要素(例えばチャネル)を“0”(ゼロ)でパディングするためのレイヤである。パディングとは、テンソルにゼロ等の値を埋め込むことで、テンソルのサイズ(例えばチャネル数)を大きくする操作である。concat直前レイヤは、複数の第1の層の一例であり、ゼロパディング層は、複数の第2の層の一例である。
例えば、算出部14は、同一のconcat部154にテンソルを入力する全てのconcat直前レイヤのプルーニング後のテンソルの要素数(サイズ)、一例としてテンソルのチャネルの次元の数を、ゼロパディング層でのゼロパディングによって一致させてよい。例えば、算出部14は、仮算出したプルーニング率に基づき、concat直前レイヤのチャネル数を特定し、特定したチャネル数に応じて、ゼロパディングを行なうチャネル数を決定してよい。
図18は、モデルへのゼロパディング層の挿入例を説明するための図である。
なお、ゼロパディング層を挿入する処理は、プルーニング対象であるNNにconcat部154が含まれる場合に、プルーニング率候補を選択して実行されてよく、含まれない場合には当該処理の実行が抑止されてよい。例えば、算出部14は、NNにconcat部154が含まれるか否かを、NNの構成、例えば各レイヤ及びレイヤ間の接続関係等の構成を定義する構成情報(図示省略)を参照して判定してもよい。また、算出部14は、構成情報に基づき、concat部154ごとに、concat直前レイヤを特定してよい。
また、図18では、上述した(i)において、算出部14が出力データのチャネルに対応するカーネル単位でL1ノルムを算出(計算)し、L1正則化学習(図2参照)等によってプルーニング率を仮算出した場合を例に挙げる。図17の例では、仮算出したプルーニング率が、レイヤ1は“33%”、レイヤ2が“66%”である場合、算出部14は、レイヤ1の3つのチャネルのうちの1つをプルーニングし、レイヤ2の3つのチャネルのうちの2つをプルーニングする。
図18に示すように、ゼロパディング層挿入前のモデル160は、concat部161及び162と、複数のレイヤ163~167とを含む。concat部161には、レイヤ163及び165からそれぞれ出力されるテンソルが入力され、concat部162には、concat部161及びレイヤ167からそれぞれ出力されるテンソルが入力される。
モデル160において、プルーニングにより、レイヤ163の出力チャネル数が“10”、レイヤ165の出力チャネル数が“6”となる場合、concat部161への入力チャネル数が一致しない。また、仮にconcat部161から出力チャネル数“10”のテンソルが出力される場合であっても、レイヤ167の出力チャネル数が“14”となる場合、concat部162への入力チャネル数が一致しない。
そこで、算出部14は、モデル170に示すように、concat直前レイヤとなる、レイヤ163、165、concat部162、レイヤ167のそれぞれの出力側に、ゼロパディング層171~174を挿入(配置)する。そして、算出部14は、concat部ごとに、各concat部161及び162に入力されるテンソルのチャネル数が一致するように、ゼロパディングを行なう。
例えば、算出部14は、concat部161の全concat直前レイヤの出力チャネル数が、最大値であるレイヤ163側の“10”で一致するように、ゼロパディング層172で、レイヤ165の出力テンソルに“4”チャネル分のゼロパディングを行なう。これにより、concat部161は、入力チャネル数“10”のテンソルを用いて、出力チャネル数“10”のconcat演算結果のテンソルを出力できる。
また、例えば、算出部14は、concat部162の全concat直前レイヤの出力チャネル数が、最大値であるレイヤ167側の“14”で一致するように、ゼロパディング層173で、concat部161の出力テンソルに“4”チャネル分のゼロパディングを行なう。これにより、concat部162は、入力チャネル数“14”のテンソルを用いて、出力チャネル数“14”のconcat演算結果のテンソルを出力できる。
図19~図24のそれぞれは、concat部154のconcat直前レイヤに対するゼロパディング例を説明するための図である。
図19に例示するように、算出部14は、concat直前レイヤであるレイヤ1及び2のプルーニング後のチャネル数を比較し、チャネル数の最大値(レイヤ1の“2”)を取得する。そして、算出部14は、最大値に満たないチャネル数“1”であるレイヤ2に対応するゼロパディング層に、足りないチャネル数(“2-1=1”)分のゼロパディングを行なう。これにより、concat部154は、パディングによって追加されたゼロ行列を、[Ch1,2]の加算相手とすることができる。
算出部14は、ゼロパディングを行なうチャネル数を、最大値に満たない(足りない)分のチャネル数としてよい。例えば、図20に示すように、レイヤ1及び2のプルーニング後のチャネル数がそれぞれ“3”及び“1”である場合、算出部14は、レイヤ2にチャネル数“2”つ分のゼロ行列を追加してよい。
このように、concat直前レイヤでは、concat直前レイヤの各々の削減割合に応じて要素が削減されている可能性があるため、concat直前レイヤ間でテンソルの要素数(サイズ)が異なる。そこで、算出部14は、concat直前レイヤからconcat部154に入力される複数のテンソルのそれぞれのサイズが、いずれも第1の数となるように、ゼロパディング層17のそれぞれにおいて、1個以上のゼロ行列によるパディングを行なうのである。第1の数は、concat直前レイヤ間のテンソルの要素数(サイズ)である。
なお、concat部154は、concat演算において、要素位置、例えばチャネルのインデックスの不一致を許容することができる。このため、算出部14は、ゼロパディングにより、concat部154に入力されるチャネルのインデックスの一致を考慮しなくてもよいし、インデックスを一致させてもよい。例えば、算出部14は、インデックスの一致を考慮しない場合、及び、インデックスを一致させる場合のそれぞれにおいて、ゼロパディングによりconcat直前レイヤ間のテンソルの要素数(サイズ)を一致させる数(第1の数)を変化させてよい。
(インデックスの一致を考慮しない場合)
図21に例示するように、レイヤ2の[Ch2,2]がプルーニングされた場合、算出部14は、インデックス順に、[Ch2,1],[Ch2,3],[zero]となるようにゼロ行列を挿入してよい。この場合、算出部14は、レイヤ1に対して、0個のゼロ行列によるパディングを行ない、レイヤ2に対して、1個のゼロ行列によるパディングを行なうのである。なお、[zero]は、ゼロ行列を示す。concat部154では、[Ch1,1]+[Ch2,1]、[Ch1,2]+[Ch2,3]、[Ch1,3]+[zero]のconcat演算が行なわれる。
他の例として、図22に示すように、レイヤ1の[Ch1,3]及びレイヤ2の[Ch2,2]がプルーニングされた場合、チャネルのインデックスは一致しないが、いずれのレイヤもチャネル数が最大値“2”となる。この場合、算出部14は、ゼロパディングを抑制してよい。換言すれば、算出部14は、レイヤ1及びレイヤ2のそれぞれにおいて、0個のゼロ行列によるパディングを行なうといえる。concat部154では、[Ch1,1]+[Ch2,1]、[Ch1,2]+[Ch2,3]のconcat演算が行なわれる。
このように、算出部14は、インデックスの一致を考慮しない場合、第1の数として、要素削減後の複数のconcat直前レイヤから出力される複数のテンソルのうちの、最大の要素数を用いる。最大の要素数は、図21の例では3であり、図22の例では2である。
また、算出部14は、要素削減後の複数のconcat直前レイヤのうちの、出力されるテンソルの要素数が第1の数である1以上の第1の層については、当該1以上の第1の層に対応付けられた1以上の第2の層のそれぞれにおけるゼロパディングの実行を抑制してよい。図22の例では、算出部14は、レイヤ1及びレイヤ2のそれぞれのチャネル数がいずれも最大値(第1の数)の“2”であるため、レイヤ1及びレイヤ2のそれぞれに対するゼロパディングを抑制する。
(インデックスを一致させる場合)
図23に例示するように、レイヤ2の[Ch2,2]がプルーニングされた場合、算出部14は、図21の例とは異なり、プルーニングされた[Ch2,2]の位置にゼロ行列を挿入してもよい。この場合、算出部14は、レイヤ1に対して、0個のゼロ行列によるパディングを行ない、レイヤ2に対して、1個のゼロ行列によるパディングを行なうのである。concat部154では、[Ch1,1]+[Ch2,1]、[Ch1,2]+[zero]、[Ch1,3]+[Ch2,3]のconcat演算が行なわれる。
他の例として、図24に示すように、レイヤ1の[Ch1,1],[Ch1,3]及びレイヤ2の[Ch2,1],[Ch2,2]がプルーニングされた場合、算出部14は、プルーニングされたレイヤ1の[Ch1,3]及びレイヤ2の[Ch2,2]の位置に、それぞれゼロ行列を挿入してもよい。このとき、算出部14は、レイヤ1及びレイヤ2の全ての層で共通のインデックス(1)が削除対象となる要素(レイヤ1の[Ch1,1]及びレイヤ2の[Ch2,1])については、ゼロパディングの対象から除外してよい。
図24に示す例の場合、算出部14は、レイヤ1及びレイヤ2のそれぞれにおいて、1個のゼロ行列によるパディングを行なうといえる。concat部154では、[Ch1,2]+[zero]、[zero]+[Ch2,3]のconcat演算が行なわれる。
このように、算出部14は、インデックスを一致させる場合、第1の数として、複数のconcat直前レイヤにおいて要素を削減しない場合の要素数(初期値)から、concat直前レイヤにおいて削除対象となる要素のうちの、concat直前レイヤ間で共通する第1のインデックスの要素の数、を減じた数を用いる。例えば、要素数(初期値)は、concat直前レイヤ間で共通の数であり、図23及び図24の例ではいずれも3である。concat直前レイヤにおいて削除対象となる要素のうちの、concat直前レイヤ間で共通する第1のインデックスの要素の数は、図23の例では0であり、図24の例では1(インデックス1)である。従って、第1の数は、図23の例では3であり、図24の例では2である。
そして、算出部14は、複数のconcat直前レイヤのうちの少なくとも1つの第3の層で第2のインデックスが削除対象とならない場合に、複数のconcat直前レイヤのうちの第3の層以外の第4の層の第2のインデックスにゼロ行列を挿入する。
図23の例において、第3の層、第2のインデックス及び第4の層の組み合わせは、レイヤ1、インデックス(2)、レイヤ2である。図24の例において、第3の層、第2のインデックス及び第4の層の組み合わせは、レイヤ1、インデックス(2)、レイヤ2の組み合わせ、並びに、レイヤ2、インデックス(3)、レイヤ1の組み合わせである。
これにより、算出部14は、concat直前レイヤの要素数を可能な範囲で削減しつつ、インデックスを揃えたテンソルをconcat部154に入力することができる。
以上のように、ゼロパディング処理により、concat部154ごとに、複数のconcat直前レイヤから入力されるテンソルの要素数(サイズ)を同一にすることができる。従って、concat直前レイヤについても、仮算出されたプルーニング率候補を用いてプルーニングすることが可能となり、concat部154を含む機械学習モデルのデータサイズの圧縮率を向上させることができる。
なお、図18~図24を参照して説明した処理は、閾値算出部14aによる(i)の処理の一部であってもよく、閾値算出部14aにより実行されてもよい。
また、図18~図24を参照して説明した処理の実行後における算出部14の処理は、(ii)及び(iii)の処理と同様である。
上述したゼロパディング処理は、要素がチャネルである場合の実施に限定されるものではなく、要素が重みである場合、及び、要素がノードである場合、の一方又は双方の場合に実施されてもよい。
図25は、ゼロパディング処理の適用有無に応じた、NNのプルーニング前後の精度、及び、データサイズの圧縮率の一例を示す図である。なお、図25において、concat部154への入力レイヤをプルーニングしない場合とは、ゼロパディング処理を適用せずに、concat部154のconcat直前レイヤをプルーニングの対象外とした場合を意味する。
図25に例示するように、ゼロパディング処理を適用する場合、Res32、Res56、Res110のいずれのモデルにおいても、concat部154への入力レイヤをプルーニングしない場合と比較して、軽量化済モデル11eのデータサイズの圧縮率を向上できる。また、精度を大きく劣化させることを抑制できている。
図26は、ゼロパディング処理の適用有無に応じた、NNの各レイヤの出力チャネル数の一例を示す図である。図26では、モデルがcifar10, resnet32である場合を例に挙げる。図26において、破線で囲ったレイヤ(太字)は、concat部154への入力となるconcat直前レイヤである。「pruning後(適用無し)」は、concat部154への入力レイヤをプルーニングしない場合を示し、「pruning後(適用有り)」は、ゼロパディング処理を適用した場合を示す。
図26に例示するように、ゼロパディング処理を適用する場合、concat直前レイヤからの出力チャネル数が、concat部154への入力レイヤをプルーニングしない場合と比較して減少している。すなわち、ゼロパディング処理の適用により、concat直前レイヤが適切にプルーニングされていることがわかる。
〔1-5〕動作例
次に、図27を参照して、一実施形態に係るサーバ1の動作例を説明する。図27は、一実施形態に係るサーバ1による処理の動作例を説明するためのフローチャートである。
図27に例示するように、機械学習部13は、取得部12が取得した未学習モデル11aの機械学習をプルーニングなしで実行する(ステップS1)。
算出部14は、プルーニングしない場合の推論精度(認識率)Accwoを算出する(ステップS2)。
閾値算出部14aは、信頼半径の初期値を設定する(ステップS3)。
閾値算出部14aは、プルーニング率を設定するための、層ごとの閾値T、及び、層ごとのプルーニング誤差を算出し(ステップS4)、全層の閾値TのL2ノルムが信頼半径よりも大きいか否かを判定する(ステップS5)。全層の閾値TのL2ノルムが信頼半径以下である場合(ステップS5でNO)、処理がステップS7に移行する。
全層の閾値TのL2ノルムが信頼半径よりも大きい場合(ステップS5でYES)、閾値算出部14aは、全層の閾値TのL2ノルム=信頼半径となるように閾値をスケール(更新)し(ステップS6)、処理がステップS7に移行する。
ステップS7において、閾値算出部14aは、層ごとのプルーニング率を仮算出する。例えば、閾値算出部14aは、層ごとに、設定されたプルーニング率候補からプルーニング率を仮設定する。
算出部14は、プルーニング率を仮算出した層にconcat直前レイヤが含まれるか否かを判定する(ステップS8)。プルーニング率を仮算出した層にconcat直前レイヤが含まれない場合(ステップS8でNO)、処理がステップS11に移行する。
プルーニング率を仮算出した層にconcat直前レイヤが含まれる場合(ステップS8でYES)、算出部14は、concat直前レイヤの出力にゼロパディング層を挿入し(ステップS9)、ステップS10の処理を実行して、処理がステップS11に移行する。
ステップS10では、算出部14は、concat部154ごとに、同一のconcat部154にテンソルを入力する複数のconcat直前レイヤを、構成情報等に基づき特定する。そして、算出部14は、concat直前レイヤから出力される要素数(例えばチャネル数)が一致するように、ゼロパディング層にゼロパディングを行なう。なお、ステップS4~S10は、上記(i)の処理の一例である。
機械学習部13は、閾値算出部14aが仮算出したプルーニング率で機械学習済モデル11cをプルーニングし、プルーニング後のモデルの再機械学習を実行する。算出部14は、再機械学習後のモデルの推論精度Accを算出する(ステップS11)。
決定部14bは、推論精度Acc+マージンAccが推論精度Accwo以上か否かを判定する(ステップS12)。推論精度(認識率)の評価により、近似誤差によるプルーニング率選択の誤りを補償することできる。
推論精度Acc+マージンAccが推論精度Accwo以上である場合(ステップS12でYES)、決定部14bは、仮算出したプルーニング率で機械学習済モデル11cをプルーニングすると決定し(ステップS13)、仮算出したプルーニング率をプルーニング率11dとしてメモリ部11に格納する。また、閾値算出部14aは、信頼半径を定数倍して増加させ(ステップS14)、処理がステップS17に移行する。
一方、推論精度Acc+マージンAccが推論精度Accwo未満である場合(ステップS12でNO)、決定部14bは、仮算出したプルーニング率を破棄する(ステップS15)。閾値算出部14aは、信頼半径を定数倍して減少させ(ステップS16)、処理がステップS17に移行する。なお、ステップS10~S16は、上記(ii)の処理の一例である。
ステップS17において、決定部14bは、所定回数に亘って探索(ステップS4~S16の処理)を行なったか否か、換言すれば、閾値算出、プルーニング率候補選択及びプルーニング率決定の処理の実施回数が所定の条件を満たすか否かを判定する。所定回数に亘って探索を行なっていない場合(ステップS17でNO)、処理がステップS4に移行する。
所定回数に亘って探索を行なった場合(ステップS17でYES)、出力部15は、決定したプルーニング率11dを出力し(ステップS18)、処理が終了する。なお、ステップS17は、上記(iii)の処理の一例である。
以上のように、一実施形態に係るサーバ1は、閾値算出部14aにより、NNに使用されるテンソルの、プルーニングより発生する誤差を算出し、損失関数の値と、NNの逆伝播により得られる勾配とから、閾値を生成する。また、閾値算出部14aが、算出されたプルーニングの誤差と閾値とを比較し、プルーニング率を仮算出する。さらに、決定部14bが、算出されたプルーニング率で再学習した後のモデルの推論精度と、プルーニングしない場合のモデルの推論精度とを比較し、レイヤごとにプルーニング率を決定する。このとき、閾値算出部14aは、プルーニングした場合の推論精度がプルーニングしない場合の推論精度よりも劣化したと判定された場合、閾値が小さくなるように閾値の上限を再設定し、再度プルーニング率の探索を行なう。
これにより、一実施形態に係るサーバ1によれば、層の種類に依らず、各層のプルーニング率を決定することができる。例えば、サーバ1は、BN層が接続されていない畳込み層、全結合層等を含む機械学習済モデル11cに適用するプルーニング率を層ごとに決定することができる。
また、サーバ1によれば、NNにconcat部154が含まれる場合でも、concat直前レイヤを適切にプルーニングでき、軽量化済モデル11eのデータサイズの圧縮率を向上できる。
〔1-6〕変形例
次に、一実施形態に係る変形例を説明する。なお、以下の説明では、簡単のため、推論精度のマージンAccが“0”である場合、換言すれば、推論精度の比較において、推論精度Accが推論精度Accwo以上か否かが判定される場合を想定する。また、以下の説明では、NNがconcat部を含まない場合を例に挙げるが、図16~図26を参照して説明した処理は、以下の第1及び第2変形例のいずれにおいても同様に適用可能である。
〔1-6-1〕第1変形例
一実施形態に係る手法では、プルーニング率の探索回数(上記(iii)の処理の試行回数)が、例えば設計者により手動で(マニュアルで)設定されるハイパーパラメータである。このため、例えば、探索回数が少なく設定された場合、機械学習済モデル11cが十分に軽量化されない可能性があり、探索回数が多く設定された場合、機械学習済モデル11cは十分に軽量化されるものの、探索時間が長くなる可能性がある。
図28は、一実施形態に係る手法における信頼半径の更新に応じたプルーニング誤差比較結果の一例を示す図である。
図28に例示するように、m(mは“1”以上の整数)回目の探索の誤差比較結果において、プルーニング率“10%”が算出(決定)された場合を想定する。この場合、信頼半径は、定数K倍により増加するように更新される。しかし、更新後の信頼半径が、m回目で決定されたプルーニング率候補よりも1つ大きいプルーニング率候補による誤差未満である場合、m+1回目の探索の誤差比較結果においても、再びプルーニング率“10%”が算出される。
このように、信頼半径を定数K又は定数k倍する場合、信頼半径によって閾値の更新量が制限されるため、複数の探索において同じプルーニング率候補が採用される場合がある。同じプルーニング率の組み合わせが複数回に亘って探索される状態は、モデルのプルーニングが十分に試行されないままプルーニング率の探索回数が増加することに繋がる。
そこで、第1変形例では、信頼半径の更新に着目し、NNを軽量化するための適切なプルーニング率の探索時間(探索回数)を短縮(減少)させる手法を説明する。
図29は、第1変形例に係るサーバ1Aの機能構成例を示すブロック図である。図29に例示するように、サーバ1Aは、図4のサーバ1とは異なる算出部14Aを備えてよい。算出部14Aは、図4の算出部14とは異なる閾値算出部14a’及び決定部14b’を備えてよい。
算出部14Aは、探索ごとに、異なるプルーニング率の組み合わせを探索する。ここで、全てのレイヤのプルーニング率“0%”の組み合わせが選択された状態は、算出部14Aがこれ以上プルーニング率の探索を行なわないと判断した状態であるものとする。このような前提において、算出部14A(決定部14b’)は、全てのレイヤのプルーニング率が“0%”の組み合わせを選択した場合に、探索を打ち切る。
閾値算出部14a’は、決定部14b’による推論精度の比較結果に応じて、レイヤi(iは1以上の整数)ごとに、探索したプルーニング率よりも1つ大きな値のプルーニング率の誤差又は探索したプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
例えば、閾値算出部14a’は、推論精度Accが推論精度Accwo以上である場合には、探索したプルーニング率よりも1つ大きな値のプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
一方、閾値算出部14a’は、推論精度Accが推論精度Accwo未満である場合、探索したプルーニング率の誤差と、閾値との差分の絶対値“Ediff,i”を測定する。
閾値算出部14a’は、下記式(7)に例示するように、算出した全レイヤの差分の絶対値“Ediff,i”のうちの、最も小さな値(差分)“Ediff”を取得する。
Ediff= min(Ediff,1, Ediff,2, ..., Ediff,i) (7)
閾値算出部14a’は、決定部14b’による推論精度の比較結果に応じて、信頼半径の定数倍、並びに、信頼半径と差分“Ediff”との和又は差、のうちの変動量が大きい方を採用して、信頼半径を更新する。
例えば、閾値算出部14a’は、推論精度Accが推論精度Accwo以上である場合には、信頼半径の定数K倍、並びに、信頼半径と差分“Ediff”との和、のうちの変動量が大きい方を採用して、信頼半径が増加するように更新する。
一方、閾値算出部14a’は、推論精度Accが推論精度Accwo未満である場合には、信頼半径の定数k倍、並びに、信頼半径と差分“Ediff”との差、のうちの変動量が大きい方を採用して、信頼半径が減少するように更新する。
このように、閾値算出部14a’は、複数の層のそれぞれのプルーニング率候補の組み合わせが、プルーニング率候補を選択する処理(換言すれば探索)の実行ごとに互いに異なる組み合わせとなるように、信頼半径を更新する。
図30は、信頼半径を増加させる場合の信頼半径更新処理の一例を説明する図である。図30に示すように、m回目に探索されたプルーニング率が“(レイヤ1,レイヤ2)=(10%,0%)”である場合を想定する。閾値算出部14a’は、レイヤ1のプルーニング率“20%”の誤差と信頼半径との差分の絶対値“Ediff,1”、及び、レイヤ2のプルーニング率“10%”の誤差と信頼半径との差分の絶対値“Ediff,2”を算出する。閾値算出部14a’は、上記式(7)に従い、値の小さい差分“Ediff,2”を“Ediff”として取得する。
そして、閾値算出部14a’は、m+1回目(次回)の信頼半径を、下記式(8)に従い決定(更新)する。
(m+1回目の信頼半径)
= max((m回目の信頼半径・定数K), (m回目の信頼半径 + Ediff)) (8)
これにより、m+1回目の信頼半径には、少なくとも「信頼半径と差分との和」以上の値が選択されるため、m+1回目では、プルーニング率としてm回目とは異なるビット幅が算出される。
図30の例では、m+1回目の探索における信頼半径(閾値の上限)は、レイヤ2のプルーニング率“10%”の誤差と一致する。従って、m+1回目の探索では、前回と異なるプルーニング率の組み合わせである、プルーニング率“(レイヤ1,レイヤ2)=(10%,10%)”が探索される。
図31は、信頼半径を減少させる場合の信頼半径更新処理の一例を説明する図である。図31に示すように、m回目に探索されたプルーニング率が“(レイヤ1,レイヤ2)=(10%,0%)”である場合を想定する。閾値算出部14a’は、レイヤ1のプルーニング率“10%”の誤差と信頼半径との差分の絶対値“Ediff,1”、及び、レイヤ2のプルーニング率“0%”の誤差と信頼半径との差分の絶対値“Ediff,2”を算出する。閾値算出部14a’は、上記式(7)に従い、値の小さい差分“Ediff,1”を“Ediff”として取得する。
そして、閾値算出部14a’は、m+1回目(次回)の信頼半径を、下記式(9)に従い決定(更新)する。
(m+1回目の信頼半径)
= max((m回目の信頼半径・定数), (m回目の信頼半径 - Ediff)) (9)
これにより、m+1回目の信頼半径には、少なくとも「信頼半径と差分との差」以上の値が選択されるため、m+1回目では、プルーニング率としてm回目とは異なるビット幅が算出される。
図31の例では、m+1回目の探索における信頼半径(閾値の上限)は、レイヤ1のプルーニング率“0%”の誤差と一致する。従って、m+1回目の探索では、前回と異なるプルーニング率の組み合わせである、プルーニング率“(レイヤ1,レイヤ2)=(0%,0%)”が探索される。
上記式(8)及び(9)を一般化すると、次回の信頼半径は、下記式(10)により表現できる。
次回の信頼半径 = 今回の信頼半径 * max(定数, Qscale_min) (10)
ここで、上記式(10)において、定数はK又はkであり、“Qscale_min”は、下記式(11)で表される“Qscale”であり、“Qscale”は、下記式(12)で表される。
Qscale_min = min(全ての量子化対象ベクトルで計算されたQscale) (11)
Qscale = 1 + Qdiff / Qth (12)
上記式(12)において、“Qdiff”は、“仮算出されたビット幅(プルーニング率)よりも1つ狭いビット幅の量子化誤差と閾値との差分”であり、“Qth”は、閾値である。
次に、図32を参照して、第1変形例に係るサーバ1Aの動作例を説明する。図32は、第1変形例に係るサーバ1Aによる処理の動作例を説明するためのフローチャートである。図32は、図27に示すサーバ1に係るフローチャートにおけるステップS14、S16、S17を、ステップS21、S22、S23にそれぞれ置き換えたものである。なお、第1変形例においても、閾値算出部14a’は、ステップS3において、信頼半径の初期値を設定する。
ステップS21では、閾値算出部14a’は、信頼半径を定数K倍、又は、「差分の和」のうちの大きい方で増加させ、処理がステップS23に移行する。
ステップS22では、閾値算出部14a’は、信頼半径を定数k倍、又は、「差分の差」のうちの大きい方で減少させ、処理がステップS23に移行する。
ステップS23では、決定部14b’は、全層のプルーニング率11dが“0%”であるか否か、換言すれば、プルーニング率が所定の条件を満たすか否かを判定する。少なくとも1つの層のプルーニング率11dが“0%”ではない場合(ステップS23でNO)、処理がステップS4に移行する。
全層のプルーニング率11dが“0%”である場合(ステップS23でYES)、出力部15は、決定したプルーニング率11dを出力し(ステップS18)、処理が終了する。
以上のように、第1変形例では、閾値算出部14a’による信頼半径の更新手法、及び、決定部14b’による探索の終了判定の終了条件を、一実施形態とは異なるものとする。これにより、サーバ1Aは、NNを十分に軽量化するための適切なプルーニング率を、最短時間(最短回数)で探索することができる。また、設計者等による探索回数の設定(指定)を省略できる。
〔1-6-2〕第2変形例
一実施形態及び第1変形例に係る手法では、信頼半径の初期値が設計者等により設定されるハイパーパラメータである。
信頼半径の初期値が大きく設定される場合と小さく設定される場合とでは、同じ探索回数であってもモデルサイズが異なる場合がある。また、信頼半径の初期値が大きく設定される場合、信頼半径の初期値が小さく設定される場合と比較して、モデルサイズが十分に軽量化されるまでの探索回数が多くなる場合がある。
このように、信頼半径の初期値に応じて、最終的なモデルサイズ及びプルーニング率の探索回数が変動する、換言すれば、サーバ1及び1Aの性能にばらつきが生じる可能性がある。
そこで、第2変形例では、サーバ1及び1Aの性能のばらつきを抑える手法を説明する。
図33は、第2変形例に係るサーバ1Bの機能構成例を示すブロック図である。図33に例示するように、サーバ1Bは、図4のサーバ1とは異なる算出部14Bを備えてよい。算出部14Bは、図4の算出部14とは異なる閾値算出部14a”及び決定部14b”を備えてよい。
モデルのプルーニングでは、小さなプルーニング率を用いて徐々にモデルをプルーニングすることで、大きなプルーニング率で一気にプルーニングするよりも、精度を維持でき、且つ、高い圧縮率でモデルを圧縮できることが知られている。
また、上記式(5)に示すように、閾値Tは勾配の逆数に応じて設定されるため、閾値Tが大きい層は、勾配が小さい層であることを意味する。勾配が小さい層は、プルーニングしても精度への影響が小さい層であることを意味する。
そこで、サーバ1B(閾値算出部14a”)は、例えば、信頼半径の初期値を、初回の探索でのプルーニング率が最も小さくなるような値に設定する。このために、閾値算出部14a”は、例えば、信頼半径の初期値を、全層のうちの、閾値Tが最も大きい層がプルーニングされ、残りの層がプルーニングされない(プルーニング率“0%”となる)ような値に設定してよい。
サーバ1Bは、上述のように信頼半径の初期値を設定することで、信頼半径の初期値をマニュアルで例えば大きく設定した場合よりも、モデルサイズをより圧縮でき、又は、精度を維持することができる。
図34は、信頼半径の初期値の設定例を説明する図である。なお、図34の上段に示すように、信頼半径の初期値が設定されない場合、探索されるプルーニング率の組み合わせは、“(レイヤ1,レイヤ2)=(10%,20%)”である。
図34に例示するように、閾値算出部14a”は、プルーニング率の初回の探索において、全層のうち、最も閾値が大きな層の閾値(max(Th))と、その層の最も小さな(“0%”を除く)プルーニング率による誤差(Error)とを測定する。
Thは、各層の閾値T、T、・・・によるベクトルを示し、図34の例ではTh=[T、T]である。閾値(max(Th))は、閾値が最も大きな層の閾値であり、図34の例では、Tである。誤差(Error)は、閾値が最も大きな層の最小プルーニング率の誤差であり、図34の例では、レイヤ2のプルーニング率“10%”の誤差を測定する。
次いで、閾値算出部14a”は、測定した閾値及び誤差を用いて、下記式(13)に従い、信頼半径の初期値を設定する。下記式(13)において、“||Th||2”は、全層の閾値のL2ノルムである。
Figure 2023129041000008
閾値算出部14a”は、算出した信頼半径の初期値により、閾値が最も大きい層(レイヤ2)のプルーニング率として最小のプルーニング率“10%”が選択され、残りの層(レイヤ1)ではプルーニング率“0%”が選択されるように、閾値T、Tを設定する。
これにより、図34の下段に示すように、信頼半径の初期値が設定され、閾値T、Tが設定されると、探索されるプルーニング率の組み合わせは、“(レイヤ1,レイヤ2)=(0%,10%)”となる。プルーニング対象の層(レイヤ2)は、閾値が最も大きい、換言すれば、勾配が最も小さい層であるため、プルーニングによる精度への影響を小さく抑えることができる。
なお、閾値算出部14a”の信頼半径の初期値の設定処理以外の機能は、一実施形態に係る閾値算出部14a、及び、第1変形例に係る閾値算出部14a’の一方又は双方と同様であってよい。また、決定部14b”は、一実施形態に係る決定部14b、及び、第1変形例に係る決定部14b’の一方又は双方と同様であってよい。
すなわち、第2変形例に係る手法は、一実施形態及び第1変形例の一方又は双方との組み合わせにより実現されてよい。
次に、図35を参照して、第2変形例に係るサーバ1Bの動作例を説明する。図35は、第2変形例に係るサーバ1Bによる処理の動作例を説明するためのフローチャートである。図35は、図27に示すサーバ1に係るフローチャートにおけるステップS3を削除し、ステップS4とステップS5との間にステップS31及びS32を追加し、ステップS14、S16、S17をステップS33、S34、S35にそれぞれ置き換えたものである。
ステップS31では、閾値算出部14a”は、ステップS4で層ごとの閾値を算出後、初回の探索か否かを判定する。初回の探索ではない場合(ステップS31でNO)、処理がステップS5に移行する。
初回の探索である場合(ステップS31でYES)、閾値算出部14a”は、閾値が最大の層の、閾値、及び、最小プルーニング率誤差に基づき、信頼半径の初期値を設定し(ステップS32)、処理がステップS5に移行する。
ステップS33、S34、S35は、それぞれ、図27に示すステップS14、S16、S17と、図32に示すステップS21、S22、S23と、のうちのいずれであってもよい。
以上のように、第2変形例では、閾値算出部14a”による信頼半径の初期値の設定手法を、一実施形態及び第1変形例とは異なるものとする。これにより、サーバ1Bは、最終的なモデルサイズ及びプルーニング率の探索回数の変動を抑制でき、サーバ1及び1Aの性能のばらつきを抑えることができる。
また、サーバ1Bは、設計者等による手動での信頼半径の初期値(ハイパーパラメータ)の設定を抑止し、機械学習済モデル11cのレイヤに応じて動的に、信頼半径の初期値を設定することができる。従って、モデルごとに適切なプルーニング率を設定することができ、モデルに依らず、最終的なモデルサイズ及びプルーニング率の探索回数の変動を抑制できるため、サーバ1及び1Aの性能のばらつきを抑えることができる。
〔1-7〕ハードウェア構成例
一実施形態並びに第1及び第2変形例に係るサーバ1、1A及び1Bは、それぞれ、仮想マシン(VM;Virtual Machine)であってもよいし、物理マシンであってもよい。また、サーバ1、1A及び1Bのそれぞれの機能は、1台のコンピュータにより実現されてもよいし、2台以上のコンピュータにより実現されてもよい。さらに、サーバ1、1A及び1Bのそれぞれの機能のうちの少なくとも一部は、クラウド環境により提供されるHW(Hardware)リソース及びNW(Network)リソースを用いて実現されてもよい。
図36は、コンピュータ10のハードウェア(HW)構成例を示すブロック図である。以下、サーバ1、1A及び1Bのそれぞれの機能を実現するハードウェア(HW)として、コンピュータ10を例に挙げて説明する。なお、サーバ1、1A及び1Bのそれぞれの機能を実現するHWリソースとして、複数のコンピュータが用いられる場合は、各コンピュータが図36に例示するHW構成を備えてよい。
図36に示すように、コンピュータ10は、HW構成として、例示的に、プロセッサ10a、メモリ10b、記憶部10c、IF(Interface)部10d、IO(Input / Output)部10e、及び読取部10fを備えてよい。
プロセッサ10aは、種々の制御や演算を行なう演算処理装置の一例である。プロセッサ10aは、コンピュータ10内の各ブロックとバス10iで相互に通信可能に接続されてよい。なお、プロセッサ10aは、複数のプロセッサを含むマルチプロセッサであってもよいし、複数のプロセッサコアを有するマルチコアプロセッサであってもよく、或いは、マルチコアプロセッサを複数有する構成であってもよい。
プロセッサ10aとしては、例えば、CPU、MPU、GPU、APU、DSP、ASIC、FPGA等の集積回路(IC;Integrated Circuit)が挙げられる。CPUはCentral Processing Unitの略称であり、MPUはMicro Processing Unitの略称である。GPUはGraphics Processing Unitの略称であり、APUはAccelerated Processing Unitの略称である。DSPはDigital Signal Processorの略称であり、ASICはApplication Specific ICの略称であり、FPGAはField-Programmable Gate Arrayの略称である。
なお、プロセッサ10aとして、上述した集積回路の2以上の組み合わせが用いられてもよい。一例として、コンピュータ10は、第1及び第2のプロセッサ10aを備えてもよい。第1のプロセッサ10aは、コンピュータ10の各種機能の全部若しくは一部を実現するプログラム10g(機械学習プログラム)を実行するCPUの一例である。第1のプロセッサ10aは、例えば、プログラム10gに基づき、サーバ1、1A又は1B(図4、図29又は図33参照)の取得部12、算出部14、14A又は14B、並びに、出力部15の機能を実現してもよい。第2のプロセッサ10aは、行列演算等のNNの計算に用いられる演算処理を実行するアクセラレータの一例であり、例えば、サーバ1、1A又は1B(図4、図29又は図33参照)の機械学習部13の機能を実現してもよい。
メモリ10bは、種々のデータやプログラム等の情報を格納するHWの一例である。メモリ10bとしては、例えばDRAM(Dynamic Random Access Memory)等の揮発性メモリ、及び、PM(Persistent Memory)等の不揮発性メモリ、の一方又は双方が挙げられる。
記憶部10cは、種々のデータやプログラム等の情報を格納するHWの一例である。記憶部10cとしては、HDD(Hard Disk Drive)等の磁気ディスク装置、SSD(Solid State Drive)等の半導体ドライブ装置、不揮発性メモリ等の各種記憶装置が挙げられる。不揮発性メモリとしては、例えば、フラッシュメモリ、SCM(Storage Class Memory)、ROM(Read Only Memory)等が挙げられる。
また、記憶部10cは、プログラム10gを格納してよい。例えば、サーバ1、1A及び1Bのプロセッサ10aは、記憶部10cに格納されたプログラム10gをメモリ10bに展開して実行することにより、サーバ1、1A及び1Bの制御部16(図4、図29又は図33参照)としての機能を実現できる。
また、図4、図29又は図33に例示するメモリ部11は、メモリ10b及び記憶部10cの少なくとも1つが有する記憶領域により実現されてよい。
IF部10dは、ネットワークとの間の接続及び通信の制御等を行なう通信IFの一例である。例えば、IF部10dは、イーサネット(登録商標)等のLAN(Local Area Network)、或いは、FC(Fibre Channel)等の光通信等に準拠したアダプタを含んでよい。当該アダプタは、無線及び有線の一方又は双方の通信方式に対応してよい。例えば、サーバ1、1A及び1Bは、IF部10dを介して、図示しないコンピュータと相互に通信可能に接続されてよい。図4、図29又は図33に例示する取得部12及び出力部15の一方又は双方の機能は、IF部10dにより実現されてもよい。また、例えば、プログラム10gは、当該通信IFを介して、ネットワークからコンピュータ10にダウンロードされ、記憶部10cに格納されてもよい。
IO部10eは、入力装置、及び、出力装置、の一方又は双方を含んでよい。入力装置としては、例えば、キーボード、マウス、タッチパネル等が挙げられる。出力装置としては、例えば、モニタ、プロジェクタ、プリンタ等が挙げられる。例えば、図4、図29又は図33に例示する出力部15は、IO部10eの出力装置にプルーニング率11dを出力し表示させてもよい。
読取部10fは、記録媒体10hに記録されたデータやプログラムの情報を読み出すリーダの一例である。読取部10fは、記録媒体10hを接続可能又は挿入可能な接続端子又は装置を含んでよい。読取部10fとしては、例えば、USB(Universal Serial Bus)等に準拠したアダプタ、記録ディスクへのアクセスを行なうドライブ装置、SDカード等のフラッシュメモリへのアクセスを行なうカードリーダ等が挙げられる。なお、記録媒体10hにはプログラム10gが格納されてもよく、読取部10fが記録媒体10hからプログラム10gを読み出して記憶部10cに格納してもよい。
記録媒体10hとしては、例示的に、磁気/光ディスクやフラッシュメモリ等の非一時的なコンピュータ読取可能な記録媒体が挙げられる。磁気/光ディスクとしては、例示的に、フレキシブルディスク、CD(Compact Disc)、DVD(Digital Versatile Disc)、ブルーレイディスク、HVD(Holographic Versatile Disc)等が挙げられる。フラッシュメモリとしては、例示的に、USBメモリやSDカード等の半導体メモリが挙げられる。
上述したコンピュータ10のHW構成は例示である。従って、コンピュータ10内でのHWの増減(例えば任意のブロックの追加や削除)、分割、任意の組み合わせでの統合、又は、バスの追加若しくは削除等は適宜行なわれてもよい。例えば、サーバ1、1A及び1Bにおいて、IO部10e及び読取部10fの少なくとも一方は、省略されてもよい。
〔2〕その他
上述した実施形態並びに第1及び第2変形例に係る技術は、以下のように変形、変更して実施することができる。
例えば、図4、図29又は図33に示すサーバ1、1A又は1Bが備える取得部12、機械学習部13、算出部14、14A又は14B、並びに、出力部15は、併合してもよく、それぞれ分割してもよい。
また、例えば、図4、図29又は図33に示すサーバ1、1A又は1Bは、複数の装置がネットワークを介して互いに連携することにより、各処理機能を実現する構成であってもよい。一例として、サーバ1、1A又は1Bにおいて、取得部12及び出力部15はWebサーバ及びアプリケーションサーバ、機械学習部13及び算出部14、14A又は14Bはアプリケーションサーバ、メモリ部11はDBサーバ、等であってもよい。この場合、Webサーバ、アプリケーションサーバ及びDBサーバが、ネットワークを介して互いに連携することにより、サーバ1、1A又は1Bとしての処理機能を実現してもよい。
さらに、例えば、図16~図26を参照して説明した、concat部154を含むNNに対するゼロパディング処理を適用する手法は、図4、図29又は図33に示すサーバ1、1A又は1Bによるプルーニング処理への適用に限定されるものではない。例えば、ゼロパディング処理を適用する手法は、NNのレイヤごとにプルーニング率を決定する種々の手法に適用されてもよい。
〔3〕付記
以上の実施形態並びに第1及び第2変形例に関し、さらに以下の付記を開示する。
(付記1)
複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
処理をコンピュータに実行させる、機械学習プログラム。
(付記2)
前記第1の数は、前記要素削減後の前記複数の第1の層から出力される前記複数のテンソルのうちの、最大の要素数である、
付記1に記載の機械学習プログラム。
(付記3)
前記要素削減後の前記複数の第1の層のうちの、出力されるテンソルの要素数が前記第1の数である1以上の第1の層については、前記1以上の第1の層に対応付けられた1以上の第2の層のそれぞれにおける、前記パディングを行なう処理の実行を抑制する、
処理を前記コンピュータに実行させる、付記2に記載の機械学習プログラム。
(付記4)
前記第1の数は、前記複数の第1の層において要素を削減しない場合の要素数から、前記複数の第1の層において削除対象となる要素のうちの前記複数の第1の層の間で共通する第1のインデックスの要素の数、を減じた数であり、
前記パディングを行なう処理は、前記複数の第1の層のうちの少なくとも1つの第3の層で第2のインデックスの要素が削除対象とならない場合に、前記複数の第1の層のうちの前記第3の層以外の第4の層の前記第2のインデックスにゼロ行列を挿入する、処理を含む、
付記1に記載の機械学習プログラム。
(付記5)
前記演算処理は、concatenate演算であり、
前記複数の第1の層は、前記concatenate演算の直前の複数の層であり、
前記複数の第2の層は、ゼロパディング層である、
付記1~付記4のいずれか1項に記載の機械学習プログラム。
(付記6)
前記要素は、チャネル、重み、又は、ノードである、
付記1~付記5のいずれか1項に記載の機械学習プログラム。
(付記7)
複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
処理をコンピュータが実行する、機械学習方法。
(付記8)
前記第1の数は、前記要素削減後の前記複数の第1の層から出力される前記複数のテンソルのうちの、最大の要素数である、
付記7に記載の機械学習方法。
(付記9)
前記要素削減後の前記複数の第1の層のうちの、出力されるテンソルの要素数が前記第1の数である1以上の第1の層については、前記1以上の第1の層に対応付けられた1以上の第2の層のそれぞれにおける、前記パディングを行なう処理の実行を抑制する、
処理を前記コンピュータが実行する、付記8に記載の機械学習方法。
(付記10)
前記第1の数は、前記複数の第1の層において要素を削減しない場合の要素数から、前記複数の第1の層において削除対象となる要素のうちの前記複数の第1の層の間で共通する第1のインデックスの要素の数、を減じた数であり、
前記パディングを行なう処理は、前記複数の第1の層のうちの少なくとも1つの第3の層で第2のインデックスの要素が削除対象とならない場合に、前記複数の第1の層のうちの前記第3の層以外の第4の層の前記第2のインデックスにゼロ行列を挿入する、処理を含む、
付記7に記載の機械学習方法。
(付記11)
前記演算処理は、concatenate演算であり、
前記複数の第1の層は、前記concatenate演算の直前の複数の層であり、
前記複数の第2の層は、ゼロパディング層である、
付記7~付記10のいずれか1項に記載の機械学習方法。
(付記12)
前記要素は、チャネル、重み、又は、ノードである、
付記7~付記11のいずれか1項に記載の機械学習方法。
(付記13)
複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
制御部を備える、情報処理装置。
(付記14)
前記第1の数は、前記要素削減後の前記複数の第1の層から出力される前記複数のテンソルのうちの、最大の要素数である、
付記13に記載の情報処理装置。
(付記15)
前記制御部は、前記要素削減後の前記複数の第1の層のうちの、出力されるテンソルの要素数が前記第1の数である1以上の第1の層については、前記1以上の第1の層に対応付けられた1以上の第2の層のそれぞれにおける、前記パディングを行なう処理の実行を抑制する、
付記14に記載の情報処理装置。
(付記16)
前記第1の数は、前記複数の第1の層において要素を削減しない場合の要素数から、前記複数の第1の層において削除対象となる要素のうちの前記複数の第1の層の間で共通する第1のインデックスの要素の数、を減じた数であり、
前記制御部は、前記パディングを行なう処理において、前記複数の第1の層のうちの少なくとも1つの第3の層で第2のインデックスの要素が削除対象とならない場合に、前記複数の第1の層のうちの前記第3の層以外の第4の層の前記第2のインデックスにゼロ行列を挿入する、
付記13に記載の情報処理装置。
(付記17)
前記演算処理は、concatenate演算であり、
前記複数の第1の層は、前記concatenate演算の直前の複数の層であり、
前記複数の第2の層は、ゼロパディング層である、
付記13~付記16のいずれか1項に記載の情報処理装置。
(付記18)
前記要素は、チャネル、重み、又は、ノードである、
付記13~付記17のいずれか1項に記載の情報処理装置。
1、1A、1B サーバ
10 コンピュータ
11 メモリ部
11a 未学習モデル
11b 機械学習用データ
11c 機械学習済モデル
11d プルーニング率
11e 軽量化済モデル
12 取得部
13 機械学習部
14、14A、14B プルーニング率算出部(算出部)
14a、14a’、14a” 閾値算出部
14b、14b’、14b” 決定部
15 出力部
16 制御部

Claims (7)

  1. 複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
    前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
    前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
    処理をコンピュータに実行させる、機械学習プログラム。
  2. 前記第1の数は、前記要素削減後の前記複数の第1の層から出力される前記複数のテンソルのうちの、最大の要素数である、
    請求項1に記載の機械学習プログラム。
  3. 前記要素削減後の前記複数の第1の層のうちの、出力されるテンソルの要素数が前記第1の数である1以上の第1の層については、前記1以上の第1の層に対応付けられた1以上の第2の層のそれぞれにおける、前記パディングを行なう処理の実行を抑制する、
    処理を前記コンピュータに実行させる、請求項2に記載の機械学習プログラム。
  4. 前記第1の数は、前記複数の第1の層において要素を削減しない場合の要素数から、前記複数の第1の層において削除対象となる要素のうちの前記複数の第1の層の間で共通する第1のインデックスの要素の数、を減じた数であり、
    前記パディングを行なう処理は、前記複数の第1の層のうちの少なくとも1つの第3の層で第2のインデックスの要素が削除対象とならない場合に、前記複数の第1の層のうちの前記第3の層以外の第4の層の前記第2のインデックスにゼロ行列を挿入する、処理を含む、
    請求項1に記載の機械学習プログラム。
  5. 前記演算処理は、concatenate演算であり、
    前記複数の第1の層は、前記concatenate演算の直前の複数の層であり、
    前記複数の第2の層は、ゼロパディング層である、
    請求項1~請求項4のいずれか1項に記載の機械学習プログラム。
  6. 複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
    前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
    前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
    処理をコンピュータが実行する、機械学習方法。
  7. 複数の層を含むニューラルネットワークの機械学習済モデルにおける、前記複数の層の各々の要素の削減割合を取得し、
    前記ニューラルネットワークが、入力される複数のテンソルに対する所定の演算結果のテンソルを出力する演算処理を含む場合であって、前記演算処理に、前記演算処理の前段層からのテンソルと、前記前段層よりも前の層であって前記演算処理にショートカット結合される1以上の前記層からの1以上のテンソルとが入力される場合、前記前段層及び前記1以上の層である複数の第1の層の各々と前記演算処理との間に、ゼロパディング処理を行なう第2の層をそれぞれ挿入し、
    前記複数の第1の層の各々の削減割合に応じた要素削減後の前記複数の第1の層から前記演算処理に入力される複数のテンソルのそれぞれの要素数が、いずれも第1の数となるように、前記複数の第1の層に対応付けられた複数の前記第2の層のそれぞれにおいて1個以上のゼロ行列によるパディングを行なう、
    制御部を備える、情報処理装置。
JP2022033798A 2022-03-04 2022-03-04 機械学習プログラム、機械学習方法、及び、情報処理装置 Pending JP2023129041A (ja)

Priority Applications (4)

Application Number Priority Date Filing Date Title
JP2022033798A JP2023129041A (ja) 2022-03-04 2022-03-04 機械学習プログラム、機械学習方法、及び、情報処理装置
US17/984,285 US20230281440A1 (en) 2022-03-04 2022-11-10 Computer-readable recording medium having stored therein machine learning program, method for machine learning, and information processing apparatus
EP22209303.1A EP4239529A1 (en) 2022-03-04 2022-11-24 Machine learning program, method for machine learning, and information processing apparatus
CN202211533974.7A CN116702857A (zh) 2022-03-04 2022-11-30 计算机可读记录介质、机器学习方法和信息处理设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2022033798A JP2023129041A (ja) 2022-03-04 2022-03-04 機械学習プログラム、機械学習方法、及び、情報処理装置

Publications (1)

Publication Number Publication Date
JP2023129041A true JP2023129041A (ja) 2023-09-14

Family

ID=84361627

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2022033798A Pending JP2023129041A (ja) 2022-03-04 2022-03-04 機械学習プログラム、機械学習方法、及び、情報処理装置

Country Status (4)

Country Link
US (1) US20230281440A1 (ja)
EP (1) EP4239529A1 (ja)
JP (1) JP2023129041A (ja)
CN (1) CN116702857A (ja)

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11200495B2 (en) 2017-09-08 2021-12-14 Vivante Corporation Pruning and retraining method for a convolution neural network

Also Published As

Publication number Publication date
US20230281440A1 (en) 2023-09-07
EP4239529A1 (en) 2023-09-06
CN116702857A (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
JP6794593B2 (ja) 多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、及び記憶媒体
JP7110240B2 (ja) ニューラルネットワーク分類
JP7370385B2 (ja) 量子回路上の論理キュービットのマッピング
US20200320428A1 (en) Fairness improvement through reinforcement learning
US11954418B2 (en) Grouping of Pauli strings using entangled measurements
US11455523B2 (en) Risk evaluation method, computer-readable recording medium, and information processing apparatus
JP2023523029A (ja) 画像認識モデル生成方法、装置、コンピュータ機器及び記憶媒体
EP4170549A1 (en) Machine learning program, method for machine learning, and information processing apparatus
JP6816481B2 (ja) 削減条件特定方法、削減条件特定プログラム及び削減条件特定装置
JP7276436B2 (ja) 学習装置、学習方法、コンピュータプログラム及び記録媒体
US11636175B2 (en) Selection of Pauli strings for Variational Quantum Eigensolver
CN111385601B (zh) 一种视频审核的方法、系统及设备
US11971796B2 (en) Goal seek analysis based on status models
KR20210111677A (ko) 뉴럴 네트워크의 클리핑 방법, 뉴럴 네트워크의 컨벌루션 계산 방법 및 그 방법을 수행하기 위한 전자 장치
TWI758223B (zh) 具有動態最小批次尺寸之運算方法,以及用於執行該方法之運算系統及電腦可讀儲存媒體
JP2023129041A (ja) 機械学習プログラム、機械学習方法、及び、情報処理装置
US11410036B2 (en) Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program
CN111985631B (zh) 信息处理设备、信息处理方法及计算机可读记录介质
US20210232891A1 (en) Neural network model compression with structured weight unification
JP2023077818A (ja) 機械学習プログラム、機械学習方法、及び、情報処理装置
US20240185072A1 (en) Computer-readable recording medium having stored therein machine learning program, method for machine learning, and information processing apparatus
US20230409667A1 (en) Selection of pauli strings for variational quantum eigensolver
US20210081783A1 (en) Information processing apparatus, method of processing information, and non-transitory computer-readable storage medium for storing information processing program
JP2022015275A (ja) 設定管理装置、設定管理方法、及び、設定管理プログラム
CN114492835A (zh) 一种特征填充方法、装置、计算设备及介质