트랜스포머
배경
- 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 |
위 결과를 값 벡터들의 가중합하는 방식으로 계산
'CS > NLP' 카테고리의 다른 글
이론 3-4. 트랜스포머에 적용된 기술 (0) | 2023.11.13 |
---|---|
이론 3-3 셀프 어텐션 동작 원리 (0) | 2023.11.13 |
이론 3-1. 사전 학습된 모델 (0) | 2023.11.10 |
이론 2-3. 실습 - 어휘 집합 구축 (0) | 2023.11.10 |
이론 2-3. 워드피스(wordpiece) (0) | 2023.11.10 |