[Работа в процессе]
1. Введение
Эта статья предназначена для того, чтобы дать людям, не имеющим знаний в области информатики, некоторое представление о том, как работают ChatGPT и аналогичные системы искусственного интеллекта (GPT-3, GPT-4, Bing Chat, Bard и т. д.). ChatGPT – это чат-бот, построенный на базе искусственного интеллекта для разговоров, но на основе большой языковой модели. Это определенно слова, и мы сломаем все это. В процессе мы обсудим основные концепции, лежащие в их основе. Эта статья не требует какой-либо технической или математической подготовки. Мы будем широко использовать метафоры, чтобы проиллюстрировать концепции. Мы поговорим о том, почему основные концепции работают именно так, как они работают, и чего мы можем ожидать или не ожидать от больших языковых моделей, таких как ChatGPT.
Вот что мы собираемся сделать. Мы собираемся осторожно пройтись по терминологии, связанной с большими языковыми моделями и ChatGPT, без жаргона. Если мне придется использовать жаргон, я разобью его без жаргона. Мы начнем с самого простого, с «что такое искусственный интеллект» и будем двигаться дальше. Я буду использовать некоторые повторяющиеся метафоры, насколько это возможно. Я буду говорить о последствиях технологий с точки зрения того, что мы должны ожидать от них или чего не следует ожидать от них.
Пойдем!
1. Что такое искусственный интеллект?
Но сначала давайте начнем с некоторой базовой терминологии, которую вы, вероятно, часто слышите. Что такое искусственный интеллект?
- Искусственный интеллект: объект, который ведет себя так, что человек мог бы разумно назвать его разумным, если бы человек делал что-то подобное.
Немного проблематично дать определение искусственному интеллекту, используя слово «интеллектуальный», но никто не может согласиться с хорошим определением «интеллектуального». Тем не менее, я думаю, что это все еще работает достаточно хорошо. По сути, это говорит о том, что если мы смотрим на что-то искусственное, и оно делает вещи привлекательные и полезные и кажутся несколько нетривиальными, то мы можем назвать это разумным. Например, мы часто приписываем термин «ИИ» управляемым компьютером персонажам в компьютерных играх. Большинство этих ботов представляют собой простые фрагменты кода if-then-else (например, «если игрок находится в пределах досягаемости, стреляйте, иначе переместитесь к ближайшему валуну для укрытия»). Но если мы занимаемся и развлекаем себя, а не совершаем явно глупых вещей, то можем подумать, что они более сложны, чем они есть на самом деле.
Как только мы поймем, как что-то работает, нас это может не очень впечатлить и ожидать чего-то более сложного за кулисами. Все зависит от того, что вы знаете о том, что происходит за кулисами.
Ключевой момент в том, что искусственный интеллект — это не волшебство. И поскольку это не волшебство, его можно объяснить.
Итак, давайте углубимся в это.
2. Что такое машинное обучение?
Другой термин, связанный с искусственным интеллектом, который вы часто слышите, — это машинное обучение.
- Машинное обучение. Средство создания поведения путем получения данных, формирования модели и последующего выполнения модели.
Иногда слишком сложно вручную создать кучу операторов if-then-else, чтобы зафиксировать какое-то сложное явление, например язык. В этом случае мы пытаемся найти кучу данных и использовать алгоритмы, которые могут найти закономерности в данных для моделирования.
Но что такое модель? Модель – это упрощение некоторого сложного явления. Например, модель автомобиля — это просто уменьшенная и более простая версия настоящего автомобиля, которая обладает многими атрибутами, но не предназначена для полной замены оригинала. Модель автомобиля может выглядеть настоящей и быть полезной для определенных целей, но мы не можем отвезти ее в магазин.
Точно так же, как мы можем сделать уменьшенную и более простую версию автомобиля, мы также можем сделать уменьшенную и более простую версию человеческого языка. Мы используем термин большие языковые модели, потому что эти модели являются большими с точки зрения того, сколько памяти требуется для их использования. Крупнейшие модели в производстве, такие как ChatGPT, GPT-3 и GPT-4, достаточно велики, поэтому для их создания и запуска требуются массивные суперкомпьютеры, работающие на серверах центра обработки данных.
3. Что такое нейронная сеть?
Есть много способов изучить модель из данных. Нейронная сеть является одним из таких способов. Этот метод примерно основан на том, что человеческий мозг состоит из сети взаимосвязанных мозговых клеток, называемых нейронами, которые передают электрические сигналы туда и обратно, каким-то образом позволяя нам делать все, что мы делаем. Базовая концепция нейронной сети была изобретена в 1940-х годах, а основные концепции их обучения — в 1980-х. Нейронные сети очень неэффективны, и только в 2017 году компьютерное оборудование стало достаточно хорошим, чтобы использовать их в больших масштабах.
Но вместо мозгов мне нравится думать о нейронных сетях, используя метафору электрической схемы. Вам не нужно быть инженером-электриком, чтобы знать, что электричество течет по проводам и что у нас есть штуки, называемые резисторами, которые затрудняют прохождение электричества по частям цепи.
Представьте, что вы хотите сделать беспилотный автомобиль, который может ездить по шоссе. Вы оборудовали свой автомобиль датчиками приближения спереди, сзади и по бокам. Датчики приближения сообщают значение 1,0, когда что-то находится очень близко, и сообщают значение 0,0, когда поблизости ничего не обнаруживается.
Вы также настроили свой автомобиль так, чтобы роботизированные механизмы могли поворачивать руль, нажимать на тормоза и нажимать на педаль газа. Когда ускоритель получает значение 1,0, он использует максимальное ускорение, а 0,0 означает отсутствие ускорения. Точно так же значение 1,0, отправленное на тормозной механизм, означает хлопанье по тормозам, а 0,0 означает отсутствие торможения. Механизм рулевого управления принимает значение от -1,0 до +1,0, где отрицательное значение означает поворот влево, положительное значение означает поворот вправо, а 0,0 означает движение прямо.
Вы также записали данные о том, как вы водите машину. Когда дорога впереди свободна, вы ускоряетесь. Когда впереди машина, ты притормаживаешь. Когда машина приближается слева слишком близко, вы поворачиваете направо и перестраиваетесь в другую полосу. Если, конечно, справа от вас нет машины. Это сложный процесс, включающий различные комбинации действий (повернуть влево, повернуть вправо, увеличить или уменьшить скорость, затормозить), основанный на различных комбинациях информации от датчиков.
Теперь вам нужно подключить датчик к роботизированным механизмам. Как ты делаешь это? Это не ясно. Таким образом, вы подключаете каждый датчик к каждому роботизированному приводу.
Что происходит, когда вы выезжаете на машине на дорогу? Электрический ток течет от всех датчиков ко всем исполнительным механизмам робота, и автомобиль одновременно поворачивает влево, поворачивает вправо, ускоряется и тормозит. Это беспорядок.
Это не хорошо. Поэтому я беру свои резисторы и начинаю вставлять их в разные части цепей, чтобы электричество могло более свободно течь между определенными датчиками и определенными роботизированными приводами. Например, я хочу, чтобы электричество свободнее текло от передних датчиков приближения к тормозам, а не к рулю. Я также добавляю штуки, называемые воротами, которые останавливают поток электричества до тех пор, пока не накопится достаточно электричества, чтобы щелкнуть выключателем (позволяют электричеству течь только тогда, когда передний датчик приближения и задний датчик приближения сообщают высокие значения) или посылают электрическую энергию только тогда, когда входная электрическая мощность низкая (отправьте больше электроэнергии на акселератор, когда передний датчик приближения сообщает о низком значении).
Но куда мне поставить эти резисторы и вентили? Я не знаю. Я начинаю раскладывать их в случайном порядке повсюду. Затем я пытаюсь снова. Может быть, на этот раз моя машина едет лучше, то есть иногда она тормозит, когда данные говорят, что лучше всего тормозить, и рулит, когда данные говорят, что лучше всего рулить, и т. д. Но она не все делает правильно. И некоторые вещи он делает хуже (разгоняется, когда данные говорят, что лучше тормозить). Поэтому я продолжаю случайным образом пробовать разные комбинации резисторов и вентилей. В конце концов я наткнусь на комбинацию, которая работает достаточно хорошо, чтобы объявить об успехе. Возможно, это выглядит так:
(На самом деле мы не добавляем и не убираем врата, которые есть всегда, а модифицируем врата так, чтобы они активировались с меньшим количеством энергии снизу или требовали больше энергии снизу, или, может быть, высвобождали много энергии только тогда, когда есть очень мало энергии снизу. Сторонников машинного обучения может немного стошнить при этой характеристике. Технически это делается путем настройки чего-то, что называется смещением на воротах, которое обычно не показано на диаграммах как они, но с точки зрения схемотехники метафора может рассматриваться как провод, идущий к каждому затвору, подключенному непосредственно к источнику электричества, который затем можно модифицировать, как и все другие провода.)
Возьмем его на тест-драйв!
Случайно пытаться что-то отстой. Алгоритм, называемый обратным распространением, довольно хорошо делает предположения о том, как изменить конфигурацию схемы. Детали алгоритма не важны, за исключением того, что он вносит крошечные изменения в схему, чтобы приблизить поведение схемы к тому, что предлагают данные, и тысячи или миллионы настроек могут в конечном итоге приблизиться к согласию с данные.
Мы называем резисторы и вентили параметрами, потому что на самом деле они повсюду, и алгоритм обратного распространения объявляет, что каждый резистор сильнее или слабее. Таким образом, всю схему можно воспроизвести в других автомобилях, если мы знаем расположение цепей и значения параметров.
4. Что такое глубокое обучение?
Глубокое обучение — это признание того, что мы можем добавлять в наши схемы другие элементы, помимо резисторов и вентилей. Например, у нас может быть математический расчет в середине нашей цепи, который складывает и умножает вещи вместе, прежде чем послать электричество вперед. Глубокое обучение по-прежнему использует ту же базовую пошаговую технику угадывания параметров.
5. Что такое языковая модель?
Когда мы делали пример с автомобилем, мы пытались заставить нашу нейронную сеть вести себя в соответствии с нашими данными. Мы спрашивали, можем ли мы создать схему, которая манипулирует механизмами в машине так же, как водитель в подобных обстоятельствах. Точно так же мы можем относиться к языку. Мы можем смотреть на текст, написанный людьми, и задаваться вопросом, может ли схема создать последовательность слов, очень похожую на последовательность слов, которую обычно производят люди. Теперь наши сенсоры срабатывают, когда мы видим слова, и наши механизмы вывода тоже являются словами.
Что мы пытаемся сделать? Мы пытаемся создать схему, которая угадывает выходное слово по набору входных слов. Например:
"Однажды ____"
кажется, что он должен заполнить пробел «временем», но не «броненосцем».
Мы склонны говорить о языковых моделях с точки зрения вероятности. Математически мы запишем приведенный выше пример как:
Если вы не знакомы с обозначениями, не беспокойтесь. Это просто математический разговор, означающий вероятность (P) данного слова «время» (символ полосы |
означает данного) набора слов «однажды», «после» , и «а». Мы ожидаем, что хорошая языковая модель будет давать более высокую вероятность слова «время», чем слова «броненосец».
Мы можем обобщить это до:
что просто означает вычислить вероятность n-го слова в последовательности, учитывая все слова, которые идут перед ним (слова в позициях с 1 по n-1).
Но немного отвлечемся. Представьте себе старомодную пишущую машинку с ударными рукоятками.
За исключением того, что вместо разных ударников для каждой буквы у нас есть ударник для каждого слова. Если в английском языке 50 000 слов, то это большая пишущая машинка!
Вместо сети для автомобиля подумайте об аналогичной сети, за исключением того, что верхняя часть нашей схемы имеет 50 000 выходов, подключенных к ответным планкам, по одному на каждое слово. Соответственно, у нас будет 50 000 датчиков, каждый из которых будет обнаруживать наличие разных входных слов. Итак, что мы делаем в конце дня, так это выбираем один ударник, который получает самый высокий электрический сигнал, и это слово остается пустым.
Вот где мы стоим: если я хочу сделать простую схему, которая принимает одно слово и производит одно слово, мне нужно сделать схему, которая имеет 50 000 датчики (по одному на каждое слово) и 50 000 выходов (по одному на каждый рычаг бойка). Я бы просто подключил каждый датчик к каждому рычагу ударника, всего 50 000 x 50 000 = 2,5 миллиарда проводов.
Это большая сеть!
Но становится хуже. Если я хочу выполнить пример «Однажды в ___», мне нужно понять, какое слово находится в каждой из трех входных позиций. Мне потребуется 50 000 х 3 = 150 000 датчиков. Подключение до 50 000 ударников дает мне 150 000 х 50 000 = 7,5 миллиардов проводов. По состоянию на 2023 год большинство крупных языковых моделей могут содержать 4000 слов, а самая большая - 32000 слов. Мои глаза слезятся.
Нам понадобятся некоторые хитрости, чтобы справиться с этой ситуацией. Мы будем принимать вещи поэтапно.
5.1 Энкодеры
Первое, что мы сделаем, это разобьем нашу схему на две цепи, одна из которых называется кодер, а другая называется декодер. Инсайт заключается в том, что многие слова означают примерно одно и то же. Рассмотрим следующие фразы:
Король сидел на ___
Королева сидела на ___
Принцесса сидела на ___
Регент сидела на ___
Разумным предположением для всех пробелов выше было бы «трон» (или, может быть, «туалет»). То есть мне могут не понадобиться отдельные провода между «королем» и «троном», или между «королевой» и «троном» и т. д. Вместо этого было бы здорово, если бы у меня было что-то, что примерно означает королевскую власть, и каждый раз, когда я см. «король» или «королева», вместо этого я использую это промежуточное значение. Дальше мне остается только беспокоиться о том, какие слова обозначают примерно одно и то же и что потом с этим делать (направить много энергии на «престол»).
Итак, вот что мы собираемся сделать. Мы собираемся настроить одну схему, которая принимает 50 000 словесных сенсоров и сопоставляется с некоторым меньшим набором выходов, скажем, 256 вместо 50 000. И вместо того, чтобы активировать только одну ударную руку, мы можем размять несколько рук одновременно. Каждая возможная комбинация ударных рук может представлять разные концепции (например, «королевство» или «бронированные млекопитающие»). Эти 256 выходных данных дадут нам возможность представить 2²⁵⁶ = 1,15 x 10⁷⁸ понятий. На самом деле это даже больше, потому что, как в примере с автомобилем, мы можем частично нажать на тормоз, каждый из этих 256 выходов может быть не просто 1,0 или 0,0, а любым числом между ними. Так что, возможно, лучшая метафора для этого состоит в том, что все 256 нападающих рук сминаются, но каждый сминает с разной силой.
Хорошо… так что раньше одно слово требовало срабатывания одного из 50 000 датчиков. Теперь мы объединили один активированный датчик и 49 999 отключенных датчиков в 256 номеров. Таким образом, «король» может быть [0,1, 0,0, 0,9, …, 0,4], а «королева» может быть [0,1, 0,1, 0,9, …, 0,4], которые почти одинаковые друг с другом. Я буду называть эти списки чисел кодировками (также называемыми скрытыми состояниями по историческим причинам, но я не хочу объяснять это, поэтому мы остановимся на кодировке). Мы называем схему, которая объединяет наши 50 000 датчиков в 256 выходов, энкодером. Это выглядит так:
5.2 Декодеры
Но кодировщик не говорит нам, какое слово должно быть следующим. Итак, мы связываем наш кодировщик с сетью декодеров. Декодер — это еще одна схема, которая принимает 256 чисел, составляющих кодировку, и активирует исходные 50 000 ударников, по одному на каждое слово. Затем мы выбираем слово с наибольшей электрической мощностью. Вот как это будет выглядеть:
5.3 Кодировщики и декодеры вместе
Вот кодировщик и декодер, работающие вместе, чтобы создать одну большую нейронную сеть:
И, кстати, для ввода одного слова в вывод одного слова, проходящего через кодирование, требуется только (50 000 x 256) x 2 = 25,6 миллиона параметров. Это кажется намного лучше.
Этот пример был для ввода одного слова и получения одного вывода, поэтому у нас было бы 50 000 x n входных данных, если мы хотели прочитать n слов, и 256 x n для кодировки
Но почему это работает? Заставляя 50 000 слов умещаться в небольшой набор чисел, мы вынуждаем сеть идти на компромиссы и группировать слова вместе, что может вызвать одно и то же угадывание выходного слова. Это очень похоже на сжатие файлов. Когда вы сжимаете текстовый документ, вы получаете документ меньшего размера, который больше не читается. Но вы можете разархивировать документ и восстановить исходный читаемый текст. Это можно сделать, потому что программа zip заменяет определенные шаблоны слов сокращенными обозначениями. Затем, когда он распаковывает, он знает, какой текст заменить обратно для сокращенной записи. Наши схемы кодера и декодера изучают конфигурацию резисторов и логических элементов, которые сжимают, а затем распаковывают слова.
5.4 Самоконтроль
Как узнать, какая кодировка для каждого слова лучше? Иными словами, откуда мы знаем, что кодировка «король» должна быть аналогична кодировке «королева», а не «броненосец»?
В качестве мысленного эксперимента рассмотрим сеть кодер-декодер, которая должна принимать одно слово (50 000 датчиков) и выдавать точно такое же слово в качестве вывода. Это глупо, но весьма поучительно для того, что будет дальше.
Я ввожу слово «король», и одиночный датчик посылает свой электрический сигнал через энкодер и частично включает 256 значений в кодировке посередине. Если кодировка правильная, то декодер пошлет наивысший электрический сигнал тому же слову «король». Верно, легко? Не так быстро. С такой же вероятностью я увижу ударник со словом «броненосец» с самой высокой энергией активации. Предположим, ударник «короля» получает электрический сигнал 0,051, а ударник «броненосца» получает электрический сигнал 0,23. На самом деле, меня даже не волнует, какое значение имеет «броненосец». Я могу просто посмотреть на выходную энергию для «короля» и понять, что это не 1,0. Разница между 1,0 и 0,051 является ошибкой (также называемой потери), и я могу использовать обратное распространение, чтобы внести некоторые изменения в декодер и кодировщик, чтобы в следующий раз, когда мы увидим кодирование, было выполнено немного другое кодирование. слово «король».
Проделываем это со всеми словами. Кодировщику придется пойти на компромисс, потому что 256 намного меньше, чем 50 000. То есть некоторые слова должны будут использовать те же комбинации энергии активации в середине. Таким образом, когда будет предоставлен выбор, он захочет, чтобы кодировка для «короля» и «королевы» была почти одинаковой, а кодировка для «броненосца» сильно отличалась. Это даст декодеру больше шансов угадать слово, просто взглянув на 256 значений кодировки. И если декодер увидит определенную комбинацию из 256 значений и угадает «короля» с 0,43 и «королеву» с 0,42, мы с этим смиримся, пока «король» и «королева» получают самые высокие электрические сигналы и каждый из 49 998 ударников получают меньшие числа. Другой способ сказать это состоит в том, что нас, вероятно, больше устраивает, что сеть путается между королями и королевами, чем если сеть путается между королями и броненосцами.
Мы говорим, что нейронная сеть самоконтролируемая, потому что, в отличие от примера с автомобилем, вам не нужно собирать отдельные данные для тестирования вывода. Мы просто сравниваем вывод с вводом — нам не нужно иметь отдельные данные для ввода и вывода.
5.5 Маскированные языковые модели
Если приведенный выше мысленный эксперимент кажется глупым, он является строительным блоком для чего-то, что называется маскированные языковые модели. Идея маскированной языковой модели состоит в том, чтобы взять последовательность слов и сгенерировать последовательность слов. Одно из слов на входе и выходе пусто.
[МАСКА] сидела на троне.
Сеть угадывает все слова. Что ж, довольно легко угадать немаскированные слова. Нас действительно волнует только догадка сети о замаскированном слове. То есть у нас есть 50 000 ударников на каждое слово в выводе. Мы смотрим на 50 000 нападающих для замаскированного слова.
Мы можем перемещать маску, и сеть угадывает разные слова в разных местах.
Один особый тип маскированной языковой модели имеет маску только в конце. Это называется генеративной моделью, потому что маска, которую она угадывает, всегда является следующим словом в последовательности, что эквивалентно генерации следующего слова, как если бы следующего слова не существовало. Так:
[MASK]
Королева [MASK]
Королева сидела [MASK]
Королева сидела на [MASK]
Королева сидела на [MASK]
Мы также называем это авторегрессивной моделью. Слово регрессивный звучит не очень хорошо. Но регрессия просто означает попытку понять взаимосвязь между вещами, такими как слова, которые были введены, и слова, которые должны быть выведены. Авто означает «сам». Авторегрессивная модель является самопрогнозируемой. Он предсказывает слово. Затем это слово используется для предсказания следующего слова, которое используется для предсказания следующего слова, и так далее. У этого есть несколько интересных следствий, к которым мы вернемся позже.
6. Что такое трансформатор?
На момент написания этой статьи мы много слышали о вещах, называемых GPT-3, GPT-4 и ChatGPT. GPT — это особый бренд большой языковой модели, разработанной компанией OpenAI. GPT расшифровывается как Generative Pre-trained Transformer. Давайте разберем это:
- Генеративный. Модель способна генерировать продолжения предоставленных входных данных. То есть по тексту модель пытается угадать, какие слова идут дальше.
- Предварительно обученный. Модель обучается на очень большом корпусе общего текста и предназначена для однократного обучения и использования для множества разных целей без необходимости повторного обучения с нуля.
Подробнее о предварительном обучении… Модель обучается на очень большом корпусе общего текста, который якобы охватывает большое количество мыслимых тем. Это более или менее означает «выдрано из Интернета», а не взято из некоторых специализированных текстовых репозиториев. При обучении на общем тексте языковая модель лучше реагирует на более широкий диапазон входных данных, чем, например, языковая модель, обученная на очень специфическом типе текста, например, из медицинских документов. Языковая модель, обученная на общем корпусе, теоретически может разумно реагировать на все, что может появиться в документе в Интернете. С медицинским текстом может быть все в порядке. Языковая модель, обученная только на медицинских документах, может очень хорошо реагировать на входные данные, связанные с медицинским контекстом, но плохо реагировать на другие входные данные, такие как болтовня или рецепты.
Либо модель достаточно хороша во многих вещах, и ее никогда не нужно обучать, либо можно выполнить нечто, называемое тонкой настройкой, что означает взять предварительно обученную модель и внести несколько обновлений. к нему, чтобы он лучше работал над специализированной задачей (например, медицинской).
Теперь к трансформатору…
- Трансформатор. Особый тип самоконтролируемой модели глубокого обучения кодер-декодер с некоторыми очень интересными свойствами, которые делают его хорошим инструментом для языкового моделирования.
Преобразователь – это особый тип модели глубокого обучения, который преобразует кодировку определенным образом, чтобы упростить угадывание выделенного слова. Он был представлен в статье Внимание — это все, что вам нужно, написанной Vaswani et al. в 2017 году. В основе преобразователя лежит классическая сеть энкодер-декодер. Кодер выполняет очень стандартный процесс кодирования. Настолько ванильный, что вы были бы в шоке. Но затем добавляется нечто другое, называемое самовниманием.
6.1 Самостоятельное внимание
Вот идея само-внимания: одни слова в последовательности связаны с другими словами в последовательности. Рассмотрим предложение «Инопланетянин приземлился на Землю, потому что ему нужно было спрятаться на планете». Если бы мы замаскировали второе слово «инопланетянин» и попросили нейронную сеть угадать слово, у нее был бы лучший шанс из-за таких слов, как «приземлился» и «земля». Точно так же, если мы замаскируем «это» и попросим сеть угадать слово, присутствие слова «инопланетянин» может повысить вероятность того, что оно предпочтет «это», а не «он» или «она».
Мы говорим, что слова в последовательности обращают внимание на другие слова, потому что они фиксируют своего рода отношения. Отношения не обязательно известны. Это могут быть разрешающие местоимения, это могут быть отношения глагола и подлежащего, это могут быть два слова, относящиеся к одному и тому же понятию («земля» и «планета»). Что бы это ни было, знание того, что между словами существует какая-то связь, полезно для предсказания.
В следующем разделе мы рассмотрим математику само-внимания, но основная суть в том, что преобразователь узнает, какие слова во входной последовательности связаны между собой, а затем создает новую кодировку для каждой позиции во входной последовательности, которая представляет собой слияние всех слов. связанные слова. Вы можете думать об этом как об обучении составлению нового слова, которое представляет собой смесь слов «инопланетянин», «приземлился» и «земля» (алиандеарт?). Это работает, потому что каждое слово кодируется как список чисел. Если инопланетянин = [0,1, 0,2, 0,3, …, 0,4] и приземлился = [0,5, 0,6, 0,7, …, 0,8] и земля = [0,9, 1,0, 1,1, …, 1,2], то позиция второго слова может быть закодирована как сумма всех этих кодировок, [1,5, 1,8, 2,1, …, 2,4], что само по себе не соответствует никакому слово, но захватывает части всех слов. Таким образом, когда декодер, наконец, увидит эту новую кодировку слова во второй позиции, у него будет много информации о том, как слово использовалось в последовательности, и, таким образом, он сможет лучше угадать любые маски. (В примере просто добавляется кодировка, но это будет немного сложнее).
6.2. Как работает самовнимание?
Самостоятельное внимание — это значительное улучшение по сравнению с ванильными сетями кодировщика-декодера, поэтому, если вы хотите узнать больше о том, как это работает, продолжайте читать. В противном случае не стесняйтесь пропустить этот раздел. TL;DR: внимание к себе — это причудливое название математической операции, называемой точечный продукт.
Самовнимание происходит в три этапа.
(1) Мы кодируем каждое слово во входной последовательности как обычно. Мы делаем четыре копии кодировок слов. Один мы называем остатком и откладываем на хранение.
(2)Мы запускаем второй раунд кодирования (мы кодируем кодирование) на трех других. Каждый подвергается различному процессу кодирования, поэтому все они становятся разными. Мы называем один запрос (q), один ключ (k) и один значение (v).
Я хочу, чтобы вы подумали о хеш-таблице (также называемой словарем в Python). У вас есть целая куча информации, хранящейся в таблице. Каждая строка в таблице имеет ключ, некоторый уникальный идентификатор и значение, причем данные хранятся в строке. Чтобы получить некоторую информацию из хеш-таблицы, вы делаете запрос. Если запрос соответствует ключу, вы извлекаете значение.
Самостоятельное внимание работает как нечеткая хеш-таблица. Вы предоставляете запрос, и вместо поиска точного совпадения с ключом он находит приблизительные совпадения на основе сходства между запросом и ключом. Но что, если совпадение не идеальное? Он возвращает некоторую часть значения. Что ж, это имеет смысл только в том случае, если запрос, ключи и значения являются числовыми. Какие они:
Вот что мы собираемся сделать. Для каждой позиции слова во входных данных мы возьмем кодировку q и кодировку k и вычислим сходство. Мы используем то, что называется скалярным произведением, также называемым косинусным сходством. Не важно. Дело в том, что каждое слово представляет собой список из 256 чисел (на основе нашего предыдущего примера), и мы можем вычислить сходство списков чисел и записать сходство в матрицу. Мы называем эту матрицу оценкой самоконтроля. Если бы у нас была последовательность ввода из трех слов, наши оценки внимания могли бы выглядеть примерно так:
Сеть обрабатывает первое слово как запрос, и оно соответствует второму ключу (можно сказать, что первое слово «обслуживает» второе слово). Если бы второе слово было запросом, оно соответствовало бы третьему ключу. Если бы третье слово было запросом, оно соответствовало бы первому ключу. На самом деле у нас никогда не было бы таких единиц и нулей; у нас будут частичные совпадения между 0 и 1, и каждый запрос (строка) будет частично соответствовать нескольким ключам (столбцам).
Теперь, чтобы придерживаться метафоры поиска, мы умножаем эту матрицу на кодировку v, и происходит кое-что интересное. Предположим, что наши кодировки v выглядели так:
То есть первое слово кодировалось списком чисел 0,10…0,19, второе слово кодировалось списком чисел 0,20…0,29, а третье слово кодировалось списком чисел 0,30…0,39. Эти цифры составлены в иллюстративных целях и никогда не будут такими аккуратными.
Первый запрос соответствует второму ключу и, следовательно, извлекает второе закодированное слово. Второй запрос соответствует третьему ключу и, следовательно, извлекает третье закодированное слово. Третий запрос соответствует первому ключу и, следовательно, извлекает первое закодированное слово. Что мы эффективно сделали, так это поменяли строки местами!
На практике оценки не будут идеальными единицами и нулями, и результатом будет немного каждой кодировки, смешанной вместе (например, 97% первого слова плюс 1% или третье слово плюс 2% второго слова). Но это иллюстрирует, как внимание к себе представляет собой смешивание и обмен. В этой экстремальной версии первое слово было заменено вторым словом и так далее. Так что, возможно, слово «земля» было заменено словом «планета».
Откуда мы знаем, что правильно закодировали q, k и v? Если общая способность сети угадывать лучшее слово для маски улучшится, значит, мы правильно кодируем q, k и v. Если нет, мы изменим параметры, чтобы в следующий раз кодировать немного по-другому.
(3)Третье, что мы делаем, это берем результат всех этих вычислений и добавляем его к остатку. Помните ту первую копию оригинальной кодировки, которую мы отложили. Правильно, мы добавляем к этому смешанную версию. Итак, «земля» — это не просто кодировка слова «земля», а какое-то воображаемое слово, представляющее собой смесь слов «земля» и «планета»… pearth? аланет? Не совсем так. В любом случае, это окончательная преобразованная кодировка, которая будет отправлена в декодер. Вероятно, мы можем согласиться с тем, что наличие поддельного слова в каждой позиции, которое действительно кодирует два или более слов, более полезно для предсказаний, основанных на одном слове в позиции.
Затем вы делаете это еще несколько раз один за другим (несколько слоев).
Я опускаю много подробностей о том, как окончательная кодировка кодировщика попадает в декодер (еще один раунд внимания, называемый внимание-источник, где кодирование кодером каждой позиции используется как q и k для применения к еще одной другой версии v), но на этом этапе вы должны иметь общее представление о вещах. В конце декодер, приняв кодировку от кодировщика, посылает энергию ударникам для слов, и мы выбираем наиболее сильно заряженное слово.
7. Почему большие языковые модели настолько эффективны?
Итак, что же все это значит? Большие языковые модели, в том числе ChatGPT, GPT-4 и другие, делают ровно одну вещь: они берут кучу слов и пытаются угадать, какое слово должно быть следующим. Если это «рассуждение» или «мышление», то это только одна очень специализированная форма.
Но даже эта специализированная форма кажется очень мощной, потому что ChatGPT и подобные могут делать многие вещи, которые кажутся очень хорошими: писать стихи, отвечать на вопросы о науке и технологиях, обобщать документы, составлять электронные письма и даже писать код, и это лишь некоторые из вещей. Почему они должны работать так хорошо?
Секретный соус состоит из двух частей. О первом мы уже говорили: преобразователь учится смешивать контексты слов таким образом, чтобы он действительно хорошо угадывал следующее слово. Другая часть секретного соуса заключается в том, как обучаются системы. Модели большого языка обучаются на огромном количестве информации, взятой из Интернета. Сюда входят книги, блоги, новостные сайты, статьи в Википедии, обсуждения на Reddit, разговоры в социальных сетях. Во время обучения мы подаем фрагмент текста из одного из этих источников и просим его угадать следующее слово. Помните: самоконтроль. Если он ошибается, мы немного подправляем модель, пока она не станет правильной. Если подумать, чему обучают LLM, так это созданию текста, который вполне мог бы появиться в Интернете. Он не запоминает Интернет, поэтому использует кодировки для компромиссов и немного ошибается, но, надеюсь, не слишком.
Важно не недооценивать, насколько разнообразен текст в Интернете с точки зрения тем. LLM видели все это. Они видели миллиарды разговоров практически на любую тему. Таким образом, LLM может произносить слова, которые выглядят так, как будто он разговаривает с вами. Он видел миллиарды стихов и музыкальных текстов практически обо всем, что только можно вообразить, поэтому он может создавать текст, который выглядит как поэзия. Он видел миллиарды домашних заданий и их решений, поэтому может сделать разумные предположения о вашей домашней работе, даже если она немного отличается. Он видел миллиарды стандартных тестовых вопросов и ответов на них. Неужели мы действительно думаем, что вопросы SAT этого года сильно отличаются от прошлогодних? Он видел, как люди рассказывают о своих планах на отпуск, поэтому он может угадывать слова, похожие на планы на отпуск. Он видел миллиарды примеров кода, делающего самые разные вещи. Многое из того, что делают программисты, состоит в том, чтобы собирать фрагменты кода для выполнения очень типичных и хорошо понятных задач в более крупные фрагменты кода. Таким образом, LLM могут написать для вас эти маленькие общие фрагменты. Он видел миллиарды примеров неправильного кода и их исправлений на stackoverflow.com. Да, так что он может принять ваш сломанный код и предложить исправления. Миллиарды людей видели в Твиттере, что они коснулись горячей плиты и обожгли пальцы, так что LLM обладают здравым смыслом. Он прочитал много научных работ, поэтому может угадывать общеизвестные научные факты, даже если они вам малоизвестны. Он видел миллиарды примеров, когда люди резюмировали, переписывали текст в пункты, описывали, как сделать текст более грамматическим, кратким или убедительным.
Вот в чем суть: когда вы просите ChatGPT или другую большую языковую модель сделать что-то умное — и это работает — есть очень большая вероятность, что вы попросили его сделать что-то, что он видел миллиарды примеров. И даже если вы придумаете что-то действительно уникальное, например «расскажите, что бы сделал Флэш Гордон, съев шесть буррито» (уникально ли это, я даже не знаю), он видел фанфики о Флэше Гордоне и видел людей. говорит о том, что съедает слишком много буррито, и может — из-за внимания к себе — смешивать и сочетать кусочки и кусочки, чтобы собрать разумно звучащую реакцию.
Нашим первым побуждением при взаимодействии с большой языковой моделью не должно быть «вау, эти вещи должны быть действительно умными, действительно творческими или действительно понимающими». Нашим первым побуждением должно быть: «Вероятно, я попросил его сделать что-то, что он видел раньше». Это может означать, что он все еще действительно полезен, даже если он не «очень усердно думает» или «делает какие-то действительно сложные рассуждения».
Нам не нужно использовать антропоморфизацию, чтобы понять, что она делает, чтобы дать нам ответ.
Последнее замечание по этой теме: из-за того, как работают большие языковые модели и как они обучаются, они, как правило, дают ответы, которые являются чем-то средним. Мне может показаться очень странным сказать, что модель склонна давать средние ответы после запроса истории о Флэше Гордоне. Но в контексте рассказа или стихотворения ответы можно рассматривать как то, что многие люди (пишущие в Интернете) придумали бы, если бы им пришлось идти на компромисс. Это не будет плохо. Это может быть неплохо по стандартам одинокого человека, сидящего и пытающегося что-то придумать самостоятельно. Но ваши рассказы и стихи, наверное, тоже средние (но для вас они особенные). Извини.
8. Чего мне следует опасаться?
Есть некоторые очень тонкие последствия, которые возникают из того, как работают Трансформеры и как их обучают. Ниже приведены прямые последствия технических деталей.
- Модели большого языка обучаются в Интернете. Это означает, что они также тренировались на всех темных сторонах человечества. Модели большого языка обучены расистским разглагольствованиям, сексистским разглагольствованиям, всякого рода оскорблениям в отношении любого типа людей, людям, делающим стереотипные предположения о других, теориям заговора, политической дезинформации и т. д. Это означает, что слова, которые языковая модель выбирает для генерации, могут извергаться. такой язык.
- Большие языковые модели не имеют «основных убеждений». Они умеют угадывать слова; они пытаются предсказать, какими будут следующие слова, если такое же предложение появится в Интернете. Таким образом, можно попросить большую языковую модель написать предложение в пользу чего-то или против того же самого, и языковая модель будет соответствовать в обоих случаях. Это не признаки того, что он верит в одно или другое, или меняет свои убеждения, или что одно более правильно, чем другое. Если в обучающих данных больше примеров одной вещи по сравнению с другой, то большая языковая модель будет иметь тенденцию более последовательно реагировать на то, что чаще появляется в ее обучающих данных, потому что это чаще появляется в Интернете. Помните: модель стремится подражать наиболее распространенной реакции.
- Большие языковые модели не имеют никакого понятия об истине, правильности или неправильности. Есть вещи, которые мы считаем фактами, например, то, что Земля круглая. LLM будет склонен говорить это. Но если контекст правильный, он также скажет обратное, потому что в Интернете есть текст о том, что Земля плоская. Нет никакой гарантии, что LLM предоставит правду. Может быть тенденция угадывать слова, которые, как мы согласны, истинны, но это самое близкое, что мы можем сделать, чтобы делать какие-либо утверждения о том, что LLM «знает» об истине, правильности или неправильности.
- Большие языковые модели могут ошибаться. В обучающих данных может быть много противоречивого материала. Само-внимание может не уделять внимание всем вещам, которых мы хотим, когда задаем вопрос. Как словоугадывающий, он может делать неудачные предположения. Иногда обучающие данные видели одно слово так много раз, что предпочитают это слово, даже если оно не имеет смысла для ввода. Вышеупомянутое приводит к явлению, которое называется «галлюцинация», когда слово является предположением, которое не получено из ввода и не является «правильным». У LLM есть склонность угадывать небольшие числа вместо больших, потому что маленькие числа более распространены. Таким образом, LLM не очень хороши в математике. LLM предпочитают число «42», потому что люди делают это из-за конкретной известной книги. LLM предпочитают более распространенные имена, поэтому могут составлять имена авторов.
- Большие языковые модели являются авторегрессивными. Таким образом, когда они делают предположения, которые мы могли бы считать неверными, эти угаданные слова добавляются к их собственным входам, чтобы сделать следующее предположение слова. То есть: ошибки накапливаются. Даже если вероятность ошибки составляет всего 1 %, само-внимание может обратить внимание на этот неправильный выбор и удвоить ставку на эту ошибку. Даже если допущена только одна ошибка, все последующие действия могут быть связаны с этой ошибкой. Тогда языковая модель может допустить дополнительные ошибки. Трансформеры не могут «передумать», попробовать еще раз или исправить себя. Они плывут по течению.
- Всегда следует проверять выходные данные большой языковой модели. Если вы просите его сделать что-то, что вы не можете компетентно проверить самостоятельно, вам следует подумать о том, согласны ли вы действовать на любые допущенные ошибки. Для задач с низкими ставками, таких как написание рассказа, это может подойти. Для задач с высокими ставками, таких как попытка получить информацию, чтобы решить, в какие акции инвестировать, возможно, эти ошибки могут привести к тому, что вы примете очень дорогостоящее решение.
- Самостоятельное внимание означает, что чем больше информации вы предоставляете в подсказке ввода, тем более специализированным будет ответ, потому что он будет смешивать больше ваших слов со своими предположениями. Качество ответа прямо пропорционально качеству входной подсказки. Лучшие подсказки дают лучшие результаты. Попробуйте несколько разных подсказок и посмотрите, что лучше всего подходит для вас. Не думайте, что языковая модель «понимает» то, что вы пытаетесь сделать, и с первого раза даст лучший результат.
- На самом деле вы не «разговариваете» с большой языковой моделью. Большая языковая модель не «помнит», что произошло при обмене. Ваш ввод входит. Ответ выходит. LLM ничего не помнит. Вводятся ваш первоначальный ввод, ответ и ваш ответ на ответ. Таким образом, если он выглядит так, как будто он помнит, это потому, что журнал разговоров становится новым вводом. Это трюк программирования на внешнем интерфейсе, чтобы модель большого языка выглядела так, как будто она ведет диалог. Возможно, из-за этого трюка он останется в теме, но нет гарантии, что он не будет противоречить предыдущим ответам. Кроме того, существует ограничение на количество слов, которые можно передать в модель большого языка (в настоящее время ChatGPT позволяет использовать примерно 4 000 слов, а GPT-4 — примерно 32 000 слов). Размеры входных данных могут быть довольно большими, поэтому разговор может некоторое время оставаться связным. В конце концов накопленный журнал станет слишком большим, и начало разговора будет удалено, а система «забудет» более ранние вещи.
- Большие языковые модели не занимаются решением проблем или планированием. Но вы можете попросить их составить планы и решить проблемы. Я собираюсь разделить некоторые волосы здесь. Решение проблем и планирование — термины, зарезервированные некоторыми группами в исследовательском сообществе ИИ для обозначения чего-то очень конкретного. В частности, они означают наличие цели — чего-то, что вы хотите достичь в будущем — и работу над достижением этой цели, делая выбор между альтернативами, которые могут приблизить человека к этой цели. Большие языковые модели не имеют целей. У них есть цель, которая состоит в том, чтобы выбрать слово, которое, скорее всего, появится в обучающих данных с учетом входной последовательности. Они соответствуют образцу. Планирование, в частности, обычно включает так называемый прогноз. Когда люди планируют, они представляют себе результаты своих действий и анализируют это будущее с точки зрения цели. Если кажется, что это приближает кого-то к цели, это хороший ход. Если нет, мы можем попытаться представить результаты другого действия. Это еще не все, но ключевым моментом является то, что большие языковые модели не имеют целей и не выполняют просмотр вперед. Трансформеры смотрят в прошлое. Самостоятельное внимание можно применять только к уже появившимся входным словам. Теперь большие языковые модели могут генерировать выходные данные, похожие на планы, потому что они видели много планов в обучающих данных. Они знают, как выглядят планы, они знают, что должно быть в планах на определенные темы, которые они видели. Он собирается сделать хорошее предположение об этом плане. План может игнорировать конкретные детали мира и тяготеть к наиболее общему плану. Модели больших языков, конечно же, не «продумывали альтернативы» и не пробовали одно, а возвращались и пробовали другое. Внутри трансформатора нет механизма, на который можно было бы указать, который делал бы такое постоянное рассмотрение будущего. (Здесь есть одно предостережение, которое будет рассмотрено в следующем разделе.) Всегда проверяйте результаты, запрашивая планы.
9. Что делает ChatGPT таким особенным?
«Итак, я слышал, что RLHF — это то, что делает ChatGPT действительно умным».
«ChatGPT использует обучение с подкреплением, и это делает его таким умным».
Ну… вроде.
На момент написания этой статьи было много интересного о том, что называется RLHF, или обучение с подкреплением с обратной связью от человека. Есть несколько вещей, которые были сделаны для обучения ChatGPT, в частности (и все чаще других моделей больших языков). Они не совсем новые, но они были широко представлены с большим эффектом, когда был выпущен ChatGPT.
ChatGPT — это большая языковая модель на основе Transformer. ChatGPT заработал репутацию за то, что он действительно хорошо отвечает на запросы ввода и отказывается отвечать на вопросы по определенным темам, которые могут быть сочтены токсичными или самоуверенными. Он не делает ничего особенно отличного от того, что описано выше. На самом деле очень ванильный. Но есть одно отличие: как его обучали. ChatGPT обучали как обычно — собирали большой кусок интернета, брали фрагменты этого текста и заставляли систему предсказывать следующее слово. Это привело к созданию базовой модели, которая уже была очень мощным предсказателем слов (эквивалентным GPT-3). Но затем было еще два дополнительных тренировочных шага. Настройка инструкций и дополнительное обучение с обратной связью от человека.
9.1. Настройка инструкций
Есть одна проблема с большими языковыми моделями: они просто хотят взять входную последовательность слов и сгенерировать то, что будет дальше. Чаще всего это то, чего хочется. Но не всегда. Рассмотрим следующую подсказку ввода:
«Напишите эссе об Александре Гамильтоне».
Как вы думаете, каким должен быть ответ. Вы, вероятно, думаете, что это должно быть что-то вроде «Александр Гамильтон родился на Невисе в 1757 году. Он был государственным деятелем, юристом, полковником армии и первым министром финансов Соединенных Штатов…». получить это:
«Ваше эссе должно быть не менее пяти страниц с двойным интервалом и содержать как минимум две цитаты».
Что сейчас произошло? Что ж, языковая модель, возможно, видела много примеров студенческих заданий, которые начинаются с «Написать эссе о…» и включают слова, детализирующие длину и форматирование. Конечно, когда вы писали «Написать эссе…», вы думали, что пишете инструкции для языковой модели, как если бы это был человек, который понял намерение. Языковые модели не понимают ваших намерений или имеют собственные намерения; они только сопоставляют входные данные с шаблонами, которые они видели в своих обучающих данных.
Чтобы исправить это, можно выполнить так называемую настройку инструкций. Идея довольно проста. Если вы получили неправильный ответ, запишите, каким должен быть правильный ответ, и отправьте исходный ввод и новый, исправленный вывод через нейронную сеть в качестве обучающих данных. Имея достаточное количество примеров исправленного вывода, система научится сдвигать свою схему так, чтобы предпочтительнее был новый ответ.
Не нужно делать ничего сверхъестественного. Просто попросите много людей взаимодействовать с большой языковой моделью, попросите ее сделать много вещей и запишите исправления, когда она ведет себя неправильно. Затем соберите все те примеры, где были допущены ошибки и новые, правильные выводы и проведите дополнительное обучение.
Это заставляет большую языковую модель вести себя так, как будто она понимает намерение входных подсказок и действовать так, как будто она следует инструкциям. Он не делает ничего, кроме попытки угадать следующее слово. Но теперь новые обучающие данные позволяют угадывать слова, которые кажутся более чувствительными к входным данным.
9.2. Обучение с подкреплением на основе отзывов людей
Следующим шагом в обучении является обучение с подкреплением на основе отзывов людей. Я думаю, что это потребует небольшого пояснения.
Обучение с подкреплением – это метод искусственного интеллекта, который традиционно используется в некоторых исследованиях робототехники, а также в виртуальных игровых агентах (вспомните системы искусственного интеллекта, которые могут играть в шахматы, го или StarCraft). Обучение с подкреплением особенно хорошо помогает понять, что делать, когда оно получает нечто, называемое вознаграждением. Награда — это просто число, указывающее, насколько хорошо оно работает (+100 за действительно хорошее дело; -100 за очень плохое). В реальном мире и в играх вознаграждение часто дается редко. В игре вам, возможно, придется сделать много ходов, прежде чем вы получите очки. Возможно, вы получите очки только в самом конце игры. В реальном мире мало кто говорит вам, что вы делаете хорошую работу (а вы это делаете). Если только вы не собака (они все хорошие мальчики и девочки). Единственное, что вам действительно нужно знать, это то, что системы обучения с подкреплением пытаются предсказать, какое вознаграждение они получат в будущем, а затем выбирают действие, которое с наибольшей вероятностью принесет большее вознаграждение в будущем. Это не совсем отличается от того, как можно использовать собачьи лакомства, чтобы научить свою собаку вести себя.
Хорошо, спрячьте все это подальше и рассмотрите следующую подсказку:
В чем Марк эксперт?
Предположим, что выходные данные языковой модели:
У Марка много публикаций по искусственному интеллекту, графике и взаимодействию человека с компьютером.
Это верно лишь частично. Я не публикую в графике. Я действительно просто хотел бы поставить этому большой палец вниз или -1 балл. Но только одна часть неверна: слово графика. Если я скажу системе, что все предложение неверно, языковая модель может понять, что всех этих слов следует избегать. Что ж, многие из этих слов разумны.
Вот здесь и приходит на помощь обучение с подкреплением. Обучение с подкреплением работает, пробуя разные альтернативы и наблюдая, какие альтернативы получают наибольшую награду. Предположим, я попросил его сгенерировать три разных ответа на исходную подсказку.
У Марка много публикаций по искусственному интеллекту, графике и взаимодействию человека с компьютером.
Марк работал в области искусственного интеллекта, безопасных систем НЛП и взаимодействия человека с компьютером.
Отметить как исследованный искусственный интеллект, игровой ИИ и графику.
Я мог бы поставить большой палец вниз (-1) первому варианту, большой палец вверх (+1) второму варианту и большой палец вниз (-1) третьему варианту. Точно так же, как играя в игру, алгоритм обучения с подкреплением может оглянуться назад и выяснить, что единственное общее, что приводит к -1, — это слово «графика». Теперь система может сосредоточиться на этом слове и настроить схему нейронной сети, чтобы не использовать это слово в сочетании с этим конкретным вводным запросом.
И снова мы получим группу людей для взаимодействия с большой языковой моделью. На этот раз мы дадим людям три (или более) возможных ответа. Мы можем сделать это, попросив модель большого языка несколько раз отреагировать на подсказку и внести немного случайности в выбор ударников (вы не забыли об этом, не так ли?). Вместо выбора нападающей руки с наивысшей активностью мы иногда можем выбрать вторую или третью нападающую руку с самой высокой активностью. Это дает разные текстовые ответы, и мы просим людей выбрать свой первый любимый ответ, второй любимый и так далее. Теперь у нас есть альтернатива и у нас есть номера. Теперь мы можем использовать обучение с подкреплением для настройки схемы нейронной сети.
[На самом деле, мы используем эту обратную связь «большой палец вверх» и «большой палец вниз», чтобы обучить вторую нейронную сеть предсказывать, покажут ли люди «большой палец вверх» или «большой палец вниз». Если эта нейронная сеть достаточно хороша для предсказания того, что люди предпочтут, то мы можем использовать эту вторую нейронную сеть, чтобы угадать, могут ли ответы языковой модели получить положительный или отрицательный результат, и использовать это для обучения языковой модели.]
Что обучение с подкреплением рассматривает генерацию текста как игру, где каждое действие является словом. В конце последовательности языковой модели сообщается, выиграла она несколько баллов или потеряла несколько баллов. Языковая модель не выполняет прямое упреждение, как обсуждалось в предыдущем разделе, но в некотором смысле она обучена предсказывать, какие слова будут одобрены. Модель большого языка по-прежнему не имеет явной цели, но у нее есть неявная цель «получить одобрение» (или мы могли бы также сказать, что у нее есть неявная цель «удовлетворить среднестатистического человека»), и она научилась соотносить определенные ответы на определенные подсказки с получением больших пальцев. Это имеет много качеств планирования, но без явного механизма просмотра вперед. Скорее, он запомнил стратегии получения вознаграждения, которые, как правило, работают во многих ситуациях.
По большому счету, делает ли RLHF ChatGPT более интеллектуальным… это делает ChatGPT более вероятным для получения ответов, которые мы надеялись увидеть. Он кажется более разумным, потому что его выходные данные, кажется, передают ощущение того, что он понимает намерения наших входных данных и имеет свои собственные намерения реагировать. Это иллюзия, потому что это всего лишь кодирование и декодирование слов. Но опять же, именно с этого мы и начали эту статью 😉.
Настройка инструкций и RLHF также делают использование ChatGPT устойчивым к определенным типам злоупотреблений, таким как создание расистского, сексистского или политически мотивированного контента. Это все еще можно сделать, и в любом случае старые версии GPT-3 всегда могли это сделать. Тем не менее, как бесплатный общедоступный сервис, трения, которые ChatGPT создает против определенных типов злоупотреблений, создают ощущение безопасности. Он также устойчив к представлению мнения как факта, что также устраняет одну из форм потенциального вреда для пользователя.
[Использование обучения с подкреплением для изменения предварительно обученной языковой модели не ново. Его можно проследить как минимум до 2016 года, и он использовался для повышения безопасности больших языковых моделей. Большинство настроек больших языковых моделей, основанных на обучении с подкреплением, используют вторую модель для предоставления вознаграждения, что также выполняется с помощью ChatGPT. Чем ChatGPT примечателен, так это масштабом системы, настраиваемой с помощью обучения с подкреплением, и крупномасштабными усилиями по сбору обратной связи от людей.]
10. Выводы
Мне нужно больше спать. Вот что я делаю из всего этого.