Transformer? attention?

SSamYang·2024년 9월 27일

영상참고링크
https://www.youtube.com/watch?v=6s69XY025MU&t=865s

어텐션
https://www.youtube.com/watch?v=3W8B7ma7oFo
https://www.youtube.com/watch?v=8E6-emm_QVg

Attention

정의

어텐션은 신경망이 입력 데이터의 특정 부분에 더 집중할 수 있도록 도와주는 메커니즘입니다. 전통적인 RNN이나 LSTM 같은 구조에서는 입력 시퀀스를 처리할 때 고정된 크기의 벡터로 요약해서 다음 단계로 전달하게 되는데, 이는 길이가 긴 시퀀스를 다룰 때 정보 손실을 초래할 수 있습니다.

어텐션 메커니즘은 모든 입력 시퀀스의 각 부분에 가중치를 부여하여, 중요도가 높은 부분에 더 집중하고 그렇지 않은 부분은 덜 반영하는 방식입니다. 이런 방식으로 중요한 정보에 더 집중함으로써, 긴 시퀀스에서도 중요한 요소를 놓치지 않고 학습할 수 있게 됩니다.

  1. 기본 성질:
    • 텐서의 정보 유지: 텐서는 웨이트(가중치) 매트릭스를 통과해도 기본적인 정보를 유지합니다.
    • 웨이티드 섬: 두 개 이상의 정보를 가중치 합으로 결합하는 방식입니다. 가중치가 큰 쪽의 정보를 더 많이 반영하며, 가중치의 합은 1이 됩니다.
    • 내적: 서로 비슷한 정보일수록 내적 값이 크고, 관련이 없을수록 내적 값이 작습니다.
  2. Attention의 과정:
    • 쿼리(Query)와 키(Key): 쿼리는 특정 정보를 가진 텐서이고, 키는 여러 개의 정보를 가진 텐서들입니다.
    • 내적 계산: 쿼리와 키 각각을 내적하여 쿼리와 각 키가 얼마나 유사한지 측정합니다. 이 유사도 값이 클수록 관련성이 큽니다.
    • 가중치 계산: 내적 결과를 바탕으로 익스포넨셜 함수로 값을 양수로 만들고, 가중치의 합이 1이 되도록 정규화합니다.
    • 웨이티드 섬: 쿼리와 유사한 키들에 대해 가중치를 적용하여 결합된 정보를 만듭니다. 최종적으로 쿼리와 관련된 정보들의 가중합을 얻습니다.
  3. 결과 해석:
    • Attention의 결과는 쿼리와 유사한 키들의 가중합입니다. 즉, 쿼리에 맞춰 관련된 키 정보들이 결합된 형태로 나타납니다.
    • 이 결과는 본질적으로 키 정보에 기반한 것이지만, 쿼리의 유사도를 바탕으로 정보가 선택되고 가중치가 적용되므로 쿼리의 영향도 반영됩니다.
  4. 주의점:
    • Attention 메커니즘은 기본적으로 단어의 유사도를 내적을 통해 계산하므로, 동음이의어와 같은 의미 구별이 어렵습니다. 이를 해결하기 위한 추가적인 방법이 필요합니다.

Self Attention

셀프 어텐션은 어텐션 메커니즘의 한 형태로, 하나의 시퀀스 내에서 각 단어(또는 각 부분)가 다른 모든 단어와의 관계를 학습하도록 설계된 구조입니다. 여기서 "셀프"라는 용어는 하나의 시퀀스 내에서 어텐션을 적용한다는 의미입니다. 즉, 시퀀스의 각 단어가 동일한 시퀀스 내의 다른 단어들과의 상호작용을 통해 자신에게 더 중요한 정보가 어떤 것인지 학습하게 됩니다.

