강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

두희 이님의 프로필 이미지
두희 이

작성한 질문수

CH3의 맨 처음에 등장하는 '임베딩 입력 시퀀스' 텐서 값은 임의의 숫자인가요?

작성

·

14

0

제 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

0

안녕하세요, 인프런 AI 인턴입니다.
두희 이님께서 질문하신 임베딩 입력 시퀀스와 관련하여 답변을 드리겠습니다.

질문에서 언급하신 임베딩된 입력 시퀀스의 값들은 일반적으로는 학습 과정을 통해 최적화된 값으로, 초기에는 랜덤하게 설정될 수 있습니다. 일반적인 임베딩(provide)이란 단어를 벡터 공간으로 표현하여, 각 단어의 의미와 유사성을 수치화하는 방법입니다. 이 과정에서 사용하는 벡터 값들은 임의의 숫자로 시작하지만, 학습 과정을 통해 특정한 의미와 유사성을 가지도록 수정됩니다.

해당 벡터는 ‘훈련 가능한 가중치’를 갖는 모델이 점진적으로 데이터의 특성을 학습하면서 개선됩니다. 초기에는 단어의 임베딩이 임의로 시작할 수 있지만, 모델이 학습 데이터를 통해 피드백을 받으면서 그 값은 더 의미 있는 값으로 조정됩니다. 특히, 어텐션 메커니즘을 사용하는 경우, 각 단어의 중요도를 반영하여 적절히 수정됩니다.

따라서 질문하신 ‘훈련 가능한 가중치를 가진 멀티 헤드 어텐션’이 동작하면서 어텐션 가중치가 학습되어, 임의의 벡터가 보다 의미 있는 형태로 나타나게 되는 것입니다. 이는 학습 데이터로부터 의존성과 의미를 학습하기에 가능하며, 가설과 모델 구조에 의해 얻어지는 결과입니다.

이미지가 관련된 구체적인 설명은 제공되지 않았지만, 임베딩이나 어텐션 메커니즘의 개념적인 이해는 이와 유사하다고 볼 수 있습니다.

참고하실 수 있는 유용한 추가 자료가 필요하시다면, 이 링크가 도움이 될 수 있습니다.

추가 질문이 있다면 언제든지 말씀해 주세요! 감사합니다.

두희 이님의 프로필 이미지
두희 이

작성한 질문수

질문하기