인프런 커뮤니티 질문&답변
CH3의 맨 처음에 등장하는 '임베딩 입력 시퀀스' 텐서 값은 임의의 숫자인가요?
해결된 질문
작성
·
18
0
지난 주에 질문을 했었는데, 제가 인프런 시스템에 익숙하지 않다보니 엉뚱한 게시판에다 질문을 한 것 같아요.
이 Q&A 게시판은 강사님께 질문 드리는 것 맞는지요? 맞는다면 아래 내용을 질문 드리고 싶습니다.
제 3장("어텐션 메커니즘 구현하기")의 거의 맨 앞 부분에 다음과 같은 문구와 코드가 등장합니다.
다음처럼 3차원 벡터로 임베딩한 입력 시퀀스가 있다고 가정.
import torch
inputs = torch.tensor(
[[0.43, 0.15, 0.89], # Your (x^1)
[0.55, 0.87, 0.66], # journey (x^2)
[0.57, 0.85, 0.64], # starts (x^3)
[0.22, 0.58, 0.33], # with (x^4)
[0.77, 0.25, 0.10], # one (x^5)
[0.05, 0.80, 0.55]] # step (x^6)
)
이 값들은 토크나이저에서 그냥 임의로 마구잡이로 부여하는 실수 값인가요?
아니면 각 토큰 별로 이미 유사도나 거리 개념까지 다 계산 되어서 나온 실수 값인가요?
아!! 단순하게 이 교재에서 이해를 돕기 위해 3차원 값으로 예를 든 저 실수들만을 말하는 게 아니고요
실제로 LLM에서 입력 시퀀스의 각 토큰에 부여된 텐서 값들을 말하는 겁니다.
만약 아무런 연관성이 없이 그냥 임의로 토크나이저에서 만들어진 실수 값일 뿐이라면,
단순히 한 입력 원소와 다른 모든 입력 원소의 점곱 등의 연산을 통해 산출된 문맥 벡터가 무슨 의미가 있는 것인 지 이해가 잘 되지 않아서요.
즉, 그냥 아무런 연관성 없는 임의의 값들끼리 접곱했는데 의미를 가진 문맥 벡터가 나온다는 게 언뜻 이해가 되질 않습니다.
아니면,
처음에는 토크나이저에서 아무런 연관성 없이 그냥 임의로 실수 값들을 각 토큰에 부여했다 하더라도,
"훈련 가능한 가중치를 가진 멀티 헤드 어텐션" 알고리즘을 수행하게 되면 어텐션 가중치가 갱신 되면서
이런 모든 의구심이 해소 되는 것인가요?
답변 1
1
안녕하세요. 박해선입니다. 트랜스포머를 포함해 모든 신경망 모델은 훈련 전에 랜덤하게 가중치를 초기화하고 훈련을 통해 목표에 최적인 값을 찾아갑니다. 본문에 나온 벡터는 문장에 나온 그대로 설명을 위해 '가정'한 것입니다. 즉 예를 들어 설명하기 위함입니다. 실제 숫자를 사용하지 않는다면 수학 식을 사용해서 설명해야 하는데 그게 더 이해하기 어렵거든요. 감사합니다!




