JP2020027611A - ニューラルネットワークのためのデータ処理方法および装置 - Google Patents

ニューラルネットワークのためのデータ処理方法および装置 Download PDF

Info

Publication number
JP2020027611A
JP2020027611A JP2019125658A JP2019125658A JP2020027611A JP 2020027611 A JP2020027611 A JP 2020027611A JP 2019125658 A JP2019125658 A JP 2019125658A JP 2019125658 A JP2019125658 A JP 2019125658A JP 2020027611 A JP2020027611 A JP 2020027611A
Authority
JP
Japan
Prior art keywords
data
function
current data
input
output data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2019125658A
Other languages
English (en)
Inventor
シー、チアシン
Jiaxin Shi
リー、ホイミン
Huimin Li
ワン、ヨン
Yong Wang
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.)
Beijing Baidu Netcom Science and Technology Co Ltd
Original Assignee
Beijing Baidu Netcom Science and Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Baidu Netcom Science and Technology Co Ltd filed Critical Beijing Baidu Netcom Science and Technology Co Ltd
Publication of JP2020027611A publication Critical patent/JP2020027611A/ja
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/048Activation functions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Health & Medical Sciences (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Molecular Biology (AREA)
  • Computational Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Nonlinear Science (AREA)
  • Neurology (AREA)
  • Devices For Executing Special Programs (AREA)
  • Stored Programmes (AREA)

Abstract

【課題】ニューラルネットワークのためのデータ処理において、目的関数のルックアップテーブルを構築せずに済むようにするデータ処理方法及び装置を提供する。【解決手段】方法は、ニューラルネットワークには活性化関数が設けられ、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換し、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップし、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを取得し、第2出力データを出力する。【選択図】図2

Description

本発明は、人工知能技術分野に関し、詳しくは、ニューラルネットワークのためのデータ処理方法および装置に関する。
人工ニューラルネットワーク(Artificial Neural Networks,ANNs)は、動物ニューラルネットワーク行動特性を模倣し、分散並列情報処理を実行するアルゴリズム数学モデルである。通常、「ニューラルネットワーク」または「人工ニューラルネットワーク」と略称する。
ニューラルネットワークは多数のノード(またはニューロン)が互いに接続されてなる計算モデルである。各ノードは特定の出力関数を表し、活性化関数(activation function)と呼ばれる。2つおきのノード間の接続はそれぞれ当該接続を通過する信号への1つの加重値を表し、重みと呼ばれる。これは人工ニューラルネットワークの記憶に相当する。ネットワークの出力は、ネットワークの接続方法、重み値および活性化関数によって異なる。
本発明の実施例はニューラルネットワークのためのデータ処理方法および装置を提供する。
第1態様において、本発明の実施例は、少なくとも1つの活性化関数が設けられているニューラルネットワークのためのデータ処理方法であって、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップと、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップするステップと、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを取得するステップと、第2出力データを出力するステップと、を含むニューラルネットワークのためのデータ処理方法を提供する。
いくつかの実施例では、目的関数にはsigmoid非線形関数が含まれ、プリセット関数にはtanh双曲線正接関数が含まれ、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップは、プリセット関数の入力データとして、現在のデータを2で割った商を確定することを含む。
いくつかの実施例では、現在のデータは、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、現在のデータを2で割った商を確定することは、現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得ることを含む。
いくつかの実施例では、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを取得するステップは、第1出力データと1を合計して合計値を2で割った商を確定し、現在のデータを入力とした目的関数の第2出力データとすることを含む。
いくつかの実施例では、合計値が、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、合計値を2で割った商を確定することは、合計値の指数部から1を引くことで、合計値を2で割った商を得ることを含む。
いくつかの実施例では、プリセット関数に対応するルックアップテーブルには正数入力範囲および/または負数入力範囲が含まれる。
いくつかの実施例では、目的関数にはtanh双曲線正接関数が含まれ、プリセット関数にはsigmoid非線形関数が含まれ、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップは、プリセット関数の入力データとして、現在のデータと2の積を確定することを含む。
いくつかの実施例では、現在のデータは、2を基数とする、仮数部と指数部からなる表現方式を有する浮動小数点数である場合、現在のデータと2の積を確定することは、現在のデータの指数部に1を足すことで、現在のデータと2の積を得ることを含む。
いくつかの実施例では、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを取得するステップは、第1出力データと2の積を確定し、かつ積から1を引いた差を、現在のデータを入力とした目的関数の第2出力データとすることを含む。
いくつかの実施例では、第1出力データが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第1出力データと2の積を確定することは、第1出力データの指数部に1を足すことで、第1出力データと2の積を得ることを含む。
第2態様において、本発明の実施例は、少なくとも1つの活性化関数が設けられているニューラルネットワークのためのデータ処理装置であって、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するように構成される第1変換ユニットと、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップするように構成されるルックアップユニットと、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを取得するように構成される第2変換ユニットと、第2出力データを出力するように構成される出力ユニットと、を含むニューラルネットワークのためのデータ処理装置を提供する。
いくつかの実施例では、目的関数にはsigmoid非線形関数が含まれ、プリセット関数にはtanh双曲線正接関数が含まれ、第1変換ユニットは、プリセット関数の入力データとして、現在のデータを2で割った商を確定するように構成される。
いくつかの実施例では、現在のデータが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第1変換ユニットはさらに、現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得る。
いくつかの実施例では、第2変換ユニットは、第1出力データと1を合計し、かつ合計値を2で割った商を確定し、現在のデータを入力とした目的関数の第2出力データとするように構成される。
いくつかの実施例では、合計値が、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第2変換ユニットはさらに、合計値の指数部から1を引くことで、合計値を2で割った商を得るように構成される。
いくつかの実施例では、プリセット関数に対応するルックアップテーブルには正数入力範囲および/または負数入力範囲が含まれる。
いくつかの実施例では、目的関数にはtanh双曲線正接関数が含まれ、プリセット関数にはsigmoid非線形関数が含まれ、第1変換ユニットはさらに、プリセット関数の入力データとして、現在のデータと2の積を確定するように構成される。
いくつかの実施例では、現在のデータが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第1変換ユニットはさらに、現在のデータの指数部に1を足すことで、現在のデータと2の積を得るように構成される。
いくつかの実施例では、第2変換ユニットはさらに、第1出力データと2の積を確定し、かつ積から1を引いた差を、現在のデータを入力とした目的関数の第2出力データとするように構成される。
いくつかの実施例では、第1出力データが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第2変換ユニットはさらに、第1出力データの指数部に1を足すことで、第1出力データと2の積を得るように構成される。
第3態様において、本発明の実施例は、(3)1つまたは複数のプログラムが格納されている記憶部材と、実行すべき命令に従って命令スケジューリングを行うスケジューリング部材と、スケジューリング部材から発された命令を受信し、対応するプログラムを実行し、および/またはスケジューリング部材から発された命令に従ってサブ命令を生成し、かつ生成したサブ命令を対応する専用実行部材に送信するように構成される少なくとも1つの汎用実行部材と、少なくとも1つの汎用実行部材から送信されたサブ命令を受信し、対応するプログラムを実行するように構成される少なくとも1つの専用実行部材であって、1つまたは複数の専用実行部材は、対応するプログラムを実行する際に前記第1態様のいずれかの実施例に記載の方法を実施する少なくとも1つの専用実行部材と、を備える人工知能チップを提供する。
第4態様において、本発明の実施例は、コンピュータプログラムが格納されているコンピュータ可読媒体であって、コンピュータプログラムが実行部材により実行される際に前記第1態様のいずれかの実施例に記載の方法を実施するコンピュータ可読媒体を提供する。
第5態様において、本発明の実施例は、プロセッサ、記憶装置および少なくとも1つの前記第3態様に記載の人工知能チップを含む電子機器を提供する。
本発明の実施例により提供されたニューラルネットワークのためのデータ処理方法および装置は、現在のデータを取得する活性化関数が目的関数であることを確定した場合、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。また、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップすることができる。そして、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを得ることができる。さらに、第2出力データを出力することができる。つまり、プリセット関数を通じて目的関数を表現することで、目的関数のために対応するルックアップテーブルを構築せずに済むので、格納空間の占用量の削減に寄与できる。また、異なる活性化関数を計算するに当たって、ルックアップテーブルの変更作業を減らせ、全体の処理性能の向上にも有利である。
本発明の他の特徴、目的及び利点は、以下の図面を参照してなされる非限定的な実施例に係る詳細な説明を読むことにより、より明らかになるであろう。
図1は、本発明の一実施例を適用可能な例示的なシステムアーキテクチャを示す図である。 図2は、本発明のニューラルネットワークのためのデータ処理方法に基づく1つの実施例のフローチャートである。 図3は、本発明のニューラルネットワークのためのデータ処理方法に基づくもう1つの実施例のフローチャートである。 図4は、本発明のニューラルネットワークのためのデータ処理方法に基づく1つの適用シナリオの概略図である。 図5は、本発明のニューラルネットワークのためのデータ処理装置に基づく1つの実施例の構造概略図である。 図6は、本発明の人工知能チップに基づく1つの実施例の構造概略図である。 図7は、本発明の実施例を達成するための電子機器に適用されるコンピュータシステムの構造概略図である。
以下、図面及び実施例を参照しながら本発明をより詳細に説明する。ここで説明する具体的な実施例は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではないことを理解されたい。また、説明の便宜上、図面には発明に関連する部分のみが示されていることに留意されたい。
なお、本発明の実施例及び実施例における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、図面及び実施例を参照しながら本発明を詳細に説明する。
図1は、本発明の実施例のニューラルネットワークのためのデータ処理方法および装置を適用できる例示的なシステムアーキテクチャ100を示した。
図1に示すように、システムアーキテクチャ100には、端末101,102,103、ネットワーク104およびサーバ105が含まれることが可能である。ネットワーク104は端末101,102,103とサーバ105の間に通信リンクの媒体を提供することができる。ネットワーク104には、有線、無線通信リンクまたは光ファイバーケーブルなど様々なタイプの接続が含まれることが可能である。
ユーザは端末101,102,103を使用しネットワーク104を通じてサーバ105とインタラクションを行うことで、情報のやり取りをすることができる。端末101,102,103には、モデル訓練・テストアプリケーション、モデル予測アプリケーション、Webブラウザ、ショッピングアプリケーションおよびインスタントメッセージングツールなど様々なクライアントアプリケーションがインストールされることができる。
ここにいう端末101,102,103とは、ハードウェアであってもよく、ソフトウェアであってもよい。端末101,102,103がハードウェアである場合、各種のディスプレイ付き電子機器であってもよい。スマートフォン、タブレット、スマートウォッチ、電子書籍リーダー、MP3プレイヤー(Moving Picture Experts Group Audio Layer III,動画専門家集団オーディオレイヤー3)、ラップトップコンピュータおよびデスクトップコンピュータなどを含むが、それらに限られない。端末101,102,103がソフトウェアである場合、上記の電子機器にインストールすることができる。それは複数のソフトウェアまたはソフトウェアモジュール(例えば、分散サービスの提供に使用する)であってもよく、単一のソフトウェアまたはソフトウェアモジュールとして実現されてもよい。ここでは特に限定しない。
サーバ105は、端末101,102,103にインストールされた各種のアプリケーションにサポートするバックエンドサーバなど様々なサービスを提供するサーバであってよい。バックエンドサーバは、ユーザのアプリケーションでの操作行為を解析処理し、処理結果(例えば、操作行為に対応する応答信号)を端末101,102,103にフィードバックすることができる。
また、サーバ105には人工知能チップ106が実装されてもよい。人工知能チップ(AI(Artificial Intelligence)チップ)106は、AI加速器またはコンピューティングカードとも呼ばれ、即ちもっぱら人工知能アプリケーションにおける大量のコンピューティングタスクを処理するためのモジュールである。例えば、サーバ105のCPU(Central Processing Unit,中央処理装置)は、取得した訓練データおよび/またはテストデータを、例えばPCIE(peripheral cpmponent interconnect express,高速シリアル・コンピュータ拡張バス規格)を通じて、人工知能チップ106に伝送することができる。この場合、人工知能チップ106はこれらのデータを利用してモデル訓練および/またはテストを行うことができる。また、例えば、CPUは取得した解析対象データを人工知能チップ106に伝送することができる。この場合、人工知能チップ106は分析対象データを訓練済みのモデルに入力し、当該モデルを利用して解析を行うことができる。
このように、CPUは人工知能チップ106の処理結果(例えば、訓練後のモデルデータ、モデルのテスト結果データまたはモデルの分析結果データなど)に基づき、さらなる処理解析を実行することができる。つまり、その他の非コンピューティングタスクはやはりサーバ105のCPUで担当することができる。言うまでもなく、人工知能チップ106をもってサーバ105のCPUに代わって一部の処理機能を実施することで、CPUの作業負荷を軽減することができ、サーバ105の全体の処理性能の向上に有利である。
ここで、サーバ105はハードウェアであってもよく、ソフトウェアであってもよい。サーバ105がハードウェアである場合、複数のサーバからなる分散サーバクラスタになることもできれば、単一のサーバになることもできる。サーバ105がソフトウェアである場合、複数のソフトウェアまたはソフトウェアモジュール(例えば、分散サービスの提供に使用する)になることもできれば、単一のソフトウェアまたはソフトウェアモジュールになることもできる。ここでは特に限定しない。
注意すべきは、本発明の実施例に提供されたニューラルネットワークのためのデータ処理方法は通常、人工知能チップ106によって実行される。したがって、ニューラルネットワークのためのデータ処理装置は通常、人工知能チップ106に内蔵されている。
言うまでもなく、図1における端末、ネットワーク、サーバおよび人工知能チップの個数はあくまでも例示的なものに過ぎない。実施のニーズに応じて、任意の個数の端末、ネットワーク、サーバおよび人工知能チップを有することができる。
次に、本発明のニューラルネットワークのためのデータ処理方法に基づく1つの実施例のフロー200を示す図2を参照する。当該ニューラルネットワークのためのデータ処理方法には、次のようなステップが含まれることが可能である。
ステップ201:現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換する。
本実施例においては、ニューラルネットワークのためのデータ処理方法の実行主体(例えば、図1に示す人工知能チップ106)は、有線の接続方法または無線の接続方法を通じて、データを受信または取得することができる。また、これらのデータを利用して、それに格納されているニューラルネットワークモデルに訓練またはテストを行うことができる。また、それに格納されているニューラルネットワークモデルを利用して、これらのデータを解析処理することができる。ここで、ニューラルネットワークモデルは機械学習技術に基づいて構築された従来の各種の学習モデルであってよい。当該ニューラルネットワークモデルは、従来の各種のニューラルネットワーク構造(例えば、DenseBox、VGGNet、ResNet、SegNetなど)を持つことができる。かつ、ニューラルネットワークモデルには通常、少なくとも1つのノード(即ち、活性化関数)が設けられている。
本実施例においては、実行主体は、現在のデータを取得する活性化関数が目的関数であるかどうかを確定することができる。すなわち、現在のデータを入力とすべき活性化関数が目的関数であるかどうかを確定する。かつ、現在のデータを取得する活性化関数が目的関数であることを確定した前提で、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。
言うまでもなく、ニューラルネットワークモデルを構築するに当たって、すべてのノードが採用した活性化関数は知られているものである。このように、実行主体は現在のデータが存在するノードに基づき、当該ノードの活性化関数が目的関数であるかどうかを判定することができる。または、実行主体は現在実行中のプログラムにおける活性化関数の関連コードに基づき、それが目的関数であるかどうかを判定することができる。ここで、現在のデータは、ニューラルネットワークモデルの初期入力データであってもよく、ニューラルネットワークモデルにおける任意のノードの入力データ、すなわち、前のノードの出力データであってもよい。ここで、目的関数とプリセット関数はニューラルネットワークモデルに使用される任意の2種の活性化関数であってもよい。例えば、非線形活性化関数sigmoid、tanh(hyperbolic tangent,双曲線正接)とrelu(rectified linear unit,正規化線形ユニット)における任意の2種が挙げられる。注意すべきは、目的関数とプリセット関数が確定された場合、二者間の変換関係は計算を通じて得ることができ、かつ通常に一定である。
本発明の一部の任意選択実施形態においては、目的関数は、
Figure 2020027611
であってもよい。プリセット関数は、
Figure 2020027611
であってよい。二者間の変換関係は、
Figure 2020027611
である。
これで分かるように、tanh(x)関数の入力データはsigmoid(x)関数の入力データの二倍である。この場合、現在のデータと2の積を、プリセット関数の入力データとして確定する。
言うまでもなく、コンピュータに伝送されるデータは通常、浮動小数点数である。かつ、浮動小数点数は通常、2を基数とする、仮数部と指数部とからなる表示方式を採用する。例えば、
x=M×2
式中。式中、Mは仮数部を示し、正数であってもよく、負数であってもよい。Eは指数部を示す。また例えば、
x=(−1)×M×2
式中、Sは符号ビットを示し、すなわち正または負である。この場合、仮数部Mは正数であってよい。
ここで、実行主体は計算式(例えば、浮動小数点数の掛け算)を利用して、現在のデータと2の積を直接算出することができる。しかし、かかる計算方法は通常に効率が低い。データの処理効率を高めるべく、観察を通じて分かるように、現在のデータと2の積については、現在のデータの指数部に1を足せばよい。すなわち、実行主体は現在のデータの指数部に1を足すことで、現在のデータと2の積を得ることができる。つまり、現在のデータから変換して取得したプリセット関数の入力データが
2x=M×2E+1
または
(−1)×M×2E+1
である。これで、大量のコンピューティングプロセスを減らせ、効率よく処理することができる。
ステップ202:プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップする。
本実施例においては、実行主体は格納されているプリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データをルックアップすることができる。ここのルックアップテーブルは通常、入力範囲内の活性化関数の近似出力値を記述するために使用することができる。すなわち、活性化関数曲線中のいくつかの点を取ることである。隣接する2つの点を連結すると、一本の直線を得ることができる。この直線の縦軸の値をもって、この2点間の横軸の関数値を近似的に代替することができる。かつ、近似値をできるだけ真実の値に近づけるために、通常、より多くの点を取って連結する必要がある。
従来技術においては、活性化関数ごとに、それに対応するルックアップテーブルを構築するのが一般的である。かつ、通常、ルックアップテーブルの方式を採用して、相応する活性化関数の計算を実施する。例えば、sigmoid関数とtanh関数が対応するルックアップテーブルは往々にして異なる。つまり、プリセット関数に対応するルックアップテーブルにおいて、入力データを横座標とした点を見つけて、かつ当該点の対応する縦座標を第1出力データとして確定する。
ステップ203:変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを得る。
本実施例においては、第1出力データを取得した後、実行主体は目的関数とプリセット関数の間の変換関係に基づき、変換により現在のデータを入力とした目的関数の第2出力データを得ることができる。
本実施例のいくつかの任意選択実施形態においては、目的関数がtanh関数であり、プリセット関数がsigmoid関数である場合、実行主体は第1出力データと2の積を確定することができる。かつ、積から1を引いた差を、現在のデータを入力とした目的関数の第2出力データとすることができる。すなわち、
Tanh(x)=2×sigmoid(2x)−1
である。
ここで、実行主体は同様に、計算式を利用して第2出力データを得ることができる。任意選択的に、第1出力データが浮動小数点数であり、かつ浮動小数点数は2を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、実行主体は第1出力データの指数部に1を足すことで、第1出力データと2の積を得ることもできる。このようにすれば、浮動小数点数の掛け算が不要となり、処理効率の向上に有利である。最後に、浮動小数点数の引き算を通じて、積と1の差を計算することで、目的関数の第2出力データを得る。
ステップ204:第2出力データを出力する。
本実施例においては、ステップ203において変換により得られた目的関数の第2出力データに基づき、実行主体は当該第2出力データを出力することができる。ここで出力は、第2出力データを格納すること;第2出力データを、目的関数が現在存在しているノードから次のノードに伝送し、次のノードの活性化関数の入力データとすること;または、第2出力データ(例えば、モデルの出力とする)をその他の電子機器(例えば、図1に示すサーバ105)に伝送すること、の少なくとも一種を含むことができるが、それらに限られない。
注意すべきは、ハードウェアの設計上、一般的には、各ルックアップテーブルには1つの読み取りポートしかない。しかし、実際の運用プロセスにおいては、往々にして多くの並列計算がある。したがって、複数の計算パスが同時にルックアップテーブルを読み取る必要がある可能である。そのため、ノードごとに各種の活性化関数に対応するルックアップテーブルを格納する必要がある。こうすると、メモリ内の大量の格納空間を占用することになりかねない。しかし、本発明によれば、目的関数をプリセット関数で表現することにより、目的関数のルックアップテーブルを構築して格納する必要がなくなる。特に、比較的によく見られる活性化関数を目的関数とすることで、大量の格納空間を節約できる。さらに、よく見られる活性化関数をプリセット関数とすることで、異なる活性化関数を計算するに当たっては、ルックアップテーブルの取り替えの減少または取消に役立ち、全体の処理性能の向上に有利である。
本実施例におけるニューラルネットワークのためのデータ処理方法によれば、現在のデータを取得する活性化関数が目的関数であることを確定した前提で、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。次に、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第1出力データを見つけることができる。そして、変換関係と第1出力データに基づき、変換により現在のデータを入力とした目的関数の第2出力データを得ることができる。さらに、第2出力データを出力することもできる。つまり、プリセット関数を通じて目的関数を表現することで、目的関数のために対応するルックアップテーブルを構築せずに済むので、格納空間への占用の低減に寄与できる。さらに、異なる活性化関数を計算するに当たっては、ルックアップテーブルの変更プロセスを低減でき、全体の処理性能の向上に有利である。
本発明のニューラルネットワークのためのデータ処理方法に基づくもう1つの実施例のフロー300を示す図3を参照する。当該ニューラルネットワークのためのデータ処理方法には、次のようなステップが含まれることが可能である。
ステップ301:現在のデータを取得する活性化関数がsigmoid関数であることに応じて、現在のデータを2で割った商を、tanh関数の入力データとして確定する。
本実施態様においては、ニューラルネットワークのためのデータ処理方法の実行主体(例えば、図1に示す人工知能チップ106)は、有線の接続方法または無線の接続方法を通じて、データを受信または取得することができる。かつ、これらのデータを利用して、それに格納されているニューラルネットワークモデルを訓練またはテストすることができる。それに格納されているニューラルネットワークモデルを利用して、これらのデータを解析処理することもできる。ただし、ニューラルネットワークモデルは、機械学習技術に基づいて構築された従来の各種の学習モデルであってもよい。かつ、ニューラルネットワークモデルにおいては通常、少なくとも1つのノード(すなわち、活性化関数)が設けられている。
本実施例においては、現在のデータを取得する活性化関数がsigmoid関数であるかどうかを確定することができる。かつ、現在のデータを取得する活性化関数がsigmoid関数であることを確定した前提で、現在のデータを2で割った商を、tanh関数の入力データとして確定することができる。この場合、二者間の変換関係は、
Figure 2020027611
である。
ここで、実行主体は計算式を利用して、商を直接確定することができる。例えば、現在のデータが浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、つまり、実行主体はかかる表示方式を採用して浮動小数点数を記録できる場合、実行主体は、現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得ることができる。すなわち、
x/2=M×2E−1
または
(−1)×M×2E−1
である。したがって、浮動小数点数の割り算が不要となり、さらに処理効率を高めることができる。
ステップ302:tanh関数に対応するルックアップテーブルにおいて、入力データを入力としたtanh関数の第1出力データをルックアップする。
本実施例においては、実行主体はtanh関数に対応するルックアップテーブルにおいて、入力データを入力としたtanh関数の第1出力データを見つけることができる。これは図2の実施例のステップ202における関連記述を参照すればよく、ここでは省略する。
言うまでもなく、tanh関数の出力は、ゼロを中心にしつつ、−1〜1の範囲内にある。つまり、tanh関数はゼロ点に関して対称である。すなわち、
tanh(−x)=−tanh(x)
である。これで分かるように、tanh関数のルックアップテーブルの実施には完全なルックアップテーブルを必要としない。この場合、tanh関数に対応するルックアップテーブルには、正数入力範囲および/または負数入力範囲が含まれることが可能である。したがって、格納空間をさらに節約するために、実行主体には単にルックアップテーブルの正数部分(または負数部分)のみを格納することができる。負数部分(または正数部分)は、正数部分(または負数部分)を通じて計算して得ることができる。
ステップ303:第1出力データと1を合計し、かつ合計値を2で割った商を確定し、現在のデータを入力としたsigmoid関数の第2出力データとする。
本実施例においては、実行主体は、ステップ302において得られた第1出力データと1を合計することができる。かつ、合計値を2で割った商を、現在のデータを入力としたsigmoid関数の第2出力データとすることができる。ここで、合計値が浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、実行主体は、まず、浮動小数点数の足し算を採用して計算により合計値を得ることができる。そして、合計値の指数部から1を引くことで、合計値を2で割った商を得ることができる。したがって、浮動小数点数の割り算が不要となり、処理効率の向上に有利である。
ステップ304:第2出力データを出力する。
本実施例においては、現在のデータを入力としたsigmoid関数の第2出力データを確定した場合、実行主体は当該第2出力データを出力することができる。これは図2の実施例のステップ204における関連記述を参照すればよく、ここでは省略する。
本実施例におけるニューラルネットワークのためのデータ処理方法によれば、よく見られるsigmoid活性化関数をよく見られるtanh活性化関数で表現することができる。したがって、大量の格納空間を節約できるほか、これらの2種のよく見られる活性化関数を計算する際、ルックアップテーブルの変更が不要となる。したがって、ルックアップテーブルの変更回数を大幅に削減することができ、処理性能の大幅な向上に有利である。また、tanh活性化関数そのものの特徴により、単にルックアップテーブルの正数部分または負数部分のみを格納することができる。これにより、格納空間の占用をさらに低減することができる。
さらに、上記の各実施例のニューラルネットワークのためのデータ処理方法に基づく1つの適用シナリオを示す概略図である図4を参照する。図4の適用シナリオにおいては、サーバ105に人工知能チップAと人工知能チップBが設けられていることが可能である。ここで、人工知能チップAは、主にニューラルネットワークモデルの訓練とテストに係るデータ処理に使用することができる。人工知能チップBは、主にニューラルネットワークモデルの予測と分析に係るデータ処理に使用することができる。
ここで、ユーザは、端末101を利用してサーバ105にモデル訓練命令を発信することができる。サーバ105におけるCPUは当該命令を受信した後に、ローカルメモリから訓練データとモデルデータを取得することができる。また、取得したデータを人工知能チップAに伝送することができる。注意すべきは、CPUはクラウドなど他のデバイスから上記のデータを取得することもできる。または、これらのデータは人工知能チップAに格納することもできる。したがって、CPUは端末101が送信したモデル訓練命令を受信した後に、人工知能チップAへ相応の命令を発信することができる。
この場合、人工知能チップAは、訓練データを利用して、モデルを訓練することができる。かつ、訓練プロセスにおいて実行可能なニューラルネットワークのためのデータ処理方法は、次のようなことが含まれる。
まず、現在のデータを取得する活性化関数が目的関数である場合、目的関数とプリセット関数との間の変換関係に基づいて現在のデータをプリセット関数の入力データに変換することができる。次に、入力データを入力とするプリセット関数の第1出力データは、プリセット関数に対応するルックアップテーブルで見つけられる。次に、変換関係と第1出力データに基づき、変換により現在のデータを入力とする目的関数の第2出力データを得ることができる。その後、第2出力データを現在のデータとし、かつ、モデル訓練終了までに、次のノードの活性化関数に入力することができる。
したがって、CPUは訓練されたモデルをメモリまたは人工知能チップBに格納することができる。同時に、サーバ105は、端末101に訓練結果を記述するためのフィードバック情報を発信することができる。ここで、フィードバック情報には、モデル訓練終了、訓練後のモデルの格納場所、モデル訓練失敗、エラーの原因またはエラーの場所など、少なくとも一項が含まれることが可能である。
本適用シナリオにおいては、人工知能チップをもってサーバにおけるCPUに代わってモデル訓練を行うことで、CPUの負荷を軽減することができる。同時に、人工知能チップは、上記の各実施例におけるニューラルネットワークのためのデータ処理方法を採用することで、モデルの訓練効率の向上に役立つ。したがって、サーバの全体の性能を高め、ユーザの待機時間を減らし、ユーザーエクスペリエンスを向上することができる。
次に、図5を参照する。上記の図面に示す方法の実施として、本発明はニューラルネットワークのためのデータ処理装置の1つの実施例を提供した。当該装置の実施例は、上記の各実施例に示す方法の実施例と対応する。当該装置は具体的に、様々な電子機器に適用することができる。
図5に示すように、本実施例のニューラルネットワークのためのデータ処理装置500には、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するように構成される第1変換ユニット501と、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力とするプリセット関数の第1出力データをルックアップするように構成されるルックアップユニット502と、変換関係と第1出力データに基づき、変換により現在のデータを入力とする目的関数の第2出力データを得るように構成される第2変換ユニット503と、第2出力データを出力するように構成される出力ユニット504と、が含まれることが可能である。ここで、ニューラルネットワークには少なくとも1つの活性化関数が設けられている。
本実施例のいくつかの任意選択実施形態においては、目的関数にはsigmoid非線形関数が含まれることが可能である。プリセット関数には、tanh双曲線正接関数が含まれることが可能である。また、第1変換ユニット501は、現在のデータを2で割った商をプリセット関数の入力データとして確定するように構成されることができる。
任意選択的に、現在のデータが浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第1変換ユニット501はさらに、現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得るように構成されることができる。
いくつかの実施例では、第2変換ユニット503は、第1出力データと1を合計し、かつ合計値を2で割った商を、現在のデータを入力とする目的関数の第2出力データとして確定するように構成されることができる。
さらに、合計値が浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第2変換ユニット503はさらに、合計値の指数部から1を引くことで、合計値を2で割った商を得るように構成されることができる。
例として、プリセット関数に対応するルックアップテーブルには、正数入力範囲および/または負数入力範囲が含まれることが可能である。
一部の適用シナリオにおいては、目的関数には、tanh双曲線正接関数が含まれることが可能である。プリセット関数には、sigmoid非線形関数が含まれることが可能である。第1変換ユニット501はまた、現在のデータと2の積を、プリセット関数の入力データとして確定するように構成されることができる。
任意選択的に、現在のデータが浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第1変換ユニット501はさらに、現在のデータの指数部に1を足すことで、現在のデータと2の積を得るように構成されることができる。
いくつかの実施例では、第2変換ユニット503はまた、第1出力データと2の積を確定し、かつ積から1を引いた差を、現在のデータを入力とする目的関数の第2出力データとするように構成されることができる。
さらに、第1出力データが浮動小数点数であり、かつ浮動小数点数は、2を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第2変換ユニット503はさらに、第1出力データの指数部に1を足すことで、第1出力データと2の積を得るように構成されることができる。
言うまでもなく、当該装置500に記載する各ユニットは、図2と図3に説明する方法における各ステップに対応する。したがって、前文における方法について説明した操作、特徴および生じる有益な効果は同様に当該装置500とそれに含まれるユニットにも適用し、ここでは省略する。
本発明の実施例はさらに人工知能チップを提供した。当該人工知能チップの構造は、本発明の人工知能チップの1つの実施例の構造概略図を示した図6を参照することができる。図6に示すように、本実施例における人工知能チップには、メモリ601と、スケジューリング部材602と、少なくとも1つの汎用実行部材603と、少なくとも1つの専用実行部材604と、が含まれることが可能である。
本実施例においては、メモリ601は情報格納機能を実施できる回路またはデバイスであってもよい。例えば、スタティックランダムアクセスメモリ(Static Random−Access Memory,SRAM)、ランダムアクセスメモリ(RAM)、メモリカード、セキュアデジタルメモリカード(Secure Digital Memory Card,SDカード)またはフラッシュメモリカード(TFカード,microSDとも呼ぶ)などが挙げられる。メモリ601には、1つまたは複数のプログラムが格納されていることが可能である。
スケジューリング部材602は命令スケジューリングおよび分配機能を実施できる回路またはデバイスであってもよい。スケジューリング部材602は、実行すべき命令を解析して、どういう操作を実行するか(即ち、何をするか)を判定することができる。その後、実行すべき命令を、対応する汎用実行部材603(すなわち、実行すべき命令により指示された操作を実行できる汎用実行部材603)に発信することができる。スケジューリング部材602は、プロセッサに内蔵されてもよいし、独立して設置されてもよい。
注意すべきは、実行すべき命令は、その他の電子機器または電子デバイス(図1に示すサーバ105におけるCPU)から人工知能チップに発信されたものであってもよく、人工知能チップが処理すべきデータに基づいて生成したものであってもよい。例えば、現在のデータを取得する活性化関数が目的関数であると確定した場合、上記の各実施例に記載するデータ処理方法の実行を示す実行すべき命令を生成する。
汎用実行部材603は、常用の操作機能を実行できる回路またはデバイスであってもよい。ここで、常用の操作機能は、順方向伝播アルゴリズム、逆方向伝播アルゴリズムなど人工知能アプリケーションに常用されるアルゴリズムを含むことができるが、それらに限られない。したがって、ユーザは、必要な操作機能に応じて、各汎用実行部材603を組み合わせることができるので、チップの開発時間の短縮と開発コストの削減に有利である。
ここで、常用の操作機能には、命令スケジューリングおよび分配機能が含まれることもできる。すなわち、汎用実行部材603は同様に、スケジューリング部材602が発した命令(すなわち、実行すべき命令)を解析することができる。その後、解析結果に基づき、少なくとも1つのサブ命令を生成することができる。かつ、生成された少なくとも1つのサブ命令をそれぞれ対応する専用実行部材604に発することができる。ここで、ある専用実行部材604が実行すべき命令による操作を実施できる場合、汎用実行部材603は実行すべき命令をサブ命令とすることができる。複数の専用実行部材604でなければ実行すべき命令による操作を実施できない場合、汎用実行部材603は複数のサブ命令を生成することができる。
つまり、汎用実行部材603は独立して相応する操作を実行することもできれば、スケジューリング部材602に協動して命令スケジューリングを行うこともできる。これで、スケジューリング部材602の作業負荷の軽減に役立ち、チップ全体の処理効率の向上に有利である。
本実施例においては、専用実行部材604は、所定の操作機能を実施できる回路またはデバイスであってもよい。いわゆる所定の操作機能は、常用の操作機能に関連することができる。すなわち、上記の各実施例に説明したデータ処理方法など人工知能アプリケーションに常用されないアルゴリズムが含まれることが可能である。したがって、専用実行部材604は往々にして、異なるユーザのニーズに応じて設計しなければならない。
任意選択的に、少なくとも1つの専用実行部材604は、各汎用実行部材603が実施できる常用の操作機能を分解し、分解された操作機能により設計して得られたものであってもよい。この場合、各汎用実行部材603は、各専用実行部材604のいずれにも通信接続することができる。したがって、異なる専用実行部材604を組み合わせることで、より多くの操作機能を実施できるほか、実行部材の個数の削減にも有利である。
注意すべきは、人工知能チップには、1つまたは複数のメモリ601が設けられることが可能である。かつ、それには、その他の各部材に必要となるプログラムなどのデータが格納されている。この場合、スケジューリング部材602、汎用実行部材603および専用実行部材604は、シリアルバスまたはデータインターフェースなどを介して、メモリ601からプログラムなどのデータを読み取ることができる。
一部の適用シナリオにおいては、データの処理効率を高めるべく、スケジューリング部材602、汎用実行部材603および専用実行部材604にはそれぞれメモリ601が設けられることが可能である。かつ、異なる部材におけるメモリ601には、当該部件に必要となるデータを格納することが可能である。例えば、スケジューリング部材602におけるメモリ601には、命令スケジューリングプログラムが格納されることが可能である。
本実施例における人工知能チップによれば、ディープラーニング訓練と予測をめぐっては、高密度のコンピューティングとアクセス・格納のニーズを満たせるので、ディープラーニングのシナリオにおける従来のCPU、GPUなどの汎用プロセッサの処理性能を向上させることができる。さらに、ディープラーニングにおけるデータ処理方法を最適化することで、ソフトウェア、ハードウェア全体の実行効率の向上に有利である。
また、本発明の実施例に記載したユニットは、ソフトウェアの方式を通じても実施できれば、ハードウェアの方式を通じても実施できる。記載したユニットは、実行部材に内蔵してもよい。例えば、「第1変換ユニットと、ルックアップユニットと、第2変換ユニットと、出力ユニットとを含む実行部材」と記載してもよい。ただし、これらのユニットの名称は、特定の状況下で当該ユニットそのものに対する限定には当たらない。例えば、出力ユニットについては「第2出力データを出力するユニット」と記載してもよい。
一方、本発明はさらに、コンピュータ可読媒体を提供した。当該コンピュータ可読媒体は、上記の実施例に説明した人工知能チップに含まれるものであってもよく、独立して存在し当該人工知能チップに内蔵されていないものであってもよい。上記のコンピュータ可読媒体には、1つまたは複数のプログラムが搭載されており、上記の1つまたは複数のプログラムが当該人工知能チップに実行されると、当該人工知能チップは、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換すること、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力とするプリセット関数の第1出力データを見つけること、変換関係と第1出力データに基づき、変換により現在のデータを入力とする目的関数の第2出力データを得ること、第2出力データを出力すること、を実行する。
注意すべきは、本発明のコンピュータ可読媒体は、コンピュータ可読信号媒体もしくはコンピュータ可読記憶媒体、またはこれらの任意の組み合わせであってもよい。コンピュータ可読記憶媒体は、例えば、電気、磁気、光学、電磁気、赤外線、または半導体システム、装置もしくはデバイス、またはそれらの任意の組み合わせであってもよいが、それらに限られない。コンピュータ可読記憶媒体のより具体的な例は、1本以上の導線による電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ(RAM)、読み出し専用メモリ(ROM)、消去可能プログラマブル読み出し専用メモリ(EPROMまたはフラッシュメモリ)、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ(CD−ROM)、光メモリ、磁気メモリ、またはこれらの任意の適切な組み合わせを含むが、それらに限られない。本発明において、コンピュータ可読媒体は、プログラムを含むかまたは格納している任意の有形の媒体であってもよい。当該プログラムは、命令実行システム、装置またはデバイスに使用されるか、またはそれらと組み合わせて使用されることができる。本発明において、コンピュータ可読信号媒体は、ベースバンド内の、または搬送波の一部として伝搬されるデータ信号を含むことができ、その中にコンピュータ可読プログラムコードが担持されている。かかる伝搬されるデータ信号は、様々な形態を採用することができ、電磁信号、光信号または上記の任意の適切な組み合わせを含むが、それらに限られない。コンピュータ可読信号媒体はさらに、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってもよい。当該コンピュータ可読媒体は、命令実行システム、装置またはデバイスに使用されまたはそれらと組み合わせて使用されるためのプログラムを発信、伝搬または伝送することができる。コンピュータ可読媒体に含まれるプログラムコードは、任意の適切な媒体を使用して伝送することができる。当該任意の適切な媒体とは、無線、有線、光ケーブル、RFなど、または上記の任意の適切な組み合わせを含むが、それらに限られない。
以下、本発明の実施例を実現するための電子機器(例えば、図1に示す端末101,102,103またはサーバ105)に適用されるコンピュータシステム700を示す構造概略図である図7を参照する。図7に示す電子機器はあくまでも一例に過ぎず、本発明の実施例の機能と使用範囲には如何なる制限をも与えない。
図7に示すように、コンピュータシステム700には、読み出し専用メモリ(ROM)702に格納されているプログラムまたは記憶部708からランダムアクセスメモリ(RAM)703にロードされたプログラムによって、様々な適当な動作と処理を実行することができる中央処理装置(CPU)701が含まれている。RAM703にはシステム700の動作に必要な各種のプログラムとデータがさらに格納されている。CPU701は人工知能チップ712を通じてデータの処理解析を行うことができる。CPU701、ROM702、RAM703および人工知能チップ712は、バス704を介して互いに接続されている。入力/出力(I/O)インターフェース705もバス704に接続されている。
タッチスクリーン、押しボタン、マウス、マイクロホン、カメラなどを含む入力部706と、陰極線管(CRT)、液晶ディスプレイ(LCD)などおよびスピーカなどを含む出力部707と、ハードディスクなどを含む記憶部708と、LANカード、モデムなどのネットワークインタフェースカードを含む通信部709とは、I/Oインターフェース705に接続されている。通信部709は、インターネットなどのネットワークを介して通信処理を行う。ドライバ710も必要に応じて、I/Oインターフェース705に接続されている。磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブルメディア711は、そこから読み出されるコンピュータプログラムが必要に応じて記憶部708にインストールされるように、必要に応じてドライブ710に設置されている。
特に、本発明に開示されている実施例によれば、前文においてフローチャートを参照しながら記載されたプロセスは、コンピュータソフトウェアプログラムとして実施することができる。例えば、本発明が開示した実施例には、コンピュータ可読媒体に格納されているコンピュータプログラムを含むコンピュータプログラム製品が含まれることが可能である。当該コンピュータプログラムには、フローチャートに示す方法を実行するためのプログラムコードが含まれる。かかる実施例において、当該コンピュータプログラムは通信部709を介して、ネットワークからダウンロードされてインストールされることが可能であり、および/または、リムーバブルメディア711からインストールされることが可能である。当該コンピュータプログラムは、人工知能チップ712により実行される場合、本発明の方法に限定された上記の機能を実行する。
言うまでもなく、図面におけるフローチャートとブロック図は、本発明の各実施例に係るシステム、方法およびコンピュータプログラム製品により実現可能なシステムアーキテクチャ、機能および操作を示している。これについては、フローチャートまたはブロック図における各ブロックは、モジュール、プログラムセグメント、またはコードの一部を表すことができる。当該モジュール、プログラムセグメント、またはコードの一部には、所定のロジック機能を実施するための1つまたは複数の実行可能命令が含まれている。さらに注意すべきは、一部の代替となる実施態様においては、ブロックに示されている機能は図面に示されているものとは異なる順序で実行することも可能である。例えば、連続して表された2つのブロックは、実際にはほぼ並行して実行することができる。また、時には、逆の順序で実行することもできる。これは、係る機能によって決まる。さらに注意すべきは、ブロック図および/またはフローチャートにおけるすべてのブロック、ならびにブロック図および/またはフローチャートにおけるブロックの組み合わせは、所定の機能または操作を実行する専用のハードウェアベースのシステムで実施することもできれば、専用のハードウェアとコンピュータ命令との組み合わせで実施することもできる。
上記の説明はあくまでも本発明の好ましい実施例および応用している技術的原理に対する説明にすぎない。当業者であれば、本発明に係る発明の範囲は、上記の技術的特徴の特定の組み合わせからなる技術的解決手段に限定されず、上記の発明構想から逸脱しない範囲内で上記の技術的特徴またはそれらの同等の特徴を任意に組み合わせてなる他の技術的解決手段をも含むことが理解できる。例えば、上記の特徴と本発明に開示された類似する機能を有する技術的特徴(それらに限られない)とを相互に置き換えてなる技術的解決手段が挙げられる。

Claims (19)

  1. 少なくとも1つの活性化関数が設けられているニューラルネットワークのためのデータ処理方法であって、
    現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップと、
    前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第1出力データをルックアップするステップと、
    前記変換関係と前記第1出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第2出力データを取得するステップと、
    前記第2出力データを出力するステップと、
    を含むニューラルネットワークのためのデータ処理方法。
  2. 前記目的関数にはsigmoid非線形関数が含まれ、前記プリセット関数にはtanh双曲線正接関数が含まれ、
    前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
    前記プリセット関数の入力データとして、現在のデータを2で割った商を確定することを含む請求項1に記載の方法。
  3. 現在のデータが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータを2で割った商を確定することは、
    現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得ることを含む請求項2に記載の方法。
  4. 前記変換関係と前記第1出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第2出力データを取得するステップは、
    前記第1出力データと1を合計して合計値を2で割った商を確定し、現在のデータを入力とした前記目的関数の第2出力データとすることを含む請求項2に記載の方法。
  5. 合計値が、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記合計値を2で割った商を確定することは、
    合計値の指数部から1を引くことで、合計値を2で割った商を得ることを含む請求項4に記載の方法。
  6. 前記プリセット関数に対応するルックアップテーブルには正数入力範囲および/または負数入力範囲が含まれる請求項2〜5のいずれか一項に記載の方法。
  7. 前記目的関数にはtanh双曲線正接関数が含まれ、前記プリセット関数にはsigmoid非線形関数が含まれ、
    前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
    前記プリセット関数の入力データとして、現在のデータと2の積を確定することを含む請求項1に記載の方法。
  8. 現在のデータが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータと2の積を確定することは、
    現在のデータの指数部に1を足すことで、現在のデータと2の積を得ることを含む請求項7に記載の方法。
  9. 前記変換関係と前記第1出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第2出力データを取得するステップは、
    前記第1出力データと2の積を確定し、かつ積から1を引いた差を、現在のデータを入力とした前記目的関数の第2出力データとすることを含む請求項7に記載の方法。
  10. 前記第1出力データが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第1出力データと2の積を確定することは、
    前記第1出力データの指数部に1を足すことで、前記第1出力データと2の積を得ることを含む請求項9に記載の方法。
  11. 少なくとも1つの活性化関数が設けられているニューラルネットワークのためのデータ処理装置であって、
    現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するように構成される第1変換ユニットと、
    前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第1出力データをルックアップするように構成されるルックアップユニットと、
    前記変換関係と前記第1出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第2出力データを取得するように構成される第2変換ユニットと、
    前記第2出力データを出力するように構成される出力ユニットと、を含むニューラルネットワークのためのデータ処理装置。
  12. 前記目的関数にはsigmoid非線形関数が含まれ、前記プリセット関数にはtanh双曲線正接関数が含まれ、
    前記第1変換ユニットは、前記プリセット関数の入力データとして、現在のデータを2で割った商を確定するように構成される請求項11に記載の装置。
  13. 現在のデータが、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第1変換ユニットはさらに、現在のデータの指数部から1を引くことで、現在のデータを2で割った商を得る請求項12に記載の装置。
  14. 前記第2変換ユニットは、前記第1出力データと1を合計し、かつ合計値を2で割った商を確定し、現在のデータを入力とした前記目的関数の第2出力データとするように構成される請求項12に記載の装置。
  15. 合計値が、2を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第2変換ユニットはさらに、合計値の指数部から1を引くことで、合計値を2で割った商を得るように構成される請求項14に記載の装置。
  16. 前記プリセット関数に対応するルックアップテーブルには正数入力範囲および/または負数入力範囲が含まれる請求項12〜15のいずれか一項に記載の装置。
  17. 1つまたは複数のプログラムが格納されている記憶部材と、
    実行すべき命令に従って命令スケジューリングを行うように構成されるスケジューリング部材と、
    前記スケジューリング部材から発された命令を受信し、対応するプログラムを実行し、および/または前記スケジューリング部材から発された命令に従ってサブ命令を生成し、かつ生成したサブ命令を対応する専用実行部材に送信するように構成される少なくとも1つの汎用実行部材と、
    前記少なくとも1つの汎用実行部材から送信されたサブ命令を受信し、対応するプログラムを実行するように構成される少なくとも1つの専用実行部材であって、1つまたは複数の専用実行部材は、対応するプログラムを実行する際に請求項1〜10のいずれか一項に記載の方法を実現する少なくとも1つの専用実行部材と、を備える人工知能チップ。
  18. コンピュータプログラムが格納されているコンピュータ可読媒体であって、
    前記コンピュータプログラムが実行部材により実行される際に請求項1〜10のいずれか一項に記載の方法を実現するコンピュータ可読媒体。
  19. プロセッサ、記憶装置および少なくとも1つの請求項17に記載の人工知能チップを備える電子機器。
JP2019125658A 2018-08-10 2019-07-05 ニューラルネットワークのためのデータ処理方法および装置 Pending JP2020027611A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN201810906496.7A CN110826706B (zh) 2018-08-10 2018-08-10 用于神经网络的数据处理方法和装置
CN201810906496.7 2018-08-10

Publications (1)

Publication Number Publication Date
JP2020027611A true JP2020027611A (ja) 2020-02-20

Family

ID=69405097

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2019125658A Pending JP2020027611A (ja) 2018-08-10 2019-07-05 ニューラルネットワークのためのデータ処理方法および装置

Country Status (4)

Country Link
US (1) US11651198B2 (ja)
JP (1) JP2020027611A (ja)
KR (1) KR102420661B1 (ja)
CN (1) CN110826706B (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113283921A (zh) * 2020-02-19 2021-08-20 华为技术有限公司 一种业务数据的处理方法、装置及云服务器
CN112200299B (zh) * 2020-09-09 2024-04-12 星宸科技股份有限公司 神经网络计算装置、数据处理方法及装置
CN114690624A (zh) * 2020-12-25 2022-07-01 佛山市顺德区美的电热电器制造有限公司 工作模式确定方法、系统、设备、存储介质
CN113379031B (zh) * 2021-06-01 2023-03-17 北京百度网讯科技有限公司 神经网络的处理方法、装置、电子设备和存储介质
CN113657588B (zh) * 2021-08-19 2023-08-18 山东云海国创云计算装备产业创新中心有限公司 一种实现光学神经网络的方法及系统

Citations (3)

* 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 演算装置および演算方法
US20160179434A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Storage device and method for performing convolution operations
WO2018100920A1 (ja) * 2016-12-01 2018-06-07 ソニーセミコンダクタソリューションズ株式会社 演算装置、演算方法及びコンピュータプログラム

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CA2199588A1 (en) * 1997-03-10 1998-09-10 Efrem Hoffman Hierarchical data matrix pattern recognition and identification system
AU2013237728A1 (en) * 2005-11-15 2013-10-24 Bernadette Garner Method for Training Neural Networks
AU2015207873B2 (en) * 2005-11-15 2017-05-04 Bernadette Garner Method for training neural networks
EP3035205A1 (en) * 2014-12-19 2016-06-22 Intel Corporation Reconfigurable functional unit and method for artificial neural networks
US10223635B2 (en) 2015-01-22 2019-03-05 Qualcomm Incorporated Model compression and fine-tuning
CN106227851B (zh) * 2016-07-29 2019-10-01 汤一平 基于深度卷积神经网络的分层深度搜索的图像检索方法
CN106529669A (zh) * 2016-11-10 2017-03-22 北京百度网讯科技有限公司 用于处理数据序列的方法和装置
US10949766B2 (en) * 2017-10-15 2021-03-16 Gsi Technology Inc. Precise exponent and exact softmax computation
CN107729984A (zh) * 2017-10-27 2018-02-23 中国科学院计算技术研究所 一种适用于神经网络激活函数的计算装置及方法
US11645493B2 (en) * 2018-05-04 2023-05-09 Microsoft Technology Licensing, Llc Flow for quantized neural networks
US11775805B2 (en) * 2018-06-29 2023-10-03 Intel Coroporation Deep neural network architecture using piecewise linear approximation
US20200264876A1 (en) * 2019-02-14 2020-08-20 Microsoft Technology Licensing, Llc Adjusting activation compression for neural network training
US11861761B2 (en) * 2019-11-15 2024-01-02 Intel Corporation Graphics processing unit processing and caching improvements
US12002145B2 (en) * 2020-08-17 2024-06-04 Intel Corporation Apparatus and method for efficient graphics processing including ray tracing
US11995767B2 (en) * 2020-08-17 2024-05-28 Intel Corporation Apparatus and method for compressing ray tracing acceleration structure build data

Patent Citations (4)

* 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 演算装置および演算方法
US20160179434A1 (en) * 2014-12-19 2016-06-23 Intel Corporation Storage device and method for performing convolution operations
WO2018100920A1 (ja) * 2016-12-01 2018-06-07 ソニーセミコンダクタソリューションズ株式会社 演算装置、演算方法及びコンピュータプログラム
JP2018092294A (ja) * 2016-12-01 2018-06-14 ソニーセミコンダクタソリューションズ株式会社 演算装置、演算方法及びコンピュータプログラム

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ラシュカ セバスチャン SEBASTIAN RASCHKA: ""Python機械学習プログラミング 第1版 Python Machine Learning 達人データサイエンティストによ", PYTHON機械学習プログラミング 第1版 PYTHON MACHINE LEARNING (2017-04-11), JPN7020002579, 11 April 2017 (2017-04-11), ISSN: 0004426431 *

Also Published As

Publication number Publication date
KR20200018237A (ko) 2020-02-19
CN110826706A (zh) 2020-02-21
CN110826706B (zh) 2023-10-03
KR102420661B1 (ko) 2022-07-14
US20200050924A1 (en) 2020-02-13
US11651198B2 (en) 2023-05-16

Similar Documents

Publication Publication Date Title
JP2020027611A (ja) ニューラルネットワークのためのデータ処理方法および装置
US10656962B2 (en) Accelerate deep neural network in an FPGA
CN109165736B (zh) 应用于卷积神经网络的信息处理方法和装置
US11574239B2 (en) Outlier quantization for training and inference
WO2020207174A1 (zh) 用于生成量化神经网络的方法和装置
CN110516678B (zh) 图像处理方法和装置
CN109598344B (zh) 模型生成方法和装置
CN110009101B (zh) 用于生成量化神经网络的方法和装置
CN108509179B (zh) 用于检测人脸的方法、用于生成模型的装置
CN112085175A (zh) 基于神经网络计算的数据处理方法和装置
CN117894038A (zh) 一种图像中对象姿态生成方法和装置
CN110069195B (zh) 图像拖拽变形方法和装置
CN113610856B (zh) 训练图像分割模型和图像分割的方法和装置
KR20230076641A (ko) 부동-소수점 연산을 위한 장치 및 방법
CN111930670B (zh) 异构智能处理量化装置、量化方法、电子设备及存储介质
CN113361677B (zh) 神经网络模型的量化方法和装置
AU2020395435B2 (en) Flexible precision neural inference processing units
CN114462592A (zh) 模型训练方法、装置、电子设备及计算机可读存储介质
CN111709784A (zh) 用于生成用户留存时间的方法、装置、设备和介质
CN115829053B (zh) 模型运行策略确定方法、装置、电子设备以及存储介质
CN109670577B (zh) 模型生成方法和装置
US20230214705A1 (en) Model-agnostic input transformation for neural networks
CN112418405B (zh) 模型压缩方法和装置
CN110347506B (zh) 基于lstm的数据处理方法、装置、存储介质与电子设备
CN117523364A (zh) 数据处理装置及方法

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190705

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20190705

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20200812

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20200828

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20210115