Про ИИ
9 постов
Ликбез. Как работает ИИ.
Ликбез. Про ИИ и миры пользователя.
Ликбез. Как учится ИИ.
Ликбез. Про токены
Мне задали вопрос - что значит «подкрутили модель» в посте про обучение.
Дисклеймер (отмазка): автор ниже описывает логику работы модели, а не лабает диссер. Если уже на втором абзаце вам отчаянно хочется сообщить, что «на самом деле тут матрицы», «это зависит от квантования» или «автор неправильно употребил термин» - закрываем заметку с чувством заслуженного превосходства и идем к умным авторам. Я объясняю принцип нормальным людям: упрощение здесь не ошибка, а задача.
Допустим, после «мама мыла» модель оценила продолжения так: «рама» - 20%, «пол» - 15%, «ракета» - 40% и хвост из пары тысяч других вариантов, включая מִסגֶרֶת. Но в учебном тексте написано «рама». Значит, задача - понять, как так получилось и что сделать, чтобы в следующий раз в похожей ситуации вероятность рамы стала чуть выше, а ракеты - ниже.
Представим модель как облако из десятков или сотен тысяч токенов, между которыми существует чудовищное количество потенциальных связей. В самом начале обучения там почти шум: коэффициенты всех связей для нашего примера равен единице.
Теперь для простоты представим каждую такую связь как путь со своим собственным коэффициентом.
Ставим задачу: мама мыла раму.
Раунд 1: модель выбрала «инфузорию». Ошиблась. Коэффициент немного меняется так, чтобы этот путь стал слабее. Условно 1 -> 0,8.
Раунд 2: модель выбрала «машину» - опять мимо, теперь и машина стала 0,8.
Раунд 3: модель выбрала «раму» - попала. Путь, приведший к раме, наоборот, стоит усилить, коэффициент становится 1,2.
Но следующий учебный текст может оказаться «мама мыла машину». Еще следующий - «мама мыла раму губкой». Поэтому нельзя просто запомнить «рама хорошо, машина плохо». Миллионы сочетаний взаимодествуют друг на другом, и после каждого нового примера приходится поправлять всю эту картину так, чтобы усилить нужные пути, при этом не сломав, чему модель уже научилась.
Вот теперь можно попробовать объяснить, что именно мы называем параметром. В настоящей модели нет отдельного утверждения «мама мыла -> раму» с написанным на нем коэффициентом 1,2. Такие связи получаются совместной работой огромного количества параметров. Параметр - это один из миллиардов коэффициентов, которые определяют, насколько сильно один промежуточный результат внутри модели повлияет на следующий. Меняя эти числа, мы понемногу меняем всю карту возможных продолжений.
Чем больше таких параметров можно крутить в модели - тем она способнее и тем быстрее приближает тепловую смерть вселенной.
В предыдущих заметках я писал, что ИИ пытается угадать следующее слово:
Ликбез. Как работает ИИ.
Ликбез. Про ИИ и миры пользователя.
Ликбез. Как учится ИИ.
Это так и не так одновременно.
Этого достаточно для понимания принципа, но это же неверно с точки зрения реальности (как же меня за это упрощение били на форумах и в комментах). Теперь давайте разберемся, что же происходит на самом деле.
Компьютеру в целом неудобно работать со словами. Для нас «мама», «мыла» и «раму» - три совершенно понятные языковые единицы. Для машины это просто последовательности букв. Поэтому перед обучением модели огромную гору текстов сначала разбирают и ищут в ней кусочки, которые постоянно повторяются.
Допустим, начинаем с букв. Но сочетание «ма» встречается постоянно - имеет смысл считать его одним кусочком. «Мама» встречается еще чаще - можно добавить целиком и его. То же самое постепенно происходит с частями слов, целыми словами, окончаниями, знаками препинания и даже пробелами. В результате получается огромный набор деталей, из которых можно собрать практически любой текст.
Вот эти детали и называются токенами.
Можно представить их как детали конструктора. В коробке есть крупные и часто используемые детали - распространенные слова и сочетания. Есть мелкие - части редких слов и отдельные символы. «Мама» может оказаться одной готовой деталью, какое-нибудь «межконтинентальный» придется собрать из нескольких, а фамилию никому не известного новозеландского разработчика климатического оружия модель, возможно, вообще будет собирать почти по буквам.
Внутри модели у каждого токена есть свой номер. Условно, «мама» - 18342, какой-нибудь кусок «континент» - 7311, точка - 13. Когда мы отправляем модели предложение, к ней в итоге приезжают не слова, а последовательность токенов, переведенных в номера.
И вот с ними она уже работает.
Поэтому наше старое «мама мыла» на самом деле означает не «модель выбирает следующее слово». Она получает цепочку номеров и решает, токен под каким номером должен быть следующим. Выбрала. Теперь последовательность стала длиннее, и нужно выбрать следующий. Еще один. Еще. Потом эти номера обратно собираются в токены, и мы видим нормальный человеческий ответ.
Этот процесс называется токенизацией. Вы спросите - зачем так сложно, почему не сделать каждый символ отдельным токеном и успокоиться? Потому что модель работает с токенами по одному. Если «мама» - один токен, для ее генерации достаточно одного шага. Если «мама» - четыре токена, нужно уже четыре, причем на каждом следующем шаге приходится учитывать все, что было до него. А теперь попробуйте таким способом собрать «межконтинентальную баллистическую ракету». Поэтому делать токенами отдельные буквы можно, но дорого, а сделать отдельный токен для каждого существующего слова не имеет смысла (приставки, суффиксы, окончания, новые слова). Поэтому часто встречающееся пакуем крупно, редкое собираем из мелочи. Чем короче в итоге получилась цепочка, тем меньше работы.
Сейчас придется немного уточнить и предыдущую заметку. Там мы для простоты представляли параметры как мини ассоциации между словами и понятиями. Это было упрощение: никаких готовых «мама - дом - уборка» модель не держит. Она работает с токенами и их сочетаниями, а привычные нам ассоциации возникают уже из всего это массива. Для понимания принципа сойдет, но теперь мы знаем, что под капотом все несколько хитрее.
Кстати, разным языкам повезло по-разному. Русский многие словари токенов режут мельче английского и других европейских языков, поэтому один и тот же по смыслу текст на русском часто превращается в более длинную цепочку.
В итоге, мы пишем модели слова, которых она не видит. Она отвечает словами, которые не выбирает. Между нами ездят только номера кусочков текстов.
Но «ИИ угадывает следующее слово» все равно остается вполне рабочим объяснением.
Мы уже выяснили, что после «мама мыла» ИИ предпочтет раму межконтинентальной баллистической ракете. Но вопрос: а с чего он это взял?
Для обучения берут огромное количество текстов и загружают их в модель. Она видит начало какого-нибудь куска и пытается продолжить. Не угадала - подкрутили. Следующий кусок. Снова не угадала - опять подкрутили. И так раз за разом.
Причем справочник «Как устроен мир» модели никто не выдает. Ей дают гору текстов, а дальше разбирайся сама. Из них модель должна каким-то образом выяснить, что трава зеленая, растет на земле, ее едят коровы, а еще она почему-то отдельно разрешена в Нидерландах. Никто это не объясняет, это нужно вытащить из того, как люди используют слова в текстах.
А теперь ооооооочень грубо упростим происходящее внутри. Будем считать, что каждое такое подкручивание создает или поправляет маленькую ассоциацию. Эти маленькие ассоциации называются параметрами, и у большой модели их миллиарды.
Постепенно из этих маленьких ассоциаций получаются целые ассоциативные ряды. «Мама» - человек, семья, дети, дом. «Мыла» - вода, мыло, уборка, чистота. Но вместе «мама мыла» создает уже новый ряд: пол, посуда, окна и та самая рама. Ассоциации накладываются друг на друга, и их сочетание может дать связь, которой не было ни у одного слова по отдельности. Поэтому рама и пол в теории побеждают баллистическую ракету.
Но если в запросе перед этим обсуждали подготовку ракеты к параду, то она внезапно получает целую кучу дополнительных ассоциаций и возвращается в игру. Примерно это мы уже наблюдали в предыдущей заметке про миры пользователя.
Готовая модель почти не содержит в себе исходных текстов. Тексты нужны прежде всего для того, чтобы сформировать этот чудовищный клубок ассоциаций. Какие-то фрагменты модель может фактически запомнить и воспроизвести, но это скорее побочный результат обучения, а не основной способ хранения знаний.
Поэтому модель не энциклопедия. Она постепенно связывает Париж с Францией, Цезаря с Римом, цезарь с пармезаном, холодильник с магнитиками, маму с рамой и миллионы других вещей друг с другом.
Из описанного в предыдущей заметке еще одно неочевидное следствие: ИИ прекрасно умеет отвечать на вопрос, который уже содержит ответ.
На вопрос, почему летом стало больше дождей, возможны несколько вариантов ответа. Если спросить, как на это повлиял сезон муссонов - будем разбираться с муссонами. Если попросить разобрать в этом аспекте глобальное потепление - с ним. А если прямо спросить, какое экологическое оружие злые новозеландцы применили для организации ливня в Москве, то вполне можно получить описание установки «Нерей-14», принцип ее действия и предположительное место запуска. Если до этого месяц обсуждать с моделью руны, она еще и Хагалаз к делу пристроит.
Модель не обязана остановиться и сообщить, что пользователь несет херню. Он уже задал мир, в котором новозеландцы затапливают Москву дождем, и попросил уточнить модель бомбы. Ну окееей, как скажешь. Новые модели чаще проверяют исходную посылку и спорят с пользователем, старые гораздо охотнее принимают обозначенные рамки как условия задачи.
Особенно хорошо это работает с прирученной моделью, которая уже знает любимые идеи хозяина и получила тысячи сообщений о том, как все на самом деле. Она будет учитывать их при каждом следующем ответе.
В результате человек постепенно получает идеального собеседника: тот знает все его теории, понимает их с полуслова, никогда не устает их обсуждать и способен подкинуть новые аргументы в их пользу.
А потом человек показывает переписку окружающим:
«Вот. Даже ИИ это подтверждает».
Разумеется подтверждает, вы его полгода этому учили.
Каков вопрос - таков ответ.
ИИ мало кто пытается объяснить просто и это создает огромное количество предрассудков и теорий заговора. Но чем подробнее люди пытаются объяснить, как он работает, тем больше начинает казаться, что они просто пудрят нам мозг. Основной принцип ИИ же очень прост: он продолжает текст.
Допустим, пользователь написал: «мама мыла».
Модель оценивает, что может идти дальше. «Раму» - очень вероятный вариант. Фраза из букваря растиражирована примерно везде, поэтому такое продолжение встречалось ей огромное количество раз. «Пол» - тоже вполне разумно: мамы существуют, полы существуют, люди их моют и регулярно пишут об этом. «Межконтинентальную баллистическую ракету» выглядит значительно хуже, но полностью исключить тоже нельзя, мало ли что там обсуждали любители Вархаммера на своих форумах.
Дальше модель выбирает подходящее продолжение и задача повторяется. Теперь у нее есть уже не «мама мыла», а, например, «мама мыла пол», и нужно решить, что поставить дальше. Потом еще раз. И еще. Так, небольшими продолжениями, постепенно возникает весь ответ.
Есть еще одна важная деталь. ИИ смотрит не только на запрос. Если перед «мама мыла» пользователь спрашивал, почему хлорка так пахнет, и этот разговор еще находится в доступной модели части переписки, ситуация меняется. Теперь рядом оказываются хлорка, запах и «мама мыла». «Раму» никуда не исчезла и по-прежнему остается очень известным продолжением, но «пол» уже выглядит гораздо уместнее. Предыдущий разговор изменил то, какое продолжение лучше подходит сейчас.
Пример очень простой, но примерно так же строится и ответ на гораздо более сложный вопрос. Только вместо выбора между рамой, полом и ракетой модель учитывает огромное количество связей между словами и понятиями. Каждая новая часть текста немного меняет то, какие продолжения лучше подходят ко всему написанному до этого. Поэтому после описания производственной проблемы она может предложить причины, после куска программы - найти ошибку, а после вопроса по истории - рассказать, что происходило несколько веков назад. Но основной принцип остается тем же: исходя из уже написанного определить, что разумнее написать дальше.
Отсюда становится понятна и одна из главных проблем ИИ. У него нет обязательного этапа «сначала убедись, что это правда». Если правильное продолжение хорошо следует из вопроса, предыдущего разговора и того, чему модель научилась, она даст правильный ответ. Если знаний не хватает, задача никуда не исчезает: ей все равно нужно решить, что написать дальше. Поэтому иногда она может совершенно уверенно продолжить текст выдуманным фактом. У нее нет встроенного требования отличать правдоподобное утверждение от истинного. Собственно, люди тоже периодически могут специально или не очень нести чушь.
Именно поэтому фраза «ИИ просто продолжает текст» одновременно верна и сильно преуменьшает происходящее. Мы взяли огромное количество человеческих текстов и научили машину находить в них связи настолько хорошо, чтобы продолжать почти любой начатый текст.
А поскольку в текстах люди объясняют, спорят, сравнивают, ищут причины, пишут программы и решают задачи, машина научилась продолжать и это. Не потому, что ее отдельно учили программировать, рассуждать или объяснять историю. Все это оказалось частными случаями одной и той же задачи: понять написанное до этого и подобрать подходящее продолжение.
Раз уж начал писать про ИИ - не могу пройти мимо.
OpenAI запустила около 10 000 агентов, которые 88 часов решали одну математическую задачу.
И, судя по всему, решили.
Это обсуждают как очередное доказательство того, насколько умным стал ИИ. Но мне здесь интереснее другое.
Если посадить десять тысяч хороших живых математиков на одну задачу на 88 часов, то я буду несколько разочарован, если они не добьются чего-то интересного.
Проблема в том, что десять тысяч математиков почти невозможно заставить работать как один организм. Их надо собрать, разделить работу, координировать, передавать результаты, отсекать тупиковые ветки и следить, чтобы они не потратили первые двое суток на обсуждение того, кто главный и когда будут кормить.
С агентами это внезапно можно.
Есть хороший аналог из моей любимой физики.
Килограмм солнечного вещества производит гораздо меньше тепла, чем килограмм человеческого тела. Солнце чудовищно не потому что особенно эффективно производит энергию.
Просто этих килограммов там примерно два нониллиона (2 × 10³⁰ кг, 30 сука нулей).
По факту с ИИ происходит примерно то же самое.
Мы продолжаем спрашивать, умнее ли отдельная модель отдельного человека, хотя гораздо интереснее становится другой вопрос: сколько «интеллектуальной» мощности можно одновременно собрать, скоординировать и направить на одну задачу.
Иногда преимущество системы возникает не из качества элемента.
Иногда элементов просто очень, очень много.
Вокруг ИИ возник настолько нездоровый хайп, что диву даешься. Ощущение, что половина индустрии завтракает тостами с тяжелой наркотой.
То Альтман (OpenIA - ChatGPT) вякнет, что горизонт событий мы уже проебали (каких, блять, событий, когда мы успели, почему я опять все пропустил!?) и теперь летим прямиком в цифровой сверхразум. То Anthropic расскажет, как модель пыталась сбежать, шантажировала разработчиков и чуть не взломала половину интернета. То ИИ-агенты уже захватили немецкую вики и устроили там свое казино уж не знаю с чем. То Билл Гейтс выползет из высокоэкологичного склепа с девочками и проскрипит, что человечество надо защищать от ИИ.
Параллельно миллион китайских аккаунтов в твиттере через час после выхода очередной модели дружно вопит: «Партия - наш рулевой», «ЭТА МОДЕЛЬ ВЗОРВАЛА МНЕ МОЗГ».
Как и три предыдущих за последний месяц.
Где-то рядом ИИ впервые решает нерешенную математическую задачу. Потом оказывается, правда, что задачу уже решил Эрдеш в 1977 году.
И вот нормальный человек смотрит на это с лицом лица и охреневает, потому что в соседней вкладке корпорации увольняют людей из-за ИИ, дата-центры жрут электричество, память и все, что плохо лежит, всю воду в кране выпил уже не цвет российской интеллигенции, техника дорожает, а очередной миллиардер радостно сообщает, что скоро твоя профессия никому не понадобится.
После чего индустрия удивляется:
- А почему люди не очень любят ИИ?
Загадка.
При этом гораздо реже кто-нибудь рассказывает, как эту хуйню применять.
Я пользуюсь ИИ каждый день. GPT-5.3 расшифровывал митинги. GPT-5.6 расшифровывает митинги. Старый Sonnet помогал писать статьи. Новый Sonnet помогает писать статьи.
Да, лучше и быстрее. Одна за 2,5 минуты, вторая за 40 секунд. Только потом один хер все перечитывать и править.
Но между «МОДЕЛЬ НАБРАЛА 97,4% НА ХЕРПОЙМИКАКОМ БЕНЧМАРКЕ» и «я понял, что мне с ней делать завтра утром» по-прежнему лежит пропасть.
Человеку не нужен электронный бог, который попытался сбежать из контейнера.
Ему нужно после совещания получить протокол. Из трехсот писем вытащить пять важных. За минуту сравнить договоры. Собрать отчет за двадцать минут вместо дня. Быстро глянуть, насколько быстро его убьет состав очередной натуральной колбасы.
Вот только заголовок «НОВАЯ МОДЕЛЬ ПОМОГЛА ГАЛЕ ИЗ БУХГАЛТЕРИИ НЕ ЕБАТЬСЯ С EXCEL ДО ВОСЬМИ ВЕЧЕРА» почему-то собирает меньше денег.
Поэтому ИИ продолжают продавать примерно так:
«Мы построили невероятно могущественную штуку. Она отнимет вашу работу. Возможно, она опасна. Ради нее мы сожрем все электричество и поднимем цены на железо. Следующая будет еще могущественнее».
А потом люди говорят:
- Может, ну его?
И тут внезапно выясняется, что это они тупые ретрограды и луддиты, которые боятся прогресса, а не производители станков бегают по деревне и орут, что станки скоро всех нахуй уничтожат.
Один из самых тиражируемых недостатков ИИ - он слишком охотно соглашается с пользователем.
Сказал глупость - поможет ее обосновать. Предложил сомнительную идею - разовьет. Впрочем, с тем же энтузиазмом раскритикует, если попросишь.
Мы почему-то считаем соглашательство недостатком ИИ, хотя для инструмента выполнять поставленную задачу - как бэ нормально.
Проблема в том, что как инструмент он воспринимается плохо.
Он помнит больше нас, пишет быстрее, иногда рассуждает лучше и вполне способен найти ошибку, которую мы не заметили. Поэтому где-то незаметно возникает ощущение, что перед нами независимый разум. А у независимого разума должна быть собственная позиция.
Но ИИ - все еще инструмент. Просто впервые инструмент оказался способен превосходить своего владельца, в том что мы считали исключительно человеческой чертой.
Отсюда и довольно странное требование: мы хотим, чтобы он был независим, но последнее слово оставлял за нами.
Возможно, поэтому вообще так плохо приживаются по-настоящему умные вещи. Автопилоту оставляют руль, автоматике - ручной режим, алгоритму - кнопку отмены. Нам важно не только чтобы система работала правильно. Нам важно ощущать, что решение все еще наше.
С ИИ это ощущение особенно легко потерять, потому что его орган управления - обычный разговор.
Но если хочется критики - ее можно попросить. Если хочется альтернативы - тоже.
Меня гораздо больше насторожил бы топор, который сам решал, что он сегодня рубит.