프롬프트와 토큰, 텐서, 임베딩 개념

1️⃣ 토큰(token)의 개념

프롬프트 공학에 있어서 가장 중요한 개념이 뭐냐 꼽는다면

토큰이라고 해도 과언이 아니다. 이에 대해선 다음글에서 설명하겠다

먼저 개념부터 보면 토큰은 '컴퓨터의' 단어이다

1girl 이라면 우리로썬 뭐 두단어로 볼수도 있겠지만 보통 한단어로 인식한다

하지만 컴퓨터의 감성토큰집에 따르면

1 + girl 이렇게 두개의 단어, 즉 2토큰이 된다

여기까진 납득가능하지만 1_girl 이러면 3토큰이 되어 버린다. 1과 _밑줄과 girl 이렇게 나뉘기 때문

쉼표역시 1토큰취급이다.

다행히 기준이 뭐냐라고 물었을때 컴인지감수성 이딴게 나오는게 아니라 명확하게

단어집이 존재한다. 이 링크를 클릭해보면 주루룩 정리된 것을 볼 수 있다.

(다만 단어집은 이거말고도 있으며 다른거 쓸수도 있다)

 

단어집 자체는 우리도 오지게 공부하는 영단어집이랑 별 다를게 없다

한글대신 컴퓨터의 언어인 숫자가 대신 적혔을뿐

다만 딱 하나 단어집을 보면 같은 단어인데 `</w>` 가 붙은거랑 아닌게 있다.

이건 이 단어로 끝나는가 아닌가를 나타낸다. 

즉,

  "0": 15,
  "0</w>": 271,

0 단독으로 끝나면 [271] 토큰인거고 00 이렇게 되면 [15, 271] 이렇게 단어가 분류가 되는 것이다

만약 000 이면? [15,15,271] 이된다. 

"bat": 1,
"bat</w>": 11,
"girl": 2,
"girl</w>": 22,
"batgirl</w>": 12345

 

자 새로운 예시를 보자 (토큰번호는 알기쉽게 임의로 했다)

bat girl은 어떻게 될까 [1,22] 이다. bat으로 끝난게 아니니까 </w> 없는 일반토큰 [1]이고

girl로 끝났으니 [2]이 아니라 'girl</w>' 인 [22] 이다

만약 batgirl 이면? 단어집에 그런단어가 없다면 그대로 위와 똑같이 [1,22] 두토큰이겠지만

마침 단어집에 [12345] 라는 토큰으로 존재한다! 그럼 그대로 [12345]가 되는 것이다

하지만 batgirlz 라면?

그런 토큰단어는 위의 예시에 없기 때문에 (batgirl</w>은 있지만 batgirl이 없으므로)

bat와 girl 그리고 z 까지 해서 3토큰이 되어버린다. 꼴랑 z 하나로 1토큰이 3토큰화 되어버린 것이다

 

2️⃣ 임베딩 (embedding)

앞서 봤듯이 각 토큰은 컴퓨터가 알수 있는 언어인 숫자로 정의된다

즉, bat는 1이다. 하지만 우리가 단어를 외울때

[bat=우류량야얀] 이렇다면야 피눈물을 흘리며 달달외어야되지만

사실은 [bat=박쥐] 이렇게 우리가 알고 있는 '박쥐'라는 단어와 매칭시켜 해석한다

그리고 이정보는 대충 뇌 어느구석에 짱박혀(embed)되어 있다

 

컴퓨터도 마찬가지다 컴퓨터에게 1은 이미 박쥐라는 정보로 이미 학습되어있다

그리고 이 정보는 아래와 같은 고차원의 숫자벡터로 되어 있다

[0.1, 0.3, -0.2, ...] 
이게 얘네들한테는 박쥐라는 정보

이와 같이 토큰을 알고 있는 정보(배열)로 떠올리는 것을

임베딩한다고 한다

 

3️⃣ 텐서 (PyTorch Tensor)

텐서 자체는 다차원 배열들의 분류상위의 개념? 즉, 인간은 포유류~ 뭐 이런느낌이지만

여기서의 의미로보면 위에서 만들어진 임베딩을 저장하는 데이터구조이다

즉, token으로 단어번역 -> 뇌에서 개념(임베딩)으로 변환 -> 노트에 정리(텐서)

이런 느낌으로 보면 된다

그래서 토큰을 번역하고 나면 마지막엔 텐서들이 남는다

이 텐서모음집을 AI에 전달하면 그 노트를 보고 이미지들을 생성하게 되는 것이다

그래서 누군가가 굉장한 이미지를 생성했는데 프롬프트를 몰라도 그 텐서를 입수했다면

그거 그대로 똑같은 모델에 넣으면 똑같은 이미지가 나오게 된다

그게 프롬프트를 최종정리한 결과물이니까..

 

 

 

 

 

'ComfyUI' 카테고리의 다른 글

CFG의 개념과 원리  (0) 2025.02.17
프롬프트의 기본 1 - CLIP 上  (0) 2025.02.06
프롬프트 컨디션(Conditioning) 이란?  (2) 2025.02.02