Давайте посмотрим на работу такого устройства. Предположим, я начинаю слева с 1 и 1. Оба числа положительные, поэтому оба блока в левом столбце выдадут 1. Далее верхний блок второго столбца получает на входе 1 × 1 = 1, а второй блок сверху: 1 × (–1) = –1. Аналогично третий и четвертый блоки получают на входе 1 и –1. Поскольку 1 – положительное число, верхний блок выдает 1. Однако второй блок с отрицательным входом не станет активироваться и выдаст 0. Аналогично третий блок выдаст 1 и четвертый 0.
Теперь рассмотрим третий столбец. На входе верхнего блока
1 × 1 + 3 × 0 + 2 × 1 + 1 × 0 = 3,
а на входе нижнего
3 × 1–1 × 0–5 × 1–1 × 0 = –2.
Следовательно, первый блок выдает 3, а у второго на выходе 0. Наконец, единственный блок четвертого столбца получает сумму этих двух чисел и в итоге выводит 3.
Если вы не проследили описанное во всех деталях, ничего страшного. Важно то, что нейронная сеть – это стратегия: она принимает два числа на входе и выдает одно на выходе. И если вы измените веса на линиях, соединяющих блоки, то есть повернете четырнадцать ручек, то измените и стратегию. Эта схема дает нам 14-мерный ландшафт, который вы можете исследовать в поисках наиболее подходящей для имеющихся у вас данных стратегии. Если у вас сложности с четырнадцатью измерениями, рекомендую последовать совету Джеффри Хинтона, одного из основателей современной теории нейронных сетей: «Представьте себе трехмерное пространство[311] и скажите себе очень громко: “Четырнадцать”. Все так делают». Хинтон – выходец из семьи энтузиастов пространств большой размерности: его прапрадед Чарльз[312] написал в 1904 году целую книгу о том, как визуализировать четырехмерные кубы, и изобрел слово тессеракт для их описания[313]. Если вы когда-нибудь видели картину Дали «Распятие, или Гиперкубическое тело», то это одна из визуализаций Хинтона.
Описанная сеть с указанными весами присваивает значение 3 или меньше любой точке (x, y) плоскости, которая лежит внутри следующей фигуры:
(Обратите внимание, что точка (1, 1), для которой наша стратегия выдает ровно 3, находится на границе фигуры.) Различные значения весов дадут различные фигуры, но не любую фигуру. Природа перцептрона такова, что нарисованный объект всегда будет многоугольником – фигурой, ограниченной отрезками прямых[314].
Предположим, у меня есть такая картинка:
Я отметил некоторые точки на плоскости буквой X, а некоторые – буквой O. Моя цель – научить машину присваивать буквы X и O другим, еще не помеченным точкам этой плоскости, основываясь на моей маркировке. Может быть (я надеюсь), существует какая-то стратегия, получаемая путем настройки четырнадцати ручек, которая будет присваивать большие значения всем точкам с X и маленькие – всем точкам с O, и это позволит мне сделать какие-то разумные предположения о тех точках плоскости, которые я еще не пометил. А если такая стратегия есть, надеюсь, я смогу изучить ее с помощью градиентного спуска, чуть-чуть поворачивая каждую ручку и наблюдая, как это уменьшает неправильность моей стратегии в отношении уже имеющихся примеров. Найдите наилучшее маленькое изменение, которое можете внести. Сделайте это. Повторите.
Слово глубокий в термине глубокое обучение просто означает, что сеть имеет много столбцов-слоев. Число блоков в каждом столбце называется шириной, и это число на практике может быть довольно большим, однако название «широкое обучение» кажется не таким привлекательным терминологически.
Конечно, современные глубокие сети намного сложнее изображенных на наших рисунках. Блоки могут быть устроены сложнее, чем простые функции, о которых мы говорили. В так называемой рекуррентной нейронной сети у вас могут быть блоки с обратной связью, использующие свой выходной сигнал в качестве своего же входного сигнала, как блок ОП 4 на моем синтезаторе DX21. И они просто быстрее. Как мы узнали, идея нейронных сетей не нова; я еще помню не столь отдаленные времена, когда ее считали тупиковой. Однако оказалось, что она очень удачна и просто нуждалась в соответствующих компьютерных мощностях[315]. Чипы, называемые графическими процессорами и предназначенные для быстрой отрисовки графики в компьютерных играх, оказались идеальными инструментами для обучения действительно больших нейронных сетей. Это позволило экспериментаторам увеличить глубину и ширину своих сетей. С современными процессорами вам незачем ограничиваться четырнадцатью ручками – их можно иметь тысячи, миллионы и даже больше. Нейронная сеть GPT-3 использует для генерации правдоподобного английского текста 175 миллиардов ручек.
Конечно, пространство со 175 миллиардами измерений велико; однако 175 миллиардов ничтожно малы по сравнению с бесконечностью. Мы по-прежнему исследуем только крохотное подпространство из пространства всех возможных стратегий. И тем не менее, похоже, на практике этого достаточно, чтобы получить текст, выглядящий так, будто его написал человек, – равно как крохотной сети, имевшейся в DX21, было достаточно, чтобы обеспечить правдоподобную имитацию трубы, виолончели и космического пука.
Это удивительно, но есть и еще одна загадка. Вспомните, что идея градиентного спуска сводится к поворачиванию ручек до тех пор, пока вы не сделаете все возможное для данных, на которых обучались. Современные сети имеют так много ручек, что часто могут добиться идеальной работы на обучающем множестве, называя каждое из тысяч изображений кошек кошкой и каждое из тысяч изображений других объектов – некошкой. Фактически при таком количестве ручек имеется колоссальное пространство стратегий, и все они на 100 % верны на обучающем множестве. Оказывается, большинство этих стратегий работают ужасно, когда им дают изображения, которые сеть еще не видела. Но тупой жадный процесс градиентного спуска приводит к одним стратегиям гораздо чаще, чем к другим, и те стратегии, которые предпочитает градиентный спуск, на практике кажутся гораздо более приспособленными к обобщению на новые примеры.
Почему? Что такого особенного в этой конкретной форме сети, что делает ее настолько хорошей для широкого круга задач обучения? Почему именно в той крохотной области пространства стратегий, где мы ищем, и оказывается хорошая стратегия?
Насколько я знаю, это загадка. Хотя буду честен, ведутся жаркие споры о том, загадка ли это. Я задавал этот вопрос многим специалистам в области искусственного интеллекта – именитым, важным людям, и каждый радостно забалтывал меня по этому поводу. У некоторых были очень уверенные объяснения, почему все это работает, но двух одинаковых объяснений я не слышал.
Но я хотя бы могу сказать, почему мы выбрали для исследований ландшафт нейронных сетей.
Наверное, вы слышали старую байку о том, как человек, возвращающийся поздно ночью домой, увидел своего мрачного друга, стоящего на четвереньках под уличным фонарем.
– Что случилось?
– Потерял ключи от машины, – отвечает друг.
– Дело дрянь. Давай помогу.
Он тоже становится на колени, и оба дружно шарят в траве. Через некоторое время человек обращается к другу:
– Ты уверен, что они тут? Мы же долго ищем.
– Не уверен и понятия не имею, где они, – отвечает друг. – Я много где был с того момента, когда последний раз их видел.
– Но тогда почему мы уже двадцать минут ищем их под этим фонарем?
– Потому что в остальных местах темно и ничего не видно!
Этот друг очень похож на современного специалиста по машинному обучению. Почему среди огромного моря стратегий, где мы могли бы искать, мы обращаем внимание на нейронные сети? Потому что они прекрасно подходят для градиентного спуска – единственного метода поиска, который мы по-настоящему знаем. Влияние поворота одной ручки легко вычленить: он воздействует на выходной сигнал соответствующего блока понятным образом; затем можно проследить, как этот измененный выходной сигнал влияет на блоки, лежащие ниже, и так далее[316]. Почему мы выбираем для поиска хороших стратегий именно эту часть пространства? Да потому, что именно в этой части проще всего увидеть, куда мы идем. В остальных местах слишком темно!
Предполагается, что байка о ключе выставляет друга глупцом. Однако в несколько измененной вселенной друг вовсе не так глуп. Предположим, что ключи от машины на самом деле разбросаны повсюду – на улице, в лесу и (весьма вероятно) где-то в круге света под уличным фонарем. Фактически там в траве валяется, вероятно, множество ключей от многих машин. Возможно, друг на практике обнаружил, что предыдущие поиски в этом месте наградили его ключами от гораздо более крутых автомобилей, нежели он ожидал! Да, ключ от лучшего автомобиля в городе может с равным успехом находиться где угодно. Но если достаточно долго искать под фонарем, отказываясь от имеющихся ключей каждый раз, когда находишь ключи от более роскошной машины, можно жить припеваючи и горя не знать.
Глава 8. Вы – свой нольюродный брат, и другие карты
Что такое окружность? Вот официальное определение.
Окружность – это совокупность точек на плоскости, находящихся на определенном расстоянии от фиксированной точки, называемой центром.
Прекрасно, а что такое расстояние?
Мы уже сталкивались с такой проблемой. Расстояние между точками может быть расстоянием по прямой. Но в реальности, если кто-то спрашивает вас, как далеко вы от его дома, вы можете сказать: «О, всего в пятнадцати минутах ходьбы». И это тоже понятие расстояния. Если рассматривать расстояние как «время, необходимое для преодоления», то окружности могут выглядеть так: