3장. Attention 과 Transformer, GPT 직접 구현
용어 짚고 가기
토큰(token): 글을 모델이 다루는 조각으로 자른 것입니다. 글자, 낱말, 낱말의 일부가 될 수 있습니다. token 은 "표, 징표"라는 뜻입니다.토크나이저(tokenizer): 글을 토큰으로 자르고 토큰마다 번호를 붙이는 도구입니다. token 에 "~로 만드는 것"이라는 뜻의 -izer 를 붙인 말입니다.어휘(vocabulary): 토크나이저가 아는 토큰의 목록입니다. 어휘 크기는 그 목록의 길이입니다. vocabulary 는 "낱말 목록"이라는 뜻이고, 줄여서 vocab 이라고도 합니다.서브워드(subword): 낱말보다 작고 글자보다 큰 조각입니다. 요즘 LLM 이 주로 쓰는 토큰입니다. sub(아래, 더 작은)와 word(낱말)를 붙인 말입니다.임베딩(embedding): 토큰 번호를 뜻을 담은 숫자 좌표(벡터)로 바꾼 것입니다. embed 는 "박아 넣다"라는 뜻으로, 낱말을 좌표 공간 속에 박아 넣는다는 데서 왔습니다.벡터(vector): 숫자 여러 개를 줄지어 놓은 것입니다. 임베딩 하나가 벡터 하나입니다. vector 는 라틴어 "나르는 것"에서 온 수학 용어입니다.RNN(Recurrent Neural Network): 글자를 하나씩 차례로 읽으며 기억을 넘겨주는 예전 방식의 신경망입니다. 순환 신경망이라고 하며, Recurrent(되풀이되는), Neural(신경의), Network(망)의 머리글자입니다.Attention(어텐션): 지금 글자가 다른 글자들을 얼마나 참고할지 비율을 계산해 정보를 모으는 방법입니다. attention 은 "주의, 눈여겨봄"이라는 뜻입니다.셀프 어텐션(self-attention): 같은 문장 안의 글자끼리 서로 참고하는 Attention 입니다. self 는 "자기 자신"이라는 뜻입니다.쿼리(query): Attention 에서 "내가 찾고 싶은 것"을 나타내는 벡터입니다. Q 로 줄여 씁니다. query 는 "질문, 묻기"라는 뜻입니다.키(key): Attention 에서 "나는 이런 정보를 갖고 있다"는 꼬리표 벡터입니다. K 로 줄여 씁니다. key 는 "열쇠"라는 뜻이고, 자료를 찾을 때 맞춰 보는 표제를 가리키기도 합니다.밸류(value): Attention 에서 실제로 넘겨줄 내용 벡터입니다. V 로 줄여 씁니다. value 는 "값"이라는 뜻입니다.softmax(소프트맥스): 점수 여러 개를 0 과 1 사이의, 합이 1 인 비율로 바꾸는 함수입니다. 점수마다 exp 를 구해 그 합으로 나누며, 가장 큰 값만 고르는 max 를 부드럽게(soft) 했다는 뜻의 이름입니다.마스크(mask): Attention 에서 보면 안 되는 자리를 가리는 표입니다. GPT 는 뒤의 글자를 가립니다. mask 는 "가리개, 가면"이라는 뜻입니다.멀티헤드 어텐션(multi-head attention): Attention 을 여러 갈래(헤드)로 나눠 따로 계산한 뒤 합치는 방법입니다. multi(여럿)와 head(머리)를 붙인 말입니다.위치 임베딩(positional embedding): 토큰이 문장에서 몇 번째인지를 나타내는 벡터입니다. 토큰 임베딩에 더합니다. position 은 "자리"라는 뜻입니다.Transformer(트랜스포머): Attention 을 중심으로 층을 쌓은 신경망의 짜임입니다. 2017년 논문에서 나왔습니다. transformer 는 "바꾸는 것"이라는 뜻입니다.잔차 연결(residual connection): 층에 들어온 값을 층의 결과에 그대로 더해 주는 연결입니다. 깊이 쌓아도 학습이 잘 되게 합니다. residual 은 "남은 것, 나머지"라는 뜻입니다.LayerNorm(Layer Normalization): 벡터의 숫자 크기를 고르게 맞추는 층입니다. 층 정규화라고 하며, Layer(층)와 Normalization(정규화, 크기 맞추기)을 줄인 이름입니다.디코더(decoder): 앞의 글만 보고 다음 글을 써 나가는 Transformer 입니다. GPT 가 이 짜임입니다. decode 는 "부호를 풀다"라는 뜻입니다.인코더(encoder): 문장 전체를 앞뒤로 읽어 뜻을 뽑는 Transformer 입니다. encode 는 "부호로 바꾸다"라는 뜻입니다.GPT(Generative Pre-trained Transformer): 미리 학습한 글 생성용 Transformer 입니다. Generative(생성하는), Pre-trained(미리 학습된), Transformer 의 머리글자입니다.사전학습(pre-training): 정답 표시 없는 많은 글로 "다음 토큰 맞히기"를 먼저 학습하는 단계입니다. pre(미리)와 training(학습)을 붙인 말입니다.미세조정(fine-tuning): 사전학습한 모델을 정답이 붙은 적은 데이터로 조금 더 학습시키는 단계입니다. fine-tuning 은 악기의 음을 "미세하게 맞추기"라는 뜻입니다.온도(temperature): 다음 토큰을 고를 때 확률을 뾰족하게 또는 평평하게 만드는 값입니다. 물리학에서 온도가 높을수록 상태가 고르게 퍼지는 식을 빌려 와 붙은 이름입니다.환각(hallucination): 모델이 사실이 아닌 내용을 그럴듯하게 지어내는 현상입니다. hallucination 은 "없는 것을 보는 착각"이라는 뜻입니다.ML 디자인 패턴(ML design pattern): 머신러닝에서 자주 부딪히는 문제의 검증된 풀이를 이름 붙여 정리한 것입니다. ML 은 Machine Learning(머신러닝)의 머리글자이고, design pattern 은 "설계의 본보기"라는 뜻입니다.