LLM을 활용한 실전 AI 애플리케이션 개발
- 허정준
🔬트랜스포머 아키텍처란
attention is all you need 논문에서 처음 등장
RNN 모델 아키텍처보다
- 성능이 우수하고 (기울기 사라짐 문제 해결)
- 학습 속도도 빠른
"트랜스포머" 아키텍처
RNN 모델 아키텍처
- 이전 토큰의 출력을 다음 입력에 사용하기 때문에 병렬 처리 불가
- 입력이 길어지면 초기 입력 토큰의 의미가 점차 희석되는 기울기 사라짐(그레디언트 소실) 문제 발생 (+그래디언트 증폭)
트랜스포머 아키텍처
- "셀프 어텐션" 연산 도입
- 병렬 연산 가능
- 입력이 길어져도 성능이 떨어지지 않음.
언어를 이해하는 인코더 + 언어를 생성하는 디코더
인코더와 디코더의 초기 부분 : 임베딩을 통한 입력의 숫자 변환
다음으로 위치 인코딩 층에서 문장의 위치 정보 더함
인코더 : 층 정규화, 멀티 헤드 어텐션, 피드 포워드 과정을 거쳐 결과를 디코더로 전달
디코더 : 층 정규화, 멀티 헤드 어텐션, 크로스 어텐션 과정, 피드 포워드 등 을 거쳐 결과 출력
🔬텍스트를 임베딩으로 변환하기
입력 텍스트
<토큰화>
적절한 단위로 잘리고 숫자형 아이디가 부여된 토큰
<토큰 임베딩 층>
토큰 임베딩
<위치 인코딩 층>
최종 모델 입력 임베딩
< 토큰화 >
: 텍스트를 적절한 단위로 나누어 숫자 아이디를 부여하는 것
큰 단위 기준 토큰화
장 : 텍스트 의미 유지 굿단 : OOV 문제 발생 /사전이 커짐
작은 단위 기준 토큰화
장 : OOV 문제 발생하지 않음 /사전이 작음
단 : 텍스트 의미가 잘 유지되지 않음
서브워드 토큰화
: 데이터 등장 빈도에 따라 토큰화 단위 조정
- 많이 나오는 것은 큰 단위
- 적게 나오는 것은 작은 단위
< 토큰 임베딩 >
데이터를 "의미"를 담은 2개 이상의 숫자 집합인 "벡터"로 변환하는 것
토큰 사이의 관계를 알 수 있도록 해줌
(토큰 임베딩을 한 벡터가 의미를 바로 가지는 것이 아님. 모델 훈련이 진행된 후에 의미를 가지게 됨. 임베딩 층도 같이 학습!)
< 위치 인코딩 >
트랜스포머 아키텍처는 RNN과 달리 입력을 순차적으로 처리하지 않고 병렬적으로 처리
=> 때문에 문장에서 해당 토큰의 위치 정보가 사라짐.
=> 텍스트에서 순서는 몹시 중요하므로 위치 정보를 따로 추가해줘야 함.
- 절대적 위치 인코딩
- 상대적 위치 인코딩
'🤖 AI > AI' 카테고리의 다른 글
🔬트랜스포머 모델을 다루기 위한 허깅페이스 트랜스포머 라이브러리 2 (0) | 2025.01.07 |
---|---|
🔬트랜스포머 모델을 다루기 위한 허깅페이스 트랜스포머 라이브러리 1 (0) | 2025.01.06 |
Prompt caching : input_cached_tokens 🪙 (0) | 2025.01.03 |
🥶 OpenAI_endpoints_chat 매개변수 탐구 (1) | 2025.01.03 |
😄 Hugging Face 탐색 (0) | 2024.10.25 |