시작하며
오늘은 LLM과 Token, Embedding, Transformer 등 AI에서 중요한 개념들에 대해 많이 배웠다.
LLM
LLM 이란
- Large Language Model(대규모 언어 모델)
- 방대한 텍스트 데이터를 학습해 인간의 언어를 이해하고 생성하는 인공지능 모델
- Transformer 아키텍처를 기반으로 하며, 다음 단어를 예측하는 방식으로 작동
Language Model
Language Model은 Corpus의 분포(패턴)를 학습
- Corpus
- 특정 집단 내에서 사용한 단어들을 모아서 정리해둔 것
- 언어모델이 학습하는 단위
- 언어 모델은 Corpus의 말투까지 학습
Domain Shift
- 학습한 모델가 실제 사용 데이터의 도메인이 다른 것
- 도메인 시프트가 크면 언어모델 성능이 크게 떨어짐
Preprocessing(전처리)
언어 모델이 학습하기 좋은 형태로 데이터 가공
- Stopword 제거 : 실질적인 의미가 적은 단어 제거
- Deduplication(중복 제거) : 외우기 쉬운 데이터 구조를 줄여 일반화를 도움
- PII Filtering(개인정보 제거) : 안전/법적 리스크 낮춤
- 저품질/스팸 제거 : 출력 품질에 직접적인 영향을 줌
Split
- 데이터 셋 분할 : Train Set과 Test Set으로 분할
- 모델의 단순 암기(Memorization) 방지 및 실제 실력인 일반화 능력(Generalization) 검증
Leakage
- 데이터 누수(Data Leakage) : Train Set에 Test Set 데이터가 섞이는 것
- 모델이 테스트 셋을 암기해서 일반화 능력이 떨어짐
Text Data
텍스트 데이터는 순차성을 가진 이산 기호
- Discrete Symbol(이산 기호)
- 텍스트는 연속값이 아닌 Discrete Symbol
- Sequentiality(순차성)
- 단어나 문장을 순서에 따라 배열
- 순서에 따라 의미가 크게 달라짐
- 인공지능에선 문장을 Sequence라고 표현
Analog & Digital
- Analog : 연속적으로 변하는 물리량이나 데이터를 연속적인 값으로 표현하는 방식
- Digital : 이산적인 숫자, 문자 등의 신호로 표현하는 일
Sampling(표본화)
- 연속적인 아날로그 신호를 일정한 간격으로 잘라 디지털 데이터로 변환하는 것
Quantization(양자화)
- 연속적이거나 높은 정밀도의 데이터를 유한한 개수의 이산적인 값으로 근사하여 표현하는 과정
Tokenization
- Token : 언어 모델 입력의 최소 단위(단어X)
- 언어마다 Word Boundary(단어 경계)가 애매함
- Tokenization(토큰화)은 모델 성능, 비용, 안정성에 직결
Word Boundary
- Linguistics
- 영어의 특성 : 공백 → 단어의 경계
- 한국어의 한계 : 어근에 조사가 붙는 교착어 구조
- OOV(Out-of-Vocabulary, 미등록어)
- 언어모델의 어휘집에 없는 어휘가 나오면 성능이 떨어짐 → 일반화 능력 저하
Vocabulary
- 딥러닝은 행렬곱 연산
- Vocabulary가 커지는 만큼 연산량 증가
- 언어 모델은 확률적 추론 시스템이기 때문에 출력층에 Softmax 함수 존재
- Softmax 함수식 : α(Z)i=∑j=1VeZjeZi
- Vocabulary가 커지는 만큼 후보(V) 증가
Subword Tokenizer
- Subword
- 단어(Word) 단위보다는 작고, 문자(Character) 단위보다는 큰, 단어와 문자 사이의 중간 형태
- 예시 : Unbelievable → Un + believ + able
- Tokenizer
- Subword로 학습시키면 OOV가 줄어듦
- 형태론적 유사성 학습
BPE / WordPiece / Unigram LM
- BPE(Byte Pair Encoding)
- 가장 직관적이고 널리 쓰이는 방식
- 가장 많이 붙어서 나오는 문자 쌍을 하나의 단위로 합침
- WordPiece
- 구글에서 개발(BERT의 핵심 토큰화 기법)
- 단순 빈도만 보는 게 아닌, 둘을 합쳤을 때 전체 데이터의 (의미가 생기는)확률(Likelihood)이 얼마나 올라가는지를 확인
- Unigram LM
- 처음에는 가능한 모든 조각을 어휘집에 다 넣고, 버려도 영향이 적은 조각들을 하나씩 지워나감
Special Token
언어 모델이 문장의 구조를 더 잘 이해하도록 Tokenizer가 추가하는 툭스한 마커
- BOS(Begin Of Sequence) : 문장 시작점을 알리는 특수 토큰
- EOS(End Of Sequence) : 문장 종료점을 알리는 특수 토큰
- PAD(Padding) : 문장 길이를 맞추기 위한 특수 토큰
- 배치 프로세싱을 위해 모든 문장의 토큰을 통일
Numericalization(수치화)
텍스트를 숫자로 변환하는 것
- 딥러닝은 행렬곱 기반이기 때문에, 입력은 결국 숫자가 되어야 함
- 토큰(텍스트) → Token ID(정수)
Embedding
거대한 고차원 공간상의 Vector로 변환하는 기술(숫자에 의미를 부여)
- Token ID의 한계 : 단순히 번호만 매겨진 상태에서는 단어 간의 연관성을 알 수 없음
- Vector Space
- 의미가 비슷한 단어는 가까운 곳에 배치
- 의미가 다른 단어는 먼 곳에 배치
- Vector Arithmetic
Embedding이란
Token ID를 거대한 고차원 공간상의 Vector로 변환하는 기술
Vector
원점으로부터 Token ID의 특징값으로 향하는 화살표
- Vector 간 거리가 작음 = Feature의 차이가 작음 = Token ID 간 유사성이 높음
Static Embedding
- 임베딩 모델의 한계
- 토큰의 특징이 고정되어 있음(사과(Apple), 사과(Apology))
- Context(문맥) 이해를 못함
- 고차원 지도에 점만 찍었지 상환 판단을 못 함 → 지능의 한계가 생김
Context 이해를 위한 시도
- RNN(Recurrent Neural Network, 순환 신경망)
- 시퀀스 데이터 처리 : 문장을 한 단어씩 순서대로 읽어서 문맥 파악
- Long-term Dependency(장기 의존성) 문제 : 문장이 길어질수록 앞부분의 정보를 잊어버림
- 병렬 처리 불가 : 앞 단어의 계산이 끝나야 다음 단어로 넘어갈 수 있어 속도가 매우 느림
- 병렬 처리 : 문장 전체를 동시에 처리하여 GPU 활용도를 그대화하고 학습 속도를 비약적으로 높임
- Self-Attention : 모든 단어가 서로를 참조하여, “내 의미를 파악하는 데 어떤 단어가 가장 중요한가?”에 대한 가중치를 스스로 계산
- Contextual Representation(문맥 의존적 표현) : 주변 단어의 정보를 결합하여 문맥에 최적화된 새로운 좌표를 매번 생성
- 맥에 따라 살아 움직이는 벡터(dynamic vector)
마치며
오늘은 조금 헷갈릴 만한 내용들도 많고 중요한 내용들도 많아서 계속 복습하면서 용어들에 대해서 익숙해질 필요가 있을 것 같다. 이후에 배울 새로운 개념들의 베이스가 되는 내용들이니까 기초를 잘 다져둬야겠다.