(57)【要約】      （修正有）【課題】多階層ニューラルネットワークモデルを最適化して多階層ニューラルネットワークモデルを演算するために必要なプロセッサ資源を削減するための方法を提供する。【解決手段】多階層ニューラルネットワークモデルを最適化して適用する方法は、最適化される多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割する。分割されたサブ構造の末尾の階層は量子化層である。そして、分割されたサブ構造のそれぞれについて、量子化層以外の階層における演算パラメータを量子化層に転送し、転送された演算パラメータに基づいて、量子化層における量子化閾値パラメータを更新する。この最適化方法に基づいて最適化された多階層ニューラルネットワークモデルが動作すると、必要なプロセッサ資源を削減することができる。【選択図】図４（ｂ）
2019160319.tif 000002
【特許請求の範囲】
【請求項１】
多階層ニューラルネットワークモデルを最適化する装置であって、
前記多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割するサブ構造分割モジュールであって、ここで、前記分割されたサブ構造の末尾の階層は量子化層であり、
前記分割されたサブ構造のそれぞれについて、前記量子化層以外の階層における演算パラメータを前記量子化層に転送し、前記転送された演算パラメータに基づいて、前記量子化層における量子化閾値パラメータを更新するデータ転送モジュールと
を備えることを特徴とする装置。
【請求項２】
畳み込み層は、前記分割されたサブ構造に含まれていることを特徴とする請求項１に記載の装置。
【請求項３】
前記分割されたサブ構造における先頭層は畳み込み層であることを特徴とする請求項２に記載の装置。
【請求項４】
前記データ転送モジュールは、階層のそれぞれにおける前記演算パラメータが前記量子化層に転送されるまで、前記サブ構造における前記量子化層以外の階層のそれぞれについて、最上層から最下層まで上層の前記演算パラメータを下層へと転送することを特徴とする請求項１に記載の装置。
【請求項５】
畳み込み層が前記分割されたサブ構造に含まれている場合、前記データ転送モジュールは、前記畳み込み層から前記量子化層に転送されるパラメータスケーリング係数に基づいて、前記量子化層における前記量子化閾値パラメータを更新することを特徴とする請求項１に記載の装置。
【請求項６】
畳み込み層が前記分割されたサブ構造に含まれている場合、前記データ転送モジュールは、前記畳み込み層から前記量子化層に転送されるオフセットパラメータに基づいて、前記量子化層における前記量子化閾値パラメータを更新することを特徴とする請求項１に記載の装置。
【請求項７】
前記更新された量子化閾値パラメータは、基本係数、シフト係数、および前記基本係数に対する前記量子化閾値パラメータ間の相関関係により表されることを特徴とする請求項１に記載の装置。
【請求項８】
更に、
前記量子化層に対して前記演算パラメータが完全に転送された階層を、前記サブ構造から削除するサブ構造簡単化モジュールを備えることを特徴とする請求項１に記載の装置。
【請求項９】
更に、
浮動小数点演算パラメータが固定小数点パラメータに変換されるように、前記多階層ニューラルネットワークモデルにおける階層のそれぞれについて固定小数点処理を実行する固定小数点モジュールを備えることを特徴とする請求項１に記載の装置。
【請求項１０】
多階層ニューラルネットワークモデルを適用する装置であって、
前記多階層ニューラルネットワークモデルを保存する保存モジュールと、
前記多階層ニューラルネットワークモデルにより実行されることが可能なタスク要求に対応するデータセットを、前記保存された多階層ニューラルネットワークモデルに入力する入力モジュールと、
前記多階層ニューラルネットワークモデルにおける最上層から最下層の階層のそれぞれにおいて前記データセットを演算して結果を出力する演算モジュールと
を備えることを特徴とする装置。
【請求項１１】
前記保存モジュールに保存されている前記多階層ニューラルネットワークモデルにおける量子化閾値パラメータは基本係数、シフト係数、および前記基本係数に対する前記量子化閾値パラメータ間の相関関係、により表され、
前記演算モジュールは更に、前記入力データセットが前記ネットワークモデルにおける最上層から最下層までの前記量子化層に対して演算される場合に、前記基本係数、前記シフト係数、および前記基本係数に対する前記量子化閾値パラメータ間の相関関係、を用いて、前記量子化閾値パラメータを決定し、前記決定した量子化閾値パラメータに基づいて、前記データセットに対して量子化処理を行うことを特徴とする請求項１０に記載の装置。
【請求項１２】
前記保存モジュールに保存されている前記多階層ニューラルネットワークモデルは、請求項１に記載の前記装置により最適化される多階層ニューラルネットワークモデルであることを特徴とする請求項１０に記載の装置。
【請求項１３】
多階層ニューラルネットワークモデルを最適化する方法であって、
前記多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割することと、ここで、前記分割されたサブ構造の末尾の階層は量子化層であり、
前記分割されたサブ構造のそれぞれについて、前記量子化層以外の階層における演算パラメータを前記量子化層に転送し、前記転送された演算パラメータに基づいて、前記量子化層における量子化閾値パラメータを更新することと
を有することを特徴とする方法。
【請求項１４】
多階層ニューラルネットワークモデルを適用する方法であって、
前記多階層ニューラルネットワークモデルを保存することと、
前記多階層ニューラルネットワークモデルにより実行されることが可能なタスク要求に対応するデータセットを、前記保存された多階層ニューラルネットワークモデルに入力することと、
前記多階層ニューラルネットワークモデルにおける最上層から最下層の階層のそれぞれにおいて前記データセットを演算して結果を出力することと
を有することを特徴とする方法。
【請求項１５】
コンピュータにより実行された場合に多階層ニューラルネットワークモデルを最適化する方法を前記コンピュータに実行させるための命令を格納している非一時的なコンピュータ読み取り可能な記憶媒体であって、前記方法は、
最適化される前記多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割することと、ここで、前記分割されたサブ構造の末尾の階層は量子化層であり、
前記分割されたサブ構造のそれぞれについて、前記量子化層以外の階層における演算パラメータを前記量子化層に転送し、前記転送された演算パラメータに基づいて、前記量子化層における量子化閾値パラメータを更新することと
を有することを特徴とする非一時的なコンピュータ読み取り可能な記憶媒体。
【請求項１６】
コンピュータにより実行された場合に多階層ニューラルネットワークモデルを適用する方法を前記コンピュータに実行させるための命令を格納している非一時的なコンピュータ読み取り可能な記憶媒体であって、前記方法は、
前記多階層ニューラルネットワークモデルを保存することと、
前記多階層ニューラルネットワークモデルにより実行されることが可能なタスク要求に対応するデータセットを、前記保存された多階層ニューラルネットワークモデルに入力することと、
前記多階層ニューラルネットワークモデルにおける最上層から最下層の階層のそれぞれにおいて前記データセットを演算して結果を出力することと
を有することを特徴とする非一時的なコンピュータ読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、多階層ニューラルネットワークのモデリング分野に関し、特に、プロセッサ資源を節約するために多階層ニューラルネットワークモデルを最適化して適用する方法及び装置、および記憶媒体に関する。
【背景技術】
【０００２】
人工知能（Artificial Intelligence (AI)）の分野において、深層学習（Deep Learning）に基づくネットワークアーキテクチャは、今のところ最も広く用いられているアーキテクチャのうちの１つである。深層学習に基づくネットワークアーキテクチャは、実際には、画像と対応する記述データのセットもしくは音声と対応する記述データのセット等、規定の学習セットを用いて多階層ニューラルネットワークモデルを生成する多階層ニューラルネットワーク構造である。多階層ニューラルネットワークモデルにおける階層のそれぞれは、２つの近接した階層において上層のニューロン演算の結果が下層のニューロン演算の入力として用いられるニューロン演算を含み、これにより最上層から最下層まで学習し、それ故に多階層ニューラルネットワークモデルをモデリングする。モデリングの手順において、１つの階層が学習されるたびに、パラメータは、よりよい性能を有する多階層ニューラルネットワークモデルを得るために、誤差逆伝搬(back propergaton)の方法を用いることで細かく調整される。
【０００３】
畳み込みニューラルネットワーク(convolutional neural netork (CNN))モデルは、今のところ最も一般的に使用されている多階層ニューラルネットワークモデルである。コンピュータビジョン、コンピュータ聴覚（computer audiory）、および自然言語処理の技術分野では、畳み込みニューラルネットワークモデルは広く使用されてきた。しかし、近年モデリングされている多階層ニューラルネットワークモデルでは、その演算は大量のメモリのオーバーヘッドを引き起こし、多数のプロセッサ資源を占める。多階層ニューラルネットワークモデルがＧＰＵベースのワークステーションやサーバ上で演算される場合にはよりよいデータ処理効果が得られるのであるが、ネットワークモデルが演算されるときに占めるプロセッサ資源を削減することは未だ、ネットワークモデルの性能を改善するという目的の１つである。一方、スマートフォンおよびタブレット等現在の組み込み機器のプロセッサ資源は限られているため、より効率的な演算を行うために固定小数点数（整数）を使用しがちである。この場合、ネットワークにおける各階層における浮動小数点のパラメータを固定小数点パラメータに変換して組み込み機器の動作要求に適応するために固定小数点演算を使用する必要がある。しかし、固定小数点演算は劣化を伴う演算であるから、ニューラルネットワークにおける固定小数点演算を階層ごとに実行することにより全体システムに累積誤差をもたらし、結果的にシステム性能における大幅な悪化をもたらす。従って、多階層ニューラルネットワークモデルは、組み込み機器上ではほとんど演算されていない。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上記の従来の多階層ニューラルネットワークモデルにおいて存在する技術的な問題を考慮し、本発明は、従来の多階層ニューラルネットワークモデルを最適化して多階層ニューラルネットワークモデルを演算するために必要なプロセッサ資源を削減するための方法を提供することを目的とする。
【０００５】
本発明の一様態によれば、多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割するサブ構造分割モジュールであって、分割されたサブ構造の末尾の階層は量子化層であり、量子化層以外の階層における演算パラメータを、分割されたサブ構造のそれぞれについて量子化層に転送し、転送された演算パラメータに基づいて量子化層における量子化閾値パラメータを更新するデータ転送モジュールと、を有することを特徴とする、多階層ニューラルネットワークモデルを最適化する装置が提供される。
【０００６】
本発明の他の様態によれば、多階層ニューラルネットワークモデルを保存する保存モジュールと、保存された多階層ニューラルネットワークモデルに対して、多階層ニューラルネットワークモデルにより実行可能なタスク要求に対応するデータセットを入力する入力モジュールと、多階層ニューラルネットワークモデルにおける最上層から最下層までの階層のそれぞれにおいてデータセットを演算して結果を出力する演算モジュールと、を有することを特徴とする多階層ニューラルネットワークモデルを適用する装置が提供される。
【０００７】
本発明の他の様態によれば、多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割することと、ここで、分割されたサブ構造の末尾の階層は量子化層であり、量子化層以外の階層における演算パラメータを、分割されたサブ構造のそれぞれについて量子化層に転送し、転送された演算パラメータに基づいて量子化層における量子化閾値パラメータを更新することと、を備えることを特徴とする、多階層ニューラルネットワークモデルを最適化する方法が提供される。
【０００８】
本発明の他の様態によれば、多階層ニューラルネットワークモデルを保存することと、保存された多階層ニューラルネットワークモデルに対して、多階層ニューラルネットワークモデルにより実行可能なタスク要求に対応するデータセットを入力することと、多階層ニューラルネットワークモデルにおける最上層から最下層までの階層のそれぞれにおいてデータセットを演算して結果を出力することと、を備えることを特徴とする多階層ニューラルネットワークモデルを適用する方法が提供される。
【０００９】
本発明の他の様態によれば、コンピュータにより実行された場合に、多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割することと、ここで、分割されたサブ構造の末尾の階層は量子化層であり、量子化層以外の階層における演算パラメータを、分割されたサブ構造のそれぞれについて量子化層に転送し、転送された演算パラメータに基づいて量子化層における量子化閾値パラメータを更新することと、を備えることを特徴とする、多階層ニューラルネットワークモデルを最適化する方法を、コンピュータに実行させるための命令を格納した、非一時的なコンピュータ読み取り可能な記憶媒体が提供される。
【００１０】
本発明の更なる特徴は、添付の図面を参照し、以下の例示的な実施形態の説明より明らかとなるだろう。
【図面の簡単な説明】
【００１１】
添付図面は明細書に含まれ、その一部を構成し、本発明の実施形態を示し、その記述と共に本発明の原理を説明するために用いられる。
【図１】図１は、最適化されるバイナリ畳み込みニューラルネットワークモデルの一例を示す。
【図２Ａ】図２Ａは、図１に示されるネットワークモデルのサブ構造を分割するためのネットワークモデルの一例を示す。
【図２Ｂ】図２Ｂは、図２Ａにおけるサブ構造の一部の一例である。
【図２Ｃ】図２Ｃは、図２Ａにおけるサブ構造の一部の一例である。
【図２Ｄ】図２Ｄは、図２Ａを簡略化した後のネットワークモデルの一例を示す。
【図３】図３は、多階層ニューラルネットワークモデルを最適化する装置のハードウェア構成のブロック図を示す。
【図４（ａ）】、
【図４（ｂ）】図４（ａ）および（ｂ）はそれぞれ、多階層ニューラルネットワークモデルを最適化するフローチャートを示す。
【図５Ａ】、
【図５Ｂ】、
【図５Ｃ】、
【図５Ｄ】図５Ａ〜５Ｄは、４種類のサブ構造の例を示す。
【図６】図６は、本発明の実施形態の最適化方法を用いない多階層ニューラルネットワークモデルの演算手順の一部と、本発明の実施形態の最適化方法を用いた多階層ニューラルネットワークモデルの最適化手順の一部と、を示す。
【図７】図７は、多階層ニューラルネットワークモデルを最適化する装置のブロック図を示す。
【図８】図８は、適用装置における演算モジュールの構造を示す。
【発明を実施するための形態】
【００１２】
以下では図面を参照して、本発明の様々な実施形態を詳細に説明する。本発明は、以下に説明する様々な実施形態に限定されないことが理解されるべきである。さらに、本発明の課題を解決するための方法として、様々な実施形態の全てにおいて説明される特徴の組み合わせを含む必要はない。
【００１３】
従来の多階層ニューラルネットワークモデルの構造はたいてい複雑である。その構造を簡略化するために、ネットワークモデルに対して二値化処理が行われる。図１は、二値化処理が行われた畳み込みニューラルネットワークモデルを示す。
【００１４】
図１を参照すると、周知の技術を用いて学習及び生成されたバイナリ畳み込みニューラルネットワークモデルが示されている。図１に示されているバイナリ畳み込みニューラルネットワークモデルが学習及び生成される場合、先ず学習セットがタスク要求に従って入力される。ここで、タスク要求は、バイナリ畳み込みニューラルネットワークモデルをモデリングするために参照され、すなわち、ネットワークモデルは、どのような種類のデータ処理を実行するために使用される。例えば、タスク要求が画像分類処理である場合、バイナリ畳み込みニューラルネットワークモデルは画像を分類するためのデータ処理を実行するために使用され、他に例えばタスク要求が音声認識処理である場合、バイナリ畳み込みニューラルネットワークモデルは音声を認識するためのデータ処理を実行するために使用される。タスク要求が決定された後は、タスク要求にマッチした学習セットが入力される。例えば、タスク要求が画像分類処理である場合、画像及び該画像に対応する記述データ（例えば注釈付きの真値など）のセットが、学習セットとして入力される。他に例えば、タスク要求が音声認識処理である場合、音声及び該音声に対応する記述データのセットが学習セットとして入力される。その後、図１に示されるバイナリ畳み込みニューラルネットワークモデルは、入力された学習セットを用いて規定の学習方法で学習および生成される。生成されたバイナリ畳み込みニューラルネットワークモデルは、以下の２つの特徴の側面を有する。
特徴１：重みパラメータ（重み）が二値化される
演算を簡略化するために、バイナリ畳み込みニューラルネットワークモデルの畳み込み層における重みに対して二値化処理が行われる。すなわち、重みは、重みの符号（正若しくは負）に従って１ビットを用いて表される。ここで、正の値を有する重みは、二値化された後は＋１によって表され、負の値を有する重みは、二値化された後は−１によって表される。さらに、演算精度を考慮すると、フル精度の重み（すなわち、二値化処理を行っていない重み）に基づく演算結果に近い、二値化処理後の重みに基づく演算結果を出すために、言い換えれば、フル精度の重みと畳み込み層に入力される入力特徴マップとの畳み込み演算結果に近い、二値化された重みと畳み込み層に入力される入力特徴マップとの畳み込み演算結果を出すために、１つのスケーリング係数αは畳み込みフィルタの各々に含まれている。このスケーリング係数αは、二値化された重みを用いた演算結果の精度を改善するために使用される。すなわち、二値化された重みとαとの積が、フル精度の重みを近似するために使用される。スケーリング係数αは、以下の式（１）に従って計算される。
【００１５】
【数１】
2019160319.tif 000003
【００１６】
ここで｜Ｗ｜ｌ１はフル精度の重みの場合におけるフィルタに対応するノルムＬ１を示し、ｎはフィルタの重みの数を示す。
【００１７】
上記の式（１）に基づき、後の二値化された重みに基づく畳み込み演算は、以下の式（２）により表される。
【００１８】
【数２】
2019160319.tif 000004
【００１９】
ここでＷｂは、二値の重みが使用される場合における畳み込みフィルタを示し、αは、二値の重みが使用される場合における畳み込みフィルタのスケーリング係数を示し、
【００２０】
【数３】
2019160319.tif 000005
【００２１】
は畳み込み演算を示し、ｂは畳み込み演算のオフセットパラメータを示し、Ｘ１は、畳み込み層に入力される入力特徴マップ（換言すれば、畳み込み層の上層の出力）を示し、Ｙ１は、畳み込み層の出力を示す。
【００２２】
特徴２：入力特徴マップ（特徴マップ）が複数ビットを用いて量子化される
量子化層では、ある量子化閾値法に従って（例えば、特定の量子化閾値パラメータを用いて）、量子化層の上層から入力特徴マップにおける要素のそれぞれが、ｋビットで表される計算空間に量子化（マップ）される。ここでｋは正の整数であり、ｋの選択は、モデリングされる多階層ニューラルネットワークモデルに対する演算精度要求に依存する。ネットワークモデルに対する演算精度要求がより高い場合は、ｋ値が４であるなど、より大きいｋ値が選択され、ネットワークモデルに対する演算精度要求がより低い場合は、ｋ値が２であるなど、より小さいｋ値が選択される。
【００２３】
２であるｋ値を例にとると、量子化層の上層からの入力特徴マップにおける要素のそれぞれから、幾つかの中心点要素が選択され、例えば、０，０．５３８、１．０７６、及び１．６１４が中心点要素として選択され、これらの中心点要素に基づいて、量子化処理中に使用される量子化閾値パラメータが決定される。その後、入力特徴マップにおける要素のそれぞれが、量子化閾値パラメータと比較され、比較の結果に従って、２ビットで表される計算空間に、要素のそれぞれが量子化される。特に、量子化処理は、以下の式（３）に示される量子化閾値法を用いて実行される。
【００２４】
【数４】
2019160319.tif 000006
【００２５】
ここで、Ｘｉは、量子化層の上層からの入力特徴マップにおけるｉ番目の要素を示し、ｉは正の整数であり、Ｙｉは入力特徴マップにおけるｉ番目の要素に対する量子化層の出力を示す。式（３）を見ても分かるように、量子化層において用いられる量子化閾値法は、入力特徴マップにおけるｉ番目の要素が量子化される数値を、０，０．８０７，１．３４５，及び∞の量子化閾値パラメータに基づいて決定するものである。Ｘｉが０未満である場合、ｉ番目の要素は０に量子化される、すなわち、量子化層の出力は０であり、Ｘｉが量子化閾値パラメータ０と０．８０７との間である場合、ｉ番目の要素は０．５３８に量子化される、すなわち、量子化層の出力は０．５３８であり、Ｘｉが量子化閾値パラメータ０．８０７と１．３４５の間である場合、ｉ番目の要素は１．０７６に量子化される、すなわち、量子化層の出力は１．０７６であり、Ｘｉが量子化閾値パラメータ１．３４５よりも大きい場合、ｉ番目の要素は１．６１４に量子化される、すなわち、量子化層の出力は１．６１４である。上記の式（３）に示される量子化演算により、入力特徴マップにおける全ての要素は、量子化層から出力される結果が選択された中心点要素の値となるように、量子化層において選択された中心点要素に量子化（マップ）される。
【００２６】
上記式（３）において、量子化閾値パラメータは、選択された中心点要素を平均化するような方法で計算される。
【００２７】
０．８０７＝（０．５３８＋１．０７６）／２、  １．３４５＝（１．０７６＋１．６１４）／２
もちろん、量子化閾値パラメータを決定する計算方法は、選択された中心点要素を平均化する上記の方法に限らず、他の既知の計算方法を使用しても良い。
【００２８】
上記の式（３）において非零の最小項をβ’として示すと、式（３）はさらに式（４）に展開させることができる。
【００２９】
【数５】
2019160319.tif 000007
【００３０】
ここで、β’＝０．５３８。
【００３１】
ＹｉがさらにＹｉ＝β’Ｙｑとして表され、ここでＹｑはＹｉの対応する整数部の表現であり、その要素の値は０，１，２，または３の整数をとることが、上記の式（４）から分かる。
【００３２】
図１に示されるバイナリ畳み込みニューラルネットワークモデルを用いてデータ処理タスクが実行される場合に、量子化層から出力されて量子化を介してマップされる値が浮動小数点数となることが、上記の式（４）から分かる。従って、量子化層の下層について、入力特徴マップにおける要素のそれぞれが３２ビット浮動小数点数であり、浮動小数点数に対する演算が大量のメモリのオーバーヘッドを引き起こし、多数のプロセッサ資源を占める。一般に、ハードウェアデバイスは、より効率的な演算を達成するために、より整数を使用して演算を実行する傾向があった。これに基づき、本発明は、従来の多階層ニューラルネットワークモデルを最適化する方法を提案する。図４（ａ）を参照すると、先ず、浮動小数点量子化多階層ニューラルネットワークに関して、サブ構造が分割される。分割されたサブ構造の末尾の階層が量子化層の場合（換言すると、本発明の実施形態の方法を用いて処理されることが可能なサブ構造）、その後、本発明の実施形態の方法を用いて固定小数点処理が行われて、これにより固定小数点多階層ニューラルネットワークを得、分割されたサブ構造の末尾の階層が量子化層ではなく活性化層などの他の階層の場合（換言すると、本発明の実施形態の方法を用いて処理されることが不可能なサブ構造）、その後、他の既知のアルゴリズムを用いて処理される。本発明の実施形態における固定小数点処理では、階層のそれぞれにおける演算手順と演算パラメータとが量子化層に転送されて結合量子化形態（joint quantization form）で再構成サブ構造を形成するまで、ネットワークフォワード計算ルール等のアルゴリズムに基づいて、量子化層の前の階層のそれぞれにおけるニューロンの演算中の演算手順と演算パラメータとが同等に、下方に転送され、これにより、量子化層から整数の形態で特徴マップを出力する。これは、多階層ニューラルネットワークモデルの演算中に使用されるサーバ資源を効果的に削減し、メモリのオーバーヘッドを節約する。
【００３３】
本発明の実施形態における多階層ニューラルネットワークモデルを最適化する装置のハードウェア構成について、図３を参照して以下、説明する。
【００３４】
＜多階層ニューラルネットワークモデルを最適化する装置のハードウェア構成＞
図３は、多階層ニューラルネットワークモデルを最適化する装置のハードウェア構成の概略図を示し、装置は、プロセッサユニット１０１、内部メモリユニット１０２、ネットワークインターフェースユニット１０３、入力ユニット１０４、外部メモリユニット１０５、およびバスユニット１０６を含む。
【００３５】
プロセッサユニット１０１は、ＣＰＵもしくはＧＰＵである。メモリユニット１０２は、ランダムアクセスメモリ（ＲＡＭ）およびリードオンリーメモリ（ＲＯＭ）を含む。ＲＡＭは、プロセッサユニット１０１のメインメモリ、ワークエリア等として使用される。ＲＯＭは、プロセッサユニット１０１の制御プログラムを格納するために使用され、加えて、制御プログラムが実行される場合に用いられるファイル若しくは他のデータを格納するためにも用いられる。ネットワークインターフェースユニット１０３は、ネットワークに接続されており、ネットワーク通信を実施する。入力ユニット１０４は、キーボード及びマウスなどのデバイスからの入力を制御する。外部メモリユニット１０５は、起動プログラムおよび各種のアプリケーションなどを格納する。バスユニット１０６は、多階層ニューラルネットワークモデルの最適化を行う装置におけるユニットのそれぞれを接続するために使用される。
【００３６】
本発明の実施形態について、添付の図面を参照して以下に詳細に説明する。
【００３７】
＜第１の実施形態＞
図４（ｂ）に示すように、それは、本発明の第１の実施形態における多階層ニューラルネットワークモデルの最適化の概略フローチャートである。本実施形態では、図４（ｂ）に示される多階層ニューラルネットワークモデルを最適化する処理フローは、ＲＯＭ及び／又は外部メモリユニット１０５に格納されているプログラム（ニューラルネットワーク前方予測アルゴリズムなど）を、ワークメモリとしてＲＡＭを用いてＣＰＵ１０１に実行させることで、実行される。
【００３８】
ステップＳ２０１：前処理ステップ
ステップＳ２０１は多階層ニューラルネットワークモデルの最適化の実行前の前処理であり、その詳細は：最適化される多階層ニューラルネットワークモデルを取得することである。
【００３９】
ステップＳ２０１は、本発明の目的を達成するために必要なステップではないことに注意すべきである。ステップＳ２０１において最適化される必要がある多階層ニューラルネットワークモデルは、既知の方法によりモデル化された多階層ニューラルネットワークモデルである。図１に示されるバイナリ畳み込みニューラルネットワークモデルは、最適化される必要がある多階層ニューラルネットワークモデルの一例である。ステップＳ２０１で取得される多階層ニューラルネットワークモデルは、既知の技術によりモデル化されたネットワークモデルであり、本発明の実施形態はそれに限定されない。
【００４０】
ステップＳ２０２：サブ構造分割ステップ
ステップＳ２０２では、多階層ニューラルネットワークモデルを最適化する処理が開始される。その詳細は：多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割することであり、ここで、分割されたサブ構造のそれぞれの末尾の階層は、量子化層である。
【００４１】
好ましくは、ステップＳ２０１で取得された多階層ニューラルネットワークモデルが、畳み込みニューラルネットワークモデルである場合、畳み込み層は更に、サブ構造において実施される畳み込み処理を行うために、分割されたサブ構造のそれぞれに含まれる。より好ましくは、畳み込み演算をよりよくするために、それぞれのサブ構造の先頭層は畳み込み層であり、最下層は量子化層である。畳み込み層と量子化層との間には、バッチ正規化層、プーリング層、およびスケーリング層などの、他の階層がある。もちろん、畳み込み層と量子化層との間に他の階層が無くてもよく、すなわち、畳み込み層および量子化層のみがサブ構造が順次含められている。図５Ａ〜５Ｄは、４種類のサブ構造の概略図を示す。しかし、本発明の実施形態の方法では、サブ構造の形態は図５Ａ〜５Ｄに示されている構造に限らず、上記の条件を満たすサブ構造が、多階層ニューラルネットワークモデルの実際の構造に従って、多階層ニューラルネットワークモデルから分割される。ステップＳ２０２におけるサブ構造の分割の詳細な例は、後で与えられる。
【００４２】
ステップＳ２０３：データ転送ステップ
ステップＳ２０３では、多階層ニューラルネットワークモデルを最適化する処理が続けられる。その詳細は：分割されたサブ構造のそれぞれについて、末尾の階層（量子化層）以外の階層における演算パラメータを用いて、量子化層における量子化閾値パラメータを更新することである。すなわち、末尾の階層以外の階層における演算パラメータおよび演算手順を量子化層に同等に転送して量子化層における量子化閾値パラメータを更新することである。なお、本発明の実施形態において記載された「転送」とは、本質的には結合操作（a merge operation）である。例えば、Ｎ層を含むサブ構造については、それぞれの階層の出力は、量子化層に転送されるまで、先頭層から開始される次の階層の入力として使用され、これにより、先頭層と末尾の階層との間に数式により表される関係を決定する。
【００４３】
本発明の実施形態のステップＳ２０３では、サブ構造の末尾の階層を除く階層のそれぞれについて、それぞれの階層における演算パラメータおよび演算手順が同等に末尾の階層（すなわち量子化層）に転送されるまで、上層における演算パラメータおよび演算手順が同様に最上層から最下層に下層に向けて転送される。これにより、量子化層における量子化閾値パラメータを更新する。更新された量子化閾値パラメータについて、データ転送手順中になされたそれぞれの階層における演算手順および演算パラメータ（すなわちそれぞれの階層の演算特性）を反映し、更新された量子化閾値パラメータを用いて量子化（マッピング）処理が実行される場合、式（３）のように、量子化結果として、上層からの入力特徴マップにおける浮動小数点形式の選択された中心点要素を用いず、量子化（マッピング）処理の量子化結果として整数が用いられる。これにより、演算中に必要なプロセッサ資源を削減する。
【００４４】
ステップＳ２０３におけるデータ転送手順の詳細な例については後に与えられる。
【００４５】
ステップＳ２０１〜Ｓ２０３を経て最適化された多階層ニューラルネットワークモデルについて、最適化されたネットワークモデルにおける何れかのサブ構造に対する多階層演算が、サブ構造における量子化層の量子化演算に展開され、量子化層からの出力はもはや浮動小数点形式の演算パラメータではなく、このサブ構造の後の階層（他のサブ構造における階層であっても良いし、サブ構造には属していないネットワークモデルにおける階層であっても良い）の演算がシンプルになるように、整数形式における演算パラメータであり、最適化された多階層ニューラルネットワークモデルは、より少なく占有されるプロセッサ資源により動作可能である。
【００４６】
ステップＳ２０２およびＳ２０３における最適化処理の手順に加えて、サブ構造簡単化処理および固定小数点処理などの最適化処理が、本発明の実施形態においてステップＳ２０２〜Ｓ２０３を経て最適化された多階層ニューラルネットワークモデルに対してさらに実行されても良く、その詳細は以下の説明において示される。
【００４７】
ステップＳ２０４：サブ構造簡単化ステップ
図４（ｂ）の参照を続けると、ステップＳ２０４におけるサブ構造を簡単化する処理の詳細は：それぞれのサブ構造における末尾の階層以外の階層について、演算パラメータおよび演算手順が同等に量子化層に対して転送された階層を、サブ構造から削除することである。
【００４８】
本発明の実施形態では、演算パラメータおよび演算手順が同等に、末尾の階層以外の階層で完全に量子化層に対して転送された階層があり、且つ多階層ニューラルネットワークモデルが演算される場合にそのような階層においてもはやデータは演算されていないので、そのような階層が削除されても、演算精度に悪影響は及ぼさない。むしろ、多階層ニューラルネットワークモデルの構造はより簡単になる。ステップＳ２０４におけるサブ構造を簡単化する詳細な例は後で与えられる。
【００４９】
ステップＳ２０５：固定小数点ステップ
図４（ｂ）の参照を続けると、ステップＳ２０５における固定小数点処理の詳細は：それぞれの階層における浮動小数点演算パラメータが固定小数点パラメータに変換されるように、多階層ニューラルネットワークモデルにおけるそれぞれの階層に対して固定小数点処理を行うことである。固定小数点処理の任意の技術はＱ値技術であり、ここでＱ値は正の整数Ｎであり、浮動小数点数がＮビットだけ左にシフトされた（２のＮ乗だけ乗ずることに等価である増幅演算）後で丸められることを意味し、これにより、浮動小数点演算パラメータを固定小数点パラメータ（整数）に変換する。多階層ニューラルネットワークモデルにおける精度要求に応じて、１つのＮ値は多階層ニューラルネットワークモデル全体に対して設定され、Ｎ値は異なる階層に対してそれぞれ設定される。ステップＳ２０５における固定小数点の詳細な例については後に与えられる。
【００５０】
なお、ステップＳ２０５は、ステップＳ２０３およびＳ２０４の処理が完了した後で実行される。もちろん、ステップＳ２０５はステップＳ２０３の前に実行されても良く、例えば、ステップＳ２０１とステップＳ２０２との間で実行されても良い、もしくはステップＳ２０３とステップＳ２０４との間で実行されても良い。本発明の実施形態は、多階層ニューラルネットワークモデルのそれぞれの階層における浮動小数点演算パラメータが固定小数点数に変換されることが可能である限りは、ステップＳ２０５の処理時点は限定しない。加えて、ステップＳ２０４およびＳ２０５は、本発明の実施形態においては好適なステップである。本発明の実施形態において、この２つのステップは同時に存在しても良いし、それらのうち１つが存在しても良いし、それらのうちどちらも存在しなくても良い。
【００５１】
ステップＳ２０６：保存ステップ
ステップＳ２０６における保存ステップの詳細は：前のステップＳ２０２〜Ｓ２０５を経て最適化された多階層ニューラルネットワークモデルを保存することである。好ましくは、多階層ニューラルネットワークモデルがバイナリ畳み込みニューラルネットワークモデルである場合、バイナリ畳み込み層における重みはバイナリストリームの形態で保存される。一方で、サブ構造における階層のそれぞれは、ステップＳ２０３において量子化層に対して、そのような階層における演算パラメータおよび演算手順を同等に転送したので、これらの階層における演算パラメータはネットワークモデルには含まれない。
【００５２】
なお、この保存ステップは、本発明の実施形態の任意のステップである。本発明の実施形態の方法においては、この保存ステップは実行されなくてもよく、最適化された多階層ニューラルネットワークモデルは直接、ネットワークインターフェースまたは他の入力／出力インターフェースを介して外部に出力される。
【００５３】
なお、本実施形態におけるステップＳ２０２〜Ｓ２０５で説明した最適化処理は、複数回実行されてもよく、すなわち、ステップＳ２０２〜Ｓ２０５において最適化処理手順の全てが実行されたとしても、最適化された多階層ニューラルネットワークモデルがステップＳ２０６において保存された後で、ステップＳ２０２〜Ｓ２０５における最適化処理は保存されたネットワークモデルに対して再度実行されも良く、これによりネットワークモデルの演算精度を向上させる。
【００５４】
ステップＳ２０２〜Ｓ２０５は以下、特定の例によって詳細に説明される。
【００５５】
＜ステップＳ２０２におけるサブ構造を分割する例＞
図１に示されたバイナリ畳み込みニューラルネットワークモデルがステップＳ２０１で取得されるケースを例にとると、ステップＳ２０２では、このネットワークモデルからサブ構造を分割する手順が特に以下のように説明される。
【００５６】
図１を参照すると、バイナリ畳み込みニューラルネットワークモデルには、８層の畳み込み層が含まれている。このネットワークモデルの精度を保証するために、先頭及び末尾の畳み込み層の両方がフル精度の畳み込み層（すなわち、二値化されていない畳み込み層）として設定され、残りの畳み込み層は二値化されたバイナリ畳み込み層である。サブ構造の分割方式が、先頭層がバイナリ畳み込み層であり、末尾の階層が量子化層であること、とする。５つのサブ構造が図１に示されるモデルから分割され、サブ構造が分割されている図１は、それぞれの波線のブロックがサブ構造を表す図２Ａに示される構造になる。ここで、第１のサブ構造における先頭層はバイナリ畳み込み層２であり、中間層は順次、プーリング層２およびバッチ正規化層２であり、末尾の階層は量子化層２であり、第２のサブ構造における先頭層はバイナリ畳み込み層３であり、中間層はバッチ正規化層３であり、末尾の階層は量子化層３であり、第３のサブ構造における先頭層はバイナリ畳み込み層４であり、中間層はバッチ正規化層４であり、末尾の階層は量子化層４であり、第４のサブ構造における先頭層はバイナリ畳み込み層５であり、中間層は順次、プーリング層５およびバッチ正規化層５であり、末尾の階層は量子化層５であり、第５のサブ構造における先頭層はバイナリ畳み込み層６であり、中間層はバッチ正規化層６であり、末尾の階層は量子化層６である。図２Ｂおよび２Ｃは、サブ構造が分割されている図２Ａからのネットワークモデルの一部を示す。
【００５７】
ネットワークモデルの説明を簡単にするために、多階層ニューラルネットワークモデルの階層のそれぞれには、表１に従って、異なる文字識別子が割り当てられている。
【００５８】
【表１】
2019160319.tif 000008
【００５９】
ここで、ＩＰは、それぞれのニューロンが全ての入力ノードと接続している全結合層を表す。表１に示される文字識別子と階層との間の対応関係に基づき、図２Ａに示されるバイナリ畳み込みニューラルネットワークモデルは、以下に示すように、文字列として表される。
【００６０】
【数６】
2019160319.tif 000009
【００６１】
上記の分割された５つのサブ構造を参照すると、文字列においてサブ列ＣＰＢＱとサブ列ＣＢＱは分割されたサブ構造を表していることが分かる。従って、レギュラーマッチングサブストリングサーチ（regular matching sub-string search）などの方法を用いて、分割された５つのサブ構造は上記の文字列において、以下の形式のように表される。
【００６２】
【数７】
2019160319.tif 000010
【００６３】
加えて、ネットワークモデルの正しい動作順序を保証するために、ネットワークモデルは最上層から最下層まで階層ごとに動作するため、分割されたサブ構造のそれぞれの間で入れ子はない。例えば、ネットワークモデルにおいてＣ→Ｃ→Ｂ→Ｑ→Ｂ→Ｑなどのサブ列がある場合、中間における文字サブ列Ｃ→Ｂ→Ｑがサブ構造として表され且つ両端におけるＣとＢ→Ｑがサブ構造を構成しないような方法（入れ子なし）でサブ構造を分割する必要がある。
【００６４】
【数８】
2019160319.tif 000011
【００６５】
サブ構造が以下の方法（入れ子有り）に従って分割される場合には、演算は間違っているという問題が生じる。
【００６６】
【数９】
2019160319.tif 000012
【００６７】
＜ステップＳ２０３におけるデータ転送の例＞
図５Ａに示されるサブ構造を例にとると、このサブ構造は、最上層から最下層までに、畳み込み層、バッチ正規化層、および量子化層を含む。畳み込み層に入力される入力特徴マップ（すなわち、畳み込み層の上層における出力）Ｘ１を用いて式（２）に示される演算が実行された後、畳み込み層において、演算結果Ｙ１がバッチ正規化層に対して出力される。バッチ正規化層では、受け取ったＹ１に対してバッチ正規化処理が行われ、バッチ正規化処理後の出力が同等に量子化層に対して転送される。その後、量子化層では、式（４）における量子化閾値パラメータが、バッチ正規化層からの入力特徴マップを用いて更新される。図５Ｂ〜５Ｄに示されるサブ構造は、図５Ａのサブ構造の変更として考慮され、それらの転送手順は上記の手順と同様である。例えば、図５Ａにおけるサブ構造と比べると、図５Ｂに示されるサブ構造では、プーリング層は畳み込み層とバッチ正規化層との間に追加される。プーリング演算自体がパラメータを全く要しないので、図５Ｂに示されるサブ構造では、転送動作結果の方式は、図５Ａのサブ構造に基づく方式と一致する。図５Ａのサブ構造と比べると、図５Ｃに示されるサブ構造では、バッチ正規化層はキャンセルされてプーリング層は追加されており、プーリング演算自体がパラメータを全く要しないので、畳み込み層の演算結果Ｙ１は直接量子化層に入力される。図５Ａのサブ構造と比べると、図５Ｄのサブ構造では、プーリング層およびスケーリング層が順次、畳み込み層とバッチ正規化層との間に追加されており、畳み込み層の演算出力Ｙ１は、プーリング層を介してスケーリング層に転送される。スケーリング層では、スケーリング演算が入力Ｙ１を用いて実行され、その後、出力結果はバッチ正規化層に転送される。最後に、バッチ正規化層では、スケーリング層から出力された結果を用いてバッチ正規化処理が実行され、バッチ正規化処理の後の結果が量子化層に転送される。
【００６８】
量子化閾値パラメータを転送して更新するための特定のアルゴリズムを、図５Ａに示されるサブ構造を例にとり、さらに説明する。ステップＳ２０３の実行前に、式（２）に基づき、畳み込み層の出力が
【００６９】
【数１０】
2019160319.tif 000013
【００７０】
として計算されるとする。ここで、βは量子化畳み込み層の入力特徴マップにおける非０の最小項パラメータであり、Ｘｑは特徴マップの整数部の表現である。畳み込み層の出力は、バッチ正規化層に対して転送されてバッチ正規化処理を実行し、バッチ正規化処理の手順は以下の式（５）により表される。
【００７１】
【数１１】
2019160319.tif 000014
【００７２】
ここで、θは、バッチ正規化層の平均パラメータであり、σはバッチ正規化層の分散パラメータであり、θおよびσは浮動小数点型の数値であり、Ｘ２は、バッチ正規化層に転送される畳み込み層の出力（すなわちＹ１）であり、Ｙ２は、量子化層に対するバッチ正規化層の出力である。バッチ正規化処理は、入力特徴マップを標準正規分布型のフォームに正規化する処理である。
【００７３】
さらに、量子化層における量子化（マッピング）手順が式（４）によって表され、バッチ正規化層により量子化層に出力される特徴マップをＹ２、特徴マップにおける要素のそれぞれをＸｉとする。次に、ステップＳ２０３において量子化層における量子化閾値パラメータの更新の実行手順について詳細に説明する。
【００７４】
量子化層は、入力特徴マップを２ビットで量子化し、量子化層における量子化（マッピング）手順は、式（４）から式（６）に展開される。
【００７５】
【数１２】
2019160319.tif 000015
【００７６】
ここで、β’＝０．５３８，ｔｈｒ１＝０，ｔｈｒ２＝０．８０７，ｔｈｒ３＝１．３４５，であり、Ｘｉは、バッチ正規化層により量子化層に出力される入力特徴マップにおけるｉ番目の要素であり、Ｙｉは、入力特徴マップにおけるｉ番目の要素に対する量子化層の出力である。
【００７７】
式（２）と式（５）の組み合わせから、式（２）におけるＹ１は式（５）のＸ２であり、式（５）のＹ２は、バッチ正規化層により量子化層に入力される式（６）の入力特徴マップであることが分かり、ここで、ｉ番目の要素は
【００７８】
【数１３】
2019160319.tif 000016
【００７９】
である。従って、上記の式（６）はさらに式（７）に展開される。
【００８０】
【数１４】
2019160319.tif 000017
【００８１】
式（７）は、数学的な変換を介して式（８）に展開され続ける。
【００８２】
【数１５】
2019160319.tif 000018
【００８３】
式（８）は、再度数学的な変換を介して式（９）に展開され続ける。
【００８４】
【数１６】
2019160319.tif 000019
【００８５】
上記の式（９）において、
【００８６】
【数１７】
2019160319.tif 000020
【００８７】
とし、その後、上記の式（９）は式（１０）に展開される。
【００８８】
【数１８】
2019160319.tif 000021
【００８９】
式（１０）は、量子化層の上の階層のそれぞれにおける演算パラメータおよび演算手順が同等に量子化層に転送された後の量子化閾値パラメータの更新結果を示す。このとき、更新された量子化閾値パラメータは、畳み込み層およびバッチ正規化層における演算パラメータおよび演算手順を反映している。さらに、量子化（マッピング）処理に対応する結果は、非０の最小項パラメータと整数０，１，２，または３との積である、ここで、
【００９０】
【数１９】
2019160319.tif 000022
【００９１】
は、畳み込みフィルタのオフセットパラメータおよびスケーリングパラメータとは無関係の畳み込み層の出力を示す。
【００９２】
式（６）と式（１０）とを比較すると、畳み込み層の畳み込み演算とバッチ正規化層のバッチ正規化演算とに関連するＸｉから、畳み込みフィルタのオフセットパラメータとスケーリングパラメータとに無関係な畳み込み層の出力
【００９３】
【数２０】
2019160319.tif 000023
【００９４】
に、量子化層に入力される入力特徴マップが変更されていることが分かる。同時に、量子化層における量子化閾値パラメータは、ｔｈｒ１からｔｈｒ１’、ｔｈｒ２からｔｈｒ２’、ｔｈｒ３からｔｈｒ３’に変更されている。すなわち、入力特徴マップにおける中心点要素の演算によって決まる式（６）の量子化閾値パラメータは、中心点要素（ｔｈｒ１〜ｔｈｒ３およびβ’）、畳み込み層における演算パラメータ（二値化された重み畳み込みフィルタのスケーリング係数α、入力特徴マップにより量子化された非０最小項パラメータβ、および畳み込み演算のオフセットパラメータｂ）、およびバッチ正規化層における演算パラメータ（バッチ正規化層の平均パラメータθ、およびバッチ正規化層の分散パラメータσ）により決定される量子化閾値パラメータに変更される。畳み込み層およびバッチ正規化層の演算パラメータおよび演算手順を量子化層における量子化閾値パラメータに反映させることで、畳み込み層およびバッチ正規化層の演算パラメータおよび演算手順の量子化層への等価な転送が実現され、このとき、量子化層は、入力特徴マップにおける要素のそれぞれを直接０，１，２，若しくは３に量子化（マップ）して出力する。同時に、その非０最小項パラメータβ’も、後続の固定小数点のために出力される。
【００９５】
加えて、式（１０）を参照すると、ＷｂおよびＸｑがそれぞれ整数であり、すなわち
【００９６】
【数２１】
2019160319.tif 000024
【００９７】
が整数であり、ｔｈｒ１’〜ｔｈｒ３’の１つ以上が浮動小数点数である場合、丸められた浮動小数点部分は、浮動小数点を丸める丸め処理が、すなわち丸めがロスレスである前後の量子化結果である、ｔｈｒ１’〜ｔｈｒ３’における浮動小数点数に対して実行された後で、閾値比較結果に影響を及ぼさない。従って、浮動小数点を丸める簡単丸め処理により、式（１０）はロスレス変換の場合、整数量子化演算に変換される。
【００９８】
第１の実施形態の方法により、特に式（１０）の表現により、ネットワークモデルのそれぞれの階層において対応する演算が実行される場合に使用される、畳み込み層におけるスケーリング係数α等のパラメータが重みの形態で直接格納されるのではなく、量子化層の上のそれぞれの階層の演算パラメータおよび演算手順が量子化層に同様に転送された後で量子化閾値パラメータの形態で格納され、これにより、これらのパラメータが格納される場合に格納スペースを削減する。
【００９９】
スケーリング係数αを例に取ると、一般にはαは浮動小数点数であり、二値の重みで表される畳み込みフィルタのパラメータＷｂ＝｛１，−１，１，．．．１，−１｝は整数である。従来の方法が畳み込みフィルタのオリジナルパラメータＷ（Ｗ＝Ｗｂ＊α）を格納するために用いられる場合、Ｗｂとαのそれぞれを格納する必要がある。しかし、本発明の第１の実施形態の方法が適用された後、特に式（１０）の展開後、αは量子化層の量子化閾値パラメータに移される。このように、αを格納する必要はなく、Ｗｂ＝｛１，−１，１，．．．１，−１｝のみを格納する必要がある。従って、ネットワークモデルの畳み込み層の演算パラメータを格納するための空間が効率的に削減され、記憶資源を節約することができる。
【０１００】
従来の方法では、オリジナルパラメータＷを低いビット（例えば１ビット）で格納することが望まれる場合、αをオリジナルパラメータＷに低いビットで含めることは困難であり、ネットワークモデルの動作中にαを使用することは困難である。しかし、本発明の第１の実施形態の方法が適用された後は、特に式（１０）の展開後は、αは量子化層の量子化閾値パラメータに移される、このように、αを、低いビットの形態で格納されているオリジナルパラメータＷに含まれなくても、移されるαは、ネットワークモデルの動作中に量子化された閾値パラメータの形態で使用され、これによりネットワークモデルの精度を改善する。
【０１０１】
なお、式（６）〜式（１０）の演算手順を、図５Ａのサブ構造を例に取り説明し、本発明の実施形態は他のサブ構造に限定しない。異なる複数のサブ構造について、量子化閾値パラメータを更新するように、階層のそれぞれにおける演算パラメータおよび演算手順が同様に、最上層から最下層まで量子化層に対して転送される場合、量子化閾値パラメータを更新するアルゴリズムおよび結果もまた異なる。本発明の実施形態は、本発明の実施形態にて説明したサブ構造が満たされ、且つ量子化層の上の階層のそれぞれにおける演算パラメータおよび演算手順が順次、それらが量子化層に転送されるまでステップＳ２０３にて説明した方法に従って転送される限りは、特定のサブ構造についての量子化閾値パラメータの更新アルゴリズムを限定しない。
【０１０２】
好ましくは、転送ステップが実行されない場合の、式（４）における量子化閾値パラメータ間の関係を考慮し、式（４）は式（１１）に展開される。
【０１０３】
【数２２】
2019160319.tif 000025
【０１０４】
式（４）が式（１１）に展開され、その後、式（１１）が式（７）のアルゴリズムと同じアルゴリズムに従って式（９）に展開された後では、式（１２）が得られる。
【０１０５】
【数２３】
2019160319.tif 000026
【０１０６】
更に、式（１２）は式（１３）に展開される。
【０１０７】
【数２４】
2019160319.tif 000027
【０１０８】
式（１３）では、
【０１０９】
【数２５】
2019160319.tif 000028
【０１１０】
を基本係数γ、
【０１１１】
【数２６】
2019160319.tif 000029
【０１１２】
をシフト係数δとすると、式（１３）は式（１４）に簡略化される。
【０１１３】
【数２７】
2019160319.tif 000030
【０１１４】
式（１４）を参照すると、転送ステップ後に更新された量子化閾値パラメータは、１つの基本係数γ、１つのシフト係数δ、基本係数γに対して異なる量子化閾値パラメータ間の相関関係により表されることが分かる。従って、更新された量子化閾値パラメータが保存されると、基本係数γ、シフト係数δ、基本係数γに対する量子化閾値パラメータ間の相関関係、のみが保存され、全ての量子化閾値パラメータを順次保存する必要はなく、これにより、記憶スペースを節約する。
【０１１５】
上記の式（１４）の表現形態は簡単な数学的変換により変更されるので、本発明の実施形態は特に、上記の式（１４）における基本係数γに対する量子化閾値パラメータ間の相関関係、δ、γを限定しない。例えば、式（１４）における１．５γをγ＋０．５γとして表し、２．５γを２γ＋０．５γとして表し、その後、式（１４）の１．５γ＋δをγ＋０．５γ＋δ＝γ＋δ’として表しても良いし、２．５γ＋δを２γ＋０．５γ＋δ＝２γ＋δ’として表しても良く、ここでδ’＝０．５γ＋δである。このように、上記の式（１４）はγおよびδ’により表される新しい式に変換される。
【０１１６】
なお、選択された中心点要素として４つの数値（０，０．５３８、１．０７６、１．６１４）を用い、選択された中心点要素を平均化する方法で量子化閾値パラメータが決定され、且つ量子化層の上層からの入力特徴マップ中のそれぞれの要素がｋ＝２ビットで表される数値空間に量子化（マップ）されるケースを例にとって式（４）が説明されているので、４種類の結果（すなわち、０，１，２，もしくは３）が式（１４）において出力され、量子化閾値パラメータと非０最小項β’との間に変倍関係（すなわち、１．５倍および２．５倍）がある。しかし、量子化閾値パラメータが式（４）において他の方法で決定され、ｋの値が２以外の数値である場合、展開された式（１１）〜式（１４）における量子化閾値パラメータ間の相関関係が、それに応じて変わってしまう。例えば、式（１４）と比較してより広い範囲をカバーする式（１５）が得られる。
【０１１７】
【数２８】
2019160319.tif 000031
【０１１８】
ここで、ｋは、量子化（マッピング）のための数値空間がｋビットで表されることを示しており、ｔｈｒ１”〜
【０１１９】
【数２９】
2019160319.tif 000032
【０１２０】
は、特定の中心要素選択方法と特定の量子化閾値パラメータ決定方法とを用いる場合の閾値間の相関関係を具体化する簡単化した表現を表す。
【０１２１】
しかし、たとえ量子化閾値パラメータを決定するために式（４）において方法が用いられても、量子化閾値パラメータ間に相関関係がある限りは、量子化閾値パラメータを簡単化するために式（１１）〜式（１４）に示される方法が使用されることは理解されるべきであり、これにより記憶スペースを節約する。
【０１２２】
式（１４）は実質的には式（１０）と同じであり、これらはここでは２つの異なる表現の形式で説明される。本発明の実施形態は、式（１４）および式（１０）における他の変更に限定されない。
【０１２３】
＜ステップＳ２０４におけるサブ構造を簡単化する例＞
さらに、図５Ａに示されるサブ構造を例にとると、畳み込み層およびバッチ正規化層における演算パラメータおよび演算手順が同様に、ちょうど式（１０）によって表されるように量子化層に転送された後、一方では、バッチ正規化層における演算パラメータおよび演算手順が完全に量子化層に同様に転送されたので、バッチ正規化層がサブ構造から削除され、一方では、畳み込み層の畳み込みフィルタのスケーリングパラメータおよびオフセットパラメータもまた量子化層に転送されるが、畳み込みフィルタのスケーリングパラメータおよびオフセットパラメータとは無関係の演算
【０１２４】
【数３０】
2019160319.tif 000033
【０１２５】
を畳み込み層がさらに実行するので、畳み込み層は削除できない。ステップＳ２０４におけるサブ構造を簡単化する処理の後、多階層ニューラルネットワークモデルの構造は大いに簡単化される。上記の単純化された原則に基づき、図２Ａに示されるバイナリ畳み込みニューラルネットワークモデルは、図２Ｄに示される、サブ構造における量子化層がジョイント量子化層になる、簡単化された構造に変化する。
【０１２６】
なお、図５Ａに示されるサブ構造を説明のために例にとると、本発明の実施形態は特定のサブ構造に限定を加えない。サブ構造における演算パラメータおよび演算手順が完全に量子化層に転送される階層である限りは、そのような階層はサブ構造から削除されても良い。
【０１２７】
＜ステップＳ２０５における固定小数点の例＞
本発明の実施形態における固定小数点処理の一例を、Ｑ値技術を例にとり説明する。図２Ｄに示される簡単化処理が行われたバイナリ畳み込みニューラルネットワークモデルのそれぞれの階層について、Ｑ値がそれぞれ設定されるとすると、特定の固定小数点手順は以下の通りである。
【０１２８】
図２Ｄに示されるネットワークモデルにおける５つのサブ構造は、ステップＳ２０３において転送されたデータに基づくジョイント量子化処理と、ステップＳ２０４におけるサブ構造簡単化処理と、が行われ、ネットワークモデルにおけるバイナリ畳み込み層２からバイナリ畳み込み層７における演算パラメータが整数であるから、バイナリ畳み込み層２からバイナリ畳み込み層７に対するＱ値は１であり、他の階層における演算パラメータはまだ浮動小数点数であるから、フル精度畳み込み層１および量子化層１に対するＱ値は９であり、フル精度畳み込み層８に対するＱ値は１３であり、これにより、図２Ｄに示されるモデルにおける階層のそれぞれにおける演算パラメータは全て、固定小数点パラメータに変換される。表２は、図２Ｄに示されるネットワークモデルに対して指定されたＱ値の表である。
【０１２９】
【表２】
2019160319.tif 000034
【０１３０】
＜第１の実施形態の効果＞
図６の左側は、本発明の実施形態の最適化方法を使用していない部分的な多階層ニューラルネットワークモデルの演算手順の一部を示し、右側は、本発明の実施形態の最適化方法を使用した多階層ニューラルネットワークモデルの演算手順の一部を示す。理解を容易にするために、左側の畳み込み層における演算は、式（２）と同様の意味である、Convolve(Ｗｂ，Ｘｑ)および
【０１３１】
【数３１】
2019160319.tif 000035
【０１３２】
により表され、ここで、Convolveは畳み込み演算を意味し、βおよびＸｑはそれぞれ、式（２）におけるＸ１により量子化された整数部分と非０最小項パラメータの表現と同様であり、バッチ正規化層における演算は、式（５）と同様の意味である、
【０１３３】
【数３２】
2019160319.tif 000036
【０１３４】
により表され、ここで、BNはバッチ正規化演算を意味し、量子化層における演算は、式（６）と同様の意味である、
【０１３５】
【数３３】
2019160319.tif 000037
【０１３６】
により表され、ここで、ｔｈｒ０，ｔｈｒ１…は式（６）における量子化閾値パラメータであり、Quantは量子化演算を意味する。本発明の実施形態の最適化方法の後、右側における畳み込み層における演算は、畳み込みフィルタのスケーリングパラメータ及びオフセットパラメータとは無関係であり且つConvolve(Ｗｂ，Ｘｑ)により表され、バッチ正規化演算は省略され、量子化層における演算は、
【０１３７】
【数３４】
2019160319.tif 000038
【０１３８】
により表される。
【０１３９】
第１の実施形態に基づく方法では、多階層ニューラルネットワークモデルからサブ構造を分割し、サブ構造のそれぞれにおける最上層から最下層まで、末尾の量子化層に対して、階層のそれぞれにおける演算パラメータおよび演算手順を転送することで、量子化層における量子化閾値パラメータが更新され、量子化層は入力特徴マップにおける要素を整数に量子化（マップ）する。最適化されたネットワークモデルが適用される場合、従来のネットワークモデルにおける演算手順と比べて、最適化されたネットワークモデルにおける演算手順は効率的に、必要なサーバ資源を削減し、また、メモリ空間を節約し、同時に、ネットワークモデルの記憶スペースも節約し、組み込み機器において多階層ニューラルネットワークモデルが動作することを可能にする。さらに、実施形態の方法によれば、簡単化処理および固定小数点処理がネットワークモデル上でさらに実行され、更に最適化されたネットワークモデルが適用される場合、最適化された多階層ニューラルネットワークモデルを保存するための記憶スペースが更に削減され、従来のネットワークモデルにおける演算手順と比べて、ネットワークモデルを動作させるために必要なサーバ資源がさらに削減される。
【０１４０】
第１の実施形態の最適化方法を用いて多階層ニューラルネットワークモデルを最適化した後、最適化されたネットワークモデルは適用される。例えば、画像分類のアプリケーションは、写真および対応する注釈付き真理値の入力など、多階層ニューラルネットワークモデルにより実行可能なタスク要求に対応するデータセットを入力することで実行される。出願人は、従来の多階層ニューラルネットワークモデル（本発明の実施形態の方法を用いて最適化されていないネットワークモデル）と、適用された場合の本発明の実施形態の方法を用いて最適化された多階層ニューラルネットワークモデルと、の精度性能を比較し、２つのネットワークモデルの全体的な精度性能は実質的には互いに近いことが分かった。バイナリ畳み込みニューラルネットワークモデルを用いて写真分類サービスが実行されるというケースを例にとると、本発明の実施形態の方法の使用なしでバイナリ畳み込みニューラルネットワークモデルの精度性能と、本発明の実施形態の方法を使用したネットワークモデルの精度性能と、は互いに近い。表３を参照すると、それらの写真分類精度はそれぞれ５２．２２％および５２．２１％であり、精度差は０．０１％であり、ごくわずかである。従って、多階層ニューラルネットワークモデルが本発明の実施形態の方法を用いて最適化された後、従来の多階層ニューラルネットワークモデルと比べて、タスク処理の精度を維持しつつ、ネットワークモデルの全体演算コスト（必要なプロセッサ資源およびコンテンツリソース）および記憶要求を大幅に下げる。
【０１４１】
【表３】
2019160319.tif 000039
【０１４２】
＜第２の実施形態＞
本発明の第２の実施形態は、多階層ニューラルネットワークモデルを最適化する装置を説明し、図７に示されるように、装置は、サブ構造分割モジュール３０１およびデータ転送モジュール３０２を含む。サブ構造分割モジュール３０１は第１の実施形態におけるステップＳ２０２で処理を実行し、データ転送モジュール３０２は第１の実施形態におけるステップＳ２０３で処理を実行する。具体的には、サブ構造分割モジュール３０１は、多階層ニューラルネットワークモデルから少なくとも１つのサブ構造を分割するように構成されており、ここで、分割されたサブ構造の末尾の階層は量子化層であり、データ転送モジュール３０２は、量子化層以外の階層における演算パラメータおよび演算手順を、分割されたサブ構造のそれぞれについて量子化層に転送して量子化層における量子化閾値パラメータを更新するように構成されており、これにより最適化された多階層ニューラルネットワークモデルを生成する。
【０１４３】
好ましくは、畳み込み層はさらに、分割されたサブ構造に含まれている。より好ましくは、サブ構造の先頭の階層は畳み込み層であり、末尾の階層は量子化層である。先頭の階層と末尾の階層との間にバッチ正規化層、プーリング層、スケーリング層、等の他の階層があっても良いし、他の階層が無くても良い。分割されたサブ構造の数が少なくとも２である場合は、サブ構造間には入れ子はない。
【０１４４】
データ転送モジュール３０２はさらに、階層のそれぞれにおける演算パラメータおよび演算手順が全て量子化層に転送されるまで、１つのサブ構造における量子化層以外の階層のそれぞれについて、最上層から最下層まで、上層における演算パラメータおよび演算手順を下層に転送して、量子化層における量子化閾値パラメータを更新するように構成されている。
【０１４５】
上記のサブ構造分割モジュール３０１およびデータ転送モジュール３０２に加えて、多階層ニューラルネットワークモデルを最適化する装置は、最適化される多階層ニューラルネットワークモデルを取得するように構成されている前処理モジュール３０３を更に含む。前処理モジュール３０３は、第１の実施形態におけるステップＳ２０１において処理を実行する。
【０１４６】
好適には、多階層ニューラルネットワークモデルを最適化する装置は、それぞれのサブ構造における量子化層以外の階層について、演算パラメータおよび演算手順が量子化層に転送された階層を、サブ構造から除去するように構成されているサブ構造簡単化モジュール３０４を更に含む。サブ構造簡単化モジュール３０４は、第１の実施形態におけるステップＳ２０４において処理を行う。
【０１４７】
好ましくは、多階層ニューラルネットワークモデルを最適化する装置は、多階層ニューラルネットワークモデルにおける階層のそれぞれについて固定小数点処理を実行して、それぞれの階層における浮動小数点演算パラメータを固定小数点パラメータに変換するように構成されている固定小数点モジュール３０５を更に含む。固定小数点モジュール３０５は、第１の実施形態におけるステップＳ２０５において処理を行う。
【０１４８】
好ましくは、多階層ニューラルネットワークモデルを最適化する装置は、最適化された多階層ニューラルネットワークモデルを保存するように構成されている保存モジュール３０６を更に含む。
【０１４９】
多階層ニューラルネットワークモデルが第２の実施形態の最適化装置により最適化された後、最適化されたネットワークモデルは、多階層ニューラルネットワークモデルを適用する装置を用いて動作される。適用装置は、ネットワークモデルを動作させる既知の装置であり、ネットワークモデルにより実行可能なタスク要求に対応するデータセットを、最適化された多階層ニューラルネットワークモデルに入力する入力モジュールと、最適化された多階層ニューラルネットワークモデルにおける最上層から最下層までの階層のそれぞれにおいてデータセットを演算して結果を出力する演算モジュールと、を含む。
【０１５０】
更に、量子化閾値パラメータを格納するための記憶空間を節約するために、第１の実施形態の多階層ニューラルネットワークモデルに対する最適化方法では、転送ステップ後に更新された量子化閾値パラメータは、基本係数γ、シフト係数δ、基本係数γに対する異なる量子化閾値パラメータ間の相関関係により前述の式（１４）に基づいて表され、すなわち、γ、δ、基本係数γに対する異なる量子化閾値パラメータ間の相関関係は格納される。その後、第１の実施形態を経て最適化されたネットワークモデルが適用装置によって動作される場合、演算モジュールは、入力されたデータセットがネットワークモデルにおける最上層から最下層までの量子化層について演算される場合に、γ、δ、γに対する量子化閾値パラメータ間の相関関係を用いて量子化閾値パラメータを決定し、その後、決定した量子化閾値パラメータに基づいて、データセットに対して量子化処理を行う。
【０１５１】
図８は、適用装置における演算モジュールの構成を示しており、データセットが入力モジュールを介して入力されると、図８に示される構成を介してデータセットが処理される。図８を参照すると、演算モジュールは、ネットワークモデル記憶ユニット４０１、特徴マップ記憶ユニット４０２、畳み込みユニット４０３、プーリング／活性化ユニット４０４、量子化ユニット４０５、およびコントロールユニット４０６、を有する。それぞれのユニットはそれぞれ、以下に説明される。
【０１５２】
ネットワークモデル記憶ユニット４０１は、第１の実施形態の最適化方法を用いて取得される、多階層ニューラルネットワークモデルに関する情報を記憶する。しかし多階層ニューラルネットワークモデルに関する情報はネットワーク構造情報に限らず、量子化層に転送された量子化閾値パラメータの情報、および他の階層のそれぞれにおいて行われる演算に要する情報、を含む。ここで、量子化層に転送される量子化閾値パラメータの情報は、γ、δ、γに対する量子化閾値パラメータ間の相関関係であっても良いし、量子化閾値パラメータを特徴付けることが可能な他の情報や量子化閾値パラメータそれら自身であっても良い。特徴マップ記憶ユニット４０２は、ネットワークモデルにおける演算中に要する特徴マップ情報を記憶する。
【０１５３】
畳み込みユニット４０３は、特徴マップ記憶ユニット４０２により入力されるｉ番目の階層の特徴マップ情報（すなわちＸｑ）と、ネットワークモデル記憶ユニット４０１により入力される情報（すなわちＷｂ）と、に従ってデータセットに対する畳み込み処理を行うために用いられる。プーリング／活性化ユニット４０４は、畳み込みユニット４０３の出力
【０１５４】
【数３５】
2019160319.tif 000040
【０１５５】
およびネットワークモデル記憶ユニット４０１により入力される情報（例えば、プーリング／活性化処理が実行されるときに要する情報、ここで、ネットワークモデル記憶ユニット４０１は如何なる情報も入力していなくてもよい）に従って、データセットに対するプーリング／活性化処理を実行するために使用される。量子化ユニット４０５は、ネットワークモデル記憶ユニット４０１により入力された量子化閾値パラメータと、プーリング／活性化ユニット４０４から出力された結果と、に従って、データセットに対して量子化処理を実行するために使用され、量子化処理後の結果は、特徴マップ記憶ユニット４０２に格納される。コントロールユニット４０６は、制御信号を図８における他のユニットに対して出力することで、ネットワークモデル記憶ユニット４０１〜量子化ユニット４０５の動作を制御する。
【０１５６】
注意すべきことは、プーリング／活性化処理を実行可能なプーリング／活性化ユニット４０４は、図８に示される構成において一例として示されており、含まれても良い正規化処理およびスケーリング処理を実行可能な他のユニットは省略される。ここでは繰り返されない。加えて、ネットワークモデル記憶ユニット４０１に記憶されているネットワーク構造情報により示されるサブ構造において、バッチ正規化層、プーリング層、およびスケーリング層などのうち１つ以上が畳み込み層と量子化層との間にあっても良いし、また、これらの階層の何れもなくても良い。例えば、サブ構造において畳み込み層および量子化層のみが存在する場合、畳み込みユニット４０３の出力結果は、直接量子化ユニット４０５にアクセス可能である。
【０１５７】
その他の実施例
記憶媒体（さらに「非一時コンピュータ読み取り可能な記憶媒体」としても良い）に記録されたコンピュータ実行可能な命令（例えば１つ以上のプログラム）を読み出して実行して前述の実施形態の１つ以上の機能を実行するシステム又は装置のコンピュータ、および／または前述した実施形態の１つ以上の機能を実行する１つ以上の回路（例えば、特定用途向け集積回路（ＡＳＩＣ））を含むシステム若しくは装置のコンピュータ、および例えば、上記システム又は装置のコンピュータにより、記憶媒体からコンピュータ実行可能な命令を読み出して実行して前述した実施形態の１つ以上の機能を実行すること、および／または１つ以上の回路を制御して前述した実施形態の１つ以上の機能を実行することにより行われる方法により本発明の実施形態を実現することもできる。上記コンピュータは、一つ以上のプロセッサ（例えば中央処理装置（ＣＰＵ））、マイクロプロセッシングユニット（ＭＰＵ）を構成し、別々のコンピュータのネットワーク又は別々のプロセッサを有してコンピュータ実行可能な命令を読み出して実行するようにしてもよい。上記コンピュータ実行可能な命令は、上記コンピュータに対して例えばネットワークや上記記憶媒体から提供されてもよい。上記記憶媒体は、例えば、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、リードオンリーメモリ（ＲＯＭ）、分散コンピューティングシステムのストレージ、光ディスク（コンパクトディスク（ＣＤ）、デジタル多用途ディスク（ＤＶＤ）、Ｂｌｕ−ｒａｙ  Ｄｉｓｃ  （ＢＤ）（記録商標）等）、フラッシュメモリ機器、メモリカード等のうち１つ以上を有してもよい。
【０１５８】
前述の実施形態の機能を実行するソフトウェア（プログラム）を、ネットワーク若しくは様々な記憶媒体を介してシステム若しくは装置に供給し、システムもしくは装置のコンピュータ、もしくは中央処理装置（ＣＰＵ）、マイクロプロセッシングユニット（ＭＰＵ）等によりプログラムの方法を読み出して実行する方法により、本発明の実施形態を実現することもできる。
【０１５９】
本発明を実施形態を参照して説明したが、本発明は記載した実施形態に限定されないことが理解されるべきである。以下の請求項の範囲は、全ての変形や同等な構成や機能を含み、最大に広く解釈されるべきである。
【図１】
2019160319.tif 000041
【図２Ａ】
2019160319.tif 000042
【図２Ｂ】
2019160319.tif 000043
【図２Ｃ】
2019160319.tif 000044
【図２Ｄ】
2019160319.tif 000045
【図３】
2019160319.tif 000046
【図４（ａ）】
2019160319.tif 000047
【図４（ｂ）】
2019160319.tif 000048
【図５Ａ】
2019160319.tif 000049
【図５Ｂ】
2019160319.tif 000050
【図５Ｃ】
2019160319.tif 000051
【図５Ｄ】
2019160319.tif 000052
【図６】
2019160319.tif 000053
【図７】
2019160319.tif 000054
【図８】
2019160319.tif 000055