本記事は、当社オウンドメディア「Doors」に移転しました。
約5秒後に自動的にリダイレクトします。
はじめに
こんにちは、アナリティクス本部アナリティクスサービス部の董です。
2017年に Google が発表した「attention is all you need」という論文で提案された「Transformer」は、機械翻訳や文章カテゴリの分類、文章生成等、さまざまな自然言語処理の課題を非常に高い精度で解決し、革命的な進歩で発展しています。当社でもTransformerモデルを業務に生かすことで、これまでは不可能だった分析が可能となっています。
本ブログでは、「なぜTransformerモデルでの分析精度が高いのか?」について、翻訳モデルをベースになるべく分かりやすい言葉で解説することを目標とします。
機械翻訳とは?
機械翻訳は、コンピューターを利用してある言語で書かれた文章を別の言語の文章に変換するタスクです。そのためには、言語および言語間での共通概念を数値で表現する必要があります。もっとも自然な選択肢は、計算によって自動的に選択された多数の概念軸を用意して、単語に各軸の数値を付与することで言語を数値表現することです。高次元(50~2000次元くらい)の数値ベクトルで単語を表現します。文章は数値化された単語の連鎖(テンソル)として表現できます。このような数値ベクトルの連鎖はテンソルと呼ばれ、機械翻訳は、複数言語で数値化された文章から共通概念への変換規則を構築して自動的に翻訳を行うシステムのことです。言語間の共通概念もテンソル形式で書かれています。
ある言語での文章から言語間の共通概念を算出することを「encoding」と呼び、ここから他の言語の文章に変換する計算を「decoding」と呼びます。それぞれの役割を担う変換規則は「encoder」と「decoder」と呼びます。この共通概念は、架空の言語とも呼べるものですが、人間が理解するのは困難なものです。変換規則encoderとdecoderは、大量の対訳コーパスを用いて学習します。
機械翻訳の精度は、Transformerによって大幅に向上しています。Transformer以前は、RNNモデルが利用されていました。このRNNモデルは、注意メカニズムが組み込まれることで機械翻訳の精度向上を達成していました。この注意メカニズムはTransformerの基礎となる仕組みです。この仕組みを、まずはRNNで確認します。
RNNでの注意メカニズム
RNNについて
RNNは再帰型ニューラルネットワークの略称で1980年代に開発された古い歴史を持ったモデルです。Transformer以前のgoogle翻訳等の機械翻訳精度向上は、RNNによって成し遂げられています。
最もシンプルなRNNを、翻訳モデルに適用した例が下記の図1です。文章は単語に分割され、文章の順番にencoderへ取り込みます。単語とRNNセルの隠れ状態(encoder、decoderと書かれた部分)はベクトルです。単語を取り込む際、または隣の隠れ状態に移る際に、行列形式で重みがかかり、非線形な変換がかかります。
図1 RNNの説明図
言語では、ある単語はそれ以前の単語に依存します。特に人間が話すときは、一文字ずつ喋ります。RNNではこの構造が反映されており、1単語ずつencodingおよびdecodingを行います。このようにしてRNNでは文脈が考慮されたモデルが作られます。
このモデルで、2言語間の共通概念となっているのは、日本語で最後の「好き」を取り込んだ後の隠れ状態です。しかし、ここに取り込める情報量には制限があり、モデルのボトルネックとなっています。また、モデルも人間と同じように、文が長ければ自然的に情報の量が多くなり、特に最初の方に書かれた情報を保持することは長期記憶の仕組み(LSTM)を使っても難しくなります。また書き言葉の場合、数文前の言葉との関連、複数の単語間での関係、後に出てくる単語との関係等、単語間の関係が複雑になります。
図2 注意メカニズムを込めたRNNの説明図
上記の課題の内、入力情報を出力時(decoding時)に利用する仕組みを「注意メカニズム」と呼びます。図2のように、出力側の最初の単語”I”は、入力側の文章から主語となりそうな単語「私」を参照する必要があります。注意メカニズム無しでも、「私」の情報はあります。ただ最初の方に書かれた情報で、他の単語情報も入ってくるので、情報が曖昧になっています。注意メカニズムを利用することで、より鮮明に「私」という情報を利用することができます。
RNNモデルの課題
RNNは注意メカニズムを適用することで、2言語間の共通概念の情報量を補い、精度を向上することが可能です。ただしRNNではその仕組み上、精度が上げにくいモデルです。図1、2のencoder間、decoder間に矢印があります。モデル構築の際、この順番で単語を処理する必要があります。そのため、RNNモデルの計算は並列化しにくく、GPUなどのハードウェアの利用率も低くなります。これは機械翻訳モデルの深層化・大規模化を妨げており、精度改善の支障となっています。
Transformer
Transformerでは、単語の順番に計算することを止め、代わりに単語間の距離(図3のPositional Encoding)、注意メカニズム(図3 Multi-Head Attention)、および全結合(図3 Feed Forward)を用いてモデル化します。このモデルは単語の順番に沿って計算する必要が無く並列化での処理が可能です。GPUのハードウェア利用率が高まり、深層化、大規模化が可能となります。図3左側はencoder、図3右側はdecoderです。翻訳等ではなく1つの言語しか使わないモデルでは、encoderのみをモデルとして利用することもよくあります。翻訳モデルではdecoderも利用します。左右の2言語間の共通概念(図3左側から右側へ流れる情報)についても、入力文の複雑さを維持したものとなっています。
図3 Transformerモデルの構造
Transformerでの注意メカニズム
Trasnsformer内での注意メカニズムは、図3でMulti-head Attentionと書かれた部分です。図3左側のencoder部分について考えると、特に1段目の入力は、元の単語をベクトルした結果に、単語間の相対距離情報を加えたものです。Multi-head Attentionでは、端的に言うと、ある単語を他の単語の重み付き加重平均で表現しています。その際、行列変換や内積計算、Softmax関数による確率計算等を用いているため、複雑な情報を取り込むことが可能です。類似度は内積を使いますが、単純な内積だと実際に似ている単語(例えばリンゴとみかん)のような類似度しか取れません。しかし、類似度を取る前に行列変換を行うことで、単語の概念軸を調整することにより高度かつ抽象的な情報をモデルに組み込むことができます。例えば、文章の始まりや句点の後には主語となる単語の確率が高い等です。複数の異なる行列変換でこのような類似度情報(Multi-head)を利用することで、文章の構造をモデル化します。
Transformer での転移学習
自然言語処理での学習は、転移学習が基本となります。ウェブ上には膨大なラベルの付いていない文章が存在します。一方ラベルの付いた文章は限られています。ここで、ラベルとは文章のカテゴリや評価の値、問題に対する答え、ある言語の翻訳結果等です。
そこで、通常は大量のラベル無し文章を学習して、文章の構造をモデル化する事前学習を行います。
学習方法は、本記事後半の「自然言語処理におけるTransformerの応用」を参照ください。
事前学習モデルを元に、文章カテゴリの推測等、個々の目的に合わせて転移学習するのがTransformerモデルでの一般的な利用方法です。しかしながら翻訳については、十分大きな対訳コーパスが確保できる場合、事前学習の効果がそれほど高くはならないことが知られています。
Transformerモデルの特徴おさらい
RNNでの再帰的な処理は、Transformerでは並列処理となりました。これにより高度なハードウェア利用率を達成し、大幅に処理速度が向上しました。またmulti-head attentionを導入することにより、今までよりも文脈を考慮したモデルとなりました。内部のベクトル次元が高くTransformerの層数も多い巨大モデルを、大量の文章を用いて学習することも可能となり、自然言語の翻訳精度は大幅に向上しました。
またTransformerモデルは、言語以外でも利用可能であり、現在は時系列分析、画像処理、強化学習など多くの分野で使用されています。
Transformerを使った時系列分析に興味がある方は、プラチナブログの次回の自然言語記事「Transformerによる時系列データ予測のご紹介」をご一読ください!
自然言語処理におけるTransformerの応用
機械翻訳分野で発足したTransformerは、2018年以来様々な自然言語処理分野で利用されてきました。翻訳や抽象的要約ではdecoderが必要となります。しかし文書分類、自然言語理解と推論、自然言語生成、情報検索などのタスクでは、文書の情報や概念をモデル化することで十分なので、encoderだけのモデルで十分です。そのようなモデルにはBERT、GPT、XLNet等があります。当社でも様々な自然言語処理モデルを独自に構築しています。ここではXLNetでの文章生成を紹介します。
BERT
「Bert」はテレビ番組「セサミストリート」に出場するキャラクターの名前ですが、ここでは2018年Googleが発表したTransformer encoderモデルを指しています。
このBERTモデルは、文書中の単語の一部を隠し、隠した単語の正体を当てるように学習します。このような学習では、隠した単語の後に現れる文章も利用可能で、より精度の高い言語モデルの作成が可能となります。
GPT, XLNet
BERTの他に、Transformer encoderを使用したモデルはXLNetやOpenAIのGPT等があります。これらのモデルは、BERTのように空欄埋めタスクによって学習するのではなく、前の文章だけを利用して次に出てくる単語を予測することで学習を進めます。GPTでは、予測する単語以降に現れる情報を一切使わずに予測する、いわば典型的な「言語モデル」です。一方XLNetでは文書の自然順序ではなく、ある程度乱した順序で単語を予測しています。これにより、XLNetはBERT以上の言語モデルが作成可能となりました。これらのGPT、XLNetでは、より容易に文章生成が可能だという特徴があります。ある提示文が与えられた時、モデルはまるで作家のように次々と単語を生成し文章を書き続けます。
当社では、wikipediaなどの公開日本語コーパスを使用し、大規模データで日本語版のXLNetを学習させました。本記事の最後に、このモデルが書いたストリーをご覧ください。
提示文:
数億年前の地球には、すべての陸地がひとつに集まった、パンゲア大陸と呼ばれる巨大な超大陸が…
モデルが補完した文章1:
数億年前の地球には、すべての陸地がひとつに集まった、パンゲア大陸と呼ばれる巨大な超大陸が栄え、やがて人々は巨大化して、世界経済の中枢を担うのだった。そしてやがてある国家の存在を知り、世界経済が潤進し、民衆が次々と出現する程の繁栄を遂げた。そんな中、巨大な衛星地帯が開国され、世界経済が存続する中で地球が規模の大きな地域として栄えていた。人類の文明・文明・経済については、など考えられている。人類の創造の起源である→種族論的に意識された文化群と併せて、様々な文化的諸傾向に対応させて、多様な文化群を形成していく。それらの文化群は文化を起伏した大地にまで遡る。この文化群は創造そのもののコースの1つである。究極的な地球の場所で地球が文明として蘇ったのは、それであった。100億年前から人類の人類存在が支配され、人類の到来と遭遇は大きなほどあった。
モデルが補完した文章2:
数億年前の地球には、すべての陸地がひとつに集まった、パンゲア大陸と呼ばれる巨大な超大陸がその先端にその海から四方にかけて溢れていた。ある程度の高濃度の粉球、眼球そして星塊が降りており。人類は繭中で水に乗った。その時、植物茎が生きた地に落ちてきて、星塊から巨大な光がくる。初期太陽系で数ヶ月程初期、超自然の陰土にいたるまで生存する。このとき第一惑星軌道の重力は星ではなく、大気の帯に当たり、外地球はヘリウムの昇降限界を超えたのである。遠く離れた場所に経界は強大な力が現れ、原人工の綱から独立していた。支配圏の中では鉛原子よりは強固で、現在暗い場所で存在する。この状態で万斗星が有視界で接近している。外地球からは超円視帯の電子帯へ、朧星から観測した液体灯によって次々と超電子が放出された。
終わりに
ブレインパッドでは、Transformerなどの最新技術に取り組んでおり、ビジネスに活用するため積極的に研究開発に注力しています。この記事を通じて、自然言語処理について理解が深まり、ご興味をもっていただければ幸いです。
ブレインパッドでは、新卒採用・中途採用ともに新しい仲間を積極的に採用しています! AIによる不良品検知をはじめ、データサイエンスを仕事にしてみたい皆さま、ブレインパッドにご興味のある皆さま、ぜひご応募をお待ちしています!
*1:Vaswani, Ashish, et al. "Attention is all you need." Advances in neural information processing systems. 2017, p.3.