↓ ↑ページトップへ
表示調整
閉じる
挿絵表示切替ボタン
▼配色
▼行間
▼文字サイズ
▼メニューバー
×閉じる

ブックマークに追加しました

設定
0/400
設定を保存しました
エラーが発生しました
※文字以内
ブックマークを解除しました。

エラーが発生しました。

エラーの原因がわからない場合はヘルプセンターをご確認ください。

ブックマーク機能を使うにはログインしてください。
バード・フル(H5N1)  作者: 弥一


この作品ページにはなろうチアーズプログラム参加に伴う広告が設置されています。詳細はこちら

18/32

『猫』

「では、バハダナウの Attention が学習するところを具体的に見ていきましょう。「吾輩が猫である」がエンコーダーに入力されたとします。


吾輩 → h(1) 「吾輩」という情報が入っている


は  → h(2) 「は」という情報が主で、すこし「吾輩」の情報も含まれている。


猫  → h(3) ……


で  → h(4)


ある → h(5)


 hは実数100個からなるベクトルです。エレナ先生のご指摘のとおりです。これがデコーダーに渡されます」


「そうね」


「デコーダーは、最初に開始トークン <bos> を入力として受け取ります。一方、Attention では、エンコーダーが出力した各隠れ状態を参照し、デコーダーの状態に応じた重み付きの情報を計算します」

「デコーダーの入力Xと、エンコーダの h の束を参照したものとを『混ぜた』ものです」



「さっきのデコーダーの図のことだな」


「そうです、そして、1回目は「★」という結果が出力されます。学習していないので、まったく意味が通じません」


「最初だからね」


「ウェイトは初期化されたばかりで、まだ学習による調整が行われていません。そのため、初めのうちは正しい単語を予測できないことがよくあります。正解「I」と「★」を突き合わされて両者の損失(Loss)が計算されます」

「損失は、『たしざん』プログラムのときの、正解と解答の差に相当するものです。ただし、単純な差分ではありません」」


「バックプロパゲーションね」


「そうです。LSTMの中のウェイト・パラメーターと、『混ぜる』ときに使ったα(1), α(2)なども修正されます。このα(1)、α(2)のことをアテンション・ウェイトと言います。ただしLSTMのなかのW行列などのパラメーターとは異なり、αは入力文やデコーダーの状態に応じて、都度変化します」


「そして、h(5)まで読みこませてやるわけね」と、ミア。


「そうです、すると h(3)を与えたところで、「猫」に対応するベクトルが出てきます。翻訳された側、s(t)の側ですが、こちらでは I am a cat. ですから s(4)のところで cat が出てきます」


「位置がひとつ後ろにずれているわね」


「そうです。なので、初めのうちは学習できないでしょう。しかし続けてこのような文章を投入していきます。


「あなたは猫である」 に対して正解「You are a cat.」


「彼は猫である」 に対して正解「He is a cat.」


「彼女は猫である」 に対して正解「She is a cat.」


「そうすると、どうなるの」ミアが言った。


「説明が少し難しいのですが、ある瞬間にデコーダーがs(4)として cat を出そうと思ったときに、アテンション・ウェイトを参照して 『猫』に相当するベクトルが選ばれるのです」


「なんか、逆のようだけど、猫ベクトルが来たら、それをcatベクトルに翻訳するんじゃないの」

「そこは、つまずくところなんです。 デコーダーが I am a まで訳した時点では、次の単語は『名詞っぽい何か』が次にはくるぞ、までは分かっているんですが、cat まではわかっていないんです。もちろん『名詞っぽい』という文字列ではなく、エンコーダーから来たベクトル束のなかで、スコアの高いものを選んでいるだけですが」


「不定冠詞 a が最後の単語なので、次はたぶん名詞だ、くらいに思っているという事です」



「『名詞っぽい』というのも、100個のベクトルのなかに情報が入っているの」


「そうです。で、エンコーダーの h の束を、アテンション・ウェイトを通じて見ると、アテンション・ウェイトは「猫」のウェイトが大きくなっている、そこで「猫」に対応する単語「cat」を選ぶ可能性が高くなる。そういう順序です」


「なんだか、わかったような、わからなかったような話ね」ミアが言う。


「すいません、うまく説明できなくて。でも、これは今日の話の本筋ではないので、そういうものだと思ってください」


「まあ、いいわ」


「アテンションが登場しましたので、機械翻訳機の役目はそろそろ終わりです。あと一つだけアテンションについて話したら、いよいよ会話ができる『生成AI』の話になります。




「あと、ひとつって、なに」


「ミン=タン・ルオン(Minh-Thang Luong)達の2015年の論文[2]です。この論文では、入力文全体に Attention を向ける方式と、注目する位置の周辺に範囲を絞る方式を比較しています。実験では、機械翻訳に限るならば、局所的な Attention が有効な場合も示されました」


「なるほどね、そうかもしれないわね」


「ところが、主旨とは別の部分で注目されて、引用回数が増えました」


「そういうこともあるのね。何が注目されたの」


「これまでアテンション・ウェイトを計算するには、このようにしてきました」


 Attention(α) = softmax( σ(affine(s(t-1),h(t)) )


「そうね」


「このアフィン変換の部分を、ルオンの論文では、いろいろ変化して試行しています。そのなかで、matmul( h'(t-1),h(t))が良い成績を出しました。


 Attention(α) = softmax( matmul( s(t-1),h(t)) )


「matmul とは行列とベクトルの積です。今までにも見てきました。ところが、この場合にはベクトルs(t-1)とエンコーダーの出力 ベクトルh(t) の積です。この場合には『内積』になります」

「学校の数学でやった『内積』のこと」


「そうです」


「なんとなく覚えているけれど」


「『内積』が使えるということは、幾何学的なイメージが持てるということです。これも画期的なことでした」


「幾何学的なイメージって、どういうことだ。画期的なのか」


「はい、アテンション・ウェイトが大きくなる、ということは二つのベクトルの向いている方向が似ている、ということができるからです」



このあたりになると、筆者の文章力の限界になってきています。


わかりやすい文章にしようとすると → ChatGPTの校正に引っかかる。

校正に基づき、正確に書こうとする → 文章がわかりにくく、くどくなる。


のループです。

なんとか、両者のあんばいをとりながら書いていますが、理解しやすさを優先しているので、この文章をChatGPTに入力すると、めちゃくちゃに怒られることなります。



評価をするにはログインしてください。
ブックマークに追加
ブックマーク機能を使うにはログインしてください。
― 新着の感想 ―
このエピソードに感想はまだ書かれていません。
感想一覧
+注意+

特に記載なき場合、掲載されている作品はすべてフィクションであり実在の人物・団体等とは一切関係ありません。
特に記載なき場合、掲載されている作品の著作権は作者にあります(一部作品除く)。
作者以外の方による作品の引用を超える無断転載は禁止しており、行った場合、著作権法の違反となります。