Table of Contents
728x90
자연어 문장을 Transformer 모델에 입력하려면 먼저 문장을 숫자로 변환하는 과정이 필요합니다. 이 과정을 토크나이저(tokenizer)가 수행합니다.
Transformer 모델은 텍스트 데이터를 처리할 수 없고, 숫자로 이루어진 벡터만 처리할 수 있기 때문에, 텍스트 문장을 숫자로 변환하는 과정이 필수적입니다. 이 변환 과정은 일반적으로 다음 단계를 따릅니다:
1. 토큰화(Tokenization)
문장을 토큰(token)이라는 작은 단위로 나눕니다. 토큰은 단어 단위일 수도 있고, 서브워드(subword) 단위일 수도 있습니다. 예를 들어:
- 문장: "안녕하세요 저는 ChatGPT입니다"
- 토큰화 결과 (서브워드 기준):
["안녕하세요", "저", "는", "chat", "gp", "t", "입니다"]
2. 숫자로 변환(인코딩)
토큰화된 단어들을 각각 고유한 숫자로 변환합니다. 이를 정수 인코딩이라고 합니다. 모델은 숫자 형태로 된 입력만 처리할 수 있기 때문에, 각 토큰에 고유한 숫자를 할당합니다.
- 예시:
["안녕하세요", "저", "는", "chat", "gp", "t", "입니다"]
→[101, 102, 103, 200, 201, 202, 104]
3. 패딩(Padding)
모든 입력 문장의 길이가 동일하지 않기 때문에, 가장 긴 문장의 길이에 맞춰서 부족한 부분을 채웁니다. 이를 패딩이라고 하며, 보통 0으로 채웁니다.
4. Transformer 모델에 입력
이제 변환된 숫자 리스트를 Transformer 모델에 입력할 수 있습니다. 모델은 이 숫자 벡터를 임베딩 레이어를 통해 벡터로 변환한 후, Attention 메커니즘 등을 적용해 처리하게 됩니다.
예시로, Hugging Face의 transformers
라이브러리를 사용해 문장을 처리하는 방법을 보여드리겠습니다.
from transformers import BertTokenizer
# BERT 모델의 토크나이저 로드
tokenizer = BertTokenizer.from_pretrained('bert-base-multilingual-cased')
# 문장 입력
sentence = "안녕하세요 저는 ChatGPT입니다"
# 토큰화 및 정수 인코딩
tokens = tokenizer.encode(sentence, add_special_tokens=True)
# 결과 확인
print("토큰화된 결과:", tokenizer.convert_ids_to_tokens(tokens))
print("정수 인코딩된 결과:", tokens)
출력 예시:
토큰화된 결과: ['[CLS]', '안', '##녕', '##하세요', '저', '##는', 'chat', 'gp', '##t', '##입', '##니다', '[SEP]']
정수 인코딩된 결과: [101, 9521, 11927, 11102, 11096, 35806, 13856, 10502, 28933, 11102, 12092, 102]
- '[CLS]': 문장의 시작을 나타내는 특별한 토큰입니다.
- '[SEP]': 문장의 끝을 나타내는 특별한 토큰입니다.
- "안녕하세요"는 서브워드 단위로 분리되어 "안", "##녕", "##하세요"로 쪼개졌습니다.
- "저는"도 "저", "##는"으로 쪼개졌습니다.
- "ChatGPT"는 그대로 분리되지 않고 서브워드 단위로 처리됩니다.
이렇게 토큰화된 결과를 숫자로 변환한 후 Transformer 모델에 입력하면 됩니다.
전체 과정 요약:
- 문장을 토큰화하여 서브워드 단위로 나눕니다.
- 각 토큰을 고유한 숫자로 인코딩합니다.
- 필요하다면 패딩을 추가합니다.
- 모델에 입력하여 학습 또는 추론을 진행합니다.
이 과정을 통해 문장을 Transformer 모델이 이해할 수 있는 형태로 변환하게 됩니다.
'DeepLearning > NLP' 카테고리의 다른 글
[LLM] 모델의 핵심요소, 가중치weight (0) | 2024.09.16 |
---|---|
[LLM] Transformer 모델에서 선형 변환(linear transformation)을 사용하는 이유 (1) | 2024.09.16 |
[LLM] Transformers 모델 구조 Attention Is All You Need (0) | 2024.09.16 |
float16과 bfloat16 (0) | 2024.09.10 |
LoRA 외에도 PEFT(Parameterized Efficient Fine-Tuning) 기술로 사용할 수 있는 여러 가지 방법 (0) | 2024.09.09 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 해시
- 오블완
- LLM
- nlp
- Numpy
- t5
- #패스트캠퍼스 #패스트캠퍼스AI부트캠프 #업스테이지패스트캠퍼스 #UpstageAILab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
- 손실함수
- 파이썬
- speaking
- PEFT
- Python
- classification
- Array
- RAG
- English
- 티스토리챌린지
- recursion #재귀 #자료구조 # 알고리즘
- LIST
- Transformer
- clustering
- 코딩테스트
- Lora
- 리스트
- Hugging Face
- cnn
- Github
- git
- #패스트캠퍼스 #UpstageAILab #Upstage #부트캠프 #AI #데이터분석 #데이터사이언스 #무료교육 #국비지원 #국비지원취업 #데이터분석취업 등
- #패스트캠퍼스 #패스트캠퍼스ai부트캠프 #업스테이지패스트캠퍼스 #upstageailab#국비지원 #패스트캠퍼스업스테이지에이아이랩#패스트캠퍼스업스테이지부트캠프
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
글 보관함