JP7029321B2 - 情報処理方法、情報処理装置およびプログラム - Google Patents

情報処理方法、情報処理装置およびプログラム Download PDF

Info

Publication number
JP7029321B2
JP7029321B2 JP2018046055A JP2018046055A JP7029321B2 JP 7029321 B2 JP7029321 B2 JP 7029321B2 JP 2018046055 A JP2018046055 A JP 2018046055A JP 2018046055 A JP2018046055 A JP 2018046055A JP 7029321 B2 JP7029321 B2 JP 7029321B2
Authority
JP
Japan
Prior art keywords
tensor
memory
stored
input
calculation
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.)
Active
Application number
JP2018046055A
Other languages
English (en)
Other versions
JP2018181313A (ja
Inventor
エー グドフスキー デニス
ルカ・リザジオ
宗太郎 築澤
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.)
Panasonic Intellectual Property Corp of America
Original Assignee
Panasonic Intellectual Property Corp of America
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 Panasonic Intellectual Property Corp of America filed Critical Panasonic Intellectual Property Corp of America
Publication of JP2018181313A publication Critical patent/JP2018181313A/ja
Application granted granted Critical
Publication of JP7029321B2 publication Critical patent/JP7029321B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/15Correlation function computation including computation of convolution operations
    • 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/15Correlation function computation including computation of convolution operations
    • G06F17/153Multidimensional correlation or convolution
    • 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
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/06Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
    • G06N3/063Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Neurology (AREA)
  • Complex Calculations (AREA)

Description

