(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公表特許公報(A)
(11)【公表番号】
(43)【公表日】2022-12-19
(54)【発明の名称】微細構造化重みプルーニング・重み統合によるニューラルネットワークモデルの圧縮のための方法、装置およびコンピュータプログラム
(51)【国際特許分類】
G06N 3/08 20060101AFI20221212BHJP
【FI】
G06N3/08 120
【審査請求】有
【予備審査請求】未請求
(21)【出願番号】P 2022523336
(86)(22)【出願日】2021-06-15
(85)【翻訳文提出日】2022-04-19
(86)【国際出願番号】 US2021037425
(87)【国際公開番号】W WO2021257558
(87)【国際公開日】2021-12-23
(32)【優先日】2020-06-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-06-17
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2020-06-23
(33)【優先権主張国・地域又は機関】US
(32)【優先日】2021-05-13
(33)【優先権主張国・地域又は機関】US
(81)【指定国・地域】
【公序良俗違反の表示】
(特許庁注:以下のものは登録商標)
(71)【出願人】
【識別番号】520353802
【氏名又は名称】テンセント・アメリカ・エルエルシー
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100150197
【氏名又は名称】松尾 直樹
(72)【発明者】
【氏名】ウェイ・ジアン
(72)【発明者】
【氏名】ウェイ・ワン
(72)【発明者】
【氏名】シェン・リン
(72)【発明者】
【氏名】シャン・リュウ
(57)【要約】
ニューラルネットワークモデルの圧縮の方法は、少なくとも1つのプロセッサによって実行され、入力ニューラルネットワークおよび入力マスクを受信するステップと、ディープニューラルネットワークを使用して、入力ニューラルネットワークのパラメータを削減するステップであって、ディープニューラルネットワークは、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択するステップと、選択されたプルーニング微細構造ブロックに基づいて、入力重みをプルーニングするステップと、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択するステップと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合するステップとによって訓練される、削減するステップとを含む。
【特許請求の範囲】
【請求項1】
ニューラルネットワークモデルの圧縮の方法であって、前記方法は、少なくとも1つのプロセッサによって実行され、前記方法は、
入力ニューラルネットワークおよび入力マスクを受信するステップと、
ディープニューラルネットワークを使用して、前記入力ニューラルネットワークのパラメータを削減するステップであって、前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記ディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択するステップと、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力重みをプルーニングするステップと、
前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから、統合される統合微細構造ブロックを選択するステップと、
前記ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、前記選択された統合微細構造ブロックに基づいて、前記プルーニングされた入力重みの前記複数のブロックのうちの1つまたは複数の中で複数の重みを統合するステップとによって訓練される、削減する前記ステップと、
前記入力ニューラルネットワークと、前記ディープニューラルネットワークの前記プルーニングされて統合された入力重みとに基づいて、前記削減されたパラメータを有する出力ニューラルネットワークを取得するステップとを含む、方法。
【請求項2】
前記ディープニューラルネットワークは、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力マスクと、前記入力重みの各々がプルーニングされるかどうかを示すプルーニングマスクとを更新するステップと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新されたプルーニングマスクに基づいて、前記プルーニングされた入力重みと前記更新された入力マスクとを更新するステップによってさらに訓練される、請求項1に記載の方法。
【請求項3】
前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記入力重みを再形成するステップと、
前記再形成された入力重みを前記入力重みの前記複数のブロックに分割するステップと、
前記再形成された入力重みが分割される前記複数のブロックのうちの1つまたは複数の中の複数の重みを前記入力重みの間で統合するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力マスクと、前記入力重みの各々が統合されているかどうかを示す統合マスクとを更新するステップと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新された統合マスクに基づいて、前記更新された入力マスクと、前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合された前記入力重みとを更新するステップとによってさらに訓練される、請求項1に記載の方法。
【請求項4】
前記更新された入力マスクおよび前記入力重みを更新する前記ステップは、
前記入力重みが統合され、前記更新された入力マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減するステップと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定するステップと、
前記決定された損失を最小化するために、前記決定された勾配および前記更新された統合マスクに基づいて、前記プルーニングされた入力重みおよび前記更新された入力マスクを更新するステップとを含む、請求項3に記載の方法。
【請求項5】
前記ディープニューラルネットワークは、前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され、
前記入力マスクを更新する前記ステップは、プルーニング統合マスクを取得するために、前記選択されたプルーニング微細構造ブロックおよび前記選択された統合微細構造ブロックに基づいて、前記入力マスクを更新するステップを含み、
前記プルーニングされた入力重みおよび前記更新された入力マスクを更新する前記ステップは、前記ディープニューラルネットワークの前記損失を最小化するために、前記更新されたプルーニングマスクおよび前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新するステップを含む、請求項2に記載の方法。
【請求項6】
前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新する前記ステップは、
前記プルーニングされて統合された入力重みが、前記プルーニング統合マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減するステップと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定するステップと、
前記決定された損失を最小化するために、前記決定された勾配、前記更新されたプルーニングマスク、および前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新するステップとを含む、請求項5に記載の方法。
【請求項7】
前記プルーニング微細構造ブロックは、各々の反復に対してプルーニングされる前記入力重みの所定のプルーニング比率に基づいて、前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから選択される、請求項1に記載の方法。
【請求項8】
ニューラルネットワークモデルの圧縮のための装置であって、前記装置は、
プログラムコードを格納するように構成された少なくとも1つのメモリと、
前記プログラムコードを読み取り、前記プログラムコードによって指示されるように動作するように構成された少なくとも1つのプロセッサとを含み、前記プログラムコードは、
前記少なくとも1つのプロセッサに入力ニューラルネットワークおよび入力マスクを受信させるように構成された受信コードと、
ディープニューラルネットワークによって前記少なくとも1つのプロセッサに前記入力ニューラルネットワークのパラメータを削減させるように構成された削減コードであって、前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記ディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択することと、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力重みをプルーニングすることと、
前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから、統合される統合微細構造ブロックを選択することと、
前記ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、前記選択された統合微細構造ブロックに基づいて、前記プルーニングされた入力重みの前記複数のブロックのうちの1つまたは複数の中で複数の重みを統合することとによって訓練される、削減コードと、
前記入力ニューラルネットワークと、前記ディープニューラルネットワークの前記プルーニングされて統合された入力重みとに基づいて、前記削減されたパラメータを有する出力ニューラルネットワークを前記少なくとも1つのプロセッサに出力させるように構成された取得コードとを含む、装置。
【請求項9】
前記ディープニューラルネットワークは、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力マスクと、前記入力重みの各々がプルーニングされるかどうかを示すプルーニングマスクとを更新することと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新されたプルーニングマスクに基づいて、前記プルーニングされた入力重みと前記更新された入力マスクとを更新することによってさらに訓練される、請求項8に記載の装置。
【請求項10】
前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記入力重みを再形成することと、
前記再形成された入力重みを前記入力重みの前記複数のブロックに分割することと、
前記再形成された入力重みが分割される前記複数のブロックのうちの1つまたは複数の中の複数の重みを前記入力重みの間で統合することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力マスクと、前記入力重みの各々が統合されているかどうかを示す統合マスクとを更新することと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新された統合マスクに基づいて、前記更新された入力マスクと、前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合された前記入力重みとを更新することとによってさらに訓練される、請求項8に記載の装置。
【請求項11】
前記更新された入力マスクおよび前記入力重みを更新することは、
前記入力重みが統合され、前記更新された入力マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定することと、
前記決定された損失を最小化するために、前記決定された勾配および前記更新された統合マスクに基づいて、前記プルーニングされた入力重みおよび前記更新された入力マスクを更新することとを含む、請求項10に記載の装置。
【請求項12】
前記ディープニューラルネットワークは、前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され、
前記入力マスクを更新することは、プルーニング統合マスクを取得するために、前記選択されたプルーニング微細構造ブロックおよび前記選択された統合微細構造ブロックに基づいて、前記入力マスクを更新することを含み、
前記プルーニングされた入力重みおよび前記更新された入力マスクを更新することは、前記ディープニューラルネットワークの前記損失を最小化するために、前記更新されたプルーニングマスクおよび前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することを含む、請求項9に記載の装置。
【請求項13】
前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することは、
前記プルーニングされて統合された入力重みが、前記プルーニング統合マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定することと、
前記決定された損失を最小化するために、前記決定された勾配、前記更新されたプルーニングマスク、および前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することとを含む、請求項12に記載の装置。
【請求項14】
前記プルーニング微細構造ブロックは、各々の反復に対してプルーニングされる前記入力重みの所定のプルーニング比率に基づいて、前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから選択される、請求項8に記載の装置。
【請求項15】
ニューラルネットワークモデルの圧縮のために少なくとも1つのプロセッサによって実行されるとき、
入力ニューラルネットワークおよび入力マスクを受信することと、
ディープニューラルネットワークを使用して、前記入力ニューラルネットワークのパラメータを削減することであって、前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記ディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択することと、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力重みをプルーニングすることと、
前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから、統合される統合微細構造ブロックを選択することと、
前記ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、前記選択された統合微細構造ブロックに基づいて、前記プルーニングされた入力重みの前記複数のブロックのうちの1つまたは複数の中で複数の重みを統合することとによって訓練される、削減することと、
前記入力ニューラルネットワークと、前記ディープニューラルネットワークの前記プルーニングされて統合された入力重みとに基づいて、前記削減されたパラメータを有する出力ニューラルネットワークを取得することとを前記少なくとも1つのプロセッサに引き起こさせる命令を格納する非一時的なコンピュータ可読媒体。
【請求項16】
前記ディープニューラルネットワークは、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力マスクと、前記入力重みの各々がプルーニングされるかどうかを示すプルーニングマスクとを更新することと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新されたプルーニングマスクに基づいて、前記プルーニングされた入力重みと前記更新された入力マスクとを更新することによってさらに訓練される、請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項17】
前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記入力重みを再形成することと、
前記再形成された入力重みを前記入力重みの前記複数のブロックに分割することと、
前記再形成された入力重みが分割される前記複数のブロックのうちの1つまたは複数の中の複数の重みを前記入力重みの間で統合することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力マスクと、前記入力重みの各々が統合されているかどうかを示す統合マスクとを更新することと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新された統合マスクに基づいて、前記更新された入力マスクと、前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合された前記入力重みとを更新することとによってさらに訓練される、請求項15に記載の非一時的なコンピュータ可読媒体。
【請求項18】
前記更新された入力マスクおよび前記入力重みを更新することは、
前記入力重みが統合され、前記更新された入力マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定することと、
前記決定された損失を最小化するために、前記決定された勾配および前記更新された統合マスクに基づいて、前記プルーニングされた入力重みおよび前記更新された入力マスクを更新することとを含む、請求項17に記載の非一時的なコンピュータ可読媒体。
【請求項19】
前記ディープニューラルネットワークは、前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され、
前記入力マスクを更新することは、プルーニング統合マスクを取得するために、前記選択されたプルーニング微細構造ブロックおよび前記選択された統合微細構造ブロックに基づいて、前記入力マスクを更新することを含み、
前記プルーニングされた入力重みおよび前記更新された入力マスクを更新することは、前記ディープニューラルネットワークの前記損失を最小化するために、前記更新されたプルーニングマスクおよび前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することを含む、請求項16に記載の非一時的なコンピュータ可読媒体。
【請求項20】
前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することは、
前記プルーニングされて統合された入力重みが、前記プルーニング統合マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定することと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定することと、
前記決定された損失を最小化するために、前記決定された勾配、前記更新されたプルーニングマスク、および前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新することとを含む、請求項19に記載の非一時的なコンピュータ可読媒体。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、米国特許商標庁に、2020年6月17日に出願された米国仮特許出願第63/040,216号、2020年6月17日に出願された米国仮特許出願第63/040,238号、および2020年6月23日に出願された米国仮特許出願第63/043,082号からの優先権を主張する、2021年5月13日に出願された米国特許出願第17/319,313号に対する優先権の利益を主張し、それらの開示は全体として参照により本明細書に組み込まれる。
【背景技術】
【0002】
セマンティック分類、ターゲットの検出/認識、ターゲット追跡、ビデオ品質の向上など、広範囲のビデオアプリケーションでディープニューラルネットワーク(DNNs:Deep Neural Networks)を成功させるには、DNNモデルを圧縮する必要がある。したがって、MPEG(Motion Picture Experts Group)は、ストレージと計算の両方を節約するためにDNNモデルをエンコードするために使用されるニューラルネットワーク標準(NNR:Neural Network standard)のコード化表現に積極的に取り組んでいる。
【発明の概要】
【課題を解決するための手段】
【0003】
実施形態によれば、ニューラルネットワークモデル圧縮の方法は、少なくとも1つのプロセッサによって実行され、方法は、入力ニューラルネットワークおよび入力マスクを受信するステップと、ディープニューラルネットワークを使用して、入力ニューラルネットワークのパラメータを削減するステップであって、ディープニューラルネットワークは、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択するステップと、選択されたプルーニング微細構造ブロックに基づいて、入力重みをプルーニングするステップと、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択するステップと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合するステップとによって訓練される、削減するステップとを含む。この方法はさらに、入力ニューラルネットワークと、ディープニューラルネットワークの、プルーニングされて統合された入力重みとに基づいて、削減されたパラメータを有する出力ニューラルネットワークを取得するステップを含む。
【0004】
実施形態によれば、ニューラルネットワークモデルの圧縮のための装置は、プログラムコードを格納するように構成された少なくとも1つのメモリと、プログラムコードを読み取り、プログラムコードによって指示されるように動作するように構成された少なくとも1つのプロセッサとを含む。プログラムコードは、少なくとも1つのプロセッサに入力ニューラルネットワークおよび入力マスクを受信させるように構成された受信コードと、ディープニューラルネットワークによって少なくとも1つのプロセッサに入力ニューラルネットワークのパラメータを削減させるように構成された削減コードであって、ディープニューラルネットワークは、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択することと、選択されたプルーニング微細構造ブロックに基づいて、入力重みをプルーニングすることと、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択することと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合することとによって訓練される、削減コードとを含む。プログラムコードはさらに、入力ニューラルネットワークと、ディープニューラルネットワークの、プルーニングされて統合された入力重みとに基づいて、削減されたパラメータを有する出力ニューラルネットワークを少なくとも1つのプロセッサに出力させるように構成された取得コードを含む。
【0005】
実施形態によれば、非一時的なコンピュータ可読媒体は、ニューラルネットワークモデルの圧縮のために少なくとも1つのプロセッサによって実行されるとき、入力ニューラルネットワークおよび入力マスクを受信することと、ディープニューラルネットワークを使用して、入力ニューラルネットワークのパラメータを削減することであって、ディープニューラルネットワークは、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択することと、選択されたプルーニング微細構造ブロックに基づいて、入力重みをプルーニングすることと、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択することと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合することとによって訓練される、削減することとを少なくとも1つのプロセッサに引き起こさせる命令を格納する。命令は、少なくとも1つのプロセッサによって実行されるとき、入力ニューラルネットワークと、ディープニューラルネットワークの、プルーニングされて統合された入力重みとに基づいて、削減されたパラメータを有する出力ニューラルネットワークを取得することを少なくとも1つのプロセッサに引き起こさせる。
【図面の簡単な説明】
【0006】
【
図1】本明細書で説明されている方法、装置、およびシステムが実施され得る、実施形態に係る環境の図である。
【
図2】
図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。
【
図3】実施形態に係る、ニューラルネットワークモデル圧縮のためのシステムの機能ブロック図である。
【
図4A】実施形態に係る、微細構造化された重みプルーニングを伴うニューラルネットワークモデル圧縮のための訓練装置の機能ブロック図である。
【
図4B】他の実施形態に係る、微細構造化された重みプルーニングを伴うニューラルネットワークモデル圧縮のための訓練装置の機能ブロック図である。
【
図4C】さらに他の実施形態に係る、重み統合を伴うニューラルネットワークモデル圧縮のための訓練装置の機能ブロック図である。
【
図4D】さらに他の実施形態に係る、微細構造化された重みのプルーニングおよび重みの統合を伴うニューラルネットワークモデルの圧縮のための訓練装置の機能ブロック図である。
【
図4E】さらに他の実施形態に係る、微細構造化された重みのプルーニングおよび重みの統合を伴うニューラルネットワークモデルの圧縮のための訓練装置の機能ブロック図である。
【
図5】実施形態に係る、微細構造化された重みのプルーニングおよび重みの統合を伴うニューラルネットワークモデルの圧縮の方法のフローチャートである。
【
図6】実施形態に係る、微細構造化された重みのプルーニングおよび重みの統合を伴うニューラルネットワークモデルの圧縮のための装置のブロック図である。
【発明を実施するための形態】
【0007】
本開示は、ニューラルネットワークモデルの圧縮に関する。より具体的には、本明細書に記載の方法および装置は、微細構造化された重みのプルーニングおよび重みの統合を伴うニューラルネットワークモデルの圧縮に関する。
【0008】
本明細書に記載の実施形態は、反復ネットワーク再訓練/微調整フレームワークにおいて微細構造化された重みプルーニング正則化を使用することによってDNNモデルを圧縮するための方法および装置を含む。プルーニング損失は、反復的な再訓練/微調整プロセスを通じて、元のネットワーク訓練ターゲットと共同で最適化される。
【0009】
本明細書に記載の実施形態は、反復ネットワーク再訓練/微調整フレームワークにおいて構造化された統合正則化を使用することによってDNNモデルを圧縮するための方法および装置をさらに含む。重み統合損失には、圧縮率損失、統合歪み損失、および計算速度損失が含まれる。重み損失は、反復的な再訓練/微調整プロセスを通じて、元のネットワーク訓練ターゲットと共同で最適化される。
【0010】
本明細書に記載の実施形態は、反復ネットワーク再訓練/微調整フレームワークにおいて微細構造化結合重みプルーニング・重み統合正則化を使用することによってDNNモデルを圧縮するための方法および装置をさらに含む。プルーニング損失と統合損失は、反復的な再訓練/微調整プロセスを通じて、元のネットワーク訓練ターゲットと共同で最適化される。
【0011】
コンパクトなDNNモデルを学習するためのいくつかのアプローチが存在する。ターゲットは重要でない重み係数を取り除くことであり、重み係数の値が小さいほど重要性が低くなり、これらの重みを取り除くことで予測パフォーマンスへの影響が少なくなると想定される。この目標を追求するために、いくつかのネットワークプルーニング法が提案されている。例えば、非構造化重みプルーニング法は、スパース性を促進する正則化項をネットワーク訓練ターゲットに追加し、非構造的に分散されたゼロ値の重みを取得し、これにより、モデルサイズを縮小できるが、推論時間を短縮することはできない。構造化重みプルーニング法は、行または列など、重み構造全体を意図的にプルーニングするように強制する。取り除かれた行または列は推論計算に関与せず、モデルサイズと推論時間の両方を削減できる。ただし、行および列のような重み構造全体を取り除くと、元のDNNモデルのパフォーマンスが大幅に低下する可能性がある。
【0012】
いくつかのネットワークプルーニング法は、スパース性を促進する正則化項をネットワーク訓練ターゲットに追加する。非構造化重みプルーニング法は、スパース性を促進する正則化項をネットワーク訓練ターゲットに追加し、非構造的に分散されたゼロ値の重みを取得する。構造化重みプルーニング法は、行または列など、選択された重み構造を意図的にプルーニングするように強制する。DNNモデルの圧縮の観点から、コンパクトなネットワークモデルを学習した後、重み係数は、量子化とそれに続くエントロピーコーディングによってさらに圧縮できる。このようなさらなる圧縮プロセスにより、モバイルデバイスやチップなどへのモデル展開に使用されるDNNモデルのストレージサイズを大幅に削減できる。
【0013】
本明細書に記載の実施形態は、元のDNNモデルの予測パフォーマンスをほとんど犠牲にすることなく、モデルサイズを縮小し、推論計算を加速することを目的とした微細構造化重みプルーニングのための方法および装置を含む。反復ネットワーク再訓練/精緻化 フレームワークを使用して、元の訓練ターゲットと重みプルーニング損失を共同で最適化する。重み係数は、基礎となるハードウェア設計と整合する小さな微細構造に従ってプルーニングされるため、モデルサイズを大幅に縮小でき、元のターゲット予測パフォーマンスを大幅に維持でき、推論計算を大幅に加速することができる。本方法および装置は、元の事前訓練された高密度DNNモデルを圧縮するために適用することができる。また、追加の処理モジュールとして使用して、他の非構造化または構造化プルーニングアプローチによって事前にプルーニングされたスパースなDNNモデルをさらに圧縮することもできる。
【0014】
本明細書に記載の実施形態は、後の圧縮プロセスにおける圧縮効率を改善することを目的とした、構造化重み統合正則化のための方法および装置をさらに含む。反復ネットワーク再訓練/精緻化フレームワークは、元の訓練ターゲットと、圧縮率損失、統合歪み損失、および計算速度損失を含む重み統合損失とを、学習したネットワーク重み係数が、元のターゲットパフォーマンスを維持するように、さらなる圧縮に適するように、および学習した重み係数を使用する計算を高速化できるように、共同で最適化するために使用される。本方法および装置は、元の事前訓練されたDNNモデルを圧縮するために適用できる。それらは、プルーニングされたDNNモデルをさらに圧縮するための追加の処理モジュールとしても使用できる。
【0015】
本明細書に記載の実施形態は、後の圧縮プロセスにおける圧縮効率を改善し、ならびに推論計算を加速することを目的とした、結合微細構造化重みプルーニング・重み統合のための方法および装置を含む。反復ネットワーク再訓練/精緻化フレームワークは、元の訓練ターゲットと、重みプルーニング損失および重み統合損失を共同で最適化するために使用される。重み係数は小さな微細構造に従ってプルーニングまたは統合され、学習された重み係数は元のターゲットパフォーマンスを維持し、さらなる圧縮に適しており、学習された重み係数を使用する計算を高速化できる。本方法および装置は、元の事前訓練された高密度DNNモデルを圧縮するために適用することができる。また、追加の処理モジュールとして使用して、他の非構造化または構造化プルーニングアプローチによって事前にプルーニングされたスパースなDNNモデルをさらに圧縮することもできる。
【0016】
図1は、実施形態による、本明細書に記載の方法、装置、およびシステムを実装可能な環境100の図である。
【0017】
図1に示すように、環境100は、ユーザデバイス110、プラットフォーム120、およびネットワーク130を含んでもよい。環境100のデバイスは、有線接続、無線接続、または有線接続と無線接続との組み合わせを介して相互接続してもよい。
【0018】
ユーザデバイス110は、プラットフォーム120に関連付けられた情報を受信、生成、記憶、処理、および/または提供することができる1つまたは複数のデバイスを含む。例えば、ユーザデバイス110は、コンピューティングデバイス(例えば、デスクトップコンピュータ、ラップトップコンピュータ、タブレットコンピュータ、ハンドヘルドコンピュータ、スマートスピーカ、サーバなど)、携帯電話(例えば、スマートフォン、無線電話など)、ウェアラブルデバイス(例えば、スマートグラスまたはスマートウォッチ)、または同様のデバイスなどであってもよい。いくつかの実装形態では、ユーザデバイス110は、プラットフォーム120から情報を受信し、および/またはプラットフォームに情報を送信してもよい。
【0019】
プラットフォーム120は、本明細書の他の箇所に記載されるような1つまたは複数のデバイスを含む。いくつかの実装形態では、プラットフォーム120は、クラウドサーバまたはクラウドサーバ群を含んでもよい。いくつかの実装形態では、プラットフォーム120は、ソフトウェアコンポーネントがスワップインまたはスワップアウトされ得るようにモジュール式に設計されてもよい。したがって、プラットフォーム120は、異なる用途向けに、容易におよび/または迅速に再構築されてもよい。
【0020】
いくつかの実装形態では、図示のように、プラットフォーム120は、クラウドコンピューティング環境122下で動作してもよい。特に、本明細書に記載の実装形態は、プラットフォーム120がクラウドコンピューティング環境122下で動作するものとして説明されているが、いくつかの実装形態では、プラットフォーム120は、クラウドベースでなくてもよく(すなわち、クラウドコンピューティング環境の外部で実装されてもよい)、または部分的にクラウドベースであってもよい。
【0021】
クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する環境を含む。クラウドコンピューティング環境122は、プラットフォーム120のホストとして機能する1つまたは複数のシステムおよび/または1つまたは複数のデバイスの物理的位置および構成に関するエンドユーザ(例えば、ユーザデバイス110)の知識を必要としない計算、ソフトウェア、データアクセス、ストレージなどのサービスを提供してもよい。図示のように、クラウドコンピューティング環境122は、コンピューティングリソース124のグループ(「コンピューティングリソース124」と総称し、個別に「コンピューティングリソース124」と呼ぶ)を含んでもよい。
【0022】
コンピューティングリソース124は、1つまたは複数のパーソナルコンピュータ、ワークステーションコンピュータ、サーバデバイス、または他のタイプの計算および/または通信デバイスを含む。いくつかの実装形態では、コンピューティングリソース124は、プラットフォーム120のホストとして機能してもよい。クラウドリソースは、コンピューティングリソース124で実行される計算インスタンス、コンピューティングリソース124で提供される記憶デバイス、コンピューティングリソース124によって提供されるデータ転送デバイスなどを含んでもよい。いくつかの実装形態では、コンピューティングリソース124は、有線接続、無線接続、または有線接続と無線接続との組み合わせを介して他のコンピューティングリソース124と通信してもよい。
【0023】
図1にさらに示すように、コンピューティングリソース124は、1つまたは複数のアプリケーション(「APP」)124-1、1つまたは複数の仮想マシン(「VM」)124-2、仮想化ストレージ(「VS」)124-3、1つまたは複数のハイパーバイザ(「HYP」)124-4などのクラウドリソース群を含む。
【0024】
アプリケーション124-1は、ユーザデバイス110および/またはプラットフォーム120に提供、またはユーザデバイス110および/またはプラットフォーム120によってアクセスされてもよい1つまたは複数のソフトウェアアプリケーションを含む。アプリケーション124-1は、ユーザデバイス110にソフトウェアアプリケーションをインストールし、ソフトウェアアプリケーション実行する必要性を排除してもよい。例えば、アプリケーション124-1は、プラットフォーム120に関連付けられたソフトウェアおよび/またはクラウドコンピューティング環境122を介して提供可能な任意の他のソフトウェアを含んでもよい。いくつかの実装形態では、1つのアプリケーション124-1は、仮想マシン124-2を介して、1つまたは複数の他のアプリケーション124-1との間で情報を送受信してもよい。
【0025】
仮想マシン124-2は、物理マシンのようにプログラムを実行するマシン(例えば、コンピュータ)のソフトウェア実装を含む。仮想マシン124-2は、仮想マシン124-2による用途および任意の実マシンに対する対応度に応じて、システム仮想マシンまたはプロセス仮想マシンのいずれかであってもよい。システム仮想マシンは、完全なオペレーティングシステム(「OS」)の実行をサポートする完全なシステムプラットフォームを提供してもよい。プロセス仮想マシンは、単一のプログラムを実行してもよく、単一のプロセスをサポートしてもよい。いくつかの実装形態では、仮想マシン124-2は、ユーザ(例えば、ユーザデバイス110)に代わって動作してもよく、データ管理、同期、または長期間のデータ転送などのクラウドコンピューティング環境122の基盤を管理してもよい。
【0026】
仮想化ストレージ124-3は、1つまたは複数のストレージシステムおよび/または1つまたは複数のデバイスを含み、1つまたは複数のストレージシステムおよび/または1つまたは複数のデバイスは、コンピューティングリソース124のストレージシステムまたはデバイス内で仮想化技術を使用する。いくつかの実装形態では、ストレージシステムのコンテキスト内で、仮想化のタイプは、ブロック仮想化およびファイル仮想化を含んでもよい。ブロック仮想化は、ストレージシステムが物理記憶または異種構造に関係なくにアクセスされ得るような、物理記憶からの論理記憶の抽象化(または分離)を指し得る。分離により、ストレージシステムの管理者がエンドユーザのためにストレージを管理する方法の柔軟性が可能になり得る。ファイル仮想化は、ファイルレベルでアクセスされるデータとファイルが物理的に格納される場所との間の依存関係を排除し得る。これにより、ストレージ使用の最適化、サーバ統合、および/またはスムーズなファイル移行の性能が可能になり得る。
【0027】
ハイパーバイザ124-4は、複数のオペレーティングシステム(例えば、「ゲストオペレーティングシステム」)をコンピューティングリソース124などのホストコンピュータ上で同時に実行できるハードウェア仮想化技術を提供してもよい。ハイパーバイザ124-4は、仮想オペレーティングプラットフォームをゲストオペレーティングシステムに提供してもよく、ゲストオペレーティングシステムの実行を管理してもよい。様々なオペレーティングシステムの複数のインスタンスが、仮想化されたハードウェアリソースを共用し得る。
【0028】
ネットワーク130は、1つまたは複数の有線および/または無線ネットワークを含む。例えば、ネットワーク130は、セルラーネットワーク(例えば、第5世代(Fifth Generation:5G)ネットワーク、ロングタームエボリューション(Long-Term Evolution:LTE)ネットワーク、第3世代(Third Generation:3G)ネットワーク、符号分割多元接続(Code Division Multiple Access:CDMA)ネットワークなど)、公衆陸上移動体ネットワーク(Public Land Mobile Network:PLMN)、ローカルエリアネットワーク(Local Area Network:LAN)、ワイドエリアネットワーク(Wide Area Network:WAN)、メトロポリタンエリアネットワーク(Metropolitan Area Network:MAN)、電話ネットワーク(例えば、公衆交換電話網(Public Switched Telephone Network:PSTN))、プライベートネットワーク、アドホックネットワーク、イントラネット、インターネット、光ファイバベースのネットワークなど、および/またはこれらもしくは他のタイプのネットワークの組み合わせなどであってもよい。
【0029】
図1に示すデバイスおよびネットワークの数および配置は、一例として提供されている。実際には、追加のデバイスおよび/またはネットワーク、より少ないデバイスおよび/またはネットワーク、異なるデバイスおよび/またはネットワーク、あるいは
図1に示すものとは異なる配置のデバイスおよび/またはネットワークが存在してもよい。さらに、
図1に示す2つ以上のデバイスは、単一のデバイス内に実装されてもよく、または
図1に示す単一のデバイスは、複数の分散型デバイスとして実装されてもよい。追加的または代替的に、環境100のデバイスのセット(例えば、1つまたは複数のデバイス)は、環境100の別のデバイスのセットによって実行されるものとして記載される1つまたは複数の機能を実行してもよい。
【0030】
図2は、
図1の1つまたは複数のデバイスの例示的なコンポーネントのブロック図である。
【0031】
デバイス200は、ユーザデバイス110および/またはプラットフォーム120に対応することができる。
図2に示されるように、デバイス200は、バス210、プロセッサ220、メモリ230、ストレージコンポーネント240、入力コンポーネント250、出力コンポーネント260、および通信インターフェイス270を含み得る。
【0032】
バス210は、デバイス200のコンポーネント間の通信を可能にするコンポーネントを含む。プロセッサ220は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせで実装される。プロセッサ220は、中央処理装置(Central Processing Unit:CPU)、グラフィック処理装置(Graphics Processing Unit:GPU)、加速処理装置(Accelerated Processing Unit:APU)、マイクロプロセッサ、マイクロコントローラ、デジタル・シグナル・プロセッサ(Digital Signal Processor:DSP)、フィールド・プログラマブル・ゲート・アレイ(Field-Programmable Gate Array:FPGA)、特定用途向け集積回路(Application-Specific Integrated Circuit:ASIC)、または別のタイプの処理コンポーネントである。いくつかの実装形態では、プロセッサ220は、機能を実行するようにプログラム可能な1つまたは複数のプロセッサを含む。メモリ230は、ランダム・アクセス・メモリ(Random Access Memory:RAM)、リード・オンリー・メモリ(Read Only Memory:ROM)、および/またはプロセッサ220が使用する情報および/または命令を記憶する別のタイプの動的または静的記憶デバイス(例えば、フラッシュメモリ、磁気メモリ、および/または光メモリ)を含む。
【0033】
ストレージコンポーネント240は、デバイス200の動作および使用に関連する情報および/またはソフトウェアを記憶する。例えば、ストレージコンポーネント240は、対応するドライブとともに、ハードディスク(例えば、磁気ディスク、光ディスク、光磁気ディスク、および/またはソリッドステートディスク)、コンパクトディスク(Compact Disc:CD)、デジタル多用途ディスク(Digital Versatile Disc:DVD)、フロッピーディスク、カートリッジ、磁気テープ、および/または別のタイプの非一時的なコンピュータ可読媒体を含んでもよい。
【0034】
入力コンポーネント250は、デバイス200がユーザ入力(例えば、タッチスクリーンディスプレイ、キーボード、キーパッド、マウス、ボタン、スイッチ、および/またはマイクロフォン)などを介して情報を受信することを可能にするコンポーネントを含む。追加的または代替的に、入力コンポーネント250は、情報を感知するためのセンサ(例えば、全地球測位システム(Global Positioning System:GPS)コンポーネント、加速度計、ジャイロスコープ、および/またはアクチュエータ)を含んでもよい。出力コンポーネント260は、デバイス200(例えば、ディスプレイ、スピーカ、および/または1つまたは複数の発光ダイオード(Light-Emitting Diode:LED))からの出力情報を提供するコンポーネントを含む。
【0035】
通信インターフェイス270は、デバイス200が有線接続、無線接続、または有線接続と無線接続との組み合わせなどを介して他のデバイスと通信することを可能にするトランシーバのようなコンポーネント(例えば、トランシーバおよび/または別個の受信機および送信機)を含む。通信インターフェイス270は、デバイス200が別のデバイスから情報を受信すること、および/または別のデバイスに情報を提供することを可能にしてもよい。例えば、通信インターフェイス270は、イーサネット(登録商標)インターフェイス、光インターフェイス、同軸インターフェイス、赤外線インターフェイス、無線周波数(Radio Frequency:RF)インターフェイス、ユニバーサルシリアルバス(Universal Serial Bus:USB)インターフェイス、Wi-Fi(登録商標)インターフェイス、セルラーネットワークインターフェイスなどであってもよい。
【0036】
デバイス200は、本明細書に記載された1つまたは複数の処理を実行してもよい。デバイス200は、メモリ230および/またはストレージコンポーネント240などの非一時的なコンピュータ可読媒体によって記憶されたソフトウェア命令を実行するプロセッサ220に応答して、これらの処理を実行してもよい。コンピュータ可読媒体は、本明細書では非一時的なメモリデバイスと定義される。メモリデバイスは、単一の物理記憶デバイス内のメモリ空間、または複数の物理記憶デバイスにわたって散在するメモリ空間を含む。
【0037】
ソフトウェア命令は、別のコンピュータ可読媒体から、または通信インターフェイス270を介して別のデバイスから、メモリ230および/またはストレージコンポーネント240に読み込まれてもよい。メモリ230および/またはストレージコンポーネント240に記憶されたソフトウェア命令は、実行されると、本明細書に記載の1つまたは複数のプロセスをプロセッサ220に実行させてもよい。追加的または代替的に、ハードワイヤード回路をソフトウェア命令の代わりに、またはソフトウェア命令と組み合わせて使用して、本明細書に記載の1つまたは複数のプロセスを実行してもよい。よって、本明細書に記載される実装形態は、ハードウェア回路とソフトウェアとのどんな特定の組み合わせにも限定されない。
【0038】
図2に示されるコンポーネントの数および配置は、一例として示されている。実際には、デバイス200は、
図2に示されたコンポーネントに対して、追加のコンポーネント、より少ないコンポーネント、異なるコンポーネント、または異なる配置のコンポーネントを含んでもよい。追加的または代替的に、デバイス200のコンポーネントのセット(例えば、1つまたは複数のコンポーネント)は、デバイス200の別のコンポーネントのセットによって実行されるものとして説明される1つまたは複数の機能を実行してもよい。
【0039】
次に、微細構造化重みプルーニングと重み統合を伴うニューラルネットワークモデルの圧縮の方法および装置について詳細に説明する。
【0040】
図3は、実施形態に係る、ニューラルネットワークモデルの圧縮のためのシステム300の機能ブロック図である。
【0041】
図3に示されるように、システム300は、パラメータ削減モジュール310、パラメータ近似モジュール320、再構築モジュール330、エンコーダ340、およびデコーダ350を含む。
【0042】
パラメータ削減モジュール310は、出力ニューラルネットワークを得るために、入力ニューラルネットワークのパラメータのセットを削減する。ニューラルネットワークは、ディープラーニングフレームワークで指定される場合、パラメータおよびアーキテクチャを含むことができる。
【0043】
例えば、パラメータ削減モジュール310は、ニューラルネットワークの接続をスパース化(重みをゼロに設定)および/またはプルーニング除去することができる。別の一例では、パラメータ削減モジュール310は、ニューラルネットワークのパラメータテンソルに対して、より小さなパラメータテンソルのセットへの行列分解を実行することができる。パラメータ削減モジュール310は、これらの方法をカスケードで実行することができ、例えば、最初に重みをスパース化し、次に結果として生じる行列を分解することができる。
【0044】
パラメータ近似モジュール320は、パラメータ削減モジュール310から得られる出力ニューラルネットワークから抽出されるパラメータテンソルにパラメータ近似技術を適用する。例えば、技術は、量子化、変換、および予測の任意の1つまたは任意の組み合わせを含み得る。パラメータ近似モジュール320は、パラメータ近似モジュール320によって変更されない第1のパラメータテンソル、パラメータ近似モジュール320によって変更または近似される第2のパラメータテンソル、および変更された第2のパラメータテンソルからパラメータ近似モジュール320によって変更されていない元のパラメータテンソルを再構築するために使用されるそれぞれのメタデータを出力する。
【0045】
再構築モジュール330は、パラメータ近似モジュール320および/またはデコーダ350から得られるそれぞれのメタデータを使用して、パラメータ近似モジュール320および/またはデコーダ350から得られる変更された第2のパラメータテンソルから元のパラメータテンソルを再構築する。再構築モジュール330は、再構築された元のパラメータテンソルおよび第1のパラメータテンソルを使用して、出力ニューラルネットワークを再構築することができる。
【0046】
エンコーダ340は、パラメータ近似モジュール320から得られる、第1のパラメータテンソル、第2のパラメータテンソル、およびそれぞれのメタデータに対してエントロピー符号化を実行することができる。この情報は、デコーダ350へのビットストリームに符号化され得る。
【0047】
デコーダ350は、エンコーダ340から取得されたビットストリームをデコードして、第1のパラメータテンソル、第2のパラメータテンソル、およびそれぞれのメタデータを取得することができる。
【0048】
システム300は、プラットフォーム120に実装することができ、
図3の1つまたは複数のモジュールは、ユーザデバイス110などの、プラットフォーム120とは別の、またはプラットフォーム120を含むデバイスまたはデバイスのグループによって実行され得る。
【0049】
パラメータ削減モジュール310またはパラメータ近似モジュール320は、以下の訓練装置によって訓練されるDNNを含み得る。
【0050】
図4Aは、実施形態に係る、微細構造化重みプルーニングを伴うニューラルネットワークモデルの圧縮のための訓練装置400Aの機能ブロック図である。
図4Bは、他の実施形態に係る、微細構造化重みプルーニングを伴うニューラルネットワークモデルの圧縮のための訓練装置400Bの機能ブロック図である。
【0051】
図4Aに示されるように、訓練装置400Aは、微細構造選択モジュール405、重みプルーニングモジュール410、ネットワーク前方計算モジュール415、ターゲット損失計算モジュール420、勾配計算モジュール425、および重み更新モジュール430を含む。
【0052】
図4Bに示されるように、訓練装置400Bは、微細構造選択モジュール405、重みプルーニングモジュール410、ネットワーク前方計算モジュール415、ターゲット損失計算モジュール420、勾配計算モジュール425、および重み更新モジュール430を含む。訓練装置400Bは、マスク計算モジュール435をさらに含む。
【0053】
D={(x、y)}は、ターゲットyが入力xに割り当てられているデータセットを表すとする。Θ={w}は、DNNの(例えば、パラメータ削減モジュール310またはパラメータ近似モジュール320の)重み係数のセットを表すとする。ネットワーク訓練のターゲットは、ターゲット損失£(D|Θ)を最小化できるように、重み係数Θの最適なセットを学習することである。例えば、以前のネットワークプルーニングアプローチでは、ターゲット損失£T(D|Θ)には、経験的データ損失£D(D|Θ)とスパース性を促進する正則化損失£R(Θ)の2つの部分がある。
£T(D|Θ)=£D(D|Θ)+λR£R(Θ)、 (1)
【0054】
ここで、λR≧0は、データ損失と正則化損失の寄与のバランスをとるハイパーパラメータである。λR=0の場合、ターゲット損失£T(D|Θ)のみが経験的データ損失のみを考慮し、事前に訓練された重み係数は密である。
【0055】
事前に訓練された重み係数Θは、重み係数の最適なセットを学習する別のネットワーク訓練プロセスをさらに通過して、モデルの圧縮と推論の加速をさらに実現できる。実施形態は、この目標を達成するために、微細構造化プルーニング法を含む。
【0056】
具体的には、微細構造化重みプルーニング損失£S(D|Θ)が定義され、元のターゲット損失とともに最適化される。
£(D|Θ)=£T(D|Θ)+λS£S(Θ)、(2)
【0057】
ここで、λS≧0は、元の訓練ターゲットと重みプルーニングターゲットの寄与のバランスをとるためのハイパーパラメータである。式(2)の£(D|Θ)を最適化することにより、さらなる圧縮の効果を大いに助けることができる最適な重み係数のセットを得ることができる。また、微細構造化重みプルーニング損失は、畳み込み演算がGEMM行列乗算プロセスとして実行される方法の基礎となるプロセスを考慮に入れているため、計算を大幅に加速できる最適化された重み係数が得られる。重みプルーニング損失は、正則化がある場合(λR>0の場合)またはない場合(λR=0の場合)の、ターゲット損失に対する追加の正則化項と見なすことができることに注目すべきである。また、この方法は、正則化損失£R(Θ)に柔軟に適用できる。
【0058】
学習効果と学習効率の両方について、反復最適化プロセスが実行される。第1のステップでは、望ましい微細構造を満たす重み係数の部分が固定され、次に第2のステップでは、重み係数の非固定部分が訓練損失をバックプロパゲーションすることによって更新される。これらの2つのステップを繰り返し実行することにより、ますます多くの重みを徐々に固定することができ、結合損失を徐々に効果的に最適化することができる。
【0059】
さらに、実施形態では、各々の層は個別に圧縮されるため、£
S(D|Θ)はさらに次のように書くことができる。
【数1】
ここで、L
S(W
j)はj番目の層で定義されたプルーニング損失であり、Nはこの訓練プロセスに関与する層の総数であり、W
jはj番目の層の重み係数を表す。この場合も、L
S(W
j)は各々の層に対して独立して計算されるため、一般性を失うことなくスクリプトjを省略できる。
【0060】
各々のネットワーク層に対して、その重み係数Wは、サイズ(c
i、k
1、k
2、k
3、c
o)を有する5次元(5D)テンソルである。層の入力は、サイズ(h
i、w
i、d
i、c
i)の4次元(4D)テンソルAであり、層の出力はサイズ(h
o、w
o、d
o、c
o)の4DテンソルBである。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oは、1以上の整数である。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oのいずれかが数1を取ると、対応するテンソルはより低い次元に減少する。各々のテンソルの各々の項は、浮動小数点数である。MがWと同じサイズの5Dバイナリマスクを表し、ここで、Mの各々の項は、対応する重み係数が事前にプルーニングされるプロセスでプルーニング/保持されるかどうかを示す2進数0/1であるとする。Wが以前の構造化または非構造化プルーニング法を使用してプルーニングされたDNNモデルからのものであり、ネットワーク内のニューロン間の一部の接続が計算から取り除かれる場合に対処するために、Wに関連付けられるようにMが導入される。Wが元のプルーニングされていない密なモデルからのものである場合、Mのすべての項は値1を取る。出力Bは、A、M、およびWに基づく畳み込み演算
【数2】
によって計算される。
【数3】
l=1,...,h
i,m=1,...,w
i,n=1,...,d
i,l’=1,...,h
o,
m’=1,...,w
o,n’=1,...,d
o,v=1,...,c
o。 (4)
【0061】
パラメータhi、wi、およびdi(h0、wo、およびdo)は、入力テンソルA(出力テンソルB)の高さ、重み、および深さである。パラメータci(co)は、入力(出力)チャネルの数である。パラメータk1、k2、およびk3は、それぞれ高さ軸、重み軸、および深さ軸に対応する畳み込みカーネルのサイズである。つまり、各々の出力チャネルv=1、...、coについて、式(4)で記述されている演算は、入力Aと畳み込むサイズ(ci、k1、k2、k3)の4D重みテンソルWvと見なすことができる。
【0062】
式(4)の総和演算の順序は、変更することができ、その結果、入力A、重みW(およびマスクM)の形状の異なる構成が得られ、同じ出力Bが得られる。実施形態では、2つの構成が取られる。(1)5D重みテンソルは、サイズ(
【数4】
、k)、ただし、
【数5】
の3Dテンソルに再形成される。例えば、構成は
【数6】
である。(2)5D重みテンソルは、サイズ(
【数7】
)、ただし、
【数8】
の2D行列に再形成される。例えば、いくつかの実施形態は、
【数9】
、または
【数10】
である。
【0063】
重み係数の望ましい微細構造は、畳み込み演算の実装方法の基礎となるGEMM行列乗算プロセスと整合しているので、学習した重み係数を使用する推論計算が加速される。実施形態では、重み係数のブロック単位の微細構造が、3Dの再形成された重みテンソルまたは2Dの再形成された重み行列の各々の層で使用される。具体的には、再形成された3Dの重みテンソルの場合は、サイズ(gi、go、gk)のブロックに分割され、再形成された2Dの重み行列の場合は、サイズ(gi、go)のブロックに分割される。プルーニング操作は2Dまたは3Dブロック内で起きる、つまり、ブロック内のプルーニングされた重みはすべてゼロに設定される。ブロックのプルーニング損失は、そのようなプルーニング操作によって導入された誤差を測定して計算できる。この微細構造が与えられると、反復中に、プルーニングされる重み係数の部分がプルーニング損失に基づいて決定される。次に、第2のステップで、プルーニングされた重みが固定され、通常のニューラルネットワーク訓練プロセスが実行され、残りの非固定重み係数がバックプロパゲーションメカニズムによって更新される。
【0064】
図4Aおよび
図4Bは、反復的な再訓練/微調整プロセスの実施形態を示しており、両方とも、式(2)の結合損失を徐々に最適化するために2つのステップを反復的に交互に繰り返す。第1のステップでは、プルーニングされたスパースモデルまたはプルーニングされていない非スパースモデルのいずれかであり得る、重み係数{W}とマスク{M}を有する事前に訓練されたDNNモデルが与えられ、微細構造選択モジュール405はまず、各々の層の重み係数W(および対応するマスクM)を望ましい3Dテンソルまたは2D行列に再形成する。次に、各々の層について、微細構造選択モジュール405は、プルーニング微細構造選択プロセスを通じて重みがプルーニングされるプルーニング微細構造{b
s}またはプルーニング微細構造ブロック(PMB)のセットを決定する。プルーニングの微細構造{b
s}を決定する方法は複数ある。実施形態では、重み係数WおよびマスクMを有する各々の層について、Wの各々のブロックbについて、プルーニング損失L
s(b)(例えば、bの重みの絶対値の合計)が計算される。プルーニング率pが与えられると、この層のブロックはL
s(b)に従ってアクセント順にランク付けされ、上位p%のブロックがプルーニングされる{b
s}として選択される。他の実施形態では、重み係数WおよびマスクMを有する各々の層について、各々のブロックbのプルーニング損失L
s(b)は、上記と同じ方法で計算される。プルーニング率pが与えられると、すべての層のすべてのブロックがL
s(b)に従ってアクセント順にランク付けされ、上位p%のブロックがプルーニングされる{b
s}として選択される。
【0065】
プルーニング微細構造のセットを取得した後、ターゲットは、式(2)に記述されている結合損失を繰り返し最小化することにより、更新された最適な重み係数W
*と対応する重みマスクM
*のセットを見つけることになる。
図4Aによって示される第1の実施形態では、t回目の反復のために、現在の重み係数W(t-1)が存在する。また、微細構造的プルーニングマスクP(t-1)は、訓練プロセス全体を通じて維持される。P(t-1)はW(t-1)と同じ形状であり、対応する重み係数がプルーニングされているか否かを記録する。次に、重みプルーニングモジュール410は、P(t-1)によってマスクされた選択されたプルーニング微細構造がプルーニングされ、更新された重みマスクM
P(t-1)をもたらす重みプルーニングプロセスを通じて、プルーニングされた重み係数W
P(t-1)を計算する。
【0066】
次に、第2のステップにおいて、重み更新モジュール430は、微細構造的にプルーニングされたものとしてP(t-1)によってマークされた重み係数を固定し、次に、ニューラルネットワーク訓練プロセスを介してWP(t-1)の残りの非固定重み係数を更新し、W(t)とM(t)が更新される。実施形態では、事前に訓練されたプルーニングマスクMによってマスクされた事前にプルーニングされた重み係数は、このネットワーク訓練プロセス中に強制的に固定される(すなわち、ゼロのままでいる)。別の実施形態では、そのような制限は事前にプルーニングされた重みには課せられず、事前にプルーニングされた重みは、訓練プロセス中にゼロ以外の値にリセットすることができ、その結果、より良好な、場合によっては元の事前訓練されたモデルよりもさらに良好な予測パフォーマンスに関連するよりスパースでないモデルが得られる。
【0067】
具体的には、D={(x、y)}が訓練データセットを表すものとし、ここで、Dは、事前訓練された重み係数Wが取得される元のデータセットD
0={(x
0、y
0)}と同じにすることができる。Dはまた、D
0とは異なるデータセットにすることもできるが、元のデータセットDと同じデータ分布になる。第2のステップでは、ネットワーク前方計算モジュール415は、現在の重み係数W
P(t-1)およびマスクM
P(t-1)を使用するネットワーク前方計算プロセスを介して現在のネットワークを介して各々の入力xを渡し、これにより推定出力
【数11】
が生成される。グラウンドトゥルースアノテーションyと推定出力
【数12】
に基づいて、ターゲット損失計算モジュール420は、ターゲット損失計算プロセスを通じて、式(2)のターゲット訓練損失£
T(D|Θ)を計算する。次に、勾配計算モジュール425は、ターゲット損失G(W
P(t-1))の勾配を計算する。tensorflowまたはpytorchなどの深層学習フレームワークによって使用される自動勾配計算方法を使用してG(W
P(t-1))を計算できる。勾配G(W
P(t-1))および微細構造的にプルーニングするマスクP(t-1)に基づいて、重み更新モジュール430は、バックプロパゲーションおよび重み更新プロセスを使用したバックプロパゲーションを通じてW
P(t-1)の非固定重み係数を更新することができる。再訓練プロセスは、それ自体が反復プロセスでもある。W
P(t-1)の非固定部分を更新するために、例えば、ターゲット損失が収束するまで、複数の反復が行われる。次に、システムは次の反復tに進み、ここで、新しいプルーニング比率p(t)が与えられると、新しいプルーニング微細構造(ならびに新しい微細構造的プルーニングマスクP(t))のセットがプルーニング微細構造選択プロセスを通して決定される。
【0068】
図4Bによって示される訓練プロセスの第2の実施形態では、更新された最適な重み係数W
*および対応する重みマスクM
*のセットは、別の反復プロセスによって見出される。t番目の反復には、現在の重み係数W(t-1)とマスクM(t-1)がある。また、マスク計算モジュール435は、プルーニングマスク計算プロセスを通じて、微細構造的プルーニングマスクP(t-1)を計算する。P(t-1)はW(t-1)と同じ形状であり、対応する重み係数がプルーニングされているかどうかを記録する。次に、重みプルーニングモジュール410は、マスクされた選択されたプルーニング微細構造がP(t-1)によってプルーニングされ、更新された重みマスクM
P(t-1)をもたらす重みプルーニングプロセスを通じて、プルーニングされた重み係数W
P(t-1)を計算する。
【0069】
次に、第2のステップにおいて、重み更新モジュール430は、微細構造的にプルーニングされたものとしてP(t-1)によってマークされた重み係数を固定し、次に、ニューラルネットワーク訓練プロセスを介してW(t-1)の残りの非固定重み係数を更新し、更新されたW(t)をもたらす。
図4Aの第1の実施形態と同様に、訓練データセットD={(x、y)}が与えられると、ネットワーク前方計算モジュール415は、現在の重み係数W(t-1)およびマスクM(t-1)を使用してネットワーク前方計算プロセスを介して現在のネットワークを介して各々の入力xを渡し、これにより推定出力
【数13】
が生成される。グラウンドトゥルースアノテーションyと推定出力
【数14】
に基づいて、ターゲット損失計算モジュール420は、結合損失計算プロセスを通して、式(2)のターゲット訓練損失£
T(D|Θ)を含む結合訓練損失£
J(D|Θ)および残差損失£
res(W(t-1))を計算する。
£
J(D|Θ)=£
T(D|Θ)+λ
res£
res(W(t-1)) (5)
【0070】
£res(W(t-1))は、現在の重みW(t-1)とターゲットのプルーニングされた重みWP(t-1)の差を測定する。例えば、L1ノルムを使用できる。
£res(W(t-1))=||W(t-1))-WP(t-1)|| (6)
【0071】
次に、勾配計算モジュール425は、結合損失G(W(t-1))の勾配を計算する。tensorflowまたはpytorchなどの深層学習フレームワークによって使用される自動勾配計算方法を使用してG(W(t-1))を計算できる。勾配G(W(t-1))および微細構造的プルーニングマスクP(t-1)に基づいて、重み更新モジュール430は、バックプロパゲーションと重み更新プロセスを使用するバックプロパゲーションを通じてW(t-1)の非固定重み係数を更新する。再訓練プロセスは、それ自体が反復プロセスでもある。W(t-1)の非固定部分を更新するために、例えば、ターゲット損失が収束するまで、複数の反復が行われる。次に、システムは次の反復tに進み、ここで、プルーニング比P(t)が与えられると、プルーニング微細構造(ならびに新しい微細構造的プルーニングマスクP(t))の新しいセットがプルーニング微細構造選択プロセスを介して決定される。
図4Aの前の実施形態と同様に、この訓練プロセスの間、事前訓練された事前プルーニングマスクMによってマスクされた重み係数は、強制してゼロのままにすることができるか、または再び非ゼロ値を有するように設定することができる。
【0072】
この全反復プロセスの間、T回目の反復で、プルーニングされた重み係数WP(T)は、マスクされた選択されたプルーニング微細構造がP(T)によってプルーニングされ、更新された重みマスクMP(T)をもたらす重みプルーニングプロセスを通じて計算され得る。このWP(T)およびMP(T)を使用して、最終的に更新されたモデルW*およびM*を生成できる。例えば、W*=WP(T)、およびM*=M・MP(T)である。
【0073】
実施形態では、ハイパーパラメータP(t)は、tが増加するにつれて反復中にその値を増加させることができ、その結果、反復学習プロセス全体を通して、ますます多くの重み係数がプルーニングされ、固定される。
【0074】
微細構造化プルーニング法は、モデルサイズを縮小し、最適化された重み係数を使用するための計算を高速化し、元のDNNモデルの予測パフォーマンスを維持することを目的としている。それは、事前に訓練された密なモデル、または以前の構造化または非構造化プルーニング法によってプルーニングされた事前に訓練されたスパースモデルに適用して、追加の圧縮効果を実現できる。
【0075】
反復的な再訓練プロセスを通じて、この方法は、元の予測ターゲットのパフォーマンスを効果的に維持し、圧縮と計算の効率を追求できる。反復的な再訓練プロセスにより、様々な時間に様々な損失を導入できる柔軟性が得られ、システムは最適化プロセス中に様々なターゲットに焦点を合わせることができる。
【0076】
この方法は、様々なデータ形式を有するデータセットに適用できる。入力/出力データは4Dテンソルであり、これは、実際のビデオセグメント、画像、または抽出された特徴マップとすることができる。
【0077】
図4Cは、さらに他の実施形態に係る、重み統合を伴うニューラルネットワークモデルの圧縮のための訓練装置400Cの機能ブロック図である。
【0078】
図4Cに示されるように、訓練装置400Cは、再形成モジュール440、重み統合モジュール445、ネットワーク前方計算モジュール415、ターゲット損失計算モジュール420、勾配計算モジュール425、および重み更新モジュール450を含む。
【0079】
スパース性を促進する正則化の損失は、重み係数全体に正則化を配置し、結果として得られるスパースな重みは、推論効率または計算の加速と弱い関係を有する。別の観点から、スパースな重みは、プルーニング後、さらなるモデル圧縮の効率を向上させることができる重み係数の最適なセットを学習できる別のネットワーク訓練プロセスをさらに通過することができる。
【0080】
重み統合損失£U(D|Θ)は、元のターゲット損失とともに最適化される。
£(D|Θ)=£T(D|Θ)+λU£U(Θ)、 (7)
ここで、λU≧0は、元の訓練ターゲットと重みの統合の寄与のバランスをとるためのハイパーパラメータである。式(7)の£(D|Θ)を共同で最適化することにより、さらなる圧縮の効果を大いに助けることができる重み係数の最適なセットが得られる。また、重みの統合損失は、畳み込み演算がGEMM行列乗算プロセスとして実行される方法の基礎となるプロセスを考慮に入れているため、計算を大幅に加速できる最適化された重み係数が得られる。重みの統合損失は、正則化がある場合(λR>0の場合)またはない場合(λR=0の場合)の、ターゲット損失に対する追加の正則化項と見なすことができることに注意すべきである。また、この方法は、正則化損失£R(Θ)に柔軟に適用できる。
【0081】
実施形態では、重み統合損失£U(Θ)は、圧縮率損失£C(Θ)、統合歪み損失£I(Θ)、および計算速度損失£S(Θ)をさらに含む。
£U(Θ)=£I(Θ)+λC£C(Θ)+λS£S(Θ)、 (8)
【0082】
これらの損失項の詳細な説明は、後のセッションで説明される。学習効果と学習効率の両方について、反復最適化プロセスが実行される。第1のステップでは、望ましい構造を満たす重み係数の部分が固定され、次に第2のステップで、重み係数の非固定部分が訓練損失をバックプロパゲーションすることによって更新される。これらの2つのステップを繰り返し実行することにより、ますます多くの重みを徐々に固定することができ、結合損失を徐々に効果的に最適化することができる。
【0083】
さらに、実施形態では、各々の層は個別に圧縮され、£
U(D|Θ)はさらに次のように書くことができる。
【数15】
ここで、L
U(W
j)は、j番目の層で定義された統合損失であり、Nは、量子化損失が測定される層の総数であり、W
jは、j番目の層の重み係数を表す。この場合も、L
U(Wj)は、各々の層に対して独立して計算されるため、本開示の残りの部分では、一般性を失うことなくスクリプトjを省略できる。
【0084】
各々のネットワーク層に対して、その重み係数Wは、サイズ(c
i、k
1、k
2、k
3、c
o)を有する5次元(5D)テンソルである。層の入力は、サイズ(h
i、w
i、d
i、c
i)の4次元(4D)テンソルAであり、層の出力はサイズ(h
o、w
o、d
o、c
o)の4DテンソルBである。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oは、1以上の整数である。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oのいずれかが数1を取ると、対応するテンソルはより低い次元に減少する。各々のテンソルの各々の項は、浮動小数点数である。MがWと同じサイズの5Dバイナリマスクを表し、ここで、Mの各々の項目は、対応する重み係数がプルーニングされる/保持されるかどうかを示す2進数0/1であるとする。Mは、Wがネットワーク内のニューロン間の一部の接続が計算から取り除かれるプルーニングされたDNNモデルからのものである場合に対処するために、Wに関連付けられるように導入される。Wが元のプルーニングされていない事前訓練されたモデルからのものである場合、Mのすべての項目は値1を取る。出力Bは、A、M、およびWに基づく畳み込み演算
【数16】
によって計算される。
【数17】
l=1,...,h
i,m=1,...,w
i,n=1,...,d
i,l’=1,...,h
o,
m’=1,...,w
o,n’=1,...,d
o,v=1,...,c
o (10)
【0085】
パラメータhi、wi、およびdi(h0、wo、およびdo)は、入力テンソルA(出力テンソルB)の高さ、重み、および深さである。パラメータci(co)は、入力(出力)チャネルの数である。パラメータk1、k2、およびk3は、それぞれ高さ軸、重み軸、および深さ軸に対応する畳み込みカーネルのサイズである。つまり、各出力チャネルv=1、...、coについて、式(10)で記述されている演算は、入力Aと畳み込むサイズ(ci、k1、k2、k3)の4D重みテンソルWvと見なすことができる。
【0086】
式(10)の総和演算の順序は変更することができ、実施形態では、式(10)の演算は以下のように実行される。5D重みテンソルは、サイズ(
【数18】
)の2D行列、ここで、
【数19】
に再形成される。例えば、いくつかの実施形態は、
【数20】
または
【数21】
である。
【0087】
重み係数の望ましい構造は、2つの側面を考慮して設計されている。第一に、重み係数の構造は、畳み込み演算の実装方法の基礎となるGEMM行列乗算プロセスと整合しているので、学習した重み係数を使用する推論計算が加速される。第二に、重み係数の構造は、さらなる圧縮のために量子化とエントロピーコーディングの効率を改善するのに役立つ。実施形態では、重み係数のブロック単位の構造が、2Dの再形成された重み行列の各々の層で使用される。具体的には、2D行列はサイズ(gi、go)のブロックに分割され、ブロック内のすべての係数が統合される。ブロック内の統合された重みは、事前定義された統合ルールに従うように設定される、例えば、すべての値が同じになるように設定されるため、1つの値を使用して、量子化プロセスでブロック全体を表すことができ、高効率が得られる。重みを統合する複数のルールが存在することも可能であり、各々の重みはこのルールを採用することによって導入された誤差を測定する統合歪み損失に関連付けられる。例えば、重みを同じに設定する代わりに、元の符号を維持したまま、重みが同じ絶対値をもつように設定される。この設計された構造が与えられると、反復中に、重み係数の一部は、統合歪み損失、推定圧縮率損失、および推定速度損失を考慮して固定されると決定される。次に、第2のステップで、通常のニューラルネットワーク訓練プロセスが実行され、残りの非固定重み係数がバックプロパゲーションメカニズムによって更新される。
【0088】
図4Cは、式(7)の結合損失を徐々に最適化するために2つのステップを繰り返し交互に実行する反復的な再訓練/微調整プロセスの全体的なフレームワークを示している。重み係数WとマスクMを備えた事前訓練されたDNNモデル(プルーニングされたスパースモデルまたはプルーニングされていない非スパースモデルのいずれか)が与えられると、第1のステップで、再形成モジュール440は、統合法選択プロセスを通して重み統合法u
*を決定する。このプロセスにおいて、再形成モジュール440は、重み係数W(および対応するマスクM)をサイズ(
【数22】
)の2D行列に再形成し、次に、再形成された2D重み行列Wをサイズのブロック(g
i、g
o)に分割する。重みの統合はブロック内部で行われる。各々のブロックbに対して、重み統合子を使用して、ブロック内の重み係数を統合する。bの重み係数を統合するいくつかの方法があり得る。例えば、重み統合子は、bのすべての重みを同じ、例えば、bのすべての重みの平均値に設定できる。このような場合、bの重み係数のL
Nノルム(例えば、bの重みの分散としてのL
2ノルム)は、平均値を使用してブロック全体を表す統合歪み損失£
I(b)を反映する。また、重み統合子は、元の符号を維持しながら、すべての重みが同じ絶対値をもつように設定できる。このような場合、bの重みの絶対値のL
Nノルムを使用して、L
I(b)を測定できる。言い換えると、重み統合メソッドuが与えられると、重み統合子は、メソッドuを使用してbの重みを関連する統合歪み損失L
I(u、b)と統合できる。
【0089】
同様に、式(8)の圧縮率損失£C(u、b)は、メソッドuを使用してbの重みを統合する圧縮効率を反映している。例えば、すべての重みが同じに設定されている場合、ブロック全体を表すために1つの数値のみが使用され、圧縮率はr圧縮=gi・goである。£C(u、b)は、1/r圧縮として定義できる。
【0090】
式(8)の速度損失£S(u、b)は、メソッドuでbの統合された重み係数を使用した場合の推定計算速度を反映しており、これは、統合された重み係数を使用した計算での乗算演算の数の関数である。
【0091】
これまでに、重み統合子によってbの重みを統合する可能な各々のメソッドuに対して、式(8)の重み統合損失£U(u、b)が£I(u、b)、£C(u、b)、£S(u、b)に基づいて計算される。最適な重み統合メソッドu*は、最小の重み統合損失£U
*(u、b)と共に選択できる。
【0092】
ブロックbごとに重み統合法u*が決定されると、ターゲットは、式(7)で説明されている結合損失を繰り返し最小化することにより、更新された最適重み係数W*と対応する重みマスクM*のセットを見つけることになる。具体的には、t番目の反復には、現在の重み係数W(t-1)とマスクM(t-1)が存在する。また、重み統合マスクQ(t-1)は、訓練プロセス全体を通じて維持される。重み統合マスクQ(t-1)は、W(t-1)と同じ形状であり、対応する重み係数が統合されているかどうかを記録する。次に、重み統合モジュール445は、重み統合プロセスを通じて、統合された重み係数WU(t-1)および新しい統合マスクQ(t-1)を計算する。重み統合プロセスでは、ブロックは、アクセント順に統合損失£U(u*、b)に基づいてランク付けされる。ハイパーパラメータqが与えられると、上位q%のブロックが選択されて統合される。そして、重み統合子は、対応する決定されたメソッドu*を使用して、選択されたブロックbのブロックを統合し、統合された重みWU(t-1)と重みマスクMU(t-1)をもたらす。統合マスクQ(t-1)の対応するエントリは、統合されたものとしてマークされる。実施形態では、MU(t-1)は、プルーニングされた重み係数とプルーニングされていない重み係数の両方を有するブロックについて、元々プルーニングされていた重み係数が重み統合子によって再びゼロ以外の値を有するように設定されるM(t-1)とは異なり、MU(t-1)の対応する項目は、変更される。別の一実施形態では、MU(t-1)はM(t-1)と同じであり、プルーニングされた重み係数とプルーニングされていない重み係数の両方を有するブロックについて、プルーニングされていない重みのみがリセットされ、プルーニングされた重みはゼロのままである。
【0093】
次に、第2のステップにおいて、重み更新モジュール450は、Q(t-1)において統合されているとマークされた重み係数を固定し、次いで、ニューラルネットワーク訓練プロセスを通じて、W(t-1)の残りの非固定重み係数を更新し、更新されたW(t)とM(t)をもたらす。
【0094】
D={(x、y)}が訓練データセットを表すとし、ここで、Dは、事前に訓練された重み係数Wが取得される元のデータセットD
0={(x
0、y
0)}と同じにすることができる。Dは、D
0とは異なるデータセットにすることもできるが、元のデータセットDと同じデータ分布である。第2のステップにおいて、ネットワーク前方計算モジュール415は、現在の重み係数W
U(t-1)およびマスクM
U(t-1)を使用するネットワーク前方計算プロセスを介して、各々の入力xを現在のネットワークに渡し、これにより推定出力
【数23】
が生成される。グラウンドトゥルースアノテーションyと推定出力
【数24】
に基づいて、ターゲット損失計算モジュール420は、ターゲット損失計算プロセスを通じて、式(7)のターゲット訓練損失£
T(D|Θ)を計算する。次に、勾配計算モジュール425は、ターゲット損失G(W
U(t-1))の勾配を計算する。tensorflowまたはpytorchなどの深層学習フレームワークによって使用される自動勾配計算方法を使用してG(W
U(t-1))を計算できる。勾配G(W
U(t-1))および統合マスクQ(t-1)に基づいて、重み更新モジュール450は、バックプロパゲーションおよび重み更新プロセスを使用したバックプロパゲーションを通じて、M
U(t-1)の非固定重み係数および対応するマスクW
U(t-1)を更新する。再訓練プロセスは、それ自体が反復プロセスでもある。W
U(t-1)の非固定部分と対応するM(t-1)を更新するために、例えば、ターゲット損失が収束するまで、複数の反復が行われる。次に、システムは次の反復tに進む。ここで、W
U(t-1)とu
*に基づいて新しいハイパーパラメータq(t)が与えられると、新しい統合された重み係数W
U(t)、マスクM
U(t)、および対応する統合マスクQ(t)が、重み統合プロセスを通じて計算され得る。
【0095】
実施形態では、ハイパーパラメータq(t)は、tが増加するにつれて各々の反復中にその値を増加させるので、反復学習プロセス全体を通して、ますます多くの重み係数が統合され、固定される。
【0096】
統合正則化は、学習された重み係数のさらなる圧縮の効率を改善し、最適化された重み係数を使用するための計算を高速化することを目的としている。これにより、DNNモデルのサイズを大幅に削減し、推論の計算を高速化できる。
【0097】
反復的な再訓練プロセスを通じて、この方法は元の訓練ターゲットのパフォーマンスを効果的に維持し、圧縮および計算の効率を追求できる。反復的な再訓練プロセスにより、様々な時間に様々な損失を導入できる柔軟性が得られ、システムは最適化プロセス中に様々なターゲットに焦点を合わせることができる。
【0098】
この方法は、様々なデータ形式を有するデータセットに適用できる。入力/出力データは4Dテンソルであり、これは、実際のビデオセグメント、画像、または抽出された特徴マップとすることができる。
【0099】
図4Dは、さらに他の実施形態に係る、微細構造化重みプルーニング・重み統合を伴うニューラルネットワークモデルの圧縮のための訓練装置400Dの機能ブロック図である。
図4Eは、さらに他の実施形態に係る、微細構造化重みプルーニング・重み統合を伴うニューラルネットワークモデルの圧縮のための訓練装置400Eの機能ブロック図である。
【0100】
図4Dに示されるように、訓練装置400Dは、微細構造選択モジュール455、重みプルーニング/統合モジュール460、ネットワーク前方計算モジュール415、ターゲット損失計算モジュール420、勾配計算モジュール425、および重み更新モジュール465を含む。
【0101】
図4Eに示されるように、訓練装置400Eは、微細構造選択モジュール455、重みプルーニング/統合モジュール460、ネットワーク前方計算モジュール415、ターゲット損失計算モジュール420、勾配計算モジュール425、および重み更新モジュール465を含む。訓練装置400Eは、マスク計算モジュール470をさらに含む。
【0102】
別の観点から、事前に訓練された重み係数Θは、重み係数の最適なセットを学習して、さらなるモデルの圧縮と推論の加速の効率を向上させることができる、別のネットワーク訓練プロセスをさらに通過することができる。この開示は、この目標を達成するための微細構造化プルーニングおよび統合方法を説明する。
【0103】
具体的には、微細構造化重みプルーニング損失£S(D|Θ)と微細構造化重み統合損失£U(D|Θ)が定義され、これらは元のターゲット損失とともに最適化される。
£(D|Θ)=£T(D|Θ)+λU£U(Θ)+λS£S(Θ)、 (11)
ここで、λS≧0およびλU≧0は、元の訓練ターゲット、重み統合ターゲット、および重みプルーニングターゲットの寄与のバランスをとるためのハイパーパラメータである。式(11)の£(D|Θ)を共同で最適化することにより、さらなる圧縮の効果を大いに助けることができる重み係数の最適なセットが得られる。また、重みの統合損失は、畳み込み演算がGEMM行列乗算プロセスとして実行される方法の基礎となるプロセスを考慮に入れているため、計算を大幅に加速できる最適化された重み係数が得られる。重みプルーニングと重み統合損失は、正則化がある場合(λR>0の場合)または正則化がない場合(λR=0の場合)のターゲット損失に対する追加の正則化項と見なすことができることに注意すべきである。また、この方法は、正則化損失£R(Θ)に柔軟に適用できる。
【0104】
学習効果と学習効率の両方について、反復最適化プロセスが実行される。第1のステップでは、望ましい構造を満たす重み係数の部分が固定され、次に第2のステップで、重み係数の非固定部分が訓練損失をバックプロパゲーションすることによって更新される。これらの2つのステップを繰り返し実行することにより、ますます多くの重みを徐々に固定することができ、結合損失を徐々に効果的に最適化することができる。
【0105】
さらに、実施形態では、各々の層は個別に圧縮され、£
U(D|Θ)および£
S(D|Θ)はさらに次のように書くことができる。
【数25】
ただし、L
U(W
j)は、j番目の層で定義された統合損失であり、L
S(W
j)はj番目の層で定義されたプルーニング損失であり、Nはこの訓練プロセスに関与する層の総数であり、W
jはj番目の層の重み係数を表す。この場合も、L
U(W
j)とL
S(W
j)は各々の層に対して独立して計算されるため、本開示の残りの部分では、一般性を失うことなくスクリプトjは省略される。
【0106】
各々のネットワーク層に対して、その重み係数Wは、サイズ(c
i、k
1、k
2、k
3、c
o)を有する5次元(5D)テンソルである。層の入力は、サイズ(h
i、w
i、d
i、c
i)の4次元(4D)テンソルAであり、層の出力はサイズ(h
o、w
o、d
o、c
o)の4DテンソルBである。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oは、1以上の整数である。サイズc
i、k
1、k
2、k
3、c
o、h
i、w
i、d
i、h
o、w
o、d
oのいずれかが数1を取ると、対応するテンソルはより低い次元に減少する。各々のテンソルの各々の項は、浮動小数点数である。MがWと同じサイズの5Dバイナリマスクを表し、ここで、Mの各々の項は、対応する重み係数が事前にプルーニングされるプロセスでプルーニング/保持されるかどうかを示す2進数0/1であるとする。Mは、Wがネットワーク内のニューロン間の一部の接続が計算から取り除かれるプルーニングされたDNNモデルからのものである場合に対処するために、Wに関連付けられるように導入される。Wが元のプルーニングされていない密なモデルからのものである場合、Mのすべての項は値1を取る。出力Bは、A、M、およびWに基づく畳み込み演算
【数26】
によって計算される。
【数27】
l=1,...,h
i,m=1,...,w
i,n=1,...,d
i,l’=1,...,h
o,
m’=1,...,w
o,n’=1,...,d
o,v=1,...,c
o (13)
【0107】
パラメータhi、wi、およびdi(h0、wo、およびdo)は、入力テンソルA(出力テンソルB)の高さ、重み、および深さである。パラメータci(co)は、入力(出力)チャネルの数である。パラメータk1、k2、およびk3は、それぞれ高さ軸、重み軸、および深さ軸に対応する畳み込みカーネルのサイズである。つまり、各々の出力チャネルv=1、...、coについて、式(13)で記述されている演算は、入力Aと畳み込むサイズ(ci、k1、k2、k3)の4D重みテンソルWvと見なすことができる。
【0108】
式(13)の総和演算の順序は変更することができ、その結果、同じ出力Bが得られる、入力A、重みW(およびマスクM)の形状の異なる構成が得られる。実施形態では、2つの構成が取られる。(1)5D重みテンソルは、サイズ(
【数28】
、k)ただし、
【数29】
の3Dテンソルに再形成される。例えば、構成は
【数30】
である。(2)5D重みテンソルは、サイズ(
【数31】
)、ただし、
【数32】
の2D行列に再形成される。例えば、いくつかの構成は
【数33】
または
【数34】
である。
【0109】
重み係数の望ましい微細構造は、2つの側面を考慮して設計されている。第一に、重み係数の微細構造は、畳み込み演算の実装方法の基礎となるGEMM行列乗算プロセスと整合しているので、学習した重み係数を使用した推論計算が加速される。第二に、重み係数の微細構造は、さらなる圧縮のために量子化とエントロピーコーディングの効率を改善するのに役立つ。実施形態では、重み係数のブロック単位の微細構造が、3Dの再形成された重みテンソルまたは2Dの再形成された重み行列の各々の層で使用される。具体的には、再形成された3D重みテンソルの場合、サイズ(gi、go、gk)のブロックに分割され、ブロック内のすべての係数がプルーニングされるか、または統合される。再形成された2D重み行列の場合、サイズ(gi、go)のブロックに分割され、ブロック内のすべての係数がプルーニングされるか、または統合される。ブロック内のプルーニングされた重みは、すべてゼロに設定される。ブロックのプルーニング損失は、そのようなプルーニング操作によって導入された誤差を測定して計算できる。ブロック内の統合された重みは、事前定義された統合ルールに従うように設定され、例えば、1つの値を使用して、量子化プロセスでブロック全体を表すことができ、高い効率が得られように、すべての値が同じになるように設定される。重みを統合する複数のルールが存在することも可能であり、各々の重みはこのルールを採用することによって導入された誤差を測定する統合歪み損失に関連付けられる。例えば、重みを同じに設定する代わりに、元の符号を維持したまま、重みが同じ絶対値をもつように設定される。この微細構造が与えられると、反復中に、プルーニングまたは統合される重み係数の部分は、プルーニング損失と統合損失を考慮して決定される。次に、第2のステップで、プルーニングされ統合された重みが固定され、通常のニューラルネットワーク訓練プロセスが実行され、残りの非固定重み係数がバックプロパゲーションメカニズムによって更新される。
【0110】
図4Dおよび
図4Eは、反復的な再訓練/微調整プロセスの2つの実施形態であり、両方とも、式(11)の結合損失を徐々に最適化するために2つのステップを反復的に交互に繰り返す。プルーニングされたスパースモデルか、またはプルーニングされていない非スパースモデルのいずれかであり得る、重み係数{W}とマスク{M}をもつ事前訓練されたDNNモデルが与えられると、第1のステップで、両方の実施形態は最初に各々の層の重み係数W(および対応するマスクM)を望ましい3Dテンソルまたは2D行列に再形成する。次に、各々の層に対して、微細構造選択モジュール455は、プルーニングおよび統合微細構造選択プロセスを通じて、重みがプルーニングされる一連のプルーニング微細構造{b
s}またはPMBを決定し、一連の統合微細構造{b
u}または統合微細構造ブロック(UMB)は、全体の重みが統合されることが決定される。プルーニング微細構造{b
s}および統合微細構造{b
u}を決定する方法は複数あるが、ここでは4つの方法を示す。方法1では、重み係数WおよびマスクMをもつ各々の層に対して、Wの各々のブロックbに対して、重み統合子を使用して、(例えば、すべての重みを、元の符号を維持しながら同じ絶対値を有するように設定することにより)ブロック内の重み係数を統合する。次に、対応する統合損失L
u(b)が計算され、統合歪み(例えば、bの重みの絶対値のL
Nノルム)が測定される。統合損失L
u(W)は、WのすべてのブロックにわたるL
u(b)の合計として計算できる。この統合損失L
u(W)に基づいて、DNNモデルのすべての層がアクセント順にL
u(W)に従ってランク付けされる。次に、統合率uが与えられると、微細構造ブロックが統合される(つまり、{b
u}が選択された層のすべてのブロックを含む)トップ層が、(選択された層の統合された微細構造ブロックの総数とDNNモデル全体の微細構造ブロックの総数との比によって測定される)実際の統合率u’がu%に最も近いが、依然としてu%未満となるように選択される。次に、残りの各々の層に対して、各々の微細構造ブロックbに対して、プルーニング損失L
s(b)(例えば、bの重みの絶対値の合計)が計算される。プルーニング率pが与えられると、この層のブロックはL
s(b)に従ってアクセント順にランク付けされ、上位p%のブロックがプルーニングされる{b
s}として選択される。この層の残りのブロックに対して、この層の残りのブロックが、統合損失L
u(b)に基づいてアクセント順にランク付けされ、上位の(u-u’)%を統合対象の{b
u}として選択する、任意選択の追加ステップを実行できる。
【0111】
方法2では、重み係数WおよびマスクMをもつ各々の層に対して、統合損失Lu(b)およびLu(W)が方法1と同様の方法で計算される。次に、統合率uが与えられると、微細構造ブロックが方法1と同様の方法で統合されるトップ層が選択される。次に、残りの層のプルーニング損失Ls(b)が方法1と同じ方法で計算される。プルーニング率pが与えられると、残りのすべての層のすべてのブロックがLs(b)に従ってアクセント順にランク付けされ、上位p%のブロックがプルーニング対象として選択される。残りの層の残りのブロックに対して、残りの層の残りのブロックが、統合損失Lu(b)に基づいてアクセント順にランク付けされ、上位の(u-u’)%が統合対象の{bu}として選択される、任意選択の追加ステップを実行できる。
【0112】
方法3では、重み係数WおよびマスクMをもつ各々の層に対して、Wの各々のブロックbに対して、統合損失Lu(b)およびプルーニング損失Ls(b)が方法1と同じ方法で計算される。プルーニング率pおよび統合率uが与えられると、この層のブロックは、Ls(b)に従ってアクセント順にランク付けされ、上位p%のブロックがプルーニング対象の{bs}として選択される。この層の残りのブロックに対して、統合損失Lu(b)に基づいてアクセント順にランク付けされ、上位u%を統合対象の{bu}として選択する。
【0113】
方法4では、重み係数WおよびマスクMをもつ各々の層に対して、Wの各々のブロックbに対して、統合損失Lu(b)およびプルーニング損失Ls(b)が方法1と同じ方法で計算される。プルーニング率pおよび統合率uが与えられると、すべてのブロックがLs(b)に従って、DNNモデルのすべての層からアクセント順にランク付けされ、上位p%のブロックがプルーニング対象として選択される。モデル全体の残りのブロックに対して、統合損失Lu(b)に基づいてアクセント順にランク付けされ、その後、上位u%を統合対象として選択する。
【0114】
プルーニング微細構造のセットと統合微細構造のセットを取得した後、ターゲットは、式(11)で記述されている結合損失を繰り返し最小化することにより、更新された最適な重み係数W
*と対応する重みマスクM
*のセットを見つけることになる。
図4Dによって示される第1の実施形態では、t回目の反復に対して、現在の重み係数W(t-1)が存在する。また、微細構造的統合マスクU(t-1)および微細構造的プルーニングマスクP(t-1)は、訓練プロセス全体を通じて維持される。U(t-1)とP(t-1)はどちらもW(t-1)と同じ形状であり、対応する重み係数がそれぞれ統合されているかプルーニングされているかを記録する。次に、重みプルーニング/統合モジュール460は、P(t-1)によってマスクされた選択されたプルーニング微細構造がプルーニングされ、マスクされた選択された統合微細構造の重みがU(t-1)によって統合され、結果として更新された重みマスクM
PU(t-1)が得られる、重みプルーニングおよび統合プロセスを通じて、プルーニングされて統合された重み係数W
PU(t-1)を計算する。実施形態では、M
PU(t-1)は、事前プルーニングされた重み係数と事前プルーニングされていない重み係数の両方を有するブロックに対して、元々プルーニングされていた重み係数が重み統合子によって再び非ゼロ値を有するように設定され、M
PU(t-1)の対応する項目が変更される、事前訓練プルーニングマスクMとは異なる。別の一実施形態では、M
PU(t-1)は、プルーニングされた重み係数とプルーニングされていない重み係数の両方を有するブロックに対して、プルーニングされていない重みのみがリセットされ、プルーニングされた重みはゼロのままであるMと同じである。
【0115】
次に、第2のステップにおいて、重み更新モジュール465は、U(t-1)およびP(t-1)によって微細構造的に統合または微細構造的にプルーニングされたものとしてマークされた重み係数を固定し、次にニューラルネットワーク訓練プロセスを通じてW(t-1)の残りの非固定の重み係数を更新し、その結果、更新されたW(t)およびM(t)を得る。
【0116】
具体的には、D={(x、y)}が訓練データセットを表すものとし、ここで、Dは、事前訓練された重み係数Wが取得される元のデータセットD
0={(x
0、y
0)}と同じにすることができる。Dは、D
0とは異なるデータセットにすることもできるが、元のデータセットDと同じデータ分布となる。第2のステップでは、ネットワーク前方計算モジュール415は、現在の重み係数W
U(t-1)およびマスクMを使用するネットワーク前方計算プロセスを介して現在のネットワークを通じて各々の入力xを渡し、これにより推定出力
【数35】
が生成される。グラウンドトゥルースアノテーションyと推定出力
【数36】
に基づいて、ターゲット損失計算モジュール420は、ターゲット損失計算プロセスを通じて、式(11)のターゲット訓練損失£
T(D|Θ)を計算する。次に、勾配計算モジュール425は、ターゲット損失G(W
U(t-1))の勾配を計算する。tensorflowまたはpytorchなどの深層学習フレームワークによって使用される自動勾配計算方法を使用してG(W
U(t-1))を計算できる。勾配G(W
U(t-1))および微細構造的統合マスクU(t-1)および微細構造的プルーニングマスクP(t-1)に基づいて、重み更新モジュール465は、バックプロパゲーションおよび重み更新プロセスを使用したバックプロパゲーションを通じて、W
U(t-1)の非固定重み係数を更新する。再訓練プロセスは、それ自体が反復プロセスでもある。W
U(t-1)の非固定部分を更新するために、例えば、ターゲット損失が収束するまで、複数の反復が行われる。次に、システムは、新しい統合比u(t)およびプルーニング比p(t)が与えられると、新しい一連の統合微細構造およびプルーニング微細構造(ならびに新しい微細構造的統合マスクU(t)および微細構造的プルーニングマスクP(t))が、プルーニングおよび統合微細構造選択プロセスを通して決定される、次の反復tに進む。
【0117】
図4Eによって示される訓練プロセスの第2の実施形態では、更新された最適な重み係数W
*および対応する重みマスクM
*のセットは、別の反復プロセスによって見出される。t回目の反復では、現在の重み係数W(t-1)およびマスクMが存在する。また、マスク計算モジュール470は、プルーニングおよび統合マスク計算プロセスを介して、微細構造的統合マスクU(t-1)および微細構造的プルーニングマスクP(t-1)を計算する。U(t-1)とP(t-1)はどちらもW(t-1)と同じ形状であり、対応する重み係数がそれぞれ統合されているかプルーニングされているかを記録する。次に、重みプルーニング/統合モジュール460は、P(t-1)によってマスクされた選択されたプルーニング微細構造がプルーニングされ、マスクされた選択された統合微細構造の重みがU(t-1)によって統合され、その結果、更新された重みマスクM
PU(t-1)が得られる、重みプルーニングおよび統合プロセスを通じて、プルーニングされて統合された重み係数W
PU(t-1)を計算する。
【0118】
次に、第2のステップにおいて、重み更新モジュール465は、U(t-1)およびP(t-1)によって微細構造的に統合または微細構造的にプルーニングされたものとしてマークされた重み係数を固定し、次にニューラルネットワーク訓練プロセスを通じてW(t-1)の残りの非固定の重み係数を更新し、結果として、更新されたW(t)を得る。
図4Dの第1の実施形態と同様に、訓練データセットD={(x、y)}が与えられると、ネットワーク前方計算モジュール415は、現在の重み係数W(t-1)およびマスクM(t-1)を使用したネットワーク前方計算プロセスを介して現在のネットワークを通じて各々の入力xを渡し、これにより推定出力
【数37】
が生成される。グラウンドトゥルースアノテーションyと推定出力
【数38】
に基づいて、ターゲット損失計算モジュール420は、式(5)で説明されているように、結合損失計算プロセスを通して、式(11)のターゲット訓練損失£
T(D|Θ)を含む結合訓練損失£
J(D|Θ)および残差損失£
res(W(t-1))を計算する。
【0119】
£res(W(t-1))は、現在の重みW(t-1)と、プルーニングされて統合されたターゲットの重みWPU(t-1)との差を測定する。例えば、L1ノルムを使用できる。
£res(W(t-1))=||W(t-1))-WPU(t-1)|| (14)
【0120】
次に、勾配計算モジュール425は、結合損失G(W(t-1))の勾配を計算する。tensorflowまたはpytorchなどの深層学習フレームワークによって使用される自動勾配計算方法を使用してG(W(t-1))を計算できる。勾配G(W(t-1))および微細構造的統合マスクU(t-1)および微細構造的プルーニングマスクP(t-1)に基づいて、重み更新モジュール465は、バックプロパゲーションおよび重み更新プロセスを使用したバックプロパゲーションを通じて、W(t-1)の非固定重み係数を更新する。再訓練プロセスは、それ自体が反復プロセスでもある。W(t-1)の非固定部分を更新するために、例えば、ターゲット損失が収束するまで、複数の反復が行われる。次に、システムは、統合比u(t)およびプルーニング比p(t)が与えられると、新しい一連の統合微細構造およびプルーニング微細構造(ならびに新しい微細構造的統合マスクU(t)および微細構造的プルーニングマスクP(t))が、プルーニングおよび統合微細構造選択プロセスを通して決定される、次の反復tに進む。
【0121】
この反復プロセス全体で、T回目の反復で、P(T)によってマスクされた選択されたプルーニング微細構造がプルーニングされ、マスクされた選択された統合微細構造の重みがU(T)によって統合され、更新された重みマスクM
PU(T)が生成される、重みプルーニングおよび統合プロセスを通じて、プルーニングされて統合された重み係数W
PU(T)を計算できる。
図4Dの前の実施形態と同様に、M
PU(T)は、プルーニングされた重み係数とプルーニングされていない重み係数の両方を有するブロックに対して、元々プルーニングされていた重み係数は、重み統合子によって再び非ゼロ値を有するように設定され、M
PU(T)の対応する項目が変更される、事前プルーニングマスクMと同じにすることができる。また、M
PU(T)はMと同じにすることができ、この場合、プルーニングされた重み係数とプルーニングされていない重み係数の両方をもつブロックに対して、プルーニングされていない重みのみがリセットされ、プルーニングされた重みはゼロのままになる。このW
PU(T)およびM
PU(T)を使用して、更新された最終モデルW
*およびM
*を生成できる。例えば、W
*=W
PU(T)、およびM
*=M・M
PU(T)である。
【0122】
実施形態では、ハイパーパラメータu(t)およびp(t)は、tが増加するにつれて反復中にそれらの値を増加させることができ、その結果、反復学習プロセス全体を通して、ますます多くの重み係数がプルーニングされ、統合され、固定される。
【0123】
統合正則化は、学習された重み係数のさらなる圧縮の効率を改善し、最適化された重み係数を使用するための計算を高速化することを目的としている。これにより、DNNモデルのサイズを大幅に削減し、推論の計算を高速化できる。
【0124】
反復的な再訓練プロセスを通じて、この方法は元の訓練ターゲットのパフォーマンスを効果的に維持し、圧縮および計算の効率を追求できる。反復的な再訓練プロセスにより、様々な時間に様々な損失を導入できる柔軟性が得られ、システムは最適化プロセス中に様々なターゲットに焦点を合わせることができる。
【0125】
この方法は、様々なデータ形式を有するデータセットに適用できる。入力/出力データは4Dテンソルであり、これは、実際のビデオセグメント、画像、または抽出された特徴マップとすることができる。
【0126】
図5は、実施形態に係る、微細構造化重みプルーニング・重み統合を伴うニューラルネットワークモデルの圧縮を訓練する方法500のフローチャートである。
【0127】
いくつかの実装形態では、
図5の1つまたは複数のプロセスブロックは、プラットフォーム120によって実行され得る。いくつかの実装形態では、
図5の1つまたは複数のプロセスブロックは、ユーザデバイス110などのプラットフォーム120とは別の、またはプラットフォーム120を含む別のデバイスまたはデバイスのグループによって実行され得る。
【0128】
方法500は、出力ニューラルネットワークを得るために、入力ニューラルネットワークのパラメータを削減するために使用されるディープニューラルネットワークを訓練するために実行される。
【0129】
図5に示すように、操作510において、方法500は、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングされるプルーニング微細構造ブロックを選択することを含む。
【0130】
操作520において、方法500は、選択されたプルーニング微細構造ブロックに基づいて、入力重みをプルーニングすることを含む。
【0131】
操作530において、方法500は、選択されたプルーニング微細構造ブロックに基づいて、入力マスクと、各々の入力重みがプルーニングされるかどうかを示すプルーニングマスクとを更新することを含む。
【0132】
操作540において、方法500は、ディープニューラルネットワークの損失を最小化するために、更新されたプルーニングマスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを更新することを含む。
【0133】
プルーニングされた入力重みおよび更新された入力マスクの更新は、入力重みがプルーニングされ、更新された入力マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定することと、プルーニングされた入力重みに基づいて、決定された損失の勾配を決定することと、決定された損失を最小化するために、決定された勾配および更新されたプルーニングマスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを更新することを含み得る。
【0134】
ディープニューラルネットワークは、入力マスクによってマスクされた入力重みを再形成することと、再形成された入力重みを入力重みの複数のブロックに分割することと、再形成された入力重みが分割される複数のブロックのうちの1つまたは複数の中の複数の重みを入力重みの間で統合することと、複数のブロックのうちの1つまたは複数の中の統合された複数の重みに基づいて、入力マスクと、入力重みの各々が統合されているかどうかを示す統合マスクとを更新することと、ディープニューラルネットワークの損失を最小化するために、更新された統合マスクに基づいて、更新された入力マスクと、複数のブロックのうちの1つまたは複数の中の複数の重みが統合された入力重みとを更新することとによってさらに訓練され得る。
【0135】
更新された入力マスクおよび入力重みの更新は、入力重みが統合され、更新された入力マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定することと、複数のブロックのうちの1つまたは複数の中の複数の重みが統合されている入力重みに基づいて、決定された損失の勾配を決定することと、決定された損失を最小化するために、決定された勾配および更新された統合マスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを更新することを含み得る。
【0136】
ディープニューラルネットワークは、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択することと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合することと、複数のブロックのうちの1つまたは複数の中の統合された複数の重みに基づいて、入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され得る。入力マスクを更新することは、プルーニング統合マスクを取得するために、選択されたプルーニング微細構造ブロックおよび選択された統合微細構造ブロックに基づいて、入力マスクを更新することを含み得る。プルーニングされた入力重みおよび更新された入力マスクを更新することは、ディープニューラルネットワークの損失を最小化するために、更新されたプルーニングマスクおよび更新された統合マスクに基づいて、プルーニングされて統合された入力重みおよびプルーニング統合マスクを更新することを含み得る。
【0137】
プルーニングされて統合された入力重みおよびプルーニング統合マスクの更新は、プルーニングされて統合された入力重みがプルーニング統合マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減することと、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定することと、複数のブロックのうちの1つまたは複数の中の複数の重みが統合されている入力重みに基づいて、決定された損失の勾配を決定することと、決定された損失を最小化するために、決定された勾配、更新されたプルーニングマスク、および更新された統合マスクに基づいて、プルーニングされて統合された入力重みおよびプルーニング統合マスクを更新することを含み得る。
【0138】
プルーニング微細構造ブロックは、各々の反復に対してプルーニングされる入力重みの所定のプルーニング比に基づいて、入力マスクによってマスクされた入力重みの複数のブロックから選択され得る。
【0139】
図6は、実施形態による、微細構造化重みプルーニング・重み統合を伴うニューラルネットワークモデルの圧縮を訓練するための装置600の図である。
【0140】
図6に示されるように、装置600は、選択コード610、プルーニングコード620、第1の更新コード630、および第2の更新コード640を含む。
【0141】
装置600は、出力ニューラルネットワークを得るために、入力ニューラルネットワークのパラメータを削減するために使用されるディープニューラルネットワークを訓練する。
【0142】
選択コード610は、入力マスクによってマスクされたディープニューラルネットワークの入力重みの複数のブロックから、プルーニングされるプルーニング微細構造ブロックを少なくとも1つのプロセッサに選択させるように構成される。
【0143】
プルーニングコード620は、選択されたプルーニング微細構造ブロックに基づいて、少なくとも1つのプロセッサに入力重みをプルーニングさせるように構成される。
【0144】
第1の更新コード630は、選択されたプルーニング微細構造ブロックに基づいて、入力マスクと、入力重みの各々がプルーニングされるかどうかを示すプルーニングマスクとを少なくとも1つのプロセッサに更新させるように構成される。
【0145】
第2の更新コード640は、ディープニューラルネットワークの損失を最小限にするために、更新されたプルーニングマスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを少なくとも1つのプロセッサに更新させるように構成される。
【0146】
第2の更新コード640は、入力重みがプルーニングされ、更新された入力マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減し、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定し、プルーニングされた入力重みに基づいて、決定された損失の勾配を決定し、決定された損失を最小化するために、決定された勾配および更新されたプルーニングマスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを更新することを少なくとも1つのプロセッサにさせるようにさらに構成され得る。
【0147】
ディープニューラルネットワークは、入力マスクによってマスクされた入力重みを再形成することと、再形成された入力重みを入力重みの複数のブロックに分割することと、再形成された入力重みが分割される複数のブロックのうちの1つまたは複数の中の複数の重みを入力重みの間で統合することと、複数のブロックのうちの1つまたは複数の中の統合された複数の重みに基づいて、入力マスクと、入力重みの各々が統合されているかどうかを示す統合マスクとを更新することと、ディープニューラルネットワークの損失を最小化するために、更新された統合マスクに基づいて、更新された入力マスクと、複数のブロックのうちの1つまたは複数の中の複数の重みが統合された入力重みとを更新することとによってさらに訓練され得る。
【0148】
第2の更新コード640は、入力重みが統合され、更新された入力マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減し、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定し、複数のブロックのうちの1つまたは複数の中の複数の重みが統合されている入力重みに基づいて、決定された損失の勾配を決定し、決定された損失を最小化するために、決定された勾配および更新された統合マスクに基づいて、プルーニングされた入力重みおよび更新された入力マスクを更新することを少なくとも1つのプロセッサにさせるようにさらに構成され得る。
【0149】
ディープニューラルネットワークは、入力マスクによってマスクされた入力重みの複数のブロックから、統合される統合微細構造ブロックを選択することと、ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、選択された統合微細構造ブロックに基づいて、プルーニングされた入力重みの複数のブロックのうちの1つまたは複数の中で複数の重みを統合することと、複数のブロックのうちの1つまたは複数の中の統合された複数の重みに基づいて、入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され得る。入力マスクを更新することは、プルーニング統合マスクを取得するために、選択されたプルーニング微細構造ブロックおよび選択された統合微細構造ブロックに基づいて、入力マスクを更新することを含み得る。プルーニングされた入力重みおよび更新された入力マスクを更新することは、ディープニューラルネットワークの損失を最小化するために、更新されたプルーニングマスクおよび更新された統合マスクに基づいて、プルーニングされて統合された入力重みおよびプルーニング統合マスクを更新することを含み得る。
【0150】
第2の更新コード640は、プルーニングされて統合された入力重みがプルーニング統合マスクによってマスクされているディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減し、推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、ディープニューラルネットワークの損失を決定し、複数のブロックのうちの1つまたは複数の中の複数の重みが統合されている入力重みに基づいて、決定された損失の勾配を決定し、決定された損失を最小化するために、決定された勾配、更新されたプルーニングマスク、および更新された統合マスクに基づいて、プルーニングされて統合された入力重みおよびプルーニング統合マスクを更新することを少なくとも1つのプロセッサにさせるようにさらに構成され得る。
【0151】
プルーニング微細構造ブロックは、各々の反復に対してプルーニングされる入力重みの所定のプルーニング比に基づいて、入力マスクによってマスクされた入力重みの複数のブロックから選択され得る。
【0152】
前述の開示は、例示および説明を提供しているが、網羅的であることも、実装形態を開示の正確な形態に限定することも意図されていない。改変形態および変形形態が、上記の開示に照らして可能であり、または実装形態の実施により取得され得る。
【0153】
本明細書で使用される場合、コンポーネントという用語は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアの組み合わせとして広く解釈されることを意図されている。
【0154】
本明細書に記載のシステムおよび/または方法は、ハードウェア、ファームウェア、またはハードウェアとソフトウェアとの組み合わせの異なる形態で実装されてもよいことは明らかであろう。これらのシステムおよび/または方法を実装するために使用される実際の専用の制御ハードウェアまたはソフトウェアコードは、実装形態を限定するものではない。したがって、システムおよび/または方法の動作および挙動は、特定のソフトウェアコードを参照することなく本明細書に記載されており、ソフトウェアおよびハードウェアは、本明細書の記載に基づいてシステムおよび/または方法を実装するように設計され得ることが理解される。
【0155】
構成の組み合わせが特許請求の範囲に記載され、および/または本明細書に開示されているが、これらの組み合わせは、可能な実装形態の開示を限定することを意図するものではない。実際、これらの特徴の多くは、特許請求の範囲に具体的に記載されていない、および/または明細書に開示されていない方法で組み合わされてもよい。以下に列挙される各従属請求項は1つの請求項のみに直接依存してもよいが、可能な実装形態の開示は、各従属請求項を請求項セット内の他のすべての請求項と組み合わせて含む。
【0156】
本明細書で使用されている要素、行為、または指示は、明示的に説明されていない限り、重要または必須であると解釈され得ない。また、本明細書で使用される場合、冠詞「a」および「an」は、1つまたは複数の項目を含むことを意図しており、「1つまたは複数」と交換可能に使用され得る。さらに、本明細書で使用される場合、「セット」という用語は、1つまたは複数の項目(例えば、関連項目、無関係な項目、関連項目と無関係な項目との組み合わせなど)を含むことを意図しており、「1つまたは複数」と互換的に使用され得る。1つの項目のみが意図される場合、「1つ」という用語または同様の用語が使用される。また、本明細書で使用される場合、「有する(has)」、「有する(have)」、「有する(having)」などの用語は、オープンエンド用語であることを意図している。さらに、「based on(に基づいて)」という語句は、特に明記されない限り、「based,at least in part,on(に少なくとも部分的に基づいて)」を意味することを意図されている。
【符号の説明】
【0157】
100 環境
110 ユーザデバイス
120 プラットフォーム
130 ネットワーク
122 クラウドコンピューティング環境
124 コンピューティングリソース
124-1 アプリケーション
124-2 仮想マシン
124-3 仮想化ストレージ
124-4 ハイパーバイザ
200 デバイス
210 バス
220 プロセッサ
230 メモリ
240 ストレージコンポーネント
250 入力コンポーネント
260 出力コンポーネント
270 通信インターフェイス
300 システム
310 パラメータ削減モジュール
320 パラメータ近似モジュール
330 再構築モジュール
340 エンコーダ
350 デコーダ
400A 訓練装置
400B 訓練装置
400C 訓練装置
400D 訓練装置
400E 訓練装置
405 微細構造選択モジュール
410 重みプルーニングモジュール
415 ネットワーク前方計算モジュール
420 ターゲット損失計算モジュール
425 勾配計算モジュール
430 重み更新モジュール
435 マスク計算モジュール
440 再形成モジュール
445 重み統合モジュール
450 重み更新モジュール
455 微細構造選択モジュール
460 重みプルーニング/統合モジュール
465 重み更新モジュール
470 マスク計算モジュール
600 装置
610 選択コード
620 プルーニングコード
630 第1の更新コード
640 第2の更新コード
【手続補正書】
【提出日】2022-04-19
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
ニューラルネットワークモデルの圧縮の方法であって、前記方法は、少なくとも1つのプロセッサによって実行され、前記方法は、
入力ニューラルネットワークおよび入力マスクを受信するステップと、
ディープニューラルネットワークを使用して、前記入力ニューラルネットワークのパラメータを削減するステップであって、前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記ディープニューラルネットワークの入力重みの複数のブロックから、プルーニングするプルーニング微細構造ブロックを選択するステップと、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力重みをプルーニングするステップと、
前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから、統合される統合微細構造ブロックを選択するステップと、
前記ディープニューラルネットワークの、プルーニングされて統合された入力重みを取得するために、前記選択された統合微細構造ブロックに基づいて、前記プルーニングされた入力重みの前記複数のブロックのうちの1つまたは複数の中で複数の重みを統合するステップとによって訓練される、削減する前記ステップと、
前記入力ニューラルネットワークと、前記ディープニューラルネットワークの前記プルーニングされて統合された入力重みとに基づいて、前記削減されたパラメータを有する出力ニューラルネットワークを取得するステップとを含む、方法。
【請求項2】
前記ディープニューラルネットワークは、
前記選択されたプルーニング微細構造ブロックに基づいて、前記入力マスクと、前記入力重みの各々がプルーニングされるかどうかを示すプルーニングマスクとを更新するステップと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新されたプルーニングマスクに基づいて、前記プルーニングされた入力重みと前記更新された入力マスクとを更新するステップによってさらに訓練される、請求項1に記載の方法。
【請求項3】
前記ディープニューラルネットワークは、
前記入力マスクによってマスクされた前記入力重みを再形成するステップと、
前記再形成された入力重みを前記入力重みの前記複数のブロックに分割するステップと、
前記再形成された入力重みが分割される前記複数のブロックのうちの1つまたは複数の中の複数の重みを前記入力重みの間で統合するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力マスクと、前記入力重みの各々が統合されているかどうかを示す統合マスクとを更新するステップと、
前記ディープニューラルネットワークの損失を最小化するために、前記更新された統合マスクに基づいて、前記更新された入力マスクと、前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合された前記入力重みとを更新するステップとによってさらに訓練される、請求項1に記載の方法。
【請求項4】
前記更新された入力マスクおよび前記入力重みを更新する前記ステップは、
前記入力重みが統合され、前記更新された入力マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減するステップと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定するステップと、
前記決定された損失を最小化するために、前記決定された勾配および前記更新された統合マスクに基づいて、前記プルーニングされた入力重みおよび前記更新された入力マスクを更新するステップとを含む、請求項3に記載の方法。
【請求項5】
前記ディープニューラルネットワークは、前記複数のブロックのうちの前記1つまたは複数の中の前記統合された複数の重みに基づいて、前記入力重みの各々が統合されているかどうかを示す統合マスクを更新することによって、さらに訓練され、
前記入力マスクを更新する前記ステップは、プルーニング統合マスクを取得するために、前記選択されたプルーニング微細構造ブロックおよび前記選択された統合微細構造ブロックに基づいて、前記入力マスクを更新するステップを含み、
前記プルーニングされた入力重みおよび前記更新された入力マスクを更新する前記ステップは、前記ディープニューラルネットワークの前記損失を最小化するために、前記更新されたプルーニングマスクおよび前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新するステップを含む、請求項2に記載の方法。
【請求項6】
前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新する前記ステップは、
前記プルーニングされて統合された入力重みが、前記プルーニング統合マスクによってマスクされている前記ディープニューラルネットワークを使用して、第2の訓練ニューラルネットワークを推定するために、第1の訓練ニューラルネットワークのパラメータを削減するステップと、
前記推定された第2の訓練ニューラルネットワークおよびグラウンドトゥルースニューラルネットワークに基づいて、前記ディープニューラルネットワークの前記損失を決定するステップと、
前記複数のブロックのうちの前記1つまたは複数の中の前記複数の重みが統合されている前記入力重みに基づいて、前記決定された損失の勾配を決定するステップと、
前記決定された損失を最小化するために、前記決定された勾配、前記更新されたプルーニングマスク、および前記更新された統合マスクに基づいて、前記プルーニングされて統合された入力重みおよび前記プルーニング統合マスクを更新するステップとを含む、請求項5に記載の方法。
【請求項7】
前記プルーニング微細構造ブロックは、各々の反復に対してプルーニングされる前記入力重みの所定のプルーニング比率に基づいて、前記入力マスクによってマスクされた前記入力重みの前記複数のブロックから選択される、請求項1に記載の方法。
【請求項8】
請求項1から7のいずれか一項に記載の方法を実行するように構成された装置。
【請求項9】
ニューラルネットワークモデルの圧縮のために少なくとも1つのプロセッサによって実行されるとき、
請求項1から7のいずれか一項に記載の方法を前記少なくとも1つのプロセッサに実行させるためのコンピュータプログラム。
【国際調査報告】