(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】
(24)【登録日】2023-11-10
(45)【発行日】2023-11-20
(54)【発明の名称】構造化埋め込みを生成するようにニューラルネットワークをトレーニングすること
(51)【国際特許分類】
G06N 3/08 20230101AFI20231113BHJP
G06N 3/04 20230101ALI20231113BHJP
【FI】
G06N3/08
G06N3/04
(21)【出願番号】P 2022519304
(86)(22)【出願日】2020-09-25
(86)【国際出願番号】 US2020052649
(87)【国際公開番号】W WO2021062105
(87)【国際公開日】2021-04-01
【審査請求日】2022-05-23
(32)【優先日】2019-09-27
(33)【優先権主張国・地域又は機関】US
(73)【特許権者】
【識別番号】502208397
【氏名又は名称】グーグル エルエルシー
【氏名又は名称原語表記】Google LLC
【住所又は居所原語表記】1600 Amphitheatre Parkway 94043 Mountain View, CA U.S.A.
(74)【代理人】
【識別番号】100108453
【氏名又は名称】村山 靖彦
(74)【代理人】
【識別番号】100110364
【氏名又は名称】実広 信哉
(74)【代理人】
【識別番号】100133400
【氏名又は名称】阿部 達彦
(72)【発明者】
【氏名】ロバート・アンドリュー・ジェームズ・クラーク
(72)【発明者】
【氏名】チュン-アン・チャン
(72)【発明者】
【氏名】ヴィンセント・ピン・ルン・ワン
【審査官】真木 健彦
(56)【参考文献】
【文献】特表2017-514251(JP,A)
【文献】特開2019-008742(JP,A)
【文献】Said Ladjal,A PCA-LIKE AUTOENCODER,Computer Science Computer Vision and Pattern Recognition,arXiv,2019年04月02日,P.1-9,https://doi.org/10.48550/arXiv.1904.01277
(58)【調査した分野】(Int.Cl.,DB名)
G06N 3/08
G06N 3/084
G06N 3/04
G06N 3/00
G06T 7/00
(57)【特許請求の範囲】
【請求項1】
コンピュータにより実行される、機械学習モデル(108)に対する入力の埋め込みを生成するように前記機械学習モデル(108)をトレーニングする方法(200)であって、前記機械学習モデル(108)が、前記入力から前記埋め込みを生成するエンコーダ(110)と、前記生成された埋め込みから出力を生成するデコーダ(120)とを有し、前記埋め込み(106)が、前記埋め込み(106)の1つまたは複数の次元をそれぞれが含む
m次元の埋め込みパーティション(106)の系列にパーティショニングされ、前記方法(200)が、
埋め込みパーティション(106)の前記系列内
のn番目の埋め込みパーティション(106A)について、
前記エンコーダ(110)、および前
記n番目の埋め込みパーティション(106A)に対応するデコーダレプリカ(122)をトレーニン
グして前記n番目の埋め込みパーティションに対応する第1のマスク埋め込みを得るための初期トレーニングを実施するステップであって、前記初期トレーニング中に、前記デコーダレプリカ(122)が、
前記第1のマスク埋め込み(106)を入力(102)として受領し、前記第1のマスク埋め込み(106)が、
(i)前記エンコーダ(110)によって生成された、前
記n番目の埋め込みパーティション(106A)についての値、および
(ii)
前記系列内のn+1番目の埋め込みパーティションからm番目の埋め込みパーティション(106)についてのマスクアウト値を含む、
ステップと、
埋め込みパーティション(106)の前記系列内
で前記n+1番目の埋め込みパーティション(106)
から前記m番目の埋め込みパーティションについて、
前記エンコーダ(110)、および前
記n+1番目の埋め込みパーティションに対応するデコーダレプリカ(122)をトレーニン
グして前記n+1番目の埋め込みパーティションに対応するインクリメンタルマスク埋め込み(106)を得るためのインクリメンタルトレーニングを実施するステップであって、前記インクリメンタルトレーニング中に、前
記n+1番目のパーティションに対応する前記デコーダレプリカ(122)が、前記n+1番目のパーティションについての
前記インクリメンタルマスク埋め込み(106)を入力(102)として受領し、前記インクリメンタルマスク埋め込み(106)が、
(i)前記エンコーダ(110)によって生成された、前
記n+1番目の埋め込みパーティション(106)および前記系列内で
1番目の埋め込みパーティションから前
記n番目の埋め込みパーティション(106
)のそれぞれについての値、ならびに
(ii)前記系列内で前
記n+1番目の埋め込みパーティション(106
)からm番目の埋め込みパーティション(106)
のそれぞれについてのマスクアウト値を含む、
ステップと
を
含み、
mは3以上の整数で、nは1以上の整数で、n<mである
方法(200)。
【請求項2】
インクリメンタルトレーニングを実施するステップが、前記系列内で
前記1番目の埋め込みパーティションから前
記n番目の埋め込みパーティション(106
)のそれぞれについて、前記エンコーダ(110)、および前
記1番目の埋め込みパーティションから前記n番目の埋め込みパーティション(106)に対応するデコーダレプリカ(122)をトレーニングするステップであって、前記インクリメンタルトレーニング中に、前記デコーダレプリカ(122)が、前
記1番目の埋め込みパーティションから前記n番目の埋め込みパーティション
のそれぞれについてのインクリメンタルマスク埋め込み(106)を入力(102)として受領する、ステップをさらに含む、請求項1に記載の方法(200)。
【請求項3】
前記インクリメンタルトレーニング中に、前
記n+1番目の埋め込みパーティションに対応する前記デコーダレプリカ(122)のパラメータ
と前記1番目の埋め込みパーティションから前記n番目の埋め込みパーティション
のそれぞれに対応する前記デコーダレプリカ(122)のパラメータが同じ値を有するように制約される、請求項2に記載の方法(200)。
【請求項4】
前記エンコーダ(110)、および前
記n番目の埋め込みパーティション(106A)に対応するデコーダレプリカ(122)をトレーニングするための初期トレーニングを実施するステップが、
前記デコーダレプリカ(122)によって生成された出力(112)について目的関数の勾配(142、144、146)を決定するステップと、
前記勾配(142、144、146)を、前記デコーダレプリカ(122)から、前記エンコーダ(110)の前
記n番目の埋め込みパーティション(106A)を生成する対応する部分のみにバックプロパゲーションするステップと、
前記バックプロパゲーションした勾配(142、144、146)を使用して、前記デコーダレプリカ(122)、および前記エンコーダ(110)の前記対応する部分の、それぞれに対応するパラメータ値を更新するステップと
を含む、請求項1~3のいずれか一項に記載の方法(200)。
【請求項5】
前記エンコーダ(110)、および前
記n+1番目の埋め込みパーティションに対応するデコーダレプリカ(122)をトレーニングするためのインクリメンタルトレーニングを実施するステップが、
前記デコーダレプリカ(122)によって生成された出力(112)について目的関数の勾配(142、144、146)を決定するステップと、
前記勾配(142、144、146)を、前記デコーダレプリカ(122)から、前記エンコーダ(110)の前
記n+1番目の埋め込みパーティション(106)を生成する対応する部分のみにバックプロパゲーションするステップと、
前記バックプロパゲーションした勾配(142、144、146)を使用して、前記デコーダレプリカ(122)、および前記エンコーダ(110)の前記対応する部分の、それぞれに対応するパラメータ値を更新するステップと
を含む、請求項1~4のいずれか一項に記載の方法(200)。
【請求項6】
前記目的関数の前記勾配(142、144、146)が所定の値に収束したとの判定をするステップと、
前記判定に応答して、前記初期トレーニングを終了し、前
記n+1番目の埋め込みパーティションについての前記インクリメンタルトレーニングを開始するステップと
をさらに含む、請求項5に記載の方法(200)。
【請求項7】
前記系列内
の前記n+1番目の埋め込みパーティションから前記m番目の埋め込みパーティション(106)
のそれぞれについての前記マスクアウト値がゼロである、請求項1~6のいずれか一項に記載の方法(200)。
【請求項8】
前記エンコーダ(110)が、固定の出力範囲を有する活性化関数を中間エンコーダ出力(112)に適用して前記埋め込み(106)を生成する、請求項1~7のいずれか一項に記載の方法(200)。
【請求項9】
前記入力がテキスト単位であり、前記出力が前記テキスト単位を表す発話である、請求項1~8のいずれか一項に記載の方法(200)。
【請求項10】
全てのインクリメンタルトレーニングを実施した後で、
新たな入力(102)を受領するステップと、
前記新たな入力(102)を、前記トレーニング済みのエンコーダ(110)を使用して処理して、前記新たな入力(102)についての初期埋め込み(106)を生成するステップと、
前記初期埋め込み(106)内の所与の埋め込みパーティション(106)の値を修正するユーザ入力(102)を受領して、新たな埋め込み(106)を生成するステップと、
前記新たな埋め込み(106)を、前記トレーニング済みのデコーダ(120)を使用して処理して、前記新たな埋め込み(106)についての出力(112)を生成するステップと
をさらに含む、請求項1~9のいずれか一項に記載の方法(200)。
【請求項11】
1つまたは複数のコンピュータと、命令を記憶した1つまたは複数の記憶デバイスとを備えたシステム(100)であって、前記命令が、前記1つまたは複数のコンピュータによって実行されると前記1つまたは複数のコンピュータに、機械学習モデル(108)に対する入力の埋め込みを生成するように前記機械学習モデル(108)をトレーニングするための動作を実施させるように動作可能であり、前記機械学習モデル(108)が、前記入力から前記埋め込みを生成するエンコーダ(110)と、前記生成された埋め込みから出力を生成するデコーダ(120)とを有し、前記埋め込み(106)が、前記埋め込み(106)の1つまたは複数の次元をそれぞれが含む埋め込みパーティション(106)の系列にパーティショニングされ、前記動作が、
埋め込みパーティション(106)の前記系列内
のn番目の埋め込みパーティション(106A)について、
前記エンコーダ(110)、および前
記n番目の埋め込みパーティション(106A)に対応するデコーダレプリカ(122)をトレーニン
グして前記n番目の埋め込みパーティションに対応する第1のマスク埋め込みを得るための初期トレーニングを実施することであって、前記初期トレーニング中に、前記デコーダレプリカ(122)が、
前記第1のマスク埋め込み(106)を入力(102)として受領し、前記第1のマスク埋め込み(106)が、
(i)前記エンコーダ(110)によって生成された、前
記n番目の埋め込みパーティション(106A)についての値、および
(ii)前記系列内の
n+1番目の埋め込みパーティションからm番目の埋め込みパーティション(106)についてのマスクアウト値を含む、
実施することと、
埋め込みパーティション(106)の前記系列内で
前記n+1番目の埋め込みパーティション(106)
から前記m番目の埋め込みパーティションについて、
前記エンコーダ(110)、および前
記n+1番目の埋め込みパーティションに対応するデコーダレプリカ(122)をトレーニン
グして前記n+1番目の埋め込みパーティションに対応するインクリメンタルマスク埋め込み(106)を得るためのインクリメンタルトレーニングを実施することであって、前記インクリメンタルトレーニング中に、前
記n+1番目の埋め込みパーティションに対応する前記デコーダレプリカ(122)が、前
記n+1番目のパーティションについての
前記インクリメンタルマスク埋め込み(106)を入力(102)として受領し、前記インクリメンタルマスク埋め込み(106)が、(i)前記エンコーダ(110)によって生成された、前
記n+1番目の埋め込みパーティション(106)および前記系列内で
1番目の埋め込みパーティションから前
記n番目の埋め込みパーティション(106
)のそれぞれについての値、ならびに(ii)前記系列内で前
記n+1番目の埋め込みパーティション(106
)からm番目の埋め込みパーティション(106)
のそれぞれについてのマスクアウト値を含む、実施することと
を
含み、
mは3以上の整数で、nは1以上の整数で、n<mである
システム(100)。
【請求項12】
インクリメンタルトレーニングを実施することが、前記系列内で前
記1番目の埋め込みパーティションから前記n番目の埋め込みパーティション(106
)のそれぞれについて、前記エンコーダ(110)、および前記
1番目の埋め込みパーティションから前記n番目の埋め込みパーティション(106)に対応するデコーダレプリカ(122)をトレーニングすることであって、前記インクリメンタルトレーニング中に、前記デコーダレプリカ(122)が、前記
1番目の埋め込みパーティションから前記n番目の埋め込みパーティション
のそれぞれについてのインクリメンタルマスク埋め込み(106)を入力(102)として受領する、トレーニングすることをさらに含む、請求項11に記載のシステム(100)。
【請求項13】
前記インクリメンタルトレーニング中に、前
記n+1番目のパーティションに対応する前記デコーダレプリカ(122)のパラメータ
と前記
1番目の埋め込みパーティションから前記n番目の埋め込みパーティション
のそれぞれに対応する前記デコーダレプリカ(122)のパラメータが同じ値を有するように制約される、請求項12に記載のシステム(100)。
【請求項14】
前記エンコーダ(110)、および前
記n番目の埋め込みパーティション(106A)に対応するデコーダレプリカ(122)をトレーニングするための初期トレーニングを実施することが、
前記デコーダレプリカ(122)によって生成された出力(112)について目的関数の勾配(142、144、146)を決定することと、
前記勾配(142、144、146)を、前記デコーダレプリカ(122)から、前記エンコーダ(110)の前
記n番目の埋め込みパーティション(106A)を生成する対応する部分のみにバックプロパゲーションすることと、
前記バックプロパゲーションした勾配(142、144、146)を使用して、前記デコーダレプリカ(122)、および前記エンコーダ(110)の前記対応する部分の、それぞれに対応するパラメータ値を更新することと
を含む、請求項11~13のいずれか一項に記載のシステム(100)。
【請求項15】
前記エンコーダ(110)、および前
記n+1番目の埋め込みパーティションに対応するデコーダレプリカ(122)をトレーニングするためのインクリメンタルトレーニングを実施することが、
前記デコーダレプリカ(122)によって生成された出力(112)について目的関数の勾配(142、144、146)を決定することと、
前記勾配(142、144、146)を、前記デコーダレプリカ(122)から、前記エンコーダ(110)の前
記n+1番目の埋め込みパーティション(106)を生成する対応する部分のみにバックプロパゲーションすることと、
前記バックプロパゲーションした勾配(142、144、146)を使用して、前記デコーダレプリカ(122)、および前記エンコーダ(110)の前記対応する部分の、それぞれに対応するパラメータ値を更新することと
を含む、請求項11~14のいずれか一項に記載のシステム(100)。
【請求項16】
前記動作が、
前記目的関数の前記勾配(142、144、146)が所定の値に収束したとの判定をすることと、
前記判定に応答して、前記初期トレーニングを終了し、前記系列内
のn+1番目のパーティションについての前記インクリメンタルトレーニングを開始することと
をさらに含む、請求項15に記載のシステム(100)。
【請求項17】
前記系列内
の前記n+1番目の埋め込みパーティションから前記m番目の埋め込みパーティション(106)
のそれぞれについての前記マスクアウト値がゼロである、請求項11~16のいずれか一項に記載のシステム(100)。
【請求項18】
前記エンコーダ(110)が、固定の出力(112)範囲を有する活性化関数を中間エンコーダ出力(112)に適用して前記埋め込み(106)を生成する、請求項11~17のいずれか一項に記載のシステム(100)。
【請求項19】
前記入力がテキスト単位であり、前記出力が前記テキスト単位を表す発話である、請求項11~18のいずれか一項に記載のシステム(100)。
【請求項20】
全てのインクリメンタルトレーニングを実施した後で、前記動作が、
新たな入力(102)を受領することと、
前記新たな入力(102)を、前記トレーニング済みのエンコーダ(110)を使用して処理して、前記新たな入力(102)についての初期埋め込み(106)を生成することと、
前記初期埋め込み(106)内の所与の埋め込みパーティション(106)の値を修正するユーザ入力(102)を受領して、新たな埋め込み(106)を生成することと、
前記新たな埋め込み(106)を、前記トレーニング済みのデコーダ(120)を使用して処理して、前記新たな埋め込み(106)についての出力(112)を生成することと
をさらに含む、請求項11~19のいずれか一項に記載のシステム(100)。
【請求項21】
命令がエンコードされたコンピュータ記憶媒体であって、前記命令が、1つまたは複数のコンピュータによって実行されると前記1つまたは複数のコンピュータに、機械学習モデル(108)に対する入力の埋め込みを生成するように前記機械学習モデル(108)をトレーニングするための動作を実施させ、前記機械学習モデル(108)が、前記入力から前記埋め込みを生成するエンコーダ(110)と、前記生成された埋め込みから出力を生成するデコーダ(120)とを有し、前記埋め込み(106)が、前記埋め込み(106)の1つまたは複数の次元をそれぞれが含む埋め込みパーティション(106)の系列にパーティショニングされ、前記動作が、
埋め込みパーティション(106)の前記系列内
のn番目の埋め込みパーティション(106A)について、
前記エンコーダ(110)、および前
記n番目の埋め込みパーティション(106A)に対応するデコーダレプリカ(122)をトレーニン
グして前記n番目の埋め込みパーティションに対応する第1のマスク埋め込みを得るための初期トレーニングを実施することであって、前記初期トレーニング中に、前記デコーダレプリカ(122)が、
前記第1のマスク埋め込み(106)を入力(102)として受領し、前記第1のマスク埋め込み(106)が、
(i)前記エンコーダ(110)によって生成された、前
記n番目の埋め込みパーティション(106A)についての値、および
(ii)前記系列内の
n+1番目の埋め込みパーティション(106A)からm番目の埋め込みパーティション(106)についてのマスクアウト値を含む、実施することと、
埋め込みパーティション(106)の前記系列内
で前記n+1番目の埋め込みパーティション(106)
から前記m番目の埋め込みパーティションについて、
前記エンコーダ(110)、および前
記n+1番目のパーティションに対応するデコーダレプリカ(122)をトレーニン
グして前記n+1番目の埋め込みパーティションに対応するインクリメンタルマスク埋め込み(106)を得るためのインクリメンタルトレーニングを実施することであって、前記インクリメンタルトレーニング中に、前
記n+1番目のパーティションに対応する前記デコーダレプリカ(122)が、前
記n+1番目のパーティションについての
前記インクリメンタルマスク埋め込み(106)を入力(102)として受領し、前記インクリメンタルマスク埋め込み(106)が、(i)前記エンコーダ(110)によって生成された、前
記n+1番目の埋め込みパーティション(106)および前記系列内で
1番目の埋め込みパーティションから前記n番目の埋め込みパーティション(106
)のそれぞれについての値、ならびに(ii)前記系列内で前
記n+1番目の埋め込みパーティション(106
)からm番目の埋め込みパーティション(106)
のそれぞれについてのマスクアウト値を含む、実施することと
を
含み、
mは3以上の整数で、nは1以上の整数で、n<mである
コンピュータ記憶媒体。
【発明の詳細な説明】
【技術分野】
【0001】
本明細書は、ニューラルネットワークをトレーニングすることに関する。
【背景技術】
【0002】
ニューラルネットワークは、非線形ユニットの1つまたは複数の層を用いて、受領した入力に対する出力を予測する、機械学習モデルである。一部のニューラルネットワークは、出力層に加えて、1つまたは複数の隠れ層を含む。各隠れ層の出力が、ネットワーク内の次の層、すなわち次の隠れ層または出力層に対する入力として使用される。ネットワークの各層は、受領した入力から、それぞれに対応するパラメータセットの現在の値に従って出力を生成する。
【発明の概要】
【課題を解決するための手段】
【0003】
本明細書では、後に直感的に修正されることの可能な構造化埋め込みを生成するようにエンコーダ-デコーダエンジンをトレーニングすることに関する技術について説明する。
【0004】
一般に、本明細書において説明する本主題の革新的な一態様は、機械学習モデルに対する入力の埋め込みを生成するように機械学習モデルをトレーニングするための、1つまたは複数のコンピュータによって実施される方法であって、機械学習モデルが、入力から埋め込みを生成するエンコーダと、生成された埋め込みから出力を生成するデコーダとを有し、埋め込みが、埋め込みの1つまたは複数の次元をそれぞれが含む埋め込みパーティションの系列にパーティショニングされ、方法が、埋め込みパーティションの系列内の第1の埋め込みパーティションについて、エンコーダ、および第1の埋め込みパーティションに対応するデコーダレプリカをトレーニングするための初期トレーニングを実施することであって、初期トレーニング中に、デコーダレプリカが、第1のマスク埋め込み(masked embedding)を入力として受領し、第1のマスク埋め込みが、(i)エンコーダによって生成された、第1の埋め込みパーティションについての値、および(ii)系列内の後続の全ての埋め込みパーティションについてのマスクアウト値(masked out value)を含む、実施することと、埋め込みパーティションの系列内で第1の埋め込みパーティションより後の各特定の埋め込みパーティションについて、エンコーダ、および特定のパーティションに対応するデコーダレプリカをトレーニングするためのインクリメンタルトレーニングを実施することであって、インクリメンタルトレーニング中に、特定のパーティションに対応するデコーダレプリカが、特定のパーティションについてのインクリメンタルマスク埋め込み(incrementally masked embedding)を入力として受領し、インクリメンタルマスク埋め込みが、(i)エンコーダによって生成された、特定の埋め込みパーティションおよび系列内で特定の埋め込みパーティションに先行する各埋め込みパーティションについての値、ならびに(ii)系列内で特定の埋め込みパーティションより後の任意の後続の埋め込みパーティションについてのマスクアウト値を含む、実施することとを含む、方法として具現化することができる。本態様の他の実施形態は、対応するシステム、装置、およびコンピュータ記憶デバイス上にエンコードされた、方法のアクションを実施するように構成されたコ
ンピュータプログラムを含む。
【0005】
いくつかの実装形態では、インクリメンタルトレーニングを実施することが、系列内で特定の埋め込みパーティションに先行する各先行埋め込みパーティションについて、エンコーダ、および先行埋め込みパーティションに対応するデコーダレプリカをトレーニングすることであって、インクリメンタルトレーニング中に、デコーダレプリカが、先行パーティションについてのインクリメンタルマスク埋め込みを入力として受領する、トレーニングすることをさらに含む。
【0006】
いくつかの実装形態では、インクリメンタルトレーニング中に、特定のパーティションに対応するデコーダレプリカのパラメータと各先行パーティションに対応するデコーダレプリカのパラメータが同じ値を有するように制約される。
【0007】
いくつかの実装形態では、エンコーダ、および第1の埋め込みパーティションに対応するデコーダレプリカをトレーニングするための初期トレーニングを実施することが、デコーダレプリカによって生成された出力について目的関数の勾配を決定することと、勾配を、デコーダレプリカから、エンコーダの第1の埋め込みパーティションを生成する対応する部分のみにバックプロパゲーションすることと、バックプロパゲーションした勾配を使用して、デコーダレプリカ、およびエンコーダの対応する部分の、それぞれに対応するパラメータ値を更新することとを含む。
【0008】
いくつかの実装形態では、エンコーダ、および特定のパーティションに対応するデコーダレプリカをトレーニングするためのインクリメンタルトレーニングを実施することが、デコーダレプリカによって生成された出力について目的関数の勾配を決定することと、勾配を、デコーダレプリカから、エンコーダの特定の埋め込みパーティションを生成する対応する部分のみにバックプロパゲーションすることと、バックプロパゲーションした勾配を使用して、デコーダレプリカ、およびエンコーダの対応する部分の、それぞれに対応するパラメータ値を更新することとを含む。
【0009】
いくつかの実装形態では、方法は、目的関数の勾配が所定の値に収束したとの判定をすることと、判定に応答して、初期トレーニングを終了し、系列内の第2のパーティションについてのインクリメンタルトレーニングを開始することとをさらに含む。
【0010】
いくつかの実装形態では、系列内の後続の全ての埋め込みパーティションについてのマスクアウト値がゼロである。
【0011】
いくつかの実装形態では、エンコーダが、固定の出力範囲を有する活性化関数を中間エンコーダ出力に適用して埋め込みを生成する。
【0012】
いくつかの実装形態では、入力がテキスト単位(unit of text)であり、出力がテキスト単位を表す発話である。
【0013】
いくつかの実装形態では、方法は、全てのインクリメンタルトレーニングを実施した後で、新たな入力を受領することと、新たな入力を、トレーニング済みのエンコーダを使用して処理して、新たな入力についての初期埋め込みを生成することと、初期埋め込み内の所与の埋め込みパーティションの値を修正するユーザ入力を受領して、新たな埋め込みを生成することと、新たな埋め込みを、トレーニング済みのデコーダを使用して処理して、新たな埋め込みについての出力を生成することとをさらに含む。
【0014】
本明細書において説明する本主題の特定の実施形態は、以下の利点のうちの1つまたは複数を実現するように実装することができる。典型的には、エンコーダ-デコーダエンジンは、どちらも機械学習モデル、例えばニューラルネットワークとして実装される、エンコーダおよびデコーダを含む。エンジンは、受領した入力を数値の順序付き集合(ordered collection)を含む埋め込みにエンコードし、次いで、埋め込みをデコードして出力を生成することによって機械学習タスクを実施するように、構成することができる。従来のトレーニング技法に従うと、埋め込み表現は典型的には、もつれており、例えば、埋め込み内に含まれる単一の数値が複数の出力特徴を表すことがある。実際のところ、もつれ埋め込み表現があると、いくつかの問題がある。1つの問題は、それが最適化の困難さを高め、それによりさらにはトレーニングプロセスが長引く、というものである。別の問題は、もつれ表現により、人間のユーザにとっての、埋め込みの全体的な解釈可能性が低下し、生成後に埋め込みを所望の通りに修正することができない、というものである。しかし、本明細書では、エンコーダ-デコーダエンジンを構造化プロセスにおいてトレーニングするための技法を開示する。構造化トレーニングプロセスの結果として、生成された埋め込みは、出力の非もつれ(disentangled)表現となる。具体的には、埋め込みは、出力の異なる特徴をそれぞれが表す複数のパーティションを含む。さらに、出力の一次特徴(primary feature)が一般に、第1の埋め込みパーティションによって表される。出力特徴を表す埋め込みをそのような解釈可能な形で生成することのできる能力を有することにより、人間のユーザが、出力の特定の特徴を、出力がそれに基づいて生成される埋め込み内の対応する数値を調整することによって、容易に修正することが可能になる。そのような能力により、エンコーダ-デコーダエンジンの応用の範囲が、生成された出力の微調整が頻繁に必要となる使用事例を含むように広がる。例えば、音声合成応用では、さまざまな人間のユーザが、ある特定の入力テキストが当初合成された発音とは異なる特定の様式で発音されることを望む場合がある。
【0015】
本明細書において説明する本主題の1つまたは複数の実施形態の詳細については、添付の図面および下の説明中に記載されている。本主題の他の特徴、態様、および利点が、説明、図面、および特許請求の範囲から明らかとなろう。
【図面の簡単な説明】
【0016】
【
図1】例示的なエンコーダ-デコーダシステムのブロック図である。
【
図2】エンコーダ-デコーダエンジンをトレーニングするための、例示的なプロセスのフロー図である。
【
図3A】エンコーダ-デコーダエンジンをトレーニングするための初期トレーニングを実施するための、例示的なプロセスのフロー図である。
【
図3B】エンコーダ-デコーダエンジンをトレーニングするためのインクリメンタルトレーニングを実施するための、例示的なプロセスのフロー図である。
【
図4A】エンコーダ-デコーダエンジンをトレーニングするための第1の埋め込みパーティションについての初期トレーニングを実施する例の図である。
【
図4B】エンコーダ-デコーダエンジンをトレーニングするための第2の埋め込みパーティションについてのインクリメンタルトレーニングを実施する例の図である。
【発明を実施するための形態】
【0017】
さまざまな図面中の同様の参照番号および名称は、同様の要素を表す。
【0018】
本明細書では、1つまたは複数の位置にある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装された、後に人間のユーザによって直感的に修正されることの可能な構造化埋め込みを生成するようにエンコーダ-デコーダエンジンをトレーニングするシステムについて説明する。
【0019】
図1は、例示的なエンコーダ-デコーダシステム100のブロック図である。エンコーダ-デコーダシステム100は、下で説明するシステム、コンポーネント、および技法が実装される、1つまたは複数の位置にある1つまたは複数のコンピュータ上のコンピュータプログラムとして実装されたシステムの一例である。
【0020】
エンコーダ-デコーダシステム100は、入力102を受領し、入力102を、入力102に比べて低次元の空間における埋め込み106にエンコードするように構成される。換言すれば、埋め込み106は、入力102の次元数よりも低い固定の次元数を有する空間における数値表現であり、すなわち、埋め込み106は、固定数の数を有する、数値の順序付き集合である。例えば、埋め込み106は、固定サイズのベクトルまたは行列とすることができる。
【0021】
次いで、システム100は、埋め込み106を出力112にデコードする。
【0022】
システム100は、エンコードプロセスおよびデコードプロセスを、エンコーダ-デコーダエンジン108を使用して実施し、エンコーダ-デコーダエンジン108は、エンコーダ110およびデコーダ120を含む。エンコーダ-デコーダエンジン108は、交換可能に、機械学習モデル108と呼ばれることがある。
【0023】
一般に、システム100は、エンコードプロセス、デコードプロセス、またはエンコードプロセスとデコードプロセスの両方が関与する、さまざまな機械学習タスクのいずれかを実施するように構成することができる。特定のタスクに応じて、入力102と出力112はどちらも、多様なタイプのデータのいずれかとすることができ、入力102と出力112は、同じタイプのものであってもよく、同じタイプのものでなくてもよい。同じタイプのデータが入力102と出力112のどちらにも含まれる場合、エンコーダ-デコーダエンジン108によって実施されるタスクはオートエンコーディングタスクと呼ぶことができる。
【0024】
例えば、タスクが画像オートエンコーディングタスクである場合、入力102は、1つの画像を表す構造化データ(例えば配列)であり、エンジン108によって生成される出力112は、再構築された画像を表すデータである。
【0025】
別の例として、タスクがオーディオオートエンコーディングタスクである場合、入力102は、オーディオを表すデータ(例えば波形オーディオファイル)であり、エンジン108によって生成される出力112は、再構築されたオーディオを表すデータである。例示的なオーディオとしては、音、音声、音楽などがあり得る。
【0026】
具体的には、エンコーダ110とデコーダ120はどちらも、1つまたは複数のニューラルネットワーク層、例えば全結合層、畳み込み層、再帰層、活性化層などをそれぞれが含むことのできる、ニューラルネットワークである。ニューラルネットワークの各層は、受領した入力から、それぞれに対応するパラメータセットの現在の値に従って出力を生成する。先行層の出力が、後続層の入力を構築するために使用される。
【0027】
エンコーダ110は、入力102を受領し、入力102を現在のエンコーダパラメータ値に従って処理して、入力102に基づく埋め込み106を生成するように構成される。
【0028】
いくつかの実装形態では、エンコーダ110は、固定の出力範囲を有する有界活性化関数を、中間エンコーダ出力(すなわち活性化層に先行する層の出力)に適用して、最終の埋め込み106を生成する。換言すれば、エンコーダ110の最終層は活性化層であり、それが、エンコーダ110内で活性化層に先行する層によって生成された中間エンコーダ出力に、固定の出力範囲を有する活性化関数を適用する。一般に、活性化関数は、関数への入力の分布を異なる分布に変換する。有界活性化関数、例えばtanh関数やシグモイド関数は、生成される埋め込み106の分布を、予測可能になるように、すなわち固定の区間内に入るように強制する。
【0029】
デコーダ120は、生成された埋め込み106を受領し、埋め込み106を現在のデコーダパラメータ値に従って処理して、出力112を生成するように構成される。
【0030】
エンコーダ-デコーダシステム100は、トレーニングエンジン130も含み、トレーニングエンジン130は、エンコーダ-デコーダエンジン108をトレーニング入力132に対してトレーニングするように構成される。具体的には、トレーニングエンジン130は、エンコーダ110およびデコーダ120を、反復トレーニングプロセスを使用して、エンコーダパラメータおよびデコーダパラメータのセットを含む、エンコーダ-デコーダエンジン108のパラメータのトレーニング後の値を決定するようにトレーニングする。
【0031】
一般に、トレーニングの質は、トレーニング済みのエンコーダ-デコーダエンジン108が所与の機械学習タスクをどれだけ十分に実施することができるかを表す目的関数によって、測定することができる。具体的には、目的関数は、所与の入力について生成された出力が、所望のターゲット出力にどれだけ近いかを評価する。さらに、上で説明したように、出力112は、デコーダ120によって、埋め込み106を処理することに基づいて生成され、埋め込み106は、エンコーダ110によって、受領した入力102を処理することに基づいて生成される。したがって、トレーニングの質により、生成された埋め込み106が、生成される出力112の際立った特徴をどれだけ十分に表すことができるかがさらに決まる。
【0032】
いくつかの実装形態では、システム100は、埋め込み106を埋め込みパーティションの系列に分割する。各埋め込みパーティションは、1つまたは複数の次元の数値を含む。例えば、埋め込み106が5次元ベクトル、すなわち5つの数値をもつベクトル[x1,x2,x3,x4,x5]である場合、第1の次元、すなわち数値x1は、系列内の第1の埋め込みパーティションとすることができる。それに応じて、後続の各次元は、後続の埋め込みパーティションとすることができ、その結果、合計で5つの埋め込みパーティションとなる。
【0033】
エンコーダ-デコーダエンジン108を、下で
図2~
図4を参照してより詳細に説明する構造化トレーニングプロセスを使用して適切にトレーニングすることによって、システムは、生成される全ての出力について所与の各埋め込みパーティションが出力112の同じ対応する特徴を表し、かつ各パーティションが他の全てのパーティションとは異なる特徴に対応するように、エンコーダをトレーニングする。換言すれば、トレーニングの結果として、出力112の特定の特徴が、対応する1つの埋め込みパーティション内の数値の変化に対して敏感になるとともに、他の埋め込みパーティション内の数値の変化に対して比較的不変になる。さらに、場合によっては、系列内の埋め込みパーティションが、出力のさまざまな特徴を順序正しく表す。そのような場合、第1の埋め込みパーティションによって表される特定の特徴は、出力の一次特徴に対応する。一次特徴は、トレーニング中に、エンジン108が、トレーニングの質を測定する目的関数を使用して計算された誤差を最小限に抑えることのできる特徴に対応する。オプションで、一次特徴は、出力の最も代表的な特性、例えば、画像出力内に描かれた物体のアイデンティティ、音声出力内に録音された声の音程などを指す。いくつかの実装形態では、同様に、系列内の後続の埋め込みパーティションによって表される対応する特徴が、出力の二次特徴、すなわちトレーニング中にエンジン108が第2の最小誤差で出力を生成することのできる特徴に対応する。
【0034】
例として、トレーニング済みのエンコーダ-デコーダエンジン108は、入力が、1つまたは複数のテキスト単位を表すトークン化データであり、出力が、テキスト単位を表す発話のセット(または発話の波形)である、音声合成タスクに使用されるとき、入力テキストに対応する出力発話のさまざまな韻律的特徴をそれぞれが表すことのできる埋め込みパーティションの集合を生成するように構成することができる。例示的な韻律的特徴としては、音程、音長(length)、音量、音色などがあり得る。したがって、あるパーティションは音程を表すことができ、別のパーティションは音長を表すことができ、以下同様である。オプションで、各埋め込みパーティションが同様に2次元以上の数値を含む場合、1つの埋め込みパーティション内の各次元は、対応する韻律的特徴の特定の属性、例えば音程の高さ、傾き(slope)、または曲率(curvature)をさらに表すことができる。
【0035】
いくつかの実装形態では、システム100は、トレーニングされた後に、トレーニング入力と同じタイプのデータである新たな入力を受領するように構成することができる。システム100は、新たな入力を、トレーニング済みのエンコーダを使用して処理して、新たな入力についての初期埋め込みを生成する。次いでシステムは、初期埋め込みを、トレーニング済みのデコーダを使用して処理して、初期出力を生成する。構造化トレーニングプロセスの結果として、初期埋め込みは、出力の異なる特徴をそれぞれが表す複数のパーティションを含む。
【0036】
例えば、新たな入力とトレーニング入力がどちらも、画像再構築タスクのための画像データである場合、各埋め込みパーティションは、再構築される画像の特定のグラフィック特徴、例えばスケール、照明、または色を表すことができる。
【0037】
別の例として、新たな入力とトレーニング入力がどちらも、音声合成タスクのためのテキストデータである場合、各埋め込みパーティションは、発話の特定の韻律的特徴、例えば音程、持続期間、音量、または音色を表すことができる。
【0038】
初期出力の特徴が生成された後でそれらを修正できるようにするために、システム100は、初期埋め込み内の1つまたは複数の所与の埋め込みパーティションの値を新たな埋め込みを生成するように修正するユーザ入力を、例えばシステムによって提供されるアプリケーションプログラミングインターフェース(API)を通じて、またはシステムによって生成され、ユーザデバイス上に表示されるユーザインターフェースプレゼンテーションを通じて受領するように、さらに構成することができる。ユーザ入力は、1つまたは複数の所与の埋め込みパーティション内の数値の集合に対する修正を指定することができる。ユーザ入力を受領すると、システム100は、新たな埋め込みを、トレーニング済みのデコーダを使用して処理して、新たな埋め込みに基づく修正された出力を生成する。その場合、修正された出力は、1つまたは複数の修正された特徴をその表現に組み込み、例えば、修正された色を再構築された画像に組み込み、スケール変更し直された音程を生成された発話に組み込み、以下同様である。
【0039】
特定の一例として、オーディオ処理タスクでは、システムは、オーディオを表す入力データ(例えばユーザ音声を録音したもの、またはコンピュータにより生成された音声サンプル)を処理して、初期埋め込みを生成する。システムは、1つまたは複数の埋め込みパーティション内の数値に対する修正を指定するユーザ入力を受領するように構成することができる。次いで、システムは、修正された埋め込みを処理して、修正されたオーディオを生成する。修正されたオーディオは、入力オーディオの対応する特徴に対する1つまたは複数のユーザ指定の修正を組み込む。
【0040】
一方、トレーニングエンジン130がエンコーダ-デコーダエンジン108を、従来の手法で、すなわち構造化トレーニングプロセスに従わずにトレーニングした場合、トレーニング済みのエンコーダ110は、もつれ埋め込み106、すなわち出力112の2つ以上の特徴をそれぞれが表す数値からなる埋め込みを生成する可能性があり、出力112は、トレーニング済みのデコーダ120によって、その埋め込み106を処理することに基づいて生成される。換言すれば、そのような埋め込み106が生成された後で、その中に含まれる数値のうちのいずれか1つに対して行われる修正の結果、出力112内の2つ以上の特徴に対する変化が生じることになる。加えて、非もつれ埋め込み106を生成するようにエンコーダ110をトレーニングすることを目的とする他のトレーニング技法が存在するが、さまざまな埋め込み次元と出力112の特徴との間の対応する関係は特定するのが困難である。具体的には、別の、非もつれ埋め込みトレーニング技法が使用される場合、エンコーダ-デコーダエンジンがトレーニングされた後で、どの埋め込み次元がどの特徴に対応するかを特定するのは難しいはずであり、というのも、これらの技法では、本明細書において説明する構造化された反復的な様式でエンコーダ-デコーダエンジンをトレーニングしていないためである。これらの状況下では、生成された出力の特定の特徴を所望の通りに微調整することは困難となり、しばしば実行不可能となるはずである。
【0041】
図2は、エンコーダ-デコーダエンジンをトレーニングするための、例示的な方法200のフロー図である。簡単のため、方法200については、1つまたは複数の位置にある1つまたは複数のコンピュータからなるシステムによって実施されるものとして説明する。例えば、本明細書に従って適切にプログラムされた、エンコーダ-デコーダシステム、例えば
図1のエンコーダ-デコーダシステム100が、方法200を実施することができる。
【0042】
方法200は、構造化トレーニングプロセスと呼ぶことができる。手短に言うと、構造化トレーニングプロセスは、初期トレーニングプロセス、および1つまたは複数のインクリメンタルトレーニングプロセスを含む。
【0043】
いくつかの実装形態では、方法200を実施する前、または方法200を実施している間に、システムは、デコーダ、すなわち
図1に描かれたエンコーダ-デコーダエンジン108内に含まれるデコーダ120に基づく、1つまたは複数のデコーダレプリカを生成する。1つまたは複数のデコーダレプリカは、デコーダと同じアーキテクチャおよびパラメータ値を有するように生成される。したがって、簡単のため、下の説明では、デコーダが参照されるべき場合でも、デコーダレプリカのみを参照する。
【0044】
そのような実装形態では、デコーダレプリカの数が、典型的には、埋め込み内に含まれるパーティションの数と同じである。すなわち、システムは、埋め込みパーティションごとに対応するデコーダレプリカを生成する。
【0045】
さらに、方法200を実施するとき、システムは、特定のデコーダレプリカのパラメータ値に行われたどんな変更も、他の全てのデコーダレプリカに同期的に適用する。このようにして、システムは、全てのデコーダレプリカのパラメータ値を同じになるように制約する。
【0046】
システムはトレーニング入力を受領する(202)。各トレーニング入力は、ターゲット出力に関連付けられている。ターゲット出力とは、エンジンがトレーニング入力に対して実施するように構成されている機械学習タスクを、エンジンが実施することにより生成すべき出力である。
【0047】
システムは、埋め込みパーティションの系列内の第1の埋め込みパーティションについての初期トレーニングを実施する(204)。第1の埋め込みパーティションは、エンジンによって、受領したトレーニング入力を処理することに基づいて生成された埋め込みからの、第1の1つまたは複数の次元の数値を含む。具体的には、システムは、埋め込み全体を処理する代わりに、初期トレーニング中に第1の埋め込みパーティションのみを処理する。すなわち、システムは、第1の埋め込みパーティション内に含まれる数値のみに基づいてトレーニング出力を生成する。したがって、各初期トレーニング反復の終わりに、そのような数値のみが更新される。
【0048】
一般に、初期トレーニングを実施することにより、エンジンが、トレーニング出力の一次特徴を表す第1の埋め込みパーティションを生成することを学習するように促される。一次特徴は、トレーニング出力の最も代表的な特性、例えば、画像トレーニング出力内に描かれた物体のアイデンティティ、音声トレーニング出力内に録音された声の音程などを指す。埋め込み全体を処理するのではないものの、トレーニング出力の一次特徴を表す第1の埋め込みパーティションを処理することにより、エンジンが、ターゲット出力に可能な限り近いトレーニング出力を生成することが可能になり、したがって、トレーニングの質を測定する目的関数を使用して計算された誤差が低減する。
【0049】
初期トレーニングの実施については、下で
図3Aおよび
図4Aを参照してより詳細に説明する。
【0050】
初期トレーニングが終了した後で(例えば所定数の初期トレーニング反復が完了した後で、または目的関数の計算された勾配が所定の値に収束した後で)、システムはインクリメンタルトレーニングの実施に移る。
【0051】
システムは、埋め込みパーティションの系列内で第1の埋め込みパーティションより後の各特定の埋め込みパーティションについてのインクリメンタルトレーニングを実施する(206)。いくつかの実装形態では、インクリメンタルトレーニングは、系列内の第2の埋め込みパーティションから開始する。第2の埋め込みパーティションは、系列内で第1の埋め込みパーティションの後に続く1つまたは複数の次元の数値を含む。同様に、各インクリメンタルトレーニングプロセスも、ある特定の終了基準が満たされたときに、例えば所定数のインクリメンタルトレーニング反復が完了した後で、または目的関数の計算された勾配が所定の値に収束した後で、終了する。
【0052】
インクリメンタルトレーニングを実施することにより、エンジンが、トレーニング出力の対応する特徴をそれぞれが表す埋め込みパーティションを生成することを学習するように促される。インクリメンタルトレーニングの実施については、下で
図3Bおよび
図4Bを参照してより詳細に説明する。
【0053】
図3Aは、エンコーダ-デコーダエンジンをトレーニングするための初期トレーニングを実施するための、例示的なプロセス300のフロー図である。簡単のため、プロセス300Aについては、1つまたは複数の位置にある1つまたは複数のコンピュータからなるシステムによって実施されるものとして説明する。例えば、本明細書に従って適切にプログラムされた、エンコーダ-デコーダシステム、例えば
図1のエンコーダ-デコーダシステム100が、プロセス300Aを実施することができる。
【0054】
システムは、初期トレーニング、すなわち系列内の第1の埋め込みパーティションについてのトレーニングを実施するために、さまざまなトレーニング入力についてプロセス300を繰り返し実施することができる。
【0055】
システムは、ターゲット出力に関連付けられたトレーニング入力を受領する(302)。ターゲット出力とは、システムがトレーニング入力に対して実施するように構成されている機械学習タスクを、システムが実施することにより生成すべき出力である。
【0056】
システムは、トレーニング入力をエンコーダの現在のパラメータ値に従って処理することに基づいて、第1のマスク埋め込みを生成する(304)。具体的には、第1のマスク埋め込みは、(i)エンコーダによって生成された、第1の埋め込みパーティションについての値、および(ii)埋め込みパーティションの系列内の後続の全ての埋め込みパーティションについてのマスクアウト値を含む。いくつかの実装形態では、システムは、系列内の後続の全ての埋め込みパーティションについての値を、これらの値を所定の値、例えばゼロと置き換えることによってマスクアウトする。
【0057】
ここで
図4Aを参照すると、エンコーダ-デコーダエンジンをトレーニングするための第1の埋め込みパーティションについての初期トレーニングを実施する例が示されている。具体的には、
図4Aに示すように、システムは、トレーニング入力をエンコーダ110の現在のパラメータ値に従って処理することに基づいて、第1のマスク埋め込みを生成する。第1のマスク埋め込みは、エンコーダにより生成された、第1の埋め込みパーティション106Aについての値、および残りの埋め込みパーティションについてのマスクアウト値を含む。
【0058】
システムは、生成された第1のマスク埋め込みを、第1の埋め込みパーティションに対応するデコーダレプリカを使用して、現在のパラメータ値に従って処理することに基づいて、トレーニング出力を生成する(306)。
【0059】
システムは、生成されたトレーニング出力について目的関数を計算する(308)。目的関数は、生成されたトレーニング出力の質を、すなわち生成されたトレーニング出力とターゲット出力との間の誤差を測定することによって、評価する。一般に、システムは、ニューラルネットワークが実施するようにトレーニングされている機械学習タスクに十分に適した目的関数を使用する。例えば、2つの出力間の最小二乗誤差を計算するL2損失関数が、例えば画像および音声データが関与する回帰機械学習タスクにおいて一般に選択される目的関数である。
【0060】
システムは目的関数の勾配を決定する(310)。例えば、
図4Aに示すように、システムは、デコーダレプリカ120によって生成されたトレーニング出力について計算された目的関数の勾配142を決定する。
【0061】
システムは、勾配を、デコーダレプリカから、エンコーダの第1の埋め込みパーティションを生成する対応する部分のみにバックプロパゲーションする(312)。例えば、
図4Aに示すように、システムは、勾配を、デコーダレプリカ120から、エンコーダ110の第1の埋め込みパーティション106Aを生成する対応する部分のみにバックプロパゲーションする。
【0062】
一般に、目的関数の勾配は、デコーダ層から埋め込みへ、さらにエンコーダ層へと、逆方向に伝播する。したがって、埋め込みが、エンコーダにより生成された、第1の埋め込みパーティション内の値のみを含むので、埋め込みからエンコーダ層にバックプロパゲーションされる勾配は、エンコーダの第1の埋め込みパーティション内の値を生成する対応する部分(すなわちエンコーダパラメータのサブセットまたはエンコーダパラメータ値のごく一部分)のみに渡る。
【0063】
システムは、例えばバックプロパゲーションされた勾配に基づいて、デコーダレプリカ、およびエンコーダの対応する部分の、それぞれに対応するパラメータ値を更新する(314)。具体的には、システムは、任意の適切な機械学習トレーニング技法を使用して、パラメータ値を更新することができる。トレーニング技法の例としては、確率的勾配降下法、Adam、およびrms-propがある。
【0064】
プロセス300を繰り返し実施することによって、システムは、同じタイプのトレーニング入力に基づいて生成される全てのトレーニング出力の同じ対応する特徴を表す、系列内の第1の埋め込みパーティションを生成するように、エンコーダをトレーニングする。典型的には、特徴は、トレーニング出力の一次特徴に対応する。
【0065】
図3Bは、エンコーダ-デコーダエンジンをトレーニングするためのインクリメンタルトレーニングを実施するための、例示的なプロセス350のフロー図である。簡単のため、プロセス300Bについては、1つまたは複数の位置にある1つまたは複数のコンピュータからなるシステムによって実施されるものとして説明する。例えば、本明細書に従って適切にプログラムされた、エンコーダ-デコーダシステム、例えば
図1のエンコーダ-デコーダシステム100が、プロセス350を実施することができる。
【0066】
システムは、インクリメンタルトレーニング、すなわち埋め込みパーティションの系列内で第1の埋め込みパーティションより後の各特定の埋め込みパーティションについてのトレーニングを実施するために、さまざまなトレーニング入力についてプロセス350を繰り返し実施することができる。
【0067】
システムは、ターゲット出力に関連付けられたトレーニング入力を受領する(352)。ターゲット出力とは、システムがトレーニング入力に対して実施するように構成されている機械学習タスクを、システムが実施することにより生成すべき出力である。
【0068】
システムは、トレーニング例をエンコーダの現在のパラメータ値に従って処理することに基づいて、特定の埋め込みパーティションについてのインクリメンタルマスク埋め込みを生成する(354)。具体的には、特定のパーティションについてのインクリメンタルマスク埋め込みは、(i)エンコーダによって生成された、特定の埋め込みパーティションおよび系列内で特定の埋め込みパーティションに先行する各埋め込みパーティションについての値、ならびに(ii)系列内で特定の埋め込みパーティションより後の任意の後続の埋め込みパーティションについてのマスクアウト値を含む。
【0069】
ここで
図4Bを参照すると、エンコーダ-デコーダエンジンをトレーニングするための第2の埋め込みパーティションについてのインクリメンタルトレーニングを実施する例が示されている。具体的には、
図4Bに示すように、システムは、トレーニング入力をエンコーダ110の現在のパラメータ値に従って処理することに基づいて、第2の埋め込みパーティション106Bについてのインクリメンタルマスク埋め込みを生成する。インクリメンタルマスク埋め込みは、エンコーダにより生成された、第1および第2の埋め込みパーティション106A~B内の値、ならびに他のパーティション全てについてのマスクアウト値を含む。
【0070】
システムは、特定の埋め込みパーティションについてのインクリメンタルマスク埋め込みを、特定の埋め込みパーティションに対応するデコーダレプリカを使用して、現在のパラメータ値に従って処理することに基づいて、トレーニング出力を生成する(356)。
【0071】
システムは、生成されたトレーニング出力について目的関数を計算する(358)。
【0072】
システムは、生成されたトレーニング出力について計算された目的関数の勾配を決定する(360)。例えば、
図4Bに示すように、システムは、デコーダレプリカ122によって生成されたトレーニング出力について計算された目的関数の勾配146を決定する。
【0073】
システムは、勾配を、デコーダレプリカから、エンコーダの特定の埋め込みパーティションを生成する対応する部分のみにバックプロパゲーションする(362)。すなわちシステムは、勾配を、デコーダレプリカから、対応する特定の埋め込みパーティションのみに、逆方向に伝播させる。次いでシステムは、勾配を、特定の埋め込みパーティションから、エンコーダの特定の埋め込みパーティションを生成する対応する部分に、逆方向に伝播させる。
【0074】
例えば、
図4Bに示すように、システムは、勾配146を、デコーダレプリカ122から、第2の埋め込みパーティション106Bを通じて、エンコーダ110の第2の埋め込みパーティション106Bを生成する対応する部分のみにバックプロパゲーションする。
【0075】
システムは、例えばバックプロパゲーションされた勾配に基づいて、デコーダレプリカ、およびエンコーダの対応する部分の、それぞれに対応するパラメータ値を更新する(364)。
【0076】
いくつかの実装形態では、各プロセス350の間、特定の埋め込みパーティションをトレーニングすることに加えて、システムは、系列内の全ての先行埋め込みパーティションもトレーニングする。すなわち、プロセス350を実施するとき、システムは、上で説明した対応するステップと一緒に以下のステップを実施する。
【0077】
具体的には、システムはまた、系列内で特定の埋め込みパーティションに先行する1つまたは複数の先行埋め込みパーティションのそれぞれについての対応するインクリメンタルマスク埋め込みを生成する(354)。各先行埋め込みパーティションについてのインクリメンタルマスク埋め込みは、(i)エンコーダによって生成された、先行埋め込みパーティションおよび系列内で先行埋め込みパーティションに先行する各埋め込みパーティションについての値、ならびに(ii)系列内で先行埋め込みパーティションより後の任意の後続の埋め込みパーティションについてのマスクアウト値を含む。
【0078】
例えば、
図4Bに示すように、システムはまた、パーティションの系列内で第2の埋め込みパーティション106Bに先行する第1の埋め込みパーティション106Aについてのインクリメンタルマスク埋め込みを生成する。第1の埋め込みパーティション106Aは、第1の埋め込みパーティション106A内にのみ、エンコーダにより生成された値を含む。
【0079】
システムは、1つまたは複数の追加のトレーニング出力を、対応するデコーダレプリカを使用して、特定の埋め込みパーティションに先行する1つまたは複数の先行埋め込みパーティションのそれぞれについての1つまたは複数のインクリメンタルマスク埋め込みを処理することに基づいて、生成する(356)。
【0080】
システムは、1つまたは複数の追加のトレーニング出力のそれぞれについて、それぞれに対応する目的関数を計算する(358)。各目的関数は、生成されたトレーニング出力とターゲット出力との間の対応する誤差を測定する。
【0081】
システムは、追加のトレーニング出力について計算された1つまたは複数の目的関数の、それぞれに対応する勾配を決定する(360)。例えば、
図4Bに示すように、システムは、デコーダレプリカ120によって生成されたトレーニング出力について目的関数を計算する。
【0082】
システムは、勾配を、それぞれに対応するデコーダレプリカから、エンコーダの各先行埋め込みパーティションを生成する対応する部分のみにバックプロパゲーションする(362)。例えば、
図4Bに示すように、システムは、勾配144を、デコーダレプリカ120から、第1の埋め込みパーティション106Aを通じて、エンコーダ110の第1の埋め込みパーティション106Aを生成する対応する部分のみにバックプロパゲーションする。
【0083】
システムは、例えばバックプロパゲーションされた勾配に基づいて、デコーダレプリカ、およびエンコーダの対応する部分の、それぞれに対応するパラメータ値を更新する(364)。
【0084】
プロセス350を繰り返し実施することによって、システムは、同じタイプのトレーニング入力に基づいて生成される全てのトレーニング出力の同じ対応する特徴をそれぞれが表す、系列内の後続の埋め込みパーティションを生成するように、エンコーダをトレーニングする。一般に、各埋め込みパーティションは、他の全てのパーティションとは異なる特徴に対応する。
【0085】
本明細書において説明した本主題および機能的動作の実施形態は、デジタル電子回路として、有形に具現化されたコンピュータソフトウェアもしくはファームウェアとして、本明細書において開示した構造およびそれらの構造的等価物を含むコンピュータハードウェアとして、またはそれらのうちの1つもしくは複数のものの組合せとして、実装することができる。本明細書において説明した本主題の実施形態は、データ処理装置によって実行するかまたはデータ処理装置の動作を制御するために有形の非一時的プログラムキャリア上にエンコードされた、1つまたは複数のコンピュータプログラム、すなわちコンピュータプログラム命令の1つまたは複数のモジュールとして、実装することができる。その代わりにまたはそれに加えて、プログラム命令は、情報をデータ処理装置によって実行する目的で適切なレシーバ装置に送信できるようにエンコードするために生成される、人工的に生成された伝播信号、例えば機械により生成された電気信号、光信号、または電磁信号上に、エンコードすることもできる。コンピュータ記憶媒体は、機械可読記憶デバイス、機械可読記憶基板、ランダムアクセスもしくはシリアルアクセスのメモリデバイス、またはそれらのうちの1つもしくは複数のものの組合せとすることができる。しかし、コンピュータ記憶媒体は伝播信号ではない。
【0086】
「データ処理装置」という用語は、例として1つのプログラマブルプロセッサ、1つのコンピュータ、または複数のプロセッサもしくはコンピュータを含めて、データを処理するためのあらゆる種類の装置、デバイス、および機械を包含する。装置は、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)を含むことができる。装置は、ハードウェアに加えて、当該のコンピュータプログラムのための実行環境を作り出すコード、例えばプロセッサファームウェア、プロトコルスタック、データベース管理システム、オペレーティングシステム、またはそれらのうちの1つもしくは複数のものの組合せを構成するコードを含むこともできる。
【0087】
(プログラム、ソフトウェア、ソフトウェアアプリケーション、モジュール、ソフトウェアモジュール、スクリプト、またはコードとも呼ばれるかまたは説明されることのある)コンピュータプログラムは、コンパイル型言語もしくはインタープリタ型言語、または宣言型言語もしくは手続き型言語を含む、任意の形態のプログラミング言語で記述することができ、またそれは、スタンドアロンプログラムとして、またはモジュール、コンポーネント、サブルーチン、もしくはコンピューティング環境において使用するのに適した他のユニットとして、を含む、任意の形態でデプロイすることができる。コンピュータプログラムは、その必要はないが、ファイルシステム内のファイルに対応してよい。プログラムは、他のプログラムもしくはデータを保持するファイルの一部分、例えばマークアップ言語ドキュメント内に格納された1つもしくは複数のスクリプト内に、当該のプログラムに専用の単一のファイル内に、または複数の連係されたファイル、例えばコードの1つもしくは複数のモジュール、サブプログラム、もしくは一部分を格納したファイル内に、格納することができる。コンピュータプログラムは、1つのコンピュータ上で、または1つのサイトに位置するかもしくは複数のサイトにわたって分散され、通信ネットワークによって相互接続された複数のコンピュータ上で実行されるように、デプロイすることができる。
【0088】
本明細書では、「エンジン」または「ソフトウェアエンジン」とは、入力とは異なる出力を提供する、ソフトウェアにより実装された入力/出力システムを指す。エンジンは、ライブラリ、プラットフォーム、ソフトウェア開発キット(「SDK」)、またはオブジェクトなど、エンコードされた機能ブロックとすることができる。各エンジンは、1つまたは複数のプロセッサおよびコンピュータ可読媒体を含む任意の適切なタイプのコンピューティングデバイス、例えばサーバ、モバイル電話、タブレット型コンピュータ、ノートブック型コンピュータ、音楽プレーヤ、電子書籍リーダ、ラップトップ型コンピュータもしくはデスクトップ型コンピュータ、PDA、スマートフォン、または他の据置型デバイスもしくは手持ち式デバイス上に実装することができる。加えて、2つ以上のエンジンを、同じコンピューティングデバイス上または異なるコンピューティングデバイス上に実装することもできる。
【0089】
本明細書において説明したプロセスおよび論理フローは、入力データに作用し出力を生成することにより機能を実施するための1つまたは複数のコンピュータプログラムを実行する1つまたは複数のプログラマブルコンピュータによって、実施されることが可能である。プロセスおよび論理フローは、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)によって実施されることも可能であり、装置を、専用論理回路、例えばFPGA(フィールドプログラマブルゲートアレイ)またはASIC(特定用途向け集積回路)として実装することも可能である。
【0090】
コンピュータプログラムの実行に適したコンピュータは、汎用もしくは専用のマイクロコンピュータもしくはその両方、または他の任意の種類の中央処理装置を含み、例として、汎用もしくは専用のマイクロコンピュータもしくはその両方、または他の任意の種類の中央処理装置に基づくことができる。一般に、中央処理装置は、命令およびデータを、読出し専用メモリまたはランダムアクセスメモリまたはその両方から受領する。コンピュータの不可欠な要素は、命令を実施または実行するための中央処理装置、ならびに命令およびデータを記憶するための1つまたは複数のメモリデバイスである。一般に、コンピュータはまた、データを記憶するための1つまたは複数の大容量記憶デバイス、例えば磁気ディスク、光磁気ディスク、または光ディスクを含むか、またはそこからデータを受領し、もしくはそこにデータを転送するように動作可能に結合されるか、またはその両方である。しかし、コンピュータはそのようなデバイスを有している必要はない。さらに、コンピュータは別のデバイスに、例えばほんの数例を挙げると、モバイル電話、パーソナルデジタルアシスタント(PDA)、モバイルオーディオプレーヤもしくはモバイルビデオプレーヤ、ゲーム機、グローバルポジショニングシステム(GPS)レシーバ、またはポータブル記憶デバイス、例えばユニバーサルシリアルバス(USB)フラッシュドライブに、埋め込むことができる。
【0091】
コンピュータプログラム命令およびデータを記憶するのに適したコンピュータ可読媒体としては、例として、半導体メモリデバイス、例えばEPROM、EEPROM、およびフラッシュメモリデバイス;磁気ディスク、例えば内蔵ハードディスクまたはリムーバブルディスク;光磁気ディスク;ならびにCD ROMディスクおよびDVD-ROMディスクを含む、あらゆる形態の不揮発性のメモリ、媒体、およびメモリデバイスがある。プロセッサおよびメモリは、専用論理回路によって補完することもでき、あるいは専用論理回路に組み込むこともできる。
【0092】
ユーザとの対話を可能にするために、本明細書において説明した本主題の実施形態は、ユーザに情報を表示するためのディスプレイデバイス、例えばCRT(陰極線管)またはLCD(液晶ディスプレイ)モニタと、ユーザがそれによってコンピュータに入力を行うことのできるキーボードおよびポインティングデバイス、例えばマウスまたはトラックボールとを有するコンピュータ上に実装することができる。他の種類のデバイスを使用して、ユーザとの対話を可能にすることもでき、例えば、ユーザに提供されるフィードバックは、任意の形態の感覚フィードバック、例えば視覚フィードバック、聴覚フィードバック、または触覚フィードバックとすることができ、ユーザからの入力は、音響入力、音声入力、または触覚入力を含む、任意の形態で受領されることが可能である。加えて、コンピュータはユーザと、ユーザによって使用されているデバイスにドキュメントを送り、そのデバイスからドキュメントを受信することによって、例えば、ユーザのクライアントデバイス上のウェブブラウザに、そのウェブブラウザから受信した要求に応答してウェブページを送ることによって、対話することができる。
【0093】
本明細書において説明した本主題の実施形態は、例えばデータサーバとしてのバックエンドコンポーネントを含むコンピューティングシステム内、またはミドルウェアコンポーネント、例えばアプリケーションサーバを含むコンピューティングシステム内、またはフロントエンドコンポーネント、例えば本明細書において説明した本主題の一実装形態とユーザがそれを通じて対話することのできるグラフィカルユーザインターフェースもしくはウェブブラウザを有するクライアントコンピュータを含むコンピューティングシステム内、または1つもしくは複数のそのようなバックエンドコンポーネント、ミドルウェアコンポーネント、もしくはフロントエンドコンポーネントの任意の組合せを含むコンピューティングシステム内に、実装することができる。システムのこれらのコンポーネント同士は、任意の形態または媒体のデジタルデータ通信、例えば通信ネットワークによって、相互接続することができる。通信ネットワークの例としては、ローカルエリアネットワーク(「LAN」)、および広域ネットワーク(「WAN」)、例えばインターネットがある。
【0094】
コンピューティングシステムは、クライアントおよびサーバを含むことができる。クライアントとサーバは、一般に互いに遠隔にあり、典型的には通信ネットワークを通じて対話する。クライアントとサーバの関係は、それぞれに対応するコンピュータ上で実行され、互いにクライアント-サーバ関係を有する、コンピュータプログラムによって生じる。
【0095】
本明細書は、実装形態の多くの具体的詳細を収容しているが、これらは、任意の発明の範囲または特許請求され得るものの範囲に対する限定と解釈するのではなく、特定の発明の特定の実施形態に特有となり得る特徴についての説明と解釈されたい。本明細書において別々の実施形態の文脈の中で説明される、ある特定の特徴は、単一の実施形態において組み合わせて実装することもできる。反対に、単一の実施形態の文脈の中で説明されるさまざまな特徴は、複数の実施形態において別々に、または任意の適切な部分組合せで、実装することもできる。さらに、特徴については上で、ある特定の組合せで作用するものとして説明されていることがあり、さらにはそのようなものとして最初に特許請求されていることすらあるが、特許請求された組合せからの1つまたは複数の特徴を、場合によってはその組合せから削除することができ、特許請求された組合せが、部分組合せまたは部分組合せの変形を対象としてよい。
【0096】
同様に、動作については図面中に特定の順序で描かれているが、これは、望ましい結果を達成するために、そのような動作が図示の特定の順序で、もしくは順番に実施されること、または図示の全ての動作が実施されることを要求するものと理解すべきではない。ある特定の状況下では、マルチタスキングおよび並列処理が有利となることがある。さらに、上述した実施形態においてはさまざまなシステムモジュールおよびコンポーネントが分離されているが、これは、全ての実施形態においてそのような分離を要求するものと理解すべきではなく、説明したプログラムコンポーネントおよびシステムは一般に、単一のソフトウェア製品内に一緒に統合するか、または複数のソフトウェア製品にパッケージングできることを理解されたい。
【0097】
以上、本主題の特定の実施形態について説明してきた。他の実施形態が、添付の特許請求の範囲に記載の範囲内に含まれる。例えば、特許請求の範囲に記載されたアクションを異なる順序で実施し、それでもなお望ましい結果を達成することができる。一例として、添付の図中に描かれたプロセスは、望ましい結果を達成するために、図示の特定の順序、または順番を必ずしも要求するとは限らない。ある特定の実装形態では、マルチタスキングおよび並列処理が有利となることがある。
【符号の説明】
【0098】
100 エンコーダ-デコーダシステム
102 入力
106 埋め込み
106A 第1の埋め込みパーティション
106B 第2の埋め込みパーティション
108 エンコーダ-デコーダエンジン、機械学習モデル
110 エンコーダ
112 出力
120 デコーダ、デコーダレプリカ
122 デコーダレプリカ
130 トレーニングエンジン
132 トレーニング入力
142 勾配
144 勾配
146 勾配
200 方法
300 プロセス
300A プロセス
300B プロセス
350 プロセス