Как устроен ChatGPT? Полное погружение в принципы работы и спектр возможностей самой известной нейросети в мире - Стивен Вольфрам. Страница 8


О книге
обучение (как мы делаем, например, в Wolfram Language [2]) для автоматизации машинного обучения – и для автоматической установки таких вещей, как гиперпараметры.

В конце концов, весь процесс обучения можно охарактеризовать следующим образом, наблюдая, как постепенно уменьшаются потери (как на этом мониторе прогресса Wolfram Language для небольшого тренинга):

Мы можем увидеть, что потери на некоторое время уменьшаются, но в итоге выравниваются до постоянного значения. Если это значение небольшое, то обучение можно считать успешным. В противном случае это, вероятно, признак того, что следует попробовать изменить архитектуру сети.

Можно ли с уверенностью предсказать, сколько времени должно пройти, чтобы кривая обучения выровнялась? Здесь, как и везде, существуют приблизительные степенные соотношения масштабирования, которые зависят от размера нейронной сети и объема используемых данных. Однако общий вывод таков: обучение нейронной сети – дело сложное и требует больших вычислительных усилий. И с практической точки зрения подавляющее большинство этих усилий тратится на выполнение операций с массивами чисел, с чем хорошо справляются графические процессоры, – вот почему обучение нейронных сетей обычно зависит от доступности графических процессоров.

Появятся ли в будущем принципиально иные и более эффективные способы обучать нейронные сети или делать то, что они сейчас делают? Я думаю, что, скорее всего, да. Фундаментальная идея нейронных сетей заключается в создании гибкой вычислительной структуры, состоящей из большого числа простых (по сути, идентичных) компонентов, которую можно постепенно модифицировать, чтобы она училась на примерах. В современных нейронных сетях для такой постепенной модификации используются идеи математического анализа, применяемые к действительным числам. Но становится все более очевидным, что числа с высокой точностью не столь важны: восемь или даже меньше бит достаточно даже при использовании современных методов.

Когда речь идет о вычислительных системах вроде клеточных автоматов, которые параллельно работают со множеством отдельных битов, не совсем ясно, как выполнить подобную постепенную модификацию, однако нет причин думать, что это невозможно. И вполне вероятно, что, как и в случае с прорывом в области глубокого обучения в 2012 году, такие постепенные модификации будут проще в более сложных случаях.

Немного похожие на человеческий мозг, нейросети имеют фиксированную сеть нейронов, в которой изменяется только сила взаимодействия между ними – их вес. Возможно, в мозге молодого организма и может возникнуть значительное количество совершенно новых связей. Однако даже если с точки зрения биологии это имеет смысл, то не совсем ясно, каков лучший способ достижения необходимой нам функциональности. И то, что включает в себя эквивалент прогрессивного переписывания сети (возможно, напоминающее наш проект по физике), вполне может в конечном счете оказаться лучше.

Но даже в отношении существующих нейронных сетей в настоящее время есть важное ограничение: в том виде, как оно проводится сейчас, обучение нейросети принципиально является последовательным, при этом после каждой эпохи обучения примеры возвращаются обратно, чтобы можно было обновить вес нейронов. И действительно, при возможностях современного компьютерного оборудования, даже с учетом графических процессоров, значительное количество нейронной сети большую часть времени обучения простаивает, при этом обновляется только одна ее часть за раз. И в некотором смысле это происходит потому, что в наших современных компьютерах память отделена от процессора (и от графического в том числе). Но в мозге, по-видимому, все по-другому: каждый элемент памяти (например, нейрон) также является потенциально активным вычислительным элементом. И если бы мы могли настроить наше будущее компьютерное оборудование схожим образом, обучение нейросетей могло бы быть гораздо эффективнее.

Достаточно большая сеть может сделать все что угодно – так ведь?

Возможности программ наподобие ChatGPT выглядят впечатляюще. Можно даже подумать, что если продолжать тренировать нейронные сети, то в конце концов они научатся делать все. И когда речь идет о вещах, которые легко доступны человеческому мышлению, то вполне возможно, что все обстоит именно так. Но урок, который можно вынести из последних нескольких сотен лет развития науки, заключается в том, что есть вещи, которые могут быть поняты с помощью формальных процессов, но недоступны человеческому мышлению.

