
벌써 챌린지 참여 2주차.
어제 까지만 해도 2장을 못 끝냈는데, 1박 2일 연수를 온 김에 12시까지 코딩해보면서 겨우 진도를 맞췄다.
1. 내용
2장의 내용은 단어의 토큰화, 인코딩, 디코딩, 임베딩 벡터가 중심이었다.
원핫 인코더를 만들어봐서 다른건 익숙했지만, 임베딩 벡터 자체는 내용이 새로웠다.
원핫 인코더는 단어마다 3차원 행렬을 만들어 그 부분을 1로 만들어 주는데 임베딩 벡터는 x, y, z 와 같은 3차원 상의 벡터로 나타냈다.

2. 질문
임베딩 벡터를 할 때는 질문이 계속 생겼다.
왜 임베딩을 초기에 seed를 이용해 겹치지 않는 난수로 만들지?
행렬 자체는 2차원 같은데 왜 3차원이라고 하지?
토큰 임베딩과 위치 임베딩을 더해주는 이유는 뭐지?
이런 질문들은 Chat-GPT로 해결했다.

임베딩 벡터가 단어를 찾는 딕셔너리 같은 역할을 한다.
초기에 임베딩에 seed를 주어 램던한 함수를 주는 것은 좌표계 상에서 단어들의 위치가 다르게 흩뿌려 주는 것이다.
그리고 같은 seed로 임베딩을 만들면, 그 임베딩은 초기에 있던 임베딩과 같으므로 단어의 위치와 동일하게 된다.
따라서 토큰 임베딩과 위치 임베딩을 더하면 해당 단어의 특징과 문맥이 함께 나타나는 것이다.
3. 후기
Vercel AI SDK에서 막연하게 임베딩 벡터에 대해 봤었는데 이제 확실하게 이해하게 되었다.
수학적으로 표현하고자 하면 상당히 어렵지만, 그 뜻을 이해한다면 더 쉽게 다가갈 수 있을 것 같다.
앞으로도 꾸준히 해볼 예정이다.
댓글을 불러오는 중...