CS/NLP

이론 3-2. 트랜스포머

초코chip 2023. 11. 11. 18:18

트랜스포머

배경

  • 2017년 구글이 제안한 시퀀스-투-시퀀스(sequence-to-sequence) 모델
  • 최근 NLP분야에서 트랜스포머 기반 언어 모델이 각광 받음(GPT, BERT)

 

시퀀스-투-시퀀스

  • 정의: 특정 속성을 지닌 시퀀스(source language)를 다른 속성의 시퀀스(target language)로 변환하는 작업
  • 예시)
    • 기계 번역: 한국어(소스 시퀀스) -> 영어(타겟 시퀀스)
    • 기온 데이터(소스 시퀀스) -> 태풍 발생 여부(타겟 시퀀스)

 

인코더와 디코더

시퀀스-투-시퀀스 과저 수행 모델은 인코더와 디코더 2개 파트로 구성

  • 인코딩: 소스 시퀀스 정보를 압축하여 디코더로 보내는 과정
  • 디코딩: 인코딩된 소스 시퀀스 정보를 받아 타깃 시퀀스를 생성하는 과정

 

모델 학습

  • 트랜스포머의 학습은 인코더와 디코더의 입력이 주어졌을 때, 정답에 해당하는 단어의 확률값을 높이는 방식으로 수행
  • 학습 중의 디코더 입력: 맞춰야할 단어 이전의 정답 타깃 시퀀스
  • 학습 후의 디코더 입력: 직전 디코더 출력 시퀀스

 

 

트랜스포머 블록

멀티헤드 어텐션 = 셀프 어텐션(self attention)

  • 시퀀스 요소 가운데 중요한 요소에 집중하여 성능을 끌어 올리는 기법.

 

vs 합성곱 신경망(CNN)

  • 합성곱 필터(convolution filter)를 통해 데이터를 훑음
  • 하지만, CNN은 합성곱 필터를 넘어서는 문맥은 읽기 어려움(지역적인 문맥)

 

vs순환 신경망(RNN)

  • 시퀀스 정보를 압축하는데 강점이 있는 구조
  • 하지만, 시퀀스 길이가 길어질수록 정보 압축에 문제 발생
  • 장기 기억이 힘듬( 마지막 시퀀스가 더 중요하게 판단됨 )

 

vs 어텐션

  • RNN의 단점을 보완하기 위해서 만들어짐
  • 소스 시퀀스 전체 단어와 타깃 시퀀스 단어 하나를 연결
  • 디코더 쪽 RNN에 어텐션을 추가하여, 소스 시퀀스 초반에 등장하거나 길이가 길어지더라도 품질이 떨어지는 것을 방지

 

셀프 어텐션 특징 및 장점

  • 자기 자신에게 수행하는 어텐션
  • 입력 시퀀스의 개별 단어와 전체 입력 시퀀스 사이를 연결
  • 예시) "어제 카페 갔었어 거기 사람 많더라" -> 해당 문장에서 '거기' 셀프 어텐션
    • 거기에 대응하는 것은 '카페'와 '갔었어'와 연관이 강한 것을 확인
    • -> '거기' 단어를 인코딩할 때 위 단어의 의미를 강조해서 반영

 

셀프 어텐션 계산 방법

  • 셀프 어텐션은 쿼리, 키, 값 3가지 요소가 서로 영향을 주고받으면서 문장의 의미를 계산
  • 각각의 쿼리 단어가 모든 키 단어와 얼마나 유기적인 관계를 맺는지 합이 1인 확률값으로 표현
쿼리
카페 어제 0.1
  카페 0.1
  갔었어 0.2
  거기 0.4
  사람 0.1
  많더라 0.1

 

위 결과를 값 벡터들의 가중합하는 방식으로 계산