셀프 어텐션의 주요 이점 중 하나는 병렬 처리가 가능하다는 점입니다. RNN과 같은 전통적인 방법은 순차적으로 입력을 처리해야 하지만, 셀프 어텐션은 모든 입력을 동시에 처리할 수 있습니다. 이는 트랜스포머(Transformer) 모델에서 매우 중요한 역할을 하며, BERT, GPT 등의 NLP 모델에서도 핵심적으로 사용됩니다.

  1. 어텐션의 한계:
    어텐션 메커니즘에서 쿼리와 키는 내적(점곱)으로 가중치를 계산하지만, 이 과정에서 순서 정보를 고려하지 못합니다. 예를 들어, 문장 "인도 음식점에 가던 중 주행 금지 표지판을 보았다"와 "주행 금지 표지판을 보았다 인도 음식점에 가던 중"은 단어 순서가 다르지만, 어텐션의 내적 계산은 순서 정보를 무시한 채 동일한 결과를 반환하게 됩니다.
  2. 포지셔널 인코딩:
    트랜스포머 모델은 포지셔널 인코딩을 사용하여 단어의 순서 정보를 입력 벡터에 더합니다. 첫 번째 단어에는 1번 포지셔널 벡터, 두 번째 단어에는 2번 포지셔널 벡터를 더하는 식으로, 위치에 따라 서로 다른 벡터를 더하여 순서 정보를 반영합니다. 이를 통해 트랜스포머는 문장의 순서를 고려할 수 있습니다.
  3. 맥락 정보:
    포지셔널 인코딩만으로는 단어의 의미가 문맥에 따라 달라지는 것을 반영할 수 없습니다. 예를 들어, "인도"가 "India"로 번역될지 "pedestrian"으로 번역될지 결정하려면 단어 주변의 맥락을 고려해야 합니다. 이를 위해 트랜스포머는 셀프 어텐션 메커니즘을 사용합니다.
  4. 셀프 어텐션:
    셀프 어텐션에서는 쿼리로 같은 정보를 사용합니다. 예를 들어, 한글 문장 "인도 음식점에 가던 중 주행 금지 표지판을 보았다"에서 쿼리로 사용된 단어는 로도 사용되어, 그 문장 내의 모든 단어 간 상관관계를 학습합니다. 이를 통해 트랜스포머는 각 단어의 맥락을 반영하여 가중치를 계산하고, 맥락에 따른 단어 의미를 반영합니다.
  5. 인코더-디코더 구조:
    인코더는 입력 문장의 정보를 셀프 어텐션을 통해 학습하고, 디코더는 인코더의 출력 정보를 사용하여 번역 결과를 생성합니다. 이때, 디코더는 단어 간의 맥락 정보를 반영해 번역을 수행합니다.
  6. 다음 주제: 마스킹과 학습 방식:

Transformer

  1. 트랜스포머 기본 구조:
    • 트랜스포머는 기본적으로 문장 번역에 사용됩니다. 입력된 문장의 정보를 인코더에서 받아서 디코더가 출력 문장을 순차적으로 생성합니다.
    • 디코더는 번역할 타겟 문장의 첫 번째 단어부터 차례대로 예측하는 방식으로 동작합니다.
  2. 학습 과정:
    • 디코더가 다음 단어를 예측할 때, n번째 단어를 예측하려면 n-1번째 단어까지의 정보만을 사용합니다.
    • 트랜스포머는 학습 시 입력된 시퀀스의 일부를 기반으로 병렬적으로 학습할 수 있습니다. 이를 위해 문장의 시작을 나타내는 시작 약속 단어와 문장의 끝을 나타내는 끝 약속 단어를 활용합니다.
  3. 마스킹(Masking):
    • 학습 과정에서 디코더는 미래 단어의 정보를 사용하지 않아야 합니다. 그러나 셀프 어텐션 메커니즘을 사용하면 문장의 모든 단어에 접근하게 됩니다.
    • 이를 방지하기 위해 마스킹이 필요합니다. 마스킹은 미래 단어 정보를 차단하는 가림막 역할을 하며, 극단적으로 작은 값(예: -9999999)을 부여하여 미래 단어에 대한 가중치가 거의 0이 되도록 만듭니다.
    • 이를 통해 디코더는 과거 단어들의 정보만을 활용하여 다음 단어를 예측할 수 있습니다.
  4. ==
    • 마스킹을 적용함으로써 학습 시와 실제 번역 시 정보 사용 방식이 동일해져, 학습된 모델이 번역 과정에서 예상대로 동작할 수 있게 됩니다.
profile
공부 기록장📕

0개의 댓글