НЕЙРО‑ФОРУМ
Article Статья

Токены

Если вы работали с нейросетями, то вы точно слышали такое слово - "Токен". Но что это такое? Давайте разбираться!

Обратите внимание, вы сейчас находитесь на вкладке "Просто"
Если вы хотите технического хардкора, перейдите на вкладку "Сложно". Так мы разберём с технической части, как работают Токены.



Токен - это ...

Токен - это от одного и более символов, например:

  • 'а'
  • 'ват'
  • '. '

Токеном может быть совокупность одного и более символов.
Для нас, людей, часто токены не будут нести смысл.
Но зачем вообще разбивать текст на токены?

После того, как текст был разбит на кусочки - токены, мы берём словарь токенов и для каждого токена находим его уникальное число.
Представьте, это как алфавит, у каждой буквы есть свой порядковый номер:

  • А - 1
  • Б - 2
  • В - 3
  • ...
  • Я - 33

И мы получаем из текста набор чисел.
Но зачем же нам числа??
Всё просто, нейросети - это математические модели и чтобы они работали, мы должны дать им набор чисел, а не текст!

Таким образом мы превратили текст в числа!
Но, это мега упрощённое объяснение!

Надеюсь вы не устали, давайте разберёмся немного глубже в теме.

Откуда берутся токены

Многим известно, что нейросети обучаются на невероятно большом объёме данных, и чем больше данных для обучения, тем умнее и разумнее выйдет нейросеть.
Но опять же, из тезиса выше, мы помним, что нейросети думают числами и естественно, обучаться они будут на тех же числах.

Именно в момент, когда мы хотим создать и обучить новую модель с чистого листа, нам для начала необходимо создать тот самый словарь токенов.
Чтобы его создать, мы берём весь наш объём данных и начинаем на его основе создавать тот самый словарь токенов.

Для этого есть определённые подходы и алгоритмы, но мы не будем их разбирать на простом уровне.
Давайте посмотрим на это в общих чертах.
Давайте начнём с примера, но нереального.
Первая строка, которая начнёт составлять наш словарь, будет "Привет мир!"
И так как у нас ещё нет данных, мы получим разбивку вот так:
"П", "р", "и", "в", "е", "т", " ", "м", "и", "р", "!"
Следующая строка: "Ветхий дом"
Разбивка:
"Вет", "х", "и", "й", " ", "д", "о", "м"

Почему "Вет" вместе?

В слове "Привет" и "Ветхий" есть одинаковая часть "вет".
И вот так постепенно, перебирая невероятно большой объём текста, мы сформируем словарь, где будут часто попадающиеся символосочетания.

Учтите, пример выше сделан как пример и сильно отличается от реальных алгоритмов, которые намного сложнее!

Уникальный номер токена → (вектор)

Теперь давайте рассмотрим, а что за уникальный номер у каждого токена и что за число принимает на вход нейросеть.

То, что я говорил раньше, является большим упрощением от реальности.
Ведь каждый токен - это не только своё уникальное число, но и алгебраический вектор.
Да, гуманитариев сейчас передёрнуло)
Именно набор ВЕКТОРОВ передаётся в нейросеть.

Давайте попробуем рассмотреть ВЕКТОР в простом примере.

Вектор

Давайте представим космос.
В космосе есть очень много звёзд и созвездий.
Это трёхмерное пространство, в котором мы с вами живём.
И теперь, давайте заменим звёзды на слова.
А теперь, давайте разместим слова в этом космосе, чтобы чем ближе по смыслу слова, тем ближе они находились друг к другу.
Получаем некоторые созвездия.
Теперь, слова "Король" и "Королева" находятся в одном созвездии, рядом со словами "Принц", "Придворный" и тд.
В нашем трёхмерном пространстве, мы можем точно сказать, где находится тот или иной объект, ведь у всего есть свои координаты.
Например, я буду находиться на координатах [0, 0, 0], я буду исходной точкой, а кружка на шкафу справа, будет находиться [55, 72, 33], это значит: 55 см вперёд, 72 см вправо и 33 см вверх.
Это как путь по карте.
И вот у каждого слова есть свой набор координат, который называется - ВЕКТОР.

А сейчас, будет информация не для слабонервных, так что читать только подготовленным!

Показать пояснение ⬇️⬇️⬇️

В нашем мире, мы можем себе представить 2D или 3D мир, сложно, но в теории и 1D.
Некоторые из вас видели даже что-то из 4D, это когда фигуры странным образом ломаются и перемещаются непонятно куда.

  • 1D - [11]
  • 2D - [11, 22]
  • 3D - [11, 22, 33]
  • 4D - [11, 22, 33, 44]

А в алгебре, мы можем написать и 300D.
Да, это пространство с 300 измерениями, представить это нам, живущим в трёхмерном пространстве нереально, но в математике - проще простого!
Но зачем???
А всё просто.
В 3-мерном пространстве, мы не можем положить "Короля" рядом с другими живыми существами, богом, разумом, грёзами и ещё чем-то одновременно, иначе он будет равноудалён от всего и не будет принадлежать к другим созвездиям или же, у нас всё собьётся в одну большую кучу и понять что где, будет невозможно.
Но, чем больше у нас измерений, тем больше мы можем создать разных взаимосвязей.
Например:
Давайте возьмём 8 кругов, и расположим их на бумаге, как можно равномернее и как можно ближе друг к другу.
Получим в лучшем случае форму наподобии 8-угольника. И противоположные круги будут находиться неравномерно далеко друг от друга.
Это мы взяли 2D пространство.

Давайте перейдём в 3D и нарисуем простой Куб.
Все кружки находятся равномерно друг от друга.
И чем больше измерений, тем больше возможностей по расположению и близости объектов друг к другу.

А современные, большие модели, думают не сотнями, а тысячами измерений!

Итак, мы теперь знаем, что наше предложение бьётся на токены и каждый токен имеет свой вектор, а уже те самые вектора мы используем сначала, чтобы обучать модель, а уже потом, чтобы общаться с обученными моделями.

Как пример, мы можем перейти по ссылке https://platform.openai.com/tokenizer (нужен VPN)
И видим, что можно выбрать версию модели 3.5 или 4o

Почему?
А потому что для каждого поколения модели был создан свой словарь токенов.

И тут мы можем заметить, что на родном английском языке, ChatGPT разбивает текст на блоки аж по словам!
Почему?
Всё просто, основной пул данных был собран на английском языке.
А значит:

  • На английском языке мы можем ввести больше текста, так как ограничение на ввод идёт по тем самым Токенам. И текст на 2000 русских символов будет ~700 токенов, а английские 2000 символов станут ~200 токенами
  • Нейросеть будет лучше и эффективнее думать на родном ей языке. Для ChatGPT это английский

Выводы

Давайте кратко пробежимся по всему пути от нашего текста до того, что же видит нейросеть!

Чтобы нейросеть нас поняла, мы текст сначала разбиваем на токены:
"Привет мир!" → "Пр" "ивет" " мир" "!"
Токен - это набор символов.
Для каждой текстовой нейросети есть свой словарь токенов.
В словаре мы находим наш токен и переводим его в вектор:
"Пр" "ивет" " мир" "!" → [32, 424, 493...] [572, 453, 961...] [932, 747, 4, 31...] [13, 4148, 90, 4032...]

А теперь, набор векторов мы отдаём нейросети, и она начинает на их основе алгебраическими расчётами "думать", по итогу выдавая ответ.

В целом, это всё, что надо знать для поверхностного понимания устройства токенов.

Но для истинных хардкорщиков, я предлагаю перейти на вкладку Сложно и ознакомиться с устройством Токенов на более глубоком уровне!

На этом всё!
Подписывайтесь на ТГ канал, где вы будете в курсе, что происходит вокруг ИИ и с самими ИИ!

Дальше будет интереснее :)🚀