(57)【要約】【課題】ニューラル・ネットワークのマッピング辞書を生成する方法が提供される。【解決手段】  本方法は、先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信することを含む。本方法は、デコードされたアクティベーション・アドレスを生成するために、エンコードされたアクティベーション・アドレスをデコードし、デコードされたウェイト・アドレスを生成するために、エンコードされたウェイト・アドレスをデコードすることを含む。更に、本方法は、デコードされたアクティベーション・アドレス及びデコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成することを含む。更に、本方法は、オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成することを含む。【選択図】  図1
2017201525.tif 000002
【特許請求の範囲】
【請求項１】
ニューラル・ネットワークのマッピング辞書を生成する方法であって：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を有する方法。
【請求項２】
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を更に有する請求項１に記載の方法。
【請求項３】
前記マッピング辞書を更新することが、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新することを含む、請求項２に記載の方法。
【請求項４】
学習速度を減らす工程を更に有する請求項３に記載の方法。
【請求項５】
オリジナル・アクティベーション・アドレスを生成することが、３２ビット浮動小数点値を生成することを含む、請求項１に記載の方法。
【請求項６】
前記エンコードされたアクティベーション・アドレスをデコードすることが、３２ビット浮動小数点値をデコードすることを含む、請求項１に記載の方法。
【請求項７】
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、現在のレイヤ及び次のレイヤで共有されるマッピング辞書と照合することを含む、請求項１に記載の方法。
【請求項８】
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、複数の３２ビット浮動小数点値を含むマッピング辞書と照合することを含む、請求項１に記載の方法。
【請求項９】
前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達する工程を更に有する請求項１に記載の方法。
【請求項１０】
１つ以上のプロセッサにより実行される場合に、前記１つ以上のプロセッサにオペレーションを実行させるように構成される命令を記憶する１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記オペレーションは：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を有する、コンピュータ読み取り可能な媒体。
【請求項１１】
前記オペレーションが：
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を更に有する請求項１０に記載のコンピュータ読み取り可能な媒体。
【請求項１２】
前記マッピング辞書を更新することが、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新することを含む、請求項１１に記載のコンピュータ読み取り可能な媒体。
【請求項１３】
前記オペレーションが、学習速度を減らす工程を更に有する、請求項１２に記載のコンピュータ読み取り可能な媒体。
【請求項１４】
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、現在のレイヤ及び次のレイヤで共有されるマッピング辞書と照合することを含む、請求項１０に記載のコンピュータ読み取り可能な媒体。
【請求項１５】
前記オペレーションが、前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達する工程を更に有する、請求項１０に記載のコンピュータ読み取り可能な媒体。
【請求項１６】
ニューラル・ネットワークのマッピング辞書を生成し、複数のレイヤを有するシステムであって、前記複数のレイヤの各レイヤは、少なくとも１つのストレージ・デバイスと処理要素と含み、各処理要素は：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を行うように構成されている、システム。
【請求項１７】
各処理要素は：
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を行うように構成されている、請求項１６に記載のシステム。
【請求項１８】
各処理要素は、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新するように構成されている、請求項１６に記載のシステム。
【請求項１９】
各処理要素は、前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達するように構成されている、請求項１６に記載のシステム。
【請求項２０】
前記ニューラル・ネットワークは、畳み込みニューラル・ネットワーク、回帰ニューラル・ネットワーク、及び、ロング・ショート・ターム・メモリ（ＬＳＴＭ）ニューラル・ネットワークのうち少なくとも何れかを含む、請求項１６に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本願で開示される実施形態は、ニューラル・ネットワークのためのマッピング辞書を生成することに関連する。
【背景技術】
【０００２】
ニューラル・ネットワーク分析は、生物学的なニューラル・ネットワークに端を発する分析のモデルを含み、複数の処理レイヤを経由する高度な抽象化をモデル化しようとする。しかしながら、ニューラル・ネットワーク分析は、多くの演算及び/又はネットワーク・リソースを消費してしまう。
【０００３】
本願の対象事項は、何れの欠点をも克服する実施形態には限定されず、また、上記のような環境でしか動作しない実施形態にも限定されない。むしろ、この背景技術の欄は、説明される実施形態が実現されてもよい技術分野の一例を示すために提供されているに過ぎない。
【発明の概要】
【０００４】
本開示による1つ以上の実施形態は、ニューラル・ネットワークのマッピング辞書を生成する方法を含む。一実施形態によれば、本方法は、先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信することを含む。本方法は、デコードされたアクティベーション・アドレスを生成するために、エンコードされたアクティベーション・アドレスをデコードすることを含む。更に、本方法は、デコードされたウェイト・アドレスを生成するために、エンコードされたウェイト・アドレスをデコードすることを含む。更に、本方法は、デコードされたアクティベーション・アドレス及びデコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成することを含む。更に、本方法は、オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成することを含む。
【０００５】
実施形態の目的及び効果は、特許請求の範囲に特に示される要素、特徴及び組み合わせにより少なくとも実現及び達成される。上記の一般的な説明及び以下の詳細な説明は何れも例示的な具体例であり、限定ではない。
【図面の簡単な説明】
【０００６】
添付図面を利用することにより、追加的な具体性及び詳細事項とともに、具体的な実施形態が記述及び説明される。
【０００７】
【図１】本開示の一形態による深層学習システムを示す図。
【０００８】
【図２】深層学習システムのマッピング辞書を生成する方法例のフローチャートを示す図。
【０００９】
【図３】深層学習システムのレイヤにおける辞書を生成する一例を示す図。
【００１０】
【図４】例示的なコンピューティング・デバイスのブロック図。
【発明を実施するための形態】
【００１１】
ニューラル・ネットワーク分析は、分析のための入力を受信し、それらの入力を1つ以上の中間層に通してデータ構造分析(例えば、データ構造に関する分析)を実行することを含む。何れかの層のデータ構造分析の出力は、更なるデータ構造分析を実行するために隣接する層に渡され、以後同様に、ニューラル・ネットワーク分析全体についての処理が完了して結果が出力されるまで、処理が続く。そのようなニューラル・ネットワーク分析は、中間層の入力及び出力の全てを保存すること、及び、中間層の間でデータを伝送することの双方においてリソースを消費する。
【００１２】
「深層機械学習」、「深層構造化学習」、「階層化学習」又は「ディープ・ラーニング」等とも言及される深層学習(Deep  learning：DL)は、モデル・アーキテクチャを利用することでデータの高度な抽象化をモデル化しようとする一群のアルゴリズムに基づく機械学習の一種である。
【００１３】
実際のDLアプリケーションでは、データの次元が極めて大きいので、アーキテクチャは、トレーニングのための十分な時間及び高度な複雑さを備える大規模なネットワークを要する。アーキテクチャのサイズを削減し、効率的なトレーニングを達成するために、従来は、非監視クラスタリング法を入力(例えば、中間的なアクティベーション及びウェイト)に適用する必要がある。かくて、その恩恵は通信帯域幅/メモリ容量条件の緩和、及び、ハードウェア実現手段の簡易化を含む。
【００１４】
従来、データ分布検査方法(例えば、ロイドのアルゴリズムにより実行されるオフラインK平均(offline  K-means  implemented  by  Lloyd’s  Algorithm))が、マッピング辞書を生成するために使用されている。これらの方法は、時間がかかる上にハードウェア・フレンドリーではないことが判明している。更に、従来のクラスタリング法(例えば、ロイドのK平均アルゴリズム)を利用することで最適な辞書を生成すること困難であり、その理由は、従来のアルゴリズムは大量のデータ及びリソースを必要とするからである。
【００１５】
本開示はマッピング辞書を効率的に生成することに関連する。一実施形態は、マッピング辞書を生成する方法(例えば、適応的なオフライン方法)を含み、マッピング辞書は、中間的なアクティベーション及びウェイトを各々の層で自動的にエンコードするために使用される。一実施形態によれば、マッピング辞書は、例えば、中間的なアクティベーションを検査し、クラスタリングし、マッピング辞書を各々の反復で更新することにより、順に、層毎に生成されてもよい。本開示の実施形態は、簡易に実現され、ハードウェア・フレンドリーであり且つ効率的に演算され、それ故に、モバイルの埋め込みデバイスに関連するメモリ/通信条件を達成する。本願で説明される実施形態は、様々なDL技術とともに利用され、例えば僅かな例を挙げれば、畳み込みニューラル・ネットワーク、回帰ニューラル・ネットワーク、ロング・ショート・ターム・メモリ(long  short  term  memory：LSTM)等のような技術とともに利用されてよい。
【００１６】
ニューラル・ネットワークのマッピングは、2つの異なる種類の辞書を含み、ある種の辞書は中間的なアクティベーションのために使用され、他の種類の辞書はウェイトのために使用される。中間的なアクティベーションのための辞書は、本願で開示される1つ以上の実施形態に応じて生成される。ウェイト辞書は、オフラインK平均(例えば、ロイドのアルゴリズム)により生成される。
【００１７】
本開示で使用されるように、「辞書(又はディクショナリ)」は、あるアイテムを他のものに関連付ける1つ以上の「エントリ」を含む任意のコンピュータ読み取り可能なデータを含んでよい。例えば、辞書のエントリは、簡易な電子メッセージ(例えば、5ビット値)を、より複雑なデータ構造(例えば、32ビット浮動小数点値)に関連付けてもよい。辞書は、エントリの何れかによる問い合わせ(例えば、簡易な電子メッセージ)を受け、出力として関連するエントリを受信する。例えば、簡易な電子メッセージによるクエリが更に複雑なデータ構造の出力という結果となり、複雑なデータ構造によるクエリが簡易な電子メッセージの出力という結果となってもよい。
【００１８】
図1は深層学習システム100の一部分についての一形態を示す。より具体的には、図1は信号学習システム100の2つの層であるレイヤi及びレイヤi+1を示す。レイヤiは、(図1には示されていない)レイヤi-1で生成されたエンコードされたアクティベーション・アドレス「Ei-1」を含むメモリ102と、レイヤiで生成されるエンコードされたウェイト・アドレス「Wei」を含むメモリ104とを含む。更に、システム100は処理要素105を含む。システム100は、辞書「Dicti-1」106と、辞書「Dict  wi」108と、コンピューティング・デバイス110と、照合ユニット112と、距離計算ユニット「Disti-1」114と、辞書「Dicti」116とを含む。
【００１９】
レイヤi+1は、エンコードされたアクティベーション・アドレス「Ei」を含むメモリ202と、エンコードされたウェイト・アドレス「Wei+1」を含むメモリ204とを含む。更に、システム100は処理要素205を含む。システム100は、辞書「Dict  wi+1」208と、コンピューティング・デバイス210と、照合ユニット212と、距離計算ユニット「Disti」214と、辞書「Dicti」216とを含む。
【００２０】
辞書「Dicti」116は、予めトレーニングされたマッピング辞書(例えば、アクティベーションのための辞書)を含み、その辞書は隣接するレイヤ同士の間で(例えば、i番目のレイヤと(i+1)番目のレイヤとの間で)共有されてもよい。辞書「Dicti」116は複数の(例えば、64個に至る)32ビット浮動小数点数を含んでよい。辞書「Dict  wi」108は、予めトレーニングされたマッピング辞書(例えば、ウェイトのための辞書)を含み、複数の(例えば、64個に至る)32ビット浮動小数点数を含んでよい。
【００２１】
システムの予定されている「推論」動作モードの最中に、辞書「Dicti」116及び辞書「Dict  wi」108はそれぞれのレイヤについて生成されてもよく、辞書「Dicti」116は隣接するレイヤ同士の間で(例えば、レイヤi及びi+1の間で)共有されてもよい。
【００２２】
辞書「Dicti-1」106はエンコードされたアクティベーション・アドレス「Ei-1」を受信し、辞書「Dict  wi」108はエンコードされたウェイト・アドレス「Wei」を受信する。辞書「Dicti-1」106はエンコードされたアクティベーション・アドレス「Ei-1」をデコードされたアクティベーション「A’i-1」にデコードし、辞書「Dict  wi」108はエンコードされたウェイト「Wei」をデコードされたウェイト・アドレス「Wi」にデコードする。デコードされたアクティベーション「A’i-1」は、例えば、アドレスを辞書にマッピングすることにより生成される32ビット浮動小数点値を含む。
【００２３】
デコードされたアクティベーション「A’i-1」及びデコードされたウェイト「Wi」は、深層学習演算のためにコンピューティング・デバイス110により受信される。コンピューティング・デバイス110の出力「Ai」(例えば、i番目のレイヤにおける32ビット浮動小数点値であるオリジナルのアクティベーション)は、マッチング・ユニット112によりそれを辞書「Dicti」116と照合することにより、エンコードされたアクティベーション・アドレス「Ei」としてエンコードされる。更に、以下において詳細に説明されるように、距離計算ユニット「Disti-1」により判定される距離(辞書更新のために選択される辞書セントロイド(dictionary  centroids)までの距離)に応じて、辞書「Dicti」116は更新されてもよい。エンコードされたアクティベーション・アドレス「Ei」は、マッチング・ユニット112により送信され、次のレイヤ(例えば、レイヤi+1)のメモリ・ブロック202に保存される。
【００２４】
更に、辞書「Dicti」116はエンコードされたアクティベーション・アドレス「Ei」を受信し、辞書「Dict  wi+1」208はエンコードされたウェイト・アドレス「Wei+1」を受信する。辞書「Dicti」116はエンコードされたアクティベーション・アドレス「Ei」をデコードされた・アクティベーション「A’i」にデコードし、辞書「Dict  wi+1」208はエンコードされたウェイト「Wei+1」をデコードされたウェイト・アドレス「Wi+1」にデコードする。デコードされたアクティベーション「A’i」は、例えば、アドレスを辞書にマッピングすることにより生成される32ビット浮動小数点値を含む。
【００２５】
デコードされたアクティベーション「A’i」及びデコードされたウェイト「Wi+1」は、深層学習演算のためにコンピューティング・デバイス210により受信される。コンピューティング・デバイス210の出力「Ai+1」(例えば、i+1番目のレイヤにおける32ビット浮動小数点値であるオリジナルのアクティベーション)は、マッチング・ユニット212によりそれを辞書「Dicti+1」216と照合することにより、エンコードされたアクティベーション・アドレス「Ei+1」としてエンコードされる。更に、以下において詳細に説明されるように、距離計算ユニット「Disti」214により判定される距離(辞書更新のために選択される辞書セントロイドまでの距離)に応じて、辞書「Dicti+1」216は更新されてもよい。エンコードされたアクティベーション・アドレス「Ei+1」は、マッチング・ユニット212により送信され、次のレイヤ(例えば、レイヤi+2)のメモリ・ブロック302に保存される。
【００２６】
予定されている「辞書生成」モードの間に、全ての辞書が初期化されてもよい(例えば、推論範囲及びビット数に関して一様な割り振りが為されてもよい)。例えば、判定される範囲が「-2」ないし「1」であり、セントロイドの所定数が「5」である場合、初期の辞書は[-2,  -1.4,  -0.8,  -0.2,  0.4]であり、隣接するセントロイド間の距離は全て同じであってもよい。例えば、一例では、アクティベーション辞書Dictは、(例えば、1という分散とともに1e-3のスケールで乱数を割り振ることにより)ランダム形式で初期化されてもよい。別の実施形態において、初期化のために、別の所定のトレーニングされた辞書が使用されてもよい。更に、例えば、epoch  e=1,  Layer  i=1及び反復j=1に関し、以下の処理が実行されてもよい：
1)データ・バッチjとともにレイヤiへ計算を進めること；
2)レイヤiについて対応する中間的なアクティベーションを収集すること；
3)各々のオリジナルのアクティベーション・アドレスから、各クラスタの中で最も近い辞書エントリまでの平均距離を計算すること；
4)計算された平均距離と更新(「学習」)レートとに基づいて辞書を更新すること；及び
5)更新レートを削減すること。
更に、全体のデータセットがシャッフルされてもよい。
【００２７】
図2は、本開示の少なくとも1つの形態による、マッピング辞書を生成するための方法例のフローチャートを示す。方法250は、適切な任意のシステム、装置又はデバイスによって実行されてよい。例えば、図1のシステム100又はそのうちの1つ以上のコンポーネントは、方法250に関連する1つ以上のオペレーションを実行してもよい。これら及び他の実施形態において、コンピュータ読み取り可能な媒体に保存されるプログラム命令は、方法250のうちの1つ以上のオペレーションを行うように実行されてよい。
【００２８】
ブロック252において、1つ以上の辞書が初期化され、学習パラメータが設定される。例えば、図1に関し、辞書106、108、116、208及び216のうちの1つ以上が初期化されてもよい。より具体的には、一例として、アクティベーション辞書Dictがランダム形式で初期化されてもよい(例えば、1という分散で1e-3のスケールで乱数を割り振ることにより為されてもよい)。別の実施形態では、初期化のために、別の所定のトレーニングされた辞書が使用されてもよい。更に、例えば、学習レートβ、エポック数M、レイヤ数N及び反復数Lが設定されてもよい。
【００２９】
ブロック254において、エンコードされたアクティベーション・アドレス及びエンコードされたウェイト・アドレスが受信される。エンコードされたアクティベーション・アドレス及びエンコードされた・ウェイト・アドレスはデコードされ、デコードされたアクティベーション・アドレス及びデコードされたウェイト・アドレスに基づいて(例えば、深層学習計算により)オリジナルのアクティベーションが生成され、方法200はブロック256に進む。
【００３０】
ブロック256において、現在のレイヤの辞書(例えば、辞書Dicti)に従って、1つ以上のクラスタが生成され、方法200はブロック258に進む。例えば、現在の各エントリは、受信したオリジナル・アクティベーションにリンクされる(例えば、各々のオリジナル・アクティベーションは、オリジナル・アクティベーションに最も近い値の辞書エントリにリンクされる)。クラスタは、共通の辞書エントリにリンクされる1つ以上の受信したオリジナル・アクティベーションを含んでよい。
【００３１】
ブロック258において、各々のオリジナル・アクティベーションと最も近い辞書エントリ(すなわち、その「リンクされた」辞書エントリ)との間の距離が計算され、方法200はブロック259に進む。
【００３２】
ブロック259において、各クラスタの平均距離が計算され、方法200はブロック260に進む。
【００３３】
ブロック260において、現在の辞書(例えば、辞書Dict)が更新され、方法200はブロック262に進む。例えば、現在の辞書は、平均距離に基づいて、おそらくは、学習レートにも基づいて、更新されてもよい(例えば、Dicti(t0+1)=Dicti(t0)+βDisti))。他の様々な実行順序又は更新の数式藻適切に使用されてよく、例えば、計算された距離の符合に基づいて辞書エントリを更新してもよいことに、留意を要する。
【００３４】
ブロック262において、バッチがj=Lであるか否かについての判断が為される。J=Lであることが確認されると、方法250はブロック264に進む。j≠Lであることが確認されると場合、J+=1となり、方法250はブロック254に戻る。
【００３５】
ブロック264において、現在のレイヤがi=Nであるか否かについての判断が為される。i=Nであることが確認されると、方法250はブロック266に進む。i≠Nであることが確認されると、i+=1となり、j=1にリセットされ、方法250はブロック254に戻る。
【００３６】
ブロック266において、フォワード推論(forward  inference)及びレコード推論(record  inference)が判定され、方法250はブロック268に進む。「フォワード推論」は(例えば、最初のレイヤから始まって最後のレイヤへ向かう)フォワード計算を含む。ネットワークの終わりに、精度が判定されてもよい。精度が閾値を上回る場合に、学習プロセスは終わってもよい。
【００３７】
ブロック268において、Epoch=M又は収束したか否かについての判断が為される。Epoch=M又は収束していると判断された場合(例えば、アクティベーション辞書は実質的に変更されない場合)、方法250はブロック270に進む。Epoch≠Mかつ収束していないと判断された場合、Epoch+=1,i=1,j=1となり、方法250はブロック254に戻る。
【００３８】
ブロック270において、1つ以上のアクティベーション・セントロイド辞書が使用される。例えば、アクティベーション・セントロイド辞書は浮動小数点数の集合である(例えば、レイヤ1->[0.02,0.3,1.2,5.6]，レイヤ2->[6.3,0.2,9.9,4.5]等)。辞書の数はニューラル・ネットワークのレイヤの数に等しくてもよい。辞書は、ウェイトを含まず、中間アクティベーションについてのみであってもよい。
【００３９】
例えば、3層アーキテクチャにおいて、方法は、第1レイヤに対するフォワード計算を行うこと、及び、第1レイヤの中間アクティベーションを収集することを含んでよいことに留意を要する。その後、本方法は、(例えば、第1レイヤの後にある)第2レイヤに対するフォワード計算を行うこと、及び、第2レイヤの中間アクティベーションを収集することを含んでよい。その後、本方法は、(例えば、第1及び第2レイヤの後にある)第3レイヤに対するフォワード計算を行うこと、及び、第3レイヤの中間アクティベーションを収集することを含んでよい。
【００４０】
本開示の範囲から逸脱することなく、方法250に対して修正、追加又は省略が施されてもよい。例えば、方法250のオペレーションは異なる順序で実現されてもよい。更に、説明されたオペレーション及びアクションは、一例として与えられているに過ぎず、開示された実施形態の本質から逸脱することなく、オペレーション及びアクションのうちの何れかは、選択的であってもよいし、より少数のオペレーション及びアクションに統合されてもよいし、或いは、追加的なオペレーション及びアクションに拡張されてもよい。
【００４１】
図3は、或るレイヤ(例えば、レイヤi；図1)において辞書を生成する具体例を示す。図3は、エンコードされたアクティベーション・アドレス「Ei-1」302と、エンコードされたウェイト・アドレス「Wei」304と、辞書「Dicti-1」306と、辞書「Dictwi」308と、デコードされたアクティベーション「A’i-1」310と、デコードされたウェイト・アドレス「Wi」312と、オリジナル・アクティベーション「Ai」314と、距離マトリクス「Disti」316と、辞書「Dicti」318と、エンコードされたアクティベーション・アドレス「Ei」320とを示す。
【００４２】
予定されているオペレーションの間に、エンコードされたアクティベーション・アドレスは、辞書「Dicti-1」306により、デコードされたアクティベーション「A’i-1」310にデコードされる。更に、エンコードされたアドレス「Wei」304は、辞書「Dictwi」308により、デコードされたウェイト・アドレス「Wi」312にデコードされる。更に、デコードされたアクティベーション「A’i-1」310とデコードされたアドレス「Wi」312とは、オリジナル・アクティベーション「Ai」314を生成するために使用され、「Ai」314は、辞書「Dicti」318との照合により、エンコードされたアクティベーション・アドレス「Ei」320にエンコードされる。
【００４３】
更に、各々のオリジナル・アクティベーションと辞書「Dicti」318のうちの最も近いエントリとの間の距離が判定される。距離マトリクス「Disti」316に関し、第1クラスタ「00」は、辞書「Dicti」318の第1エントリ(「0.2」)の、それぞれ関連するアクティベーション「Ai」314に対する距離値(又は差分値)を含む。より具体的に言えば、例えば、クラスタ「00」の場合、0.24と0.2との間の距離＝0.04、0.3と0.2との間の距離＝0.1、058と0.2との間の距離＝0.38、0.48と0.2との間の距離＝0.28、及び、0.3と0.2との間の距離＝0.1が示されている。従って、辞書「Dicti」318の第1エントリ(「0.2」)は、0.18ないし0.38により調整されてもよい。
【００４４】
更に、辞書「Dicti」318は距離マトリクス「Dicti」316に基づいて更新されてもよい。より具体的に言えば、例えば、辞書「Dicti」318のエントリは、エントリとクラスタにおけるそれぞれ関連するアクティベーションとの間の平均距離に基づいて更新されてもよい。
【００４５】
図4は、本開示の少なくとも1つの実施形態による例示的なコンピューティング・デバイス400のブロック図である。例えば、図1のシステム100はコンピューティング・デバイス400として実現されてもよい。コンピューティング・デバイス400は、デスクトップ・コンピュータ、ラップトップ・コンピュータ、サーバー・コンピュータ、タブレット・コンピュータ、モバイル・フォン、スマートフォン、パーソナル・ディジタル・アシスタント(PDA)、eリーダー・デバイス、ネットワーク・スイッチ、ネットワーク・ルータ、ネットワーク・ハブ、その他のネットワーク・デバイス、或いは、その他の適切なコンピューティング・デバイスを含んでよい。
【００４６】
コンピューティング・デバイス400は、プロセッサ410、ストレージ・デバイス420、メモリ430、及び、通信コンポーネント440を含んでよい。プロセッサ410、ストレージ・デバイス420、メモリ430、及び、通信コンポーネント440は、各々のコンポーネントが他のコンポーネントと通信するように、全て通信可能に結合されていてもよい。コンピューティング・デバイス400は、本開示で説明される任意のオペレーションを実行してよい。
【００４７】
一般に、プロセッサ410は、適切な任意の専用又は汎用のコンピュータ、コンピューティング・エンティティ、又は、様々なコンピュータ・ハードウェア又はソフトウェア・モジュールを含むプロセシング・デバイスを含んでもよく、及び、何らかの適用可能なコンピュータ読み取り可能な記憶媒体に保存される命令を実行するように構成されてよい。例えば、プロセッサ410は、マイクロプロセッサ、マイクロコントローラ、ディジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールド・プログラマブル・ゲート・アレイ(FPGA)を含んでもよく、或いは、プログラム命令を解釈及び/又は実行し及び/又はデータを処理する他の任意のディジタル又はアナログ回路を含んでもよい。図4では単独のプロセッサとして示されているが、プロセッサ410は、本開示で説明される任意の数のオペレーションを個別的又は集合的に実行するように構成される任意の数のプロセッサを含んでもよい。
【００４８】
一実施形態において、プロセッサ410は、ストレージ・デバイス420、メモリ430、又は、ストレージ・デバイス420及びメモリ430に保存されるプログラム命令を解釈及び/又は実行し、及び/又は、そこに保存されるデータを処理する。一実施形態において、プロセッサ410は、プログラム命令をストレージ・デバイス420から取り出し、プログラム命令をメモリ430にロードする。プログラム命令がメモリ430にロードされた後に、プロセッサ410はプログラム命令を実行する。
【００４９】
例えば、一実施形態において、プロセス・チェーンのうちの1つ以上の処理オペレーションは、プログラム命令としてデータ・ストレージ420に含まれてもよい。プロセッサ410は、1つ以上の処理オペレーションのプログラム命令を取り出し、処理オペレーションのプログラム命令をメモリ430にロードする。処理オペレーションのプログラム命令がメモリ430にロードされた後に、プロセッサ410はプログラム命令を実行し、それにより、コンピューティング・デバイス400は、プログラム命令で意図されているように処理オペレーションに関連するオペレーションを実現する。
【００５０】
ストレージ・デバイス420及びメモリ430は、そこに保存されるコンピュータ実行可能な命令又はデータ構造を担う又は有するコンピュータ読み取り可能な記憶媒体を含んでよい。そのようなコンピュータ読み取り可能な記憶媒体は、プロセッサ410のような汎用又は専用のコンピュータによりアクセスされる利用可能な任意の媒体を含んでよい。限定ではない具体例として、そのようなコンピュータ読み取り可能な記憶媒体は、有形の非一時的なコンピュータ読み取り可能な記憶媒体を含み、その記憶媒体は、RAM、ROM、EEPROM、CD-ROM又は他の光ディスク・ストレージ、磁気ディスク・ストレージ又は他の磁気ストレージ・デバイス、フラッシュ・メモリ・デバイス(例えば、ソリッド・ステート・メモリ・デバイス)を含み、或いは、コンピュータ実行可能な命令又はデータ構造の形式で所望のプログラム・コードを担う又は保存するために私用され且つ汎用又は専用のコンピュータによりアクセスされる他の任意の記憶媒体を含んでよい。上記に列挙したものの組み合わせも、コンピュータ読み取り可能な記憶媒体の範囲内に含まれてよい。コンピュータ実行可能な命令は、例えば、所定のオペレーション又はオペレーションのグループの実行を、プロセッサ410に引き起こすように構成される命令及びデータを含んでよい。
【００５１】
一実施形態では、ストレージ・デバイス420及び/又はメモリ430は、深層学習システムに関連するデータを保存する。例えば、ストレージ・デバイス420及び/又はメモリ430は、エンコードされたアクティベーション・アドレス、エンコードされたウェイト・アドレス、及び/又は、1つ以上の辞書を保存する。
【００５２】
通信コンポーネント440は、コンピューティング・デバイス400と他の電子デバイスとの間の通信を許容又は促進するように構成される任意のデバイス、システム、コンポーネント又はコンポーネントの集まりを含んでよい。例えば、通信コンポーネント440は、限定ではないが、モデム、(無線又は有線)ネットワーク・カード、赤外線通信デバイス、光通信デバイス、(アンテナ等のような)無線通信デバイス、及び/又は、チップセット(例えば、ブルートゥース(登録商標)デバイス、802.6デバイス(例えば、メトロポリタン・エリア・ネットワーク(MAN))、Wi-Fiデバイス、WiMAXデバイス、セルラー通信施設など)及び/又は等々を含んでよい。通信コンポーネント440は、何らかのネットワークによりデータが送受信されることを許容し、何らかのネットワークは、幾つかの例を挙げれば、例えば、セルラー・ネットワーク、Wi-Fiネットワーク、MAN、光ネットワーク等、及び/又は、リモート・デバイスを含む本開示で説明される他の任意のデバイス等であってもよい。
【００５３】
本開示の範囲から逸脱することなく、図4に示すものに対して修正、追加又は削除が施されてよい。例えば、コンピューティング・デバイス400は、本開示で説明され記述されたものより多い又は少ないエレメントを含んでもよい。例えば、コンピューティング・デバイス400は、タブレット又はモバイル・フォンのスクリーン等のような一体化されたディスプレイ・デバイスを含んでもよいし、或いは、外部モニタ、プロジェクタ、テレビジョン、或いは、コンピューティング・デバイス400から独立してそれに通信可能に結合される適切な他のディスプレイ・デバイスを含んでもよい。
【００５４】
本開示で使用されるように、「モジュール」又は「コンポーネント」という用語は、モジュール又はコンポーネント及び/又はソフトウェア・オブジェクト又はソフトウェア・ルーチンのアクションを実行するように構成される具体的なハードウェア実現手段を指し、それらは、コンピューティング・システムの汎用ハードウェア(例えば、コンピュータ読み取り可能な媒体、処理デバイス等)により保存及び/又は実行されてよい。一実施形態では、本開示で説明される様々なコンポーネント、モジュール、エンジン及びサービスは、コンピューティング・システムで実行されるオブジェクト又はプロセスとして(例えば、個別的なスレッドとして)実現されてよい。本開示で説明される何れかのシステム及び方法は、(汎用ハードウェアにより保存及び/又は実行される)ソフトウェアで実現されるように一般的に説明されているが、特定のハードウェア実現手段、又は、ソフトウェア及び特定のハードウェア実現手段の組み合わせも可能であり且つ本願でも想定されている。本開示において、「コンピューティング・エンティティ」は、本開示で上述したような任意のコンピューティング・システム、或いは、コンピューティング・システムで動作する任意のモジュール又はモジュールの組み合わせであってもよい。
【００５５】
本開示、特に、添付の特許請求の範囲(例えば、添付の特許請求の範囲の本文)で使用される用語は、「開放的な(open)」用語として広く一般的に意図されている(例えば、「〜を含んでいる(including)」という用語は「〜を、限定ではなく、含んでいる」ものとして解釈されるべきであり、「〜を有する(having)」という用語は「〜を少なくとも有する」ものとして解釈されるべきであり、「〜を含む(includes)」という用語は「〜を、限定ではなく、含む」ものとして解釈されるべきである等々)。
【００５６】
更に、導入される請求項の記載についての特定の数が意図される場合、そのような意図は請求項で明示的に記載され、そのような記載がなければそのような意図は存在しない。例えば、理解を促す例として言えば、添付の特許請求の範囲は、請求項の記載を導くために、「少なくとも1つの」及び「1つ以上の」という導入語句の利用を含むかもしれない。しかしながら、そのような語句の利用は、「或る(“a”  or  “an”)」という不定冠詞的な用語による請求項の記載の導入が、そのように導入される請求項の記載を含む何らかの特定の請求項を、そのような記載のみを含む実施形態に限定することを意味するように解釈されるべきでなく、たとえ同じ請求項が「1つ以上の」又は「少なくとも1つの」という導入語句、及び、「或る」のような不定冠詞的な用語を含んでいたとても、そのように限定されるべきでない(例えば、或る(“a”and/or“an”)は「少なくとも1つの」又は「1つ以上の」を意味するように解釈されるべきである)；同じことが、請求項の記載を導入するために使用される定冠詞的な用語についても成り立つ。
【００５７】
更に、導入される請求項の記載についての具体的な数が明示的に記載されていたとしても、当業者は、そのような記載が、記載された個数を少なくとも含むことを意味するように解釈されるべきであることを認めるであろう(例えば、他の修飾語を伴わない「2つの事項」というそのままの記載は、少なくとも2つの事項、又は、2つ以上の事項を意味する)。更に、「A、B及びC等のうちの少なくとも何れか」又は「A、B及びC等のうちの1つ以上」に類似する慣用句が使用される場合において、一般に、そのような構造は、A単独、B単独、C単独、A及びBをともに、A及びCをともに、B及びCをともに、或いは、A、B及びCをともに含む等のように意図される。
【００５８】
更に、2つ以上の代替的な用語を提示する何らかの接続語又は語句は、明細書、特許請求の範囲又は図面によらず、それらの用語のうちの何れか、それらの用語の択一的な1つ、又は、それらの用語全てを含む可能性を想定するように理解されるべきである。例えば、「A又はB」という言い回しは、「A」又は「B」又は「A及びB」の可能性を含むように理解されるべきである。
【００５９】
本開示に記載される全ての具体例及び条件付きの言葉は、従来技術を進歩させるように発明者等が貢献した発明及び概念の読者による理解を促す教育的目的のために意図されており、そのような具体的に言及される具体例及び条件の限定によらずに解釈されるべきである。本開示の実施形態が詳細に説明されてきたが、様々な変更、置換及び代替が、本開示の精神及び範囲から逸脱することなく施されてよい。
以上の実施の形態に関し、更に以下の付記を開示する。
（付記１）
ニューラル・ネットワークのマッピング辞書を生成する方法であって：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を有する方法。
（付記２）
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を更に有する付記１に記載の方法。
（付記３）
前記マッピング辞書を更新することが、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新することを含む、付記２に記載の方法。
（付記４）
学習速度を減らす工程を更に有する付記３に記載の方法。
（付記５）
オリジナル・アクティベーション・アドレスを生成することが、３２ビット浮動小数点値を生成することを含む、付記１に記載の方法。
（付記６）
前記エンコードされたアクティベーション・アドレスをデコードすることが、３２ビット浮動小数点値をデコードすることを含む、付記１に記載の方法。
（付記７）
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、現在のレイヤ及び次のレイヤで共有されるマッピング辞書と照合することを含む、付記１に記載の方法。
（付記８）
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、複数の３２ビット浮動小数点値を含むマッピング辞書と照合することを含む、付記１に記載の方法。
（付記９）
前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達する工程を更に有する付記１に記載の方法。
（付記１０）
１つ以上のプロセッサにより実行される場合に、前記１つ以上のプロセッサにオペレーションを実行させるように構成される命令を記憶する１つ以上の非一時的なコンピュータ読み取り可能な媒体であって、前記オペレーションは：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を有する、コンピュータ読み取り可能な媒体。
（付記１１）
前記オペレーションが：
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を更に有する付記１０に記載のコンピュータ読み取り可能な媒体。
（付記１２）
前記マッピング辞書を更新することが、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新することを含む、付記１１に記載のコンピュータ読み取り可能な媒体。
（付記１３）
前記オペレーションが、学習速度を減らす工程を更に有する、付記１２に記載のコンピュータ読み取り可能な媒体。
（付記１４）
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合することが、前記オリジナル・アクティベーション・アドレスを、現在のレイヤ及び次のレイヤで共有されるマッピング辞書と照合することを含む、付記１０に記載のコンピュータ読み取り可能な媒体。
（付記１５）
前記オペレーションが、前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達する工程を更に有する、付記１０に記載のコンピュータ読み取り可能な媒体。
（付記１６）
ニューラル・ネットワークのマッピング辞書を生成し、複数のレイヤを有するシステムであって、前記複数のレイヤの各レイヤは、少なくとも１つのストレージ・デバイスと処理要素と含み、各処理要素は：
先行するレイヤからのエンコードされたアクティベーション・アドレスとエンコードされたウェイト・アドレスとを現在のレイヤで受信する工程；
デコードされたアクティベーション・アドレスを生成するために、前記エンコードされたアクティベーション・アドレスをデコードする工程；
デコードされたウェイト・アドレスを生成するために、前記エンコードされたウェイト・アドレスをデコードする工程；
前記デコードされたアクティベーション・アドレス及び前記デコードされたウェイト・アドレスからオリジナル・アクティベーション・アドレスを生成する工程；及び
前記オリジナル・アクティベーション・アドレスをマッピング辞書と照合し、現在のレイヤに対するエンコードされたアクティベーション・アドレスを生成する工程；
を行うように構成されている、システム。
（付記１７）
各処理要素は：
１つ以上のクラスタを生成するために、各々のオリジナル・アクティベーション・アドレスを、前記マッピング辞書のうち最も近い辞書エントリに割り振る工程であって、前記クラスタは、共通の辞書エントリに割り振られる１つ以上のオリジナル・アクティベーション・アドレスを含む、工程；
各々のオリジナル・アクティベーションの、各クラスタのうち最も近い辞書エントリまでの平均距離を計算する工程；及び
前記平均距離の計算に応じて前記マッピング辞書を更新する工程；
を行うように構成されている、付記１６に記載のシステム。
（付記１８）
各処理要素は、関連するクラスタの平均距離及び学習速度に応じて、各々の辞書エントリを更新するように構成されている、付記１６に記載のシステム。
（付記１９）
各処理要素は、前記エンコードされたアクティベーション・アドレスを次のレイヤに伝達するように構成されている、付記１６に記載のシステム。
（付記２０）
前記ニューラル・ネットワークは、畳み込みニューラル・ネットワーク、回帰ニューラル・ネットワーク、及び、ロング・ショート・ターム・メモリ（ＬＳＴＭ）ニューラル・ネットワークのうち少なくとも何れかを含む、付記１６に記載のシステム。
【図１】
2017201525.tif 000003
【図２】
2017201525.tif 000004
【図３】
2017201525.tif 000005
【図４】
2017201525.tif 000006