SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Women Developers Summit 2022 セッションレポート(AD)

「Transformer」の仕組み──AIによる画像・動画生成や自然言語処理で話題の深層学習モデルを理解する

【B-2】〜今さら聞けない〜話題の深層学習モデル「Transformer」って何?

  • このエントリーをはてなブックマークに追加

Transformerの鍵となるAttention機構とは

 では注目のTransformerで鍵となるAttentionについて見ていこう。Transformer全体像におけるAttentionは下図オレンジ色の枠でくくられている「Multi-Head Attention」部分となる。

Transformer全体像とAttention

Transformerの全体像とAttention

 Transformerの全体像を大枠で見ると、「Encoder」と「Decoder」がある。翻訳で使うなら、Encoderは「今日は雨が降る」のように入力された文章の修飾関係からコンテキスト(意味表現)のベクトルを生成する役割にあたる。DecoderはEncoderから受け取ったコンテキストと翻訳途中の文章から、次の単語を予測して「It will rain today」のような翻訳結果を出力する。EncoderもDecoderも内部的には似たことを行っているため、ここではEncoderに着目して動作を解説する。

 再び先ほどの「標高の高い山で紅葉が見頃に」という例文で考えてみよう。言語の理解において、この文の「高い」のように、価格の高さか、地理の高さか、判断が難しい場合がある。これを解決するのがAttention、つまり単語の特徴量となる。これにより、ある単語を他の単語を用いてより予測に適したものに更新することを繰り返していく。今回の例文では「標高」に注目することで「高い」が地理的な高さであることが分かる。

 TransformerのEncoderでは、先に紹介したワンホットエンコーディング(0と1の組み合わせ)を、エンベディングで密なベクトルにしてから、TransformerのEncoder層に入力する。ここでAttentionという機構が、エンベディングのベクトルを周囲の単語との関係性を計算して更新(修正)する。さらに全結合層(下図の水色の台形)と呼ばれるニューラルネットワークで非線形化という処理を行う。最終的には全結合層から生成された隠れ状態「H」から、最終的な目的にあたるニュースのカテゴリ分類を行う。なお図ではエンコーダー層は1つだが、実際には複数の層となっている。

Transformer Encoderにおける文書分類モデルの全体像

Transformer Encoderにおける文書分類モデルの全体像

 さらに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で大量の言語データを学習できるようになり、近年の自然言語処理が大きく発展した。

 葛木氏は「これをきっかけに皆様に、自然言語処理やランゲージモデルに少しでも興味を持っていただければ幸いです」と述べてセッションを締めた。

この記事は参考になりましたか?

  • このエントリーをはてなブックマークに追加
Women Developers Summit 2022 セッションレポート連載記事一覧

もっと読む

この記事の著者

CodeZine編集部(コードジンヘンシュウブ)

CodeZineは、株式会社翔泳社が運営するソフトウェア開発者向けのWebメディアです。「デベロッパーの成長と課題解決に貢献するメディア」をコンセプトに、現場で役立つ最新情報を日々お届けします。

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

加山 恵美(カヤマ エミ)

フリーランスライター。茨城大学理学部卒。金融機関のシステム子会社でシステムエンジニアを経験した後にIT系のライターとして独立。エンジニア視点で記事を提供していきたい。EnterpriseZine/DB Onlineの取材・記事や、EnterpriseZine/Security Onlineキュレーターも担当しています。Webサイト:http://emiekayama.net

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

【AD】本記事の内容は記事掲載開始時点のものです 企画・制作 株式会社翔泳社

この記事は参考になりましたか?

この記事をシェア

  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/16860 2022/12/26 18:39

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング