(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2022-10-19
(45)【発行日】2022-10-27
(54)【発明の名称】機械学習を行うための方法及びシステム
(51)【国際特許分類】
G06N 20/00 20190101AFI20221020BHJP
G06N 3/08 20060101ALI20221020BHJP
【FI】
G06N20/00
G06N3/08
(21)【出願番号】P 2020558533
(86)(22)【出願日】2019-04-26
(86)【国際出願番号】 US2019029450
(87)【国際公開番号】W WO2019210237
(87)【国際公開日】2019-10-31
【審査請求日】2022-03-30
(32)【優先日】2018-04-27
(33)【優先権主張国・地域又は機関】US
【早期審査対象出願】
(73)【特許権者】
【識別番号】511050697
【氏名又は名称】アリババ グループ ホウルディング リミテッド
(74)【代理人】
【識別番号】100079108
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】ハン,リャン
【審査官】中村 信也
(56)【参考文献】
【文献】米国特許出願公開第2018/0114110(US,A1)
【文献】特開2015-011510(JP,A)
【文献】特開2015-095215(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06N 20/00
G06N 3/08
(57)【特許請求の範囲】
【請求項1】
コンピュータによって実施される方法であって、
訓練データを受信すること、
前記訓練データに基づいて機械学習モデルを訓練することであって、前記機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、前記1つ又は複数のノードは、前記機械学習モデルの別の層のノードとの1つ又は複数の接続を有す
ること、
前記機械学習モデルの前記接続に関連する重みを評価することであって、各接続は対応する重みを有す
ること、
閾値条件を満たさない重みを有する1つ又は複数の接続を前記機械学習モデルから除去すること、
前記機械学習モデルの前記層に関連する層重みを評価することであって、各層は対応する層重みを有す
ること、
層閾値条件を満たさない層重みを有する1つ又は複数の層を
、新たな層を追加することなく、前記機械学習モデルから除去すること、及び
前記接続及び前記1つ又は複数の層を除去した後で前記機械学習モデルを更新すること を含む、方法。
【請求項2】
前記訓練データを受信することが、
前記訓練データの一部を除去することによって前記訓練データを減らすこと
を更に含む、請求項1に記載の方法。
【請求項3】
前記訓練データが複数の次元を含み、前記除去した一部が少なくとも1つの次元に関連する、請求項2に記載の方法。
【請求項4】
前記訓練データが、第1の時点に関連する第1のデータ及び第2の時点に関連する第2のデータを含み、前記訓練データの前記一部を除去することによって前記訓練データを減らすことが、
前記第1の時点に関連する前記第1のデータを前記訓練データから除去すること
を更に含む、請求項2に記載の方法。
【請求項5】
前記機械学習モデルに与えられる入力データを評価するためのフィルタを生成すること を更に含む、請求項1に記載の方法。
【請求項6】
機械学習モデルを単純化するための方法をコンピュータシステムに行わせるために前記コンピュータシステムの少なくとも1つのプロセッサによって実行可能な1組の命令を記憶する非一時的コンピュータ可読媒体であって、前記方法が、
訓練データを受信すること、
前記訓練データに基づいて機械学習モデルを訓練することであって、前記機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、前記1つ又は複数のノードは、前記機械学習モデルの別の層のノードとの1つ又は複数の接続を有す
ること、
前記機械学習モデルの前記接続に関連する重みを評価することであって、各接続は対応する重みを有す
ること、
閾値条件を満たさない重みを有する1つ又は複数の接続を前記機械学習モデルから除去すること、
前記機械学習モデルの前記層に関連する層重みを評価することであって、各層は対応する層重みを有す
ること、
層閾値条件を満たさない層重みを有する1つ又は複数の層を
、新たな層を追加することなく、前記機械学習モデルから除去すること、及び
前記接続及び前記1つ又は複数の層を除去した後で前記機械学習モデルを更新すること を含む、
非一時的コンピュータ可読媒体。
【請求項7】
前記訓練データを受信することが、
前記訓練データの一部を除去することによって前記訓練データを減らすこと
を更に含む、請求項6に記載の非一時的コンピュータ可読媒体。
【請求項8】
前記訓練データが複数の次元を含み、前記除去した一部が少なくとも1つの次元に関連する、請求項6に記載の非一時的コンピュータ可読媒体。
【請求項9】
前記訓練データが、第1の時点に関連する第1のデータ及び第2の時点に関連する第2のデータを含み、前記訓練データの前記一部を除去することによって前記訓練データを減らすことが、
前記第1の時点に関連する前記第1のデータを前記訓練データから除去すること
を更に含む、請求項7に記載の非一時的コンピュータ可読媒体。
【請求項10】
前記1組の命令が、
前記機械学習モデルに与えられる入力データを評価するためのフィルタを生成すること を前記コンピュータシステムに行わせるために前記コンピュータシステムの前記少なくとも1つのプロセッサによって更に実行される、請求項6に記載の非一時的コンピュータ可読媒体。
【請求項11】
1組の命令を記憶するメモリと、
1つのプロセッサと、を含むコンピュータシステムであって、
前記1つのプロセッサは、前記1組の命令を実行して、
訓練データを受信すること、
前記訓練データに基づいて機械学習モデルを訓練することであって、前記機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、前記1つ又は複数のノードは、前記機械学習モデルの別の層のノードとの1つ又は複数の接続を有す
ること、
前記機械学習モデルの前記接続に関連する重みを評価することであって、各接続は対応する重みを有す
ること、
閾値条件を満たさない重みを有する1つ又は複数の接続を前記機械学習モデルから除去すること、
前記機械学習モデルの前記層に関連する層重みを評価することであって、各層は対応する層重みを有す
ること、
層閾値条件を満たさない層重みを有する1つ又は複数の層を
、新たな層を追加することなく、前記機械学習モデルから除去すること、及び
前記接続及び前記1つ又は複数の層を除去した後で前記機械学習モデルを更新すること を前記システムに行わせるように構成される、
コンピュータシステム。
【請求項12】
前記フィルタを用いてガイド情報を含むように前記入力データを処理することを更に含み、前記処理済みの入力データが、前記ガイド情報に基づいて前記機械学習モデルの少なくとも1つの接続をバイパスするように更に構成される、請求項5に記載の方法。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
[0001] 本開示は、参照によりその全体を本明細書に援用する、2018年4月27日に出願された米国仮特許出願第62/663,955号の優先権の利益を主張する。
【背景技術】
【0002】
背景
[0002] 機械学習プログラムの発展と共に、モデルの精度を改善するために機械学習モデルの次元が著しく増加している。しかし深層機械学習モデルは、モデルの訓練又は推論中にかなりの記憶域、メモリ帯域幅、エネルギ消費、及び計算資源を消費する。これらの問題は、深層機械学習モデルをモバイル装置及び埋込装置上に配備することを困難にする。
【0003】
[0003] 本開示の実施形態は、機械学習を行うための方法及びシステムを提供することによって上記の問題に対処する。
【発明の概要】
【課題を解決するための手段】
【0004】
概要
[0004] 本開示の実施形態は、コンピュータによって実施される方法を提供する。その方法は、訓練データを受信すること、訓練データに基づいて機械学習モデルを訓練することであって、機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、訓練すること、機械学習モデルの接続に関連する重みを評価することであって、各接続は対応する重みを有する、評価すること、閾値条件を満たさない重みを有する1つ又は複数の接続を機械学習モデルから除去すること、及び接続を除去した後で機械学習モデルを更新することを含み得る。
【0005】
[0005] 本開示の実施形態は、機械学習を行うためのコンピュータによって実施される方法も提供する。その方法は、1つ又は複数のノードをそれぞれ有する複数の層を含む機械学習モデルに与えられる入力データを受信することであって、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、受信すること、入力データをフィルタによって処理すること、及び処理済みの入力データを機械学習モデルに与えることを含み得る。
【0006】
[0006] 本開示の実施形態は、機械学習モデルを単純化するための方法をコンピュータシステムに行わせるためにコンピュータシステムの少なくとも1つのプロセッサによって実行可能な1組の命令を記憶する非一時的コンピュータ可読媒体を更に提供する。その方法は、訓練データを受信すること、訓練データに基づいて機械学習モデルを訓練することであって、機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、訓練すること、機械学習モデルの接続に関連する重みを評価することであって、各接続は対応する重みを有する、評価すること、閾値条件を満たさない重みを有する1つ又は複数の接続を機械学習モデルから除去すること、及び接続を除去した後で機械学習モデルを更新することを含み得る。
【0007】
[0007] 本開示の実施形態は、機械学習を行うための方法をコンピュータシステムに行わせるためにコンピュータシステムの少なくとも1つのプロセッサによって実行可能な1組の命令を記憶する非一時的コンピュータ可読媒体を更に提供する。その方法は、1つ又は複数のノードをそれぞれ有する複数の層を含む機械学習モデルに与えられる入力データを受信することであって、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、受信すること、入力データをフィルタによって処理すること、及び処理済みの入力データを機械学習モデルに与えることを含み得る。
【0008】
[0008] 本開示の実施形態はコンピュータシステムを更に提供する。コンピュータシステムは、1組の命令を記憶するメモリと、1組の命令を実行して、訓練データを受信すること、訓練データに基づいて機械学習モデルを訓練することであって、機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、訓練すること、機械学習モデルの接続に関連する重みを評価することであって、各接続は対応する重みを有する、評価すること、閾値条件を満たさない重みを有する1つ又は複数の接続を機械学習モデルから除去すること、及び接続を除去した後で機械学習モデルを更新すること、をシステムに行わせるように構成される少なくとも1つのプロセッサとを含み得る。
【0009】
[0009] 本開示の実施形態は、機械学習を行うためのコンピュータシステムを更に提供する。コンピュータシステムは、1組の命令を記憶するメモリと、1組の命令を実行して、1つ又は複数のノードをそれぞれ有する複数の層を含む機械学習モデルに与えられる入力データを受信することであって、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、受信すること、入力データをフィルタによって処理すること、及び処理済みの入力データを機械学習モデルに与えること、をシステムに行わせるように構成される少なくとも1つのプロセッサとを含み得る。
【0010】
[0010] 開示する実施形態の更なる特徴及び利点は、以下の説明の中で部分的に記載し、説明から部分的に明らかになり、又は実施形態を実践することによって知ることができる。開示する実施形態の特徴及び利点は、特許請求の範囲に記載の要素及び組み合わせによって実現し、成し遂げることができる。
【0011】
[0011] 上記の全般的な説明及び以下の詳細な説明はどちらも例示的且つ説明的に過ぎず、特許請求の範囲に記載するものとしての開示する実施形態を限定しないことを理解すべきである。
【0012】
図面の簡単な説明
[0012] 本開示の実施形態及び様々な態様を以下の詳細な説明及び添付図面に示す。図示の様々な特徴は縮尺通りに描かれていない。
【図面の簡単な説明】
【0013】
【
図1】[0013]本開示の実施形態によるニューラルネットワーク処理アーキテクチャを示す。
【
図2A】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図2B】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図2C】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図2D】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図2E】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図2F】[0014]本開示の実施形態による機械学習モデルの概略図を示す。
【
図3】[0015]本開示の実施形態による入力データに対する単純化の概略図を示す。
【
図4】[0016]本開示の実施形態によるコンピュータによって実施される方法を示す。
【
図5】[0017]本開示の実施形態による機械学習を行うためのコンピュータによって実施される方法を示す。
【発明を実施するための形態】
【0014】
詳細な説明
[0018] 本開示の特定の態様を以下でより詳細に説明する。参照により援用する用語又は定義と矛盾する場合は、本明細書で与える用語及び定義が有効である。
【0015】
[0019] 本開示に記載する技法は、以下の技術的効果の1つ又は複数を有する。一部の実施形態では、本開示に記載する技法が、訓練データを受信すること、訓練データに基づいて機械学習モデルを訓練することであって、機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する、訓練すること、機械学習モデルの接続に関連する重みを評価することであって、各接続は対応する重みを有する、評価すること、閾値条件を満たさない重みを有する1つ又は複数の接続を機械学習モデルから除去すること、及び接続を除去した後で機械学習モデルを更新することを含む、コンピュータによって実施される方法を提供する。一部の実施形態では、本開示に記載する技法は、機械学習モデルの1つ又は複数の接続を除去することによって機械学習モデルを単純化する。単純化することは、機械学習モデルが必要とする記憶空間、計算資源、及び電力消費を減らすことも可能にする。一部の実施形態では、本開示に記載する技法が機械学習モデルに与えられる入力データを評価するためのフィルタも生成する。フィルタは、機械学習モデルのための入力データを、実行時に処理することができる。フィルタは、入力データの一部を除去することによって、入力データを減らすことができる。そのように減らすことは、機械学習モデルが必要とする記憶空間、帯域幅、計算資源、及び電力消費を減らすことを可能にする。一部の実施形態では、推論結果を劣化させることなしにガイド情報に基づいて入力データが機械学習モデルの少なくとも1つの接続をバイパスすることができるように、フィルタが入力データ内にガイド情報を組み込むこともできる。少なくとも1つの接続をバイパスすることは、機械学習モデルが必要とする計算資源及び電力消費を減らすことを可能にする。
【0016】
[0020] 本明細書で使用するとき、「含む(comprises)」、「含んでいる(comprising)」という用語、又はこれらの用語の他の任意の改変形態は、非排他的包含を範囲に含むことを意図し、そのため要素の一覧を含むプロセス、方法、組成、物、又は機器はそれらの要素だけを含むのではなく、明確に列挙されていない他の要素又はかかるプロセス、方法、組成、物、若しくは機器に固有の他の要素を含み得る。「例示的(exemplary)」という用語は、「理想的(ideal)」ではなく「例(example)」という意味で使用する。
【0017】
[0021]
図1は、本開示の実施形態による例示的なニューラルネットワーク処理アーキテクチャ100を示す。
図1に示すように、アーキテクチャ100は、チップ通信システム102、ホストメモリ104、メモリコントローラ106、直接メモリアクセス(DMA)ユニット108、ジョイントテストアクショングループ(JTAG)/テストアクセスエンド(TAP)コントローラ110、周辺インタフェース112、バス114、グローバルメモリ116等を含むことができる。チップ通信システム102は、伝達されるデータに基づいてアルゴリズム演算(例えば機械学習演算)を実行できることが理解されよう。
【0018】
[0022] チップ通信システム102は、グローバルマネージャ1022及び複数のコア1024を含むことができる。グローバルマネージャ1022は、1つ又は複数のコア1024と連携するための少なくとも1つのタスクマネージャを含むことができる。各タスクマネージャは、ニューラルネットワークのシナプス/ニューロン回路を提供するコア1024のアレイに関連することができる。例えば
図1の処理要素の最上層はニューラルネットワークへの入力層を表す回路を提供することができる一方、コアの第2の層はニューラルネットワークの隠れ層を表す回路を提供することができる。従って、チップ通信システム102は、ニューラルネットワーク処理ユニット(NPU)と呼ぶこともできる。
図1に示すように、グローバルマネージャ1022は、コアの2つのアレイと連携するために2つのタスクマネージャを含むことができる。
【0019】
[0023] コア1024は、グローバルマネージャ1022から受信される命令に基づいて1つ又は複数の演算(例えば乗算、加算、乗累算等)を実行するように構成される1つ又は複数の処理ユニットを含む単一命令多重データ(SIMD)アーキテクチャをそれぞれ含む、1つ又は複数の処理要素を含むことができる。伝達されるデータパケットに対する演算を実行するために、コア1024は、データパケット内の情報を処理するための1つ又は複数の処理要素を含むことができる。各処理要素は、任意の数の処理ユニットを含むことができる。一部の実施形態では、コア1024をタイル等と見なすことができる。
【0020】
[0024] ホストメモリ104は、ホストCPUのメモリ等のオフチップメモリとすることができる。例えば、ホストメモリ104は、DDRメモリ(例えばDDR SDRAM)等とすることができる。ホストメモリ104は、高レベルキャッシュとして機能する1つ又は複数のプロセッサに組み込まれるオンチップメモリに比べて、遅いアクセス速度で大量のデータを記憶するように構成され得る。
【0021】
[0025] メモリコントローラ106は、メインメモリの機能を果たすためにオンチップメモリブロック(例えば4ブロックの8GB第2世代高帯域幅メモリ(HBM2))を有するグローバルメモリ116内の特定のメモリブロックとの間のデータの読み書きを管理することができる。例えばメモリコントローラ106は、チップ通信システム102の外から(例えばDMAユニット108又は別のNPUに対応するDMAユニットから)来るデータの読み書き、又はチップ通信システム102の中から(例えばグローバルマネージャ1022のタスクマネージャによって制御される2Dメッシュを介してコア1024内のローカルメモリから)来るデータの読み書きを管理することができる。更に、
図1ではメモリコントローラを1つ示すが、複数のメモリコントローラがアーキテクチャ100内に設けられ得ることが理解されよう。例えば、グローバルメモリ116内のメモリブロック(例えばHBM2)ごとに1つのメモリコントローラがあり得る。
【0022】
[0026] メモリコントローラ106は、メモリアドレスを生成し、メモリの読み取り又は書き込みサイクルを開始することができる。メモリコントローラ106は、1つ又は複数のプロセッサによって読み書きされ得る幾つかのハードウェアレジスタを含むことができる。レジスタは、メモリアドレスレジスタ、バイトカウントレジスタ、1つ又は複数の制御レジスタ、及び他の種類のレジスタを含み得る。これらのレジスタは、ソース、宛先、転送の方向(入出力(I/O)装置からの読み取り又はI/O装置への書き込み)、転送単位のサイズ、1つのバースト内で転送するバイト数、又はメモリコントローラの他の典型的な特徴の幾つかの組み合わせを指定することができる。
【0023】
[0027] DMAユニット108は、ホストメモリ104とグローバルメモリ116との間のデータ転送を支援することができる。加えて、DMAユニット108は、複数のNPU(例えばNPU100)間のデータ転送を支援することができる。DMAユニット108は、CPUの割り込みを引き起こすことなしにオフチップ装置がオンチップメモリ及びオフチップメモリの両方にアクセスすることを可能にし得る。従って、DMAユニット108もメモリアドレスを生成し、メモリの読み取り又は書き込みサイクルを開始することができる。DMAユニット108も、メモリアドレスレジスタ、バイトカウントレジスタ、1つ又は複数の制御レジスタ、及び他の種類のレジスタを含む、1つ又は複数のプロセッサによって読み書きされ得る幾つかのハードウェアレジスタを含むことができる。これらのレジスタは、ソース、宛先、転送の方向(入出力(I/O)装置からの読み取り又はI/O装置への書き込み)、転送単位のサイズ、1つのバースト内で転送するバイト数の幾つかの組み合わせを指定することができる。アーキテクチャ100は、第2のDMAユニットを含み得ることが理解され、第2のDMAユニットは、ホストCPUを関与させることなしに複数のニューラルネットワーク処理アーキテクチャが直接通信できるようにするために、他のニューラルネットワーク処理アーキテクチャとの間でデータを転送するために使用され得る。
【0024】
[0028] JTAG/TAPコントローラ110は、システムアドレス及びデータバスへの直接の外部アクセスを必要とすることなしに、NPUへの低オーバヘッドアクセスのためのシリアル通信インタフェース(例えばJTAGインタフェース)を実装する専用デバッグポートを指定することができる。JTAG/TAPコントローラ110は、様々な部分のチップロジックレベル及び装置機能を提示する1組のテストレジスタにアクセスするためのプロトコルを実装するオンチップテストアクセスインタフェース(例えばTAPインタフェース)も有することができる。
【0025】
[0029] もし存在する場合、周辺インタフェース112(PCIeインタフェース等)は、アーキテクチャ100と他の装置との間の通信を提供するチップ間バスの役割を果たす(典型的にはチップ間バスである)。
【0026】
[0030] バス114は、チップ内バス及びチップ間バスの両方を含む。チップ内バスは、システムアーキテクチャによって必要とされる全ての内部コンポーネントを互いに接続する。全てのコンポーネントが他の全てのコンポーネントに接続されるわけではないが、全てのコンポーネントは、通信する必要がある他のコンポーネントへの幾らかの接続を有する。チップ間バスは、NPUをオフチップメモリ又は周辺機器等の他の装置と接続する。典型的には、周辺インタフェース112(例えばチップ間バス)がある場合、バス114はチップ内バスに専ら携わるが、一部の実施形態では専用のバス間通信に引き続き携わることができる。
【0027】
[0031] チップ通信システム102は、ニューラルネットワークに基づいて演算を行うように構成され得る。
【0028】
[0032] アーキテクチャ100は、ホストユニット120も含むことができる。ホストユニット120は、1つ又は複数の処理ユニット(例えばX86中央処理装置)とすることができる。一部の実施形態では、ホストユニット120及びホストメモリ104を有するホストシステムは、コンパイラ(不図示)を含むことができる。コンパイラは、或るプログラミング言語で書かれたコンピュータコードをNPU命令に変換して実行可能プログラムを作成するプログラム又はコンピュータソフトウェアである。マシニングの応用では、コンパイラは、様々な演算、例えば前処理、字句解析、構文解析、意味解析、入力プログラムの中間表現への変換、コードの最適化、及びコードの生成、又はそれらのものの組み合わせを実行することができる。プログラムをコンパイルすることに加えて、入力データの特徴を抽出することができるように、ホストシステムは、チップ通信システム102によって処理される入力データを解析することもできる。
【0029】
[0033] 一部の実施形態では、NPU命令を生成するコンパイラが、チップ通信システム102にコマンドをプッシュするホストシステム上にあり得る。これらのコマンドに基づき、各タスクマネージャは、1つ又は複数のコア(例えばコア1024)に任意の数のタスクを割り当てることができる。コマンドの一部は、(コンパイラによって生成される)命令及びデータ(例えば入力データ)をホストメモリ104からグローバルメモリ116内にロードするように、DMAユニット108に命令することができる。次いで、対応するタスクが割り当てられた各コアに、ロードされた命令を分配することができ、1つ又は複数のコアがそれらの命令を処理することができる。
【0030】
[0034]
図2A~
図2Fは、本開示の実施形態による機械学習モデルの概略図を示す。機械学習モデルの一例として、ニューラルネットワークは複数の層を含むことができ、各層は(人工ニューロンとしても知られる)複数のノードを含むことができる。複数のノード間の接続は、訓練データを用いてニューラルネットワークを訓練することによって確立することができる。
図2A~
図2Fでは、太い矢印が層間の多くの接続を表し得る。ニューラルネットワークの訓練は機械学習と呼ぶこともでき、訓練済みのニューラルネットワークは機械学習モデルと呼ぶこともできる。接続のそれぞれに、複数のビット(例えば32ビット)を含む重みを割り当てることができる。接続の重みは、その接続における信号の強さを強める又は弱めることができる。例えば
図2Aに示すように、2つのノード221及び231間の接続2011の重みはゼロであり得る。従って、接続2011を通る信号はゼロまで低下させられる。換言すれば、信号は接続2011を通ることができず、2つのノード221及び231は切断されている。
【0031】
[0035]
図2Aは、例示的なニューラルネットワーク201の概略図を示す。ニューラルネットワーク201は、それぞれが複数のノード(例えばノード211、212、213等)を含む4つの層(例えば層210、220、230、及び240)を含み得る。本開示の一部の実施形態では、ニューラルネットワーク201は、訓練に使用する初期ニューラルネットワークとすることができる。初期ニューラルネットワークとは、既定のパラメータ(例えば接続の重み)を有するニューラルネットワークである。ニューラルネットワークのパラメータは、ノード間の接続及び接続の重みに関係し得る。一部の実施形態では、ニューラルネットワーク201は、層の複数のノード間の複数の接続を確立することができるように訓練データに基づいて初期ニューラルネットワークを訓練することによって開発された訓練済みのニューラルネットワークとすることができる。
【0032】
[0036] 本開示の実施形態によれば、ニューラルネットワーク201内の複数の接続は単純化することができる。一部の実施形態では、この単純化は、ニューラルネットワーク201に対して訓練中に行うことができる。訓練中の単純化は、静止時における単純化と呼ぶこともできる。
【0033】
[0037] 一部の実施形態では、単純化によって、訓練中に2つのノード間の接続を除去することができる。
図2Bは、本開示の実施形態による、一部の接続(シナプスとしても知られる)を除去することを含む、刈り込みの後のニューラルネットワーク202の概略図を示す。例えば
図2Bでは、
図2Aの接続2011がニューラルネットワーク201から除去されている。上記で論じたように、訓練済みのニューラルネットワークの各接続には接続重みが割り当てられる。次に、接続重みが閾値を満たすかどうかを判定することができる。例えば接続重みが閾値以上である場合、接続重みが閾値を満たし、対応する接続が維持される。そうではなく接続重みが閾値未満である場合、接続重みが閾値を満たさない。接続の接続重みが閾値を満たさない場合、対応する接続を除去することができる。一部の実施形態では、接続の接続重みをゼロに設定することによって、接続を除去することができる。一部の実施形態では、ニューラルネットワークから接続を削除することによって、接続を除去することもできる。
【0034】
[0038] 一部の実施形態では、訓練済みのニューラルネットワークにおいて、除去しようとする少なくとも1つの接続の接続重みをゼロに設定することができ、訓練済みのニューラルネットワークを精度評価のために更新することができる。更新済みのニューラルネットワークの精度が満足できるものである場合、少なくとも1つの接続をニューラルネットワークから最終的に除去することができる。他方で更新済みのニューラルネットワークの精度が満足できるものではない場合、接続を除去するための閾値を調節することができる。閾値は、様々なニューラルネットワーク及びニューラルネットワークが適用される様々な要因(例えば精度、エネルギ消費等)に従って調節できることが理解されよう。
【0035】
[0039] 残りの接続に基づき、ニューラルネットワーク201を最終ニューラルネットワーク(例えば
図2Bに示すニューラルネットワーク202)へと更新することができる。残りの接続の重みも更新できることが理解されよう。元の重みは複数のビット(例えば32ビット)であり得るので、更新済みの重みのそれぞれも引き続きこの複数のビットを含み得る。
【0036】
[0040]
図2Cは、本開示の実施形態による、層を除去した後のニューラルネットワーク203の概略図を示す。一部の実施形態では、ニューラルネットワークの層を訓練中に除去して、ニューラルネットワークを更に単純化することができる。例えば
図2Cでは、
図2A又は
図2Bの層230がニューラルネットワークから除去されている。
【0037】
[0041] 一部の実施形態では、ニューラルネットワークの接続に基づいてニューラルネットワークの各層の層重みを決定することができる。層の層重みは、層のノードの接続重みに関係し得る。例えば層重みは、層のノードの接続重みの和とすることができる。次に、層の層重みが閾値を満たすかどうかを判定することができる。例えば層重みが閾値以上である場合、層重みが閾値を満たす。そうではなく層重みが閾値未満である場合、層重みが閾値を満たさない。接続の層重みが閾値を満たさない場合、その層(例えば層230)を除去することができる。一部の実施形態では、層に関係する全ての接続の接続重みをゼロに設定することによって層を「除去」することができる。一部の実施形態では、ニューラルネットワーク内の層を削除することによって層を除去することもできる。
【0038】
[0042] 残りの層に基づき、ニューラルネットワーク201を最終ニューラルネットワーク(例えば
図2Cに示すニューラルネットワーク203)へと更新することができる。残りの層の中の接続及び接続の重みは更新できることが理解されよう。
【0039】
[0043] ニューラルネットワークを訓練データに基づいて修正する以外に、訓練データは、ニューラルネットワークを訓練するために使用する前に修正することができる。一部の実施形態では、訓練データの一部を除去することができる。例えば訓練データは、複数の次元(例えば10次元)含むことができる。ニューラルネットワークを訓練するために訓練データを入力する前に、訓練データの少なくとも1つの次元を除去することができる。
【0040】
[0044] 一部の実施形態では、再帰型ニューラルネットワーク(RNN)及び長短期メモリネットワーク(LSTM)等のニューラルネットワークに時間情報が関与することができ、訓練データの除去部分が時間領域に関係し得る。これらのニューラルネットワークはデータシーケンスを処理できることが理解されよう。従って、ニューラルネットワークの刺激は、時点Tの新たな入力データだけではなく、時点T-1の履歴情報からも生じ得る。従って、ニューラルネットワークに訓練データを入力する前に、時点T1に関連する第1の訓練データを除去できる一方、時点T2に関連する第2の訓練データを訓練のためにニューラルネットワークに与えることができる。
【0041】
[0045] ノード及び層間の接続は、訓練データに関係することが理解されよう。上記で論じたように、接続及び層の重みが所与の閾値を下回ることを理由に、一部の接続又は層を除去することができる。従って、ニューラルネットワークを実行時に使用するとき、それらの接続又は層は入力データによってバイパスされ得る(又は飛ばされ得る)。また、訓練データの一部はニューラルネットワークの結果に対して弱い影響力を有している場合があり、従ってニューラルネットワークによって無視され得る。従って、ニューラルネットワークの訓練に基づいてフィルタを生成することができる。一部の実施形態では、フィルタは学習アルゴリズムによって生成することができる。例えばフィルタは、除去された接続、除去された層、残りの接続及び層、並びにニューラルネットワークの出力のうちの少なくとも1つに基づいて訓練することができる。一部の実施形態では、フィルタは層間のゲート及び/又はゲーティングニューラルネットワークであり得る。例えばフィルタは、次元ベクトルを出力するための、限られた数の畳み込み層、平均プーリング層、及び全結合層を含むことができる。フィルタは前の層の出力だけに依存し、少数の畳み込み演算及びプーリング演算を適用することができる。
【0042】
[0046] 一部の実施形態では、フィルタリング規則を組み込むように、フィルタを手動でプログラムすることができる。一部の実施形態では、フィルタは、例えばソフトウェアエンジニアによって決定された規則を組み込むこともできる。換言すれば、フィルタはソフトウェアエンジニアによって生成され又は設計され得る。
【0043】
[0047] マシニングの応用では、フィルタは、
図1のホストシステムに配備することができる。従って、入力データがチップ通信システム102に伝送される前に、ニューラルネットワークの少なくとも1つの接続を実行時にバイパスするように、フィルタが入力データを導くことができる。例えばフィルタは入力データ内にガイド情報を組み込むことができ、ガイド情報は、機械学習モデルの少なくとも1つの接続をパススルーするための入力データの経路を含み得る。層の全ての接続がバイパスされる場合、その層はパスされることが理解されよう。ガイド情報に従って特定の接続又は層がバイパスされ得るように、例えばフィルタは入力データ内にガイド情報を組み込むことができる。入力データの一部を除去することにより、フィルタは入力データを減らすこともできる。例えば入力データがフィルタをパススルーするとき、入力データから一部(例えば入力データの少なくとも1つの次元)を除去することができる。従ってニューラルネットワークの処理負荷を下げることに加えて、ホストユニット120とチップ通信システム102との間のデータトラフィックも減らすことができる。従って、アーキテクチャ100の電力消費及び帯域幅使用量を減らすことができる。
【0044】
[0048]
図2D~
図2Fは、本開示の実施形態による、実行時におけるニューラルネットワーク204~206の例を示す。一部の実施形態では、ニューラルネットワーク201に対して単純化を推論中に行うこともできる。推論中の単純化も実行時における単純化と呼ぶことができる。
【0045】
[0049] 上記で論じたように、入力データはフィルタによって生成されるガイド情報を組み込むことができる。本開示の一部の実施形態では、ガイド情報は、少なくとも1つの層をバイパスするように、入力データに指示することができる。ガイド情報は、入力データ及びニューラルネットワークの少なくとも1つに基づいて、フィルタによって生成され得る。従って、フィルタによって生成されるガイド情報は、入力データ及びニューラルネットワークに応じて異なり得る。
【0046】
[0050]
図2Dは、実行時におけるニューラルネットワーク204の概略図を示す。
図2Dに示すように、一部の入力データは層230をバイパスすることができる。一部の実施形態では、ニューラルネットワーク204が層230なしに実行時において一部の入力データの正確な結果を生成することができる。例えば、より複雑な入力データはより多くの層を通すことができるのに対し、より複雑ではない入力データはより少ない層を通すことができる。従って入力データに基づき、層230は実行時にバイパスすることができる。従ってフィルタは、層230をバイパスするように入力データに指示するガイド情報を生成することができる。
【0047】
[0051]
図2Dでは、層230に関連する接続がニューラルネットワーク204内で依然として提供され、点線矢印として図示されていることが理解されよう。従って、他の一部の入力データがこれらの接続を経由して層230を通ることが可能である。
【0048】
[0052] 層230に関連する接続の重みは、ゼロ又は他の任意の値に設定することができる。従って本開示の実施形態では、少なくとも1つの層をバイパスする(例えば層の接続の重みをゼロに設定する)ことにより、入力データを処理するのに必要な計算資源を減らすことができる。
【0049】
[0053] 少なくとも1つの層をバイパスする以外に、本開示の実施形態は、ノード間の少なくとも1つの接続を実行時にバイパスすることもできる。
図2Eは、実行時におけるニューラルネットワーク205の概略図を示す。
図2Eに示すように、ニューラルネットワーク205は、層210と層220との間でノード213とノード222との間の第1の接続、ノード212とノード222との間の第2の接続、及びノード211とノード223との間の第3の接続を含む。
【0050】
[0054] 一部の実施形態では、ニューラルネットワーク205が少なくとも1つの接続(例えば
図2Eに示す第1の接続及び第2の接続)なしに実行時において第1の入力データの正確な結果を生成することができる。従って、ニューラルネットワーク205の結果を劣化させることなしに、第1の接続及び第2の接続を実行時にバイパスすることができる。従ってフィルタは、第1の接続及び第2の接続をバイパスするように入力データに指示するガイド情報を生成することができる。
【0051】
[0055] このようにして、ニューラルネットワークを修正する(例えばニューラルネットワークから少なくとも1つの接続を永続的に除去する)ことなしに、ニューラルネットワークを実行する計算負荷を減らすことができる。計算負荷を減らす以外に、この形態はニューラルネットワークを実行する更なる柔軟性も可能にする。上記で論じたように、フィルタはソフトウェアエンジニアによって又は訓練に基づいて生成され得る。従って、異なる応用シナリオのそれぞれにおいて異なるフィルタを機械学習モデルに配備することが可能である。
【0052】
[0056] 実行時にバイパスされる少なくとも1つの接続は、異なる入力データに応じて異なり得ることが理解されよう。例えば
図2Fに示すように、ガイド情報に基づき、ニューラルネットワーク205の第2の接続及び第3の接続が、第1の入力データと異なる第2の入力データによってバイパスされ得る。上記で論じたように、ガイド情報は機械学習モデルの少なくとも1つの接続をパススルーするための入力データの経路を含み得る。一部の実施形態では、
図2E及び
図2Fに示すように、異なる入力データのための経路は異なり得る。
【0053】
[0057] 従って本開示の実施形態では、少なくとも1つの接続をバイパスすることにより、入力データを処理するのに必要な計算資源を減らすこともできる。
【0054】
[0058] 静止時における訓練データの単純化以外に、単純化は入力データに対して実行時に行うこともできる。
図3は、本開示の実施形態による入力データに対する単純化の概略図を示す。
【0055】
[0059] 入力データに対する単純化は、ニューラルネットワークに入力データを送信する前に、入力データの一部を除去することによって行うことができる。
【0056】
[0060] 一部の実施形態では、実行時における入力データが複数の次元を含むことができる。入力データから次元の少なくとも1つを除去することができる。
図3に示すように、入力データ301は複数の次元(例えば少なくとも1つの次元3011)を含むことができる。入力データ301を処理のためにニューラルネットワーク300に送信する前に、(例えばフィルタによって)入力データ301から少なくとも1つの次元3011を除去することができる。一部の実施形態では、入力データ301及びニューラルネットワーク300に基づき、除去される少なくとも1つの次元3011をフィルタが決定することができる。
【0057】
[0061] 一部の実施形態では、入力データの除去部分が時間領域に関係し得る。例えば入力データが時間に関係する場合(例えばビデオ)、入力データは各時点に関係する一連のデータを含み得る。例えば、ビデオのデータは或る期間にわたって分布する一連のフレームを含むことができ、各フレームのデータは一つの時点に対応する。一部の実施形態では、最終結果に対する非常に限られた影響を伴って、入力データの或る部分(例えばビデオのフレーム又は所与の期間内の複数のフレーム)がニューラルネットワークによってバイパスされ得る。例えばビデオのデータでは、フィルタが、最終結果に著しく影響を及ぼすことなしに、最初の5秒以内のフレームを入力データから除去できると決定することができる。
【0058】
[0062] 入力データから除去される部分は、入力データの性質に応じて異なり得ることが理解されよう。
【0059】
[0063] 入力データの一部を除去することにより、機械学習モデルが占有する帯域幅を減らすことができ、機械学習モデルが必要とする計算資源及び電力消費も減らすことができる。
【0060】
[0064]
図4は、本開示の実施形態によるコンピュータによって実施される方法400を示す。方法400は、
図1のニューラルネットワーク処理アーキテクチャ100等のコンピュータシステムによって実施され得る。コンピュータシステムは、1組の命令を記憶するメモリと、かかる1組の命令を実行してコンピュータシステムに方法400を行わせるように構成される少なくとも1つのプロセッサとを含み得る。少なくとも1つのプロセッサは、例えば
図1のホストユニット120及びチップ通信システム102を含み得る。コンピュータシステムは、通信インタフェース(例えば
図1の周辺インタフェース112)も含むことができる。
図4を参照し、方法400は以下に記載のステップを含むことができる。
【0061】
[0065] ステップ402で、コンピュータシステムが、例えば通信インタフェースによって訓練データを受信することができる。訓練データはコンピュータシステムのデータベース内に記憶することができ、又は別のコンピュータシステム内に記憶することができる。訓練データは、訓練データの一部を除去することによって減らすことができる。
【0062】
[0066] 一部の実施形態では、訓練が教師あり訓練である場合、訓練データが大量のラベル付きデータを含み得る。一部の実施形態では、訓練データが入力ベクトル及び対応する出力ベクトルの対を含み得る。従って、訓練データは複数の次元を含むことができる。次元のそれぞれは訓練データの特性に関係し得る。一部の実施形態では、除去部分が少なくとも1つの次元に関連し得る。
【0063】
[0067] 一部の実施形態では、訓練データが時間領域に関係する。例えば、訓練データは第1の時点に関連する第1のデータ及び第2の時点に関連する第2のデータを含み得る。訓練データの一部を除去する場合、第1の時点に関連する第1のデータを除去することができる。
【0064】
[0068] ステップ404で、コンピュータシステムが訓練データに基づいて機械学習モデルを訓練することができる。機械学習モデルを訓練する前、機械学習モデルのパラメータはまだ決定されていない。パラメータは、例えば機械学習モデルの接続性を含み得る。機械学習モデルの一例として、ニューラルネットワークは複数の層を含むことができ、層のそれぞれは複数のノードを含むことができる。ノード間の接続を生成するために、複数のノードは接続され得る。各接続は対応する接続重みを有することができ、従って接続は重み付けされる。訓練により、機械学習モデルの接続性を訓練データに基づいて決定することができる。例えばノード間の接続を確立し、かかる接続に対して重みを決定して割り当てることができる。
【0065】
[0069] 同様に、コンピュータシステムは、機械学習モデルの層に関連する層重みも決定することができる。機械学習モデルでは、各層が対応する層重みを有し得る。上記で論じたように、機械学習モデルの各層の層重みは、接続重みに基づいて決定することができる。
【0066】
[0070] ステップ406で、コンピュータシステムが機械学習モデルの接続に関連する重みを評価することができる。例えばコンピュータシステムは、接続の接続重みが閾値条件を満たすかどうかを判定することができる。一部の実施形態では、機械学習モデルの最終結果に著しく影響を及ぼすことなしに、機械学習モデルから接続を除去することができる。かかる接続は除去可能接続として決定され得る。また、接続を除去することが機械学習モデルの不正確な結果を発生させ得る場合、その接続は除去不能接続として決定され得る。閾値条件は、除去可能接続及び除去不能接続を識別するための接続重み閾値に関連することができる。例えば接続の接続重みが接続重み閾値以上である場合、その接続は閾値条件を満たすことができず、除去不能接続として評価される。また、例えば接続の接続重みが接続重み閾値未満である場合、その接続は閾値条件を満たし、除去可能接続として評価される。
【0067】
[0071] 同様に、一部の実施形態では、機械学習モデルの最終結果に著しく影響を及ぼすことなしに、機械学習モデルから層全体を除去することができる。かかる層は除去可能層として決定され得る。また、層を除去することが機械学習モデルの不正確な結果を発生させ得る場合、その層は除去不能層として決定され得る。従って層閾値条件は、除去可能層及び除去不能層を識別するための層重み閾値に関連することができ、コンピュータシステムは、層の層重みが層閾値条件を満たすかどうかを更に判定することができる。例えば層の層重みが層重み閾値以上である場合、その層は層閾値条件を満たすことができず、除去不能層として決定される。また、例えば層の層重みが層重み閾値未満である場合、その接続は層閾値条件を満たし、除去可能層として決定される。
【0068】
[0072] ステップ408で、コンピュータシステムは、閾値条件を満たさない重みを有する1つ又は複数の接続を機械学習モデルから除去することができる。換言すれば、決定した除去可能接続を機械学習モデルから除去することができる。
【0069】
[0073] 同様に、除去可能層も機械学習モデルから除去することができる。
【0070】
[0074] ステップ410で、接続の除去後にコンピュータシステムが機械学習モデルを更新することができる。機械学習モデルから除去可能接続が最終的に除去された後、コンピュータシステムはノード間の新たな接続を確立することができ、元の接続は除去されていることが理解されよう。
【0071】
[0075] 機械学習モデルから少なくとも1つの接続又は層を除去することにより、機械学習モデルの複雑度を下げることができる。従って、機械学習モデルのための記憶空間及び機械学習モデルを実行するための電力消費も減らすことができる。
【0072】
[0076] 加えてコンピュータシステムは、機械学習モデルに与えられる入力データを評価するためのフィルタを更に生成することができる。フィルタは機械学習を行うために使用することができ、これについては
図5に関して以下で更に説明する。
【0073】
[0077]
図5は、本開示の実施形態による機械学習を行うためのコンピュータによって実施される方法500を示す。方法500は、
図1のニューラルネットワーク処理アーキテクチャ100等のコンピュータシステムによって実施され得る。コンピュータシステムは、1組の命令を記憶するメモリと、かかる1組の命令を実行してコンピュータシステムに方法500を行わせるように構成される少なくとも1つのプロセッサとを含み得る。少なくとも1つのプロセッサは、例えば
図1のホストユニット120及びチップ通信システム102を含み得る。コンピュータシステムは、通信インタフェース(例えば
図1の周辺インタフェース112)も含むことができる。
図5を参照し、方法500は以下に記載のステップを含むことができる。
【0074】
[0078] ステップ502で、コンピュータシステムが機械学習モードに与えられる入力データを受信することができる。機械学習モデルは、1つ又は複数のノードをそれぞれ有する複数の層を含み得、かかる1つ又は複数のノードは、機械学習モデルの別の層のノードとの1つ又は複数の接続を有する。機械学習モデルは機械学習の応用において使用することができる。機械学習の応用は、ニューラルネットワーク処理アーキテクチャ100内で実行することができる。機械学習の応用は複数のタスクに分けることができ、タスクの1つがホストユニット120上で実行され得る一方、別のタスクが機械学習タスクとして決定され、チップ通信システム102上で機械学習モデルによって実行され得る。入力データは機械学習タスクに関係することができ、処理のために機械学習モデルに与えることができる。
【0075】
[0079] ステップ504で、コンピュータシステムが入力データをフィルタによって処理することができる。入力データの受信後、入力データを処理するためにフィルタを呼び出すことができる。フィルタは、コンピュータシステムによって実行され得る機械学習の応用の一部とすることができ、又はコンピュータシステムによって与えられる機能であり得る。
図1~
図3に関して論じたように、フィルタは機械学習モデルの訓練に基づいて生成することができ、又はソフトウェアエンジニアによって設計され得る。
【0076】
[0080] 入力データに基づき、入力データの特徴を抽出し、機械学習モデルと比較することができる。一部の実施形態では、入力データのためのガイド情報がフィルタによって生成され得る。処理される入力データがガイド情報に基づいて少なくとも1つの接続をバイパスするよう構成され得るように、ガイド情報は入力データ内に組み込むことができる。例えば接続をバイパスするために、その接続の重みを所与の入力データについてゼロに設定することができる。別の入力データでは接続の重みが変えられなくてもよいことが理解されよう。一部の実施形態では、接続が既定の重みとバイパス重みとを含み得る。既定の重みは訓練に基づいて決定され、バイパス重みはゼロである。ガイド情報に基づき、コンピュータシステムは、接続の重みが既定の重みかバイパス重みかを判定することができる。バイパス重みは別の値であり得ることが理解されよう。
【0077】
[0081] 一部の実施形態では、入力データによって層がバイパスされ得るように、ガイド情報は、層に関連する接続をバイパスするように入力データに指示することができる。層がバイパスされる場合、上記の少なくとも1つの接続は、その層に関連する全ての接続を含み得ることが理解されよう。
【0078】
[0082] 一部の実施形態では、フィルタを使用することにより、コンピュータシステムは入力データの一部を除去し、入力データをしかるべく更新することができる。例えば入力データの特徴に基づき、コンピュータシステムは、機械学習モデルの実行結果を劣化させることなしに入力データの一部を除去できると判定し、入力データの一部を除去することができる。入力データを更新し、機械学習モデルに与えることができる。一部の実施形態では、入力データが複数の次元を含むことができ、除去部分が少なくとも1つの次元に関連する。一部の実施形態では、入力データが時間領域に関係し得る。例えば、入力データは第1の時点に関連する第1のデータ及び第2の時点に関連する第2のデータを含み得る。入力データの一部を除去する場合、第1の時点に関連する第1のデータを除去することができる。
【0079】
[0083] ステップ506で、コンピュータシステムが処理済みの入力データを機械学習モデルに与えることができる。機械学習モデルは、機械学習の結果を生成することができる。例えば推論エンジンとして、チップ通信システム102(1つ又は複数のアクセラレータが関与する)は、機械学習モデルを使用して結果を生成し、その結果をホストユニット120に送り返すことができる。
【0080】
[0084] フィルタは、単純化されていない機械学習モデルに適用できることが理解されよう。単純化されていない機械学習モデルは全結合を含むが、実行時にフィルタを使用して、1つ又は複数の接続が入力データによってバイパスされ得る。1つ又は複数の接続が実行時に入力データによってバイパスされるので、機械学習モデルを実行するための計算資源及び電力消費を減らすことができるが、機械学習モデルは単純化されない。計算資源及び電力消費を減らすことに加えて、入力データの一部を除去することは、ホストユニット120とチップ通信システム102との間の通信負荷を更に減らすことができる。
【0081】
[0085] 本開示の実施形態はコンピュータプログラム製品も提供する。コンピュータプログラム製品は、上記で説明した方法をプロセッサに実行させるためのコンピュータ可読プログラム命令を有する非一時的コンピュータ可読記憶媒体を含み得る。
【0082】
[0086] コンピュータ可読記憶媒体は、命令実行装置による使用のための命令を記憶することができる有形装置であり得る。コンピュータ可読記憶媒体は、例えばこれだけに限定されないが、電子記憶装置、磁気記憶装置、光学記憶装置、電磁記憶装置、半導体記憶装置、又は上記のものの任意の適切な組み合わせとすることができる。コンピュータ可読記憶媒体のより具体的な例の非網羅的な一覧は、ポータブルコンピュータディスケット、ハードディスク、ランダムアクセスメモリ(RAM)、読取専用メモリ(ROM)、消去プログラム可能読取専用メモリ(EPROM)、スタティックランダムアクセスメモリ(SRAM)、ポータブルコンパクトディスク読取専用メモリ(CD-ROM)、デジタル多用途ディスク(DVD)、メモリスティック、フロッピー(登録商標)ディスク、命令が記録されている穿孔カード又は溝の中の隆起構造等の機械的に符号化された装置、及び上記のものの任意の適切な組み合わせを含む。
【0083】
[0087] 上記で説明した方法を実行するためのコンピュータ可読プログラム命令は、アセンブラ命令、命令セットアーキテクチャ(ISA)命令、機械命令、機械依存命令、マイクロコード、ファームウェア命令、状態設定データ、又はオブジェクト指向プログラミング言語及び従来の手続き型プログラミング言語を含む1つ又は複数のプログラミング言語の任意の組み合わせで書かれたソースコード若しくはオブジェクトコードであり得る。コンピュータ可読プログラム命令は、独立型のソフトウェアパッケージとしてコンピュータシステム上で完全に実行することができ、又は一部は第1のコンピュータ上で、一部は第1のコンピュータから離れた第2のコンピュータ上で実行されてもよい。後者のシナリオでは、第2のリモートコンピュータが、ローカルエリアネットワーク(LAN)又は広域ネットワーク(WAN)を含む任意の種類のネットワークによって、第1のコンピュータに接続され得る。
【0084】
[0088] コンピュータ又は他のプログラム可能なデータ処理機器のプロセッサによって実行される命令が、上記で説明した方法を実施するための手段を作り出すように、コンピュータ可読プログラム命令は、汎用コンピュータ若しくは専用コンピュータのプロセッサ又は機械をもたらすための他のプログラム可能なデータ処理機器に与えることができる。
【0085】
[0089] 図中の流れ図及び図表は、本明細書の様々な実施形態による装置、方法、及びコンピュータプログラム製品のあり得る実施形態のアーキテクチャ、機能、及び動作を示す。この点に関して、流れ図及び図表の中のブロックは、特定の機能を実装するための1つ又は複数の実行可能命令を含むソフトウェアプログラム、セグメント、又はコードの一部を表し得る。一部の代替的実施形態では、ブロック内で示す機能が、図中に示すのと異なる順序で行われ得ることにも留意すべきである。関与する機能にもよるが、例えば連続して示されている2つのブロックが実際にはほぼ同時に実行されてもよく、又は逆の順番で実行されてもよい場合がある。図表又は流れ図の各ブロック並びに図表及び流れ図の中のブロックの組み合わせは、指定の機能若しくは動作を実行する専用ハードウェアベースシステムによって又は専用ハードウェアとコンピュータ命令との組み合わせによって実装され得ることも指摘しておく。
【0086】
[0090] 明瞭にするために別々の実施形態の脈絡で説明した本明細書の特定の特徴は、単一の実施形態において組み合わせで提供してもよいことが理解されよう。逆に、簡潔にするために単一の実施形態の脈絡で説明した本明細書の様々な特徴も、本明細書に記載した他の任意の実施形態の中で別々に、又は任意の適切な部分的組み合わせで、又は適切なように提供することもできる。様々な実施形態の脈絡で説明した特定の特徴は、実施形態がかかる要素なしでは機能できない場合を除き、それらの実施形態に不可欠な特徴であると解釈すべきではない。