[Machine Learning] 트랜스포머(Transformer) - 트랜스포머의 이해
Transformer
Transformer의 구조
임베딩 레이어
- 텍스트 데이터를 수치로 표현
- 입력 : 일련의 문장
- 토큰화
- byte pair encoding (영어-독일어) : 37K 토큰
- word-peice vocabulary (영어-불어) : 32K 토큰
- 임베딩 행렬
- 토큰수 x 임베딩 벡터 크기로 트랜스포머에서는 이미 학습된 임베딩 행렬 사용 (필요에 따라 별도 구축 가능)
- 기본적인 역할 : 임베딩 벡터 간의 거리로 토큰의 유사도를 측정할 수 있음
- 출력 : 입력 문장의 토큰수 x 임베딩 벡터 크기
위치 인코딩
- 토큰 임베딩 벡터별로 위치를 부여
- 입력 : 임베딩된 벡터
- 위치 인코딩 알고리즘
- 임베딩된 벡터에 위치를 부여하는 방식은 여러가지가 있으나 임베딩된 벡터 원소에 영향을 최소화해야 함
- 같은 위치의 토큰은 같은 위치 값을 가져야 함 → 주기함수
- 위치 인코딩의 크기 == 임베딩된 벡터의 크기 → 주기함수의 중복성 배제
- 출력 : 임베딩 벡터 + 위치 인코딩 벡터
- 덧셈을 하는 이유?
- 계산상의 이유 때문
- 덧셈을 하는 이유?
어텐션 메커니즘
- 은닉 상태를 한 번 더 가공하는 접근
- 소수의 FC 층
- Dot-product 어텐션
- 쿼리 - 키 - 가치로 구성
- 키 - 가치는 딕셔너리로 이해 가능
- 쿼리 - 키의 유사도는 dot-product로
- dot-product 값에 가치를 곱하여 어텐션 모수 산출
- 바이나우 어텐션
- 쿼리의 시점이 t-1
트랜스포머의 구조 - 인코더
무엇을 학습하는가?
(셀프) 어텐션 헤드
행렬곱
어텐션 값
쿼리, 키, 가치
쿼리, 키의 의미
가치의 의미
멀티 헤드 (셀프) 어텐션
FC층의 역할
트랜스포머의 의미
- 언어모델에서의 문맥적 관계를 학습
- 입력된 값에 대해서도 학습 → 셀프 어텐션
- 어디까지나 확률적 의미에서의 문맥적 관계
- 장기 의존성 문제를 계산으로 해결
- 계산적인 측면에서의 트랜스포머
- 어텐션 헤드 → 계산적으로 독립 → 매우 쉽게 병렬처리 가능
- 어텐션의 계산 → 모두 행렬곱으로…
- Multi-GPU 환경, Multi-GPU 클러스터 환경에서의 킬러 앱
- 현대 계산자원의 특성을 십분 고려한 알고리즘의 개발 → 거대언어 모델의 기반
댓글남기기