본문 바로가기

미분류

양방향 LSTM, Transformer 조금

어쨌거나 Attention is all you need가 등장하기 전까지는,

자연어 처리에서는 LSTM을 썼던 것이다.

특성 상 순서가 중요하기 때문에.

 

양방향 LSTM은 어떤 의미를 지닐까?

개인적 추측으로는 일방향 순서를 양방향으로 봄으로써,

신경망이 토큰 간 관계를 더 잘 파악할 수 있게끔 했다는 점이 아닐까 싶다.

 

책에서는 바다나우 어텐션의 구현이 중요한 듯 하다.

transformer에서는 scaled dot product attention을 활용하고 있다.

바다나우 어텐션은 신경망을 활용하는데, 어텐션에서 신경망을 활용해볼 기회여서 있지 않았나... 하는 단순한 추측.

생각해보니 transformer의 셀프 어텐션 부분에서도 가중치를 활용했는데.

모든 어텐션이 가중치를 활용하는건가? dot product attention에서 놓친 부분이 있었던건가?

 

Transformer은 이전에 positional encoding 쪽을 좀 봐둔 적이 있다.

시각화 했을 때, 앞 부분은 값이 크게 물결치면서 뒷 부분에서는 평이해진다.

다른 모델에서는 같은 토큰이라면 같은 벡터값을 갖지만,

positional embedding으로 인해 같은 값이더라도 transformer에서는 위치에 따라 다른 값을 갖는다.

positional embedding은 sin함수와 cos함수를 활용해서 만든다.

 

positional encoding은 뒤로 갈수록 값이 희미해지는데,

그럼 긴 문장에 대해서 효과가 떨어지는 것 아닐까?

아니면... 어차피 셀프 어텐션을 통해 단어 간 관계를 파악하므로 상관 없나?

그럴거면 굳이 포지셔닝을 안해도 되는 것 아닌가?

영어는 주요 문장이 앞에 나와서 그럴까?

 

아무튼... 확실히 모델링 부분에서 스스로가 아쉬운 부분이 많다고 느꼈다.

HuggingFace를 활용하기 때문에 그냥 전처리해서 학습시키면 되지 않나, 했는데

매번 벽을 느끼는 기분이다. 정말 다행이다.

이런 벽을 느끼지 않았더라면 나중에 크게 후회했을지도 모르는 노릇이지.

'미분류' 카테고리의 다른 글

hugginface & pytorch 함께 어떻게 쓸까  (0) 2024.04.03
서브워드 토크나이저 vs. 워드 임베딩  (0) 2024.04.02
바다나우 어텐션  (0) 2024.03.29
어텐션 메커니즘 대충  (0) 2024.03.27
encoder-decoder (seq2seq)  (0) 2024.03.26