様々な図面における同様の参照記号は、同様の要素を指す。
ボイス対応デバイス(例えば、ボイスアシスタントを実行するユーザデバイス)によって、ユーザは、声を出してクエリまたはコマンドを話すこと、クエリを処理し応答すること、及び/またはコマンドに基づいて機能を実行することが可能となる。規約によってボイス対応デバイスに対して注意を促すために話される所定の用語/フレーズが予約されている、「ホットワード」(「キーワード」、「注意ワード」、「ウェイクアップフレーズ/ワード」、「トリガフレーズ」、または「ボイスアクション開始コマンド」とも呼ばれる)の使用により、ボイス対応デバイスは、システムに向けられた発話(即ち、発話中のホットワードの後に続く1つ以上の用語を処理するためのウェイクアッププロセスを開始するためのもの)と、環境内の個人に向けられた発話とを識別することができる。典型的には、ボイス対応デバイスは、バッテリ電力を節約するためにスリープ状態で動作し、話されたホットワードの後に入力オーディオデータが続いていない限り、入力オーディオデータを処理しない。例えば、スリープ状態にある間、ボイス対応デバイスは、マイクロフォンを介して入力オーディオをキャプチャし、入力オーディオ内のホットワードの存在を検出するように訓練されたホットワード検出器を使用する。入力オーディオ内でホットワードが検出されると、ボイス対応デバイスは、ホットワード及び/またはホットワードの後に続く入力オーディオ内の任意の他の用語を処理するためのウェイクアッププロセスを開始する。
ホットワード検出は、干し草の山の中から針を探し出すことに似ている。これは、ホットワード検出器がストリーミングオーディオを継続的に聞き取り、ストリーミングオーディオ内でホットワードの存在が検出されたときに正確かつ瞬時にトリガしなければならないためである。言い換えると、ホットワード検出器には、ホットワードの存在が検出されない限りストリーミングオーディオを無視することが課されている。一般的に、オーディオの連続ストリーム内のホットワードの存在を検出することの複雑さに対処するために、ホットワード検出器によってニューラルネットワークが使用されている。
ホットワード検出器は、典型的には、3つの主要なコンポーネント、信号処理フロントエンドと、ニューラルネットワーク音響エンコーダと、手動設計されたデコーダと、を含む。信号処理フロントエンドは、ユーザデバイスのマイクロフォンによってキャプチャされた生オーディオ信号を、ニューラルネットワーク音響エンコーダコンポーネントによって処理するためにフォーマットされた1つ以上のオーディオ特徴に変換し得る。例えば、ニューラルネットワーク音響エンコーダコンポーネントは、これらのオーディオ特徴を音素に変換してもよく、手動設計されたデコーダは、ハンドコーディングされたアルゴリズムを使用して、音素を継ぎ合わせ、オーディオシーケンスがホットワードを含むか否かの確率を提供する。
ニューラルネットワークを訓練するための一般的な方法は、ラベル付き訓練サンプルをニューラルネットワークに提供することを含む。訓練サンプルは、典型的には、ニューラルネットワークの所望の出力に基づいてラベル付けされた、プレスクリーニングされたデータ入力である。例えば、ホットワード検出器の場合、訓練サンプルは、ホットワードの存在のインジケーション(例えば、ホットワードが訓練サンプル中に存在する場合は「1」、それ以外の場合は「0」)でラベル付けされる。ニューラルネットワークは、訓練サンプルを分析し、次いで事前定義されたターゲット出力(即ち、ラベル)と比較される出力または予測を生成して、損失関数を使用して損失を決定する。損失は、ラベルと比較した出力の精度を示す。次いで、損失はニューラルネットワークに供給され、ニューラルネットワークは、損失に基づいて1つ以上の重み、値、またはパラメータを調節する。
ホットワード検出器を訓練する場合、訓練サンプルは、オーディオシーケンスを含んでもよく、ニューラルネットワークは、オーディオシーケンスがホットワードを含むというインジケーションまたは確率を出力してもよい。この訓練プロセスは簡単なように見えるが、オーディオシーケンスにラベル付けする多くの異なる方法が存在し、それぞれのラベル付けの慣例により固有の損失がもたらされる。同様に、結果として生じる各損失は、特定の方法でホットワード検出器を調整する。例えば、単純な交差エントロピーに基づく損失は、音素列から導出されたラベルを使用する。交差エントロピーに基づく損失は、キーワードを含む全ての副音素の位置アライメントに非常に影響を受けやすく、したがって、結果として得られる訓練済みホットワード検出器は、パターンの検出をシグナリングするために正確な位置を予測するための学習にそのリソースの相当な部分を使用する。別の例では、最大プーリング技術は、キーワードの最後の音素の位置のみから導出されたラベルを使用する。したがって、上記の交差エントロピーの例とは異なり、最大プーリング技術は、他の副音素の位置情報に依存せず、結果として得られるホットワード検出器は、位置アライメントにおけるノイズを無視し得るため、交差エントロピー基づく損失を使用して訓練されたホットワード検出器よりも安定している。しかしながら、上記の例はそれぞれ、相互に、または他の技術と比較すると、長所及び短所を有する。
本明細書における実施態様は、訓練入力セット内のサンプルごとの2つの別個のターゲットラベルを使用してホットワード検出器を訓練する、エンドツーエンドホットワードスポッティングシステム(「キーワードスポッティングシステム」とも呼ばれる)を対象とする。同様に、訓練サンプルごとに、2つのターゲットラベルがそれぞれ、2つの別個の損失を決定するために使用される。次いで、ホットワード検出器は、2つの損失の両方に基づく損失を受信し、それに応じて調節する。2つの異なるラベルを使用して異なるように決定された2つの損失を使用することによって、ホットワード検出器は、複数の技術を使用して微調整され得る。例えば、交差エントロピー及び最大プーリングに基づく損失関数を同時に使用してホットワード検出器を訓練することにより、いずれかの技術で個別に訓練されたホットワード検出器よりも正確かつ効率的なホットワード検出器を得ることができる。
図1を参照すると、いくつかの実施態様では、例示的なシステム100は、それぞれのユーザ10にそれぞれが関連付けられ、かつネットワーク104を介してリモートシステム110と通信する、1つ以上のユーザデバイス102を含む。各ユーザデバイス102は、携帯電話、コンピュータ、ウェアラブルデバイス、スマートアプライアンス、スマートスピーカなどのコンピューティングデバイスに対応してもよく、データ処理ハードウェア103及びメモリハードウェア105を備える。リモートシステム110は、スケーラブル/エラスティックコンピューティングリソース112(例えば、データ処理ハードウェア)及び/またはストレージリソース114(例えば、メモリハードウェア)を有する単一のコンピュータ、複数のコンピュータ、または分散システム(例えば、クラウド環境)であってもよい。ユーザデバイス102は、ネットワーク104を介してリモートシステム110から訓練された記憶済みニューラルネットワーク300を受信し、訓練された記憶済みニューラルネットワーク300を実行して、ストリーミングオーディオ118内のホットワードを検出する。訓練された記憶済みニューラルネットワーク300は、ストリーミングオーディオ118に対する意味解析または音声認識処理を実行することなくストリーミングオーディオ内のホットワードの存在を検出するように構成された、ユーザデバイス102のホットワード検出器106(ホットワーダーとも呼ばれる)に常駐し得る。任意選択で、訓練された記憶済みニューラルネットワーク300は、追加または代替として、ユーザデバイス102及び/またはリモートシステム110の自動音声認識器(ASR)108に常駐して、ホットワード検出器106がストリーミングオーディオ118内のホットワードの存在を正しく検出したことを確認してもよい。
いくつかの実施態様では、データ処理ハードウェア112は、注釈付き発話プール130から得られた訓練サンプル400を使用して、記憶済みニューラルネットワーク300を訓練する。訓練サンプルは、第1のラベル420、420a及び第2のラベル420、420bを含み得る。即ち、各訓練サンプルは、2つの別個のラベル420a、420bで注釈が付けられ得る。注釈付き発話プール130は、メモリハードウェア114及び/または何らかの他のリモートメモリ位置(複数可)に常駐し得る。図示した例では、ユーザ10が、ユーザデバイス102によってストリーミングオーディオ118としてキャプチャされたホットワード(例えば、「Hey Google」)を含む発話120を話すと、ユーザデバイス102上で実行中の記憶済みニューラルネットワーク300は、ユーザデバイス102上で、発話120内のホットワードの後に続くホットワード及び/または1つ以上の他の用語(例えば、クエリもしくはコマンド)を処理するためのウェイクアッププロセスを開始するように、発話120内のホットワードの存在を検出するように構成される。追加の実施態様では、ユーザデバイス102は、(例えば、別の、潜在的により計算集約的な記憶済みニューラルネットワーク300を用いた)追加の処理または検証のために発話120をリモートシステム110に送信する。
図示した例では、記憶済みニューラルネットワーク300は、エンコーダ部分310及びデコーダ部分311を含み、それぞれが、特異値分解フィルタ(SVDF)層302の層状トポロジを含む。SVDF層302は、全てのSVDF層302のメモリ容量が、ホットワードを特徴付けるオーディオ特徴410(図4A及び4B)をキャプチャするのに必要なストリーミングオーディオ118の固定長の時間のみを記憶しておくためにニューラルネットワーク300のための全体の固定メモリを追加的に構成するように、各SVDF層302にメモリ容量を提供することによってニューラルネットワーク300にメモリを提供する。この記憶済みニューラルネットワーク300のアーキテクチャは例示的なものであり、任意の記憶済みニューラルネットワーク300のアーキテクチャが代用されてもよいことを理解されたい。
いくつかの実施態様では、記憶済みニューラルネットワーク300は、対応するラベル420a~bごとにそれぞれの損失710、710a~bを生成するために、複数のラベル420、420a~bを使用して訓練される。複数のラベル420を用いてニューラルネットワーク300を訓練するプロセスは、以下でより詳細に説明される(図7)。
ここで図2を参照すると、典型的なホットワード検出器は、メモリのないニューラルネットワーク音響エンコーダ200を使用する。ネットワーク200にはメモリがないため、音響エンコーダ200の各ニューロン212は、入力として、話された発話120のあらゆるフレーム210、210a~dのあらゆるオーディオ特徴を同時に受け入れなければならない。各フレーム210は、任意の数のオーディオ特徴を有することができ、オーディオ特徴のそれぞれを、ニューロン212が入力として受け入れることに留意されたい。このような構成には、固定長時間が増加するにつれて、及び/またはオーディオ特徴の数が増加するにつれて劇的に増加する相当なサイズのニューラルネットワーク音響エンコーダ200が必要である。音響エンコーダ200の出力は、例えば、検出されたホットワードの各音素の確率を結果としてもたらす。次いで、音響エンコーダ200は、ホットワードの存在を示すスコア(即ち、推定)を生成するために、ハンドコーディングされたデコーダに依存して、音響エンコーダ200の出力を処理し(例えば、音素を継ぎ合わせ)なければならない。
ここで図3A及び図3Bを参照すると、いくつかの実施態様では、特異値分解フィルタ(SVDF)ニューラルネットワーク300(記憶済みニューラルネットワークとも呼ばれる)は、任意の数のニューロン/ノード312を有し、各ニューロン312は、話された発話120の単一のフレーム210、210a~dのみを一度に受け入れる。即ち、各フレーム210が、例えば30msのオーディオデータを構成する場合、それぞれのフレーム210は、約30ms(即ち、時間1、時間2、時間3、時間4など)ごとにニューロン312に入力される。図3Aは、2段階のフィルタリング機構、入力の特徴次元に対してフィルタリングを実行する第1の段階320(即ち、段階1の特徴フィルタ)と、第1の段階320の出力の時間次元に対してフィルタリングを実行する第2の段階340(即ち、段階2の時間フィルタ)と、を含む各ニューロン312を示している。したがって、段階1の特徴フィルタ320は、現在のフレーム210のみに対して特徴フィルタリングを実行する。次いで、処理の結果が、メモリコンポーネント330に置かれる。これらの例では、メモリコンポーネント330のサイズは、ノードレベルごとまたは層レベルごとに構成可能である。段階1の特徴フィルタ320が所与のフレーム210を(例えば、フレーム内のオーディオ特徴をフィルタリングすることによって)処理した後、フィルタリングされた結果が、メモリコンポーネント330内の次に利用可能なメモリ位置332、332a~dに置かれる。全てのメモリ位置332が一杯になると、段階1の特徴フィルタ320は、メモリコンポーネント330内の最も古いフィルタリング済みデータを記憶しているメモリ位置332を上書きする。例示の目的で、図3Aは、サイズ4(4つのメモリ位置332a~d)のメモリコンポーネント330及び4つのフレーム210a~dを示しているが、ホットワード検出の性質により、システム100は、典型的には、各ニューロン312がパイプラインに沿って「スライド」し、またはパイプラインと同様にフレーム210を処理するように、ストリーミングオーディオ118を継続的に監視することに留意されたい。言い換えると、各段階がN個の特徴フィルタ320及びN個の時間フィルタ340(それぞれが入力特徴フレーム210のサイズに一致する)を含む場合、層は、特徴フレームのサイズのストライドで、入力特徴フレーム210上でN個のフィルタ320、340のそれぞれをスライドすることによって特徴フィルタのN×T(Tは固定期間内のフレーム210の数に等しい)畳み込みを計算することに類似している。例えば、例は、段階1の特徴フィルタがフレーム4(F4)210d(時間4の間)に関連付けられたフィルタリング済みオーディオ特徴を出力した後の容量におけるメモリコンポーネント330を示しているため、段階1の特徴フィルタ320は、メモリ位置332a内のフレーム1(F1)210aに関連付けられたフィルタリング済みオーディオ特徴を上書きすることによって、続くフレーム5(F5)(時間5の間)に関連付けられたフィルタリング済みオーディオ特徴をメモリ330に置く。このようにして、段階2の時間フィルタ340は、段階1の特徴フィルタ320から出力された、前のT-1(Tは、ここでも固定期間内のフレーム210の数に等しい)のフィルタリング済みオーディオ特徴にフィルタリングを適用する。
次いで、段階2の時間フィルタ340は、メモリ330に記憶された各フィルタリング済みオーディオ特徴をフィルタリングする。例えば、図3Aは、段階1の特徴フィルタ320が新たなフィルタリング済みオーディオ特徴をメモリ330に記憶するたびに、段階2の時間フィルタ340が4つのメモリ位置332のそれぞれにあるオーディオ特徴をフィルタリングすることを示している。このようにして、段階2の時間フィルタ340は、常にいくつかの過去のフレーム210をフィルタリングしており、その数は、メモリ330のサイズに比例する。各ニューロン312は、単一のSVDF層302の一部であり、ニューラルネットワーク300は、任意の数の層302を含み得る。段階2の各時間フィルタ340の出力は、次の層302のニューロン312の入力に渡される。層302の数及び層302ごとのニューロン312の数は、完全に構成可能であり、利用可能なリソースならびに所望のサイズ、電力、及び精度に依存する。本開示は、SVDF層302の数にも、各SVDF層302内のニューロン312の数にも限定されない。
ここで図3Bを参照すると、ニューラルネットワーク300の各SVDF層302、302a~n(または単に「層」)は、いくつかの実施態様では、前の層の出力が対応する層302への入力として受け入れられるように接続される。いくつかの例では、最終層302nは、発話120がホットワードを含む確率を示す確率スコア350を出力する。
図示した例のSVDFネットワーク300では、層設計は、入力フレーム210のシーケンスを処理している密に接続された層302を、そのノード312のそれぞれの特異値分解を使用することによって近似し得るという概念に由来する。近似は構成可能である。例えば、ランクR近似は、層のフィルタに対して新しい次元Rを拡張することを意味し、段階1は独立して発生し、段階2では、非線形性を通過する前に全てのランクの出力が加算される。言い換えると、一致する次元の密に接続された層のノード312のSVDF分解が、SVDF層302を初期化するために使用されてもよく、これは、原則的な初期化をもたらし、層の汎化の品質を向上させる。本質的に、より大きな密に接続された層の「パワー」は、潜在的に(ランクに応じて)はるかに小さなSVDFに転送される。しかしながら、SVDF層302は、同じかさらにより多くの演算を有する密に接続された層または畳み込み層でさえ上回るために初期化を必要としないことに留意されたい。
いくつかの実施態様では、システム100は、ステートフルで積層可能なニューラルネットワーク300を含み、各SVDF層302の各ニューロン312は、オーディオ特徴のフィルタリングに関連付けられた第1の段階320と、時間に関する第1の段階320の出力のフィルタリングに関連付けられた第2の段階340とを含む。具体的には、第1の段階320は、一度に1つのオーディオ特徴入力フレーム210上の1つ以上のオーディオ特徴に対してフィルタリングを実行し、フィルタリングされたオーディオ特徴をそれぞれのメモリコンポーネント330に出力するように構成される。ここで、段階1の特徴フィルタ320は、時間フレーム210に関連付けられた1つ以上のオーディオ特徴を処理のための入力として受信し、処理されたオーディオ特徴をSVDF層302のそれぞれのメモリコンポーネント330に出力する。その後、第2の段階340は、第1の段階320から出力され、それぞれのメモリコンポーネント330に存在するフィルタリング済みオーディオ特徴の全てに対してフィルタリングを実行するように構成される。例えば、それぞれのメモリコンポーネント330が8に等しい場合、第2の段階340は、8個の入力フレーム210のシーケンス内のオーディオ特徴の個々のフィルタリング中に第1の段階320から出力されたメモリコンポーネント330に存在する最大8個の最後のフィルタリング済みオーディオ特徴をプルすることになる。第1の段階320が対応するメモリコンポーネント330を容量まで一杯にすると、最も古いフィルタリング済みオーディオ特徴を含むメモリ位置332が、上書きされる(即ち、先入れ先出し)。したがって、SVDFニューロン312または層302におけるメモリコンポーネント330の容量に応じて、第2の段階340は、対応するSVDF層302の第1の段階320によって処理されたいくつかの過去の出力を記憶することができる。さらに、SVDF層302におけるメモリコンポーネント330は付加的であるため、各SVDFニューロン312及び層302におけるメモリコンポーネント330は、それぞれの先行するSVDFニューロン312及び層302のメモリも含み、したがって、記憶済みニューラルネットワーク300の全体的な受容フィールドは拡張される。例えば、8に等しいメモリコンポーネント330を有する単一のニューロン312をそれぞれが有する4つのSVDF層302を有するニューラルネットワーク300のトポロジにおいて、最後のSVDF層302は、ニューラルネットワーク300によって個別にフィルタリングされた、最大で32個の最後のオーディオ特徴入力フレーム210のシーケンスを含む。しかしながら、メモリ量は、層302ごとに、またはノード312ごとにでも構成可能であることに留意されたい。例えば、第1の層302aには、32個の位置332が割り当てられてもよく、最後の層302は、8個の位置332で構成されてもよい。その結果、積層されたSVDF層302により、ニューラルネットワーク300は、一度に1つの入力時間フレーム210(例えば、30ミリ秒のオーディオデータ)のオーディオ特徴のみを処理すること、及びストリーミングオーディオ118内の指定されたホットワードをキャプチャするのに必要な固定長時間をキャプチャするいくつかのフィルタリング済みオーディオ特徴を過去に組み込むことが可能となる。対照的に、メモリのないニューラルネットワーク200(図2に示されるような)は、ストリーミングオーディオがホットワードの存在を含む確率を決定するために、そのニューロン212が、固定長時間(例えば、2秒のオーディオデータ)をカバーするオーディオ特徴フレームの全てを一度に処理する必要がある。これによって、ネットワークの全体サイズが劇的に増加する。さらに、長短期記憶(LSTM)を使用する回帰型ニューラルネットワーク(RNN)はメモリを提供するが、RNN-LSTMは、実質的には無限のメモリを有するニューロンに、各処理インスタンス後にニューロンの状態を継続的に更新させ、それによって、有限数の過去の処理済み出力を記憶する能力が妨げられ、その場合(固定サイズのメモリが容量一杯になると)それぞれの新しい出力が以前の出力を書き換える。言い換えると、SVDFネットワークは、出力を状態(メモリ)に回帰させず、反復のたびにすべての状態を書き換えない。代わりに、メモリは、層に対して構成されたメモリサイズに基づいて新しいエントリをプッシュ及びポップするのではなく、後続の実行から分離された各推定実行の状態を維持する。
ここで図4A及び図4Bを参照すると、いくつかの実施態様では、記憶済みニューラルネットワーク300は、それぞれが入力フレーム210、210a~nのシーケンス及び入力フレーム210に割り当てられた2つ以上のラベル420a~bを含む複数の訓練入力オーディオシーケンス400(即ち、訓練サンプル)に関して訓練される。各入力フレーム210は、ホットワードの音声成分430を特徴付ける1つ以上のそれぞれのオーディオ特徴410を含み、各ラベル420は、それぞれの入力フレーム210の1つ以上のオーディオ特徴410がホットワードの音声成分430を含む確率を示す。いくつかの例では、各入力フレーム210のオーディオ特徴410は、前処理段階404の間にオーディオストリーム118の生オーディオ信号402から変換される。オーディオ特徴410は、1つ以上のログフィルタバンクを含み得る。したがって、前処理段階は、オーディオストリーム118(または話された発話120)を入力フレーム210(例えば、それぞれ30ms)のシーケンスにセグメント化し、フレーム210ごとに別個のログフィルタバンクを生成し得る。例えば、各フレーム210は、40個のログフィルタバンクによって表されてもよい。さらに、それぞれの連続するSVDF層302は、入力として、直前のSVDF層302から出力された、時間に関してフィルタリング済みのオーディオ特徴410を受信する。
図示した例では、各訓練入力オーディオシーケンス400は、固定長時間(例えば、2秒)内に発生する指定されたホットワードを含む注釈付き(即ち、ラベル420a~bを有する)発話を含む訓練サンプルに関連付けられている。記憶済みニューラルネットワーク300は、また任意選択で、指定されたホットワードを含まない、または指定されたホットワードを含むが固定長時間よりも長い時間にわたっている、したがって、固定メモリが固定長時間外のデータを記憶しないために誤検出されない、注釈付き発話400に対して訓練されてもよい。いくつかの例では、固定長時間は、典型的な話者が、話されたクエリ及び/または音声コマンドを処理するためにユーザデバイス102を呼び出すための、指定されたホットワードを話すのにかかる時間に対応する。例えば、指定されたホットワードが「Hey Google」または「Ok Google」というフレーズを含む場合、遅い話者であっても指定されたフレーズを話すのに一般的に2秒以上かからないため、2秒に等しく設定された固定長時間は、おそらく十分である。したがって、固定長時間の間にストリーミングオーディオ118内の指定されたホットワードの発生を検出することのみが重要であるため、ニューラルネットワーク300は、固定時間(例えば2秒)に及ぶオーディオの量に比例する量の固定メモリを含む。したがって、ニューラルネットワーク300の固定メモリにより、ニューラルネットワークのニューロン312は、ストリーミングオーディオ118の1つの入力フレーム210(例えば、30msの時間ウィンドウ)からオーディオ特徴410(例えば、ログフィルタバンク)を一度にフィルタリングしつつ、固定長時間に及ぶ最新のフィルタリング済みオーディオ特徴410を記憶し、固定長時間外のいかなるフィルタリング済みオーディオ特徴410も現在のフィルタリング反復から除去または削除することが可能となる。したがって、ニューラルネットワーク300が、例えば、32のメモリ深さを有する場合、ニューラルネットワーク300によって処理された最初の32のフレームは、メモリコンポーネント330を容量まで一杯にし、最初の32個の後は新しい出力ごとに、ニューラルネットワーク300は、メモリコンポーネント330の対応するメモリ位置332から最も古い処理済みのオーディオ特徴を除去することとなる。
図4Aを参照すると、エンドツーエンド訓練の場合、訓練入力オーディオシーケンス400aは、各入力フレーム210に適用され得るラベル420aを含む。いくつかの例では、訓練サンプル400aがホットワードを含む場合、ターゲットスコア(例えば、「1」)に関連付けられたターゲットラベル420aは、ホットワードの末尾または末尾付近の音声成分430を特徴付けるオーディオ特徴410を含む、1つ以上の入力フレーム210に適用される。例えば、ホットワード「OK Google」の音声成分430が「ou」、「k」、「eI」、「<無音>」、「g」、「u」、「g」、「@」、「l」に分割される場合、数「1」のターゲットラベルは、文字「l」(即ち、ホットワードの最後の成分430)に対応する全ての入力フレーム210に適用され、それらは、ホットワードの音声成分430の必要なシーケンスの一部である。このシナリオでは、他の全ての入力フレーム210(最後の音声成分430に関連付けられていない)には、異なるラベル(例えば、「0」)が割り当てられる。したがって、各入力フレーム210は、対応する入力特徴とラベルのペア410、420aを含む。入力特徴410は、典型的には、入力フレーム210にわたって入力オーディオから計算された、例えばメルフィルタバンクまたはログフィルタバンクに対応する1次元テンソルである。
例示的なラベル420aは、ホットワードの最後の音素の位置に注目し、他の副音素(したがって、「l」ではない音声成分に対するラベル「0」)の位置情報に依存しない。典型的には、このタイプのラベル420aは、最大プーリング損失に関連付けられ、これは、ターゲットパターンの正確な位置に依存せず、定義された間隔内のパターンの存在を定義しようとする。ラベル420aは、注釈付き発話400aから生成され、各入力特徴テンソル410には、強制アライメントステップによって音声クラスが割り当てられる(即ち、ラベル「1」が、ホットワードに属する最後のクラスに対応するペアに与えられ、「0」が残りの全てに与えられる)。したがって、訓練入力オーディオシーケンス400aは、入力フレームのシーケンスに割り当てられたバイナリラベルを含む。注釈付き発話400a、または訓練入力オーディオシーケンス400aは、図1の注釈付き発話プール130から取得された訓練サンプル400に対応する。
別の例では、図4Bは、ホットワードの音声成分430を特徴付ける(音声成分430に合致する)オーディオ特徴410の数が進むにつれて入力フレーム210のシーケンスに沿って増加するスコアに関連付けられたラベル420bを含む、訓練入力オーディオシーケンス400bを含む。例えば、ホットワードが「Ok Google」を含む場合、最初の音声成分「o」及び「k」を特徴付けるそれぞれのオーディオ特徴410を含む入力フレーム210には、「1」のラベル420bが割り当てられており、最後の音声成分「l」を特徴付けるそれぞれのオーディオ特徴410を含む入力フレーム210には、「5」のラベル420bが割り当てられている。中間の音声成分430を特徴付けるそれぞれのオーディオ特徴410を含む入力フレーム210には、「2」、「3」、及び「4」のラベル420bが割り当てられている。
追加の実施態様では、正のラベル420bの数が増加する。例えば、ホットワードの最後の音声成分430を特徴付けるオーディオ特徴410を含む第1のフレーム210から開始して、固定量の「1」のラベル420bが生成される。この実装態様では、構成された数の正のラベル420b(例えば、「1」)が大きいとき、他の方法では正ではないラベル420b(例えば、「0」)が適用されたであろうフレーム210に、正のラベル420bが適用され得る。他の例では、正のラベル420bの開始位置が修正される。例えば、ラベル420bは、最後のキーワード音声成分430を含むフレーム210のセグメントの始点、中間点、または終点のいずれかにおいて開始するようにシフトされ得る。さらに他の例では、重み損失が、入力シーケンスに関連付けられる。例えば、小さなミスアライメントによって引き起こされる損失(即ち、誤差勾配)を訓練手順が低減することを可能にする重み損失データが、入力シーケンスに追加される。具体的には、フレームベースの損失関数では、誤分類またはミスアライメントのいずれかから損失が発生する場合がある。損失を低減するために、ニューラルネットワーク300は、正しいラベル420bとラベル420bの正しい位置(タイミング)との両方を予測する。ネットワーク300がある時点でキーワードを検出した場合であっても、それが所与のターゲットラベル420bと完全にアライメントしていない場合、結果は誤りと見なされ得る。したがって、損失の重み付けは、強制アライメント段階の間のミスアライメントの尤度が高いフレーム210に特に有用である。例示的なラベル420bは、典型的には、交差エントロピー損失に関連し、その結果、キーワードの全ての副音素の位置アライメントに非常に影響を受けやすいモデルが得られる。
図4A~4Bの訓練入力オーディオシーケンス400a、400bのいずれかを使用して訓練した結果として、ニューラルネットワーク300は、ホットワード(複数可)がストリーミングオーディオ118内に存在するかどうかを示す出力350を生成するように(決定された損失を使用して)最適化される。いくつかの例では、ネットワーク300は、2段階で訓練される。ここで図5Aを参照すると、概略図500aは、例えば、音響的な事後確率を作り出すように個別に訓練された8つの層を含む、ニューラルネットワーク300のエンコーダ部分(または単に「エンコーダ」)310aを示している。SVDF層に加えて、ネットワーク300は、例えば、ボトルネック、ソフトマックス、及び/または他の層を含み得る。エンコーダ310aを訓練するために、ラベル生成は、ホットワードの全ての音声成分(加えて、無音及びホットワードではない全てのものに対する「イプシロン」ターゲット)に別個のクラスを割り当てる。次いで、ニューラルネットワーク300のデコーダ部分(または単に「デコーダ」)311aは、第1の部分(即ち、層及び接続)がエンコーダ310aのトポロジと合致するトポロジを作成することによって訓練され、ニューラルネットワーク300のそのエンコーダ310aから選択されたチェックポイントが、ニューラルネットワーク300を初期化するために使用される。訓練は、エンコーダ310aのパラメータを「凍結する」(即ち、更新しない)ように指定され、したがって、トポロジのデコーダ311a部分のみを調整する。これによって、それが2つのスタッガード訓練パイプラインの生成物であっても、当然単一のスポッタニューラルネットワークが作り出される。この方法を用いた訓練は、訓練セットの一部にオーバーフィッティングを示す傾向のあるモデルに特に有用である。
代替として、ニューラルネットワーク300は、始めからエンドツーエンドで訓練される。例えば、ニューラルネットワーク300は、(前述のエンコーダ310aの訓練と同様に)特徴を直接受け入れるが、代わりにデコーダ311aの訓練に使用するためのバイナリターゲットラベル420a(即ち、「0」または「1」)の出力を使用する。このようなエンドツーエンドニューラルネットワーク300は、任意のトポロジを使用し得る。例えば、図5Bに示すように、概略図500bは、エンコーダ310bが中間のソフトマックス層を含まないことを除いて図5Aのトポロジと同様のエンコーダ310b及びデコーダ311bのニューラルネットワーク300のトポロジを示している。図5Aのトポロジと同様に、図5Bのトポロジは、デコーダ311b部分がどのように調節されるかを調整するための適合率を有する(例えば、適合率が0に設定されている場合、図5Aのトポロジと等価である)、事前訓練済みのエンコーダチェックポイントを使用し得る。このエンドツーエンドパイプラインは、トポロジのパラメータ全体が調節される場合、特に、オーバーフィットする傾向のないより小さなサイズのモデルでは、図5Aの別々に訓練されたエンコーダ310a及びデコーダ311aよりも性能が優れている傾向がある。
したがって、ニューラルネットワーク300は、手動で調整されたデコーダの使用を回避し得る。デコーダを手動で調整すると、ホットワードを変更または追加する際の難易度が高まる。単一の記憶済みニューラルネットワーク300は、複数の異なるホットワード、ならびに2つ以上の場所にまたがる同じホットワードを検出するように訓練され得る。さらに、検出品質は、潜在的に数百万の例を用いて訓練されたホットワード検出に特に最適化されたネットワークと比較して低下する。さらに、典型的な手動で調整されたデコーダは、エンコード及びデコードの両方を実行する単一のニューラルネットワークよりも複雑である。従来のシステムは、過剰にパラメータ化される傾向があり、同等のエンドツーエンドモデルよりも著しく多くのメモリ及び計算を消費し、ニューラルネットワーク高速化ハードウェアを十分に利用することができない。さらに、手動で調整されたデコーダは、アクセントのある発話に対して問題があり、それによって、複数の地域及び/または言語にまたがって機能し得る検出器を作成することが極めて困難になる。
記憶済みニューラルネットワーク300は、同じサイズの単純な完全接続層よりも優れているが、事前訓練済みの完全接続層からのパラメータを任意選択で初期化することからも恩恵を受ける。ネットワーク300は、過去から思い起こされる量に対するきめ細かい制御を可能にする。これにより、理論的に無限の過去に注意を払うこと(例えば、ストリーミングオーディオを継続的に聴取すること)から恩恵を受けない(実際には損害を受ける)あるタスクについては、RNN-LSTMが上回る結果となる。しかしながら、ネットワーク300は、典型的には、下位層にSVDFを利用し、過去のノイズの多い低レベル特徴をフィルタリングし、上位層にLSTMを活用して、RNN-LSTMと協力して機能することができる。いくつかの比較的小さなフィルタがSVDFを含むことを前提として、パラメータの数及び計算が精密に制御される。これは、品質とサイズ/計算との間のトレードオフを選択するときに役立つ。さらに、この品質のために、ネットワーク300は、より大きな粒度で動作する単純な畳み込みニューラルネットワーク(CNN)のような他のトポロジよりも性能が優れた、非常に小さなネットワークを作成することを可能にする。
図5C及び図6を参照すると、いくつかの構成では、交差エントロピー損失を使用してホットワード(複数可)がストリーミングオーディオ118に存在する尤度を示す確率スコア350を生成するようにニューラルネットワーク300を最適化するのではなく、平滑化最大プーリング損失を使用して、ニューラルネットワーク300が最適化される。ここで、図5A及び図5Bに示す例と同様に、この手法は、エンコーダ310、310c及びデコーダ311、311cを共同で訓練することを含む。この平滑化最大プーリング損失の手法では、ニューラルネットワーク300は、(例えば、エンコーダ310cを用いて)ホットワードの一部だけでなく、(例えば、デコーダ311cを用いて)ホットワード全体も検出するように訓練され得る。平滑化最大プーリング損失の手法を使用することにより、この手法は、フレームラベル420a~bに依存せず、(例えば、ユーザデバイス102についての)オンデバイス学習などの実施態様に向いている場合がある。
ホットワードの検出において、ホットワードの正確な位置は、一般に、ホットワードの実際の存在ほど重要ではない。したがって、フレームラベル420のアライメントは、ホットワード検出誤差を引き起こす場合がある(即ち、ホットワード検出が潜在的に損なわれる)。フレームラベル420が、ノイズまたは特定の言葉のアクセントによって引き起こされる固有の不確実性を有するとき、このアライメントは特に問題となり得る。フレームラベル420の場合、訓練入力オーディオシーケンス400は、ランと呼ばれる繰り返される類似または同一のフレームラベル420の間隔を含むことが多い。例えば、図4A及び図4Bの両方が、「0」のランを含む。これらのランは、ネットワーク300を訓練するときに、ネットワーク300が出力350の生成のために強い学習関連付けを行うべきであることを示している。対照的に、平滑化最大プーリング手法(例えば、図5C及び図6に示される)は、フレームラベル420を使用して正確な活性化位置を指定する(即ち、タイミングを指定する)ことを回避する。
平滑化最大プーリング損失アプローチの場合、いくつかの例では、初期損失がエンコーダ310c及びデコーダ311cの両方に対して定義され、その後エンコーダ310c及びデコーダ311cのそれぞれの初期損失が同時に最適化される。最大プーリングは、最大フィルタを適用することによってある入力の次元が低下する、サンプルベースの離散化プロセスを指す。いくつかの例では、平滑化最大プーリング手法を使用した訓練プロセス500cは、平滑化演算510、510e~d、及び最大プーリング演算520、520e~dを含む。これらの例では、平滑化演算510は、最大プーリング演算520の前に発生する。ここで、平滑化演算510中に、訓練プロセス500cは、フレーム210に対して時間平滑化を実行する。例えば、訓練プロセス500cは、フレーム210に対応するロジット502、502e~dを平滑化する。ロジットは、一般に、1つ以上のSVDF層302から出力されるベクトルまたは他の生の予測形式を指す。ロジット502は、エンコーダ310及び/またはデコーダ311が、1つ以上のロジット502の入力に基づいて出力確率を生成するように、エンコーダ310及び/またはデコーダ311のソフトマックス部分への入力として機能する。例えば、ロジット502は、正規化されていない予測データ形式であり、ソフトマックスは、ロジット502を確率(例えば、ホットワードの確率)に正規化する。
最大プーリング演算520の前に平滑化演算510を有することにより、訓練プロセス500cは、ストリーミングオーディオ118内の小さな変動及び時間的シフトに対してより安定的にネットワーク300を訓練する。この高い安定性は、時間平滑化演算なしの最大プーリング演算の何らかの形式を使用し得る他の訓練手法とは対照的である。例えば、他の訓練手法は、時間領域で最大プーリングを使用し、最大活性化を有するフレーム210のロジット502に関して交差エントロピー損失を決定してもよい。最大プーリング演算520の前に時間平滑化演算510を導入することによって、ネットワーク300の訓練プロセス500cは、スムーズな活性化及び安定したピーク値をもたらし得る。
最大プーリング演算520の間に、訓練プロセス500cは、平滑化最大プーリング損失を決定する。ここで、損失は、理論的にそうあるべきとネットワーク300が考える出力分布と実際の出力分布との間の差を表す。ここで、平滑化最大プーリング損失は、以下の式によって決定され得る。
損失=損失++損失- (1)
ここで、Xtはd次元のスペクトル特徴であり、yi(Xt,W)はニューラルネットワークのソフトマックス出力のi番目の次元を表し、Wはネットワーク重みであり、Ctはフレームt(例えば、フレーム210)におけるフレームラベル420であり、s(t)は平滑化フィルタであり、
は経時的な畳み込みであり、
はi番目の最大プーリングウィンドウの間隔の開始時間及び終了時間を定義する。
図5Cを引き続き参照して、エンコーダ310c及びデコーダ311cの両方が、平滑化最大プーリング手法を使用する訓練プロセス500cを受ける。例えば、図5Cは、平滑化演算510、510e及び最大プーリング演算520、520eを含むエンコーダ310cを示す。訓練500cの最大プーリング演算520eの間、エンコーダ310cは、ホットワードを定義するサウンド部分(例えば、オーディオ特徴410の音声成分)のシーケンスを学習する。ここで、この学習は、半教師あり方式で発生し得る。いくつかの例では、訓練500c中の最大プーリング演算510eは、固定長のホットワード(例えば、所期の長さのホットワードまたは平均の長さのホットワード)を最大プーリングウィンドウ310w、310w1~nに分割することによって発生する。
例えば、図6は、予期されるホットワード位置にわたるn個の連続ウィンドウ310wを示している。最大プーリング演算510eは、次いで、各ウィンドウ310wにおける最大プーリング損失を決定する。いくつかの実施態様では、各ウィンドウ310wにおける最大プーリング損失は、以下の式によって定義される。
ここで、「e」は、エンコーダ310cの変数に対応し、ωendは、ホットワードの終点に対応し、offsetは、ウィンドウ310wの時間オフセットを指す。
いくつかの例では、ウィンドウ310wの数及び/または各ウィンドウ310wのサイズ310wsは、訓練プロセス500c中に調整可能なパラメータである。これらのパラメータは、ウィンドウ310wの数「n」が、区別可能なサウンド部分(例えば、音素)の数を近似し、及び/またはウィンドウ310wのサイズ310wsにウィンドウ310wの数「n」を掛けたものが、ホットワードの固定長にほぼ一致するように調整され得る。ウィンドウ310wの数及び各ウィンドウ310wのサイズ310wsが調整可能であることに加えて、ホットワードの終点ωendからウィンドウ310wのシーケンスをオフセットするエンコーダオフセット、Offseteと呼ばれる変数もまた、エンコーダ310cの訓練500c中に調整可能であってもよい。
エンコーダ310cと同様に、訓練プロセス500cでは、デコーダ311cは、平滑化演算510、510d、及び最大プーリング演算520、520dを含む。概して言うと、訓練プロセス500cは、ホットワードの末尾または末尾付近にオーディオ特徴410を含む入力フレーム210に対して強い活性化(即ち、ホットワードの検出の高い確率)を生成するようにデコーダ311cを訓練する。最大プーリング損失の性質により、最大プーリング損失値は、デコーダウィンドウ311wがホットワードの実際の終点ωendを含む限り、ホットワードの終点ωendの正確な値に影響されない。デコーダ311cの最大プーリング演算520d中に、訓練プロセス500cは、以下の式に従って、ホットワードの終点ωendを含むウィンドウ311wの最大プーリング損失を決定する。
ここで、offsetd及びwinsize
dは、ホットワードの予想される終点ωendを含むように調整可能なパラメータであり得る。
図6を引き続き参照すると、デコーダウィンドウ311wは、
から
に及ぶ間隔として示されている。間隔が、ホットワードの実際の終点ωendを含むのに十分なほど大きいとき、平滑化最大プーリング損失の手法により、ネットワーク300は、最も強い活性化の最適な位置を(例えば、半教師あり方式で)学習することが可能となる。いくつかの例では、訓練プロセス500cは、ワードレベルのアライメントに基づいてホットワードの終点ωendを導出する。いくつかの実施態様では、ホットワードの終点ωendは、エンコーダ310の出力に基づいて決定される。
エンコーダ310が最初に訓練され、次いでエンコーダ310のモデル重みが凍結されつつデコーダ311が訓練され得る共同訓練を用いたいくつかのエンドツーエンドネットワーク300とは対照的に、平滑化最大プーリング手法は、そのような凍結なしでエンコーダ310c及びデコーダ311cを同時に共同で訓練する。エンコーダ310c及びデコーダ311cが、平滑化最大プーリング損失を使用して訓練プロセス500cの間に共同で訓練されるため、各損失の相対的な重要性は、調整可能なパラメータαによって制御され得る。例えば、エンコーダ310cでの損失及びデコーダ311cでの損失を参照する総損失は、次の式によって表される関係を有する。
総損失=α*損失e+損失d (10)
ここで図7を参照すると、記憶済みニューラルネットワーク300のための訓練プロセス700は、第1のラベル420a(例えば、交差エントロピーラベル420)及び第2のラベル420b(例えば、最大プーリング損失ラベル)、ならびに第1の損失関数705、705a及び第2の損失関数705、705bを使用して、それぞれ、第1の損失710、710a及び第2の損失710、710bを生成することを含む。任意選択で、プロセス700は、記憶済みニューラルネットワーク300に訓練入力オーディオシーケンス400を供給することによって開始する。ここで、訓練入力オーディオシーケンス400のデータは、両方のラベル420a~bを使用してラベル付けされる。例えば、単一の訓練入力オーディオシーケンス400は、図4A及び図4Bに関して前述されたように、第1のラベル420a及び第2のラベル420bを使用してラベル付けされる。例示的なラベル420a、420bは、例示の目的のためのものであり、損失710を決定するために適用可能な任意の適当なラベル付け規則が訓練プロセス700で使用され得るように、限定することを意図するものではない。
訓練入力オーディオシーケンス400を受信すると、記憶済みニューラルネットワーク300は、出力350(即ち、確率スコア350)を生成し得る。記憶済みニューラルネットワーク300は、図2~図6のいずれかに関して説明された方式、またはオーディオデータを処理してホットワードが訓練入力オーディオシーケンス400に存在する尤度を決定するための任意の他の適当な方式で、訓練入力オーディオシーケンス400を処理し得る。いくつかの実施態様では、出力350は、2つの損失関数705のそれぞれによって使用される。即ち、第1の損失関数705aは、出力350及びラベル420aを受信して、第1の損失710aを決定する。同様に、第2の損失関数705bは、出力350及びラベル420bを受信して、第2の損失710bを決定する。特に、損失710は、同じ訓練入力オーディオシーケンス400の2つの異なるラベル420a、420bbと、2つの異なる損失関数705a、705bとを使用することによって、同じ出力350からそれぞれ決定される。損失関数705は、図2~図6のいずれかに関して説明したように任意の方法で損失710を決定し得る。いくつかの例では、第1の損失関数705aは、最大プーリング損失関数であり、第2の損失関数705bは、交差エントロピー損失関数である。他の実施態様では、単一の損失関数705が、出力350及びラベル420を受信し、各ラベル420に基づいてそれぞれの損失710を生成する。損失関数705は、回帰損失、平均二乗誤差、平均二乗対数誤差、平均絶対誤差、二値分類、二値交差エントロピー、ヒンジ損失、マルチクラス損失などの任意の適当な技術を実施し得る。
いくつかの実施態様では、損失710a、710bは、訓練プロセス700中に記憶済みニューラルネットワーク300に直接供給される。他の実施態様では、損失710a、710bが組み合わされ、または共に重み付けされて、結合損失710、710cを生成し、結合損失710cは、記憶済みニューラルネットワーク300によって処理される。いくつかの実施態様では、損失は、加重平均式を使用して平均化される。例えば、第1の損失710a及び第2の損失710bは、以下のように定義され得る。
第1の損失=L1[f(X,),Y1] (11)
第2の損失=L2[f(X,),Y2] (12)
ここで、Xは出力350であり、L1は第1の損失関数705aであり、Y1はラベル420aであり、L2は第2の損失関数705bであり、Y2はラベル420bである。これらの例では、結合損失710cは、以下によって表される。
結合損失=alpha*L1[f(X,theta),Y2]+beta*L2[f(X,theta),Y2] (13)
ここで、alpha及びbetaは、スカラーハイパーパラメータである。第1の損失710a及び第2の損失710bは、任意の他の方法(例えば、加算、乗算など)で結合されてもよい。
本明細書の例は、2つのラベル420a、bで注釈が付けられた訓練入力オーディオシーケンス400を用いてニューラルネットワーク300を訓練することを示す。第1の損失関数705aは、出力350及びラベル420aを使用して、第1の損失710aを生成する。第2の損失関数705bは、出力350及びラベル420bを使用して、第2の損失710bを生成する。ニューラルネットワークは、第1の損失710a及び第2の損失710bの両方を使用して、訓練、更新、または微調整される。これらの例は非限定的であり、任意の数のラベル420及び任意の数のそれぞれの損失関数705が、任意の適切なニューラルネットワーク300を訓練するために任意の数の損失を生成し得ることを理解されたい。
図8は、複数のラベル420及び複数の損失関数705を使用してニューラルネットワーク300を訓練する方法800についての動作の例示的な構成のフローチャートである。動作802において、方法800は、入力フレームのシーケンスを含む訓練入力オーディオシーケンス400を受信することを含む。ここで、入力フレームのシーケンスは、ユーザデバイス102上でウェイクアッププロセスを開始するホットワードを定義する。動作804において、方法800は、訓練入力オーディオシーケンス400についての第1のラベル420a(例えば、最大プーリングラベル)及び第2のラベル420b(例えば、交差エントロピーラベル)を取得することを含む。動作806において、方法800は、記憶済みニューラルネットワーク300及び訓練入力オーディオシーケンス400を使用して、訓練入力オーディオシーケンス400がホットワードを含む尤度を示す出力350を生成することを含む。動作808において、方法800は、第1のラベル420a及び出力350に基づいて、第1の損失710a(例えば、最大プーリング損失)を決定することを含む。動作810において、方法800は、第2のラベル420b及び出力350に基づいて、第2の損失710b(例えば、交差エントロピー損失)を決定することを含む。動作814において、方法800は、訓練入力オーディオシーケンス400に関連付けられた第1の損失710a及び第2の損失710bに基づいて、記憶済みニューラルネットワーク300を最適化することを含む。
本明細書で使用される、ソフトウェアアプリケーション(即ち、ソフトウェアリソース)は、コンピューティングデバイスにタスクを実行させるコンピュータソフトウェアを指してもよい。いくつかの例では、ソフトウェアアプリケーションは、「アプリケーション」、「アプリ」、または「プログラム」と呼ばれてもよい。例示的なアプリケーションは、システム診断アプリケーション、システム管理アプリケーション、システムメンテナンスアプリケーション、ワードプロセッシングアプリケーション、スプレッドシートアプリケーション、メッセージアプリケーション、メディアストリーミングアプリケーション、ソーシャルネットワーキングアプリケーション、及びゲームアプリケーションを含むが、これらに限定されない。
非一時的なメモリは、コンピューティングデバイスによる使用のために一時的または永続的にプログラム(例えば、命令シーケンス)またはデータ(例えば、プログラム状態情報)を格納するために使用される物理デバイスであってよい。非一時的なメモリは、揮発性及び/または不揮発性のアドレス指定可能な半導体メモリであってもよい。不揮発性メモリの例は、フラッシュメモリ及び読み出し専用メモリ(ROM)/プログラマブル読み出し専用メモリ(PROM)/消去可能なプログラマブル読み出し専用メモリ(EPROM)/電子的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)(例えば、通常はブートプログラムなどのファームウェアに使用される)を含むが、これらに限定されない。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、及びディスクまたはテープを含むが、これらに限定されない。
図9は、本文書に記載のシステム及び方法を実施するために使用され得る例示的なコンピューティングデバイス900の概略図である。コンピューティングデバイス900は、ラップトップ、デスクトップ、ワークステーション、パーソナルデジタルアシスタント、サーバ、ブレードサーバ、メインフレーム、及び他の適切なコンピュータなど、様々な形式のデジタルコンピュータを表すことを意図している。ここで示されているコンポーネント、それらの接続及び関係、ならびにそれらの機能は、例示のみを意味しており、本文書で説明及び/または特許請求されている本発明の実施態様を限定することを意図するものではない。
コンピューティングデバイス900は、プロセッサ910、メモリ920、ストレージデバイス930、メモリ920及び高速拡張ポート950に接続する高速インターフェース/コントローラ940、ならびに低速バス970及びストレージデバイス930に接続する低速インターフェース/コントローラ960を含む。各コンポーネント910、920、930、940、950、及び960は、様々なバスを使用して相互接続されており、共通のマザーボードに据え付けられるか、または必要に応じて他の方法で存在してもよい。プロセッサ910は、メモリ920またはストレージデバイス930に記憶された命令を含む、コンピューティングデバイス900内で実行するための命令を処理して、高速インターフェース940に接続されたディスプレイ970などの外部入力/出力デバイスにグラフィカルユーザインターフェース(GUI)のグラフィカル情報を表示し得る。他の実施態様では、複数のメモリ及びメモリの種類と共に、必要に応じて複数のプロセッサ及び/または複数のバスが使用されてもよい。また、複数のコンピューティングデバイス900を接続して、(例えば、サーババンク、ブレードサーバのグループ、またはマルチプロセッサシステムとして)各デバイスが必要な動作の部分を提供してもよい。
メモリ920は、コンピューティングデバイス900内で非一時的に情報を記憶する。メモリ920は、コンピュータ可読媒体、揮発性メモリユニット(複数可)、または不揮発性メモリユニット(複数可)であってもよい。非一時的メモリ920は、コンピューティングデバイス900による使用のために一時的または永続的にプログラム(例えば、命令シーケンス)またはデータ(例えば、プログラム状態情報)を記憶するために使用される物理デバイスであってもよい。不揮発性メモリの例は、フラッシュメモリ及び読み出し専用メモリ(ROM)/プログラマブル読み出し専用メモリ(PROM)/消去可能なプログラマブル読み出し専用メモリ(EPROM)/電子的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)(例えば、通常はブートプログラムなどのファームウェアに使用される)を含むが、これらに限定されない。揮発性メモリの例は、ランダムアクセスメモリ(RAM)、ダイナミックランダムアクセスメモリ(DRAM)、スタティックランダムアクセスメモリ(SRAM)、相変化メモリ(PCM)、及びディスクまたはテープを含むが、これらに限定されない。
ストレージデバイス930は、コンピューティングデバイス900に大容量ストレージを提供することができる。いくつかの実施態様では、ストレージデバイス930は、コンピュータ可読媒体である。様々な異なる実施態様では、ストレージデバイス930は、フロッピーディスクデバイス、ハードディスクデバイス、光ディスクデバイス、もしくはテープデバイス、フラッシュメモリもしくはその他の同様のソリッドステートメモリデバイス、またはストレージエリアネットワークもしくはその他のコンフィグレーションのデバイスを含む、デバイスのアレイであってもよい。追加の実施態様では、コンピュータプログラム製品は、情報キャリアに有形に具現化される。コンピュータプログラム製品は、実行時に上記のような1つ以上の方法を実行する命令を含む。情報キャリアは、メモリ920、ストレージデバイス920、またはプロセッサ910上のメモリなどのコンピュータ可読媒体または機械可読媒体である。
高速コントローラ940は、コンピューティングデバイス900の帯域幅集約動作を管理し、低速コントローラ960は、より低い帯域幅集約動作を管理する。このような役割の割り振りは単なる例である。いくつかの実施態様では、高速コントローラ940は、メモリ920、ディスプレイ980(例えば、グラフィックプロセッサまたはアクセラレータを介して)、及び様々な拡張カード(図示せず)を受け入れ得る高速拡張ポート950に結合される。いくつかの実施態様では、低速コントローラ960は、ストレージデバイス930及び低速拡張ポート990に結合される。低速拡張ポート990は、様々な通信ポート(例えば、USB、Bluetooth、イーサネット、ワイヤレスイーサネット)を含んでもよく、例えばネットワークアダプタを介して、キーボード、ポインティングデバイス、スキャナ、またはスイッチやルータなどのネットワークデバイスなどの1つ以上の入力/出力デバイスに結合され得る。
コンピューティングデバイス900は、図に示すように、多くの様々な形式で実装され得る。例えば、それは、標準サーバ900aとして、またはそれらのようなサーバ900aのグループ内で複数回、ラップトップコンピュータ900bとして、またはラックサーバシステム900cの一部として実装されてもよい。
本明細書で説明するシステム及び技術の様々な実施態様は、デジタル電子及び/または光回路、集積回路、特別に設計されたASIC(特定用途向け集積回路)、コンピュータハードウェア、ファームウェア、ソフトウェア、及び/またはそれらの組み合わせで実現できる。これらの様々な実施態様は、特殊または汎用であり得、ストレージシステムからのデータ及び命令を受信し、ストレージシステムにデータ及び命令を送信するように結合された、少なくとも1つのプログラマブルプロセッサ、少なくとも1つの入力装置、及び少なくとも1つの出力装置を含んだプログラム可能なシステムで実行可能及び/または解釈可能な1つまたは複数のコンピュータプログラムにおける実装を含み得る。
これらのコンピュータプログラム(プログラム、ソフトウェア、ソフトウェアアプリケーション、またはコードとしても知られる)は、プログラマブルプロセッサのための機械命令を含み、かつ高水準手続型及び/またはオブジェクト指向プログラミング言語、及び/またはアセンブリ/機械言語で実装されることができる。本明細書で使用される場合、用語「機械可読媒体」、「コンピュータ可読媒体」とは、機械命令及び/またはデータを、機械可読信号として機械命令を受信する機械可読媒体を含むプログラマブルプロセッサに提供するために用いられる、あらゆるコンピュータプログラム製品、非一時的なコンピュータ可読媒体、装置及び/またはデバイス(例えば、磁気ディスク、光ディスク、メモリ、プログラマブル論理回路(PLD))を指す。「機械可読信号」という用語は、機械命令及び/またはデータをプログラマブルプロセッサに提供するために用いられるあらゆる信号を指す。
本明細書に記載のプロセス及び論理フローは、データ処理ハードウェアとも呼ばれ、1つ以上のコンピュータプログラムを実行して、入力データ上で動作して出力を生成することによって機能を実行する、1つ以上のプログラム可能なプロセッサによって実行されることができる。またプロセッサ及び論理フローは、専用論理回路、例えば、FPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実行されることができる。コンピュータプログラムの実行に適したプロセッサは、例として、汎用及び専用マイクロプロセッサの両方、ならびに任意の種類のデジタルコンピュータの任意の1つ以上のプロセッサを含む。一般に、プロセッサは、読み出し専用メモリ、ランダムアクセスメモリ、またはその両方から命令及びデータを受信する。コンピュータの基本的な要素は、命令を実行するためのプロセッサ、ならびに命令及びデータを格納するための1つ以上のメモリデバイスである。一般に、コンピュータはまた、例えば、磁気ディスク、光磁気ディスク、または光ディスクなど、データを格納するための1つ以上の大容量記憶デバイスを含むか、またはそれらからデータを受信する、またはそれらにデータを転送する、あるいはその両方のために動作可能に結合される。しかし、コンピュータがそのようなデバイスを有している必要はない。コンピュータプログラム命令及びデータを格納するのに適したコンピュータ読み取り可能なメディアには、あらゆる形式の不揮発性メモリ、メディア、及びメモリデバイスが含まれ、例えば、EPROM、EEPROM、及びフラッシュメモリデバイスなどの半導体メモリデバイス、例えば、内蔵ハードディスクまたはリムーバブルディスクなどの磁気ディスク、光磁気ディスク、及びCD-ROM及びDVD-ROMディスクが含まれる。プロセッサ及びメモリは、専用論理回路によって補完される、または専用論理回路に組み込まれることができる。
ユーザとのインタラクションを提供するために、本開示の1つ以上の態様は、ユーザに情報を表示するための表示装置(例えば、CRT(ブラウン管)、LCD(液晶ディスプレイ)モニタ)またはタッチスクリーン、ならびに任意選択で、ユーザがコンピュータへの入力を提供することができるキーボード及びポインティングデバイス(例えば、マウスまたはトラックボール)を有するコンピュータ上に実装されることができる。他の種類のデバイスもまた、ユーザとのインタラクションを提供するために用いられることができ、例えば、ユーザに提供されるフィードバックは、あらゆる形式の感覚的フィードバック(例えば、視覚フィードバック、聴覚フィードバック、または触覚フィードバック)であることができ、及びユーザからの入力は、音響、音声言語、または触覚入力を含む任意の形式で受信することができる。さらに、コンピュータは、ユーザが使用するデバイスにドキュメントを送受信することで、例えば、ウェブブラウザから受信した要求に応じて、ユーザのクライアントデバイス上のウェブブラウザにウェブページを送信することで、ユーザとインタラクトすることができる。
いくつかの実施態様が説明されている。言うまでもなく、本開示の趣旨及び範囲から逸脱することなく、多様な修正が成され得ることが理解される。したがって、他の実施形態は、以下の特許請求の範囲内である。