Ликбез. Про токены.
Я уже писал, что задача ИИ угадать следующее слово.
Это так и не так одновременно.
Этого достаточно для понимания принципа, но это же неверно с точки зрения реальности (как же меня за это упрощение били на форумах и в комментах). Теперь давайте разберемся, что же происходит на самом деле.
Компьютеру в целом неудобно работать со словами. Для нас «мама», «мыла» и «раму» - три совершенно понятные языковые единицы. Для машины это просто последовательности букв. Поэтому перед обучением модели огромную гору текстов сначала разбирают и ищут в ней кусочки, которые постоянно повторяются.
Допустим, начинаем с букв. Но сочетание «ма» встречается постоянно - имеет смысл считать его одним кусочком. «Мама» встречается тоже часто - можно добавить целиком. То же самое постепенно происходит с частями слов, целыми словами, окончаниями, знаками препинания и даже пробелами. В результате получается огромный набор деталей, из которых можно собрать практически любой текст.
Вот эти детали и называются токенами.
Можно представить их как детали конструктора. В коробке есть крупные и часто используемые детали - распространенные слова и сочетания. Есть мелкие - части редких слов и отдельные символы. «Мама» может оказаться одной готовой деталью, какое-нибудь «межконтинентальный» придется собрать из нескольких, а фамилию никому не известного новозеландского разработчика климатического оружия модель, возможно, вообще будет собирать почти по буквам.
Внутри модели у каждого токена есть свой номер. Условно, «мама» - 18342, какой-нибудь кусок «континент» - 7311, точка - 13. Когда мы отправляем модели предложение, к ней в итоге приезжают не слова, а последовательность токенов, переведенных в номера.
И вот с ними она уже работает.
Поэтому наше старое «мама мыла» на самом деле означает не «модель выбирает следующее слово». Она получает цепочку номеров и решает, токен под каким номером должен быть следующим. Выбрала. Теперь последовательность стала длиннее, и нужно выбрать следующий. Еще один. Еще. Потом эти номера обратно собираются в токены, и мы видим нормальный человеческий ответ.
Этот процесс называется токенизацией. Вы спросите - зачем так сложно, почему не сделать каждый символ отдельным токеном и успокоиться? Потому что модель работает с токенами по одному. Если «мама» - один токен, для ее генерации достаточно одного шага. Если «мама» - четыре токена, нужно уже четыре, причем на каждом следующем шаге приходится учитывать все, что было до него. А теперь попробуйте таким способом собрать «межконтинентальную баллистическую ракету». Поэтому делать токенами отдельные буквы можно, но дорого, а сделать отдельный токен для каждого существующего слова не имеет смысла (приставки, суффиксы, окончания, новые слова). Поэтому часто встречающееся пакуем крупно, редкое собираем из мелочи. Чем короче в итоге получилась цепочка, тем меньше работы.
Сейчас придется немного уточнить и предыдущую заметку. Там мы для простоты представляли параметры как мини ассоциации между словами и понятиями. Это было упрощение: никаких готовых «мама - дом - уборка» модель не держит. Она работает с токенами и их сочетаниями, а привычные нам ассоциации возникают уже из всего это массива. Для понимания принципа сойдет, но подробнее разберу позже.
Кстати, разным языкам повезло по-разному. Русский многие словари токенов режут мельче английского и других европейских языков, поэтому один и тот же по смыслу текст на русском часто превращается в более длинную цепочку.
В итоге, мы пишем модели слова, которых она не видит. Она отвечает словами, которые не выбирает. Между нами ездят только номера кусочков текстов.
Но «ИИ угадывает следующее слово» все равно остается вполне рабочим объяснением.
Просто иногда для того, чтобы подставить одно слово, ему приходится угадать его несколько раз по частям.