(57)【要約】      （修正有）【課題】ニューラルネットワークのためのデータ処理において、目的関数のルックアップテーブルを構築せずに済むようにするデータ処理方法及び装置を提供する。【解決手段】方法は、ニューラルネットワークには活性化関数が設けられ、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換し、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップし、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを取得し、第２出力データを出力する。【選択図】図２
2020027611.tif 000002
【特許請求の範囲】
【請求項１】
少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理方法であって、
現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップと、
前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第１出力データをルックアップするステップと、
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップと、
前記第２出力データを出力するステップと、
を含むニューラルネットワークのためのデータ処理方法。
【請求項２】
前記目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、前記プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、
前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
前記プリセット関数の入力データとして、現在のデータを２で割った商を確定することを含む請求項１に記載の方法。
【請求項３】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータを２で割った商を確定することは、
現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得ることを含む請求項２に記載の方法。
【請求項４】
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップは、
前記第１出力データと１を合計して合計値を２で割った商を確定し、現在のデータを入力とした前記目的関数の第２出力データとすることを含む請求項２に記載の方法。
【請求項５】
合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記合計値を２で割った商を確定することは、
合計値の指数部から１を引くことで、合計値を２で割った商を得ることを含む請求項４に記載の方法。
【請求項６】
前記プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる請求項２〜５のいずれか一項に記載の方法。
【請求項７】
前記目的関数にはｔａｎｈ双曲線正接関数が含まれ、前記プリセット関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、
前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
前記プリセット関数の入力データとして、現在のデータと２の積を確定することを含む請求項１に記載の方法。
【請求項８】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータと２の積を確定することは、
現在のデータの指数部に１を足すことで、現在のデータと２の積を得ることを含む請求項７に記載の方法。
【請求項９】
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップは、
前記第１出力データと２の積を確定し、かつ積から１を引いた差を、現在のデータを入力とした前記目的関数の第２出力データとすることを含む請求項７に記載の方法。
【請求項１０】
前記第１出力データが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第１出力データと２の積を確定することは、
前記第１出力データの指数部に１を足すことで、前記第１出力データと２の積を得ることを含む請求項９に記載の方法。
【請求項１１】
少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理装置であって、
現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するように構成される第１変換ユニットと、
前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第１出力データをルックアップするように構成されるルックアップユニットと、
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するように構成される第２変換ユニットと、
前記第２出力データを出力するように構成される出力ユニットと、を含むニューラルネットワークのためのデータ処理装置。
【請求項１２】
前記目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、前記プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、
前記第１変換ユニットは、前記プリセット関数の入力データとして、現在のデータを２で割った商を確定するように構成される請求項１１に記載の装置。
【請求項１３】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第１変換ユニットはさらに、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得る請求項１２に記載の装置。
【請求項１４】
前記第２変換ユニットは、前記第１出力データと１を合計し、かつ合計値を２で割った商を確定し、現在のデータを入力とした前記目的関数の第２出力データとするように構成される請求項１２に記載の装置。
【請求項１５】
合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第２変換ユニットはさらに、合計値の指数部から１を引くことで、合計値を２で割った商を得るように構成される請求項１４に記載の装置。
【請求項１６】
前記プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる請求項１２〜１５のいずれか一項に記載の装置。
【請求項１７】
１つまたは複数のプログラムが格納されている記憶部材と、
実行すべき命令に従って命令スケジューリングを行うように構成されるスケジューリング部材と、
前記スケジューリング部材から発された命令を受信し、対応するプログラムを実行し、および／または前記スケジューリング部材から発された命令に従ってサブ命令を生成し、かつ生成したサブ命令を対応する専用実行部材に送信するように構成される少なくとも１つの汎用実行部材と、
前記少なくとも１つの汎用実行部材から送信されたサブ命令を受信し、対応するプログラムを実行するように構成される少なくとも１つの専用実行部材であって、１つまたは複数の専用実行部材は、対応するプログラムを実行する際に請求項１〜１０のいずれか一項に記載の方法を実現する少なくとも１つの専用実行部材と、を備える人工知能チップ。
【請求項１８】
コンピュータプログラムが格納されているコンピュータ可読媒体であって、
前記コンピュータプログラムが実行部材により実行される際に請求項１〜１０のいずれか一項に記載の方法を実現するコンピュータ可読媒体。
【請求項１９】
プロセッサ、記憶装置および少なくとも１つの請求項１７に記載の人工知能チップを備える電子機器。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、人工知能技術分野に関し、詳しくは、ニューラルネットワークのためのデータ処理方法および装置に関する。
【背景技術】
【０００２】
人工ニューラルネットワーク（Ａｒｔｉｆｉｃｉａｌ  Ｎｅｕｒａｌ  Ｎｅｔｗｏｒｋｓ，ＡＮＮｓ）は、動物ニューラルネットワーク行動特性を模倣し、分散並列情報処理を実行するアルゴリズム数学モデルである。通常、「ニューラルネットワーク」または「人工ニューラルネットワーク」と略称する。
【０００３】
ニューラルネットワークは多数のノード（またはニューロン）が互いに接続されてなる計算モデルである。各ノードは特定の出力関数を表し、活性化関数（ａｃｔｉｖａｔｉｏｎ  ｆｕｎｃｔｉｏｎ）と呼ばれる。２つおきのノード間の接続はそれぞれ当該接続を通過する信号への１つの加重値を表し、重みと呼ばれる。これは人工ニューラルネットワークの記憶に相当する。ネットワークの出力は、ネットワークの接続方法、重み値および活性化関数によって異なる。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
本発明の実施例はニューラルネットワークのためのデータ処理方法および装置を提供する。
【課題を解決するための手段】
【０００５】
第１態様において、本発明の実施例は、少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理方法であって、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップと、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップするステップと、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを取得するステップと、第２出力データを出力するステップと、を含むニューラルネットワークのためのデータ処理方法を提供する。
【０００６】
いくつかの実施例では、目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップは、プリセット関数の入力データとして、現在のデータを２で割った商を確定することを含む。
【０００７】
いくつかの実施例では、現在のデータは、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、現在のデータを２で割った商を確定することは、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得ることを含む。
【０００８】
いくつかの実施例では、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを取得するステップは、第１出力データと１を合計して合計値を２で割った商を確定し、現在のデータを入力とした目的関数の第２出力データとすることを含む。
【０００９】
いくつかの実施例では、合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、合計値を２で割った商を確定することは、合計値の指数部から１を引くことで、合計値を２で割った商を得ることを含む。
【００１０】
いくつかの実施例では、プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる。
【００１１】
いくつかの実施例では、目的関数にはｔａｎｈ双曲線正接関数が含まれ、プリセット関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するステップは、プリセット関数の入力データとして、現在のデータと２の積を確定することを含む。
【００１２】
いくつかの実施例では、現在のデータは、２を基数とする、仮数部と指数部からなる表現方式を有する浮動小数点数である場合、現在のデータと２の積を確定することは、現在のデータの指数部に１を足すことで、現在のデータと２の積を得ることを含む。
【００１３】
いくつかの実施例では、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを取得するステップは、第１出力データと２の積を確定し、かつ積から１を引いた差を、現在のデータを入力とした目的関数の第２出力データとすることを含む。
【００１４】
いくつかの実施例では、第１出力データが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第１出力データと２の積を確定することは、第１出力データの指数部に１を足すことで、第１出力データと２の積を得ることを含む。
【００１５】
第２態様において、本発明の実施例は、少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理装置であって、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数との間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するように構成される第１変換ユニットと、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップするように構成されるルックアップユニットと、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを取得するように構成される第２変換ユニットと、第２出力データを出力するように構成される出力ユニットと、を含むニューラルネットワークのためのデータ処理装置を提供する。
【００１６】
いくつかの実施例では、目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、第１変換ユニットは、プリセット関数の入力データとして、現在のデータを２で割った商を確定するように構成される。
【００１７】
いくつかの実施例では、現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第１変換ユニットはさらに、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得る。
【００１８】
いくつかの実施例では、第２変換ユニットは、第１出力データと１を合計し、かつ合計値を２で割った商を確定し、現在のデータを入力とした目的関数の第２出力データとするように構成される。
【００１９】
いくつかの実施例では、合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第２変換ユニットはさらに、合計値の指数部から１を引くことで、合計値を２で割った商を得るように構成される。
【００２０】
いくつかの実施例では、プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる。
【００２１】
いくつかの実施例では、目的関数にはｔａｎｈ双曲線正接関数が含まれ、プリセット関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、第１変換ユニットはさらに、プリセット関数の入力データとして、現在のデータと２の積を確定するように構成される。
【００２２】
いくつかの実施例では、現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第１変換ユニットはさらに、現在のデータの指数部に１を足すことで、現在のデータと２の積を得るように構成される。
【００２３】
いくつかの実施例では、第２変換ユニットはさらに、第１出力データと２の積を確定し、かつ積から１を引いた差を、現在のデータを入力とした目的関数の第２出力データとするように構成される。
【００２４】
いくつかの実施例では、第１出力データが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、第２変換ユニットはさらに、第１出力データの指数部に１を足すことで、第１出力データと２の積を得るように構成される。
【００２５】
第３態様において、本発明の実施例は、（３）１つまたは複数のプログラムが格納されている記憶部材と、実行すべき命令に従って命令スケジューリングを行うスケジューリング部材と、スケジューリング部材から発された命令を受信し、対応するプログラムを実行し、および／またはスケジューリング部材から発された命令に従ってサブ命令を生成し、かつ生成したサブ命令を対応する専用実行部材に送信するように構成される少なくとも１つの汎用実行部材と、少なくとも１つの汎用実行部材から送信されたサブ命令を受信し、対応するプログラムを実行するように構成される少なくとも１つの専用実行部材であって、１つまたは複数の専用実行部材は、対応するプログラムを実行する際に前記第１態様のいずれかの実施例に記載の方法を実施する少なくとも１つの専用実行部材と、を備える人工知能チップを提供する。
【００２６】
第４態様において、本発明の実施例は、コンピュータプログラムが格納されているコンピュータ可読媒体であって、コンピュータプログラムが実行部材により実行される際に前記第１態様のいずれかの実施例に記載の方法を実施するコンピュータ可読媒体を提供する。
【００２７】
第５態様において、本発明の実施例は、プロセッサ、記憶装置および少なくとも１つの前記第３態様に記載の人工知能チップを含む電子機器を提供する。
【００２８】
本発明の実施例により提供されたニューラルネットワークのためのデータ処理方法および装置は、現在のデータを取得する活性化関数が目的関数であることを確定した場合、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。また、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップすることができる。そして、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを得ることができる。さらに、第２出力データを出力することができる。つまり、プリセット関数を通じて目的関数を表現することで、目的関数のために対応するルックアップテーブルを構築せずに済むので、格納空間の占用量の削減に寄与できる。また、異なる活性化関数を計算するに当たって、ルックアップテーブルの変更作業を減らせ、全体の処理性能の向上にも有利である。
【図面の簡単な説明】
【００２９】
本発明の他の特徴、目的及び利点は、以下の図面を参照してなされる非限定的な実施例に係る詳細な説明を読むことにより、より明らかになるであろう。
【図１】図１は、本発明の一実施例を適用可能な例示的なシステムアーキテクチャを示す図である。
【図２】図２は、本発明のニューラルネットワークのためのデータ処理方法に基づく１つの実施例のフローチャートである。
【図３】図３は、本発明のニューラルネットワークのためのデータ処理方法に基づくもう１つの実施例のフローチャートである。
【図４】図４は、本発明のニューラルネットワークのためのデータ処理方法に基づく１つの適用シナリオの概略図である。
【図５】図５は、本発明のニューラルネットワークのためのデータ処理装置に基づく１つの実施例の構造概略図である。
【図６】図６は、本発明の人工知能チップに基づく１つの実施例の構造概略図である。
【図７】図７は、本発明の実施例を達成するための電子機器に適用されるコンピュータシステムの構造概略図である。
【発明を実施するための形態】
【００３０】
以下、図面及び実施例を参照しながら本発明をより詳細に説明する。ここで説明する具体的な実施例は、関連する発明を説明するためのものに過ぎず、当該発明を限定するものではないことを理解されたい。また、説明の便宜上、図面には発明に関連する部分のみが示されていることに留意されたい。
【００３１】
なお、本発明の実施例及び実施例における特徴は、矛盾を生じない限り、相互に組み合わせることができる。以下、図面及び実施例を参照しながら本発明を詳細に説明する。
【００３２】
図１は、本発明の実施例のニューラルネットワークのためのデータ処理方法および装置を適用できる例示的なシステムアーキテクチャ１００を示した。
【００３３】
図１に示すように、システムアーキテクチャ１００には、端末１０１，１０２，１０３、ネットワーク１０４およびサーバ１０５が含まれることが可能である。ネットワーク１０４は端末１０１，１０２，１０３とサーバ１０５の間に通信リンクの媒体を提供することができる。ネットワーク１０４には、有線、無線通信リンクまたは光ファイバーケーブルなど様々なタイプの接続が含まれることが可能である。
【００３４】
ユーザは端末１０１，１０２，１０３を使用しネットワーク１０４を通じてサーバ１０５とインタラクションを行うことで、情報のやり取りをすることができる。端末１０１，１０２，１０３には、モデル訓練・テストアプリケーション、モデル予測アプリケーション、Ｗｅｂブラウザ、ショッピングアプリケーションおよびインスタントメッセージングツールなど様々なクライアントアプリケーションがインストールされることができる。
【００３５】
ここにいう端末１０１，１０２，１０３とは、ハードウェアであってもよく、ソフトウェアであってもよい。端末１０１，１０２，１０３がハードウェアである場合、各種のディスプレイ付き電子機器であってもよい。スマートフォン、タブレット、スマートウォッチ、電子書籍リーダー、ＭＰ３プレイヤー（Ｍｏｖｉｎｇ  Ｐｉｃｔｕｒｅ  Ｅｘｐｅｒｔｓ  Ｇｒｏｕｐ  Ａｕｄｉｏ  Ｌａｙｅｒ  ＩＩＩ，動画専門家集団オーディオレイヤー３）、ラップトップコンピュータおよびデスクトップコンピュータなどを含むが、それらに限られない。端末１０１，１０２，１０３がソフトウェアである場合、上記の電子機器にインストールすることができる。それは複数のソフトウェアまたはソフトウェアモジュール（例えば、分散サービスの提供に使用する）であってもよく、単一のソフトウェアまたはソフトウェアモジュールとして実現されてもよい。ここでは特に限定しない。
【００３６】
サーバ１０５は、端末１０１，１０２，１０３にインストールされた各種のアプリケーションにサポートするバックエンドサーバなど様々なサービスを提供するサーバであってよい。バックエンドサーバは、ユーザのアプリケーションでの操作行為を解析処理し、処理結果（例えば、操作行為に対応する応答信号）を端末１０１，１０２，１０３にフィードバックすることができる。
【００３７】
また、サーバ１０５には人工知能チップ１０６が実装されてもよい。人工知能チップ（ＡＩ（Ａｒｔｉｆｉｃｉａｌ  Ｉｎｔｅｌｌｉｇｅｎｃｅ）チップ）１０６は、ＡＩ加速器またはコンピューティングカードとも呼ばれ、即ちもっぱら人工知能アプリケーションにおける大量のコンピューティングタスクを処理するためのモジュールである。例えば、サーバ１０５のＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ，中央処理装置）は、取得した訓練データおよび／またはテストデータを、例えばＰＣＩＥ（ｐｅｒｉｐｈｅｒａｌ  ｃｐｍｐｏｎｅｎｔ  ｉｎｔｅｒｃｏｎｎｅｃｔ  ｅｘｐｒｅｓｓ，高速シリアル・コンピュータ拡張バス規格）を通じて、人工知能チップ１０６に伝送することができる。この場合、人工知能チップ１０６はこれらのデータを利用してモデル訓練および／またはテストを行うことができる。また、例えば、ＣＰＵは取得した解析対象データを人工知能チップ１０６に伝送することができる。この場合、人工知能チップ１０６は分析対象データを訓練済みのモデルに入力し、当該モデルを利用して解析を行うことができる。
【００３８】
このように、ＣＰＵは人工知能チップ１０６の処理結果（例えば、訓練後のモデルデータ、モデルのテスト結果データまたはモデルの分析結果データなど）に基づき、さらなる処理解析を実行することができる。つまり、その他の非コンピューティングタスクはやはりサーバ１０５のＣＰＵで担当することができる。言うまでもなく、人工知能チップ１０６をもってサーバ１０５のＣＰＵに代わって一部の処理機能を実施することで、ＣＰＵの作業負荷を軽減することができ、サーバ１０５の全体の処理性能の向上に有利である。
【００３９】
ここで、サーバ１０５はハードウェアであってもよく、ソフトウェアであってもよい。サーバ１０５がハードウェアである場合、複数のサーバからなる分散サーバクラスタになることもできれば、単一のサーバになることもできる。サーバ１０５がソフトウェアである場合、複数のソフトウェアまたはソフトウェアモジュール（例えば、分散サービスの提供に使用する）になることもできれば、単一のソフトウェアまたはソフトウェアモジュールになることもできる。ここでは特に限定しない。
【００４０】
注意すべきは、本発明の実施例に提供されたニューラルネットワークのためのデータ処理方法は通常、人工知能チップ１０６によって実行される。したがって、ニューラルネットワークのためのデータ処理装置は通常、人工知能チップ１０６に内蔵されている。
【００４１】
言うまでもなく、図１における端末、ネットワーク、サーバおよび人工知能チップの個数はあくまでも例示的なものに過ぎない。実施のニーズに応じて、任意の個数の端末、ネットワーク、サーバおよび人工知能チップを有することができる。
【００４２】
次に、本発明のニューラルネットワークのためのデータ処理方法に基づく１つの実施例のフロー２００を示す図２を参照する。当該ニューラルネットワークのためのデータ処理方法には、次のようなステップが含まれることが可能である。
【００４３】
ステップ２０１：現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換する。
【００４４】
本実施例においては、ニューラルネットワークのためのデータ処理方法の実行主体（例えば、図１に示す人工知能チップ１０６）は、有線の接続方法または無線の接続方法を通じて、データを受信または取得することができる。また、これらのデータを利用して、それに格納されているニューラルネットワークモデルに訓練またはテストを行うことができる。また、それに格納されているニューラルネットワークモデルを利用して、これらのデータを解析処理することができる。ここで、ニューラルネットワークモデルは機械学習技術に基づいて構築された従来の各種の学習モデルであってよい。当該ニューラルネットワークモデルは、従来の各種のニューラルネットワーク構造（例えば、ＤｅｎｓｅＢｏｘ、ＶＧＧＮｅｔ、ＲｅｓＮｅｔ、ＳｅｇＮｅｔなど）を持つことができる。かつ、ニューラルネットワークモデルには通常、少なくとも１つのノード（即ち、活性化関数）が設けられている。
【００４５】
本実施例においては、実行主体は、現在のデータを取得する活性化関数が目的関数であるかどうかを確定することができる。すなわち、現在のデータを入力とすべき活性化関数が目的関数であるかどうかを確定する。かつ、現在のデータを取得する活性化関数が目的関数であることを確定した前提で、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。
【００４６】
言うまでもなく、ニューラルネットワークモデルを構築するに当たって、すべてのノードが採用した活性化関数は知られているものである。このように、実行主体は現在のデータが存在するノードに基づき、当該ノードの活性化関数が目的関数であるかどうかを判定することができる。または、実行主体は現在実行中のプログラムにおける活性化関数の関連コードに基づき、それが目的関数であるかどうかを判定することができる。ここで、現在のデータは、ニューラルネットワークモデルの初期入力データであってもよく、ニューラルネットワークモデルにおける任意のノードの入力データ、すなわち、前のノードの出力データであってもよい。ここで、目的関数とプリセット関数はニューラルネットワークモデルに使用される任意の２種の活性化関数であってもよい。例えば、非線形活性化関数ｓｉｇｍｏｉｄ、ｔａｎｈ（ｈｙｐｅｒｂｏｌｉｃ  ｔａｎｇｅｎｔ，双曲線正接）とｒｅｌｕ（ｒｅｃｔｉｆｉｅｄ  ｌｉｎｅａｒ  ｕｎｉｔ，正規化線形ユニット）における任意の２種が挙げられる。注意すべきは、目的関数とプリセット関数が確定された場合、二者間の変換関係は計算を通じて得ることができ、かつ通常に一定である。
【００４７】
本発明の一部の任意選択実施形態においては、目的関数は、
2020027611.tif 000003
であってもよい。プリセット関数は、
2020027611.tif 000004
であってよい。二者間の変換関係は、
2020027611.tif 000005
である。
【００４８】
これで分かるように、ｔａｎｈ（ｘ）関数の入力データはｓｉｇｍｏｉｄ（ｘ）関数の入力データの二倍である。この場合、現在のデータと２の積を、プリセット関数の入力データとして確定する。
【００４９】
言うまでもなく、コンピュータに伝送されるデータは通常、浮動小数点数である。かつ、浮動小数点数は通常、２を基数とする、仮数部と指数部とからなる表示方式を採用する。例えば、
ｘ＝Ｍ×２Ｅ
式中。式中、Ｍは仮数部を示し、正数であってもよく、負数であってもよい。Ｅは指数部を示す。また例えば、
ｘ＝（−１）ｓ×Ｍ×２Ｅ
式中、Ｓは符号ビットを示し、すなわち正または負である。この場合、仮数部Ｍは正数であってよい。
【００５０】
ここで、実行主体は計算式（例えば、浮動小数点数の掛け算）を利用して、現在のデータと２の積を直接算出することができる。しかし、かかる計算方法は通常に効率が低い。データの処理効率を高めるべく、観察を通じて分かるように、現在のデータと２の積については、現在のデータの指数部に１を足せばよい。すなわち、実行主体は現在のデータの指数部に１を足すことで、現在のデータと２の積を得ることができる。つまり、現在のデータから変換して取得したプリセット関数の入力データが
２ｘ＝Ｍ×２Ｅ＋１
または
（−１）ｓ×Ｍ×２Ｅ＋１
である。これで、大量のコンピューティングプロセスを減らせ、効率よく処理することができる。
【００５１】
ステップ２０２：プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップする。
【００５２】
本実施例においては、実行主体は格納されているプリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データをルックアップすることができる。ここのルックアップテーブルは通常、入力範囲内の活性化関数の近似出力値を記述するために使用することができる。すなわち、活性化関数曲線中のいくつかの点を取ることである。隣接する２つの点を連結すると、一本の直線を得ることができる。この直線の縦軸の値をもって、この２点間の横軸の関数値を近似的に代替することができる。かつ、近似値をできるだけ真実の値に近づけるために、通常、より多くの点を取って連結する必要がある。
【００５３】
従来技術においては、活性化関数ごとに、それに対応するルックアップテーブルを構築するのが一般的である。かつ、通常、ルックアップテーブルの方式を採用して、相応する活性化関数の計算を実施する。例えば、ｓｉｇｍｏｉｄ関数とｔａｎｈ関数が対応するルックアップテーブルは往々にして異なる。つまり、プリセット関数に対応するルックアップテーブルにおいて、入力データを横座標とした点を見つけて、かつ当該点の対応する縦座標を第１出力データとして確定する。
【００５４】
ステップ２０３：変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを得る。
【００５５】
本実施例においては、第１出力データを取得した後、実行主体は目的関数とプリセット関数の間の変換関係に基づき、変換により現在のデータを入力とした目的関数の第２出力データを得ることができる。
【００５６】
本実施例のいくつかの任意選択実施形態においては、目的関数がｔａｎｈ関数であり、プリセット関数がｓｉｇｍｏｉｄ関数である場合、実行主体は第１出力データと２の積を確定することができる。かつ、積から１を引いた差を、現在のデータを入力とした目的関数の第２出力データとすることができる。すなわち、
Ｔａｎｈ（ｘ）＝２×ｓｉｇｍｏｉｄ（２ｘ）−１
である。
【００５７】
ここで、実行主体は同様に、計算式を利用して第２出力データを得ることができる。任意選択的に、第１出力データが浮動小数点数であり、かつ浮動小数点数は２を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、実行主体は第１出力データの指数部に１を足すことで、第１出力データと２の積を得ることもできる。このようにすれば、浮動小数点数の掛け算が不要となり、処理効率の向上に有利である。最後に、浮動小数点数の引き算を通じて、積と１の差を計算することで、目的関数の第２出力データを得る。
【００５８】
ステップ２０４：第２出力データを出力する。
【００５９】
本実施例においては、ステップ２０３において変換により得られた目的関数の第２出力データに基づき、実行主体は当該第２出力データを出力することができる。ここで出力は、第２出力データを格納すること；第２出力データを、目的関数が現在存在しているノードから次のノードに伝送し、次のノードの活性化関数の入力データとすること；または、第２出力データ（例えば、モデルの出力とする）をその他の電子機器（例えば、図１に示すサーバ１０５）に伝送すること、の少なくとも一種を含むことができるが、それらに限られない。
【００６０】
注意すべきは、ハードウェアの設計上、一般的には、各ルックアップテーブルには１つの読み取りポートしかない。しかし、実際の運用プロセスにおいては、往々にして多くの並列計算がある。したがって、複数の計算パスが同時にルックアップテーブルを読み取る必要がある可能である。そのため、ノードごとに各種の活性化関数に対応するルックアップテーブルを格納する必要がある。こうすると、メモリ内の大量の格納空間を占用することになりかねない。しかし、本発明によれば、目的関数をプリセット関数で表現することにより、目的関数のルックアップテーブルを構築して格納する必要がなくなる。特に、比較的によく見られる活性化関数を目的関数とすることで、大量の格納空間を節約できる。さらに、よく見られる活性化関数をプリセット関数とすることで、異なる活性化関数を計算するに当たっては、ルックアップテーブルの取り替えの減少または取消に役立ち、全体の処理性能の向上に有利である。
【００６１】
本実施例におけるニューラルネットワークのためのデータ処理方法によれば、現在のデータを取得する活性化関数が目的関数であることを確定した前提で、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換することができる。次に、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力としたプリセット関数の第１出力データを見つけることができる。そして、変換関係と第１出力データに基づき、変換により現在のデータを入力とした目的関数の第２出力データを得ることができる。さらに、第２出力データを出力することもできる。つまり、プリセット関数を通じて目的関数を表現することで、目的関数のために対応するルックアップテーブルを構築せずに済むので、格納空間への占用の低減に寄与できる。さらに、異なる活性化関数を計算するに当たっては、ルックアップテーブルの変更プロセスを低減でき、全体の処理性能の向上に有利である。
【００６２】
本発明のニューラルネットワークのためのデータ処理方法に基づくもう１つの実施例のフロー３００を示す図３を参照する。当該ニューラルネットワークのためのデータ処理方法には、次のようなステップが含まれることが可能である。
【００６３】
ステップ３０１：現在のデータを取得する活性化関数がｓｉｇｍｏｉｄ関数であることに応じて、現在のデータを２で割った商を、ｔａｎｈ関数の入力データとして確定する。
【００６４】
本実施態様においては、ニューラルネットワークのためのデータ処理方法の実行主体（例えば、図１に示す人工知能チップ１０６）は、有線の接続方法または無線の接続方法を通じて、データを受信または取得することができる。かつ、これらのデータを利用して、それに格納されているニューラルネットワークモデルを訓練またはテストすることができる。それに格納されているニューラルネットワークモデルを利用して、これらのデータを解析処理することもできる。ただし、ニューラルネットワークモデルは、機械学習技術に基づいて構築された従来の各種の学習モデルであってもよい。かつ、ニューラルネットワークモデルにおいては通常、少なくとも１つのノード（すなわち、活性化関数）が設けられている。
【００６５】
本実施例においては、現在のデータを取得する活性化関数がｓｉｇｍｏｉｄ関数であるかどうかを確定することができる。かつ、現在のデータを取得する活性化関数がｓｉｇｍｏｉｄ関数であることを確定した前提で、現在のデータを２で割った商を、ｔａｎｈ関数の入力データとして確定することができる。この場合、二者間の変換関係は、
2020027611.tif 000006
である。
【００６６】
ここで、実行主体は計算式を利用して、商を直接確定することができる。例えば、現在のデータが浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、つまり、実行主体はかかる表示方式を採用して浮動小数点数を記録できる場合、実行主体は、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得ることができる。すなわち、
ｘ/２＝Ｍ×２Ｅ−１
または
（−１）ｓ×Ｍ×２Ｅ−１
である。したがって、浮動小数点数の割り算が不要となり、さらに処理効率を高めることができる。
【００６７】
ステップ３０２：ｔａｎｈ関数に対応するルックアップテーブルにおいて、入力データを入力としたｔａｎｈ関数の第１出力データをルックアップする。
【００６８】
本実施例においては、実行主体はｔａｎｈ関数に対応するルックアップテーブルにおいて、入力データを入力としたｔａｎｈ関数の第１出力データを見つけることができる。これは図２の実施例のステップ２０２における関連記述を参照すればよく、ここでは省略する。
【００６９】
言うまでもなく、ｔａｎｈ関数の出力は、ゼロを中心にしつつ、−１〜１の範囲内にある。つまり、ｔａｎｈ関数はゼロ点に関して対称である。すなわち、
ｔａｎｈ（−ｘ）＝−ｔａｎｈ（ｘ）
である。これで分かるように、ｔａｎｈ関数のルックアップテーブルの実施には完全なルックアップテーブルを必要としない。この場合、ｔａｎｈ関数に対応するルックアップテーブルには、正数入力範囲および／または負数入力範囲が含まれることが可能である。したがって、格納空間をさらに節約するために、実行主体には単にルックアップテーブルの正数部分（または負数部分）のみを格納することができる。負数部分（または正数部分）は、正数部分（または負数部分）を通じて計算して得ることができる。
【００７０】
ステップ３０３：第１出力データと１を合計し、かつ合計値を２で割った商を確定し、現在のデータを入力としたｓｉｇｍｏｉｄ関数の第２出力データとする。
【００７１】
本実施例においては、実行主体は、ステップ３０２において得られた第１出力データと１を合計することができる。かつ、合計値を２で割った商を、現在のデータを入力としたｓｉｇｍｏｉｄ関数の第２出力データとすることができる。ここで、合計値が浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表示方式を採用できる場合、実行主体は、まず、浮動小数点数の足し算を採用して計算により合計値を得ることができる。そして、合計値の指数部から１を引くことで、合計値を２で割った商を得ることができる。したがって、浮動小数点数の割り算が不要となり、処理効率の向上に有利である。
【００７２】
ステップ３０４：第２出力データを出力する。
【００７３】
本実施例においては、現在のデータを入力としたｓｉｇｍｏｉｄ関数の第２出力データを確定した場合、実行主体は当該第２出力データを出力することができる。これは図２の実施例のステップ２０４における関連記述を参照すればよく、ここでは省略する。
【００７４】
本実施例におけるニューラルネットワークのためのデータ処理方法によれば、よく見られるｓｉｇｍｏｉｄ活性化関数をよく見られるｔａｎｈ活性化関数で表現することができる。したがって、大量の格納空間を節約できるほか、これらの２種のよく見られる活性化関数を計算する際、ルックアップテーブルの変更が不要となる。したがって、ルックアップテーブルの変更回数を大幅に削減することができ、処理性能の大幅な向上に有利である。また、ｔａｎｈ活性化関数そのものの特徴により、単にルックアップテーブルの正数部分または負数部分のみを格納することができる。これにより、格納空間の占用をさらに低減することができる。
【００７５】
さらに、上記の各実施例のニューラルネットワークのためのデータ処理方法に基づく１つの適用シナリオを示す概略図である図４を参照する。図４の適用シナリオにおいては、サーバ１０５に人工知能チップＡと人工知能チップＢが設けられていることが可能である。ここで、人工知能チップＡは、主にニューラルネットワークモデルの訓練とテストに係るデータ処理に使用することができる。人工知能チップＢは、主にニューラルネットワークモデルの予測と分析に係るデータ処理に使用することができる。
【００７６】
ここで、ユーザは、端末１０１を利用してサーバ１０５にモデル訓練命令を発信することができる。サーバ１０５におけるＣＰＵは当該命令を受信した後に、ローカルメモリから訓練データとモデルデータを取得することができる。また、取得したデータを人工知能チップＡに伝送することができる。注意すべきは、ＣＰＵはクラウドなど他のデバイスから上記のデータを取得することもできる。または、これらのデータは人工知能チップＡに格納することもできる。したがって、ＣＰＵは端末１０１が送信したモデル訓練命令を受信した後に、人工知能チップＡへ相応の命令を発信することができる。
【００７７】
この場合、人工知能チップＡは、訓練データを利用して、モデルを訓練することができる。かつ、訓練プロセスにおいて実行可能なニューラルネットワークのためのデータ処理方法は、次のようなことが含まれる。
【００７８】
まず、現在のデータを取得する活性化関数が目的関数である場合、目的関数とプリセット関数との間の変換関係に基づいて現在のデータをプリセット関数の入力データに変換することができる。次に、入力データを入力とするプリセット関数の第１出力データは、プリセット関数に対応するルックアップテーブルで見つけられる。次に、変換関係と第１出力データに基づき、変換により現在のデータを入力とする目的関数の第２出力データを得ることができる。その後、第２出力データを現在のデータとし、かつ、モデル訓練終了までに、次のノードの活性化関数に入力することができる。
【００７９】
したがって、ＣＰＵは訓練されたモデルをメモリまたは人工知能チップＢに格納することができる。同時に、サーバ１０５は、端末１０１に訓練結果を記述するためのフィードバック情報を発信することができる。ここで、フィードバック情報には、モデル訓練終了、訓練後のモデルの格納場所、モデル訓練失敗、エラーの原因またはエラーの場所など、少なくとも一項が含まれることが可能である。
【００８０】
本適用シナリオにおいては、人工知能チップをもってサーバにおけるＣＰＵに代わってモデル訓練を行うことで、ＣＰＵの負荷を軽減することができる。同時に、人工知能チップは、上記の各実施例におけるニューラルネットワークのためのデータ処理方法を採用することで、モデルの訓練効率の向上に役立つ。したがって、サーバの全体の性能を高め、ユーザの待機時間を減らし、ユーザーエクスペリエンスを向上することができる。
【００８１】
次に、図５を参照する。上記の図面に示す方法の実施として、本発明はニューラルネットワークのためのデータ処理装置の１つの実施例を提供した。当該装置の実施例は、上記の各実施例に示す方法の実施例と対応する。当該装置は具体的に、様々な電子機器に適用することができる。
【００８２】
図５に示すように、本実施例のニューラルネットワークのためのデータ処理装置５００には、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換するように構成される第１変換ユニット５０１と、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力とするプリセット関数の第１出力データをルックアップするように構成されるルックアップユニット５０２と、変換関係と第１出力データに基づき、変換により現在のデータを入力とする目的関数の第２出力データを得るように構成される第２変換ユニット５０３と、第２出力データを出力するように構成される出力ユニット５０４と、が含まれることが可能である。ここで、ニューラルネットワークには少なくとも１つの活性化関数が設けられている。
【００８３】
本実施例のいくつかの任意選択実施形態においては、目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれることが可能である。プリセット関数には、ｔａｎｈ双曲線正接関数が含まれることが可能である。また、第１変換ユニット５０１は、現在のデータを２で割った商をプリセット関数の入力データとして確定するように構成されることができる。
【００８４】
任意選択的に、現在のデータが浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第１変換ユニット５０１はさらに、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得るように構成されることができる。
【００８５】
いくつかの実施例では、第２変換ユニット５０３は、第１出力データと１を合計し、かつ合計値を２で割った商を、現在のデータを入力とする目的関数の第２出力データとして確定するように構成されることができる。
【００８６】
さらに、合計値が浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第２変換ユニット５０３はさらに、合計値の指数部から１を引くことで、合計値を２で割った商を得るように構成されることができる。
【００８７】
例として、プリセット関数に対応するルックアップテーブルには、正数入力範囲および／または負数入力範囲が含まれることが可能である。
【００８８】
一部の適用シナリオにおいては、目的関数には、ｔａｎｈ双曲線正接関数が含まれることが可能である。プリセット関数には、ｓｉｇｍｏｉｄ非線形関数が含まれることが可能である。第１変換ユニット５０１はまた、現在のデータと２の積を、プリセット関数の入力データとして確定するように構成されることができる。
【００８９】
任意選択的に、現在のデータが浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第１変換ユニット５０１はさらに、現在のデータの指数部に１を足すことで、現在のデータと２の積を得るように構成されることができる。
【００９０】
いくつかの実施例では、第２変換ユニット５０３はまた、第１出力データと２の積を確定し、かつ積から１を引いた差を、現在のデータを入力とする目的関数の第２出力データとするように構成されることができる。
【００９１】
さらに、第１出力データが浮動小数点数であり、かつ浮動小数点数は、２を基数とする、仮数部と指数部とからなる表現方式を採用する場合、第２変換ユニット５０３はさらに、第１出力データの指数部に１を足すことで、第１出力データと２の積を得るように構成されることができる。
【００９２】
言うまでもなく、当該装置５００に記載する各ユニットは、図２と図３に説明する方法における各ステップに対応する。したがって、前文における方法について説明した操作、特徴および生じる有益な効果は同様に当該装置５００とそれに含まれるユニットにも適用し、ここでは省略する。
【００９３】
本発明の実施例はさらに人工知能チップを提供した。当該人工知能チップの構造は、本発明の人工知能チップの１つの実施例の構造概略図を示した図６を参照することができる。図６に示すように、本実施例における人工知能チップには、メモリ６０１と、スケジューリング部材６０２と、少なくとも１つの汎用実行部材６０３と、少なくとも１つの専用実行部材６０４と、が含まれることが可能である。
【００９４】
本実施例においては、メモリ６０１は情報格納機能を実施できる回路またはデバイスであってもよい。例えば、スタティックランダムアクセスメモリ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ−Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ，ＳＲＡＭ）、ランダムアクセスメモリ（ＲＡＭ）、メモリカード、セキュアデジタルメモリカード（Ｓｅｃｕｒｅ  Ｄｉｇｉｔａｌ  Ｍｅｍｏｒｙ  Ｃａｒｄ，ＳＤカード）またはフラッシュメモリカード（ＴＦカード，ｍｉｃｒｏＳＤとも呼ぶ）などが挙げられる。メモリ６０１には、１つまたは複数のプログラムが格納されていることが可能である。
【００９５】
スケジューリング部材６０２は命令スケジューリングおよび分配機能を実施できる回路またはデバイスであってもよい。スケジューリング部材６０２は、実行すべき命令を解析して、どういう操作を実行するか（即ち、何をするか）を判定することができる。その後、実行すべき命令を、対応する汎用実行部材６０３（すなわち、実行すべき命令により指示された操作を実行できる汎用実行部材６０３）に発信することができる。スケジューリング部材６０２は、プロセッサに内蔵されてもよいし、独立して設置されてもよい。
【００９６】
注意すべきは、実行すべき命令は、その他の電子機器または電子デバイス（図１に示すサーバ１０５におけるＣＰＵ）から人工知能チップに発信されたものであってもよく、人工知能チップが処理すべきデータに基づいて生成したものであってもよい。例えば、現在のデータを取得する活性化関数が目的関数であると確定した場合、上記の各実施例に記載するデータ処理方法の実行を示す実行すべき命令を生成する。
【００９７】
汎用実行部材６０３は、常用の操作機能を実行できる回路またはデバイスであってもよい。ここで、常用の操作機能は、順方向伝播アルゴリズム、逆方向伝播アルゴリズムなど人工知能アプリケーションに常用されるアルゴリズムを含むことができるが、それらに限られない。したがって、ユーザは、必要な操作機能に応じて、各汎用実行部材６０３を組み合わせることができるので、チップの開発時間の短縮と開発コストの削減に有利である。
【００９８】
ここで、常用の操作機能には、命令スケジューリングおよび分配機能が含まれることもできる。すなわち、汎用実行部材６０３は同様に、スケジューリング部材６０２が発した命令（すなわち、実行すべき命令）を解析することができる。その後、解析結果に基づき、少なくとも１つのサブ命令を生成することができる。かつ、生成された少なくとも１つのサブ命令をそれぞれ対応する専用実行部材６０４に発することができる。ここで、ある専用実行部材６０４が実行すべき命令による操作を実施できる場合、汎用実行部材６０３は実行すべき命令をサブ命令とすることができる。複数の専用実行部材６０４でなければ実行すべき命令による操作を実施できない場合、汎用実行部材６０３は複数のサブ命令を生成することができる。
【００９９】
つまり、汎用実行部材６０３は独立して相応する操作を実行することもできれば、スケジューリング部材６０２に協動して命令スケジューリングを行うこともできる。これで、スケジューリング部材６０２の作業負荷の軽減に役立ち、チップ全体の処理効率の向上に有利である。
【０１００】
本実施例においては、専用実行部材６０４は、所定の操作機能を実施できる回路またはデバイスであってもよい。いわゆる所定の操作機能は、常用の操作機能に関連することができる。すなわち、上記の各実施例に説明したデータ処理方法など人工知能アプリケーションに常用されないアルゴリズムが含まれることが可能である。したがって、専用実行部材６０４は往々にして、異なるユーザのニーズに応じて設計しなければならない。
【０１０１】
任意選択的に、少なくとも１つの専用実行部材６０４は、各汎用実行部材６０３が実施できる常用の操作機能を分解し、分解された操作機能により設計して得られたものであってもよい。この場合、各汎用実行部材６０３は、各専用実行部材６０４のいずれにも通信接続することができる。したがって、異なる専用実行部材６０４を組み合わせることで、より多くの操作機能を実施できるほか、実行部材の個数の削減にも有利である。
【０１０２】
注意すべきは、人工知能チップには、１つまたは複数のメモリ６０１が設けられることが可能である。かつ、それには、その他の各部材に必要となるプログラムなどのデータが格納されている。この場合、スケジューリング部材６０２、汎用実行部材６０３および専用実行部材６０４は、シリアルバスまたはデータインターフェースなどを介して、メモリ６０１からプログラムなどのデータを読み取ることができる。
【０１０３】
一部の適用シナリオにおいては、データの処理効率を高めるべく、スケジューリング部材６０２、汎用実行部材６０３および専用実行部材６０４にはそれぞれメモリ６０１が設けられることが可能である。かつ、異なる部材におけるメモリ６０１には、当該部件に必要となるデータを格納することが可能である。例えば、スケジューリング部材６０２におけるメモリ６０１には、命令スケジューリングプログラムが格納されることが可能である。
【０１０４】
本実施例における人工知能チップによれば、ディープラーニング訓練と予測をめぐっては、高密度のコンピューティングとアクセス・格納のニーズを満たせるので、ディープラーニングのシナリオにおける従来のＣＰＵ、ＧＰＵなどの汎用プロセッサの処理性能を向上させることができる。さらに、ディープラーニングにおけるデータ処理方法を最適化することで、ソフトウェア、ハードウェア全体の実行効率の向上に有利である。
【０１０５】
また、本発明の実施例に記載したユニットは、ソフトウェアの方式を通じても実施できれば、ハードウェアの方式を通じても実施できる。記載したユニットは、実行部材に内蔵してもよい。例えば、「第１変換ユニットと、ルックアップユニットと、第２変換ユニットと、出力ユニットとを含む実行部材」と記載してもよい。ただし、これらのユニットの名称は、特定の状況下で当該ユニットそのものに対する限定には当たらない。例えば、出力ユニットについては「第２出力データを出力するユニット」と記載してもよい。
【０１０６】
一方、本発明はさらに、コンピュータ可読媒体を提供した。当該コンピュータ可読媒体は、上記の実施例に説明した人工知能チップに含まれるものであってもよく、独立して存在し当該人工知能チップに内蔵されていないものであってもよい。上記のコンピュータ可読媒体には、１つまたは複数のプログラムが搭載されており、上記の１つまたは複数のプログラムが当該人工知能チップに実行されると、当該人工知能チップは、現在のデータを取得する活性化関数が目的関数であることに応じて、目的関数とプリセット関数の間の変換関係に基づき、現在のデータをプリセット関数の入力データに変換すること、プリセット関数に対応するルックアップテーブルにおいて、入力データを入力とするプリセット関数の第１出力データを見つけること、変換関係と第１出力データに基づき、変換により現在のデータを入力とする目的関数の第２出力データを得ること、第２出力データを出力すること、を実行する。
【０１０７】
注意すべきは、本発明のコンピュータ可読媒体は、コンピュータ可読信号媒体もしくはコンピュータ可読記憶媒体、またはこれらの任意の組み合わせであってもよい。コンピュータ可読記憶媒体は、例えば、電気、磁気、光学、電磁気、赤外線、または半導体システム、装置もしくはデバイス、またはそれらの任意の組み合わせであってもよいが、それらに限られない。コンピュータ可読記憶媒体のより具体的な例は、１本以上の導線による電気的接続、ポータブルコンピュータディスク、ハードディスク、ランダムアクセスメモリ（ＲＡＭ）、読み出し専用メモリ（ＲＯＭ）、消去可能プログラマブル読み出し専用メモリ（ＥＰＲＯＭまたはフラッシュメモリ）、光ファイバ、ポータブルコンパクトディスク読み出し専用メモリ（ＣＤ−ＲＯＭ）、光メモリ、磁気メモリ、またはこれらの任意の適切な組み合わせを含むが、それらに限られない。本発明において、コンピュータ可読媒体は、プログラムを含むかまたは格納している任意の有形の媒体であってもよい。当該プログラムは、命令実行システム、装置またはデバイスに使用されるか、またはそれらと組み合わせて使用されることができる。本発明において、コンピュータ可読信号媒体は、ベースバンド内の、または搬送波の一部として伝搬されるデータ信号を含むことができ、その中にコンピュータ可読プログラムコードが担持されている。かかる伝搬されるデータ信号は、様々な形態を採用することができ、電磁信号、光信号または上記の任意の適切な組み合わせを含むが、それらに限られない。コンピュータ可読信号媒体はさらに、コンピュータ可読記憶媒体以外の任意のコンピュータ可読媒体であってもよい。当該コンピュータ可読媒体は、命令実行システム、装置またはデバイスに使用されまたはそれらと組み合わせて使用されるためのプログラムを発信、伝搬または伝送することができる。コンピュータ可読媒体に含まれるプログラムコードは、任意の適切な媒体を使用して伝送することができる。当該任意の適切な媒体とは、無線、有線、光ケーブル、ＲＦなど、または上記の任意の適切な組み合わせを含むが、それらに限られない。
【０１０８】
以下、本発明の実施例を実現するための電子機器（例えば、図１に示す端末１０１，１０２，１０３またはサーバ１０５）に適用されるコンピュータシステム７００を示す構造概略図である図７を参照する。図７に示す電子機器はあくまでも一例に過ぎず、本発明の実施例の機能と使用範囲には如何なる制限をも与えない。
【０１０９】
図７に示すように、コンピュータシステム７００には、読み出し専用メモリ（ＲＯＭ）７０２に格納されているプログラムまたは記憶部７０８からランダムアクセスメモリ（ＲＡＭ）７０３にロードされたプログラムによって、様々な適当な動作と処理を実行することができる中央処理装置（ＣＰＵ）７０１が含まれている。ＲＡＭ７０３にはシステム７００の動作に必要な各種のプログラムとデータがさらに格納されている。ＣＰＵ７０１は人工知能チップ７１２を通じてデータの処理解析を行うことができる。ＣＰＵ７０１、ＲＯＭ７０２、ＲＡＭ７０３および人工知能チップ７１２は、バス７０４を介して互いに接続されている。入力／出力（Ｉ／Ｏ）インターフェース７０５もバス７０４に接続されている。
【０１１０】
タッチスクリーン、押しボタン、マウス、マイクロホン、カメラなどを含む入力部７０６と、陰極線管（ＣＲＴ）、液晶ディスプレイ（ＬＣＤ）などおよびスピーカなどを含む出力部７０７と、ハードディスクなどを含む記憶部７０８と、ＬＡＮカード、モデムなどのネットワークインタフェースカードを含む通信部７０９とは、Ｉ／Ｏインターフェース７０５に接続されている。通信部７０９は、インターネットなどのネットワークを介して通信処理を行う。ドライバ７１０も必要に応じて、Ｉ／Ｏインターフェース７０５に接続されている。磁気ディスク、光ディスク、光磁気ディスク、半導体メモリなどのリムーバブルメディア７１１は、そこから読み出されるコンピュータプログラムが必要に応じて記憶部７０８にインストールされるように、必要に応じてドライブ７１０に設置されている。
【０１１１】
特に、本発明に開示されている実施例によれば、前文においてフローチャートを参照しながら記載されたプロセスは、コンピュータソフトウェアプログラムとして実施することができる。例えば、本発明が開示した実施例には、コンピュータ可読媒体に格納されているコンピュータプログラムを含むコンピュータプログラム製品が含まれることが可能である。当該コンピュータプログラムには、フローチャートに示す方法を実行するためのプログラムコードが含まれる。かかる実施例において、当該コンピュータプログラムは通信部７０９を介して、ネットワークからダウンロードされてインストールされることが可能であり、および／または、リムーバブルメディア７１１からインストールされることが可能である。当該コンピュータプログラムは、人工知能チップ７１２により実行される場合、本発明の方法に限定された上記の機能を実行する。
【０１１２】
言うまでもなく、図面におけるフローチャートとブロック図は、本発明の各実施例に係るシステム、方法およびコンピュータプログラム製品により実現可能なシステムアーキテクチャ、機能および操作を示している。これについては、フローチャートまたはブロック図における各ブロックは、モジュール、プログラムセグメント、またはコードの一部を表すことができる。当該モジュール、プログラムセグメント、またはコードの一部には、所定のロジック機能を実施するための１つまたは複数の実行可能命令が含まれている。さらに注意すべきは、一部の代替となる実施態様においては、ブロックに示されている機能は図面に示されているものとは異なる順序で実行することも可能である。例えば、連続して表された２つのブロックは、実際にはほぼ並行して実行することができる。また、時には、逆の順序で実行することもできる。これは、係る機能によって決まる。さらに注意すべきは、ブロック図および／またはフローチャートにおけるすべてのブロック、ならびにブロック図および／またはフローチャートにおけるブロックの組み合わせは、所定の機能または操作を実行する専用のハードウェアベースのシステムで実施することもできれば、専用のハードウェアとコンピュータ命令との組み合わせで実施することもできる。
【０１１３】
上記の説明はあくまでも本発明の好ましい実施例および応用している技術的原理に対する説明にすぎない。当業者であれば、本発明に係る発明の範囲は、上記の技術的特徴の特定の組み合わせからなる技術的解決手段に限定されず、上記の発明構想から逸脱しない範囲内で上記の技術的特徴またはそれらの同等の特徴を任意に組み合わせてなる他の技術的解決手段をも含むことが理解できる。例えば、上記の特徴と本発明に開示された類似する機能を有する技術的特徴（それらに限られない）とを相互に置き換えてなる技術的解決手段が挙げられる。
【図１】
2020027611.tif 000007
【図２】
2020027611.tif 000008
【図３】
2020027611.tif 000009
【図４】
2020027611.tif 000010
【図５】
2020027611.tif 000011
【図６】
2020027611.tif 000012
【図７】
2020027611.tif 000013
【手続補正書】
【提出日】令和1年7月5日(2019.7.5)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理方法であって、
現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップと、
前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第１出力データをルックアップするステップと、
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップと、
前記第２出力データを出力するステップと、
を含むニューラルネットワークのためのデータ処理方法。
【請求項２】
前記目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、前記プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、
前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
前記プリセット関数の入力データとして、現在のデータを２で割った商を確定することを含む請求項１に記載の方法。
【請求項３】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータを２で割った商を確定することは、
現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得ることを含む請求項２に記載の方法。
【請求項４】
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップは、
前記第１出力データと１を合計して合計値を２で割った商を確定し、現在のデータを入力とした前記目的関数の第２出力データとすることを含む請求項２に記載の方法。
【請求項５】
合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記合計値を２で割った商を確定することは、
合計値の指数部から１を引くことで、合計値を２で割った商を得ることを含む請求項４に記載の方法。
【請求項６】
前記プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる請求項２〜５のいずれか一項に記載の方法。
【請求項７】
前記目的関数にはｔａｎｈ双曲線正接関数が含まれ、前記プリセット関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、
前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するステップは、
前記プリセット関数の入力データとして、現在のデータと２の積を確定することを含む請求項１に記載の方法。
【請求項８】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記現在のデータと２の積を確定することは、
現在のデータの指数部に１を足すことで、現在のデータと２の積を得ることを含む請求項７に記載の方法。
【請求項９】
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するステップは、
前記第１出力データと２の積を確定し、かつ積から１を引いた差を、現在のデータを入力とした前記目的関数の第２出力データとすることを含む請求項７に記載の方法。
【請求項１０】
前記第１出力データが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第１出力データと２の積を確定することは、
前記第１出力データの指数部に１を足すことで、前記第１出力データと２の積を得ることを含む請求項９に記載の方法。
【請求項１１】
少なくとも１つの活性化関数が設けられているニューラルネットワークのためのデータ処理装置であって、
現在のデータを取得する活性化関数が目的関数であることに応じて、前記目的関数とプリセット関数との間の変換関係に基づいて、現在のデータを前記プリセット関数の入力データに変換するように構成される第１変換ユニットと、
前記プリセット関数に対応するルックアップテーブルにおいて、前記入力データを入力とした前記プリセット関数の第１出力データをルックアップするように構成されるルックアップユニットと、
前記変換関係と前記第１出力データに基づいて、変換により現在のデータを入力とした前記目的関数の第２出力データを取得するように構成される第２変換ユニットと、
前記第２出力データを出力するように構成される出力ユニットと、を含むニューラルネットワークのためのデータ処理装置。
【請求項１２】
前記目的関数にはｓｉｇｍｏｉｄ非線形関数が含まれ、前記プリセット関数にはｔａｎｈ双曲線正接関数が含まれ、
前記第１変換ユニットは、前記プリセット関数の入力データとして、現在のデータを２で割った商を確定するように構成される請求項１１に記載の装置。
【請求項１３】
現在のデータが、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第１変換ユニットはさらに、現在のデータの指数部から１を引くことで、現在のデータを２で割った商を得る請求項１２に記載の装置。
【請求項１４】
前記第２変換ユニットは、前記第１出力データと１を合計し、かつ合計値を２で割った商を確定し、現在のデータを入力とした前記目的関数の第２出力データとするように構成される請求項１２に記載の装置。
【請求項１５】
合計値が、２を基数とする、仮数部と指数部とからなる表現方式を有する浮動小数点数である場合、前記第２変換ユニットはさらに、合計値の指数部から１を引くことで、合計値を２で割った商を得るように構成される請求項１４に記載の装置。
【請求項１６】
前記プリセット関数に対応するルックアップテーブルには正数入力範囲および／または負数入力範囲が含まれる請求項１２〜１５のいずれか一項に記載の装置。
【請求項１７】
１つまたは複数のプログラムが格納されている記憶部材と、
実行すべき命令に従って命令スケジューリングを行うように構成されるスケジューリング部材と、
前記スケジューリング部材から発された命令を受信し、対応するプログラムを実行し、および／または前記スケジューリング部材から発された命令に従ってサブ命令を生成し、かつ生成したサブ命令を対応する専用実行部材に送信するように構成される少なくとも１つの汎用実行部材と、
前記少なくとも１つの汎用実行部材から送信されたサブ命令を受信し、対応するプログラムを実行するように構成される少なくとも１つの専用実行部材であって、１つまたは複数の専用実行部材は、対応するプログラムを実行する際に請求項１〜１０のいずれか一項に記載の方法を実現する少なくとも１つの専用実行部材と、を備える人工知能チップ。
【請求項１８】
コンピュータプログラムが格納されているコンピュータ可読媒体であって、
前記コンピュータプログラムが実行部材により実行される際に請求項１〜１０のいずれか一項に記載の方法を実現するコンピュータ可読媒体。
【請求項１９】
プロセッサ、記憶装置および少なくとも１つの請求項１７に記載の人工知能チップを備える電子機器。
【請求項２０】
コンピュータプログラムであって、
前記コンピュータプログラムがプロセッサにより実行されると、請求項１〜請求項１０のいずれか一項に記載の方法を実現させるコンピュータプログラム。
【外国語明細書】
2020027611000001.pdf