JP7136937B2 - 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム - Google Patents

少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム Download PDF

Info

Publication number
JP7136937B2
JP7136937B2 JP2020570826A JP2020570826A JP7136937B2 JP 7136937 B2 JP7136937 B2 JP 7136937B2 JP 2020570826 A JP2020570826 A JP 2020570826A JP 2020570826 A JP2020570826 A JP 2020570826A JP 7136937 B2 JP7136937 B2 JP 7136937B2
Authority
JP
Japan
Prior art keywords
exponent
unit
base
machine learning
learning system
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
JP2020570826A
Other languages
English (en)
Other versions
JP2021528756A (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.)
Robert Bosch GmbH
Original Assignee
Robert Bosch GmbH
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 Robert Bosch GmbH filed Critical Robert Bosch GmbH
Publication of JP2021528756A publication Critical patent/JP2021528756A/ja
Application granted granted Critical
Publication of JP7136937B2 publication Critical patent/JP7136937B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/52Multiplying; Dividing
    • G06F7/523Multiplying only
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/4833Logarithmic number system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F5/00Methods or arrangements for data conversion without changing the order or content of the data handled
    • G06F5/01Methods or arrangements for data conversion without changing the order or content of the data handled for shifting, e.g. justifying, scaling, normalising
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/483Computations with numbers represented by a non-linear combination of denominational numbers, e.g. rational numbers, logarithmic number system or floating-point numbers
    • G06F7/487Multiplying; Dividing
    • G06F7/4876Multiplying
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/50Adding; Subtracting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/5443Sum of products
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/38Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation
    • G06F7/48Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices
    • G06F7/544Methods or arrangements for performing computations using exclusively denominational number representation, e.g. using binary, ternary, decimal representation using non-contact-making devices, e.g. tube, solid state device; using unspecified devices for evaluating functions by calculation
    • G06F7/552Powers or roots, e.g. Pythagorean sums
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computing Systems (AREA)
  • Mathematical Optimization (AREA)
  • General Engineering & Computer Science (AREA)
  • Nonlinear Science (AREA)
  • Software Systems (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Evolutionary Computation (AREA)
  • Medical Informatics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Image Analysis (AREA)
  • Complex Calculations (AREA)
  • Executing Machine-Instructions (AREA)
  • Apparatus For Radiation Diagnosis (AREA)
  • Inspection Of Paper Currency And Valuable Securities (AREA)
  • Die Bonding (AREA)

Description

本発明は、ビット単位のシフトによって少なくとも2つの被乗数を乗算するための計算ユニットに関する。本発明はまた、ビット単位のシフトによって少なくとも2つの被乗数を乗算する方法、この方法を実施するために構成されているコンピュータプログラム及びこのコンピュータプログラムが格納されている機械可読メモリ素子に関する。
従来技術
独国特許出願公開第102013220432号明細書は、組み込まれた制御モジュール用のモデル計算ユニットを開示している。この制御モジュールには、データに基づいた関数モデル、特にガウス過程モデルを計算するために、純粋なハードウェアに基づく実装によって、指数機能、加算機能及び乗算機能が少なくとも1つの内部ループ及び外部ループにおいて備えられている。
独国特許出願公開第102013220432号明細書
発明の開示
第1の態様においては、本発明は、独立請求項1に記載されている計算ユニットに関する。計算ユニットは、少なくとも2つの被乗数の乗算を実行するように構成されている。被乗数は、それぞれ第1の指数と第1の底とを有している。被乗数、特に第1の底は、それぞれ第2の底と第2及び第3の指数とを有している。
計算ユニットは、特に、以下の特徴、即ち、2進数を事前に設定可能な桁数だけ、特に左へシフトさせる少なくとも1つのビットシフトユニットを含む。さらに、計算ユニットは、2つの入力変数の加算及び2つの入力変数の減算を実行する算術ユニットと、メモリとを含む。メモリは、レジスタ又はルックアップテーブルであるものとしてよい。
算術ユニットとビットシフトユニットとは、算術ユニットが最初に、第3の指数の減算を実行するように、互いに接続されている。
計算ユニットの算術ユニットとビットシフトユニットとはさらに、ビットシフトユニットが、被乗数の第1の指数のうちの1つの指数の2進数を、減算された指数の値の桁数だけシフトさせる第1のシフトを実行し、これによって、算術ユニットが、第1のシフトの結果を、被乗数の他の第1の指数で加算するように、互いに接続されている。
この加算の結果は、第3の指数のうちの小さい方の指数の値に関連して、整数部(英語:integer part)と小数部(英語:fractional part)とに分けられる。
整数部(英語:integer part)と小数部(英語:fractional part)とへの分割を、加算の結果を、第3の指数のうちの小さい方の指数の値の桁数だけシフトさせることによって行うことができる。なぜなら、このようなシフトにおいては、各比率への分割を決定する、加算の結果の小数点がシフトされるからである。
次に、小数部の2進数がメモリから読み取られる。
小数部の2進数は、有利には、小数部の累乗された2進数であり、特に、底2対して求められた小数部の累乗の2進数である。
次に、ビットシフトユニットは、小数部の2進数を、整数部の値の桁数だけシフトさせる第2のシフトを実行する。
小数部を、メモリから読み取るために、アドレスとして利用することができる。
小数部は、10進小数点、2進小数点又は小数点に続く数の一部として理解される。従って、整数部は、10進小数点の前の数の一部である。選択的に、整数部を、10進小数点の前の数の一部の整数として理解することもできる。
計算ユニットは、被乗数の指数の2進数をシフトさせることによって乗算が実行され、2進数のこのシフトがハードウェアにおいて、特にリソース効率良くかつエネルギー効率良く実行可能であるという利点を有している。さらに、複雑なハードウェア実装された乗算装置(例えば、浮動小数点乗算器又は固定小数点乗算器)を省略することができるので、計算ユニットを、比較的小さいチップ面積上に実装することができる。さらに、2進数をシフトさせるために必要な演算は、複雑な乗算装置と比較して、乗算を実行する際に消費するエネルギーが少ないので、この計算ユニットは、より省エネルギーである。従って、この計算ユニットは、エネルギー、計算時間及びチップ面積等の乗算を実行するために必要なリソースを特に節約する。
さらに、本発明の第1の態様においては、このシフトをそれぞれビット単位で実行することができる。
さらに、本発明の第1の態様においては、ビットシフトユニットが、第3の指数のうちの大きい方の指数に相当する複数の「0」、特にその指数で右側を埋めることよって、第3の指数の減算の値に関連して、第1のシフトを実行するように設定されているものとしてよい。合理的には、これらの複数の「0」はそれぞれ、二値「0」を表す。このような手法は、以下において、ビット調整と称される。
ここでの利点は、第1の指数の分解能が異なる場合(即ち、固定小数点表現が異なる場合)に、それらのバイナリ表現が相互に調整可能であり、これによって、例えば、2進数のその後の加算を直接的に実行することができるということである。
さらに、メモリが少なくとも2のエントリを有するように設定されているものとしてよく、ここで、nは、第3の指数のうちの小さい方の指数の絶対値に等しい。有利には、メモリ内に、第3の指数のうちの小さい方の指数が有し得る総ての潜在的な種々の値に対してそれぞれ、累乗された小数部の結果に相当するエントリがそれぞれ格納されている。小数部は、メモリから各2進数を読み取るために、アドレスとして利用可能である。
ここでの利点は、累乗された小数部の2進数がメモリアクセスによって求められ、これによって、極めて計算コストのかかる指数計算をハードウェアにおいて実行する必要がないということである。
さらに、計算ユニットが、それぞれ少なくとも2つの被乗数の複数の乗算の結果を累積する累積ユニットを含むように設定されているものとしてよい。
利点は、これによって、特に機械学習システムの動作時に発生し、その算出のために、加算が続く乗算が実行される、例えば行列ベクトル積又は畳み込みを、特に少ないリソースで実行することができるということである。なぜなら、各乗算の結果を個別に一時記憶し、その後で足し合わせる必要はなく、直接的に累積することができるからである。
乗算の結果を指数表現に変換する換算ユニット、特にプライオリティエンコーダを設けることができる。指数表現においては、数は、第1の指数と第1の底とによって表される。第1の底は、所定の値を有することができる。指数表現において、数が同様に、第2の底と第2及び第3の指数とを有することも可能である。
指数表現への変換は、結果を被乗数として計算ユニットに再び提供することができるようにするために、結果が適当なフォーマットで存在するので、有利である。
第2の態様においては、計算ユニット上で少なくとも2つの被乗数を乗算する方法が提示される。被乗数は、それぞれ第1の指数と第1の底とを有している。被乗数、特に第1の底は、それぞれ第2の底と第2及び第3の指数とを有している。
この方法は、特に、以下のステップを含む。
最初に、被乗数の第1の指数と第3の指数とが提供される。提供された各指数、特に2進数が量子化される。
次に、第3の指数が相互に減算される。その後、被乗数の第1の指数のうちの1つの指数の2進数を、減算された指数の値の桁数だけシフトさせる第1のシフトが実行される。次に、この第1のシフトの結果が、被乗数の他の第1の指数で加算される。この加算の結果は、第3の指数のうちの小さい方の指数の値に関連して、整数部(英語:integer part)と小数部(英語:fractional part)とに分けられる。
加算の結果を第3の指数のうちの小さい方の指数の値に関連して、桁数だけシフトさせることによっても、このような分割を行うことができる。
次に、小数部の2進数を、整数部の値の桁数だけシフトさせる第2のシフトが実行される。
個々のステップは、有利には、計算ユニットのプロセッサ又は算術ユニット(英語:rithmetic ogic nit,ALU)によって実行される。有利には、少なくとも第1のシフトは、ビットシフトユニット又はビット調整によって実行され、第2のシフトは、ビットシフトユニットによって実行される。
本発明の第2の態様の利点は、このような方法によって、乗算を、計算ユニット上でリソース節約して実行することができるということである。
さらに、シフトがそれぞれビット単位で実行されることが提案される。
第2の態様においては、小数部の2進数がメモリ、特にレジスタ又はルックアップテーブルから読み取られるように設定されているものとしてよい。この場合には、小数部は、小数部の2進数を読み取るために、メモリのアドレスとして使用可能である。
さらに、第2のシフトの結果が、指数と事前に設定可能な底とに分解され、特に、指数表現に変換されるように設定されているものとしてよい。
これによって、本発明の第2の態様による方法を用いて、結果を、新たな乗算のために容易に再利用することが可能になる。さらなる利点は、指数表現を使用することによって、指数は結果自体よりも強く量子化可能であるので、結果が要求するメモリ容量が少なくなるということである。これによって、この方法を実施する際に必要なメモリ容量も低減させることができる。
第2の底及び第2の指数がそれぞれ値2を有することが有利である。なぜなら、2の累乗により、被乗数の与えられた指数と底とからの容易な再構築が可能になるからである。さらに、2の累乗は、ハードウェアとの親和性が高く、その結果、特に、ビット単位のシフトによって、この方法をハードウェアにおいて特に容易に写し取ることができる。
さらに、提供される指数が、最大10ビットを使用して表されることが提案される。これによって、メモリが大幅に削減され、必要なメモリ帯域幅も大幅に削減される。
ここでの利点は、メモリ容量を大幅に削減することができることである。なぜなら、通常は少なくとも32ビットで記憶される被乗数を、乗算の結果の精度を大幅に損なうことなく、指数ごとにそれぞれ10ビットのみを用いて記憶することが可能だからである。これによって、個々の被乗数を記憶するために必要なメモリコストが大幅に削減される。
本発明のさらなる態様においては、機械学習システムの動作方法が提示される。通常、機械学習システムの動作中に被乗数として使用される、機械学習システムの複数のパラメータ及び中間変数は、それぞれ指数表現によって、特に、他のメモリに格納されている。これらの被乗数の乗算は、本発明の第2の態様の方法の1つに従って実行される。
機械学習システムにおいては、パラメータと中間変数とを互いに乗算することができる。機械学習システムの求められた中間結果が中間変数として理解される。中間結果は、機械学習システムの多数のパラメータに関連して、かつ、入力変数及び/又は以前の求められた中間結果に関連して、求められるものとしてよい。中間結果は、機械学習システムによって頻繁に、中間結果に関連して、機械学習システムが出力変数を求めるまで、さらに処理されるものとしてよい。
機械学習システムにおいて基本的な計算演算は乗算であり、これは機械学習システムの動作時に極めて頻繁に実行されるので、本発明の第2の態様による方法によって、計算ユニットの計算能力効率と計算速度の大幅な向上を達成することができ、それによって、また、機械学習システムの性能は、より高くなる。
乗算の複数の結果が、特に、アキュムレータによって累積されるように設定されているものとしてよい。乗算の他に、機械学習システムの動作時に頻繁に加算が実行されるので、結果の累積によって、加算、ひいては機械学習システムの計算を、特に計算効率良くかつ時間効率良く、計算ユニットで実行することができる。これによって、さらに、機械学習システムの性能を高めることができる。
さらなる態様においては、機械学習システムのトレーニング時に、少なくとも中間変数及びパラメータの指数表現の底が求められるように設定されているものとしてよい。
利点は、トレーニング時に既に被乗数の適当な底が求められていることであり、これによって、機械学習システムは、トレーニングの間、機械学習システムのパラメータを求める際に、指数表現を考慮することができる。
機械学習システムのトレーニングとは、提供されたトレーニングデータに基づいて機械学習システムが事前に設定可能な課題を解決すること、例えば、検出された画像等の入力変数を分類又はセグメント化することを学習することであると理解される。
選択的に、機械学習システムのトレーニング後に、少なくとも、機械学習システムの中間変数及びパラメータの指数表現に対する底が求められるように設定されているものとしてよい。
利点は、第1の底の値を任意に選択することができるため、変換されたパラメータを使用して新たにトレーニングを実行する必要がないということである。少なくとも、機械学習システムのパラメータの第1の底が2よりも小さい値を有しており、それによって、新たにトレーニングを実行する必要がないことは、機械学習システムにとって、特に有利であることが判明している。
さらに、伝達された量子化誤差に関連して底が求められるように設定されているものとしてよい。伝達された量子化誤差は、2つの被乗数と量子化された指数との乗算の結果と、これらの2つの被乗数と有利には実数の指数又は高い分解能で量子化された指数、例えば、32ビットで量子化された指数との乗算の結果との差を表す。
数が指数表現で存在しており、指数が量子化されている場合、以下においては、量子化された指数表現と称される。伝達された量子化誤差の利点は、必要とされるものが、ラベル及び属性が与えられていない入力トレーニングデータだけであるということである。
選択的に、伝達された量子化誤差が、(非)間接的に後続する乗算の量子化を伴う結果と、量子化を伴わない結果との差を表すものとしてよい。非間接的に後続する乗算の被乗数は、ここで、量子化された指数表現における被乗数の乗算の結果であり、ここでは、少なくとも、指数表現における被乗数のうちの1つの被乗数の第1の底が求められる。
間接的に後続する乗算の被乗数は、ここでは、量子化された指数表現における被乗数の乗算の結果に関連している。ここでは、指数表現における被乗数のうちの1つの被乗数の第1の底が求められる。
特に、(非)間接的に後続する乗算は、同様に、量子化された指数又は実数の指数によって実行される。
機械学習システムがディープニューラルネットワークを含む場合、伝達された量子化誤差は、ディープニューラルネットワークの非間接的/間接的に後続するレイヤの中間変数の差を表すものとしてよい。中間変数は、ここで、少なくとも、その第1の底が求められる被乗数に関連している。
さらに、指数が指数表現の求められた底に関連して求められ、これらの求められた指数が量子化され、特に、2進数に変換されるように設定されているものとしてよい。指数を量子化する際に、又は、指数を2進数に変換する際に、10ビットによる指数の最初の分解能から始めて、この分解能は、1ビットずつ段階的に低減される。これは、量子化誤差を表す変数が事前に設定可能な変数よりも小さい場合である。最初の分解能が、少なくとも5ビットから30ビット以上の間において任意に選択可能であるということに留意されたい。既に最初に、不正確な指数を受け取ることなく、最適な分解能を迅速に見出すことができるため、10ビットで開始することが機械学習システムにとって有利であるということが判明している。
本発明のさらなる態様においては、機械学習システムの入力変数は、センサによって検出された変数であることが提案される。機械学習システムの出力変数に関連して、制御変数を求めることができる。
技術的なシステムのアクチュエータを制御するために、この制御変数を使用することができる。技術的なシステムとは、例えば、少なくとも部分的に自律している機械、少なくとも部分的に自律している車両、ロボット、ツール、作業機械又はドローン等の飛行物体であるものとしてよい。例えば、ロボット若しくは車両の動きを制御することができ、又は、制御変数に関連してアクチュエータを制御することができる。
入力変数を、選択的に、例えば、検出されたセンサデータに関連して求めて、機械学習システムに提供することができる。センサデータは、技術的なシステムのセンサ、例えばカメラによって検出されるものとしてよく、又は、外部から受信されるものとしてよい。
本発明のさらなる態様においては、コンピュータプログラムが提案される。このコンピュータプログラムは、上述した方法のうちの1つの方法を実施するために構成されている。このコンピュータプログラムは、コンピュータ上でこのコンピュータプログラムが実行されるときに、コンピュータに、これらの上述した方法のうちの1つの方法を、その総てのステップを伴って実施させるための命令を含む。さらに、このコンピュータプログラムが記憶されている機械可読メモリモジュールが提案される。
本発明のさらなる態様においては、少なくとも機械学習システムのトレーニングを含む、第2の態様の方法のうちの1つの方法を実施することによって得られる製品が提案される。
上述した態様の実施例は、添付の図面に示されており、以下の明細書においてより詳細に説明されている。
ビット単位のシフトによって2つの被乗数の乗算を求める方法の概略図である。 機械学習システムのために被乗数の底を求める方法の概略図である。 機械学習システムの動作方法の概略図である。 ビット単位のシフトによって2つの被乗数の乗算を求める計算ユニットの実施形態の概略図である。 機械学習システムのトレーニングのために使用可能な装置の実施形態の概略図である。 機械学習システムを含む、部分的に自律している車両の実施形態の概略図である。
図1は、2つの被乗数を乗算する方法(10)の概略図を示している。この方法は、特に、2進システムにおいて、被乗数aと他の被乗数bとの乗算が、bが指数表現によって、ここでは、2の累乗、
Figure 0007136937000001
として表現され得る場合に、ビット単位のシフト(英語:Bitshift)によって実行可能であるという数学的な特性を使用する。
ここで、被乗数aの2進数を
Figure 0007136937000002
桁だけ左へビット単位でシフトさせることによって乗算を求めることができる。
Figure 0007136937000003
演算子<<は、2進システムにおいて、被乗数aを、値
Figure 0007136937000004
の桁数だけ左へビットシフトさせることを表す。
被乗数aを同様に、2の累乗
Figure 0007136937000005
によって表現することができる場合、
Figure 0007136937000006
が当てはまる。
被乗数a及びbを指数表現に換算することによって、これらの値を記憶するために、元来の被乗数a,bよりも少ないビットで保存可能な指数
Figure 0007136937000007
だけが記憶されれば足りるようになるということに留意されたい。有利には、被乗数a,bは、32ビットで保存されるが、これに対して指数
Figure 0007136937000008
は、有利には、8ビット以下で保存される。さらに、指数表現のためにどのような底が選択されたかという情報も既知なはずであるということに留意されたい。これは、指数の強力な量子化を選択し得ることを意味しており、これによって、メモリ容量が節約される。さらに、上記の式(1)、(2)うちの1つの式による乗算は、ハードウェア数値表現フォーマット、例えばfixed-pointに関連していないということに留意されたい。なぜなら、この乗算は、2進システムで実行されるからである。
条件B≠2を有する一般的な底Bの場合には、任意の数cが、指数表現において規定される。
Figure 0007136937000009
ここで、
Figure 0007136937000010
は、有利には、量子化されている指数である。
さらに、以下においては、底Bは、次のように選択され、式を満たす。
Figure 0007136937000011
ここで、zは、整数のセット
Figure 0007136937000012
に由来し、有利には、負の値を有する。
底Bの与えられた量子化された指数
Figure 0007136937000013
と、底2の与えられた指数zとに対して与えられた
Figure 0007136937000014
における値cの再構築は、次のように計算される。
Figure 0007136937000015
z<0の場合、ビット単位での右へのシフトが行われ、指数において、zの小数位を有する2進数が生じる。
式(5)をさらに簡略化することができる。
Figure 0007136937000016
上述したように、小数部は、zの桁を含むため、小数部を数
Figure 0007136937000017
から直接的に導き出すことができるということに留意されたい。
有利には、式(6)は、ハードウェアにおいてのみ実行される。ここで、値
Figure 0007136937000018
がルックアップテーブル(LUT)に格納されていることが可能である。LUTには2のエントリが含まれているため、表現
Figure 0007136937000019
に必要な総ての値が格納されている。
従って、表現
Figure 0007136937000020
の桁の値だけ、LUTから読み取られた数を左へビット単位でシフトさせることによって、数cが効率的に再構築される。LUTから読み取られた値も、有利には、5ビットから30ビットの量子化分解能で量子化されているということに留意されたい。
図1による方法(10)は、ステップ11によって開始する。ステップ11においては、被乗数(c,d)が、指数表現において提供される。ここで、この提供には、被乗数(c,d)の指数
Figure 0007136937000021
と、少なくとも、これらの被乗数(c,d)の底(B,B)とが提供されることが含まれる。有利には、これらの底(B,B)は、同様に既に指数表現において提供される。選択的に、提供された底(B,B)が、合理的には値2を有する事前に設定可能な底に関連して指数表現に変換されるものとしてよい。式(4)を参照されたい。
指数表現においては、乗算は、次のように求められる。
Figure 0007136937000022
ここで、
Figure 0007136937000023
かつ
Figure 0007136937000024
とすると、即ち、z<zの場合には、
Figure 0007136937000025
となる。
このような例においては、z-z>0が当てはまるので、指数の加算を、ハードウェアにおいて、ビット調整によって行うことができ、即ち、二値のゼロによって右側を埋めることによって、又は、差z-zに関連したビットシフトによって行うことができる。
<zの場合、
Figure 0007136937000026
との乗算は、右へのシフトに相当し、式(8)の括弧内の加算の結果が右へシフトされ、これによって、指数における小数位の数が、
Figure 0007136937000027
によって定義される。
式(8)を次のように簡略化することができる。
Figure 0007136937000028
ステップ11が終了すると、ステップ12に進む。ここでは、式(9)の2行目に示されているように、指数の減算(z-z)が行われる。
次に、ステップ12において、この減算(z-z)の結果の値の桁数だけ指数のうちの1つの指数
Figure 0007136937000029
をビット単位でシフトさせる第1のビット単位のシフトが実行される。式(8)に関して述べたように、この第1のビット単位のシフトは、有利には、ビット調整としてハードウェアにおいて実行される。次に、この第1のビット単位のシフトの結果が他の指数
Figure 0007136937000030
に加算される。
後続のステップ13においては、この加算の結果が、zの値の桁数だけ(特に右へ)第2のシフトによってシフトされる。ここで、
Figure 0007136937000031
が、結果として存在する。ここで、z<0の場合には、この第2のシフトによって、
Figure 0007136937000032
における
Figure 0007136937000033
の小数位が生じるということに留意されたい。
ステップ13の後にステップ14が続く。ここでは、ステップ13から求められた結果
Figure 0007136937000034
が、式(6)におけるように、小数部と整数部とに分けられる。選択的に、ステップ13を省略することができ、ステップ14において、ステップ12からの加算の結果が、値zに関連して、小数部と整数部とに直接的に分けられる。
ここで、c・d=pに対する乗算の最終的な結果は、次のようになる。
Figure 0007136937000035
これは、ステップ14において、小数部の値が、整数部の値の桁数だけシフトされることを意味している。
有利には、表現
Figure 0007136937000036
の値は、LUTに格納されており、結果c・dを求めるために、値がLUTから読み取られる。このようなLUTは、
Figure 0007136937000037
のエントリを含むので、
Figure 0007136937000038
の可能な各値に対して、対応する値
Figure 0007136937000039
が格納されている。LUTのエントリは、最初に、この方法(10)の開始時に求められ、格納されるものとしてよい。
この方法が、2つより多くの被乗数(a,b,c,...)でも実行可能であるということに留意されたい。このために、LUTには、
Figure 0007136937000040
のエントリが含まれている。2つより多くの被乗数において、この方法を使用する場合には、さらなる被乗数の指数を追加することによって、上述した式を相応に拡張しなければならない。被乗数が複数の指数で記述されることも可能であり、これは、同様に上述した式において考慮可能である。
方法(10)を、少なくとも1つの負の被乗数を用いて実行することもできるということに留意されたい。被乗数の一方又は両方が負の符号を有する場合、他の実施形態においては、方法(10)を、被乗数の符号を無視して、ステップ14まで実行することができる。ステップ14が終了した後、この実施形態においては、次にステップ15が実行される。ステップ15において、p=c・dの乗算の結果の符号は、各被乗数(c,d)の符号に対応して適合させられる。例えば、被乗数が負である場合、乗算の結果は、同様に負になる。両方の被乗数が負である場合、乗算の結果は、正である。
これによって、方法(10)は、終了する。この方法は、ハードウェアにおいて若しくはソフトウェアにおいて、又は、ソフトウェアとハードウェアとの混合形態において、実装されることが可能である。
図2は、機械学習システムのために被乗数の指数表現の底(B,B)を求める方法(20)の概略図を示している。このような実施形態においては、機械学習システムは、ディープニューラルネットワークを含む。
方法(20)は、ステップ21によって開始する。ここで、トレーニングされた機械学習システムが提供される。即ち、機械学習システムのパラメータ化は、既にトレーニングの際に求められている。機械学習システムは、提供されたトレーニングデータに基づいて、最適化方法、特に最急降下法によってトレーニングされているものとしてよい。選択的に、ステップ21において機械学習システムがトレーニングされるものとしてよい。
後続のステップ22においては、指数表現に変換される、機械学習システムのパラメータ、及び、付加的に又は選択的に中間結果が、選択される。これらのパラメータ及び/又は中間結果に対して、最適化される式(以下の式(13)及び(14)を参照)が作成される。次に、最適化の結果によって、指数表現におけるパラメータ及び/又は中間結果の適当な表現に適した底が得られる。
機械学習システムが、例えば、ニューラルネットワークを含む場合、パラメータ、特に中間結果が、レイヤ単位で指数表現に変換されるものとしてよい。有利には、各レイヤのパラメータ及び/又は中間結果は、それぞれ同一の底によって表される。有利には、底を求める際に、底が2より小さい値を有するという二次的条件が考慮される。
付加的に、機械学習システムのパラメータ及び中間結果の指数が指数表現で量子化されるものとしてよい。
量子化された指数表現
Figure 0007136937000041
における、レイヤ
Figure 0007136937000042
の中間結果
Figure 0007136937000043
に対して
Figure 0007136937000044
が当てはまる。
式(11)に示されている関係は、機械学習システムのパラメータの表現にも当てはまり、特に、中間結果等の他の値と乗算されるパラメータに対して当てはまる。
底(B,B)は、量子化誤差
Figure 0007136937000045
に関連して求められる。
選択的に、底(B,B)を求めるために、伝達された量子化誤差を使用することができる。伝達された量子化誤差は、量子化を伴う乗算の結果と、量子化を伴わない乗算の結果との間の差を表し、又は、このような結果がさらなる乗算の被乗数として再利用される、さらなる乗算との間の差を表す。
伝達された量子化誤差qは、次の式によって得られる。
Figure 0007136937000046
ここでは、機械学習システム、特にニューラルネットワークのレイヤ
Figure 0007136937000047
の出力変数
Figure 0007136937000048
は、レイヤ
Figure 0007136937000049
の入力変数xとして記述されている。付加的に又は選択的に、量子化誤差を求めるために、
Figure 0007136937000050
番目のレイヤも使用することができる。機械学習システムのトレーニングのために使用されるトレーニングデータが、機械学習システムの入力変数として使用されるものとしてよい。
伝達された量子化誤差に対するB、Bの最適な選択は、次のように得られる。
Figure 0007136937000051
式(13)、(14)が確立された後、これらの式は、続いて、各底を求めるために、ステップ22において解かれる。
式(13)及び(14)は、底の種々の値の組合せのテストによって、選択的に最急降下法によって、最小化され得る。
ステップ22の終了後、ステップ23が実行され得る。ステップ23において、求められた底は、各パラメータ及び/又は中間結果に割り当てられる。
後続のステップ24においては、割り当てられた底に関連して、パラメータ及び/又は中間結果が指数表現に変換され得る。
有利には、次に、ステップ25が実行される。ここでは、指数
Figure 0007136937000052
の量子化が最適化される。指数の量子化のビット幅の選択を、繰り返し実行することができる。有利には、指数は、最初は8ビットで量子化され、最大10ビットで量子化され、選択的に、10ビット以上でも量子化される。次に、機械学習システムが、例えば、最初の量子化による機械学習システムの予測品質と比較して十分に良好な結果を提供する限り、使用されるビットが1ビットずつ段階的に減少させられる。
任意選択的に、ステップ26において、パラメータ及び/又は中間結果が指数表現でメモリに格納される。このために、底と指数とが保存される。選択的に、底が同様に指数表現で格納されるものとしてよい。有利には、これらの底の指数表現において底2が使用される。
中間結果及びパラメータに対して底を求めるステップが、機械学習システムのトレーニング中にも実行されるものとしてよいということに留意されたい。これは、いわゆるシャドウウェイトによって実行可能である。これに関しては、P.Gysel等著「Hardware-oriented Approximation of Convolutional Neural Networks」(2016年、arxiv.org、[オンライン]https://arxiv.org/pdf/1604.03168.pdf)における第3頁のパラグラフ「fine-tuning」を参照されたい。
この方法(20)は、ステップ26によって終了する。
図3は、合理的には計算機、例えばコンピュータ上における機械学習システムの動作方法(30)の概略図を示している。
方法(30)は、ステップ31によって開始する。このステップにおいては、機械学習システムがトレーニングされる。ステップ31は、任意選択的に、続けて複数回実行されるものとしてよい。
機械学習システムがトレーニングされた後、ステップ32が実行される。ここでは、機械学習システムの複数のパラメータ及び/又は中間結果が指数表現に変換される。このために、最初に、底が、例えば、図2における方法(20)に従って求められるものとしてよい。次に、求められた底に関連して指数が定められる。
ステップ32が終了した後、ステップ33に進む。ステップ33において、機械学習システムは、自身のパラメータと提供された入力変数とに関連して、中間結果を求める。少なくとも2つの被乗数の乗算によって求められる中間結果が、図1の方法(10)に従って求められる。乗算は、例えば、行列乗算又は畳み込み演算によって行われる。付加的に、方法(10)によって実行された個々の乗算、特に行列乗算又は畳み込み演算の結果が累積されるものとしてよい。
任意選択的に、指数の減算(z-z)の結果が、機械学習システムのレイヤごとに格納されているものとしてよい。これは、各結果を迅速に提供することによって減算を求めることができるという有利な効果を有している。
後続するステップ34においては、技術的なシステムのアクチュエータの制御変数を、機械学習システムの出力変数に関連して求めることができる。
図4は、ビット単位のシフトによって乗算を実行するように構成されている計算ユニットの概略図を示している。
第1及び第2のデータ線路(401,402)はそれぞれ、計算ユニットのレジスタ(403,404)に接続されているものとしてよい。レジスタ(403,404)には、被乗数(c,d)がロードされる。このような実施形態の被乗数は、量子化された指数、有利には、二値の指数である。
第1の被乗数は、ビット単位で左へシフトさせられるため、これによって、ビット調整は、減算(z-z)(式(8)及び(9)を参照)に関連して、ハードウェアリソース効率良く実行される。任意選択的に、ビットシフト又はレジスタの幅を、有利には、それぞれ、機械学習システムのレイヤに対して設定することができる。図4によれば、このようなビット単位のシフトは、ゼロでレジスタの右側を埋める(405)ことによって実行可能である。合理的には、各ゼロは、それぞれ二値「0」を表す。
次に、第1の論理ユニット(406)において、式(9)からの指数
Figure 0007136937000053
の計算が実行される。第1の論理ユニット(406)は、このために、式(9)に従って各指数を加算する少なくとも1つの加算装置(合理的にはALU)と、最小の指数(z)に関連して加算の結果をシフトさせる少なくとも1つのビットシフトユニットとを含む。指数(z,z)が、例えば、論理ユニット(406)の他のデータ線路によって提供されるものとしてよいということに留意されたい。ここで、第1の論理ユニット(406)の結果は、式(9)に従って、
Figure 0007136937000054
に相当する。
次に、論理ユニット(406)の結果が、整数部(407)と小数部(408)とに分けられる。小数部(408)は、有利には、小数位の数を定める最小の指数(z)に関連して求められる。
他の実施例においては、特に、最小の指数(z)が負の値を有する場合、第1の論理ユニット(406)は加算装置のみを有する。次に加算の結果が、最小の指数(z)に関連した小数点の虚構のシフトによって、整数部(407)と小数部(408)とに分解される。この小数点の虚構のシフトによって、ビットシフトユニットによる加算の結果のシフトを省略することができる。
次に、小数部(408)が、LUT(409)のアドレスとして使用される。次に、与えられたアドレスに対する、LUTの格納されている値が、第2の論理ユニット(410)に転送される。
第2の論理ユニット(410)は、LUTの値の他に付加的に、第1の論理ユニット(406)の結果の整数部(407)を受け取る。第2の論理ユニット(410)は、整数部(407)の値の桁数だけ、LUTの値をビット単位でシフトさせる。有利には、このために、論理ユニット(410)は、他のビットシフトユニットを含み、又は、選択的に、論理ユニット(406)のビットシフトユニットを使用する。
第2の論理ユニット(410)からの結果は、指数表現で出力されないので、変換ユニット(411)がこのために、自身の入力変数を量子化された指数表現に変換するように構成されているものとしてよい。変換ユニット(411)の出力側は、第3のデータ線路(412)に接続されているものとしてよい。第3のデータ線路(412)のビット幅を、量子化された指数のビット幅に合わせることができ、これによって、実効帯域幅が増加する。変換ユニット(411)は、有利には、プライオリティエンコーダ(英語:Priority Encoder)である。
任意選択的に、計算ユニットの第2の論理ユニット(410)と変換ユニット(411)との間に累積ユニットが挿入されているものとしてよい。累積ユニットは、乗算が続けて複数回実行される場合に、乗算の結果を累積ユニットにおいて累積するように構成されている。ここで、累積ユニットのこのような結果を使用して、活性化、特にニューロンの活性化を求めることができる。求められた活性化が、畳み込み演算の結果であってもよいということに留意されたい。即ち、計算ユニットは、累積ユニットによって、行列乗算の他に、例えば、畳み込みニューラルネットワーク(英語:Convolutional Neural Networks)で生じるような畳み込みも求めることができる。
他の実施例においては、計算ユニットを使用して、機械学習システムの動作をサポートすることができる。このような計算ユニットは、ここでは、例えば、その上で機械学習システムが動作する計算機に接続されているものとしてよい。この場合には、計算機上における機械学習システムの動作時に実行されるべき乗算を、計算ユニットに外注することができる。
図5は、機械学習システムをトレーニングする装置(50)、特に機械学習システムをトレーニングするためのステップ、例えば、方法(30)のステップ31を実行する装置(50)の概略図を示している。装置(50)は、トレーニングモジュール(51)と、トレーニングされるモジュール(52)とを含む。トレーニングされるモジュール(52)には、機械学習システムが含まれる。機械学習システムをトレーニングする装置(50)は、機械学習システムの出力変数に関連して、有利には、事前に設定可能なトレーニングデータを用いて、機械学習システムをトレーニングする。合理的には、トレーニングデータは、それぞれラベル付けされている複数の検出された画像を含む。トレーニングの間に、メモリ(53)に格納されている機械学習システムのパラメータが調整される。
図6は、少なくとも部分的に自律している車両(60)の概略図を示している。他の実施例においては、少なくとも部分的に自律している車両(60)は、整備ロボット、組立ロボット又は据付けの生産ロボットであるものとしてよく、選択的に、ドローン等の自律した飛行物体であるものとしてよい。少なくとも部分的に自律している車両(60)は、検出ユニット(61)を含むものとするとよい。検出ユニット(61)は、例えば、車両(60)の周辺を検出するカメラであるものとしてよい。検出ユニット(61)は、機械学習システム(62)に接続されているものとしてよい。機械学習システム(62)は、提供された入力変数に関連して、例えば、検出ユニット(61)によって提供された入力変数に関連して、かつ、機械学習システム(62)の複数のパラメータに関連して、出力変数を求める。この出力変数は、アクチュエータ制御ユニット(63)に転送されるものとしてよい。アクチュエータ制御ユニット(63)は、機械学習システム(62)の出力変数に関連してアクチュエータを制御し、これは有利には、車両(60)が衝突のない操縦を実行するようにアクチュエータを制御する。このような実施例においては、アクチュエータは、車両(60)のエンジン又はブレーキシステムであるものとしてよい。
さらに、車両(60)は、計算機(64)及び機械可読メモリ素子(65)を含む。命令を含むコンピュータプログラムがメモリ素子(65)上に記憶されているものとしてよく、この命令は、計算機(64)上でこの命令が実行されるときに、計算機(64)に上述した方法(10,20,30)のうちの1つの方法を実施させる。コンピュータプログラムがそれぞれ含み得るダウンロード製品又は人工的に生成された信号が、車両(60)の受信装置における受信後に、計算機(64)にこれらの方法のうちの1つの方法を実施させることも可能である。
選択的な実施例においては、機械学習システム(62)が、建築物制御に使用可能である。ユーザの行動がセンサ、例えば、カメラ又は人感センサによって検出され、アクチュエータ制御ユニットが、例えば、機械学習システム(62)の出力変数に関連して暖房のヒートポンプを駆動制御する。ここで、機械学習システム(62)は、検出されたセンサ変数に関連して、このようなユーザの行動に基づいて、建築物制御のいずれの動作モードが望まれているのかを求めるように構成されているものとしてよい。
他の実施例においては、アクチュエータ制御ユニット(63)は、イネーブルシステムを含む。イネーブルシステムは、機械学習システム(62)の出力変数に関連して、対象物、例えば、検出されたロボット又は検出された人物が、ある領域にアクセスし得るか否かを判断する。有利には、アクチュエータ、例えばドア開放機構が、アクチュエータ制御ユニット(63)によって駆動制御される。建築物制御の上述した実施例のアクチュエータ制御ユニット(63)は、付加的に、このようなイネーブルシステムを含み得る。
選択的な実施例においては、車両(60)は、ツール又は作業機械又は製造ロボットであるものとしてよい。機械学習システム(62)によって、ワークピースの材料を分類することができる。ここでは、アクチュエータは、例えば、研削ヘッドを動作させるモータであるものとしてよい。
他の実施形態においては、機械学習システム(62)は、図示されていない測定システムにおいて使用される。測定システムは、測定システムがアクチュエータ制御ユニット(63)を含まないという点において、図1に示された車両(60)とは異なっている。測定システムは、機械学習システム(62)の出力変数を、それらをアクチュエータ制御ユニット(63)に転送する代わりに、例えば、後の再利用のために保存することができ、又は、付加的に若しくは選択的に、例えば、視覚的表現若しくは聴覚的表現によって表すことができる。
測定システムの発展形態において、検出ユニット(61)が、人体又は動物の体若しくはその一部の画像を検出することも可能である。例えば、これは、光信号によって、超音波信号によって、又は、MRT/CT法によって、行われるものとしてよい。測定システムは、このような発展形態において、入力変数に関連して、分類、例えば、このような入力変数に基づいてどのような病状が存在し得るのかを出力するようにトレーニングされている機械学習システム(62)を含むものとするとよい。

Claims (21)

  1. 少なくとも2つの被乗数(c,d)の乗算を実行するように構成されている計算ユニットであって、
    前記被乗数(c,d)は、それぞれ第1の指数
    Figure 0007136937000055
    と第1の底(B,B)とを有しており、
    記第1の底(B,B)は、それぞれ第2の底と第2及び第3の指数(z,z)とを有しており、
    前記計算ユニットは、少なくとも1つのビットシフトユニットと算術ユニットとメモリとを含み、
    前記ビットシフトユニットは、2進数を事前に設定可能な桁数だけフトさせ、前記算術ユニットは、前記第3の指数(z,zの一方から他方の減算を実行し、
    前記ビットシフトユニットは、前記被乗数(c,d)の前記第1の指数のうちの1つの指数
    Figure 0007136937000056
    の2進数を、前記第3の指数(z ,z )の一方から他方が減算され指数(z-z)の値の桁数だけシフトさせる第1のシフトを実行し、
    前記算術ユニットは、前記第1のシフトの結果を、前記被乗数(c,d)の他の第1の指数
    Figure 0007136937000057
    で加算し、
    前記加算の結果は、前記第3の指数(z,z)のうちの小さい方の指数(z)に関連して、整数部(英語:integer part)と小数部(英語:fractional part)とに分けられ、
    前記小数部の2進数が、前記メモリから読み取られ、さらに、
    前記ビットシフトユニットは、前記小数部の前記2進数を、前記整数部の値の桁数だけシフトさせる第2のシフトを実行する、
    計算ユニット。
  2. 前記ビットシフトユニットは、前記第3の指数(z,z)の減算の値に関連して、複数の「0」で右側を埋めることによって、前記第1のシフトを実行する、請求項1に記載の計算ユニット。
  3. 前記メモリは、少なくとも2のエントリを有しており、ここで、nは、前記第3の指数(z,z)のうちの小さい方の指数の絶対値に等しく、
    前記小数部は、前記メモリから前記小数部の二値を読み取るために、アドレスとして使用される、請求項1又は2に記載の計算ユニット。
  4. 前記計算ユニットはさらに、それぞれ少なくとも2つの被乗数の複数の乗算の結果を累積する累積ユニットを含む、請求項1乃至3のいずれか一項に記載の計算ユニット。
  5. 前記累積ユニットは、加算器ツリーによって実現されている、請求項4に記載の計算ユニット。
  6. 前記第2のシフトの結果を指数表現に変換する換算ユニット(411)有している、請求項1乃至5のいずれか一項に記載の計算ユニット。
  7. 前記換算ユニット(411)は、プライオリティエンコーダである、請求項6に記載の計算ユニット。
  8. 計算ユニット上で少なくとも2つの被乗数(c,d)を乗算する方法(10)であって、前記被乗数(c,d)は、それぞれ第1の指数
    Figure 0007136937000058
    と第1の底(B,B)とを有しており、
    記第1の底(B,B)は、それぞれ第2の底と第2及び第3の指数(z,z)とを有している、方法において、
    ・前記被乗数(c,d)の前記第1の指数
    Figure 0007136937000059
    と前記第3の指数(z,z)とを、前記計算ユニットがメモリからビットシフトユニット及び算術ユニットに提供するステップであって、提供された各前記指数
    Figure 0007136937000060
    は、量子化されている、ステップと、
    ・前記第3の指数(z,zの一方から他方前記算術ユニットが減算するステップと、
    ・前記被乗数(c,d)の前記第1の指数のうちの1つの指数
    Figure 0007136937000061
    の2進数を、前記第3の指数(z ,z )の一方から他方が減算され指数(z-z)の値の桁数だけシフトさせる第1のシフトを前記ビットシフトユニットが実行するステップと、
    ・前記第1のシフトの結果を、前記被乗数(c,d)の他の第1の指数
    Figure 0007136937000062
    前記算術ユニットが加算するステップと、
    ・前記加算の結果を、前記第3の指数(z,z)のうちの小さい方の指数(z)に関連して、整数部(英語:integer part)と小数部(英語:fractional part)とに前記算術ユニットが分けるステップと、
    ・前記小数部の2進数を、前記整数部の値の桁数だけシフトさせる第2のシフトを前記ビットシフトユニットが実行するステップと、
    を含む、
    少なくとも2つの被乗数(c,d)を乗算する方法(10)。
  9. 前記小数部の前記2進数を前記メモリら読み取り、
    前記小数部を、前記小数部の前記2進数を読み取るために、メモリのアドレスとして使用する、請求項に記載の方法。
  10. 前記メモリは、ルックアップテーブルである、請求項9に記載の方法。
  11. 前記第2のシフトの結果を、指数と事前に設定可能な底とに分解する、請求項8乃至10のいずれか一項に記載の方法。
  12. 各前記第2の底は、値2を有しており、各前記第2の指数は、値2を有している、請求項乃至11のいずれか一項に記載の方法。
  13. 前記提供された指数を、最大10ビットを使用して表す、請求項乃至12のいずれか一項に記載の方法。
  14. 機械学習システムの動作方法であって、
    前記機械学習システムの複数のパラメータ及び中間変数を指数表現によって被乗数としてメモリに格納し、
    格納された前記被乗数の乗算を、請求項乃至13のいずれか一項に記載の方法に従って実行する
    機械学習システムの動作方法。
  15. 前記機械学習システムのトレーニングの際に、少なくとも、前記機械学習システムの前記中間変数及び前記パラメータの前記指数表現に対する前記第1の(B ,B )及び前記第2の底を求める、請求項14に記載の動作方法。
  16. 前記機械学習システムトレーニングの後に、少なくとも、前記機械学習システムの前記中間変数及び前記パラメータの前記指数表現に対する前記第1の(B ,B )及び前記第2の底を求める、請求項14に記載の動作方法。
  17. 伝達された量子化誤差に関連して前記第1の(B ,B )及び前記第2の底を求め、
    前記伝達された量子化誤差は、2つの被乗数と量子化された指数との乗算の結果と、前記2つの被乗数実数の指数との乗算の結果との差を表す、請求項15又は16に記載の動作方法。
  18. 前記指数表現の求められた前記第1の(B ,B )及び前記第2の底に関連して前記指数を求め、求められた前記指数を量子化し、
    前記指数の前記量子化の際、10ビットによる前記指数の量子化の分解能から始めて、量子化誤差を表す変数が事前に設定可能な変数よりも小さい場合に、前記分解能を1ビットずつ段階的に減らす、請求項15乃至17のいずれか一項に記載の動作方法。
  19. 前記機械学習システム入力変数は、センサによって検出された変数であり、
    前記機械学習システムの出力変数に関連して制御変数を求める、請求項14乃至18のいずれか一項に記載の動作方法。
  20. コンピュータ上における実行の際に、前記コンピュータに、請求項乃至13のいずれか一項に記載の方法又は請求項14乃至19のいずれか一項に記載の動作方法を実施させるための命令を含むコンピュータプログラム。
  21. 請求項20に記載のコンピュータプログラムが格納されている機械可読メモリ素子。
JP2020570826A 2018-06-19 2019-05-21 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム Active JP7136937B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
DE102018209901.4A DE102018209901A1 (de) 2018-06-19 2018-06-19 Recheneinheit, Verfahren und Computerprogramm zum Multiplizieren zumindest zweier Multiplikanden
DE102018209901.4 2018-06-19
PCT/EP2019/063119 WO2019242968A1 (de) 2018-06-19 2019-05-21 Recheneinheit, verfahren und computerprogramm zum multiplizieren zumindest zweier multiplikanden

Publications (2)

Publication Number Publication Date
JP2021528756A JP2021528756A (ja) 2021-10-21
JP7136937B2 true JP7136937B2 (ja) 2022-09-13

Family

ID=66770423

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2020570826A Active JP7136937B2 (ja) 2018-06-19 2019-05-21 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム

Country Status (7)

Country Link
US (1) US11537361B2 (ja)
EP (1) EP3811199B1 (ja)
JP (1) JP7136937B2 (ja)
CN (1) CN112292663B (ja)
DE (1) DE102018209901A1 (ja)
TW (1) TWI819005B (ja)
WO (1) WO2019242968A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20220413804A1 (en) * 2021-06-28 2022-12-29 Micron Technology, Inc. Efficient complex multiply and accumulate

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067182A (ja) 2001-08-28 2003-03-07 Matsushita Electric Works Ltd 演算装置および演算方法

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4555768A (en) * 1983-06-07 1985-11-26 Rca Corporation Digital signal processing system employing logarithms to multiply and divide
JPH0283728A (ja) * 1988-09-21 1990-03-23 Hitachi Ltd 浮動小数点乗算装置
DE4123186A1 (de) * 1990-07-13 1992-01-23 Aisuke Katayama Multiplikationseinrichtung vom typ fuer unterteilte produkte, die zum ausfuehren einer multiplikation numerischer werte mit vielen stellen bei hoher genauigkeit faehig ist
JPH0540605A (ja) 1991-08-02 1993-02-19 Toshiba Corp 浮動小数点乗算装置
JP3950920B2 (ja) * 1994-11-17 2007-08-01 株式会社ルネサステクノロジ 積和演算器及びデータ処理装置
US5880984A (en) * 1997-01-13 1999-03-09 International Business Machines Corporation Method and apparatus for performing high-precision multiply-add calculations using independent multiply and add instruments
DE10107376A1 (de) * 2001-02-16 2002-08-29 Infineon Technologies Ag Verfahren und Vorrichtung zum modularen Multiplizieren und Rechenwerk zum modularen Multiplizieren
US8150902B2 (en) * 2009-06-19 2012-04-03 Singular Computing Llc Processing with compact arithmetic processing element
US8667042B2 (en) * 2010-09-24 2014-03-04 Intel Corporation Functional unit for vector integer multiply add instruction
DE102013209657A1 (de) * 2013-05-24 2014-11-27 Robert Bosch Gmbh FMA-Einheit, insbesondere zur Verwendung in einer Modellberechnungseinheit zur rein hardwarebasierten Berechnung von Funktionsmodellen
DE102013220432A1 (de) 2013-10-10 2015-04-16 Robert Bosch Gmbh Modellberechnungseinheit für einen integrierten Steuerbaustein zur Berechnung von LOLIMOT
US9778908B2 (en) * 2014-07-02 2017-10-03 Via Alliance Semiconductor Co., Ltd. Temporally split fused multiply-accumulate operation
US10664751B2 (en) * 2016-12-01 2020-05-26 Via Alliance Semiconductor Co., Ltd. Processor with memory array operable as either cache memory or neural network unit memory
GB201607713D0 (en) * 2016-05-03 2016-06-15 Imagination Tech Ltd Convolutional neural network
US10621486B2 (en) * 2016-08-12 2020-04-14 Beijing Deephi Intelligent Technology Co., Ltd. Method for optimizing an artificial neural network (ANN)

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003067182A (ja) 2001-08-28 2003-03-07 Matsushita Electric Works Ltd 演算装置および演算方法

Also Published As

Publication number Publication date
DE102018209901A1 (de) 2019-12-19
US11537361B2 (en) 2022-12-27
JP2021528756A (ja) 2021-10-21
TWI819005B (zh) 2023-10-21
CN112292663A (zh) 2021-01-29
KR20210021540A (ko) 2021-02-26
TW202001547A (zh) 2020-01-01
CN112292663B (zh) 2023-12-12
WO2019242968A1 (de) 2019-12-26
EP3811199A1 (de) 2021-04-28
EP3811199B1 (de) 2023-08-23
US20210224037A1 (en) 2021-07-22

Similar Documents

Publication Publication Date Title
US11216721B2 (en) Method for calculating a neuron layer of a multi-layer perceptron model with simplified activation function
JP6977864B2 (ja) 推論装置、畳み込み演算実行方法及びプログラム
EP3627397B1 (en) Processing method and apparatus
US11429838B2 (en) Neural network device for neural network operation, method of operating neural network device, and application processor including the neural network device
KR20190062129A (ko) 컨볼루션 신경망 계산을 위한 저전력 하드웨어 가속 방법 및 시스템
JP7414930B2 (ja) 情報処理装置、情報処理方法
CN111696149A (zh) 针对基于cnn的立体匹配算法的量化方法
CN111260020A (zh) 卷积神经网络计算的方法和装置
JP7136937B2 (ja) 少なくとも2つの被乗数を乗算するための計算ユニット、方法及びコンピュータプログラム
WO2018196750A1 (zh) 处理乘加运算的装置和处理乘加运算的方法
EP4293575A1 (en) Hardware implementation of an attention-based neural network
JP2022022876A (ja) 畳み込みニューラルネットワーク処理装置
CN112215347A (zh) 用于确定神经网络的成对连续层之间的传递函数的方法和计算工具
CN112183726A (zh) 一种神经网络全量化方法及系统
KR102677741B1 (ko) 2개 이상의 피승수를 곱하기 위한 계산 유닛, 방법 및 컴퓨터 프로그램
KR102208274B1 (ko) 특히 함수 모델을 순수 하드웨어에 기초하여 연산하기 위한 함수 모델 유닛 내에서 사용하기 위한 fma 유닛
CN115019150B (zh) 目标检测定点模型建立方法、装置及可读存储介质
JP7475164B2 (ja) 情報処理装置、情報処理方法およびプログラム
JP2019079183A (ja) 演算装置及び車載制御装置
CN113419779A (zh) 可扩展多精度数据流水线系统和方法
CN111860095A (zh) 一种状态检测模型训练方法及装置、状态检测方法及装置
WO2023004799A1 (zh) 电子设备及神经网络量化方法
US20230267313A1 (en) Electronic device for performing convolution calculation and operation method therefor
CN116205275A (zh) 量化参数模型的训练方法及装置、电子设备、存储介质
WO2022221885A2 (en) Quantization range estimation for quantized training

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20201218

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20220228

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220526

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: 20220823

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220901

R150 Certificate of patent or registration of utility model

Ref document number: 7136937

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150