Boostcamper's TIL (8)
3208 ワード
2021/08/12
学習の内容
Python Basic
LSTM
シーケンスモデルでは,入力データ長がいつ終わるか分からないという困難がある.Inputデータの長さが長ければ長いほど,過去の情報量は大きくなる.
これらの問題に対する解決策としては、使用する過去の情報を限定できる方法がある.
Markov model
RNN(Recurrent Neural Network)モデルは、現在の状態を計算する際に以前の状態を考慮し、過去の情報を用いたモデルとすることができる.Layerが長ければ長いほど,非常に多くの学習率と勾配演算が必要となり,消失,爆発などの問題を引き起こす.vanishing -> sigmoid
exploding -> relu
LSTM(Long Show Term Memory)モデルはForget,Input,Output Gate構造を設計し,RNNにおける問題を解決した.コアアイデアは,layerを通過すると,外に出ないprevious cell stateが通過し,適切に過去の情報を失うことである.RNNと同様に、以前のhidden state情報を取得することによって、どの情報を忘れ、入力、出力するかを計算します.
0からtまで、一度も外に出ないPrevious cell stateがすべての層を通過し、コンベアのように過去の情報を燃やした.
Transformer
一度にN個の単語を印刷できる.(
Encoder
)入力および出力シーケンスは、異なる数値であってもよいし、異なるドメインであってもよい.(ex.フランス語->英語)Transformerには3つの重要な概念がある.Self-Attention
ある単語x 1に対して出力を計算するときx 2,x 3,...同じように考える.つまり、他の単語との関係を見て、どの単語に関連するかを学ぶということです.
ある語について,別の語との関係を考える方法は,語ごとに1つのQuaries,Keys,Value(Q,K,V)ベクトルを生成することから始まる.「Thinking」という単語の注意を求めるときには、「Thinking」のQと自分を含めた他のすべての単語のKを内積してscoreを求める.次にscore normalizationをsqrt(keyのdimension)に分け、softmax演算を実行すると、どの単語が最も関係しているのか、自分で学ぶことができます.
scores = torch.matmul(Q, K.transpose()) / np.sqrt(key_dimension) # normalize
attention = F.softmax(scores)
z = attention.matmul(V)
attention RNN에서 발생하는 gradient vanishing, exploding의 단점을 어느정도 극복할 수 있다.
Reference
https://colah.github.io/posts/2015-08-Understanding-LSTMs/(LSTM運動原理)
https://jalammar.github.io/illustrated-transformer/ (Transformer)
の最後の部分
Reference
この問題について(Boostcamper's TIL (8)), 我々は、より多くの情報をここで見つけました https://velog.io/@choihj94/Boostcampers-TIL-8テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol