前回までに、畳み込みニューラルネットワーク(CNN)、再帰型ニューラルネットワーク(RNN)、長・短期記憶(LSTM)について解説した。今回は、系列変換モデルと対応付けの学習について、注意型ネットワークとコネクショニスト時系列分類法を取り上げる。

 ここまでの連載で取り上げたモデルはいずれも、ある入力に対して出力が1つ得られる。今回は、入力の系列から出力の系列が得られる系列変換モデルを取り上げる。このとき重要な機能が入力と出力の対応付けを最適化することであり、その方法として注意型ネットワークとコネクショニスト時系列の2つを解説する。

対応付けに着目、注意型ネットワーク

 注意型ネットワークは機械翻訳の分野でその有効性がよく知られているが、時系列全般に対して適用可能なモデルである。モデルの動作はまず、入力された単語列をある固定次元のベクトル(文脈ベクトル)に符号化する。他言語への翻訳では、ある時点(t)での出力単語を文脈ベクトルと1つ前(t-1)の単語を用いて生成する。これを1単語ずつ処理して、次の単語を生成するということを繰り返す。

 この例を図1に示した。英語の“This will change my future”(これは私の未来を変える)という文をフランス語の“Cela va changer mon avenir”に翻訳する例である。原文の単語を逆順にfuture, my, change, will, this, </s>と入力する。ここで文の終わりを示す記号(</s>)を仮想的な単語として追加している。入力が終了した時点で、それまでの入力によって得られた中間層の値が文脈を表すベクトルになっており、ここから最初の単語 Cela を出力する。これを次の入力とし、その時点の中間層の値を用いて、次の単語を出力する。これを繰り返して翻訳文を得る。図1では中間層は1層に描かれているが、実際には離散的な単語を実数のベクトル(分散表現と呼ばれる)に変換する層を加えた多層のニューラルネットワークが用いられる。

図1 系列変換モデルによる翻訳の例
原文の単語を逆順で入力し、文脈ベクトルを生成する。入力が終了すると、最初の翻訳単語を出力し、これを次の入力として、その時点の中間層の値に従って、次の単語を決定して、出力する。これを繰り返して翻訳を行う。
[画像のクリックで拡大表示]

 モデルの学習には、同じ内容を複数の言語で表すデータ(パラレルコーパス)を用いる。逆に言えば、モデルと大量のパラレルコーパスを用意すれば、文法などの言語に関する知識がなくても、高い性能の機械翻訳システムを作成できる点が特徴である。

コーパス=文書などの言語データを収集して、整備したもの。文書の本文(テキスト)だけでなく、文書の属性を表すメタ情報や、文を細かい単位に分割した情報などが含まれることもある。言語データのみでなく、音声データなどを収集して整備したデータベース全般を指すこともある。

 これを発展させたものが注意型ネットワークである。“注意”とは対応付けに着目するという意味である。入力と出力の対応付けに、ソフトマックス関数による重みが用いられる。入力された単語列(文)を1つの文脈ベクトルに符号化するのではなく、RNN(再帰型ネットワーク)、あるいはLSTM(長・短期記憶)を、順方向と逆方向の双方向で用いた中間層のベクトル列に変換する。ある時点(時刻t)の出力(翻訳であればt番目の単語の翻訳結果)を得るために、入出力の対応関係を予測して、1単語ずつ出力するモデルである。

 ある単語を出力した後で次の出力を得るために、入力された単語列のうち、どの部分に注意を当てて出力を決めるかを、入力と出力との対応付けとしてモデル化する。重要なのは、この「対応付けを取って変換していく」という部分にある。

この先は有料会員の登録が必要です。有料会員(月額プラン)は初月無料!

日経 xTECHには有料記事(有料会員向けまたは定期購読者向け)、無料記事(登録会員向け)、フリー記事(誰でも閲覧可能)があります。有料記事でも、登録会員向け配信期間は登録会員への登録が必要な場合があります。有料会員と登録会員に関するFAQはこちら