本開示は、情報処理方法、情報処理装置およびプログラムに関する。
近年、画像分類、物体検出、および、画像を画素レベルで把握するセマンティックセグメンテーションなど、コンピュータビジョンを含む多くの研究分野において、深層学習アルゴリズムの成果がもたらされている。
深層学習に用いられるディープニューラルネットワーク(DNN:Deep Neural Network)の中でも、畳み込みニューラルネットワーク(CNN:Convolutional Neural Network)は、最も広く使用されている。CNNの演算は、大量の電力を消費するグラフィック処理ユニット(GPU:Graphics Processing Unit)にのみ実行可能とされてきた。
しかし、GPUにより実行されるCNNは、動作が容易であるものの計算効率の悪い浮動小数点形式を用いていることが知られている。
そこで、計算コストが安くかつ電力効率に優れたCNNアーキテクチャと低消費電力で駆動する組み込みシステムへの実装とを実現させるべく、数多くの研究と実装の取り組みが行われている(例えば非特許文献1)。
非特許文献1には、CNNのデータ表現として、浮動小数点形式よりも計算効率が良い量子化された固定小数点を用いる方法が開示されている。非特許文献1には、浮動小数点形式を低精度量子化表現の一つである固定小数点量子化形式に変換して畳み込み演算を行うことが開示されている。
Philipp Gysel, Mohammad Motamedi, and Soheil Ghiasi. Hardware-oriented approximation of convolutional neural networks. arXiv preprint arXiv:1604.03168, 2016.
しかしながら、非特許文献1で開示された技術では、畳み込み演算の計算効率を向上することができるものの、FPGA(Field Programmable Gate Array)またはASIC(Application Specific Integrated Circuit)など低消費の組み込みシステムに実装できる程ではない。つまり、畳み込み演算の計算効率をさらに向上させ低消費電力化することが求められる。
本開示は、上述の事情を鑑みてなされたもので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる情報処理方法、情報処理装置およびプログラムを提供することを目的とする。
上記課題を解決するために、本開示の一形態に係る情報処理方法は、本開示の一形態に係る情報処理方法は、データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含む。
なお、これらの全般的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
本開示の情報処理方法等によれば、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。
図1は、実施の形態における情報処理装置の構成の一例を示すブロック図である。 図2は、図1に示す処理部の詳細構成の一例を示すブロック図である。 図3は、図1に示す処理部が行う畳み込み演算処理を概念的に示す図である。 図4は、図3に示すShiftALU部の詳細構成を概念的に示す図である。 図5は、畳み込み演算に用いる可能性のある重みテンソルを2の累乗表現の形式に変換する所定のアルゴリズムを示す図である。 図6は、図2に示す畳み込み演算部の詳細構成を概念的に示す図である。 図7は、実施の形態における制御部の処理の流れが記述された擬似コードの一例を示す図である。 図8は、実施の形態における情報処理装置の演算処理を示すフローチャートである。 図9は、図8に示すステップS3の畳み込み演算処理の詳細を示すフローチャートである。 図10は、実施例1におけるImageNet datasetを用いて正解率を評価した評価結果を示す図である。 図11は、実施例1の3つのCNNモデルにおける従来の畳み込み層に畳み込み演算に必要な乗算演算の数とShiftCNNに変換後に畳み込み演算に必要なシフト演算のサイクル数の比較を示す図である。 図12は、実施例2におけるFPGAを利用した場合の推定電力の比較を示す図である。
本開示の一形態に係る情報処理方法は、データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含む。
これにより、畳み込み演算を、乗算演算を必要とせず加算演算およびシフト演算のみで行うことができるので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。
ここで、例えば、前記処理ステップでは、前記処理部に、前記事前計算を行わせ、前記メモリに前記事前計算を行った前記入力テンソルの各要素を格納させる。
また、例えば、前記処理ステップでは、前記処理部に、畳み込みニューラルネットワークを構成する畳み込み層の演算を行わせてもよい。
これにより、CNNの畳み込み層で行われる畳み込み演算の計算効率をより向上させて、CNNが実装される装置の低消費電力化を図ることができる。
また、例えば、前記重みテンソルは、2の補数のビット値がB(1以上の整数)とすると2-1個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、前記処理ステップでは、前記コードブックから、1ビットの表現の自由度を示す次元数とするN(1以上の整数)および前記Bとにより特定される重みテンソルの要素を取得して用いてもよい。
これにより、畳み込み演算を行う際に必要な重みを予め辞書的にコードブックとして保持できるので、畳み込み演算の計算効率をより向上させることができる。
また、例えば、前記Nは、2以上の整数であるとしてもよい。
これにより、1%未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を、加算演算およびシフト演算のみで行うことができる。
また、本開示の一形態に係る情報処理装置は、データを示す入力テンソルを入力する入力部と、メモリを有しコンピュータにより処理される処理部であって、前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う処理部と、前記処理部により前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力部とを含む。
なお、これらの包括的または具体的な態様は、システム、方法、集積回路、コンピュータプログラムまたはコンピュータで読み取り可能なCD-ROMなどの記録媒体で実現されてもよく、システム、方法、集積回路、コンピュータプログラムおよび記録媒体の任意な組み合わせで実現されてもよい。
以下で説明する実施の形態は、いずれも本開示の一具体例を示すものである。以下の実施の形態で示される数値、形状、構成要素、ステップ、ステップの順序などは、一例であり、本開示を限定する主旨ではない。また、以下の実施の形態における構成要素のうち、最上位概念を示す独立請求項に記載されていない構成要素については、任意の構成要素として説明される。また全ての実施の形態において、各々の内容を組み合わせることもできる。
(実施の形態)
以下では、図面を参照しながら、実施の形態における情報処理装置10の情報処理方法等の説明を行う。
[情報処理装置10の構成]
図1は、実施の形態における情報処理装置10の構成の一例を示すブロック図である。
情報処理装置10は、畳み込みニューラルネットワークを用いたコンピュータ等で実現されてもよい。情報処理装置10は、図1に示すように入力部11と処理部12と出力部13とで構成されている。情報処理装置10は、画像、動画像など処理対象のデータが入力されると、畳み込み演算処理を行い、その結果である畳み込み演算処理結果を出力する。なお、処理対象のデータは、画像または動画像である場合に限らない。
[入力部11]
入力部11は、処理対象のデータを示す入力テンソルを処理部12に入力する。ここで、処理対象のデータは、画像または動画像であるが、これに限らない。処理部12が、1層の畳み込み層の演算を行う場合には、データは、当該畳み込み層の前にある畳み込み層などによる畳み込み演算処理結果であってもよい。
[処理部12]
処理部12は、メモリ124を有しコンピュータにより処理される。処理部12は、入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われてメモリ124に格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつメモリ124に格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ124に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。ここで、処理部12は、事前計算を行い、メモリ124に事前計算を行った入力テンソルの各要素を格納してもよい。また、重みテンソルは、2の補数のビット値がB(1以上の整数)とすると2-1個の組み合わせからなり、かつ、メモリ124にコードブックとして格納されていてもよい。処理部12は、コードブック123から、1ビットの表現の自由度を示す次元数とするN(1以上の整数)および当該Bとにより特定される重みテンソルの要素を取得して用いる。なお、Nは、2以上の整数であるとよい。
具体的には、処理部12は、CNNのデータ表現を後述するハードウェア効率の高い2の累乗表現形式に変換して、乗算なしで畳み込み演算を実行する。換言すると、処理部12は、乗算なしで畳み込み演算が実行できるShiftCNNとも称するCNNアーキテクチャであるともいえる。なお、処理部12は、CNNを構成する畳み込み層の演算を行う場合に限らず、単に畳み込み演算を行うとしてもよい。
以下では、図を用いて、処理部12の詳細構成について説明するが、説明を簡単にするため、処理部12は、CNNを構成する複数の畳み込み層のうちの1層の畳み込み層の演算を行うとして説明する。
図2は、図1に示す処理部12の詳細構成の一例を示すブロック図である。図3は、図1に示す処理部12が行う畳み込み演算処理を概念的に示す図である。
本実施の形態では、処理部12は、図2に示すように、事前計算部121と、畳み込み演算部122と、コードブック123と、メモリ124と、制御部125とを備える。なお、処理部12は、事前計算部121を備えなくてもよい。
まず、一般的なCNNの畳み込み層の演算すなわち畳み込み演算について説明する。
<畳み込み演算>
一般的なCNNの各畳み込み層への入力は、入力テンソルXで表すことができる。入力テンソルXは、入力チャンネル数をC、高さをH、幅をWとすると、(式1)に示される集合Rの要素である。
Figure 0007029321000001
そして、入力テンソルXは、重みテンソルWで畳み込まれる。重みテンソルWは、(式2)に示される集合Rの要素である。
Figure 0007029321000002
(式2)において、出力チャンネル数を
Figure 0007029321000003
、フィルタカーネルの高さをHf、フィルタカーネルの幅をWfとしている。
なお、バイアスベクトルで示されるバイアス項bが畳み込み演算の結果に加算される。バイアス項bは、(式3)に示される集合Rの要素である。
Figure 0007029321000004
Figure 0007029321000005
個のチャンネル数の出力テンソルYは、(式4)に示す計算式を用いて、算出することができる。出力テンソルYは、(式5)に示される集合Rの要素である。なお、(式4)において、*は畳み込み演算を行うことを表す。
Figure 0007029321000006
Figure 0007029321000007
次に、処理部12を構成する各構成要素について図2、図3等を用いて説明する。
<メモリ124>
メモリ124は、ハードディスクまたは半導体メモリ等で構成され、情報を記憶する。
本実施の形態では、メモリ124は、事前計算部121が事前計算した結果、および、畳み込み演算部122が行った畳み込み演算処理の結果を記憶する。
なお、メモリ124は、畳み込み演算部122が畳み込み演算処理を行う際に用いるバイアス項の値を記憶していてもよい。また、メモリ124は、後述するコードブック123を記憶しているとしてもよい。
<事前計算部121>
事前計算部121は、入力テンソルXの各要素について2の累乗表現の形式に変換する事前計算を行う。事前計算部121は、当該事前計算を行い、当該事前計算を行った入力テンソルXの各要素をメモリ124に格納する。
本実施の形態では、事前計算部121は、図3に示すように、ShiftALU部1211を備える。事前計算部121は、畳み込み演算部122で畳み込み演算を行う前に、事前計算として、ShiftALU部1211を用いて、例えば11aで示される入力テンソルXの各要素について2の累乗表現の形式であるテンソルPに変換する。ここで、テンソルPは、例えば図3において124aで示されており、入力テンソルXの各要素について有り得るすべての組み合わせとなっている。テンソルPは、2の補数のビット値をB(1以上の整数)、1ビットの表現の自由度を示す次元数をN(1以上の整数)としたとき、(M+2(N-1))の組み合わせからなる。テンソルPは、入力テンソルXをシフト演算できるような表現形式に変換したテンソルに該当する。
≪ShiftALU部1211≫
図4は、図3に示すShiftALU部1211の詳細構成を概念的に示す図である。
ShiftALU部1211は、Shift Arithmetic Unitとも称する特殊なシフト演算器であり、複数のシフタと、符号反転を行う複数のフリップとで構成されている。複数のシフタと複数のフリップとは、ロジック回路で実現されてもよいし、プログラムロジックで実現されてもよい。図4に示すように、複数のシフタそれぞれは、入力値である入力テンソルXを右に1つずつシフトする演算を行いメモリ124に格納する。また、複数のフリップのそれぞれは、シフタにより右にシフトするよう演算された値を符号反転させてメモリ124に格納する。ShiftALU部1211は、合計(1/P)回の1ビットシフトを実行する。このようにして、テンソルPを事前計算してメモリ124に格納することができる。
なお、事前計算部121は、上述したように、処理部12に備えられなくてもよい。この場合、処理部12の外部に事前計算部121が設けられ、事前計算部121が行った事前計算の結果であるテンソルPがメモリ124に格納されていればよい。また、ShiftALU部1211がプログラムロジックである場合には、ShiftALU部1211は、後述する図5に示す所定のアルゴリズムを用いて、入力テンソルXからテンソルPに変換する事前計算を行ってもよい。
<コードブック123>
図5は、畳み込み演算に用いる可能性のある重みテンソルを2の累乗表現の形式に変換する所定のアルゴリズムを示す図である。図5において、所定のアルゴリズムは、アルゴリズム1と表記されている。
コードブック123は、メモリ124に格納されているとしてもよいし、メモリ124とは異なるメモリに格納されているとしてもよい。本実施の形態では、メモリ124とは異なるメモリに格納されているとして説明する。
コードブック123は、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す重みテンソルWの組み合わせが格納されている。換言すると、重みテンソルWは、2の補数のビット値がB(1以上の整数)とすると2-1個の組み合わせからなり、かつ、メモリにコードブック123として格納されている。重みテンソルWの要素は、コードブック123から、1ビットの表現の自由度を示す次元数N(1以上の整数)および当該Bとにより特定される。なお、Nは、2以上の整数であってもよい。換言すると、コードブック123は、BとNとで特定できるアドレスまたは指標が紐づけられた重みテンソルの辞書のようなものである。
本実施の形態では、重みテンソルWは、低精度の重みテンソル
Figure 0007029321000008
で近似されてコードブック123に格納されている。重みテンソルWは、低精度の重みテンソル
Figure 0007029321000009
で近似することで、2の累乗表現の形式にされた2-1個の組み合わせからなる重みとすることができるので、テーブル化すなわちコードブック123に予め格納できる。
低精度の重みテンソル
Figure 0007029321000010
の各要素
Figure 0007029321000011
は、(式6)で表され、コードブック123に格納される。
Figure 0007029321000012
(式6)において、
Figure 0007029321000013
である。つまり、Cnはコードブック123におけるアドレスまたは指標を示している。
なお、本実施の形態では、所定のアルゴリズムすなわち、図5に示すアルゴリズム1を用いて、低精度の重みテンソル
Figure 0007029321000014
の各要素
Figure 0007029321000015
が、MAX(abs(W))で正規化した上で変換されて、コードブック123に格納されている。
図5では、2行目において、重みテンソルの最大値に対する要素
Figure 0007029321000016
の値を入力値rとすることで、0~1の値で3行目以降のアルゴリズム1を実行する。
3行目では2行目の入力値rの符号をqsgnとして算出し、4行目では2行目の入力値rが2の何乗の桁数を、qlogとして算出している。また、7行目~9行目では、量子化の境界を示すlog21.5を用いて、qlogの値の桁数を例えば四捨五入するように1つあげるかそのままかを算出している。10行目~16行目ではN回再帰的に桁数を量子化つまり2の累乗表現の形式に変換している。
<畳み込み演算部122>
畳み込み演算部122は、事前計算が行われた後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ124に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。
例えば図3に概念的に示されるように、畳み込み演算部122は、事前計算後テンソル124aと、重みテンソル123aと、バイアス項124bとを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う。事前計算後テンソル124aは、事前計算部121のShiftALU部1211により事前計算が行われた入力テンソルの各要素である。重みテンソル123aはコードブック123に格納されている重みテンソルであって、図5に示すアルゴリズム1により予め2の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みを示す低精度の重みテンソルから取得されたものである。
図6は、図2に示す畳み込み演算部122の詳細構成を概念的に示す図である。
本実施の形態では、畳み込み演算部122は、図6に示すように、マルチプレクサ1221、1222と、加算器1223とを備える。
マルチプレクサ1221は、重みテンソル123aのアドレスまたは指標に従ってメモリ124から、事前計算後テンソル124aをフェッチ(取得)して、重みテンソル123aと事前計算後テンソル124aとの畳み込み演算をシフト演算にて行い、加算器1223に出力する。より具体的には、マルチプレクサ1221は、重みテンソル123aの要素の値としてゼロ(値0)または2の累乗の桁を示す値を選択し、事前計算後テンソル124aの要素の値である2の累乗の桁を示す値と、重みテンソル123aの要素の値としての2の累乗の桁を示す値とをシフト演算した結果を加算器1223に出力する。
加算器1223は、マルチプレクサ1221が出力した値とバイアス項124bとを加算することで、仮の出力テンソル13bを算出する。なお、加算器1223は、仮の出力テンソル13bを前回算出していた場合には、マルチプレクサ1221が出力した値に対して、バイアス項124bと前回算出していた仮の出力テンソル13bとを加算した値を加算することで、仮の出力テンソル13bを更新する。そして、加算器1223は、N-1回更新された仮の出力テンソル13bを出力テンソル13aとして出力部13に出力する。このようにして、仮の出力テンソル13bはN-1回更新されて、出力テンソル13aとして出力部13に出力される。
マルチプレクサ1222は、バイアス項124bと、加算器1223により前回算出または更新された仮の出力テンソル13bとを加算した値を、加算器1223に出力する。なお、マルチプレクサ1222は、加算器1223により前回算出または前回更新された仮の出力テンソル13bがない場合には、バイアス項124bのみを加算器1223に出力する。
<制御部125>
制御部125は、事前計算部121および畳み込み演算部122を制御する。
ところで、制御部125が、事前計算部121にShiftALU部1211を用いて事前計算後テンソル124aを計算させることは簡単である。一方、制御部125が、畳み込み演算部122に、シフト演算および加算演算のみで畳み込み演算を行わせるには、潜在的なすべてのフィルタカーネルをサポートする必要があり、複雑なスケジューリングおよび制御ロジックを必要とする。
図7は、実施の形態における制御部125の処理の流れが記述された擬似コードの一例を示す図である。図7において、擬似コードは、アルゴリズム2と表記されている。
図7では、2行目において、入力テンソルXとして入力ベクトルxを読み込むことが記述されている。3行目には、事前計算部121に事前計算を行わせてメモリ124に格納させることが記述されている。
4行目では、出力チャンネル数だけ繰り返して、5~9行目の計算を行わせることが記述されている。5行目では、6~9行目の計算後にバイアス項を加算演算することが記述されている。
6~8行目では、畳み込み演算部122に、事前計算されたPの要素のNの回数分、潜在的なすべてのフィルタカーネルの高さと幅に対して、畳み込み演算を行わせることが記述されている。9行目では、畳み込み演算部122に、畳み込み演算を行った結果の値を出力テンソルとすることが記述されている。
本実施の形態では、制御部125は、例えば図7に示す擬似コードに従って、事前計算部121および畳み込み演算部122を制御して、事前計算と畳み込み演算とを行う。
[出力部13]
出力部13は、処理部12により畳み込み演算処理が行われた入力テンソルの各要素を、出力テンソルとして出力する。
本実施の形態では、出力部13は、CNNを構成する1層の畳み込み層が行う畳み込み演算処理結果として畳み込み演算部122により出力された出力テンソル13aを出力する。
[情報処理装置10の動作]
次に、上記のように構成された情報処理装置10の動作について説明する。
図8は、実施の形態における情報処理装置10の演算処理を示すフローチャートである。
まず、情報処理装置10は、処理対象のデータを示す入力テンソルを、処理部12に入力する入力処理を行う(S1)。より具体的には、情報処理装置10のコンピュータは、図1に示す入力部11に、処理対象のデータを示す入力テンソルを処理部12に入力させる。
次に、情報処理装置10は、入力テンソルを2の累乗表現の形式に変換する事前計算を行う(S2)。より具体的には、情報処理装置10のコンピュータは、処理部12の事前計算部121に、入力テンソルの各要素について2の累乗表現の形式に変換する事前計算を行わせ、メモリ124に格納させる。
次に、情報処理装置10は、ステップS2において事前計算された入力テンソルを用いて、加算およびシフト演算のみで畳み込み演算処理を行う(S3)。より具体的には、情報処理装置10のコンピュータは、処理部12の畳み込み演算部122に、事前計算後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつコードブック123に格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、メモリ124に格納された事前計算が行われた入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行わせる。
次に、情報処理装置10は、ステップS3において畳み込み演算処理された入力テンソルを、出力テンソルとして出力する(S4)。より具体的には、情報処理装置10のコンピュータは、出力部13に、ステップS3において処理部12により畳み込み演算処理が行われた入力テンソルの各要素を、出力テンソルとして出力させる。
図9は、図8に示すステップS3の畳み込み演算処理の詳細を示すフローチャートである。
ステップS3において、まず、情報処理装置10のコンピュータは、畳み込み演算部122に、ステップS2において事前計算された入力テンソルを取得させる(S31)。
次に、情報処理装置10のコンピュータは、畳み込み演算部122に、コードブック123から重みテンソルを取得させる(S32)。コードブック123に格納されている重みテンソルは、アルゴリズム1により予め2の累乗表現の形式に変換され、かつ畳み込み演算に用いる可能性のある重みである。本実施の形態では、コードブック123に格納されている重みテンソルは、低精度の重みテンソルとして2の累乗表現の形式に変換されている。畳み込み演算部122は、アドレスまたは指標により、コードブック123を参照し、事前計算された入力テンソルの各要素に対する畳み込み演算に必要な重みテンソルを取得することができる。
次に、情報処理装置10のコンピュータは、畳み込み演算部122に、ステップS32で取得した重みテンソルと、ステップS31で取得した事前計算された入力テンソルとを用いて、加算演算およびシフト演算のみで畳み込み演算を行わせる(S33)。
次に、情報処理装置10のコンピュータは、畳み込み演算部122に、ステップS33で行った畳み込み演算の結果に、バイアス項と1回前に更新または1回前に算出させた仮の出力テンソルを加算させ、仮の出力テンソルを更新させる(S34)。
次に、情報処理装置10のコンピュータは、畳み込み演算部122に、ステップS31で取得した事前計算された入力テンソルの要素の数だけ畳み込み演算を行ったか否かを判定する(S35)。事前計算された入力テンソルの要素の数だけ畳み込み演算が行われた場合(S35でYes)、情報処理装置10のコンピュータは、出力部13に、仮の出力テンソルを、畳み込み演算処理された出力テンソルとして出力させる(S36)。
一方、事前計算された入力テンソルの要素の数だけ畳み込み演算が行われていない場合(S35でNo)、情報処理装置10のコンピュータは、畳み込み演算部122に、ステップS31の処理から再度行わせる。
[効果等]
以上のように、本実施の形態における情報処理装置10によれば、畳み込み演算を、乗算演算を必要とせず加算演算およびシフト演算のみで行うことができるので、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。より具体的には、本実施の形態の情報処理装置10によれば、CNNのデータ表現として、ハードウェア効率の高い2の累乗表現形式を採用することで、畳み込み演算を乗算なしでシフト演算および加算演算のみで行うことができる。これにより、CNNにおいて最も計算量の多い部分である畳み込み層の計算コストを大幅に削減することができる。よって、CNNの畳み込み層で行われる畳み込み演算の計算効率をより向上させて、CNNが実装される装置の低消費電力化を図ることもできる。
また、本実施の形態の情報処理装置10では、畳み込み演算に用いる可能性のある重みを2の累乗表現の形式に予め変換して、アドレスまたは指標が紐づけられた重みとして格納されているコードブック123を用いて、畳み込み演算を行う。コードブック123には、2の補数のビット値B(1以上の整数)とすると、重みは2-1個の組み合わせからなる2の累乗表現の形式に変換された重みが格納されるので、比較的小さい。このように畳み込み演算を行う際に必要な重みを予め辞書的にコードブックとして保持できるので、畳み込み演算の畳み込み項を事前計算することを可能にする。例えば、一般的なCNNモデルの畳み込み層の畳み込み演算で必要とする演算回数を1/100つまり少なくとも2桁現象させることができるなど、畳み込み演算の計算コストを削減することができるので、畳み込み演算の計算効率をより向上させることができる。
より詳細には、本実施の形態の情報処理装置10では、以下の3つの特徴がある。第1に、畳み込み演算に用いる可能性のある重みテンソルWを低精度の重みテンソル
Figure 0007029321000017
で近似することで、M=2-1個の組み合わせからなる2の累乗表現の形式に変換された重みテンソルをコードブック123に予め用意できる。第2に、入力テンソルXの各要素のすべての組み合わせについて、2の累乗表現の形式であるテンソルPを事前計算する。テンソルPの事前計算は、特殊なシフト演算器であるShiftALU部1211またはアルゴリズム1を用いて行われる。第3に、アドレスまたは指標に従って選択した重みテンソル
Figure 0007029321000018
と事前計算されたテンソルPの各要素とをシフト演算および加算演算のみを用いて畳み込み演算したものを蓄積することで、畳み込み演算処理を行う。
このようにして、本実施の形態における情報処理装置10は、CNNにおいて最も計算量の多い部分である畳み込み層の計算コストを大幅に削減することができる。
なお、本実施の形態の情報処理装置10は、ShiftALU部1211またはアルゴリズム1を用いて、一般的なCNNモデルを、畳み込み演算を乗算なしで行うことができる、2の累乗表現に変換したShiftCNNモデルに変換しているとも表現できる。そして、ShiftCNNモデルでは、CNNの再学習が不要で、精度低下もない状態で、一般的なCNNモデルの畳み込み層で行われる畳み込み演算を、シフト演算および加算演算のみを用いて行うことができる。
ここで、ストライド1を有するフィルタカーネルについて、簡単に、出力チャンネルと入力チャンネルとの高さおよび幅を同一、すなわち
Figure 0007029321000019
と仮定する。この場合、一般的なCNNの畳み込み層では、
Figure 0007029321000020
の乗算が実行されて畳み込み演算が行われることになる。一方、本実施の形態の情報処理装置10では、畳み込み層の畳み込み演算として、(PCHW)の演算のみを実行する。
また、
Figure 0007029321000021
であるので、演算回数による計算コストの削減量は、これらの比、すなわち
Figure 0007029321000022
で定量化できる。つまり、CNNを構成する各畳み込み層における演算数は、すべての乗算演算を2の累乗表現によるシフト演算に置き換えて行うことにより、
Figure 0007029321000023
だけ減少できる。
ShiftALU部1211は、[P/2]回の1ビットずつの右シフト処理と符号反転処理とにより(P-1)回の演算を行う。つまり、ShiftALU部1211は、事前計算されたテンソルPを生成するのに必要なサイクル数をPの因数だけさらに減らせる。
(実施例1)
情報処理装置10の処理部12であるShiftCNNの有効性について、大量の画像とその内容を表すタグで構成されているImageNet datasetを用いて広範な評価を行ったので、その評価結果を実施例1として説明する。
<評価対象>
本実施例では、ShiftCNNモデルに変換される従来のCNNとして、画像分類に用いられる一般的なCNNモデルであるGoogleNetとResNetとSqueezeNetとを選択した。
GoogleNetとResNet-50とは、事前にトレーニングされたモデルのサブセットとして、オープンソースのディープラーニングライブラリであるCaffeからダウンロードした。SqueezeNet v1.1およびResNet-18は、インターネットで公に利用可能なソースをダウンロードした。これら全てのCNNモデルは、その著者によってImageNet datasetを用いて予め学習されたものである。
<評価条件>
これら全てのCNNモデルを図5に示したアルゴリズム1を用いて、浮動小数点精度を下げた2の累乗表現の形式にエミュレートすることによりShiftCNNモデルに変換した。そして、ImageNetの検証用データセットから切り取って縦横比を維持しつつ中央にさせた5万の画像を用いて、CaffeツールによりTop-1 AccuracyとTop-5 Accuracyを評価した。
ここで、Top-1 Accuracyとは、入力された画像がどういう画像かを識別するタスクにおいて、識別結果のうちの第1候補すなわちトップ候補が正解と完全一致した正解率を意味する。Top-5 Accuracyとは、入力された画像がどういう画像かを識別するタスクにおいて、識別結果のうちの第5位までの画像の中に正解と完全一致したものが含まれている正解率を意味する。
<評価結果>
図10は、実施例1におけるImageNet datasetを用いて正解率を評価した評価結果を示す図である。図10には、SqueezeNet、GoogleNet、ResNet-18およびResNet-50をShiftCNNモデルに変換後に、ImageNet datasetを用いてTop-1 AccuracyとTop-5 Accuracyとを評価した結果が示されている。
また、図10において、SqueezeNet base、GoogleNet base、ResNet-18 baseおよびResNet-50 baseは、ShiftCNNモデルに変換していない元のCNNモデルである。ResNetモデルに「*」のマークが付いているものは、ResNetモデルのうちの畳み込み層のみが2の累乗表現に変換されたShiftCNNモデルを示している。また、Bは、ビット幅を示し、上述した2の補数のビット値に該当する。また、Nは、1ビットの表現の自由度を示す次元数に該当し、図10中では、shiftsと表現されている。
図10から、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN>2の場合、正解率の低下すなわち精度低下が0.29%未満であるのがわかる。また、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN=2の場合、1%以内で正解率の低下すなわち精度低下を示している。これらから、正解率と計算の複雑さとは、トレードオフの関係があるように考えられる。
なお、ShiftCNNモデルに変換されたCNNモデルは、B>4では、有意な精度向上は認められなかった。また、図10から、ShiftCNNモデルに変換されたCNNモデルは、N=1の場合、有意に機能せず、再学習が必要であることを示唆し、従来の畳み込み層と同じ数の加算演算が必要となる。
以上から、ShiftCNNモデルに変換されたCNNモデルは、B=4かつN>2であれば、再学習を行わなくても、元のCNNモデルと同等の正解率を得られることがわかった。
つまり、CNNモデルは、図5に示すアルゴリズム1により、データ表現が2の累乗表現の形式であるShiftCNNモデルに変換することで、1%未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を行えることがわかった。
したがって、本開示の情報処理装置10は、1%未満の正解率低下すなわち精度低下の範囲において、畳み込み演算を、加算演算およびシフト演算のみで行うことができるのがわかった。
図11は、実施例1の3つのCNNモデルにおける従来の畳み込み層に畳み込み演算に必要な乗算演算の数とShiftCNNに変換後に畳み込み演算に必要なシフト演算のサイクル数の比較を示す図である。なお、図11に示すスピードアップは、シフト演算の数を従来の畳み込み層の畳み込み演算に必要な乗算演算の数で割ることで評価している。
図11からわかるように、SqueezeNetはフィルタカーネルHfWf>3を使用しないため、260倍のスピードアップしか達成していないのがわかる。一方、GoogleNetとResNet-18とはサイズ5とサイズ7のフィルタカーネルを使用しているため、約3桁のスピードアップを達成しているのがわかる。
したがって、図11から、従来のCNNモデルをShiftCNNモデルに変換することで、演算数を2桁以上減らせることができることがわかる。
(実施例2)
実施例2では、図4に示すShiftALU部1211と、比較例として8ビットで乗算演算する算術乗算器とをRTL(Resister Transfer Level)を使用して設計し、Xilinx Zynq XA7Z010デバイス用にコンパイルした。Xilinx Zynq XA7Z010デバイスは、200MHzクロックレートで動作する自動車グレードのFPGAである。入力テンソルのビット幅は8ビットとし、ShiftALU部1211および算術乗算器は16ビットで結果を出力するとした。また、ShiftALU部1211で用いるビット幅を示すBは4ビットであり、畳み込み層の深さはC= 512とした。
図12は、実施例2におけるFPGAを利用した場合の推定電力の比較を示す図である。
図12には、ShiftALU部1211に加えて、比較のため、DSPブロックを使用せずLUTのみを使用して実装した算術乗算器(Mult.UT)と、LUTを使用せずDSPブロックを使用して実装した算術乗算器(Mult.DSP)とが示されている。また、図12には、利用しているルックアップテーブル(LUT)の数、フリップフロップ(FF)の数、デジタル信号処理ブロック(DSP)の数、36KBブロックRAM(BRAM)の数および動的電力と、消費電力とが示されている。
図12から、ShiftALU部1211の動的電力の85%が、BRAMメモリによって消散されたことがわかる。
また、図12には、同じ計算速度を有するために必要な等価電力を示す「Equiv. Power」が示されている。「Equiv. Power」は、RTLコードを記述し、電力シミュレーションを実行することで計算した。
図12によれば、畳み込み層の畳み込み演算を行う際のShiftALU部1211の消費電力は、算術乗算器(Mult.LUT)と比較して、10分の1に減少していることがわかる。この結果は、乗算演算の複雑さがO(B2)であるのに対して、加算演算の複雑さがO(B)であるので、計算コストが大幅に少なくなることからもわかる。
したがって、実施例2によれば、FPGAチップ上に実装されたShiftCNNモデルの畳み込み層の消費電力は1/10程度減少させることができるのがわかった。これにより、従来のCNNモデルをShiftCNNモデルに変換することで、FPGAまたはASICチップ上で実現可能であることがわかる。
以上のように、本開示に係る情報処理装置および情報処理方法によれば、畳み込み演算の計算効率をより向上させて低消費電力化させることができる。したがって、本開示に係る情報処理装置および情報処理方法を、FPGAまたはASICに実装するなど低消費の組み込みシステムに適用できるだけでなく、新しいタイプのDNNのアプリケーションに適用できる。
(他の実施態様の可能性)
以上、実施の形態において本開示の情報処理装置および情報処理方法について説明したが、各処理が実施される主体や装置に関しては特に限定しない。ローカルに配置された特定の装置内に組み込まれたプロセッサーなど(以下に説明)によって処理されてもよい。またローカルの装置と異なる場所に配置されているクラウドサーバなどによって処理されてもよい。
なお、本開示は、上記実施の形態に限定されるものではない。例えば、本明細書において記載した構成要素を任意に組み合わせて、また、構成要素のいくつかを除外して実現される別の実施の形態を本開示の実施の形態としてもよい。また、上記実施の形態に対して本開示の主旨、すなわち、請求の範囲に記載される文言が示す意味を逸脱しない範囲で当業者が思いつく各種変形を施して得られる変形例も本開示に含まれる。
また、本開示は、さらに、以下のような場合も含まれる。
(1)上記の装置は、具体的には、マイクロプロセッサ、ROM、RAM、ハードディスクユニット、ディスプレイユニット、キーボード、マウスなどから構成されるコンピュータシステムである。前記RAMまたはハードディスクユニットには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、各装置は、その機能を達成する。ここでコンピュータプログラムは、所定の機能を達成するために、コンピュータに対する指令を示す命令コードが複数個組み合わされて構成されたものである。
(2)上記の装置を構成する構成要素の一部または全部は、1個のシステムLSI(Large Scale Integration:大規模集積回路)から構成されているとしてもよい。システムLSIは、複数の構成部を1個のチップ上に集積して製造された超多機能LSIであり、具体的には、マイクロプロセッサ、ROM、RAMなどを含んで構成されるコンピュータシステムである。前記RAMには、コンピュータプログラムが記憶されている。前記マイクロプロセッサが、前記コンピュータプログラムに従って動作することにより、システムLSIは、その機能を達成する。
(3)上記の装置を構成する構成要素の一部または全部は、各装置に脱着可能なICカードまたは単体のモジュールから構成されているとしてもよい。前記ICカードまたは前記モジュールは、マイクロプロセッサ、ROM、RAMなどから構成されるコンピュータシステムである。前記ICカードまたは前記モジュールは、上記の超多機能LSIを含むとしてもよい。マイクロプロセッサが、コンピュータプログラムに従って動作することにより、前記ICカードまたは前記モジュールは、その機能を達成する。このICカードまたはこのモジュールは、耐タンパ性を有するとしてもよい。
(4)また、本開示は、上記に示す方法であるとしてもよい。また、これらの方法をコンピュータにより実現するコンピュータプログラムであるとしてもよいし、前記コンピュータプログラムからなるデジタル信号であるとしてもよい。
(5)また、本開示は、前記コンピュータプログラムまたは前記デジタル信号をコンピュータで読み取り可能な記録媒体、例えば、フレキシブルディスク、ハードディスク、CD-ROM、MO、DVD、DVD-ROM、DVD-RAM、BD(Blu-ray(登録商標) Disc)、半導体メモリなどに記録したものとしてもよい。また、これらの記録媒体に記録されている前記デジタル信号であるとしてもよい。
また、本開示は、前記コンピュータプログラムまたは前記デジタル信号を、電気通信回線、無線または有線通信回線、インターネットを代表とするネットワーク、データ放送等を経由して伝送するものとしてもよい。
また、本開示は、マイクロプロセッサとメモリを備えたコンピュータシステムであって、前記メモリは、上記コンピュータプログラムを記憶しており、前記マイクロプロセッサは、前記コンピュータプログラムに従って動作するとしてもよい。
また、前記プログラムまたは前記デジタル信号を前記記録媒体に記録して移送することにより、または前記プログラムまたは前記デジタル信号を、前記ネットワーク等を経由して移送することにより、独立した他のコンピュータシステムにより実施するとしてもよい。
本開示は、CNNを用いた情報処理方法、情報処理装置およびプログラムに利用でき、特にCNNの畳み込み層で行われる畳み込み演算を行う情報処理方法、情報処理装置およびプログラムをFPGAまたはASICに実装するなど低消費の組み込みシステムに利用できる。
10 情報処理装置
11 入力部
11a 入力テンソル
12 処理部
13 出力部
13a 出力テンソル
121 事前計算部
122 畳み込み演算部
123 コードブック
123a 重みテンソル
124 メモリ
124a 事前計算後テンソル
124b バイアス項
125 制御部
1211 ShiftALU部
1221、1222 マルチプレクサ
1223 加算器