Одним из ярких примеров является нетривиальная математика. Но самое важное – это вычисления. И в конечном счете проблема заключается в феномене вычислительной несводимости. Есть вычисления, для выполнения которых, как можно было бы подумать, потребуется много шагов, но которые на самом деле могут быть сведены к чему-то совершенно простому. Однако открытие вычислительной несводимости подразумевает, что это не всегда работает. Так, существуют процессы (вероятно, подобные показанному ниже), в которых для определения того, что происходит, требуется отслеживать каждый шаг вычислений:

Знания о том, как работает наш мозг, предположительно позволяют нам избежать вычислительной несводимости. Чтобы вычислять в уме, требуются особые усилия, и на практике невозможно продумать этапы работы любой нетривиальной программы.

Конечно, для этого у нас есть компьютеры. А с помощью компьютеров мы можем легко выполнять длительные, не поддающиеся вычислению задачи. И ключевым моментом является то, что здесь, как правило, нет кратчайшего пути.

Да, мы можем запомнить множество конкретных примеров из какой-то вычислительной системы. И возможно, даже можем увидеть некоторые (вычислительно сводимые) закономерности, которые позволят нам сделать небольшое обобщение. Но дело в том, что вычислительная несводимость означает невозможность гарантировать, что непредвиденное не произойдет. И, только выполнив вычисления, вы можете сказать, что на самом деле происходит в каждом конкретном случае.

В конце концов, существует фундаментальное противоречие между обучаемостью и вычислительной несводимостью. Обучение, по сути, предполагает сжатие данных за счет использования закономерностей. Но вычислительная несводимость подразумевает, что в конечном счете есть предел количеству существующих закономерностей.

С практической точки зрения можно представить превращение небольших вычислительных устройств – таких, как клеточные автоматы или машины Тьюринга, – в обучаемые системы вроде нейронных сетей. И действительно, такие устройства могут служить хорошими инструментами для нейронной сети: например, Wolfram|Alpha может быть хорошим инструментом для ChatGPT. Но вычислительная несводимость подразумевает, что нельзя «проникнуть» внутрь этих устройств и заставить их обучаться.

Другими словами, существует окончательный компромисс между возможностями и обучаемостью: чем сильнее вы хотите, чтобы система по-настоящему использовала свои вычислительные возможности, тем больше она будет демонстрировать вычислительную несводимость и тем меньше поддаваться обучению. А чем легче что-то поддается фундаментальному обучению, тем меньше оно способно выполнять сложные вычисления.

(Для ChatGPT в том виде, в каком он существует сейчас, ситуация еще более экстремальная, потому что нейронная сеть, используемая для генерации каждого токена вывода, является чистой нейронной сетью с прямой связью – feed-forward, то есть сетью без циклов, – и, следовательно, не имеет возможности выполнять какие-либо вычисления с нетривиальным «потоком управления».)

Конечно, можно спросить, действительно ли важно уметь выполнять несводимые вычисления. На протяжении большей части человеческой истории это не было так уж важно. Но современный технологичный мир построен на инженерии, которая использует математические вычисления, а также – все чаще – более общие вычисления. Если мы посмотрим на мир природы, то увидим, что он полон несводимых вычислений, и мы постепенно начинаем понимать, как их имитировать и использовать в технологических целях.

Нейронная сеть, безусловно, способна замечать те виды закономерностей в мире природы, которые и мы можем легко заметить с помощью «невооруженного человеческого мышления». Но если мы хотим разобраться в вещах, которые относятся к математике или вычислительной науке, то нейронная сеть не сможет этого сделать, если только не использует в качестве инструмента «обычную» вычислительную систему.

Во всем этом есть что-то непонятное. Раньше существовало множество задач, включая написание текстов, которые считались фундаментально слишком сложными для компьютеров. И сегодня, когда мы видим, что технологии вроде ChatGPT справляются с этими задачами, мы склонны думать, что все дело в том, что компьютеры стали значительно мощнее – в частности тех, которые были способны делать что-то вроде вычисления поведения

Перейти на страницу: