(19)【発行国】日本国特許庁(JP)
(12)【公報種別】公開特許公報(A)
(11)【公開番号】P2024172450
(43)【公開日】2024-12-12
(54)【発明の名称】機械学習方法、機械学習プログラムおよび情報処理装置
(51)【国際特許分類】
G06F 40/216 20200101AFI20241205BHJP
【FI】
G06F40/216
【審査請求】未請求
【請求項の数】5
【出願形態】OL
(21)【出願番号】P 2023090178
(22)【出願日】2023-05-31
(71)【出願人】
【識別番号】000005223
【氏名又は名称】富士通株式会社
(74)【代理人】
【識別番号】110002918
【氏名又は名称】弁理士法人扶桑国際特許事務所
(72)【発明者】
【氏名】ダン タン デュイ
(57)【要約】
【課題】自然言語処理モデルの訓練時間を削減する。
【解決手段】情報処理装置10は、複数の単語それぞれを表す文字列と複数の単語それぞれを識別する符号とを対応付けた単語辞書データ13を取得する。情報処理装置10は、単語辞書データ13に基づいて、テキストデータ14に含まれる単語を符号化することで、テキストデータ14を符号化テキストデータ15に変換する。情報処理装置10は、単語辞書データ13と符号化テキストデータ15とに基づいて、機械学習モデル16に含まれるパラメータを初期化する。情報処理装置10は、初期化後に機械学習モデル16から単語辞書データ13を切り離した状態で、符号化テキストデータ15に基づいて機械学習モデル16を訓練する学習処理を実行する。
【選択図】
図1
【特許請求の範囲】
【請求項1】
自然言語で用いられる複数の単語それぞれを表す文字列と前記複数の単語それぞれを識別する符号とを対応付けた単語辞書データを取得し、
前記単語辞書データに基づいて、前記自然言語で記載されたテキストデータに含まれる単語を符号化することで、前記テキストデータを符号化テキストデータに変換し、
前記単語辞書データと前記符号化テキストデータとに基づいて、機械学習モデルに含まれるパラメータを初期化し、
初期化後に前記機械学習モデルから前記単語辞書データを切り離した状態で、前記符号化テキストデータに基づいて前記機械学習モデルを訓練する学習処理を実行する、
処理をコンピュータが実行する機械学習方法。
【請求項2】
前記学習処理の後に前記機械学習モデルに入力データを入力することで、前記複数の単語のうちの少なくとも1つの単語の前記符号を含む予測結果データを取得し、前記単語辞書データに基づいて、前記予測結果データに含まれる前記符号を前記少なくとも1つの単語を表す前記文字列に変換する処理を、前記コンピュータに更に実行させる、
請求項1記載の機械学習方法。
【請求項3】
前記初期化する処理は、前記機械学習モデルに、前記複数の単語それぞれに割り当てられる分散表現ベクトルと前記符号とを対応付けた分散表現データを設定する処理を含み、
前記機械学習モデルは、前記符号化テキストデータに含まれる前記符号を前記分散表現ベクトルに変換する埋め込み層を含む、
請求項1記載の機械学習方法。
【請求項4】
自然言語で用いられる複数の単語それぞれを表す文字列と前記複数の単語それぞれを識別する符号とを対応付けた単語辞書データを取得し、
前記単語辞書データに基づいて、前記自然言語で記載されたテキストデータに含まれる単語を符号化することで、前記テキストデータを符号化テキストデータに変換し、
前記単語辞書データと前記符号化テキストデータとに基づいて、機械学習モデルに含まれるパラメータを初期化し、
初期化後に前記機械学習モデルから前記単語辞書データを切り離した状態で、前記符号化テキストデータに基づいて前記機械学習モデルを訓練する学習処理を実行する、
処理をコンピュータに実行させる機械学習プログラム。
【請求項5】
自然言語で用いられる複数の単語それぞれを表す文字列と前記複数の単語それぞれを識別する符号とを対応付けた単語辞書データと、前記自然言語で記載されたテキストデータとを記憶する記憶部と、
前記単語辞書データに基づいて、前記テキストデータに含まれる単語を符号化することで、前記テキストデータを符号化テキストデータに変換し、前記単語辞書データと前記符号化テキストデータとに基づいて、機械学習モデルに含まれるパラメータを初期化し、初期化後に前記機械学習モデルから前記単語辞書データを切り離した状態で、前記符号化テキストデータに基づいて前記機械学習モデルを訓練する学習処理を実行する処理部と、
を有する情報処理装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は機械学習方法、機械学習プログラムおよび情報処理装置に関する。
【背景技術】
【0002】
コンピュータは、自然言語で記載されたテキストデータを処理する自然言語処理モデルを用いて、機械翻訳や質問応答などの自然言語処理タスクを実行することがある。コンピュータは、訓練データとして与えられたサンプルテキストを用いて、機械学習によって自然言語処理モデルを生成することがある。
【0003】
自然言語処理モデルは、ニューラルネットワークであることがある。また、自然言語処理モデルは、入力データに含まれる単語を、複数次元の数値で表された分散表現ベクトルに変換することがあり、分散表現ベクトルから特徴量を算出することがある。通常、自然言語処理モデルは、ターゲットとする自然言語の語彙を表す単語辞書データに依存する。
【0004】
なお、目的言語のテキストを逆翻訳することで疑似対訳コーパスを生成し、少量かつ高精度の基本対訳コーパスと生成された疑似対訳コーパスの両方を用いて機械翻訳モデルを訓練する機械翻訳装置が提案されている。
【先行技術文献】
【特許文献】
【0005】
【発明の概要】
【発明が解決しようとする課題】
【0006】
自然言語の語彙は多数の単語を含むため、単語の文字列表現を含む単語辞書データはデータサイズが大きい。そのため、単語辞書データが組み込まれた自然言語処理モデルをそのまま訓練すると、機械学習の負荷が高く、訓練時間が長くなることがある。そこで、1つの側面では、本発明は、自然言語処理モデルの訓練時間を削減することを目的とする。
【課題を解決するための手段】
【0007】
1つの態様では、以下の処理をコンピュータが実行する機械学習方法が提供される。自然言語で用いられる複数の単語それぞれを表す文字列と複数の単語それぞれを識別する符号とを対応付けた単語辞書データを取得する。単語辞書データに基づいて、自然言語で記載されたテキストデータに含まれる単語を符号化することで、テキストデータを符号化テキストデータに変換する。単語辞書データと符号化テキストデータとに基づいて、機械学習モデルに含まれるパラメータを初期化する。初期化後に機械学習モデルから単語辞書データを切り離した状態で、符号化テキストデータに基づいて機械学習モデルを訓練する学習処理を実行する。
【0008】
また、1つの態様では、コンピュータに実行させる機械学習プログラムが提供される。また、1つの態様では、記憶部と処理部とを有する情報処理装置が提供される。
【発明の効果】
【0009】
1つの側面では、自然言語処理モデルの訓練時間が削減される。
【図面の簡単な説明】
【0010】
【
図1】第1の実施の形態の情報処理装置を説明するための図である。
【
図2】第2の実施の形態の情報処理装置のハードウェア例を示す図である。
【
図3】自然言語処理モデルの構造例を示す図である。
【
図4】テキストと符号化テキストの例を示す図である。
【
図5】単語辞書と埋め込み辞書の例を示す図である。
【
図6】単語辞書を用いた予測結果の変換例を示す図である。
【
図7】訓練時間と予測精度の例を示すグラフである。
【
図8】情報処理装置の機能例を示すブロック図である。
【
図9】機械学習の手順例を示すフローチャートである。
【発明を実施するための形態】
【0011】
以下、本実施の形態を図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
【0012】
図1は、第1の実施の形態の情報処理装置を説明するための図である。
第1の実施の形態の情報処理装置10は、機械学習によって自然言語処理モデルを訓練する。情報処理装置10は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置10が、コンピュータ、機械学習装置または自然言語処理装置と呼ばれてもよい。
【0013】
情報処理装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性半導体メモリでもよい。また、記憶部11は、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性ストレージでもよい。
【0014】
処理部12は、例えば、CPU(Central Processing Unit)、GPU(Graphics Processing Unit)、DSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12が、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの電子回路を含んでもよい。プロセッサは、例えば、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。プロセッサの集合が、マルチプロセッサまたは単に「プロセッサ」と呼ばれてもよい。
【0015】
記憶部11は、単語辞書データ13およびテキストデータ14を記憶する。単語辞書データ13は、自然言語で用いられる複数の単語それぞれを表す文字列と、それら複数の単語それぞれを識別する符号とを対応付ける。符号は、例えば、非負整数である。単語辞書データ13は、複数の単語を単純に並べた配列でもよい。その場合、符号は、それら複数の単語の順序を示すインデックスであってもよい。インデックスは、ある単語が単語辞書データ13の中で先頭から何番目の単語であるかを示す。
【0016】
単語辞書データ13は、単一の自然言語で用いられる単語を列挙した単言語辞書データであってもよいし、複数の自然言語で用いられる単語を列挙した多言語辞書データでもよい。情報処理装置10は、既存の単語辞書データ13を情報処理装置10の外部から取得してもよい。また、情報処理装置10は、テキストデータ14または他のテキストデータから単語を抽出することで、単語辞書データ13を生成してもよい。通常、単語辞書データ13は、多数の単語が登録された大サイズの辞書データである。
【0017】
テキストデータ14は、自然言語で記載された1以上の文を含む。テキストデータ14では、単語辞書データ13に含まれる単語が用いられる。テキストデータ14では、単語が文字列として記載されている。テキストデータ14は、異なる自然言語で記載された複数の文を含んでもよい。テキストデータ14は、機械学習モデル16を訓練する機械学習において訓練データとして用いられる。機械学習モデル16の訓練方法に応じて、テキストデータ14はラベルを含まなくてもよいし、ラベルを含んでもよい。ラベルは、機械学習モデル16の出力の正解を示す。ラベルは、ある単語が属するクラスを示すことがあり、ある文に対応する訳文または応答文を示すことがある。
【0018】
処理部12は、単語辞書データ13およびテキストデータ14を用いて機械学習モデル16を訓練する。このとき、処理部12は、単語辞書データ13に基づいて、テキストデータ14に含まれる単語を符号化する。例えば、処理部12は、テキストデータ14に含まれる文を複数のトークンに分割する。各トークンは、単語を表す文字列を含む。処理部12は、トークンが表す文字列に対応付けられた符号を単語辞書データ13から検索し、当該トークンの文字列を符号に置換する。
【0019】
これにより、処理部12は、テキストデータ14を符号化テキストデータ15に変換する。符号化テキストデータ15は、符号の列を含む。例えば、符号化テキストデータ15は、非負整数の列を含むバイナリデータである。
【0020】
また、処理部12は、単語辞書データ13と符号化テキストデータ15とに基づいて、機械学習モデル16に含まれるパラメータを初期化する。機械学習モデル16は、自然言語で記載されたテキストデータを処理する自然言語処理モデルである。機械学習モデル16は、例えば、ニューラルネットワークである。機械学習モデル16は、トランスフォーマエンコーダと呼ばれるニューラルネットワークを含んでもよく、BERT(Bidirectional Encoder Representations from Transformers)であってもよい。
【0021】
機械学習モデル16は、入力された符号化テキストデータに含まれる符号を分散表現ベクトルに変換する埋め込み層を含んでもよい。分散表現ベクトルは、一定次元数(例えば、512次元)の数値を並べた数値ベクトルである。通常、意味が類似する単語には、類似する分散表現ベクトルが割り当てられる。埋め込み層は、ニューラルネットワークに含まれる重みを用いて、符号から分散表現ベクトルを算出してもよい。また、埋め込み層は、ルックアップテーブルから、符号に対応する分散表現ベクトルを検索してもよい。ルックアップテーブルは、符号と分散表現ベクトルとを対応付けた分散表現辞書データである。ある符号に対応付けられる分散表現ベクトルは、単語辞書データ13において当該符号に対応付けられた単語の分散表現である。
【0022】
また、機械学習モデル16は、自己アテンション層やフィードフォワード層などのニューラルネットワークを含んでもよい。これらの層は、分散表現ベクトルを他の特徴ベクトルに変換する。特徴ベクトルは、一定次元数の数値を並べた数値ベクトルである。この特徴ベクトルが、隠れ状態ベクトルと呼ばれてもよい。
【0023】
また、機械学習モデル16は、特徴ベクトルから単語を予測する予測層を含んでもよい。例えば、予測層は、特徴ベクトルと分散表現辞書データとから、複数の単語それぞれの予測確率を示す確率分布を算出する。予測層は、特徴ベクトルと分散表現辞書データに相当する行列との間の積を算出することで、確率分布を求めてもよい。例えば、予測層は、確率分布の中で予測確率が最も高い単語を、出力すべき単語と判定する。
【0024】
機械学習モデル16の初期化では、例えば、処理部12は、単語辞書データ13のサイズおよびテキストデータ14のサイズに合わせて、機械学習モデル16のパラメータを初期化する。埋め込み層は、単語辞書データ13に含まれる単語の数に応じた入力サイズのニューラルネットワークを使用することがあり、単語辞書データ13と同じ個数のレコードを含む分散表現辞書データを使用することがある。また、予測層は、分散表現辞書データに相当する行列を使用することがあり、単語辞書データ13に含まれる単語それぞれの予測確率を含む確率分布を算出することがある。よって、機械学習モデル16のパラメータは、単語辞書データ13に含まれる単語の数に依存することがある。
【0025】
また、機械学習モデル16の各層に入力される入力データを表すテンソルは、特徴ベクトルの次元数と、1回に入力されるトークンの最大個数とに応じたサイズをもつことがある。よって、機械学習モデル16のパラメータは、符号化テキストデータ15に含まれるバッチ1回分の符号の数に依存することがある。
【0026】
なお、処理部12は、符号を分散表現ベクトルに変換する埋め込み層を、後述する学習処理の中で他の層と合わせて訓練してもよい。これにより、各単語に割り当てられる分散表現ベクトルも、学習処理を通じて最適化される。その場合、処理部12は、埋め込み層に含まれるニューラルネットワークの重みを、ランダムな数値に初期化してもよい。また、処理部12は、ルックアップテーブルとして使用される分散表現辞書データに含まれる分散表現ベクトルを、ランダムな数値ベクトルに初期化してもよい。
【0027】
また、処理部12は、各単語に割り当てる分散表現ベクトルを、事前に訓練された既存の言語モデルから取得してもよい。その場合、例えば、処理部12は、単語辞書データ13に含まれる単語の分散表現ベクトルを取得し、その単語を識別する符号と取得した分散表現ベクトルとを対応付けて分散表現辞書データに登録する。処理部12は、後述する学習処理の中で埋め込み層を訓練しなくてもよい。ただし、処理部12は、既存の言語モデルから取得した分散表現ベクトルを初期値として、学習処理の中で分散表現ベクトルを更新するファインチューニングを行ってもよい。
【0028】
上記の初期化は、機械学習を支援するソフトウェアモジュールである機械学習ライブラリのAPI(Application Programming Interface)を通じて行われてもよい。例えば、処理部12は、APIを呼び出すことで、機械学習モデル16に単語辞書データ13および符号化テキストデータ15を付加(Attach)し、単語辞書データ13および符号化テキストデータ15を用いてパラメータを初期化させる。この場合、初期化直後は機械学習モデル16に単語辞書データ13が組み込まれている。
【0029】
その後、処理部12は、符号化テキストデータ15を訓練データとして用いて機械学習モデル16を訓練する学習処理を実行する。例えば、処理部12は、符号化テキストデータ15に含まれる一部の符号をマスクし、マスク前の元の符号を機械学習モデル16が予測するように、機械学習モデル16のパラメータ値を更新する。符号のマスクは、例えば、当該符号を、単語に対応付けられていない無効な数値に置換することで行う。
【0030】
このとき、例えば、処理部12は、予測層が算出した確率分布を示す予測ベクトルと正解ベクトルとの間の誤差を算出し、誤差逆伝播法によって、誤差が小さくなるようにニューラルネットワークの重みを更新する。予測ベクトルは、複数の符号の予測確率を列挙した数値ベクトルである。正解ベクトルは、マスク前の正しい符号に対応する次元の数値を1に設定し、他の次元の数値を0に設定した数値ベクトルである。
【0031】
学習処理にあたり、処理部12は、初期化後に機械学習モデル16から単語辞書データ13を切り離した(Detach)状態で、学習処理を実行する。機械学習モデル16は、パラメータが初期化された後は、符号や分散表現ベクトルを用いて一連の計算を行うことができる。また、処理部12は、符号や分散表現ベクトルを用いて誤差計算を行うことができ、誤差逆伝播法などのパラメータ更新アルゴリズムを実行できる。
【0032】
一方、機械学習モデル16に単語辞書データ13が組み込まれていると、学習処理中も単語辞書データ13に対する種々の付加的処理が実行されることがある。例えば、処理部12は、単語辞書データ13をメモリにロードして保持することがある。機械学習にGPUを使用する場合、GPUメモリに単語辞書データ13がロードされることがある。また、機械学習モデル16のサイズが大きいことで、学習処理の負荷が高くなることがある。そこで、単語辞書データ13を切り離すことで、学習処理の負荷が低下する。
【0033】
例えば、処理部12は、初期化の後であって学習処理の開始前に、機械学習モデル16から単語辞書データ13を切り離す処理を行う。単語辞書データ13の切り離しは、機械学習ライブラリのAPIを通じて行われてもよい。例えば、処理部12は、APIを呼び出すことで、単語辞書データ13と機械学習モデル16との紐付けを解除する。単語辞書データ13が切り離された状態では、例えば、学習処理の間、単語辞書データ13のロードや単語辞書データ13の参照処理が抑制される。
【0034】
ただし、単語辞書データ13が切り離された状態では、機械学習モデル16は、符号から文字列への逆変換を行わない。一方、ユーザは、機械学習モデル16のテスト時、予測された単語を文字列で確認したいことがある。そこで、処理部12は、学習処理の後、単語辞書データ13を用いて予測結果を符号から文字列に変換してもよい。このとき、処理部12は、機械学習モデル16に単語辞書データ13を再び組み込んでもよい。また、訓練済みの機械学習モデル16が、単語辞書データ13を含む状態で配布されてもよい。
【0035】
以上説明したように、第1の実施の形態の情報処理装置10は、複数の単語それぞれを表す文字列と、それら複数の単語それぞれを識別する符号とを対応付けた単語辞書データ13を取得する。情報処理装置10は、単語辞書データ13に基づいてテキストデータ14に含まれる単語を符号化することで、テキストデータ14を符号化テキストデータ15に変換する。情報処理装置10は、単語辞書データ13と符号化テキストデータ15とに基づいて、機械学習モデル16に含まれるパラメータを初期化する。情報処理装置10は、初期化後に機械学習モデル16から単語辞書データ13を切り離した状態で、符号化テキストデータ15に基づいて機械学習モデル16を訓練する学習処理を実行する。
【0036】
これにより、学習処理の間、機械学習モデル16のサイズが小さくなり、学習処理の負荷が低下し、訓練時間が短縮される。また、機械学習モデル16に含まれるパラメータ値の更新自体は、単語辞書データ13を参照せずに実行可能である。よって、機械学習モデル16を軽量化しても、機械学習モデル16の予測精度が維持される。
【0037】
なお、情報処理装置10は、学習処理の後に機械学習モデル16に入力データを入力することで、ある単語の符号を含む予測結果データを取得してもよく、単語辞書データ13に基づいて、予測結果データに含まれる符号を文字列に変換してもよい。これにより、予測された単語をユーザは文字列で確認でき、予測結果の理解容易性が向上する。
【0038】
また、情報処理装置10は、初期化時に、機械学習モデル16に、単語に割り当てられる分散表現ベクトルと符号とを対応付けた分散表現データを設定してもよい。また、機械学習モデル16は、符号化テキストデータ15に含まれる符号を分散表現ベクトルに変換する埋め込み層を含んでもよい。これにより、機械学習モデル16は、分散表現ベクトルを用いた高精度な自然言語処理が可能となる。また、機械学習モデル16は、単語辞書データ13を参照しなくても、符号や分散表現ベクトルを用いて計算を行うことができる。
【0039】
[第2の実施の形態]
次に、第2の実施の形態を説明する。
第2の実施の形態の情報処理装置100は、自然言語処理モデルを訓練する機械学習を実行する。また、情報処理装置100は、訓練された自然言語処理モデルを用いて自然言語処理タスクを実行する。ただし、機械学習と自然言語処理タスクとが別の情報処理装置によって実行されてもよい。情報処理装置100は、クライアント装置でもよいしサーバ装置でもよい。情報処理装置100が、コンピュータ、機械学習装置または自然言語処理装置と呼ばれてもよい。第2の実施の形態の情報処理装置100は、第1の実施の形態の情報処理装置10に対応する。
【0040】
図2は、第2の実施の形態の情報処理装置のハードウェア例を示す図である。
情報処理装置100は、バスに接続されたCPU101、RAM102、HDD103、GPU104、入力インタフェース105、媒体リーダ106および通信インタフェース107を有する。CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
【0041】
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムおよびデータをRAM102にロードし、プログラムを実行する。情報処理装置100は、複数のプロセッサを有してもよい。
【0042】
RAM102は、CPU101で実行されるプログラムおよびCPU101で演算に使用されるデータを一時的に記憶する揮発性半導体メモリである。情報処理装置100は、RAM以外の種類の揮発性メモリを有してもよい。
【0043】
HDD103は、オペレーティングシステム(OS:Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラムと、データとを記憶する不揮発性ストレージである。情報処理装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の不揮発性ストレージを有してもよい。
【0044】
GPU104は、CPU101と連携して画像処理を行い、情報処理装置100に接続された表示装置111に画像を出力する。表示装置111は、例えば、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ、有機EL(Electro Luminescence)ディスプレイまたはプロジェクタである。情報処理装置100に、プリンタなどの他の種類の出力デバイスが接続されてもよい。
【0045】
また、GPU104は、GPGPU(General Purpose Computing on Graphics Processing Unit)として使用されてもよい。GPU104は、CPU101からの指示に応じてプログラムを実行し得る。情報処理装置100は、RAM102以外の揮発性半導体メモリをGPUメモリとして有してもよい。
【0046】
入力インタフェース105は、情報処理装置100に接続された入力デバイス112から入力信号を受け付ける。入力デバイス112は、例えば、マウス、タッチパネルまたはキーボードである。情報処理装置100に複数の入力デバイスが接続されてもよい。
【0047】
媒体リーダ106は、記録媒体113に記録されたプログラムおよびデータを読み取る読み取り装置である。記録媒体113は、例えば、磁気ディスク、光ディスクまたは半導体メモリである。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)およびHDDが含まれる。光ディスクには、CD(Compact Disc)およびDVD(Digital Versatile Disc)が含まれる。媒体リーダ106は、記録媒体113から読み取られたプログラムおよびデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、CPU101によって実行されることがある。
【0048】
記録媒体113は、可搬型記録媒体であってもよい。記録媒体113は、プログラムおよびデータの配布に用いられることがある。また、記録媒体113およびHDD103が、コンピュータ読み取り可能な記録媒体と呼ばれてもよい。
【0049】
通信インタフェース107は、ネットワーク114を介して他の情報処理装置と通信する。通信インタフェース107は、スイッチやルータなどの有線通信装置に接続される有線通信インタフェースでもよいし、基地局やアクセスポイントなどの無線通信装置に接続される無線通信インタフェースでもよい。
【0050】
次に、自然言語処理モデルについて説明する。第2の実施の形態の自然言語処理モデルは、機械翻訳、感情分析、リコメンドシステムなど、様々な自然言語処理タスクに利用可能である。自然言語処理タスクは、データセンタで実装されてもよく、ネットワークを介してアプリケーションサービスとして提供されてもよい。また、この自然言語処理モデルを訓練する機械学習は、データセンタで実行されてもよく、ネットワークを介してアプリケーションサービスとして提供されてもよい。
【0051】
図3は、自然言語処理モデルの構造例を示す図である。
自然言語処理モデル130は、ニューラルネットワークを含む機械学習モデルである。自然言語処理モデル130は、自己アテンション機構を実装したトランスフォーマエンコーダ(Transformer Encoder)を含む。自然言語処理モデル130は、BERTであってもよい。トランスフォーマエンコーダは、テキストに含まれる複数のトークンに対応する複数の特徴ベクトルを、それら複数の特徴ベクトルの間の関係を考慮して、複数のトークンに対応する他の複数のベクトルに変換する。
【0052】
自然言語処理モデル130は、埋め込み層131、自己アテンション層132、正規化層133、フィードフォワード層134、正規化層135および予測層136を含む。また、自然言語処理モデル130には、単語辞書137、埋め込み辞書138および符号化テキスト139が含まれ得る。
【0053】
単語辞書137は、自然言語で用いられる複数の単語をそれぞれ文字列で記載した辞書データである。単語辞書137が、Raw辞書と呼ばれてもよい。単語辞書137に含まれる各単語は、先頭から何番目の単語であるかを示す非負整数のインデックスで識別される。単語辞書137は、複数の自然言語の単語を含む多言語辞書であってもよい。単語辞書137は、機械学習用のサンプルテキストから単語を抽出することで生成される。
【0054】
埋め込み辞書138は、単語辞書137に記載された複数の単語それぞれに割り当てられた分散表現ベクトルを示す辞書データである。分散表現ベクトルは、一定次元数(例えば、512次元)の数値を含む数値ベクトルである。通常、近い意味をもつ単語に対しては、類似する分散表現ベクトルが割り当てられる。単語を分散表現ベクトルに変換することが、埋め込み(embedding)と呼ばれることがある。埋め込み辞書138において、各単語に対応する分散表現ベクトルは、単語辞書137と同じインデックスで識別される。単語辞書137において、ある単語のインデックスがkである場合、埋め込み辞書138において、その単語に対応する分散表現ベクトルのインデックスもkである。
【0055】
符号化テキスト139は、自然言語で記載されたテキストを、単語辞書137のインデックスを用いて符号化したバイナリデータである。元のテキストは、文字列で表現された複数の単語をそれぞれ含む1以上の文を含む。このテキストに含まれる文は、トークナイザを用いて複数のトークンに分割される。通常、1つのトークンは1つの単語に相当する。ただし、1つの単語が2以上のサブワードに分割されることもある。各トークンは、単語辞書137が示すインデックスに置換される。これにより、文字列で表現されたテキストが、インデックスの列で表現された符号化テキスト139に変換される。
【0056】
埋め込み層131は、符号化テキスト139に含まれる各インデックスを、分散表現ベクトルに変換するニューラルネットワークである。埋め込み層131は、インデックスとしての非負整数を、one-hotベクトルに変換する。one-hotベクトルは、単語辞書137に含まれる単語の数に相当する次元数をもつベクトルである。インデックスが示す次元が1に設定され、それ以外の次元が0に設定される。埋め込み層131は、このone-hotベクトルをニューラルネットワークの入力として使用し、ニューラルネットワークの重みを用いて、一定次元数の分散表現ベクトルを算出する。
【0057】
ただし、埋め込み層131は、埋め込み辞書138が使用可能である場合、ニューラルネットワークを通して分散表現ベクトルを算出する代わりに、インデックスに対応する分散表現ベクトルを埋め込み辞書138から抽出してもよい。この場合、埋め込み辞書138がルックアップテーブルとして使用される。
【0058】
なお、埋め込み層131が、自己アテンション層132やフィードフォワード層134と併せて訓練されてもよい。その場合、機械学習の期間中、埋め込み層131にパラメータとして含まれるニューラルネットワークの重みが変化し、各インデックスから算出される分散表現ベクトルが変化する。その場合、機械学習の開始時点では、埋め込み層131の重みがランダムな数値に初期化されてもよい。
【0059】
また、埋め込み層131が、自己アテンション層132やフィードフォワード層134を訓練する機械学習より前に事前に訓練されてもよい。また、埋め込み辞書138に含まれる分散表現ベクトルが、既存の言語モデルから流用されたものであってもよい。例えば、情報処理装置100は、単語辞書137に含まれる各単語の分散表現ベクトルを既存の言語モデルから抽出し、埋め込み辞書138に登録してもよい。
【0060】
また、埋め込み層131は、位置エンコーディングによって、符号化テキスト139に含まれる各トークンの位置から、分散表現ベクトルと同じ次元数の位置ベクトルを算出する。トークンの位置は、当該トークンが、トークン列の先頭(例えば、文の先頭)から何番目のトークンであるかを示す。位置ベクトルは、一定次元数の数値を含む数値ベクトルであり、例えば、サイン関数およびコサイン関数を用いて算出される。埋め込み層131は、分散表現ベクトルに位置ベクトルを加算することで、各トークンに対応する特徴ベクトルを算出する。この特徴ベクトルの次元数は、分散表現ベクトルと同じである。
【0061】
自己アテンション層132は、符号化テキスト139に含まれる複数のトークンに対応する複数の特徴ベクトルを受け付ける。自己アテンション層132は、あるトークンに対応する特徴ベクトルを、次のような方法で変換する。
【0062】
自己アテンション層132は、着目するトークンの特徴ベクトルを、クエリ用の係数行列を用いて、クエリと呼ばれるベクトルに変換する。また、自己アテンション層132は、複数のトークンそれぞれの特徴ベクトルを、キー用の係数行列を用いて、キーと呼ばれるベクトルに変換する。自己アテンション層132は、クエリと各トークンのキーとの間で内積を算出することで、各トークンのアテンションスコアを算出する。アテンションスコアは、着目するトークンにとっての複数のトークンそれぞれの重要度を示す。
【0063】
また、自己アテンション層132は、複数のトークンそれぞれの特徴ベクトルを、バリュー用の係数行列を用いて、バリューと呼ばれるベクトルに変換する。自己アテンション層132は、複数のトークンのバリューをアテンションスコアで重み付けして合算する。これにより、着目するトークンの変換後の特徴ベクトルが算出される。クエリ用の係数行列に含まれる係数、キー用の係数行列に含まれる係数、および、バリュー用の係数行列に含まれる係数は、機械学習によって最適化されるパラメータである。
【0064】
正規化層133は、自己アテンション層132が出力する特徴ベクトルに含まれる数値を、一定の確率分布に従うようにスケール変換する。一定の確率分布は、例えば、平均が0で分散が1の確率分布である。正規化は、複数のトークンに対応する複数の特徴ベクトルに対して一括して実行される。
【0065】
フィードフォワード層134は、正規化層133が出力する特徴ベクトルを、ニューラルネットワークを用いて別の特徴ベクトルに変換する。入力の特徴ベクトルの次元数と出力の特徴ベクトルの次元数とは、同じでもよい。フィードフォワード層134は、各トークンの特徴ベクトルを、他のトークンの特徴ベクトルとは独立に処理する。このニューラルネットワークの重みは、機械学習によって最適化されるパラメータである。
【0066】
正規化層135は、フィードフォワード層134が出力する特徴ベクトルに含まれる数値を、一定の確率分布に従うようにスケール変換する。一定の確率分布は、例えば、平均が0で分散が1の確率分布である。正規化は、複数のトークンに対応する複数の特徴ベクトルに対して一括して実行される。なお、自己アテンション層132、正規化層133、フィードフォワード層134および正規化層135が、複数回繰り返されてもよい。
【0067】
予測層136は、正規化層135が出力する各トークンの特徴ベクトルから、当該トークンに関連する単語のインデックスを予測する。例えば、予測層136は、埋め込み層131の入力において、符号化テキスト139に含まれる複数のトークンのうちの一部のトークンのインデックスがマスクされたとき、当該マスクされたインデックスを予測する。これにより、自己アテンション層132やフィードフォワード層134は、あるトークンの特徴ベクトルを、周辺のトークンの文脈を考慮して算出するよう訓練される。
【0068】
例えば、予測層136は、各トークンの特徴ベクトルと埋め込み辞書138に相当する行列との積を算出することで、複数のインデックスそれぞれの予測確率を含む確率分布を算出する。予測層136は、複数のインデックスのうち予測確率が最大のインデックスを、マスクされたトークンのインデックスと予測する。
【0069】
自然言語処理モデル130に含まれるパラメータの最適化は、誤差逆伝播法によって行われる。情報処理装置100は、マスクされたトークンについて、予測層136が算出した確率分布を示す予測ベクトルと、正解のインデックスを示すone-hotベクトルとの間の誤差を算出する。情報処理装置100は、予測層136から埋め込み層131に向かう方向に誤差情報を伝搬して、各パラメータの誤差勾配を算出し、算出された誤差勾配に基づいて、誤差が小さくなるようにパラメータ値を更新する。
【0070】
図4は、テキストと符号化テキストの例を示す図である。
テキスト141は、自然言語で記載されたテキストデータである。テキスト141は、自然言語処理モデルを訓練する機械学習に用いられる。情報処理装置100は、テキスト141に含まれる文を複数のトークンに分割する。トークン分割には、自然言語毎に事前に作成されたトークナイザと呼ばれるソフトウェアが使用される。情報処理装置100は、トークンの集合から重複する単語を除去し、複数の単語を一定基準でソートすることで、各単語にインデックスが付与された単語辞書を生成する。
【0071】
情報処理装置100は、テキスト141に含まれる単語の文字列を、単語辞書が示すインデックスに置換することで、符号化テキスト142を生成する。符号化テキスト142は、前述の符号化テキスト139に対応する。
【0072】
図5は、単語辞書と埋め込み辞書の例を示す図である。
単語辞書143は、テキスト141から生成される。単語辞書143は、前述の単語辞書137に対応する。単語辞書143は、インデックスと単語の文字列とを対応付ける。例えば、単語「why」のインデックスは「56」であり、単語「story」のインデックスは「58」である。なお、
図5の例では、不連続なインデックスをもつ複数の単語が記載されているが、単語辞書143に列挙された複数の単語には連続した非負整数がインデックスとして付与される。
【0073】
自然言語処理モデルは、単語辞書143に対応する埋め込み辞書144をもつ。埋め込み辞書144は、前述の埋め込み辞書138に対応する。埋め込み辞書144は、インデックスと単語の分散表現ベクトルとを対応付ける。例えば、インデックス「56」が付与された分散表現ベクトルは、単語「why」に割り当てられる分散表現ベクトルである。また、例えば、インデックス「58」が付与された分散表現ベクトルは、単語「story」に割り当てられる分散表現ベクトルである。
【0074】
前述のように、埋め込み辞書144に含まれる分散表現ベクトルは、機械学習を通じて変化することがある。ただし、埋め込み辞書144のサイズは、単語辞書143のサイズから決定される。また、埋め込み辞書144に含まれる分散表現ベクトルは、既存の言語モデルが示す学習済みの分散表現ベクトルを流用したものであることがある。その場合、単語辞書143に基づいて埋め込み辞書144が生成される。
【0075】
次に、第2の実施の形態の自然言語処理モデルを訓練する機械学習について説明する。
図3に示した自然言語処理モデル130を訓練する場合、情報処理装置100は、機械学習用のテキストから単語を抽出して、単語辞書137を生成する。情報処理装置100は、単語辞書137が示す各単語のインデックスを用いて、テキストを符号化テキスト139に変換する。そして、情報処理装置100は、単語辞書137および符号化テキスト139を用いて、自然言語処理モデル130を初期化する。
【0076】
自然言語処理モデル130の初期化には、行列サイズの決定やパラメータの個数の決定などのパラメータ設定が含まれる。また、自然言語処理モデル130の初期化には、設定されたパラメータに初期値を代入することが含まれる。例えば、埋め込み層131に含まれるニューラルネットワークの入力サイズは、単語辞書137に含まれる単語の数に依存する。よって、埋め込み層131のニューラルネットワークを表す重み行列のサイズは、単語辞書137の単語数、すなわち、インデックスの最大値に応じて決まる。情報処理装置100は、決定したサイズの重み行列を生成する。
【0077】
また、例えば、インデックス数が単語辞書137と同じになるように埋め込み辞書138が生成される。自己アテンション層132やフィードフォワード層134と併せて埋め込み層131も訓練する場合、初期化時点では、仮の分散表現ベクトルが埋め込み辞書138に登録され得る。また、既存の言語モデルを利用する場合、初期化によって、学習済みの分散表現ベクトルが埋め込み辞書138に登録される。また、例えば、予測層136が算出する確率分布は、単語辞書137の単語数だけ予測確率を含む。情報処理装置100は、決定したサイズの確率分布ベクトルを生成する。
【0078】
また、例えば、埋め込み層131、自己アテンション層132、正規化層133、フィードフォワード層134、正規化層135および予測層136が受け付ける入力テンソルのサイズは、1回に入力され得るトークンの個数に依存する。よって、これら入力テンソルのサイズは、符号化テキスト139のトークン数に応じて決定される。情報処理装置100は、決定したサイズの入力テンソルを生成する。
【0079】
情報処理装置100は、機械学習ライブラリのAPIを利用して自然言語処理モデル130を初期化する。例えば、情報処理装置100は、自然言語処理モデル130を表すオブジェクトを生成し、このオブジェクトに単語辞書137や符号化テキスト139を接続して初期化させるAPIを呼び出す。その結果、自然言語処理モデル130に、単語辞書137や符号化テキスト139が組み込まれる。また、自然言語処理モデル130の中に、単語辞書137に対応する埋め込み辞書138が生成される。
【0080】
しかし、単語辞書137は多数の単語の文字列表現を含むため、単語辞書137のデータサイズは非常に大きい。単語辞書137を含んだ状態で自然言語処理モデル130を訓練すると、機械学習中に様々な付加的処理が発生する。その結果、機械学習の負荷が高くなり、訓練時間が長くなるおそれがある。例えば、情報処理装置100は、単語辞書137の全体をメモリにロードしようとするおそれがあり、機械学習中にインデックスとしての数値と単語辞書137との整合性を適宜確認しようとするおそれがある。
【0081】
これに対し、初期化後のパラメータ値の更新自体は、単語辞書137を参照しなくても実行可能である。予測結果に対する誤差計算や誤差逆伝播法の勾配計算は、インデックスおよび分散表現ベクトルを用いて実行可能であり、埋め込み辞書138および符号化テキスト139が自然言語処理モデル130に含まれていればよい。
【0082】
そこで、第2の実施の形態の情報処理装置100は、自然言語処理モデル130を初期化した後、パラメータ値の更新を開始する前に、自然言語処理モデル130から単語辞書137を切り離す。これにより、自然言語処理モデル130の中から単語辞書137が削除される。情報処理装置100は、機械学習ライブラリのAPIを利用して単語辞書137を切り離す。例えば、情報処理装置100は、自然言語処理モデル130を表すオブジェクトと単語辞書137との接続を解除するAPIを呼び出す。
【0083】
単語辞書137が切り離されると、機械学習中、単語辞書137に関連する様々な付加的処理が抑制される。その結果、機械学習の負荷が低くなり訓練時間が短縮される。例えば、情報処理装置100は、単語辞書137のメモリへのロードを抑制し、機械学習中にインデックスとしての数値と単語辞書137との整合性を適宜確認することを抑制する。
【0084】
ただし、予測層136が予測した単語はインデックスで表現されている。自然言語処理モデル130が単語辞書137を含まないと、このインデックスが人間可読な文字列に変換されない。そこで、情報処理装置100は、訓練された自然言語処理モデル130をテストする際には、切り離された単語辞書137を用いて、予測結果に含まれるインデックスを単語の文字列表現に変換する。これにより、ユーザは予測結果の理解が容易になる。
【0085】
このとき、情報処理装置100は、自然言語処理モデル130に単語辞書137を再び組み込んでもよい。情報処理装置100は、機械学習ライブラリのAPIを利用して単語辞書137を組み込んでもよい。例えば、情報処理装置100は、インデックスを文字列に変換するための辞書として単語辞書137を指定するAPIを呼び出す。なお、訓練された自然言語処理モデル130を配布する場合、自然言語処理モデル130と単語辞書137とが分離された状態で配布されてもよいし、自然言語処理モデル130が単語辞書137を含む状態で配布されてもよい。
【0086】
図6は、単語辞書を用いた予測結果の変換例を示す図である。
訓練された自然言語処理モデルは、あるトークンに対して確率分布151を算出する。確率分布151は、複数のインデックスに対応する複数の予測確率を含む。各予測確率は、0以上1以下の数値である。あるインデックスの予測確率は、予測単語が当該インデックスに対応する単語である確からしさを示す。
【0087】
情報処理装置100は、確率分布151から、予測確率が最大のインデックス152を選択する。情報処理装置100は、単語辞書143を参照して、インデックス152を予測単語153に変換する。予測単語153は、インデックス152に対応する単語の文字列表現である。例えば、インデックス152が「58」であり、予測単語153が「story」である。情報処理装置100は、予測単語153を出力する。
【0088】
図7は、訓練時間と予測精度の例を示すグラフである。
バー161は、単語辞書を切り離さずに自然言語処理モデルを訓練した場合(方法1)の訓練時間を示す。バー162は、単語辞書を切り離して自然言語処理モデルを訓練した場合(方法2)の訓練時間を示す。バー163は、方法1における自然言語処理モデルの予測精度を示す。バー164は、方法2における自然言語処理モデルの予測精度を示す。
【0089】
この例では、方法1の訓練時間は7153秒であるのに対し、方法2の訓練時間は5957秒である。よって、単語辞書の切り離しによって、機械学習の速度が約20%向上している。また、この例では、方法1の予測精度のスコアは10.88であるのに対し、方法2の予測精度のスコアは10.85である。よって、方法1と方法2の間では、統計誤差を超える予測精度の差異はなく、予測精度が維持されている。
【0090】
次に、情報処理装置100の機能および処理手順について説明する。
図8は、情報処理装置の機能例を示すブロック図である。
情報処理装置100は、テキスト記憶部121、辞書記憶部122、モデル記憶部123、符号化部124、機械学習部125および予測部126を有する。テキスト記憶部121、辞書記憶部122およびモデル記憶部123は、例えば、RAM102またはHDD103を用いて実装される。符号化部124、機械学習部125および予測部126は、例えば、CPU101、GPU104およびプログラムを用いて実装される。
【0091】
テキスト記憶部121は、自然言語で記載されたテキストを記憶する。例えば、テキスト記憶部121は、テキスト141を記憶する。辞書記憶部122は、テキストから生成された単語辞書を記憶する。例えば、辞書記憶部122は、単語辞書143を記憶する。モデル記憶部123は、訓練された自然言語処理モデルを記憶する。例えば、モデル記憶部123は、自然言語処理モデル130を記憶する。
【0092】
符号化部124は、テキスト記憶部121からテキストを読み出し、テキストに含まれる文をトークンに分割する。符号化部124は、トークンを集計して、異なる複数の単語を列挙した単語辞書を生成し、辞書記憶部122に単語辞書を保存する。また、符号化部124は、各トークンの文字列を、単語辞書を参照してインデックスに変換し、符号化テキストを生成する。この符号化テキストは、例えば、符号化テキスト142である。
【0093】
符号化部124は、単語辞書を機械学習部125に提供する。また、符号化部124は、符号化テキストのうち訓練用の部分である訓練用符号化テキストを、機械学習部125に提供する。また、符号化部124は、符号化テキストのうちテスト用の部分であるテスト用符号化テキストを、予測部126に提供する。
【0094】
機械学習部125は、単語辞書および訓練用符号化テキストを用いて自然言語処理モデルを訓練し、訓練された自然言語処理モデルをモデル記憶部123に保存する。このとき、機械学習部125は、単語辞書および訓練用符号化テキストを用いて自然言語処理モデルを初期化する。機械学習部125は、初期化された自然言語処理モデルから単語辞書を切り離す。機械学習部125は、単語辞書が切り離された状態で、訓練用符号化テキストを用いて、誤差逆伝播法により自然言語処理モデルのパラメータ値を更新する。
【0095】
予測部126は、辞書記憶部122から単語辞書を読み出し、モデル記憶部123から自然言語処理モデルを読み出す。予測部126は、自然言語処理モデルにテスト用符号化テキストを入力し、予測結果を取得する。予測部126は、予測結果に含まれる単語のインデックスを、単語辞書を用いて文字列表現に変換する。そして、予測部126は、単語の文字列を含む予測結果を出力する。
【0096】
なお、情報処理装置100は、自然言語処理モデルを表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。また、情報処理装置100は、自然言語処理モデルの予測結果を不揮発性ストレージに保存してもよいし、表示装置111に表示してもよいし、他の情報処理装置に送信してもよい。
【0097】
図9は、機械学習の手順例を示すフローチャートである。
(S10)符号化部124は、テキストをトークンに分割する。
(S11)符号化部124は、ステップS10で分割されたトークンを集計し、単語とインデックスとを対応付けた単語辞書を生成する。
【0098】
(S12)符号化部124は、単語辞書を用いてテキストの文字列をインデックスに符号化し、符号化テキストを生成する。
(S13)機械学習部125は、機械学習を分散処理として実行する場合、機械学習に用いる複数のノードを初期化する。各ノードは、機械学習プロセスを実行するプロセッサを含み、例えば、GPUコアを含む。その場合、機械学習部125は、ノード間でメッセージ通信を行えるように、それら複数のノードの通信ポートの設定を行う。
【0099】
(S14)機械学習部125は、ステップS12で生成された符号化テキストをロードする。ロード先メモリは、例えば、RAM102またはGPUメモリである。
(S15)機械学習部125は、ステップS11で生成された単語辞書とステップS14でロードされた符号化テキストとに基づいて、自然言語処理モデルのパラメータを初期化する。初期化は、単語辞書のサイズや符号化テキストのサイズに応じた行列を生成することを含み、パラメータに初期値を代入することを含む。また、初期化は、単語辞書と同じインデックス数をもつ埋め込み辞書を生成することを含む。なお、埋め込み層が訓練対象外である場合、機械学習部125は、初期化の中で、符号化テキストに含まれるインデックスを分散表現ベクトルに変換してもよい。
【0100】
(S16)機械学習部125は、ステップS15で初期化された自然言語処理モデルから単語辞書を切り離し、切り離された単語辞書を保存する。
(S17)機械学習部125は、機械学習プロセスを起動する。このとき、例えば、機械学習部125は、機械学習ライブラリのAPIを呼び出す。
【0101】
(S18)機械学習部125は、訓練用符号化テキストを用いて、単語辞書が切り離された自然言語モデルを訓練する。例えば、機械学習部125は、訓練用符号化テキストに含まれるインデックスを埋め込み層に入力し、予測層が算出した確率分布と正解のインデックスとの間の誤差を算出し、誤差が小さくなるように各層のパラメータ値を更新する。
【0102】
(S19)予測部126は、テスト用符号化テキストを用いて訓練済みの自然言語処理モデルをテストする。例えば、予測部126は、テスト用符号化テキストに含まれるインデックスを埋め込み層に入力し、単語のインデックスを含む予測結果を取得する。
【0103】
(S20)予測部126は、ステップS16で保存された単語辞書を用いて、ステップS19の予測結果に含まれるインデックスを文字列表現に変換する。
(S21)情報処理装置100は、ステップS18で訓練された自然言語処理モデルと、ステップS20で変換された予測結果とを出力する。なお、ユーザは、予測精度が不十分であると判断した場合、パラメータ値の更なる調整を情報処理装置100に指示することがある。その場合、情報処理装置100は、ステップS17~S21を再実行することがある。そのとき、追加の符号化テキストが使用されてもよい。
【0104】
以上説明したように、第2の実施の形態の情報処理装置100は、単語辞書と符号化テキストとに基づいて自然言語処理モデルを初期化した後は、自然言語処理モデルから単語辞書を切り離して、符号化テキストに基づいてパラメータ値を更新する。これにより、自然言語処理モデルのデータサイズが小さくなり、機械学習の負荷が低下し、訓練時間が短縮される。また、誤差が小さくなるようにパラメータ値を更新すること自体は、単語辞書を参照せずに実行可能である。よって、自然言語処理モデルの予測精度が維持される。
【0105】
また、情報処理装置100は、訓練された自然言語処理モデルを用いて単語を予測する際に、切り離された単語辞書を用いて、自然言語処理モデル内部で使用されているインデックスを単語の文字列表現に変換する。これにより、予測結果の理解容易性が向上する。
【符号の説明】
【0106】
10 情報処理装置
11 記憶部
12 処理部
13 単語辞書データ
14 テキストデータ
15 符号化テキストデータ
16 機械学習モデル