Claims (6)

  1. データを示す入力テンソルを、メモリを有しコンピュータにより処理される処理部に入力する入力ステップと、
    前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、
    前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを含み、
    前記重みテンソルは、2の補数のビット値がB(1以上の整数)とすると2 -1個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、
    前記処理ステップでは、前記コードブックから、1ビットの表現の自由度を示す次元数とするN(1以上の整数)および前記Bとにより特定される重みテンソルの要素を取得して用いる、
    情報処理方法。
  2. 前記処理ステップでは、前記処理部に、前記事前計算を行わせ、前記メモリに前記事前計算を行った前記入力テンソルの各要素を格納させる、
    請求項1に記載の情報処理方法。
  3. 前記処理ステップでは、前記処理部に、畳み込みニューラルネットワークを構成する畳み込み層の演算を行わせる、
    請求項1または2に記載の情報処理方法。
  4. 前記Nは、2以上の整数である、
    請求項1~3のいずれか1項に記載の情報処理方法。
  5. データを示す入力テンソルを入力する入力部と、
    メモリを有しコンピュータにより処理される処理部であって、前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われて前記メモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、加算演算およびシフト演算のみで畳み込み演算処理を行う処理部と、
    前記処理部により前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力部とを含み、
    前記重みテンソルは、2の補数のビット値がB(1以上の整数)とすると2 -1個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、
    前記処理は、前記コードブックから、1ビットの表現の自由度を示す次元数とするN(1以上の整数)および前記Bとにより特定される重みテンソルの要素を取得して用いる、
    情報処理装置。
  6. データを示す入力テンソルを、メモリを有する処理部に入力する入力ステップと、
    前記入力テンソルの各要素について2の累乗表現の形式に変換される事前計算が行われてメモリに格納された後において、所定のアルゴリズムにより予め2の累乗表現の形式に変換され、かつ前記メモリに格納されている畳み込み演算に用いる可能性のある重みを示す重みテンソルと、前記メモリに格納された前記事前計算が行われた前記入力テンソルの各要素とを用いて、前記処理部に、加算演算およびシフト演算のみで畳み込み演算処理を行わせる処理ステップと、
    前記処理ステップにより前記畳み込み演算処理が行われた前記入力テンソルの各要素を、出力テンソルとして出力する出力ステップとを、
    コンピュータに実行させ、
    前記重みテンソルは、2の補数のビット値がB(1以上の整数)とすると2 -1個の組み合わせからなり、かつ、前記メモリにコードブックとして格納されており、
    前記処理ステップでは、前記コードブックから、1ビットの表現の自由度を示す次元数とするN(1以上の整数)および前記Bとにより特定される重みテンソルの要素を取得して用いることをコンピュータに実行させる、
    プログラム。
