본문 바로가기
  • 컴공생의 공부 일기
  • 공부보단 일기에 가까운 것 같은
  • 블로그
🤖 AI/AI

🔬LLM의 중추, 트랜스포머 아키텍처 살펴보기 1

by 정람지 2025. 1. 6.

LLM을 활용한 실전 AI 애플리케이션 개발

- 허정준


🔬트랜스포머 아키텍처란 

attention is all you need 논문에서 처음 등장

RNN 모델 아키텍처보다

- 성능이 우수하고 (기울기 사라짐 문제 해결)

- 학습 속도도 빠른

"트랜스포머" 아키텍처

 

RNN 모델 아키텍처

- 이전 토큰의 출력을 다음 입력에 사용하기 때문에 병렬 처리 불가

- 입력이 길어지면 초기 입력 토큰의 의미가 점차 희석되는 기울기 사라짐(그레디언트 소실) 문제 발생 (+그래디언트 증폭)

 

트랜스포머 아키텍처

- "셀프 어텐션" 연산 도입

- 병렬 연산 가능

- 입력이 길어져도 성능이 떨어지지 않음.

언어를 이해하는 인코더 + 언어를 생성하는 디코더

인코더와 디코더의 초기 부분 : 임베딩을 통한 입력의 숫자 변환

다음으로 위치 인코딩 층에서 문장의 위치 정보 더함

인코더 : 층 정규화, 멀티 헤드 어텐션, 피드 포워드 과정을 거쳐 결과를 디코더로 전달

디코더 : 층 정규화, 멀티 헤드 어텐션, 크로스 어텐션 과정, 피드 포워드 등 을 거쳐 결과 출력


🔬텍스트를 임베딩으로 변환하기

입력 텍스트

<토큰화>

적절한 단위로 잘리고 숫자형 아이디가 부여된 토큰

<토큰 임베딩 층>

토큰 임베딩

<위치 인코딩 층>

최종 모델 입력 임베딩

 

< 토큰화 >

: 텍스트를 적절한 단위로 나누어 숫자 아이디를 부여하는 것

 

큰 단위 기준 토큰화 

장 : 텍스트 의미 유지 굿단 : OOV 문제 발생 /사전이 커짐

 

작은 단위 기준 토큰화

장 : OOV 문제 발생하지 않음  /사전이 작음

단 : 텍스트 의미가 잘 유지되지 않음

 

서브워드 토큰화
: 데이터 등장 빈도에 따라 토큰화 단위 조정 

- 많이 나오는 것은 큰 단위

- 적게 나오는 것은 작은 단위

 

 

< 토큰 임베딩 >

데이터를 "의미"를 담은 2개 이상의 숫자 집합인 "벡터"로 변환하는 것

토큰 사이의 관계를 알 수 있도록 해줌

(토큰 임베딩을 한 벡터가 의미를 바로 가지는 것이 아님. 모델 훈련이 진행된 후에 의미를 가지게 됨. 임베딩 층도 같이 학습!)

 

< 위치 인코딩 >

트랜스포머 아키텍처는 RNN과 달리 입력을 순차적으로 처리하지 않고 병렬적으로 처리

=> 때문에 문장에서 해당 토큰의 위치 정보가 사라짐.

=> 텍스트에서 순서는 몹시 중요하므로 위치 정보를 따로 추가해줘야 함.

 

- 절대적 위치 인코딩

- 상대적 위치 인코딩