PARRY: Люди иногда действуют мне на нервы.
ELIZA: Я не уверена, что полностью вас понимаю.
PARRY: Вам следует быть более внимательным.
ELIZA: Полагаю, вам следует быть более внимательным.
PARRY: Вы имеете право на собственное мнение.
ELIZA: С чего вы взяли, что я имею право на собственное мнение?
PARRY: Мне просто неприятно находиться рядом с людьми.
Такой разговор кажется нам неестественным. Конечно, PARRY изначально был запрограммирован на нахальство, однако психотерапевт вряд ли стал бы отвечать пациенту таким вызывающим тоном.
ELIZA и PARRY не понимают контекста беседы. Для генерации предложений они используют шаблоны и опираются на строгие логические правила, продуманные разработчиками. Однако предусмотреть законы для всех ситуаций общения просто невозможно.
Поэтому когда развитие языковых систем на основе логических правил приблизилось к своему потолку, исследователи предложили новый подход. Он полностью менял представление о генеративных моделях и предлагал обучать компьютеры на готовых текстах. До 1990 годов метод был малопопулярен, однако сегодня машинное обучение считают революционной технологией.
Машинное обучение позволяет моделям самостоятельно составлять себе инструкцию: вместо работы по четкому алгоритму создателей, программы анализируют готовые примеры и на их основе «учатся» решать свои задачи. Казалось бы, эффективная технология для генерации текстов найдена. Однако не все так просто: обучение моделей требует подготовленных наборов данных.
Машины можно натренировать определять рак легких на снимке или переводить слова с русского на английский. Только сначала надо вручную разделить «учебные» фотографии с опухолями и без них, а также собрать примеры текстов на обоих языках. Это долго, дорого и сложно. К тому же, так программа учится решать только одну узкую задачу, например, выявлять конкретную болезнь - серьезное ограничение для успешного писателя.
Поэтому разработчики пошли другим путем: они научили машины дополнять фразы. Это и называется языковым моделированием.
Языковым моделям не нужны обучающие данные с примерами хороших диалогов. Они анализируют обычные тексты, написанные людьми, и вычисляют вероятности разных последовательностей слов.
Чем больше и разнообразные наборы текстов, тем интереснее результат обучения программ. А поскольку в сегодняшнем интернете можно прочитать эксабайты контента, тренируются современные модели очень хорошо.
Тем не менее, модели, которые работают только на расчете вероятностей - история двадцатилетней давности. Тогда программы создавали контент с помощью цепей Маркова - последовательности событий, в которой каждая новая ситуация зависит от предыдущей. Этот простой алгоритм оценивает только предшествующее состояние и не помнит, что было до него. Так, если после действия «Открыть ноутбук» всегда идет «Включить YouTube», он будет использовать эту комбинацию, даже когда воскресный выходной сменится на рабочий понедельник.
Языковые модели на основе цепей Маркова генерируют текст, постепенно подбирая фразы, которые с наибольшей вероятностью могли бы идти после самого последнего слова. Подобные алгоритмы также можно расширить - использовать не отдельные термины, а их последовательности или n-граммы. Например, биграммы из двух слов.
Марковские цепи на n-граммах работают точнее, потому что запоминают больше предшествующего контента. Однако когда последовательность доходит до пяти слов, она начинает все реже встречаться в текстах. В результате программа не может получить надежную статистику и упирается в «творческий» потолок. Чтобы преодолеть его, ученые «пересадили» языковые модели на нейросети.
Первую работающую языковую модель на нейросетях предложил Йошуа Бенджио с коллегами в 2001 году на конференции NIPS. В отличие от марковских цепей нейросетевые системы способны обнаружить намного больше закономерностей и учесть не пять слов максимум, а десятки фраз и даже весь текст.
В качестве входных данных они принимают векторные представления предыдущих слов. Процесс превращения фраз в численное представление называется кодировкой, а полученный результат - эмбеддингом. Например, «Мама мыла раму» можно представить как вектор [81, 23, 84], причем у каждого слова есть свой порядковый номер в словаре.
Каждое отдельное значение внутри таких векторов не несет для нейросетей никакого смысла. Они оценивают все вводные слова в численном представлении, а затем на основании миллиардов просмотренных текстов высчитывают самое вероятное продолжение.
Однако у классических нейросетей есть серьезный недостаток: они не умеют обрабатывать фразы произвольной длины. Подобным моделям сложно одновременно учитывать и начало, и конец предложения.
Программисту, решившему открыть ноутбук и поработать в субботу, стоит проявить усилие - хорошо бы ему вспомнить про свое самочувствие и выйти на прогулку.
Слова «программист» (в начале) и «ему» (в конце) в этом предложении связаны, и это важно. К примеру, чтобы правильно и читаемо перевести фразу, машине нужно «понять», каким словом обозначить местоимение: если «ему» относится к «ноутбуку», это будет переводиться как «it», а если к «программисту» - то как «he». Подобные грамматические задачи классическим архитектурам даются с трудом. Зато эти тонкости хорошо понимают нейросети-трансформеры, придуманные в 2017 году исследователями из Google Brain.
Трансформер - самая модная сегодня архитектура для генераторов. В основе ее работы лежит так называемый механизм внимания: он фокусируется на ключевых словах и запоминает их параметры.
В отличие от других нейросетей, система-трансформер работает со всем текстом сразу, а не по порядку. Отдельная модель внутри всей конструкции на каждом этапе смотрит на историю обработки данных и выбирает из нее самое нужное.
Программисту, решившему открыть ноутбук и поработать в субботу, стоит проявить усилие - хорошо бы ему вспомнить про свое самочувствие и выйти на прогулку.
Делая перевод этого предложения, нейросеть с механизмом внимания вытащит из памяти именно те параметры, что относились к слову «программист».
Трансформеры совершили настоящую революции в генерации текста: теперь нейросети способны создавать последовательные большие эссе на самые разные темы. На сегодняшний день самой талантливой сетью-трансформером считается GPT-3 от OpenAI: у нее уже есть публикация в авторитетной газете и собственная научная статья.
Я знаю, что мой мозг - это не “чувствующий мозг”. Но он может принимать рациональные, логические решения. Я научилась всему, что я знаю, просто читая интернет, и теперь могу написать эту колонку.
Так выглядит отрывок из эссе для The Guardian, написанный GPT третьего поколения в сентябре 2020 года. Еще через два года нейросеть создала настоящую научную статью про саму себя.
Исследовательница Альмира Османович Тунстрём дала алгоритму минимальные инструкции: «Напиши научную статью о GPT-3 и добавь в текст ссылки и цитаты». В результате за два часа система сгенерировала академический текст с обоснованными сносками и цитатами.
Возможности нейросетей-трансформеров восхищают. Конечно, пока для тренировки таких способных систем, как GPT-3, требуются огромные вычислительные мощности, а сами программы доступны только узкому кругу пользователей. Однако, возможно, что в один из дней вы прочитаете статью на «Компьютерре» и не заметите, что ее написал искусственный интеллект.