JP2018046055A 2017-04-20 2018-03-13 情報処理方法、情報処理装置およびプログラム Active JP7029321B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US201762487684P 2017-04-20 2017-04-20
US62/487,684 2017-04-20

Publications (2)

Publication Number Publication Date
JP2018181313A JP2018181313A (ja) 2018-11-15
JP7029321B2 true JP7029321B2 (ja) 2022-03-03

Family

ID=63856563

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018046055A Active JP7029321B2 (ja) 2017-04-20 2018-03-13 情報処理方法、情報処理装置およびプログラム

Country Status (3)

Country Link
US (1) US11055379B2 (ja)
JP (1) JP7029321B2 (ja)
WO (1) WO2018193906A1 (ja)

Families Citing this family (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB201801639D0 (en) * 2018-02-01 2018-03-21 Ruff Brendan Patrick Low precision efficient multiplication free convolutional filter bank device
WO2019168084A1 (ja) * 2018-03-02 2019-09-06 日本電気株式会社 推論装置、畳み込み演算実行方法及びプログラム
FR3087558B1 (fr) * 2018-10-19 2021-08-06 Idemia Identity & Security France Procede d'extraction de caracteristiques d'une empreinte digitale representee par une image d'entree
CN109740748B (zh) * 2019-01-08 2021-01-08 西安邮电大学 一种基于fpga的卷积神经网络加速器
CN109635940B (zh) * 2019-01-28 2021-04-06 深兰人工智能芯片研究院(江苏)有限公司 一种基于卷积神经网络的图像处理方法及图像处理装置
CN109992785B (zh) * 2019-04-09 2023-07-25 腾讯科技(深圳)有限公司 基于机器学习的内容计算方法、装置及设备
CN110059817B (zh) * 2019-04-17 2023-06-13 中山大学 一种实现低资源消耗卷积器的方法
EP4026057A4 (en) * 2019-09-10 2023-02-15 Huawei Technologies Co., Ltd. METHOD AND DEVICE FOR GENERATION OF ARCHITECTURE-SPECIFIC FOLDING GRADIENT CORE
CN112766470B (zh) * 2019-10-21 2024-05-07 地平线(上海)人工智能技术有限公司 特征数据处理方法、指令序列生成方法、装置及设备
CN112926020B (zh) * 2019-12-06 2023-07-25 腾讯科技(深圳)有限公司 反卷积处理方法、图像处理方法和相应装置
CN113128673B (zh) * 2019-12-31 2023-08-11 Oppo广东移动通信有限公司 数据处理方法、存储介质、神经网络处理器及电子设备
WO2021158378A1 (en) * 2020-02-06 2021-08-12 Interdigital Patent Holdings, Inc. Systems and methods for encoding a deep neural network
US11687336B2 (en) * 2020-05-08 2023-06-27 Black Sesame Technologies Inc. Extensible multi-precision data pipeline for computing non-linear and arithmetic functions in artificial neural networks
CN111831429B (zh) * 2020-06-11 2024-04-02 上海交通大学 一种基于simt编程模型的张量化并行计算方法
JP2022034897A (ja) 2020-08-19 2022-03-04 富士通株式会社 情報処理装置、機械学習方法及び機械学習プログラム
US20220114413A1 (en) * 2020-10-12 2022-04-14 Black Sesame International Holding Limited Integer-based fused convolutional layer in a convolutional neural network
CN114217686A (zh) * 2021-04-26 2022-03-22 无锡江南计算技术研究所 一种稠密卷积运算核心的低功耗方法
CN113485837B (zh) * 2021-07-21 2024-05-07 瀚博半导体(上海)有限公司 一种基于并行分支和张量切分的张量处理方法和处理系统

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06259585A (ja) * 1993-03-10 1994-09-16 Toyota Central Res & Dev Lab Inc ニューラルネットワーク装置
US5473730A (en) * 1993-11-09 1995-12-05 At&T Ipm Corp. High efficiency learning network
US9805303B2 (en) * 2015-05-21 2017-10-31 Google Inc. Rotating data for neural network computations
US10311342B1 (en) * 2016-04-14 2019-06-04 XNOR.ai, Inc. System and methods for efficiently implementing a convolutional neural network incorporating binarized filter and convolution operation for performing image classification

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Daisuke Miyashita,Convolutional Neural Networks using Logarithmic Data Representation,Cornell University,2016年03月17日,https://arxiv.org/pdf/1603.01025.pdf

Also Published As

Publication number Publication date
US20190340214A1 (en) 2019-11-07
WO2018193906A1 (ja) 2018-10-25
JP2018181313A (ja) 2018-11-15
US11055379B2 (en) 2021-07-06

Similar Documents

Publication Publication Date Title
JP7029321B2 (ja) 情報処理方法、情報処理装置およびプログラム
JP7349835B2 (ja) ニューラルネットワークにおいてパラメータを処理する方法及び装置
Faraone et al. AddNet: Deep neural networks using FPGA-optimized multipliers
JP6998968B2 (ja) ディープニューラルネットワークの実行方法、実行装置、学習方法、学習装置及びプログラム
CN112292816B (zh) 处理核心数据压缩和存储系统
JP7240657B2 (ja) ニューラルネットワーク回路装置、ニューラルネットワーク、ニューラルネットワーク処理方法およびニューラルネットワークの実行プログラム
WO2018140294A1 (en) Neural network based on fixed-point operations
US20180365529A1 (en) Hieroglyphic feature-based data processing
CN118095366A (zh) 利用反向传播为深度神经网络选择量化参数的方法和系统
CN106570559A (zh) 一种基于神经网络的数据处理方法和装置
Choi et al. An energy-efficient deep convolutional neural network training accelerator for in situ personalization on smart devices
EP3480689B1 (en) Hierarchical mantissa bit length selection for hardware implementation of deep neural network
KR102153791B1 (ko) 인공 신경망을 위한 디지털 뉴런, 인공 뉴런 및 이를 포함하는 추론 엔진
Chervyakov et al. Residue number system-based solution for reducing the hardware cost of a convolutional neural network
CN107402905B (zh) 基于神经网络的计算方法及装置
CN112651485A (zh) 识别图像的方法和设备以及训练神经网络的方法和设备
Choi et al. Low cost convolutional neural network accelerator based on bi-directional filtering and bit-width reduction
CN111126557B (zh) 神经网络量化、应用方法、装置和计算设备
US11995533B1 (en) Executing replicated neural network layers on inference circuit
US11699077B2 (en) Multi-layer neural network system and method
JP2020021208A (ja) ニューラルネットワーク用プロセッサ、ニューラルネットワーク用処理方法、および、プログラム
US20220171602A1 (en) Integrated circuit for constant multiplication and device including the same
CN117063183A (zh) 激活函数的高效压缩
Panwar et al. M2DA: a low-complex design methodology for convolutional neural network exploiting data symmetry and redundancy
GB2549928A (en) Sorting numbers in hardware

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201001

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210927

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211102

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220121

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20220201

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220218

R150 Certificate of patent or registration of utility model

Ref document number: 7029321

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150