どうしても納得がいかないところがあります。入力されたトークンの埋め込みをEとすると、アテンションによって周りの単語の情報からdEが計算され、このEが E_new = E + dE と修正されることによって意味が詳しくなっていくという説明だったと思います。しかし、GPTの数式を追うと、アテンションはdEではなく、直接 E_new を計算しているように思えるのです。そして、このE_new の空間は、もとの埋め込み空間の意味の割り当てとは関連のない、ただ同じ次元の新しい空間なのだと思います。アテンションはdEを計算して意味を付加しているという考え方は非常にわかりやすいのですが、E + dE が計算されているという箇所が説明でも計算式でもわかりませんでした。うーん、みなさんどのようにお考えでしょうか。。
初心者すぎて、12:00あたりの説明がわからない……
1文を区切ることで、入力された文章自体を学習の材料に出来ちゃうというのは分かった。
でも、今回の例は形容詞は後に続く名詞を説明しているから大丈夫だけど、後置修飾の場合だったら、後ろのトークンが前に影響を及ぼせるようにしないといけないのでは?
後置修飾の情報は、どうやって反映されるんだ?
例えば後置修飾の場合、前の名詞が逆に後ろの形容詞の意味を深めることができます。
重要なのは、モデルは必ずしも我々人間と同じ方法で処理しているとは限りません。実際、形容詞と名詞の説明は想像上の例の一つで、実際の処理は人間にはずっと解釈しづらいものになっているでしょう。
例えば文章の意味が文末の「!」や「?」に焼き付けられるのではないかという示唆もあります。
投稿主も書いているように、人間は後ろ単語から前の単語に修飾してると考えるけど、transformerせよ他の機械学習モデルにせよ人間のように後ろから予測するようなことはしてません。その上で人間が見て自然に思えるような文章を出力してます。
人間の感覚に惑わされないように。
@@3Blue1BrownJapan
@user-st1lh8bg7f
お二人共返信有り難うございます!
例えば23:20で、後のトークンから前のトークンにも線が伸びて干渉しているような演出がなされているので、後ろから前にも影響を及ぼすのかと勘違いしてしまいました
演出のことは気にしないことにします!
@@端-d1yあ、そこは予測と学習の違いですね。
予測して文字列を生成する際には上の説明で正しいのですが、学習段階ではすでに後ろに来る文字が分かっているので、文脈に応じて単語ベクトルを調節しています。
説明不足でした
@@ワトソン-s1s
すみません、よく分かりません……
maskingというのは予測をするために行う行為で、一方で23:20の演出は事前の学習段階を示している、ということなのでしょうか?
長い間コンテキストを共有してきた家族は単語に対する結びつきの解釈がすでにパラメータとして調整されているので、少ない会話でコミュニケーションが取れるってことか
人間のコミュニケーションの話に応用するの楽しいよね
動けばいいだろの精神でネットに転がっているコードいじって使ってたけど、やっぱりGPT関連はえぐいぐらいむずかしいわ。
翻訳ありがとうございます!
レイヤーごとのattention計算を通して、徐々に各トークンの埋め込みが別トークンの情報を重み付きで吸収していく感じだよね
バニラのtransformerの計算ではattention計算は入力トークン数の2乗オーダーになるからLinear attentionを始めとして別の計算方法だったり、GPUのメモリ割り当て効率化が行われているね
論文名“Attention is all you need“はかっこよすぎだろ
"*** is all you need" っていうフレーズはこの後に発表される色々な論文で使われるくらい人気
@@caffe-nt はえー
ただし,学術論文ではタイトルだけで内容が分かるようなものが望ましいので,学者は「うーんこのタイトルでいいのか?」と思いがち.
Googleの広告会社としてのアイデンティティを抑えきれなかった末路
このタイトル知ってるかいないかでモグリかどうかは判別できる
素晴らしい!素晴らしすぎますって。
今後は強化学習の分野もやって欲しいです。
翻訳解説とてもありがたいですね。
AttentionとTransformerはLLMの革命児だよなあ
翻訳動画をありがとうございました!😀
翻訳動画をありがとうございました。😀
難しかったので、自分なりに動画の内容をまとめました。間違っている部分や補足あればコメントお願いします!
一言でいえば、Attentionは各単語(厳密にはトークン)間の関連度合いに応じて、それぞれのトークンからの意味的な更新を行列の掛け算を用いて実現する機構。ここで掛け算する行列は最初はランダムであり、学習を通してうまく機能するような数値を探すことになる。
もう少し具体的に解説すると、まず、モデルのパラメータの一部となるクエリ行列とキー行列を用いて、各トークン間の関連度合いを内積で計算する。
この関連度合いを0~1に正規化して表にしたものをAttentionパターンという。
その後、Attentionパターンで定義される関連度合いの重み比率に基づいて、モデルのパラメータの一部となるバリュー行列を使って、各トークンの埋め込みベクトルを更新する(= 各トークンに他のトークンからの意味、文脈を取り込む)。
クエリ行列、キー行列、バリュー行列は学習の初期段階においてはほぼランダムな行列だが、学習を繰り返して最適化していくことで、トークンに他のトークンからの意味を関連度合いに応じて取り込み、文脈を含んだトークンのベクトルが生成されるようになる。
ちなみに、ここまでの工程を別の96パターンのキー、クエリ、バリュー行列でも実施することでさらにモデルのパラメータを増やす(ちょうどNNを多層にして精度を上げたように)。
最終的には、もとの文章の一番最後のたった一つのトークンに全文脈が内包され、これをもとに次のトークンの存在確率ベクトルを算出することで次の単語を生成していく(前回の動画)。
このバリュー行列って無くてもアテンション機構としては成立しそうな気がしたけど、パラメータスペース作るために入れたら上手く行ったみたいなことなのかな
すごい
続編きた~~~!!!
どうしても納得がいかないところがあります。入力されたトークンの埋め込みをEとすると、アテンションによって周りの単語の情報からdEが計算され、このEが E_new = E + dE と修正されることによって意味が詳しくなっていくという説明だったと思います。しかし、GPTの数式を追うと、アテンションはdEではなく、直接 E_new を計算しているように思えるのです。そして、このE_new の空間は、もとの埋め込み空間の意味の割り当てとは関連のない、ただ同じ次元の新しい空間なのだと思います。アテンションはdEを計算して意味を付加しているという考え方は非常にわかりやすいのですが、E + dE が計算されているという箇所が説明でも計算式でもわかりませんでした。うーん、みなさんどのようにお考えでしょうか。。
すごいわかりやすかったです
LLMの文脈で言えば、transformerはWord2vecの次元が一つ上がったものという感じなんでしょうか
今回の内容難しくないか?俺がアホになっただけ?
こんだけ行列, しかもかなり高次元な行列を何十回も何万回も計算して単語を出すのに数秒くらいしかかかってないの化け物すぎる
やっぱGPUの並列計算(?)がつよいからなのか?
Wk,Wq,Wvがどうやってトレーニングされてるのか気になる👀
興味深い動画をありがとうございます。
2つのGPT解説動画を見て、neural networkを大量のデータ処理のために大規模化するためには、どうしても、重み係数を削減する必要があるのだなと思いました。
単純なneural networkでは一階層のnode間の接続は入力の次元Nの2乗になり重み係数もそうなりますよね。GPTの場合は約15,000次元の要素を2,000個処理するので、これをストレートに2乗すると600兆の重み係数が1階層だけでも必要になります。これをGPTのように何階層も重ねると数京のパラメタになってしまい、ベクタの要素を浮動小数点とすると数千テラバイトになりかねず、実装が難しいのだろうと思います。
それと、ふと、感じたのですが、GPT解説動画は、他の動画とちょっと違って、数学の美しさ(?)ではなく、如何に実装するかの話をしているので、ちょっと不思議な気がしました。
逆に言えば、人間はこれより複雑な会話ができるってことか。ある意味、ChatGPTのような明快で論理的な回答の方が、複雑な思考ではない気がする。
開始何秒かでびっくりしてAttentionの登場時期について指摘しようとしたら既に概要欄で訂正されていた。元の動画から間違っていたのかな。
Attention機構が「Attention is all you need」で初めて登場しましたってのは間違いですね。Attention層自体は2015年あたりにすでに登場しています
ご指摘ありがとうございます! まったくその通りですね。概要欄で訂正させていただきます。
10:29あたりの行列計算(内積)、この書き方だとK^T Qにすべきじゃない?そんなことない?
Multi-Head Attentionにする意味がわからない...
20:50で96個のquery, key, valueのセットを並列にニューラルネットワークで学習させてるようだけど、
6:20のqueryの質問を96パターン考えることで、多角的にその単語の意味を理解してるってことなのか?
でもどうやって96パターンの異なるqueryを生成するんだ?
ニューラルネットワークの初期値を確率的に変えることでqueryが分散するのか?
これどうやってその単語らが「関連がある」って学習するの?セルフアテンションなので入力は自分自身でラベルはないと思いましたが、そこがいまいち不明でした。人間がそれ関連してるよって言ってるのであれば理解できるのですが。。どなたか教えてください。
他の機械学習と同様の方法を取っていると思います。すなわち、順伝播から損失を求め、それを逆伝播した上で、勾配降下法を用いて損失を徐々に最小化していく方法です。
1+1=1と認識している
私には理解できない世界。
でも、GPTを知りたいと
思っていたので助かります
12:39 コンテキストウィンドウについて
ひたすら行列の計算をしてるね。
CUDAで囲ったNVIDIAのGPUが必要になるわけだ…
32bitcpuと同じ人かと思ったけど違った
寝落ちするぐらいには理解できない
www
いちこめれれれ!