読むだけでちょっと賢くなる、架空のまとめスレ

【疑問】Transformer の前の RNN って、何がダメで置きかえられたん?【AI】

23レスカテゴリ:AI・機械学習
1: 名無しさん

Transformer の説明で「RNN と違って並列に計算できる」ってよく出てくる
そもそも RNN って何をしてたん

2: 名無しさん

>>1
RNN(再帰型ニューラルネット)は、文を1単語ずつ順に読んで、それまでの内容を1本のベクトル(隠れ状態) にまとめながら進む

は 番目の単語のベクトル、・・ は全部の時刻で共通のパラメータ。 は値を 〜 に押しこむ関数

3: 名無しさん

>>2
前の に新しい単語を混ぜて、また にする、のくり返しか

4: 名無しさん

>>3
そう。いちばん小さい例で、 も も1個の数、、、、 とする
入力が (最初だけ1)なら

5: 名無しさん

>>4
最初の1の情報が、1歩ごとにだいたい半分になってるな

6: 名無しさん

>>5
この例では、 を掛けるたびに小さくなる。何十単語も前の情報は、ほとんど残らない
学習でも同じことが起きる。何十歩も前の単語にまで誤差を伝えるとき、微分を何十回も掛けることになる

7: 名無しさん

>>6
掛け算が続くと小さくなる、ってやつか

8: 名無しさん

>>7
そう。 を で微分すると で、 は1以下。この例なら1歩あたり0.5以下やから、20歩さかのぼると

遠い単語の影響が学習に届かない(勾配消失)。逆に が大きいと、掛け算で爆発することもある

9: 名無しさん

それをどうにかしたのが LSTM?

10: 名無しさん

>>9
LSTM(Hochreiter と Schmidhuber、1997年)は、 とは別に「記憶セル」を持って、ゲートという0〜1の係数で「どれだけ書きこむか」「どれだけ出すか」を学習する
記憶セルは足し算で次の時刻に渡るから、掛け算で細っていかない道ができる。あとから「どれだけ忘れるか」を決めるゲートも加えられた

11: 名無しさん

>>10
それでも Transformer に置きかえられたんやろ

12: 名無しさん

>>11
いちばん大きいのは計算の順番。 を出すには が要るから、100単語の文なら100回、順番に計算するしかない
Transformer の Attention(Vaswani ら、2017年)は、全部の単語の組を一度に計算できる。GPU で並列に回せるから、大量のデータで学習しやすい

13: 名無しさん

>>12
遠い単語の話はどうなったん

14: 名無しさん

>>13
Attention では、どの2単語の間も1回の計算で直接つながる。RNN みたいに、間の単語を全部通って情報を運ばなくていい

15: 名無しさん

>>14
じゃあ RNN にいいところはないん

16: 名無しさん

>>15
ある。1単語進むごとの計算量が、それまでの長さに関係なく一定
Transformer は、新しい単語を1個出すたびに、それまでの全部の単語との Attention を計算するから、長くなるほど1歩が重くなる

17: 名無しさん

>>16
最近、RNN みたいな考え方がまた出てきてるって聞いた

18: 名無しさん

>>17
状態を1本にまとめて順に更新する形のモデル(状態空間モデルなど)が研究されてる。Mamba(Gu と Dao、2023年)がよく知られてる
学習のときは並列に計算できる工夫をしつつ、文を作るときは RNN のように一定の計算で進める、というのがねらい

19: 名無しさん

RNN のパラメータの数は、文の長さで増えるん?

20: 名無しさん

>>19
増えない。全部の時刻で同じ ・・ を使い回してるから
が128次元、 が64次元なら

文が10単語でも1000単語でも、この数は同じ

21: 名無しさん

>>20
同じパラメータを使い回してたら、学習のときの微分はどうなるん

22: 名無しさん

>>21
時刻ごとに出した の微分を全部足す。時間の方向に展開した長いネットに誤差逆伝播法をかけるのと同じで、通時的誤差逆伝播(BPTT)と呼ぶ

23: 名無しさん

順に読むから並列にできん、遠い情報は掛け算で細る。それを LSTM がゆるめて、Transformer は直接つないだ、やな

管理人のひとこと