AIによる画像・動画生成や自然言語処理など、ディープラーニングがより身近に
まずは深層学習(ディープラーニング)の概要から。深層学習とは、大量のデータを機械に学習させることで、画像、動画、文章などの複雑なデータを解析できるようになる機械学習モデルだ。例えば「猫」や「犬」などのラベルがついた画像を大量に読み込ませる(学習させる)と、任意の画像で「猫」や「犬」と識別できるようになる。
画像ではなく文章を分析する際は、自然言語処理と呼ばれる。人間の言葉や文章をコンピュータに理解させる時に必要になる。この場合、大量の文章を入力したLanguageモデルから意味を学習していく。
自然言語処理はWeb検索、翻訳、音声アシスタントなど身近なところで活用されている。Gmailのスマホアプリを使っているなら見覚えがあるかもしれないが、メールで簡単な返信の候補を生成することもできるようになっている。例えば同僚から「あの資料どうなってる?」という問い合わせが来たら、「ただいま準備中」など状況に合った複数の返信候補が生成される。その他にも、簡単なコード生成も可能だ。例えば「虹色の表」とテキスト入力すると、七色のテーブルのHTMLタグを自動生成する。
今年に入り「Stable Diffusion」のようにテキストから画像を生成するものが話題になり、試した人も多いのではないだろうか。「Stable Diffusion」では、例えば「青いベレー帽とチェックのタートルネックを着たゴールデンレトリバー」と入力すれば、それらしい画像が自動生成される。
AIは言葉をどのように処理しているのか──「Word2vec」と「RNN」
画像認識や自然言語処理の技術革新に大きな貢献を果たした深層学習モデルに「Transformer」がある。その前に、自然言語処理がどのように進むかを確認しよう。
例えば「標高が高い山で紅葉が見頃に」という文章があったとする。これがニュースのタイトルだとして、何らかのジャンル(社会、気象、経済)に自動で分類したいなら、意味の理解が必要になる。
2013年に公開された「Word2vec」では、周囲のコンテキストから単語を予測することで、単語の分散表現を得る。上記の例なら「標高/が/?/山/で」と文章を分解し、「?」の部分の推論を繰り返すことで、単語の出現パターンを学習して単語の意味が含まれたベクトルを生成する。
単語をベクトルにするのは、深層学習(コンピュータ)で処理できるように数値化する必要があるため。原始的な方法は「ワンホットエンコーディング」と呼ばれる手法で、単語ごとに「0」または「1」のフラグで表現したベクトルになる。文章が長くなるとベクトルはとても長くなり、長さの割に情報量が少ない(sparse)ものとなってしまう。
そこで「Embedding」という手法にすると、固定長の数値で表現できる。よってよりコンパクトになり、数値が近いと意味も近いものになる。例えば「cinema」と「movie」は近い数値となる。こようにWord2vecは単語に注目した自然言語処理だ。
一方で、文章の意味表現に注目した自然言語処理に「RNN(Recurrent Neural Network)」がある。過去から現在、未来へとデータを継続的に処理することにより単語の順序を考慮し、下図の青い四角「h」の部分、「隠れ状態」と呼ばれる情報を記憶していくニューラルネットワークとなっている。ただしRNNでは単語を順に処理していくため、並列化が困難という課題があった。大量のプロセッサがあっても学習を高速化できないのだ。
2017年、「Attention is all you need」と題した論文で、大きなデータを扱えるTransformerモデルが紹介された。このTransformerモデルもニューラルネットワークアーキテクチャの一種で、単語の意味表現に注目しており、文書の順序を考慮するために「ポジショナルエンコーディング」という手法を採り入れているのが特徴だ。
なお「Attention」は2015年に発表されており、当時はRNNと一緒に使う必要があった。しかし先の論文ではRNNが必須ではなくなり、TransformerからBERT、GPT-2、T5などのLLM(Large Language Model)が派生している。なかでもPaLMはGoogleが発表した超巨大なLLMで5400億個のパラメーターで学習されている。
先の論文の共著者らが次々とLLMでスタートアップを起こし、また近年ではLLMはゲームやロボット制御という分野にも進出している。最近ではKaggleユーザーの半数以上がTransformerを使用しているという調査結果もある。
Transformerの鍵となるAttention機構とは
では注目のTransformerで鍵となるAttentionについて見ていこう。Transformer全体像におけるAttentionは下図オレンジ色の枠でくくられている「Multi-Head Attention」部分となる。
Transformerの全体像を大枠で見ると、「Encoder」と「Decoder」がある。翻訳で使うなら、Encoderは「今日は雨が降る」のように入力された文章の修飾関係からコンテキスト(意味表現)のベクトルを生成する役割にあたる。DecoderはEncoderから受け取ったコンテキストと翻訳途中の文章から、次の単語を予測して「It will rain today」のような翻訳結果を出力する。EncoderもDecoderも内部的には似たことを行っているため、ここではEncoderに着目して動作を解説する。
再び先ほどの「標高の高い山で紅葉が見頃に」という例文で考えてみよう。言語の理解において、この文の「高い」のように、価格の高さか、地理の高さか、判断が難しい場合がある。これを解決するのがAttention、つまり単語の特徴量となる。これにより、ある単語を他の単語を用いてより予測に適したものに更新することを繰り返していく。今回の例文では「標高」に注目することで「高い」が地理的な高さであることが分かる。
TransformerのEncoderでは、先に紹介したワンホットエンコーディング(0と1の組み合わせ)を、エンベディングで密なベクトルにしてから、TransformerのEncoder層に入力する。ここでAttentionという機構が、エンベディングのベクトルを周囲の単語との関係性を計算して更新(修正)する。さらに全結合層(下図の水色の台形)と呼ばれるニューラルネットワークで非線形化という処理を行う。最終的には全結合層から生成された隠れ状態「H」から、最終的な目的にあたるニュースのカテゴリ分類を行う。なお図ではエンコーダー層は1つだが、実際には複数の層となっている。
さらにAttention機構を深掘りしていこう。ここでは入力されたベクトルから、Q(Query)、K(Key)、V(Value)の3種類のベクトルからAttentionスコアを計算している。QとKの内積を計算することで、各単語同士の関連性に近いものを算出する。例えば「高い」という単語で最も高いスコアは「標高」となるため、「高い」と「標高」は強い相関があることになる。「単語の相関性をベクトルの内積で計算するというのがAttention機構の本質です」と葛木氏は説明する。
QとKの内積からVの修飾関係の表を書き出し、ΔEという修正量のような値を得る。さらにΔEに、エンベディングのベクトルを足し(ベクトルを更新する)、後は先述したように全結合層で処理することになる。
別の例文で考えてみよう。「The animal didn't cross the street because it was too tired」という文があったとして「it」が何を示しているかを考える時には、Attentionを用いることで「it」とそれ以外の単語の関係性を割り出していく。すると、最も関連性が高いのが「animal」と出てくる。Attentionは、単語の意味をとらえるためにはどの単語に注目すべきかが分かるようになる。
TransformerではAttentionと並び主要なものとなる、ポジショナルエンコーディングも補足しておこう。ポジショナルエンコーディングは、処理対象の単語が文章のどこにあるかを把握する仕組みだ。こちらは意外とシンプルで、単語の位置により異なる値をエンベディックベクトルに足し算していく。
まとめると、Transformerとは2017年に発表された自然言語処理に関する論文で発表された深層学習モデルで、元は翻訳のために提案されたアーキテクチャとなる。EncoderとDecoderで構成されていて、Attentionという機構により「ある単語の意味を理解するにはどの単語に注目すべきか」という情報が付加されることで単語の意味をより正確に把握できるようになった。このTransformerで大量の言語データを学習できるようになり、近年の自然言語処理が大きく発展した。
葛木氏は「これをきっかけに皆様に、自然言語処理やランゲージモデルに少しでも興味を持っていただければ幸いです」と述べてセッションを締めた。