IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ グーグル インコーポレイテッドの特許一覧

特開2024-119850マルチタスク再帰型ニューラルネットワーク
<>
  • 特開-マルチタスク再帰型ニューラルネットワーク 図1
  • 特開-マルチタスク再帰型ニューラルネットワーク 図2
  • 特開-マルチタスク再帰型ニューラルネットワーク 図3
  • 特開-マルチタスク再帰型ニューラルネットワーク 図4
  • 特開-マルチタスク再帰型ニューラルネットワーク 図5
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024119850
(43)【公開日】2024-09-03
(54)【発明の名称】マルチタスク再帰型ニューラルネットワーク
(51)【国際特許分類】
   G06N 3/044 20230101AFI20240827BHJP
   G06N 3/063 20230101ALI20240827BHJP
【FI】
G06N3/044
G06N3/063
【審査請求】有
【請求項の数】1
【出願形態】OL
【外国語出願】
(21)【出願番号】P 2024083470
(22)【出願日】2024-05-22
(62)【分割の表示】P 2022063945の分割
【原出願日】2019-11-15
(31)【優先権主張番号】62/769,512
(32)【優先日】2018-11-19
(33)【優先権主張国・地域又は機関】US
(31)【優先権主張番号】16/262,785
(32)【優先日】2019-01-30
(33)【優先権主張国・地域又は機関】US
(71)【出願人】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】110001195
【氏名又は名称】弁理士法人深見特許事務所
(72)【発明者】
【氏名】ハシェミ,ミラダ・オリア
(72)【発明者】
【氏名】スミス,ジェイミー・アレクサンダー
(72)【発明者】
【氏名】スワースキー,ケビン・ジョーダン
(57)【要約】      (修正有)
【課題】マルチタスク再帰型ニューラルネットワークに関するコンピュータ記憶媒体にエンコードされたコンピュータプログラムを含む方法、システム及び装置を提供する。
【解決手段】方法は、再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部領域を指定するデータを保持し、現在の入力を受信し、現在の入力によって定義されるメモリアクセスアドレスの特定のメモリ領域を識別し、保持されたデータ内で指定された内部状態から、特定のメモリ領域についての内部状態を選択し、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて入力のシーケンス内の現在の入力を処理して、予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、特定のメモリ領域の選択された内部状態を更新し、更新され、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付ける。
【選択図】図5
【特許請求の範囲】
【請求項1】
方法であって、
複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、前記複数のメモリ領域の各々について別々の内部状態を指定する内部状態データを保持することと、
前記コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、
前記入力のシーケンス内の前記現在の入力によって定義される前記メモリアクセスアドレスの特定のメモリ領域を識別することと、
保持された前記データ内で指定された内部状態から、前記特定のメモリ領域についての前記内部状態を選択することと、
前記特定のメモリ領域について選択された前記内部状態に従って、前記再帰型ニューラルネットワークを用いて前記入力のシーケンス内の前記現在の入力を処理して、
前記特定のメモリ領域内の前記コンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、
前記特定のメモリ領域の選択された前記内部状態を更新することと、
更新された、選択された前記内部状態を、保持された前記データ内の前記特定のメモリ領域と関連付けることとを備える、方法。
【請求項2】
予測された前記メモリアクセスアドレスは、前記特定のメモリ領域内の前記コンピュータプログラムの次のメモリアクセスアドレスである、請求項1に記載の方法。
【請求項3】
前記入力のシーケンスは、前記コンピュータプログラムの以前のプログラムカウンタアドレスのシーケンスおよび対応するデルタ値を含み、各デルタ値は、それぞれの第1のメモリアクセスアドレスとそれぞれの第2のメモリアクセスアドレスとの差を定義し、前記第1のメモリアクセスアドレスは、対応する前記プログラムカウンタアドレスによって示される命令が実行されたときにアクセスされたアドレスであり、前記第2のメモリアクセスアドレスは、前記第1のメモリアドレスがアクセスされる前にアクセスされたアドレスである、請求項1または2に記載の方法。
【請求項4】
前記第1のメモリアクセスアドレスおよび前記第2のメモリアクセスアドレスは、前記複数のメモリ領域の同じメモリ領域内にある、請求項3に記載の方法。
【請求項5】
予測された前記メモリアクセスアドレスと関連付けられたメモリアクセスはリードアクセスである、請求項1~4のいずれか1項に記載の方法。
【請求項6】
前記分布内の1つ以上の確率が閾値基準を満たすと判断することと、
それに応じて、前記基準を満たす前記1つ以上の確率と関連付けられた、予測された前記1つ以上のメモリアクセスアドレスからデータをフェッチすることと、
前記データをローカルキャッシュに格納することとをさらに備える、請求項5に記載の方法。
【請求項7】
前記分布内の1つ以上の確率が閾値基準を満たすと判断することと、
1つ以上のプリフェッチ命令を前記コンピュータプログラムに自動的に挿入することとをさらに備え、前記1つ以上のプリフェッチ命令の実行によって、前記基準を満たす前記1つ以上の確率と関連付けられた、予測された前記1つ以上のメモリアクセスアドレスからデータがフェッチされ、前記1つ以上のプリフェッチ命令は、予測された前記メモリアクセスを生じる命令の前に前記コンピュータプログラムに挿入される、請求項5に記載の方法。
【請求項8】
回路であって、
再帰型ニューラルネットワークの動作を行うように構成された再帰型ニューラルネットワークセル(RNNセル)と、
複数の状態レジスタとを備え、各状態レジスタは、i)前記再帰型ニューラルネットワークのために内部状態データを格納するように構成され、ii)前記ニューラルネットワークが行うように訓練された複数のタスクのそれぞれのタスクに対応し、前記回路はさらに、
回路構成要素を備え、前記回路構成要素は、
入力のシーケンス内の現在の入力とシーケンス識別データとを受信することと、
前記シーケンス識別データに基づいて前記複数のタスクのうち1つのタスクを識別することと、
識別された前記タスクに対応する前記状態レジスタから内部状態データを取得することと、
取得した前記内部状態データと前記現在の入力とを前記RNNセルに提供して、前記RNNセルに、取得した前記内部状態データと前記現在の入力とを処理して、ニューラルネットワーク出力と識別された前記タスクについて更新された内部状態データとを生成させることと、
前記ニューラルネットワーク出力と識別された前記タスクについて更新された前記内部状態データとを、前記RNNセルから受信することと、
更新された前記内部状態データを、識別された前記タスクに対応する前記状態レジスタに書込むこととを含む動作を行うように構成された、回路。
【請求項9】
前記シーケンス識別データは、前記現在の入力のプロパティに基づく、請求項8に記載の回路。
【請求項10】
前記シーケンス識別データは、ユーザ入力に基づく、請求項8に記載の回路。
【請求項11】
それぞれの前記タスクは、前記RNNセルがメモリアクセスアドレスを予測することを含む、請求項8に記載の回路。
【請求項12】
前記RNNセルは、前記再帰型ニューラルネットワークの固定重みのセットを保持するように構成される、請求項8~11のいずれか1項に記載の回路。
【請求項13】
前記回路構成要素はマルチプレクサを含み、前記マルチプレクサは、
前記シーケンス識別データに基づいて、識別された前記タスクに対応する前記状態レジスタを選択し、
取得した前記内部状態データを前記RNNセルに提供するように構成される、請求項8~12のいずれか1項に記載の回路。
【請求項14】
1つ以上のコンピュータと、1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに請求項1~7のいずれか1項に記載の前記動作を行わせる命令を格納する1つ以上の記憶デバイスとを備える、システム。
【請求項15】
1つ以上のコンピュータによって実行されると前記1つ以上のコンピュータに請求項1~7のいずれか1項に記載の前記動作を行わせる命令でエンコードされた、1つ以上のコンピュータ可読記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
背景
本明細書は、再帰型ニューラルネットワークに関する。
【背景技術】
【0002】
ニューラルネットワークは、複数の層の動作を用いて1つ以上の入力から1つ以上の出力を予測する機械学習モデルである。ニューラルネットワークは、入力層と出力層との間に位置する1つ以上の隠れ層を含むことが典型的である。各隠れ層の出力は、次の層、たとえば次の隠れ層または出力層への入力として用いられる。
【0003】
ニューラルネットワークの各層は、層への入力に対して行われる1つ以上の変換動作を指定する。なかには、ニューロンと呼ばれる、動作を有するニューラルネットワーク層もある。各ニューロンは、1つ以上の入力を受信し、他のニューラルネットワーク層によって受信される出力を生成する。多くの場合、各ニューロンは他のニューロンから入力を受信し、各ニューロンは1つ以上の他のニューロンに出力を提供する。
【0004】
各層は、当該層についてのパラメータのセットの現在値を用いて1つ以上の出力を生成する。ニューラルネットワークの訓練には、連続して、入力に対してフォワードパスを行うことと、勾配値を計算することと、各層についてパラメータのセットの現在値を更新することとが含まれる。ニューラルネットワークが訓練されると、生産システムにおいて、パラメータの最終的なセットを用いて予測することが可能になる。
【0005】
ニューラルネットワークのいくつかは、再帰型ニューラルネットワークである。再帰型ニューラルネットワークは、入力シーケンスを受信し入力シーケンスから出力シーケンスを生成するニューラルネットワークである。特に、再帰型ニューラルネットワークは、現在の時間ステップにおいて出力を計算する際に以前の時間ステップからネットワークの内部状態の一部またはすべてを用いることができる。これによって、再帰型ニューラルネットワークは、時間的な動的振る舞いを見せる。すなわち、再帰型ニューラルネットワークは、現在の時間ステップまでに受信したすべての情報を集約し、データのシーケンスの長期にわたる依存性を収集することが可能である。
【発明の概要】
【課題を解決するための手段】
【0006】
概要
本明細書は、マルチタスク再帰型ニューラルネットワーク、より詳細には、マイクロプロセッサにおいて時系列予測を向上するマルチタスク再帰型ニューラルネットワークについて説明する。
【0007】
マルチタスク再帰型ニューラルネットワークを実装する回路は、再帰型ニューラルネットワークの動作を行うように構成された再帰型ニューラルネットワークセル(「RNNセル」)を備える。つまり、RNNセルは、再帰型ニューラルネットワーク内の各層によって定義される変換動作を行うように構成される。回路はまた、状態レジスタを備える。各状態レジスタは、(i)再帰型ニューラルネットワークのために内部状態データを格納するように構成され、(ii)ニューラルネットワークが行うように訓練されたそれぞれのタスクに対応する。状態データは、複数の時間ステップにわたって存続するデータ、すなわち、シーケンス内の次の入力を処理する際に使用されるシーケンス内の1つの入力を処理した後に保持されるデータである。たとえば、再帰型ニューラルネットワークが長・短
期記憶(LSTM)ネットワークの場合、状態データは、ネットワーク内の各LSTMユニットについて、隠れ状態hとセル状態cとを含み得る。
【0008】
回路は、入力のシーケンス内の現在の入力とシーケンス識別データとを受信する。回路は、シーケンス識別データに基づいて特定のタスクを識別する。回路は、識別されたタスクに対応する状態レジスタから内部状態データを取得する。回路は、取得した内部状態データと現在の入力とをRNNセルに提供して、RNNセルに、取得した内部状態データと現在の入力とを処理して、ニューラルネットワーク出力と識別されたタスクについて更新された内部状態データとを生成させる。回路は、ニューラルネットワーク出力と識別されたタスクについて更新された内部状態とを、RNNセルから受信する。回路は最後に、更新された内部状態データを、識別されたタスクに対応する状態レジスタに書込む。
【0009】
上述の回路は、以下で説明する方法に従ってコンピューティングシステム内のメモリアクセスをより正確に予測するために使用可能である。回路は、複数のメモリ領域のうち1つにおけるコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、メモリ領域の各々について別々の内部状態を指定するデータを保持することと、コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、入力のシーケンス内の現在の入力によって定義されるメモリアクセスアドレスの特定のメモリ領域を識別することと、保持されたデータにおいて指定された内部状態から、特定のメモリ領域についての内部状態を選択することと、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて、入力のシーケンス内の現在の入力を処理して、(i)特定のメモリ領域内のコンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、(ii)特定のメモリ領域の選択された内部状態を更新することと、更新された、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付けることとが可能である。
【0010】
いくつかの実施形態では、1つ以上のコンピュータ可読記憶媒体は、1つ以上の処理デバイスによって実行されると1つ以上の処理デバイスに本明細書で説明するいずれかの実施形態または態様に従って方法およびステップを含む動作を実行させる命令で、エンコードされる。
【0011】
いくつかの実施形態では、システムは、1つ以上のコンピュータと、1つ以上のコンピュータによって実行されるとコンピュータに本明細書で説明するいずれかの実施形態または態様に従って方法およびステップを行わせる命令を格納する1つ以上の記憶デバイスとを備える。
【0012】
本明細書で説明する主題は、以下の利点のち1つ以上を実現するように、特定の実施形態で実現可能である。再帰型ニューラルネットワークに連結された状態レジスタに再帰型ニューラルネットワーク状態を格納することを含む、ハードウェアにおける再帰型ニューラルネットワークの実装によって、再帰型ニューラルネットワークは異なるタスクを立て続けに行うことができ、これはマルチタスキングとして知られている。より詳細に、各状態レジスタは、それぞれのタスクについて状態を格納可能である。再帰型ニューラルネットワークは、第1の状態レジスタから第1の状態を取得して、第1の入力シーケンスを処理することができ、第1の入力シーケンスの処理が完了する前に、第2の状態レジスタから第2の状態を取得して、第2の異なる入力シーケンスを処理できる。たとえば、再帰型ニューラルネットワークを実装する1つのハードウェア回路は、単にそれぞれの状態レジスタからタスクのうち1つに対応する状態を取得することによって、メモリアクセス、キャッシュミス、およびブランチを予測することができる。状態データを状態レジスタに格
納することによって、RNNが各時間ステップにおいて計算しなければならないシーケンス依存性の数が減少し、入力シーケンスの長さだけ、全レイテンシーが低減する。
【0013】
本明細書はまた、入力シーケンスの分類および潜在的な要因による分割が行われ得る態様について説明する。データプリフェッチでは、潜在的な要因による分割の一例は、メモリの異なる領域内のメモリアクセスアドレスのインターリーブされたストリームを分けることである。これらの領域の各々は異なるメモリアクセスパターンを有してもよく、機械学習モデルは、再帰型ニューラルネットワークへの入力として用いられる前にストリームが分けられるかどうか、より効果的に知ることができる。データプリフェッチにおける潜在的な要因による分割の他の例は、これらのメモリアクセスを生じたデータ構造によってメモリアクセスのストリームを分けることである。ここでも、そうすることによって、より効果的に機械学習モデルに学習させることが可能である。
【0014】
本明細書の主題の1つまたは複数の実施形態について、添付の図面および以下の記載において詳細に説明する。本主題の他の特徴、態様、および利点は、説明、図面、および請求項から明らかとなるであろう。
【図面の簡単な説明】
【0015】
図1】ハードウェアで実装される再帰型ニューラルネットワークの例を示す図である。
図2】状態レジスタとマルチプレクサとを有する再帰型ニューラルネットワークシステムの例を示す図である。
図3】ハードウェア回路を用いてマルチタスク再帰型ニューラルネットワークを処理するためのプロセスの例を示すフローチャートである。
図4】メモリからデータをプリフェッチするように構成されたコンピューティングシステムの例を示す図である。
図5】コンピューティングシステムにおいて実行されるコンピュータプログラムの将来のメモリアクセスアドレスを予測するためのプロセスの例を示すフローチャートである。
【発明を実施するための形態】
【0016】
さまざまな図面における同様の参照番号および名称は、同様の要素を示す。
詳細な説明
本明細書は、マルチタスク再帰型ニューラルネットワーク、より詳細には、マイクロプロセッサにおいて時系列予測を向上するマルチタスク再帰型ニューラルネットワークについて説明する。
【0017】
図1は、ハードウェアで実装される再帰型ニューラルネットワーク100を示す図である。再帰型ニューラルネットワークは通常、入力層と、1つ以上の隠れ層と、出力層とを含む。
【0018】
再帰型ニューラルネットワークの入力層は通常、0~現在の時間ステップNの各時間ステップにおけるそれぞれの入力を含む入力のシーケンスを受信し、入力のシーケンスを処理してシーケンスの特徴表現を生成するように構成される。
【0019】
再帰型ニューラルネットワークの隠れ層は再帰層であり、これは、これらの層が、シーケンス内の入力間の状態を保持し、かつ、現在の時間ステップについて出力を生成する一部として現在の状態を更新することを表す。従来の再帰型ニューラルネットワークは、層について出力および次の状態を計算する隠れ層を有し、次の状態は、以前の状態および現在の入力に基づく。状態は、時間ステップにわたって保持され、入力シーケンスにおける
依存性を捉える。
【0020】
特定の種類の再帰型ニューラルネットワークは、長・短期記憶(LSTM)ネットワークである。LSTMネットワーク内の隠れ層は、入力シーケンス内の入力ごとに1つのLSTMユニットを含む。各LSTMユニットは、それ自体の層内の他のLSTMユニットに、および、次の隠れ層または出力層内のLSTMユニットに、出力を提供する。各LSTMユニットは、隠れ状態h、セル状態c、入力ゲートi、忘却ゲートf、および出力ゲートoを含む。これらの3つのゲートの各々は、加重和の起動を計算する個別のニューロンであると考えることができる。直感的に、入力ゲートは、新しい値がセルに流入する範囲を制御し、忘却ゲートは、値がセルに留まる範囲を制御し、出力ゲートは、セル内の値を用いてLSTMユニットの出力起動を計算する範囲を制御する。すなわち、これらのゲートは、LSTMユニットが「記憶する」もの、またはその状態が以前の状態によって影響を受ける態様を制御する。
【0021】
再帰型ニューラルネットワークの出力層は通常、最後の隠れ層から入力を受信し、各時間ステップにおいて出力、たとえば予測を生成するように構成される。出力層は、ソフトマックス層、ロジスティック層、または線形層などでもよい。ソフトマックス出力層は、時間ステップについて可能な出力にわたって離散確率分布を生成する。つまり、各々の可能な出力は、離散点数と関連付けられる。ロジスティック出力層は、パラメータ、たとえば、時間ステップについて可能な出力にわたる分布の平均、ログスケール、または混合重みを生成する。また、線形層は、最後の隠れ層の出力を好適な出力空間内に投影する。実現例によっては、再帰型ニューラルネットワークは出力層を有さない、すなわち、最後の隠れ層の出力は、再帰型ニューラルネットワークの出力である。
【0022】
再帰型ニューラルネットワークのための訓練データは、入力のシーケンスおよびこれらの入力のシーケンスのラベルを含む。各ラベルは、特定の入力シーケンスについて特定の時間ステップで所望されるまたは予想される出力に対応する。再帰型ニューラルネットワークの訓練は、所与の入力のシーケンスについて実際の出力と予測される出力との間の不一致を最小限にするために、ネットワークの重み、たとえば、入力層、RNNセル、および出力層の重みを設定することを含む。所与の入力のシーケンスについて実際の出力と予測される出力との間に不一致がある場合、再帰型ニューラルネットワークの重みを、たとえば時間訓練技術による従来のバックプロパゲーションを用いて更新可能である。再帰型ニューラルネットワークの重みを更新するために、従来技術で公知の他の技術を用いることも可能である。
【0023】
再帰型ニューラルネットワーク100は、隠れ層ごとに1つの状態レジスタと、隠れ層ごとに1つのRNNセルとを含む再帰型ニューラルネットワークのハードウェア実装である。実現例によっては、各RNNセルは、処理ユニットのシストリックアレイにおける処理ユニットである。各処理ユニットは、たとえば、行数の乗算を一括して行う乗算・累算ユニットのセットと、任意の必要なゲーティング関数を適用し、要素単位の乗算を行う他の回路構成要素とを含むことによって、行数の乗算とハードウェア内の再帰型ニューラルネットワーク層の他の動作とを行う。
【0024】
時間ステップNにおいて、入力ユニット110は、入力のシーケンス内の入力Nを受信し、その入力の特徴表現を生成する。RNNセル120および130は、再帰型ニューラルネットワークの固定パラメータと、各隠れ層について状態レジスタに格納されている状態データとの両方を用いて、特徴表現を処理する。RNNセル130の出力はその後出力ユニット140に提供され、出力ユニット140は、時間ステップN+1について出力を生成する。RNNセル120および130はまた、それぞれの状態レジスタ内の状態データを更新して、入力Nを反映する。この状態データは、すべての以前の入力および状態を
捉える。
【0025】
図2は、異なる態様で状態レジスタを利用する再帰型ニューラルネットワークシステム200の例を示す図である。状態レジスタ210a~210nは各々、再帰型ニューラルネットワークの異なる内部状態を指定するデータを格納可能である。各内部状態、およびそれゆえ各状態レジスタは、ニューラルネットワークが行うように訓練されたそれぞれ異なるタスクに対応する。たとえば、第1の状態レジスタは、メモリアクセスアドレスの予測に対応する内部状態を指定するデータを格納可能である、すなわち、アドレスのロードおよび格納が可能である一方で、第2の状態レジスタは、コンピュータプログラムの分岐の予測に対応する内部状態を指定するデータを格納可能である。その一方で、他の状態レジスタはたとえば、将来のプログラム命令またはキャッシュミスの予測に対応する内部状態を指定するデータを格納可能である。
【0026】
マルチプレクサであるRNNセレクタ220は、シーケンス識別データに基づいて、再帰型ニューラルネットワークが特定の時間に用いる特定の内部状態を選択可能である。シーケンス識別データは、状態レジスタ、およびそれゆえ、RNN計算セル230にロードされるべき内部状態を指定する。シーケンス識別データは、RNN計算セル230が行うべき、たとえば、(分岐、プログラム命令、またはキャッシュミスとは対照的に)メモリアクセスアドレスを予測するべき特定のタスクを指定するユーザ入力に基づき得る。代替的に、シーケンス識別データは、現在の入力についての観測に基づき得る。たとえば、シーケンス識別データは、現在の入力がキャッシュアドレスであるという観測に基づき得る。そのような状況では、シーケンス識別データは、キャッシュミスを予測するタスクに対応する内部状態がRNN計算セル230にロードされるべきであると指定することがある。
【0027】
再帰型ニューラルネットワークシステム200はまた、固定パラメータのセットがロードされる入力ユニット240も含む。入力ユニット240は、現在の入力の受信、現在の入力の特徴表現の生成、および、RNN計算セル230への特徴表現の提供が可能である。
【0028】
選択された状態、特徴表現、およびRNN計算セル230内に保持されている固定重みのセットを用いて、RNN計算セル230は、タスクについての予測および次の状態を生成可能である。再帰型ニューラルネットワークが複数の隠れ層を有する場合、RNN計算セル230は、それ自体の状態レジスタとRNNセレクタとを有するであろう他のRNN計算セルに対して、生成された予測を提供可能である。また、再帰型ニューラルネットワークシステムは、任意に出力ユニットを含み得る。その一方で、RNN計算セル230は、適切な状態レジスタ210a~210nに、タスクについて次の状態を提供して、当該レジスタの以前の状態を上書き可能である。上述したようなマルチタスク再帰型ニューラルネットワークの訓練には、各タスクを行うように再帰型ニューラルネットワークを訓練することが必要である。
【0029】
代替的に、状態レジスタ210a~210nは各々、複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部状態を指定するデータを格納可能である。1つのメモリ領域内のメモリアクセスは通常2つ以上のメモリ領域にわたるメモリアクセスよりも予測可能なパターンをたどるため、このようにメモリ領域によってメモリアクセスを分割することによって、メモリアクセス予測を向上可能である。すなわち、RNN計算セル230は、アドレス空間全体にわたるのではなく特定のメモリ領域においてメモリアクセスを予測するときに、より正確な予測を生成する。
【0030】
図3は、マルチタスク再帰型ニューラルネットワークを処理するためのプロセス300の例を示すフローチャートである。プロセス300は、適切にプログラムされた回路によって行われる。回路は、再帰型ニューラルネットワークの動作を行うように構成されたRNNセル、複数の状態レジスタ、および他の回路構成要素を備える。各状態レジスタは、(i)再帰型ニューラルネットワークのために内部状態データを格納するように構成されており、(ii)ニューラルネットワークが行うように訓練された複数のタスクのそれぞれのタスクに対応する。
【0031】
回路は、入力のシーケンス内の現在の入力およびシーケンス識別データを受信する(310)。入力シーケンスは、複数の時間ステップの各々におけるそれぞれの入力を含む。時間ステップは、連続していてもしていなくてもよい。シーケンス識別データは、タスク、およびそれゆえ、内部状態がRNNセルにロードされる状態レジスタを指定する。
【0032】
回路は、シーケンス識別データに基づいて行われるべき特定のタスクを識別する(320)。シーケンス識別データは、RNNセルが行うべき、たとえば、(分岐、プログラム命令、またはキャッシュミスとは対照的に)メモリアクセスアドレスを予測すべき特定のタスクを指定するユーザ入力に基づき得る。代替的に、シーケンス識別データは、現在の入力についての観測に基づき得る。たとえば、シーケンス識別データは、現在の入力がキャッシュアドレスであるという観測に基づき得る。そのような状況では、シーケンス識別データは、キャッシュミスを予測するタスクに対応する内部状態がRNNセルにロードされるべきであると指定することがある。
【0033】
回路は、識別されたタスクに対応する状態レジスタから内部状態データを取得する(330)。回路は、取得した内部状態データおよび現在の入力をRNNセルに提供して、RNNセルに、取得した内部状態データおよび現在の入力を処理させて、ニューラルネットワーク出力および識別されたタスクについて更新された内部状態データを生成する(340)。
【0034】
回路は、RNNセルから、ニューラルネットワーク出力および識別されたタスクについて更新された内部状態を受信する(350)。回路は最後に、識別されたタスクに対応する状態レジスタに、更新された内部状態を書込む(360)。
【0035】
図1および図2を参照して説明した再帰型ニューラルネットワークの例および図3を参照して説明したプロセスの例は、コンピューティングシステム内の将来のメモリアクセスアドレスを予測するために使用可能である。
【0036】
コンピュータプログラムは、コンピューティングシステムに、コンピューティングシステム内のさまざまな記憶場所に格納されたデータに対する動作を行わせる。通常、コンピューティングシステムは、データに対して動作を行うことが可能になる前に、メインメモリまたはローカルキャッシュからローカルレジスタにデータをロードする必要がある。しかしながら、メインメモリは通常大きく、かつローカルレジスタから物理的に離れているため、データをメインメモリからロードするには特に時間がかかる。そのため、定期的にコンピューティングシステムにメインメモリからデータを検索させるコンピュータプログラムは、そうでないコンピュータプログラムよりも実行に時間がかかる。メインメモリからデータをプリフェッチし、それが必要になる前により早いローカルキャッシュに格納することによって、コンピューティングシステムは、コンピュータプログラムのランタイムを短縮可能である。再帰型ニューラルネットワークは、プリフェッチされるべきデータを予測するために使用可能である。
【0037】
図4は、メモリからデータをプリフェッチし、かつ、ローカルキャッシュに当該データ
を格納するように構成されたコンピューティングシステム400の例を示す図である。コンピューティングシステム400は、図示されていない1つ以上のプロセッサを用いて、コンピュータプログラム命令を実行可能である。特に、コンピューティングシステム400は、命令メモリ内にコンピュータプログラムを格納し、その後、コンピュータプログラムによって定義される順番で命令を実行可能である。
【0038】
コンピューティングシステム400は、プログラムカウンタ410を有する。プログラムカウンタ、つまり、命令アドレスレジスタは、実行されるべき次のコンピュータプログラム命令を示す値を格納するレジスタである。すなわち、プログラムカウンタ410は、実行されるべき次のコンピュータプログラム命令が格納されるメモリアドレスを格納する。
【0039】
命令サイクルが開始すると、コンピューティングシステム400は、プログラムカウンタ410によって指定されたアドレスから次のコンピュータプログラム命令を受信する。プログラムカウンタ410に格納されたアドレスは、メモリ420内のメモリのブロックである命令メモリ422内の場所に対応する。
【0040】
典型的には、所与のコンピュータプログラム命令が、たとえばロード、格納、加算、減算、否定論理和、分岐などの動作、1つ以上の発信元レジスタ、および宛先レジスタを指定する。コンピューティングシステム400は、発信元レジスタ内に格納されたデータに対して指定された動作を行い、その結果を宛先レジスタに格納する。たとえば、コンピュータプログラム命令は、レジスタAに格納されたデータがレジスタBに格納されたデータに加算されるべきであり、かつ、結果がレジスタCに格納されるべきであると指定し得る。
【0041】
通常、コンピューティングシステムは、限定された数のローカルレジスタを有し、そのため、動作が行われるべきデータは、必要な場合にのみこれらのローカルレジスタにロードされる。しかしながら、メモリからデータをフェッチするのは時間がかかり、コンピュータプログラムの実行を遅くする。この問題の1つの解決策は、将来動作が行われるであろうデータを予測し、そのデータをプリフェッチし、それをローカルキャッシュ430などのより速いローカルメモリに格納することである。ローカルキャッシュは概してメインメモリよりシステムに物理的に近くメインメモリよりも小さいため、ローカルキャッシュからのデータのフェッチは、メインメモリからのデータのフェッチよりも速い。
【0042】
しかしながら、ローカルキャッシュはサイズも限られており、コンピューティングシステムは、任意の所与の時間にローカルキャッシュにメインメモリの小さなサブセットしか格納できない。したがって、コンピューティングシステム400は有利なことに、将来のメモリアクセスアドレスのサブセットを予測し、これらのアドレスからのデータをローカルキャッシュに格納することができる。コンピューティングシステムが正確な予測を行う場合、コンピューティングシステムは、コンピュータプログラム命令をより速く実行可能である。
【0043】
コンピューティングシステム400の予測サブシステム440は、以前のプログラムカウンタアドレスのシーケンスおよび対応するメモリアクセスアドレスを受信し、かつ、将来のメモリアクセスアドレスを予測するように構成される。予測サブシステム440は、ニューラルネットワークサブシステム442を含む。ニューラルネットワークサブシステム442は、図2を参照して説明した再帰型ニューラルネットワークシステムでもよい。ニューラルネットワークサブシステム442は、図2を参照して説明した構成要素に加えて、複数のメモリ領域から各メモリアクセスの特定のメモリ領域を求めるように構成されたメモリ領域分類器444を含む。1つのメモリ領域内のメモリアクセスは通常2つ以上
のメモリ領域にわたるメモリアクセスよりも予測可能なパターンをたどるため、メモリ領域によってメモリアクセスを分けることによって、メモリアクセス予測を向上可能である。メモリを領域に分割する重要性について、図5を参照してより詳細に説明する。
【0044】
予測サブシステム440は、コンピュータプログラムが実行される同じコンピュータで実装可能である、または、異なるコンピュータで実装可能である。
【0045】
予測サブシステム440が特定のメモリアクセスアドレスを予測した後で、コンピューティングシステム400は、そのアドレスからデータをプリフェッチし、それをローカルキャッシュ430に格納する。予測サブシステム440は、コンピュータプログラムが実行されるとメモリアクセスアドレスの予測を継続する、すなわち、コンピューティングシステム400はこれらのアドレスからのデータのプリフェッチを継続する。データメモリ424からデータをフェッチするよりも、ローカルキャッシュ430からデータをフェッチする方が速い。これによって、コンピューティングシステム400によるコンピュータプログラムの実行がより速くなる。
【0046】
本明細書は主にデータのプリフェッチについてのみ説明するが、本明細書で説明する再帰型ニューラルネットワークシステムは、マイクロプロセッサにおいて他の時系列予測を行うように構成可能である。たとえば、システムは、命令メモリから命令をプリフェッチするために用いることができる。
【0047】
また、システムを、メモリ曖昧性除去を最適化するために用いることが可能である。メモリ曖昧性除去は、順不同にメモリアクセス命令を実行するコンピューティングシステムによって用いられる技術のセットである。これらの技術によって、メモリ動作間の依存性が検出または予測されて、メモリアクセス効率および速度が増加する。
【0048】
本明細書で説明する再帰型ニューラルネットワークシステムはまた、キャッシュ置換ポリシーを最適化するために使用可能である。キャッシュはサイズが限られており、コンピューティングシステムがデータをキャッシュ内に置くと、通常、キャッシュから対応する量のデータを除去する必要がある。再帰型ニューラルネットワークシステムは、最良のデータ、たとえば、近い将来にコンピューティングシステムによって最も用いられそうにないデータを予測して、キャッシュから除去可能である。代替的に、再帰型ニューラルネットワークシステムは、近い将来に最も使用される可能性のあるデータを予測し、確実にデータがキャッシュ内に留まるようにすることが可能である。たとえば、「最も長い間使われていない」キャッシュにおいて、すなわち、新しいデータを優先してキャッシュ内の最も長い間使われていないデータが除去されるべきであると指定する置換ポリシーを有するキャッシュにおいて、システムは、近い将来に使用されると予測されるデータについて「世代ビット(age bit)」の更新が可能である。世代ビットを更新することによって、確
実にデータが新しいデータによって置換されることはない。
【0049】
図5は、コンピューティングシステムで実行されるコンピュータプログラムの将来のメモリアクセスアドレスを予測するためのプロセス500の例を示すフローチャートである。図2を参照して説明した再帰型ニューラルネットワークシステムは、プロセス500の例を行うことができる。代替的に、プロセス500は、ソフトウェアで実装可能である。便宜上、プロセス500は、1つ以上の場所で1つ以上のコンピュータの適切にプログラムされたシステムによって実行されると説明される。
【0050】
システムは、複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、複数のメモリ領域の各々について別々の内部状態を指定するデータを保持する(510)。
【0051】
システムは、コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信する(520)。入力のシーケンスは、以前のプログラムカウンタアドレスのシーケンスおよび対応するデルタ値でもよい。各デルタ値は、それぞれの第1のメモリアクセスアドレスとそれぞれの第2のメモリアクセスアドレスとの間の差を定義する。第1のメモリアクセスアドレスは、対応するプログラムカウンタアドレスによって示される命令が実行されたときにアクセスされたメモリアドレスを定義する。たとえば、特定のプログラムカウンタアドレスは、実行されるとメモリからデータをフェッチする命令を格納するメモリアドレスを示し得る。そのような場合、当該データのメモリアドレスは、第1のメモリアクセスアドレスである。第2のメモリアクセスアドレスは、第1のメモリアドレスがアクセスされる前にアクセスされたメモリアドレスである。各々の以前のメモリアクセスアドレスは、コンピューティングシステムのメインメモリ内の複数のメモリ領域のうち1つの領域内のアドレスである。システムは、メモリアクセスがタッチするメモリページを識別することによって、メモリ領域を求めることができる。代替的に、システムは、クラスタリングアルゴリズム、たとえば、k-meansクラスタリングアルゴリズムをメモリアクセスに適用することによって、メモリ領域を求めることができる。
【0052】
いくつかの実現例では、システムは、現在の入力の入力表現を生成する。たとえば、現在の入力がプログラムカウンタアドレスおよびデルタ値である実現例では、システムは、入力表現としての機能を果たす高次元空間内の数字埋込みにプログラムカウンタアドレスおよびデルタ値をマッピング可能である。この埋込みは、高次元の実数値ベクトルである。
【0053】
システムは、訓練されたニューラルネットワークによって生成されたルックアップテーブルを用いて、埋込みを生成可能である。たとえば、プログラムカウンタアドレスおよびデルタ値のペアはインデックスにマッピング可能であり、インデックスは、ルックアップテーブル内で埋込みを検索するために用いることが可能である。代替的に、システムは、訓練されたニューラルネットワークに直接プログラムカウンタアドレスおよびデルタ値を提供することによって、埋込みを生成可能である。
【0054】
システムは、入力のシーケンス内の現在の入力によって定義されたメモリアクセスアドレスの特定のメモリ領域を識別する(530)。
【0055】
システムは、保持されたデータ内で指定された内部状態から、特定のメモリ領域について内部状態を選択する(540)。
【0056】
システムは、特定のメモリ領域について選択された内部状態に従って、再帰型ニューラルネットワークを用いて入力のシーケンス内の現在の入力を処理して、出力を生成し、選択された内部状態を更新する(550)。出力は、予測されたメモリアクセスアドレスの確率分布を定義する。予測されたメモリアクセスアドレスは、特定のメモリ領域内のコンピュータプログラムの将来のメモリアクセスアドレスである。
【0057】
システムは、閾値基準を設定し、分布内の確率のいずれかが閾値基準を満たすかどうか判断することが可能である。たとえば、閾値基準は、0.5の確率であり得る、すなわち、特定のメモリアドレスが将来のメモリアクセスアドレスである、つまり、コンピュータプログラムがコンピューティングシステムにメモリアドレス内のデータにアクセスさせる可能性が50%であり得る。システムは、動的に閾値基準を調整可能である。たとえば、システムは、メモリ帯域幅の利用率が高いときにより高い閾値を設定可能であり、メモリ帯域幅利用率が低いときにより低い閾値を設定可能である。
【0058】
確率分布内の特定の確率が閾値基準を満たさないという判断に応じて、システムは、その確率と関連するメモリアクセスからデータをフェッチし、そのデータをローカルキャッシュに格納可能である。場合によっては、システムは、複数の確率が閾値基準を満たすと判断し、これらの確率と関連する複数のメモリアドレスからデータをプリフェッチしてもよい。そうすることによって、正しいデータがプリフェッチされる可能性が増す。このため、コンピューティングシステム上で実行されるコンピュータプログラムのランタイムが減少する。
【0059】
システムは通常、識別されたメモリ領域内の次のメモリアクセスアドレスを予測するように構成される。しかしながら、今後さらに先のメモリアクセスアドレスを予測するように、再帰型ニューラルネットワークを訓練することが可能である。たとえば、再帰型ニューラルネットワークは、識別されたメモリ領域内の2つ先(N+2)、4つ先(N+4)、または8つ先(N+8)のメモリアクセスアドレスを予測するように訓練可能である。再帰型ニューラルネットワークは、順次メモリアクセスアドレスとは異なり、たとえば、時間ステップNにおけるメモリアクセスアドレスと時間ステップN-2におけるメモリアクセスアドレスとを用いて各々計算されたデルタ値を再帰型ニューラルネットワークに提供することによって、2つ先のメモリアクセスアドレスを予測するように訓練可能である。
【0060】
いくつかの実現例では、上述のようなデータのプリフェッチの代わりに、システムは、フェッチ命令をコンピュータプログラムに挿入可能である。フェッチ命令の実行によって、データは、閾値基準を満たす確率と関連する将来のメモリアドレスからフェッチされる。フェッチ命令は、そうでなければデータがメモリからフェッチされるであろうコンピュータプログラムの将来の命令の前に、コンピュータプログラム内に挿入される必要がある。このように、将来の命令が実行されるときに、将来の命令が必要とするデータがローカルキャッシュ内に既に存在する。将来の命令の実行は、キャッシュミスではなくキャッシュヒットになり、システムは、メモリからデータをフェッチする必要がなくなる。これにより、メモリからのデータのフェッチは非常に時間がかかるため、コンピュータプログラムをより速く実行可能である。システムは、2つ以上の確率が閾値基準を満たす場合、2つ以上のフェッチ命令をコンピュータプログラムに挿入可能である。
【0061】
実現例によっては、システムは、さらに他の特徴を再帰型ニューラルネットワークに提供する。たとえば、システムは、最も直近のアクセスがロードであったか格納であったかを表示可能である。システムはまた、再帰型ニューラルネットワークに現在のキャッシュ占有率を提供可能である。現在のキャッシュ占有率は、上述のような閾値基準に影響を及ぼし得る。
【0062】
システムは最後に、更新された、選択された内部状態を、保持されたデータ内の特定のメモリ領域と関連付ける(560)。
【0063】
本明細書において記載される主題および機能的動作の実施形態は、本明細書に開示される構造およびそれらの構造的等価物を含む、デジタル電子回路構成要素において、有形で実施されるコンピュータソフトウェアもしくはファームウェアにおいて、コンピュータハードウェアにおいて、またはそれらの1つ以上の組合せにおいて実現され得る。本明細書において記載される主題の実施形態は、1つ以上のコンピュータプログラムとして、すなわち、データ処理装置による実行のために、または、データ処理装置の動作を制御するために有形の非一時的な記憶媒体上でエンコードされたコンピュータプログラム命令の1つ以上のモジュールとして、実現され得る。コンピュータ記憶媒体は、機械可読記憶装置、機械可読記憶基板、ランダムもしくはシリアルアクセスメモリデバイス、または、それら
の1つ以上の組合せであり得る。代替的に、またはさらに、プログラム命令は、データ処理装置による実行に好適な受信側装置への送信のために情報をエンコードするよう生成される、たとえばマシンにより生成された電気信号、光信号、または電磁気信号などの、人為的に生成された伝搬信号上でエンコードすることができる。
【0064】
「データ処理装置」という用語は、データ処理ハードウェアのことを言い、例としてプログラマブルプロセッサ、コンピュータ、または複数のプロセッサもしくはコンピュータを含む、データを処理するためのあらゆる種類の装置、デバイス、およびマシンを包含する。装置はまた、既製のもしくは特注の並列処理サブシステム、たとえば、GPUもしくは他の種類の専用処理サブシステムでもよい、またはこれをさらに含んでもよい。装置はまた、専用論理回路構成要素、たとえば、FPGA(フィールドプログラマブルゲートアレイ)もしくはASIC(特殊用途向け集積回路)でもよい、またはこれをさらに含んでもよい。装置は任意に、ハードウェアに加えて、コンピュータプログラムの実行環境を作成するコード、たとえば、プロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはこれらの1つ以上の組合せを含んでもよい。
【0065】
プログラム、ソフトウェア、ソフトウェアアプリケーション、アプリ、モジュール、ソフトウェアモジュール、スクリプトまたはコードとも呼ばれる、または記載されることもあるコンピュータプログラムは、コンパイル型もしくはインタープリタ型言語、または宣言型もしくは手続き型言語を含む任意の形態のプログラミング言語で記述され得、スタンドアロンプログラムとして、または、モジュール、コンポーネント、サブルーチン、もしくは、コンピューティング環境での使用に好適な他のユニットとして任意の形態で展開され得る。プログラムは、ファイルシステムにおけるファイルに対応し得るが、対応する必要があるわけではない。プログラムは、当該プログラムに専用である単一のファイルにおいて、または、複数の連携ファイル(coordinated files)(たとえばコードの1つ以上
のモジュール、サブプログラムまたは部分を格納するファイル)において、他のプログラムまたはデータ(たとえばマークアップ言語ドキュメントに格納される1つ以上のスクリプト)を保持するファイルの一部に格納され得る。コンピュータプログラムは、1つの場所に位置するかもしくは複数の場所にわたって分散されデータ通信ネットワークによって相互接続される1つのコンピュータまたは複数のコンピュータ上で実行されるように展開され得る。
【0066】
本明細書で使用する「エンジン」または「ソフトウェアエンジン」は、入力と異なる出力を提供する、ソフトウェアによって実現される入出力システムのことを言う。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(software development kit:「SDK」)またはオブジェクト等の機能の符号化ブロックであってもよい。各エンジンは、適切な任意の種類の計算装置上で実現することができ、この計算装置は、たとえば、サーバ、携帯電話、タブレットコンピュータ、ノートブックコンピュータ、音楽再生機器、電子書籍リーダー、ラップトップもしくはデスクトップコンピュータ、PDA、スマートフォン、または、1つ以上のプロセッサとコンピュータ読取可能媒体とを含むその他の静止もしくは移動デバイスである。くわえて、エンジンの2つ以上は、同一の計算装置上で実現されても、異なる計算装置上で実現されてもよい。
【0067】
本明細書に記載のプロセスおよび論理フローは、入力データに対して作用し出力を生成することによって機能を果たすために1つ以上のコンピュータプログラムを実行する1つ以上のプログラマブルコンピュータによって実行することができる。また、プロセスおよび論理フローは、専用ロジック回路構成要素たとえばFPGAまたはASICによって、または、専用ロジック回路構成要素と1つ以上のプログラムされたコンピュータとの組合せによって、実行可能である。
【0068】
コンピュータプログラムの実行に好適なコンピュータは、汎用マイクロプロセッサもしくは特殊目的マイクロプロセッサもしくはその両方または任意の種類の中央処理ユニットに基づき得る。通常、中央処理ユニットは、リードオンリメモリもしくはランダムアクセスメモリまたはその両方から命令およびデータを受け取る。コンピュータの必須の要素は、命令を実行するための中央処理ユニットと、命令およびデータを格納するための1つ以上のメモリデバイスとである。中央処理ユニットおよびメモリは、特殊目的論理回路構成要素によって補足され得るか、または特殊目的論理回路に組込まれ得る。通常、コンピュータはさらに、たとえば磁気ディスク、光磁気ディスクまたは光ディスクといった、データを格納するための1つ以上の大容量記憶装置を含むか、当該1つ以上の大容量記憶装置からデータを受け取るかもしくは当該1つ以上の大容量記憶装置にデータを転送するよう動作可能に結合されるか、またはその両方を行う。しかしながら、コンピュータはそのような装置を有する必要はない。さらに、コンピュータはたとえば、携帯電話、携帯情
報端末(PDA)、モバイルオーディオまたはビデオプレーヤ、ゲームコンソール、全地球測位システム(GPS)受信機、またはポータブル記憶装置(たとえばユニバーサルシリアルバス(USB)フラッシュドライブ)といった別のデバイスに埋め込まれ得る。
【0069】
コンピュータプログラム命令およびデータを格納するのに好適なコンピュータ可読媒体は、例として、たとえばEPROM、EEPROMおよびフラッシュメモリデバイスといった半導体メモリデバイスを含むすべての形態の不揮発性メモリ、媒体およびメモリデバイス;たとえば内部ハードディスクまたはリムーバブルディスクといった磁気ディスク;光磁気ディスク;ならびにCD-ROMおよびDVD-ROMディスクを含む。
【0070】
ユーザとの対話を与えるために、本明細書に記載される主題の実施形態は、たとえばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタといったユーザに対して情報を表示するための表示デバイスと、たとえばマウス、トラックボール、または存在感知ディスプレイまたは他のサーフェスといったユーザがコンピュータに入力を与えることができるキーボードおよびポインティングデバイスとを有するコンピュータ上で実現され得る。他の種類のデバイスが、同様に、ユーザとの対話を与えるために用いられ得る;たとえば、ユーザに提供されるフィードバックは、たとえば視覚フィードバック、聴覚フィードバックまたは触覚フィードバックといった任意の形態の感覚フィードバックであり得る;ユーザからの入力は、音響入力、音声入力、または触覚入力を含む任意の形態で受け取られ得る。くわえて、コンピュータは、ユーザが使用するデバイスにドキュメントを送信しユーザが使用するデバイスからドキュメントを受信することによって、たとえば、ウェブブラウザから受信された要求に応答してユーザのデバイス上のウェブブラウザにウェブページを送信することによって、ユーザと対話し得る。また、コンピュータは、テキストメッセージまたは他の形式のメッセージを個人用デバイス、たとえばスマートフォンなどに送信し、メッセージングアプリケーションを実行し、ユーザから応答メッセージを受信することにより、ユーザと対話できる。
【0071】
本明細書は多くの特定の実現例の詳細を含んでいるが、これらは如何なる発明の範囲または請求され得るものの範囲に対する限定としても解釈されるべきではなく、特定の発明の特定の実施形態に特有の特徴であり得る記載として解釈されるべきである。別個の実施形態の文脈で本明細書において記載されるある特徴は、単一の実施形態において組合せでも実現され得る。反対に、単一の実施形態の文脈において記載されるさまざまな特徴は、複数の実施形態において別々に、または任意の好適な部分的組合わせでも実現され得る。さらに、特徴は、ある組合せにおいて作用すると上で記載され、最初はそのように請求されていさえする場合もあるが、請求される組合せからの1つ以上の特徴はいくつかの場合には当該組合せから削除され得、請求される組合せは、部分的組合わせまたは部分的組合わせの変形例に向けられ得る。
【0072】
同様に、動作が図においては特定の順に示されているが、そのような動作は、望ましい結果を達成するために、示された当該特定の順もしくは連続した順で実行される必要があると理解されるべきではなく、または、すべての示された動作が実行される必要があると理解されるべきではない。ある状況においては、マルチタスキングおよび並列処理が有利であり得る。さらに、上述の実施形態におけるさまざまなシステムモジュールおよびコンポーネントの分離は、すべての実施形態においてそのような分離を必要とすると理解されるべきではなく、記載されるプログラムコンポーネントおよびシステムは通常単一のソフトウェア製品に統合され得るかまたは複数のソフトウェア製品にパッケージ化され得ることが理解されるべきである。
【0073】
主題の特定の実施形態が記載された。他の実施形態は以下の請求の範囲内にある。たとえば、請求項において記載されるアクションは、異なる順で実行され得、それでも望ましい結果を達成し得る。一例として、添付の図において示されるプロセスは、望ましい結果を達成するために、示された特定の順または連続する順であることを必ずしも必要としない。ある場合においては、マルチタスキングおよび並列処理が有利であり得る。
図1
図2
図3
図4
図5
【手続補正書】
【提出日】2024-06-20
【手続補正1】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項1】
方法であって、
複数のメモリ領域内のコンピュータプログラムのメモリアクセスアドレスを予測するように訓練された再帰型ニューラルネットワークのために、前記複数のメモリ領域の各々について別々の内部状態を指定する内部状態データを保持することと、
前記コンピュータプログラムの以前のメモリアクセスアドレスのシーケンスを定義する入力のシーケンス内の現在の入力を受信することと、
前記入力のシーケンス内の前記現在の入力によって定義される前記メモリアクセスアドレスの特定のメモリ領域を識別することと、
保持された前記データ内で指定された内部状態から、前記特定のメモリ領域についての前記内部状態を選択することと、
前記特定のメモリ領域について選択された前記内部状態に従って、前記再帰型ニューラルネットワークを用いて前記入力のシーケンス内の前記現在の入力を処理して、
前記特定のメモリ領域内の前記コンピュータプログラムの将来のメモリアクセスアドレスである予測されたメモリアクセスアドレスの確率分布を定義する出力を生成し、
前記特定のメモリ領域の選択された前記内部状態を更新することと、
更新された、選択された前記内部状態を、保持された前記データ内の前記特定のメモリ領域と関連付けることとを備える、方法。
【外国語明細書】