1. はじめに
ディープラーニングと聞いて、どのような仕組みを思い浮かべるでしょうか。
「なにかすごい仕組みで動いて、何でも解決してくれる万能ツール」という認識の方もいるかも知れません。あるいはもう少し詳しく、「ニューラルネットワークで構成されていて、多層パーセプトロン(MLP; Multi-Layer Perceptron)や畳み込み(Convolution)が、使われている」とご存じかも知れません。
計算に大変なリソースが必要でGPUが利用されていることはよく知られていると思います。
本稿では、どういう場面でどのようなニューラルネットワークのアーキテクチャーが使われるかはなんとなく知っているけど、実際に使ったり実装してみたりしたことはないといった方を対象として、では実際にそれはどのような仕組みで計算されているのかについてトランスフォーマー(Transformer)を題材として解説します。
「なにかすごい仕組みで動いて、何でも解決してくれる万能ツール」という認識の方もいるかも知れません。あるいはもう少し詳しく、「ニューラルネットワークで構成されていて、多層パーセプトロン(MLP; Multi-Layer Perceptron)や畳み込み(Convolution)が、使われている」とご存じかも知れません。
計算に大変なリソースが必要でGPUが利用されていることはよく知られていると思います。
本稿では、どういう場面でどのようなニューラルネットワークのアーキテクチャーが使われるかはなんとなく知っているけど、実際に使ったり実装してみたりしたことはないといった方を対象として、では実際にそれはどのような仕組みで計算されているのかについてトランスフォーマー(Transformer)を題材として解説します。
2. なぜトランスフォーマーか
トランスフォーマーは、2017年に“Attention is All you Need”という題目の論文で提案された翻訳を行うためのニューラルネットワークの仕組みです[1]。
その特徴は、系列情報(文章は文字が並んだ系列データです)を扱うために、それまでよく用いられていたLSTM (Long Short Term Memory)やGRU (Gated Recurrent Unit)などのRNN (Recurrent Neural Network)に基づく手法とは異なり、注意機構(Attention)という仕組みを中心に構成されていることです。
そして現在では、最初に提案された分野である言語処理の枠を超えて、系列情報を扱う他の分野である音声処理(音声合成や音声認識)に使われるのみならず、物体検知や物体認識などの画像処理・動画像処理分野にも広く応用されるようになっています[2]。
このように現在のニューラルネットワークを語る上で避けては通れない仕組みのひとつですので、そのアーキテクチャーにぜひ詳しくなってしまいましょう。
その特徴は、系列情報(文章は文字が並んだ系列データです)を扱うために、それまでよく用いられていたLSTM (Long Short Term Memory)やGRU (Gated Recurrent Unit)などのRNN (Recurrent Neural Network)に基づく手法とは異なり、注意機構(Attention)という仕組みを中心に構成されていることです。
そして現在では、最初に提案された分野である言語処理の枠を超えて、系列情報を扱う他の分野である音声処理(音声合成や音声認識)に使われるのみならず、物体検知や物体認識などの画像処理・動画像処理分野にも広く応用されるようになっています[2]。
このように現在のニューラルネットワークを語る上で避けては通れない仕組みのひとつですので、そのアーキテクチャーにぜひ詳しくなってしまいましょう。
3. トランスフォーマー概観ではさっそくトランスフォーマーの構成を見てみましょう。
図1は原論文に記載されている全体像を表す図です。 一見として複雑な構成に見えますが、構成要素を一つ一つ分解していくとそれほど難しくはありませんので、順に何をやっているか確認していきましょう。 英語から日本語への翻訳を題材として考えてみます。 トランスフォーマーの左側下部のInputs(入力)にはEncoderへ日本語の文章が入力されることになります。 また、右側下部のOutputs(出力)には、それまでに出力した英語の文章がDecoderに入力として与えられます。 そして右側上部のOutputs Probabilities(出力確率)に、入力とした英語の文章の続きになりそうな英単語の確率が出力されます。 これが翻訳処理の1ステップになります。 出力された英単語を最後に加えた英文をあらたなOutputsへの入力とすることで、文の最後にたどり着くまで順々に文章を作っていくという処理の流れになります。 |
4. 文章を表現するEmbedding
Embeddingは自然言語の文章をニューラルネットワークで扱えるようにするための変換部分に当たります。
上記のように単語を表現することにすると、その単語が文中のどの位置に現れたのかという情報を表現できていません。
そこでその欠けた情報を加えるためにPositional Embedding (位置埋め込み)を用います。
そこでその欠けた情報を加えるためにPositional Embedding (位置埋め込み)を用います。
5. 注意こそはすべて Encoder(Decoder)
トランスフォーマーは、注意機構で構成されることが特徴です。注意機構は、時系列的に並んでいる単語のベクトルを混ぜ合わせる役割を担っています。
図 4 トランスフォーマーの注意機構はMulti-Head Attention(多頭注意)で構成されています。
これは複数のScaled Dot-Product Attention(縮小付き内積注意)によって構成されています。 エンコーダーで利用される際には入力になるVとKとQはまったく同じベクトルになっています。デコーダーで、エンコーダーの入力をとる部分では、KとVがエンコーダーからの入力になり、Qがデコーダーからの入力になっているだけです。 縮小付き内積注意の前後にはLinear(全結合層)を追加しています。これは入力ベクトルに行列を掛けて、ベクトルを足しているだけです。 図中の右上が出力部分、右下側が入力部分のLinearを表しています。灰色の長方形はいずれもニューラルネットワークで学習されるパラメーターを示しています。 |
さて、なぜ多頭というかというと、入力のLinearのあとのベクトルを固定の次元ごとに小分割して、それぞれについて縮小付き内積注意を適用するためです。
そして、それぞれの内積注意から得られたベクトルをConcat(ならべてひとつの大きなベクトルとして扱う)したあと、Linearを適用して出力としています。
そして、それぞれの内積注意から得られたベクトルをConcat(ならべてひとつの大きなベクトルとして扱う)したあと、Linearを適用して出力としています。
6. 全結合層 Linear
全結合層は、ここまで変換されてきた入力から各単語の選ばれる確率を算出する処理になります。
7. まとめ
トランスフォーマーの構成をみてきました。
単語を実数ベクトルで表現して扱うことが腑に落ちれば、あとは初等的な線形代数で構成されていることが分かると思います。思っていたより難しくはなかったという感想を持っていただければ幸いです。
トランスフォーマーを利用した技術にも興味深いものが多いので、ぜひいろいろ探してみてください。
Jukebox[3]は、アーティストと歌詞を指定して音楽を生成できます。
PolyGen[4]は、ポリゴンモデルをモデリングできます。
AIのべりすとは、GPT-3というトランスフォーマー系の技術が利用されています。
また、様々な改良手法も提案されています。
それは、Normの位置を変えたりするといったヒューリスティックスなものから、注意機構で計算される行列が使用するメモリーのコストを理論的にうまく削減する方法まで様々です。
本稿の後はぜひそういった派生手法について調べてみて欲しいと願っています。
単語を実数ベクトルで表現して扱うことが腑に落ちれば、あとは初等的な線形代数で構成されていることが分かると思います。思っていたより難しくはなかったという感想を持っていただければ幸いです。
トランスフォーマーを利用した技術にも興味深いものが多いので、ぜひいろいろ探してみてください。
Jukebox[3]は、アーティストと歌詞を指定して音楽を生成できます。
PolyGen[4]は、ポリゴンモデルをモデリングできます。
AIのべりすとは、GPT-3というトランスフォーマー系の技術が利用されています。
また、様々な改良手法も提案されています。
それは、Normの位置を変えたりするといったヒューリスティックスなものから、注意機構で計算される行列が使用するメモリーのコストを理論的にうまく削減する方法まで様々です。
本稿の後はぜひそういった派生手法について調べてみて欲しいと願っています。
参考文献
[1] Ashish Vaswani, Noam Shazeer, Niki Parmar, Jakob Uszkoreit, Llion Jones, Aidan N. Gomez, Łukasz Kaiser, Illia Polosukhin. 2017. Attention is All you Need. Advances in Neural Information Processing Systems. Volume 30.
[2] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby. 2021. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. International Conference on Learning Representations.
[3] Prafulla Dhariwal, Heewoo Jun, Christine Payne, Jong Wook Kim, Alec Radford, Ilya Sutskever. 2020. Jukebox: A Generative Model for Music.
[4] Charlie Nash, Yaroslav Ganin, S. M. Ali Eslami, Peter W. Battaglia. 2020. PolyGen: An Autoregressive Generative Model of 3D Meshes.
[2] Alexey Dosovitskiy, Lucas Beyer, Alexander Kolesnikov, Dirk Weissenborn, Xiaohua Zhai, Thomas Unterthiner, Mostafa Dehghani, Matthias Minderer, Georg Heigold, Sylvain Gelly, Jakob Uszkoreit, Neil Houlsby. 2021. An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale. International Conference on Learning Representations.
[3] Prafulla Dhariwal, Heewoo Jun, Christine Payne, Jong Wook Kim, Alec Radford, Ilya Sutskever. 2020. Jukebox: A Generative Model for Music.
[4] Charlie Nash, Yaroslav Ganin, S. M. Ali Eslami, Peter W. Battaglia. 2020. PolyGen: An Autoregressive Generative Model of 3D Meshes.