【深層学習】忙しい人のための Transformer と Multi-Head Attention【ディープラーニングの世界 vol.29 】

  Рет қаралды 28,065

AIcia Solid Project

AIcia Solid Project

Күн бұрын

Пікірлер: 38
@ハッリーポター
@ハッリーポター Жыл бұрын
QKVの具体例を図で描いてくれるのめっちゃ分かりやすかったです!
@AIcia_Solid
@AIcia_Solid Жыл бұрын
ご視聴コメントありがとうございます!🎉 あの図は私の推しポイントのひとつなのです! 魅力が伝わったようで、とても嬉しいです😊
@nagi8905
@nagi8905 3 жыл бұрын
AIciaさんの動画を見つけていなかったら本気で卒業できなかったかもしれません。 ありがとうございます。これからも頑張ってください! BERT楽しみにしています!
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
ご視聴コメントありがとうございます!!!🎉 お役に立てたなら何よりです!🎉 BERT もそろそろです。お楽しみに!
@kentoo_1
@kentoo_1 3 жыл бұрын
7分弱とは思えない密度の濃さ… アイシアたん、恐ろしい子!
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
でしょ! 忙しい人にはぜひこちらを布教ください!
@isudusurbsiavruab
@isudusurbsiavruab 2 жыл бұрын
質問(確認)です。 Scaled Dot-Product Attentionの板書で、q,v,pのインデックスがmになっていますがqベクトルのインデックスがnなので正しくはmではなくnだと思いました。 mだとqベクトルの要素数と一致しなくなるので内積計算ができなくなります。Q,K,Vには入力をEmbeddingとPositonal Encodingしたベクトル入ってくるので要素数は一致してるという認識です。 ps.動画解説大変勉強になりました!自分で論文読んだり予習してから動画見ると理解が大変深まります。ありがとうございます。
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
ご視聴コメントありがとうございます!! 素敵な使い方をしていただいて嬉しいです😍🎉🎉🎉 今後も役立つ動画を生成できるようがんばります!🔥 K, V の要素数は揃っている必要がありますが、Q の要素数は、必ずしも一致する必要はないと思います。 Encoder では常に一致しますが、 Decoder では、K, V は Encoder 出力全部を使いますが、Q はその時処理してる単語 (token) 数のみになると思います。 もしなにか勘違いしてずれたことを言っていたら教えていただけると助かります!🙇‍♀️
@user-kp1ig4pc5g
@user-kp1ig4pc5g 2 жыл бұрын
初めまして!Attention is All You Needの論文を理解したく、AIciaさんのTransformer(長い方)・Transformer(忙しい人向け)・Attention・RNN1 ・RNN2 の動画を見させていただきました。工学や数学に疎い私でも理解ができ、目から鱗です。本当にありがとうございます! 上記の動画や他の記事を読んでもどうしても理解できない部分があり、質問させていただきました。ご多忙とは思いますが、もしお時間があればご回答いただけると大変ありがたいです・・・! (1)5:30の図でのベクトルx1、ベクトルx2・・・はそれぞれembeddingにおいてベクトルに変換されたサブワードという理解であっているでしょうか?例えばThis is a penという入力を考えた時、x1がベクトル化されたThis, x2がベクトル化されたis, x3がベクトル化されたa・・・という理解で良いのでしょうか。 (2)上記が正しい場合、5:30の図でのq1, k1, v1は「ベクトル化されたThis」の次元を1/8にした上でベクトルの方向が変わったもの、q2, k2, v3は「ベクトル化されたis」の次元を1/8にした上でベクトルの方向が変わったものという理解で正しいでしょうか。 (3)教師データを与えて学習を進めたとき、式のどの部分が変化してどうなるのかがよく分かりません。W^Qi, W^Ki, W^Viは学習のたびに更新されるパラメータという理解であっていますか?つまり、学習のたびにもっとも類似するペアが変化していき、あるepochではq1とk3が最も類似して、次のepochではq1とk1が類似して・・・という流れでしょうか。そして、どのペアを類似させたときに最も損失関数の値が少ないかを求めているということでしょうか。 (4)encoderにおいて、multi-head attentionに全てXを入れる理由がどうしても腑に落ちません。結局、同じ単語由来のペア(q1とk1、q2とk2・・・)になるのではないでしょうか?というのも、decoderではKVが翻訳元(例えばThis is a pen)、Qが翻訳先の言語(例えば「これはペンです」)なので理解できました。つまり、「これはペンです」の「これ」をベクトル化(意味)にした上で、W^Qi, W^Ki, W^Viの値を変えていき、英語のthisに相当するk1と類似させたときに最も損失が少なくなるから学習ができるのだと理解しました。翻訳元の「this」と翻訳先の「これ」に対応関係があるというのを学習しているので、attentionの意義が確かにあるなと感じています。しかし、encoderでmulti-head attentionに全てXを入れる理由がどうしても腑に落ちません。もし上記(3)が正しい場合、パラメータWの値を学習のたびに変更することで、QやKが回転して、もっとも類似度が高いQとKの組み合わせに落ち着くのではないでしょうか?その場合、最初はq1と類似しているベクトルがk3からスタートしたとしても、学習が進んでいくと同じサブワード(This)から派生したq1とk1が類似するということにならないでしょうか。結局q1はk1, q2はk2, q3はk3のようにペアになっていくとしたら、そもそも回転させる意味があったのか疑問です。encoderではXをそのまま使うのと変わらないのではないかと思いました。 (5)逆に、別の単語から派生したkとqがペアになった状態に意味があるのでしょうか?つまり、学習の結果、q1(Thisをベクトル化して1/8にしたもの)とk4 (penをベクトル化して1/8にしたもの)の類似度が高い場合に学習が落ち着くこともあるのでしょうか。その場合、それは指示代名詞Thisの中身がpenであるといった、文の文法的・構造的な側面を学習しているということなのでしょうか。そうであれば、翻訳元の言語の構造を学習しているという点で、確かに同じインプットXからQ ,K,Vに変換する意味がわかります。あるいは、(5)のような主語・述語関係だったり、指示代名詞・参照先といった関係ではなく、他の単語との関係を見ることでその単語の意味をより深く取れるといった意味なのでしょうか?単語との照応関係をとっているだけなのか、それとも1つの単語の意味を他の単語との関係から深くとっているのかが疑問です。 (6)なぜそもそもQ ,K ,Vへの変換で次元を1/8にするのでしょうか?単語と単語の相関を見たいのであれば、1/8にしないで理想的なkとqのペアを見つけるほうが直感的に良い気がしました。
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
ご視聴コメントありがとうございます。そして、ご支援いただきましてありがとうございます!😍🎉🎉🎉 今後の活動の糧にさせていただきます!🔥🔥 以下、質問にお答えしますね! (1) x_i は何? これは、Multi-Head Attention への入力です。 0:10 頃から見られる図の、オレンジの部分に入力されている値です。 一番最初の Transformer block の入力であれば、単語埋め込み(に positional encoding が加算されたもの)です。 (2) q, k, v は? 概ねそのとおりです。 「ベクトル化された This」という部分だけ、(1) の返答の理解に修正いただければよいかと! (なお、Masked Multi-Head Attention は、q と k, v が別物です。 kzbin.info/www/bejne/a2G7p4CXjM2cirsm34s も合わせてご覧ください) (3) どの部分が変化する? 概ねその理解で問題ありません。 他には、FFN のパラメーターや、最初の単語埋め込みのパラメーター、最後の softmax の前の全結合層のパラメーターなども変化します。 この辺の感覚を理解するには、深層学習の学習についても触れた教材を探してみるとよいかと思います。 (ここまでのシリーズでは、学習について殆ど触れず、別のところにフォーカスしています。なので、別教材が良いかと思います。) (4) (5) これでいいの? 全体像の理解を勘違いされているように感じます。いくつか列挙すると - 同じものに注目させないために、パラメーター行列 W を用いて回転させています。 - encoder では、全体として、単語の意味をベクトルに変換することが試みられています。その際に、周囲の単語の情報も参考にしています。そのために、各 Transformer block で、自身の意味を解釈するためにどの単語に注目すべきかを選択し、その情報を用いているのです。 - 類似度は、どの単語に注目するかを選択するために利用されています。単語の類似度を測るために利用されているわけではありません。 - 学習は、全体に対して行われます。各ブロックの役割はこういうものだろうと解釈することも可能ですが、実際の学習は、全体を通して、最も損失が減る方向に動きます。必ずしも、部品単体の理解が、全体の機能の理解を(少なくとも直接的には)導きません。 一度頭を休ませて、再度勉強して見ても良いかもしれません。 原論文を読みに行くのもおすすめです。 (6) なぜ次元を減らす? 次元を減らすのは本質的ではありません。Multi-Head にすることが本質的です。 (実際、次元を減らさないアーキテクチャもあります。) Multi-Head であることによって、異なる作法の注目機構を用意することができます。 私の推測ですが、おそらく、次元を減らすことには次の2つの効果があります。 1. 計算量の削減 2. ボトルネックの導入 2のボトルネックについては、 kzbin.info/www/bejne/pl62l599m5igaLs この動画や、これ以降の CNN の流れを見ていただくと良いかもしれません。 実際どういう効果があるかについては、Transformer に対する研究を調べてくると出てくると思われます。 調べてみても良いかもしれません。 ======== 以上です! なにか疑問があれば、遠慮なくお教えください!
@user-kp1ig4pc5g
@user-kp1ig4pc5g 2 жыл бұрын
@@AIcia_Solid 本当にありがとうございます!動画の解説だけではなく、ご回答も非常に分かりやすくて目から鱗です。動画を見直し、返信を読んだ上で論文を再読してみましたが、以前よりも格段に理解が進みました。応援しておりますので、また他の動画などでご支援させていただければと思います!
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
それはとても良かったです!!!🤩🎉🎉 ぜひ、その理解を色んなところでご活用いただければと思います! 今後も良き動画を生成し続けられるよう頑張りますので、応援の程よろしくお願いします!🔥
@ふぁふぁふぁ-u9j
@ふぁふぁふぁ-u9j 2 жыл бұрын
いつも素晴らしい動画をありがとうございます!!すごく勉強になっています! リクエストなのですが、半教師あり学習のアイデアやladder networkの仕組みを解説して欲しいです!
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
ご視聴コメントありがとうございます!!!😍🎉 リクエスト受信しました! たしかに、半教師ありのあたりはやってもよいトピックですね👀 検討いたします!🎉
@nobiteru_stock
@nobiteru_stock 3 жыл бұрын
いつも勉強させていただいています! Multi-Head Attentionについてですが、行列を回転させてしまっても大丈夫なんですか?自然言語処理に当てはめると、単語ベクトルを回転させて内積を求めるということになると思うのですが(合ってますか??)、適切なもの同士で内積を取れているんでしょうか。
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
いつもご視聴ありがとうございます!😊 良い質問ですね! 回転させて内積をとるということで合っています。 テキトーに回したらアウトですが、むしら、どれがどれに注目すべきか?を判断するためにうまく回す方法を学習してるのだと思います。 いかがでしょう? 似た説明ですが、完全版もみてみるとなにかつかめるかもしれません! kzbin.info/www/bejne/a2G7p4CXjM2cirs
@nobiteru_stock
@nobiteru_stock 3 жыл бұрын
@@AIcia_Solid なるほど、、、そういうことですか!  結局似たベクトルの重みが残ればいいわけなので、回転させて似てないベクトルは重みが小さくなって考慮されなくなるのですね。 わざわざ返信いただきありがとうございます!!
@柿ピー-c6j
@柿ピー-c6j 3 жыл бұрын
いつも分かりやすい解説動画ありがとうございます! 機械学習で研究中のしがない理系大学生なのですが、なかなか難しい上に教材も少なくて行き詰まってしまっています。 アイシアさんは何を使って学習しましたか?よければ教えてください!
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
ご視聴コメントありがとうございます!🎉 私はまずは、松尾研のML講座やDL4USで基礎を学びました。(いまはもっとよいやつもあるかも👀) 最近は、のんびり週一くらいで有名論文を順番に精読して、そのモデルの意図や、なぜうまく行ったかを自分なりに数理的に解釈しています。 実装や実験はほとんどやってないエアプの状態です😇 何となくのんびり外観つかむにはこれで良いですが、研究で最前線で戦うなら、論文を読む量とコードを書く量は圧倒的に不足していると思います。 その代わり頭でめっちゃ深く考えてはいますが、それは数学の修行があるからやれていることなので、おすすめできるかはなぞです😇 理論と実戦、input と output のBALANCeなど、自分なりの方法を見つけてみるのが良いと思います!
@柿ピー-c6j
@柿ピー-c6j 3 жыл бұрын
@@AIcia_Solid ご丁寧にありがとうございます! 自分は数学科並みの数学への素養は無いので、論文を調べて実際にコードを動かしながら理解していくのが一番かもしれないですね 松尾研究室の講座についてもありがとうございました。さっそくやってみます!
@toom3057
@toom3057 2 жыл бұрын
Transformer関係ないですが文字書くのはどのようなペン、タブレットをを使っているのでしょうか。
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
これは、バーチャルキャストというソフトを使い、ペイントに手書きで書いています。黒板に書くのと似た感じですよ(^o^) virtualcast.jp/ よくわかんないと思いますが、VR 空間に来てみればわかると思います。ぜひ!😋
@toom3057
@toom3057 2 жыл бұрын
てっきりタブレットかと思っていました VRすごいですね かなりきれいに字が書けるものなのですね
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
すごいんです!(^o^) 字は最初は汚かったですが、慣れたらいけるようになります😋 学習です!🤩
@asreia
@asreia Жыл бұрын
ある単語(Q)がどこの単語ら(Kn)と関係(類似度(Pn))があるか調べ、その関係(Pn)についての解釈(Vnの総和)を与える? つまり、単語ごとに文章全体を通した意味を与える。(やっていることの概念としてはbi-LSTMと同じ?) 抽象的に考えると、ある要素を、その要素の集合に対しての解釈に変換する? 頭がこんがらがってしまう。。
@AIcia_Solid
@AIcia_Solid Жыл бұрын
ここまで来ましたね! お疲れ様です! だいたいそんな感じですよ!(^o^) 是非じっくりじんわり体になじませていきましょう🤤
@海鷲崎
@海鷲崎 2 жыл бұрын
Q,Kが類似度みたいなやつだと思っています。しかし、このベクトルは、1つの値がめっちゃ大きい値を取る場合もあると思っていて、その場合、その大きな値に引きづられて、類似度にならないと思っています。 これは、類似度となるように、q、kが学習されるから問題ないのでしょうか。それとも、どこかでq、kが正規化されるのでしょうか。
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
素敵な質問ですね!!! そのとおりなんです! 実は、その直前で Layer Normaliztion という正則化が入っておりまして、ベクトルの長さが1に揃えられています。 long 版でそこら編も含めて語っていますので、興味があれば是非どうぞ! → kzbin.info/www/bejne/a2G7p4CXjM2cirs
@海鷲崎
@海鷲崎 2 жыл бұрын
@@AIcia_Solid ありがとうございます大先生。 本も予約しました。楽しみにしています。
@AIcia_Solid
@AIcia_Solid 2 жыл бұрын
ありがとうございます!!! 届くのを楽しみにお待ち下さい!🎉 もし周りに好きそうな人がいたら、おすすめしていただけると嬉しいです!🥳
@kobachannel9877
@kobachannel9877 3 жыл бұрын
Decoderの入力がいまいちわかりません 学習時と推論時はなにを入力するんでしょうか?予測結果がでないとバッチ処理できないような気がします
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
ぜひここら辺をみていただけるとよきかと!(^o^) Transformer → kzbin.info/www/bejne/a2G7p4CXjM2cirs Attention → kzbin.info/www/bejne/mIHHqqh_mseLja8 RNN1 → kzbin.info/www/bejne/hHvHo4ysjsyUhq8 RNN2 → kzbin.info/www/bejne/f5SmeqhrfN1pq6M Transformer のフル版で分からなければ Attention、それで分からなければ RNN1, 2 をみていただくのが良いかと思います😎
@manbodama
@manbodama 3 жыл бұрын
ここのコメ欄いつもハイレベルやな。にわかには恐ろしい世界
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
M S K さんがその仲間入りするのも時間の問題ですよ😊
@impactcisse2571
@impactcisse2571 3 жыл бұрын
アイシアの声がおかしいです
@AIcia_Solid
@AIcia_Solid 3 жыл бұрын
そーですか??
The IMPOSSIBLE Puzzle..
00:55
Stokes Twins
Рет қаралды 171 МЛН
МЕНЯ УКУСИЛ ПАУК #shorts
00:23
Паша Осадчий
Рет қаралды 5 МЛН
Transformers, explained: Understand the model behind GPT, BERT, and T5
9:11
AI, Machine Learning, Deep Learning and Generative AI Explained
10:01
IBM Technology
Рет қаралды 567 М.
Transformer誕生物語|Attention is All You Need
1:27:41
数理の弾丸
Рет қаралды 2,6 М.
Positional Encoding in Transformer Neural Networks Explained
11:54
CodeEmporium
Рет қаралды 44 М.
【5分で分かる】vision transformerとは!?
5:10
スタビジ【誰でもAIデータサイエンス】byウマたん
Рет қаралды 4,2 М.