山本こんにちは、YDCラボ研究員の山本です。ある自然言語AIのアイディアを実現すべく、自然言語処理に取り組んでいます。その2)では、自然言語処理の概観として、自然言語処理の基本技術から、AI技術を用いたRNNからAttention(Transformer)への変遷、そして最新のBERTを取り上げました。本コラムでは引き続き調査した結果として、自然言語AIの仕組みを取り上げます。具体的には、Attention、Transformer、BERTの仕組みをざっくり解説していきます。くじ1.単語はベクトルで評価2.Attentionの仕組み3.Self-Attention4.Source-Target-Attention5.Transformerの仕組み6.BERTの仕組み7.まとめ単語はベクトルで評価まず、単語は自然言語AIでは、多次元のベクトルとして評価されているようです。視覚化すると直感的です。Projectorという多次元データ視覚化ツール(2016年12月公開)から実際に触れることができます。Projectorでは、文章は?AIは、文章をあくまで単語の集合体として認識します。文章は多次元のベクトルの集合体なんですね。Attentionの仕組みさて、Attentionに入ります。私達人間は、自然言語を解釈するとき、文章の一語一句構造全てを理解している訳ではありませんよね。多くの解釈は、文章中のある単語から情報を想起し、関係を把握して行っています。Attentionでは、この人間の解釈モデルがAI化されています。Attentionとは、「入力されたベクトルによって重みを計算し、その重みに基づいて索引ベクトルから任意のベクトルを出力するモデル」です。ベクトルとはどのようなことでしょうか?ベクトルとは、単語のこと。単語が自然言語AI上で評価される形式ですね。諸々取っ払うと、Attentionでやっていることは、実は入力ベクトルと索引ベクトルの内積を取るだけです。入力された単語と索引で引かれた単語の関連度を求めているのです。「インコ」50%、「が」5%、「好き」45%と計算されています。関連する単語に注目するので、まさにAttentionという訳です。これだけ!このシンプルな発想でSoTA(最先端)のベースになっているAttention。凄いですね!(厳密には後に補足します。)Attentionには大きく2つの使い方があります。順に見ていき、イメージを掴みましょう。※Attentionでは、入力された単語群をQuery、索引で引かれた単語群をMemoryと呼びますので、ここからは入力Query、索引Memoryと書いていきます。Self-AttentionSelf-Attentionは、入力Queryと索引Memoryが同じAttentionです。画像では何となく、「好き」と「動物」の関連が高そうですよね。言語の文法構造や照応関係の獲得に使われています。Law」と分析されています。ネガポジ判定にも使われており、結果は次の通り。赤いマーカーの濃淡がネガポジ判定の際の注目具合を表します。Source-Target-AttentionSource-Target-Attentionは、入力Queryと索引Memoryが別物の場合のAttentionです。画像は「お腹が減った」→「ラーメン食べよう」という発話応答を学習する場合です。過去の発話「お腹が減った」を索引Memory(Y)としています。入力Query(X)はまず、「<BOS>(文章の初めを表すコード)」です。<BOS>は索引Memory「お腹が減った」から、「ラーメン」を生成します。次に生成された「ラーメン」を入力Queryに加え、「<BOS>ラーメン」から、同様に「ラーメン食べ」を生成していくのです。実用的には、入力Queryを質問「好きな動物」とし、索引Memoryは「どこ行くー?」「動物園がいいな」「動物好きなの?」「インコが好き!」「へーそうなんだ」といった文章列となります。入力Queryが索引Memoryの中から一番関係ありそうな情報を引き、「インコ」と答えます。(補足)Attentionでは厳密には、索引MemoryはKey、Valueの2つに分離されます。Keyで関連度を計算し、関連度に従ってValueを取得しています。(そして実はココが強力なポイントのようです。)また、注意の重みの求め方として、今回内積注意を紹介しましたが、加法注意という方法もあります。Transformerで使われているAttentionが内積注意です。本コラムではまずAttentionのイメージを持って頂きたいと思い、上記の通りざっくりとした説明しました。Transformerの仕組みTransformerは、Attentionをベースにした自然言語処理です。Transformerの中で使われている代表的な技術を2つ、紹介します。AttentionAttentionの発展版です。Attentionを、Trasnformerでは使っています。EncodingAttentionだけでは文章内の単語の順序を情報として使うことができないので、各単語の位置情報を加算します。下の図は、Transformerの手順を表現したイメージ図です。Network(単純ニューラルネットワーク)など、AIをかじるとよく見る単語が並んでいるんですね。BERTの仕組み最後にBERTです。BERTの論文から画像を拝借しました。「Trm」がTransformerです。GPTと比較されています。GPTも最先端技術ですが。GPTでは、事前学習タスクに「次の単語の予測」を使用しています。予測するべき未来の単語情報はカンニングになるため、予測に用いることができません。そのため未来の単語位置のネットワークにマスクをかけなければならず、単方向Transformerでした。BERTでは事前学習タスクに「ランダムにマスクされた単語を周辺情報から予測」つまり穴埋め問題を採用することで、双方向Transformerを実現したのです。直感的にも、前後の文脈を考慮することができそうですよね。まとめ本コラムでは、自然言語処理AIの仕組みを大雑把に解説しました。ベクトルで評価される単語、その内積を取るAttention、そして連結されたTransformer、双方向TransformerのBERT、と取り上げました。基本的な仕組みは理解できたということで、応用に活かしていきたいところです。それでは、読んで頂きまして、ありがとうございました。