이제 토큰에 대해 잠깐 얘기해 보죠
토큰은 모델로 전환되는 개별 유닛이에요.
신경망을 구축하던 초기에는 캐릭터마다 훈련된
신경망을 자주 사용했어요
일련의 캐릭터를 구성하는 모델이 있어야 해요 그리고 훈련해서 가장
유력한 다음 캐릭터를 예측하는 거죠 이전의 캐릭터를 고려해서요
특별한 기술이었고 어떤 면에선 장점도 많았어요
가능한 입력 수의 숫자는 제한된 숫자라는 의미였죠 가능한 알파벳 문자와
일부 기호의 숫자요
그래서 다루기 쉬운 단어가 많이 생겼죠
그 무게는 입력에 대한 너무 많은 가능성을 걱정할
필요가 없었죠
하지만 문제는 그 모델에 요구되는 게 너무 많다는 거였어요 일련의 다른
캐릭터들이 어떻게 단어로 변하는지 이해해야 했고 단어에 담긴 의미와 관련된 모든
지성이 모델의 무게에 담겨야 했는데 그건 모델 자체에 너무 많은
걸 요구하는 거였죠
그다음에는 거의 다른 극한으로 갔어요 각 단어의 정보를 훈련한
신경망 모형들이었죠
그래서 단어 선택이라는 걸 만들어요 사전 같은 건데 가능한
모든 단어의 인덱스죠
각각의 단어는 토큰이 될 수 있어요 이 중 아무 단어나 될 수 있죠
즉, 모델 자체가 각 단어의 의미가 다르다는 걸 이해하기 시작했다는 거죠
캐릭터의 연속적인 의미를 이해하는 대신에요
그건 좋은 일이었죠
하지만 문제는 그 결과로 엄청난 어휘가 나왔다는 거죠
가능한 모든 단어를 합친 단어가 필요했어요
가능한 단어가 아주 많아요 장소와 사람들의 이름도 있으니까요
그래서 모르는 단어를 위한 특별한 증표가 있어야 했죠
그래서 한계가 생겼죠
희귀한 단어와 특별한 장소는 생략해야 했죠
그래서 좀 이상한 일이 생겼어요
그러다 GPT가 개발될 무렵 돌파구를 찾았습니다 양극단 사이에 적절한 매체가 있다는
사실이었죠 캐릭터별로 모델을 훈련하고 그것들을 조합해
단어를 만드는 법을 배우는 대신에요
각각의 단어가 다른 토큰이라고 말하는 것보다는 하나의 글자를 모아서 완전한 단어를
만들거나 단어의 일부를 토큰으로 만드는 것이 더 좋을 것 같습니다.
그렇게 해서 전달되는 토큰에 기반하여 일련의 토큰과 출력 토큰을 만들도록 하는 거죠.
이 방법에는 흥미로운 장점이 많아요
그중 하나는 토큰으로 나누기 때문에 장소의 이름이나 정식 이름
같은 것도 다룰 수 있다는 거죠
그저 패의 조각에 불과할 뿐이죠
두 번째 흥미로운 효과는 단어 스템 처리에도 좋다는 겁니다
혹은 단어 시작 부분이 같아 여러 잠재적 결말을 하나의 토큰에 인코딩하고
몇 개의 토큰으로 이어질 때요
즉, 말하고자 하는 것의 기저에 깔린 의미는 모델 내에서 쉽게 표현될 수 있다는 것입니다.
왜냐하면 토큰은 약간 추상적으로 들릴 수도 있는 구조로 구성되어 있기 때문이죠.
좀 더 현실적인 비트로 바꿔드리죠
GPT, OpenAI는 플랫폼 OpenAI라는 도구를 제공하죠 comp/토큰라이저입니다 텍스트를
입력하면 어떻게 토큰으로 바뀌는지 볼 수 있죠
그래서 한 문장을 선택했습니다 우리 인공지능 엔지니어 학급에게는 중요한 문장이죠
GPT가 그걸 토큰화한 걸 볼 수 있죠
단어를 증표로 바꿀 때 사용하는 동사죠
그게 어떻게 토큰이 됐는지 색으로 강조하죠
이 경우에는 모두 흔한 단어라서 모든 단어가 토큰 하나에 정확히 그려져
있어요
이게 확실한 예죠
색깔을 보면 알 수 있죠
또 하나 흥미로운 점은 중요한 거예요
색깔 있는 상자 몇 개가 앞에 공간이 있어요
우주 같아요
그리고 for는 표시된 거죠
왜냐하면 표기할 때도 단어 간격이 의미가 있거든요
저 토큰은 격리된 워드를 나타내요 워드의 시작 부분처럼요 그걸 위한 글자들이
토큰의 시작 부분에 매핑되죠 토큰에 대한 워드의 시작 부분에요 그건 잠시 후에 좀 더 중요해질 거예요
하지만요
하지만 단어 사이의 간격도 토큰의 일부로 포함된다는 걸 알아두세요
다른 예를 들어보죠
이 예시에서는 좀 더 흥미로운 문장을 떠올려 봅니다 LM 위치크래프트
몰이꾼들을 위한 정교한 수제 재담이죠
몰이꾼이란 말은 지어낸 말일 거예요
여기 보시면 빨간 구불구불한 선이 가짜라는 걸 알 수 있어요
어떻게 토큰화가 이루어졌는지 보죠
4는 여전히 한 단어로 여기 있는 게 보이시죠 토큰의 앞부분도요
하지만 앤도 마찬가지예요 하지만 여러 토큰으로 정교하게 나뉘어 있죠
아주 정교하게요
희귀한 단어를 쓰면 그 단어가 한 단어로 안 쓰인다는 걸 알 수 있죠
여러 개의 토큰으로 나눠야 했지만 여전히 전달할 수 있었죠
그 단어는 수제품이에요
보다시피 단일 토큰이라는 단어에도 그게 없어요 하지만 그걸
쪼개서 만들 수 있죠
그게 그 의미를 반영해요 어떤 면에서는요 Get it의 의미요
두 가지를 수작업으로 합친 거예요
보다시피 만들어진 토큰은 문장의 시작을 포함하지 않죠
중간에 만들어진 단어를 상징하는 토큰인 셈이죠
그게 그 토큰의 의미죠
그런 농담은 전혀 안 통해요
누군가 침입했고 마스터시스 사진도 있어요
단어 줄기에 대해 말씀드린 좋은 예죠
마스터는 마스터로 바뀌었는데 여기서 중요한 건 동사죠
마스터를 익혔다가 마지막에 실수하는 사람요
보다시피 우리가 말하려는 의미를 반영할 수 있어요 두 개의 토큰으로
쪼개서요 진짜 단어는 아니지만요
마법과 공예가 섞여 들어간 것도 볼 수 있어요 이것도 흥미롭죠
네, 수공예품이에요
스승님, 말씀드렸듯이 현극령에 그 의미가 반영돼 있죠
여러분이 이걸 통해 토큰으로 뭔가를 쪼개는 게 어떤 의미인지 깨달았으면 좋겠네요
여기서 흥미로운 건 이 좀 더 복잡한 예시를 보여드리는 거예요
제가 좋아하는 숫자죠 6534589793238462643383이에요
어쩌고저쩌고 말이죠
이 화면을 보면 이런 게 있을 때 파이처럼 긴 숫자는 토큰 하나로
대응하지 않아요
여기서 벌어지는 일을 보면 모든 일련의 세 자리 숫자가 토큰 하나에 매핑되고
있어요
흥미로운 자산이죠
사실 GPT 2 토큰라이저의 속성입니다 하지만 다른 많은 제품에는 그렇게 많은 케이스가 없죠
여러 개의 토큰을 가지고 있는 것을 볼 수 있어요.
일반적으로 토큰을 볼 때 명심해야 할 경험 법칙이
있어요
경험 법칙에 따르면 토큰 하나는 보통 네 글자로 매핑이 돼요
보통 영어 문학에서 토큰은 평균적으로 단어 4분의 3에 해당해요
토큰 한 장은 0개 정도고요 75단어요
쉽게 생각할 수 있는 방법이죠
쉽게 말하면 천 현은 750글자나 되죠 Put
그게 여러분이 염두에 두셔야 할 지도예요
천 현은 750글자예요
셰익스피어 전작을 예로 들어 볼게요 예를 들어 현실적으로 보면 약
900,000단어로 된 셰익스피어 작품이죠
1명 정도요 200만 토큰이면 셰익스피어 작품 전집과 맞먹는 크기죠
영어를 말하는 거예요
수학 공식이나 과학 용어, 코드 같은 것을 볼 때 토큰의 수는 훨씬 더 많습니다 여기에서
숫자들을 보았듯이 더 많은 토큰으로 쪼개져야 합니다 올바른
심볼 같은 것을 포함하기 위해서요
여기서 또 한 가지 중요한 점은 GPT 토큰라이저를 보여드린다는 거죠
토큰이 어떻게 작동해야 하는지 정해진 규칙은 없어요
조금 전에 토큰라이저를 사용하던 초창기를 살펴봤는데요 모든 글자가
토큰 하나에 매핑되었죠 모델마다 토큰화에 다른 접근법을 갖고 있었어요
나중에 오픈 소스를 살펴볼 땐 다양한 토큰라이저들을 직접 경험해볼
거예요
라마 토큰라이저의 흥미로운 속성도 살펴볼 거예요
각각의 토큰이 다르게 작동할 수 있어요
패가 많거나 적을 때 장단점이 있어요
모델에 매개 변수가 몇 개 있고 어떻게 훈련받았는지에 따라 답이 달라지지
않아요
이번 시간에는 GPT 토큰마이저를 더 자세히 살펴보고 여러분께 명확함과 직관을 얻으셨길
바랍니다 단어와 글자를 토큰의 세계로 바꾸는 게 어떤 의미인지 말이죠