1장. 준비 수학과 Transformer 개요
용어 짚고 가기
벡터(vector)숫자를 한 줄로 늘어놓은 것입니다. 성적표에서 학생 한 명의 한 행과 같습니다. NumPy 에서는 shape 가(6,)처럼 숫자 하나로 나옵니다.차원(dimension)벡터에 든 숫자의 개수입니다. Transformer 에서는 낱말 하나를 나타내는 숫자 개수를d_model이라고 부릅니다.행렬(matrix)숫자를 행(row)과 열(column)로 놓은 표입니다. 벡터를 여러 줄 쌓으면 행렬이 됩니다. 엑셀 표 한 장이나 숫자만 든 DataFrame 과 같습니다.shape배열의 모양입니다. 행렬은(행 수, 열 수)로 적습니다. 문장 하나는(낱말 수, 차원)행렬입니다.행렬곱(matrix multiplication)앞 행렬의 행과 뒤 행렬의 열을 짝지어 곱하고 더하는 계산입니다. 점수표에 가중치표를 곱해 총점을 내는 일과 같습니다. 파이썬에서는np.matmul(A, B)나A @ B로 씁니다.내적(dot product)길이가 같은 두 벡터에서 같은 자리 숫자끼리 곱해 모두 더한 값입니다. 두 사람 취향이 얼마나 같은 쪽인지 재는 점수입니다.가중치(weight)신경망이 학습으로 정하는 숫자들입니다. 총점을 낼 때 과목마다 곱하는 비중과 같습니다.신경망(neural network)입력에 가중치를 곱하고 더하는 층을 여러 번 쌓아 답을 내는 계산 모형입니다. 이 과정의 Transformer 도 신경망입니다.점수(logit)신경망이 마지막에 내놓는 날것의 점수입니다. 음수일 수도 있고 합이 1이 아니라서 아직 확률이 아닙니다.Softmax점수를 합이 1인 비율(확률)로 바꾸는 계산입니다. 득표수를 투표 비율(합 100%)로 바꾸는 일과 같습니다.은닉 표현(hidden representation)신경망의 중간 층이 만든 숫자 묶음입니다. 사람이 직접 보지 않는 중간 계산 결과라서 "숨은(hidden)"이라고 부릅니다.순서 데이터(sequence data)차례가 뜻을 정하는 데이터입니다. 문장, 센서 값, 주가처럼 앞뒤를 바꾸면 뜻이 달라집니다.토큰(token)모델이 문장을 자른 한 조각입니다. 이 장에서는 낱말 하나라고 보면 됩니다. 2장에서 자세히 봅니다.RNN(Recurrent Neural Network)문장을 앞에서부터 한 칸씩 읽으며 기억을 고쳐 쓰는 신경망입니다. recurrent 는 "되풀이되는"이라는 뜻입니다.은닉 상태(hidden state)RNN 이 칸마다 들고 다니는 기억 벡터입니다. 책을 읽으며 메모 한 장에 덮어쓰는 요약과 같습니다. 기호로는 h 로 적습니다.기울기 소실(vanishing gradient)학습 신호가 여러 칸을 거꾸로 거치며 점점 작아져, 앞쪽 칸이 거의 배우지 못하는 일입니다.장거리 의존성(long-range dependency)멀리 떨어진 낱말끼리의 관계입니다. "그 회의에서 ... 말한 사람은 그였다"의 "그"가 누구인지 같은 것입니다.Seq2Seq(Sequence to Sequence)문장(순서 데이터)을 받아 다른 문장을 내는 모델입니다. 읽는 RNN(Encoder)과 쓰는 RNN(Decoder)을 따로 둡니다.Encoder입력 문장을 읽어 뜻을 숫자로 담는 부분입니다. encode 는 "부호로 바꾸다"라는 뜻입니다.DecoderEncoder 가 넘긴 숫자를 보고 출력 문장을 한 낱말씩 쓰는 부분입니다. decode 는 "부호를 풀다"라는 뜻입니다.context vectorEncoder 가 Decoder 에게 넘기는 요약 벡터입니다. 긴 회의를 쪽지 한 장에 요약해 넘기는 것과 같습니다.AttentionDecoder 가 낱말을 하나 쓸 때마다 입력의 어느 자리를 얼마나 볼지 정해 다시 들춰 보는 방법입니다. attention 은 "주의, 집중"이라는 뜻입니다.병렬 처리(parallel processing)여러 계산을 한꺼번에 하는 것입니다. GPU 는 병렬 처리에 강한 계산 장치입니다.Transformer2017년 논문 "Attention Is All You Need"에서 나온 구조입니다. RNN 없이 Attention 만으로 모든 낱말 쌍의 관계를 한 번에 계산합니다.BLEU기계 번역이 사람 번역과 얼마나 겹치는지 재는 점수입니다. 높을수록 번역이 낫다고 봅니다.