벡터가 선형변환이 되고 있는 것
weight를 곱하는 것은 곧 선형변환입니다. 벡터를 가만두지 않고 이동시키는 것 선형적인 변환을 통해 이동하는 것이 선형변환이고 어디다가 놓을지를 학습시키는 것입니다.
n번째 시점에서 어떤 단어를 볼지 보고서 weighted sum 그 vector를 context vector로 삼고 y햇을 뽑아서 softmax를 하는 것이 바로 seq-to-seq입니다.
기존에는 C1=C2=C3=C4같이 H3로 쓴 것입니다. 하지만 불균형적으로 담겨있습니다. 어떤 단어를 많이 담는지는 모릅니다. 그건 ai가 하는 것입니다.
RNN -> RNN + attention -> Transformer
RNN+ attention의 문제점
멀수록 잊혀집니다. 그리고 갈수록 흐려지는 정보에 attention 합니다. 차곡차곡 담는 것은 좋지만 h1 h2 h3 h4의 단어들을 담아가면서 가는데 예를들면 쓰다 라는 것을 이해하려면 돈을, 모자를, 맛이 이런 것 같이 멀리 있는 앞 단어를 봐야 알 수 있는데 h7에는 x1이 흐려진 채로 들어가있으니 x7의 참의미를 담지 못함
심지어 영어라면 뒤를 봐야 하는데 뒤 단어들은 아예 담지도 않음
거리의 영향을 받게끔 할 수 밖에 없기에 좋은 아이디어를 가지고 온다고 하더라도 좋지 않은 것입니다.
그래서 transformer는 self-attention을 가지고 왔고 RNN의 고질적인 구조를 버립니다.
Self-attention
C4 = <S4,h1>h1+ <s4,h2>h2 + <s4,h3>h3
h2 = <h2,h1> h1 + <h2,h2>h2 + <h2,h3>h3
S4 = <S4,S1>S1 + <S4,S2>S2 + <S4,S3>S3 + S4,S4>S4
이렇게 weighted sum을 합니다. 이렇게 하니 거리에 대한 문제가 없어집니다. 그냥 내적을 때려버리면 거리의 영향을 받지 않습니다. 그게 가능해지게끔 attention을 self로도 사용하도록 문장 전체를 잘 보고 벡터로 바꿀지를 attention을 통해서 알아내자는 것입니다.
RNN은 이전의 계산이 되어야 다음 구조로 넘어갈 수 잇었는데 이제 각자 그냥 통째로 넣어버릴 수 있기에 GPU. 병렬 처리가 가능하기에 정말 빠르게 가능한 것입니다.
self-attention을 통해 RNN을 버릴 수 있었다는 것,
Decoder 쪽에서는 해결이 안되어서 selfattention 해결
'IT 프로그래밍 > AI' 카테고리의 다른 글
워드임베딩 , 트랜스포머 (0) | 2025.05.19 |
---|---|
[VLM] (0) | 2025.05.16 |
다중분류 이진분류 요약 (0) | 2025.03.30 |
인공신경망은 MLE 기계 (0) | 2025.03.30 |
[Loss function] MSE vs log-likelihood (0) | 2025.03.30 |