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

Поделиться
HTML-код
  • Опубликовано: 8 июл 2021
  • 忙しくない人向けの完全版はこちら! → • 【深層学習】Transformer - Mu...
    Transformer とその基幹である Multi-Head Attention を、忙しい人向けに結構なスピード感で解説しました。10分以内部門(?)では最も深く(分かりやすく?)数式の解説をしたものだと思います!
    (この動画は、完全版の復習に使うのが丁度いいかもしれません)
    ※行列の転値は、「左上に小文字の t 」という文化で生きています。
    ☆お知らせ☆
    AIcia Solid Project 公式HPが出来ました!!!
    sites.google.com/view/aicia-o...
    HPでは私たちや動画コンテンツの紹介、板書データの公開などをしています。是非ご活用ください!!
    ▼関連動画
    Deep Learning の世界 • Deep Learning の世界
    自然言語処理シリーズ • 自然言語処理シリーズ
    ▼目次
    公開後追加予定!
    ▼参考文献
    Vaswani, Ashish, et al. "Attention is all you need." arXiv preprint arXiv:1706.03762 (2017).
    arxiv.org/abs/1706.03762
    原論文! やや数式は難解ですが、この動画を見終わった後なら読めるはず!
    当時の問題意識や、Transformerの売りどころがたくさん書いてあります。
    (個AI的には、論文タイトルは、内容の要約であるべきだよなーと思います。意見や感想じゃなくて。)
    【2019年版】自然言語処理の代表的なモデル・アルゴリズム時系列まとめ - Qiita qiita.com/LeftLetter/items/14...
    いろいろこれを参考にして動画を作っています
    ▼終わりに
    ご視聴ありがとうございました!
    面白かったら高評価、チャンネル登録お願いします。
    動画の質問、感想などは、コメント欄やTwitterにどうぞ!
    お仕事、コラボのご依頼は、TwitterのDMからお願い致します。
    動画生成:AIcia Solid (Twitter: / aicia_solid )
    動画編集:AIris Solid (妹) (Twitter: / airis_solid )
    =======
    Logo: TEICAさん ( / t_e_i_c_a )
    Model: 3d.nicovideo.jp/works/td44519
    Model by: W01fa さん ( / w01fa )
  • НаукаНаука

Комментарии • 38

  • @ランジャタイ
    @ランジャタイ Год назад +3

    QKVの具体例を図で描いてくれるのめっちゃ分かりやすかったです!

    • @AIcia_Solid
      @AIcia_Solid  Год назад

      ご視聴コメントありがとうございます!🎉
      あの図は私の推しポイントのひとつなのです!
      魅力が伝わったようで、とても嬉しいです😊

  • @nagi8905
    @nagi8905 3 года назад +6

    AIciaさんの動画を見つけていなかったら本気で卒業できなかったかもしれません。
    ありがとうございます。これからも頑張ってください!
    BERT楽しみにしています!

    • @AIcia_Solid
      @AIcia_Solid  3 года назад

      ご視聴コメントありがとうございます!!!🎉
      お役に立てたなら何よりです!🎉
      BERT もそろそろです。お楽しみに!

  • @kentoo_1
    @kentoo_1 3 года назад +3

    7分弱とは思えない密度の濃さ… アイシアたん、恐ろしい子!

    • @AIcia_Solid
      @AIcia_Solid  3 года назад

      でしょ! 忙しい人にはぜひこちらを布教ください!

  • @isudusurbsiavruab
    @isudusurbsiavruab 2 года назад +1

    質問(確認)です。
    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 года назад +1

      ご視聴コメントありがとうございます!!
      素敵な使い方をしていただいて嬉しいです😍🎉🎉🎉
      今後も役立つ動画を生成できるようがんばります!🔥
      K, V の要素数は揃っている必要がありますが、Q の要素数は、必ずしも一致する必要はないと思います。
      Encoder では常に一致しますが、 Decoder では、K, V は Encoder 出力全部を使いますが、Q はその時処理してる単語 (token) 数のみになると思います。
      もしなにか勘違いしてずれたことを言っていたら教えていただけると助かります!🙇‍♀️

  • @user-ez6bj1xf4b
    @user-ez6bj1xf4b 2 года назад +2

    いつも素晴らしい動画をありがとうございます!!すごく勉強になっています!
    リクエストなのですが、半教師あり学習のアイデアやladder networkの仕組みを解説して欲しいです!

    • @AIcia_Solid
      @AIcia_Solid  2 года назад +1

      ご視聴コメントありがとうございます!!!😍🎉
      リクエスト受信しました!
      たしかに、半教師ありのあたりはやってもよいトピックですね👀
      検討いたします!🎉

  • @user-kp1ig4pc5g
    @user-kp1ig4pc5g Год назад +9

    初めまして!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  Год назад +5

      ご視聴コメントありがとうございます。そして、ご支援いただきましてありがとうございます!😍🎉🎉🎉
      今後の活動の糧にさせていただきます!🔥🔥
      以下、質問にお答えしますね!
      (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 が別物です。
      ruclips.net/video/50XvMaWhiTY/видео.htmlm34s
      も合わせてご覧ください)
      (3) どの部分が変化する?
      概ねその理解で問題ありません。
      他には、FFN のパラメーターや、最初の単語埋め込みのパラメーター、最後の softmax の前の全結合層のパラメーターなども変化します。
      この辺の感覚を理解するには、深層学習の学習についても触れた教材を探してみるとよいかと思います。
      (ここまでのシリーズでは、学習について殆ど触れず、別のところにフォーカスしています。なので、別教材が良いかと思います。)
      (4) (5) これでいいの?
      全体像の理解を勘違いされているように感じます。いくつか列挙すると
      - 同じものに注目させないために、パラメーター行列 W を用いて回転させています。
      - encoder では、全体として、単語の意味をベクトルに変換することが試みられています。その際に、周囲の単語の情報も参考にしています。そのために、各 Transformer block で、自身の意味を解釈するためにどの単語に注目すべきかを選択し、その情報を用いているのです。
      - 類似度は、どの単語に注目するかを選択するために利用されています。単語の類似度を測るために利用されているわけではありません。
      - 学習は、全体に対して行われます。各ブロックの役割はこういうものだろうと解釈することも可能ですが、実際の学習は、全体を通して、最も損失が減る方向に動きます。必ずしも、部品単体の理解が、全体の機能の理解を(少なくとも直接的には)導きません。
      一度頭を休ませて、再度勉強して見ても良いかもしれません。
      原論文を読みに行くのもおすすめです。
      (6) なぜ次元を減らす?
      次元を減らすのは本質的ではありません。Multi-Head にすることが本質的です。
      (実際、次元を減らさないアーキテクチャもあります。)
      Multi-Head であることによって、異なる作法の注目機構を用意することができます。
      私の推測ですが、おそらく、次元を減らすことには次の2つの効果があります。
      1. 計算量の削減
      2. ボトルネックの導入
      2のボトルネックについては、
      ruclips.net/video/p-SflGf3m2Y/видео.html
      この動画や、これ以降の CNN の流れを見ていただくと良いかもしれません。
      実際どういう効果があるかについては、Transformer に対する研究を調べてくると出てくると思われます。
      調べてみても良いかもしれません。
      ========
      以上です!
      なにか疑問があれば、遠慮なくお教えください!

    • @user-kp1ig4pc5g
      @user-kp1ig4pc5g Год назад +1

      @@AIcia_Solid 本当にありがとうございます!動画の解説だけではなく、ご回答も非常に分かりやすくて目から鱗です。動画を見直し、返信を読んだ上で論文を再読してみましたが、以前よりも格段に理解が進みました。応援しておりますので、また他の動画などでご支援させていただければと思います!

    • @AIcia_Solid
      @AIcia_Solid  Год назад +1

      それはとても良かったです!!!🤩🎉🎉
      ぜひ、その理解を色んなところでご活用いただければと思います!
      今後も良き動画を生成し続けられるよう頑張りますので、応援の程よろしくお願いします!🔥

  • @user-hd9pc8gn1c
    @user-hd9pc8gn1c 3 года назад +3

    いつも分かりやすい解説動画ありがとうございます!
    機械学習で研究中のしがない理系大学生なのですが、なかなか難しい上に教材も少なくて行き詰まってしまっています。
    アイシアさんは何を使って学習しましたか?よければ教えてください!

    • @AIcia_Solid
      @AIcia_Solid  3 года назад +4

      ご視聴コメントありがとうございます!🎉
      私はまずは、松尾研のML講座やDL4USで基礎を学びました。(いまはもっとよいやつもあるかも👀)
      最近は、のんびり週一くらいで有名論文を順番に精読して、そのモデルの意図や、なぜうまく行ったかを自分なりに数理的に解釈しています。
      実装や実験はほとんどやってないエアプの状態です😇
      何となくのんびり外観つかむにはこれで良いですが、研究で最前線で戦うなら、論文を読む量とコードを書く量は圧倒的に不足していると思います。
      その代わり頭でめっちゃ深く考えてはいますが、それは数学の修行があるからやれていることなので、おすすめできるかはなぞです😇
      理論と実戦、input と output のBALANCeなど、自分なりの方法を見つけてみるのが良いと思います!

    • @user-hd9pc8gn1c
      @user-hd9pc8gn1c 3 года назад

      @@AIcia_Solid ご丁寧にありがとうございます!
      自分は数学科並みの数学への素養は無いので、論文を調べて実際にコードを動かしながら理解していくのが一番かもしれないですね
      松尾研究室の講座についてもありがとうございました。さっそくやってみます!

  • @nobiteru_stock
    @nobiteru_stock 3 года назад +4

    いつも勉強させていただいています!
    Multi-Head Attentionについてですが、行列を回転させてしまっても大丈夫なんですか?自然言語処理に当てはめると、単語ベクトルを回転させて内積を求めるということになると思うのですが(合ってますか??)、適切なもの同士で内積を取れているんでしょうか。

    • @AIcia_Solid
      @AIcia_Solid  3 года назад +1

      いつもご視聴ありがとうございます!😊
      良い質問ですね!
      回転させて内積をとるということで合っています。
      テキトーに回したらアウトですが、むしら、どれがどれに注目すべきか?を判断するためにうまく回す方法を学習してるのだと思います。
      いかがでしょう?
      似た説明ですが、完全版もみてみるとなにかつかめるかもしれません!
      ruclips.net/video/50XvMaWhiTY/видео.html

    • @nobiteru_stock
      @nobiteru_stock 3 года назад +1

      @@AIcia_Solid なるほど、、、そういうことですか! 
      結局似たベクトルの重みが残ればいいわけなので、回転させて似てないベクトルは重みが小さくなって考慮されなくなるのですね。
      わざわざ返信いただきありがとうございます!!

  • @asreia
    @asreia Год назад

    ある単語(Q)がどこの単語ら(Kn)と関係(類似度(Pn))があるか調べ、その関係(Pn)についての解釈(Vnの総和)を与える?
    つまり、単語ごとに文章全体を通した意味を与える。(やっていることの概念としてはbi-LSTMと同じ?)
    抽象的に考えると、ある要素を、その要素の集合に対しての解釈に変換する?
    頭がこんがらがってしまう。。

    • @AIcia_Solid
      @AIcia_Solid  Год назад +1

      ここまで来ましたね!
      お疲れ様です!
      だいたいそんな感じですよ!(^o^)
      是非じっくりじんわり体になじませていきましょう🤤

  • @toom3057
    @toom3057 2 года назад +1

    Transformer関係ないですが文字書くのはどのようなペン、タブレットをを使っているのでしょうか。

    • @AIcia_Solid
      @AIcia_Solid  2 года назад

      これは、バーチャルキャストというソフトを使い、ペイントに手書きで書いています。黒板に書くのと似た感じですよ(^o^)
      virtualcast.jp/
      よくわかんないと思いますが、VR 空間に来てみればわかると思います。ぜひ!😋

    • @toom3057
      @toom3057 2 года назад

      てっきりタブレットかと思っていました
      VRすごいですね
      かなりきれいに字が書けるものなのですね

    • @AIcia_Solid
      @AIcia_Solid  2 года назад

      すごいんです!(^o^)
      字は最初は汚かったですが、慣れたらいけるようになります😋
      学習です!🤩

  • @user-wo3yc6sk3x
    @user-wo3yc6sk3x 2 года назад

    Q,Kが類似度みたいなやつだと思っています。しかし、このベクトルは、1つの値がめっちゃ大きい値を取る場合もあると思っていて、その場合、その大きな値に引きづられて、類似度にならないと思っています。
    これは、類似度となるように、q、kが学習されるから問題ないのでしょうか。それとも、どこかでq、kが正規化されるのでしょうか。

    • @AIcia_Solid
      @AIcia_Solid  2 года назад +2

      素敵な質問ですね!!!
      そのとおりなんです!
      実は、その直前で Layer Normaliztion という正則化が入っておりまして、ベクトルの長さが1に揃えられています。
      long 版でそこら編も含めて語っていますので、興味があれば是非どうぞ!
      → ruclips.net/video/50XvMaWhiTY/видео.html

    • @user-wo3yc6sk3x
      @user-wo3yc6sk3x 2 года назад

      @@AIcia_Solid
      ありがとうございます大先生。
      本も予約しました。楽しみにしています。

    • @AIcia_Solid
      @AIcia_Solid  2 года назад +2

      ありがとうございます!!!
      届くのを楽しみにお待ち下さい!🎉
      もし周りに好きそうな人がいたら、おすすめしていただけると嬉しいです!🥳

  • @kobachannel9877
    @kobachannel9877 2 года назад

    Decoderの入力がいまいちわかりません
    学習時と推論時はなにを入力するんでしょうか?予測結果がでないとバッチ処理できないような気がします

    • @AIcia_Solid
      @AIcia_Solid  2 года назад +1

      ぜひここら辺をみていただけるとよきかと!(^o^)
      Transformer → ruclips.net/video/50XvMaWhiTY/видео.html
      Attention → ruclips.net/video/bPdyuIebXWM/видео.html
      RNN1 → ruclips.net/video/NJdrYvYgaPM/видео.html
      RNN2 → ruclips.net/video/IcCIu5Gx6uA/видео.html
      Transformer のフル版で分からなければ Attention、それで分からなければ RNN1, 2 をみていただくのが良いかと思います😎

  • @example.com.
    @example.com. 3 года назад +2

    0:09 親の顔より見た図

  • @manbodama
    @manbodama 3 года назад

    ここのコメ欄いつもハイレベルやな。にわかには恐ろしい世界

    • @AIcia_Solid
      @AIcia_Solid  3 года назад +1

      M S K さんがその仲間入りするのも時間の問題ですよ😊

  • @impactcisse2571
    @impactcisse2571 2 года назад

    アイシアの声がおかしいです