ольше в сторону работы или моих детей?
Инстинктивно мы это знаем. Думая о выборе своих жизненных стратегий, мы, как правило, используем метафору с перемещением по поверхности земли, а не по бесконечномерному пространству. Роберт Фрост назвал это развилкой двух дорог. Песня «Лишь раз в жизни» (Once in a Lifetime)[303] группы Talking Heads – своеобразное продолжение стихотворения Фроста «Неизбранная дорога» (The Road Not Taken), это почти изображение градиентного спуска (если прищуриться):
И ты можешь спросить себя:
«Что это за прекрасный дом?»
И ты можешь спросить себя:
«Куда ведет эта дорога?»
И ты можешь спросить себя:
«Прав ли я? Ошибаюсь ли я?»
И ты можешь сказать себе:
«Боже мой! Что я наделал?!»
Вы не обязаны ограничивать управление только одной ручкой. Типичная книга по саморазвитию может содержать много подобных вопросов: хотите повернуть ручку в сторону детей или работы? В сторону детей или супруга? В сторону амбиций или легкой жизни? Но ни в одной книге по саморазвитию, какой бы авторитетной она ни была, вы не найдете бесконечного количества таких вопросов. Каким-то образом из огромного числа возможных ручек, которые вы можете покрутить в своей жизни, книга выбирает конечный набор направлений, куда вы можете пойти.
Будет ли такая книга хорошей, зависит от того, хорошие ли ручки она предлагает. Если бы там говорилось о том, следует ли вам побольше читать Джейн Остин, а поменьше Энтони Троллопа, или о том, нужно ли смотреть побольше хоккея, а поменьше волейбола, то они, вероятно, не помогли бы большинству людей с их насущными проблемами.
Один из самых распространенных способов выбора ручки называется линейной регрессией. Именно к этому инструменту в первую очередь прибегают статистики, когда ищут стратегию прогнозирования одной переменной по какой-то другой. Например, скупой владелец бейсбольной команды желает узнать, насколько процент выигранных матчей влияет на количество проданных билетов. Зачем выставлять на поле слишком много талантов, если это не приводит к переполненным трибунам? Вы можете составить такую диаграмму.
Каждая точка на диаграмме – это бейсбольная команда. Положение точки по вертикали определяется процентом игр, выигранных командой в 2019 году, а положение по горизонтали – общей посещаемостью домашних игр за год. Ваша цель – найти стратегию для прогнозирования посещаемости в зависимости от процента побед, и во всем пространстве таких стратегий вы позволяете себе использовать только линейные правила:
посещаемость = (первое загадочное число) × (процент побед) + (второе загадочное число).
Любая подобная стратегия соответствует прямой линии на диаграмме, и вы хотите, чтобы такая линия как можно лучше соответствовала вашим данным – точкам. Два загадочных числа – это две ручки, вы можете поворачивать их вверх и вниз и тем самым выполнять градиентный спуск, меняя эти числа до тех пор, пока суммарную неправильность вашей стратегии уже нельзя будет уменьшить такими небольшими вмешательствами[304].
Линия, которую вы получите, будет выглядеть так.
Вы можете заметить, что прямая с наименьшей неправильностью все равно весьма неточная! Большинство взаимосвязей в настоящем мире не строго линейны. Мы можем попробовать решить эту задачу, взяв больше переменных (например, можно учесть размер стадиона команды), но в итоге на линейных стратегиях далеко не уедешь. Этот класс стратегий попросту недостаточно велик, чтобы, например, рассказать вам, какие изображения будут кошками. Вам придется рискнуть и выйти в дикий мир нелинейности.
Самая главная вещь в современном машинном обучении – это метод, называемый глубоким обучением. Именно его использует AlphaGo – программа, победившая Ли Седоля; именно он поддерживает парк беспилотных автомобилей Tesla и обеспечивает работу Google Translate. Иногда его изображают как своего рода оракула, автоматически обеспечивающего сверхчеловеческое понимание. Другое название метода – нейронные сети – звучит так, словно он каким-то образом улавливает работу самого человеческого мозга.
Но нет. Как говорила Бруссард, это просто математика, причем даже не новая: основная идея существует с конца 1950-х годов. Что-то вроде архитектуры нейронной сети можно было увидеть еще в 1984 году в моем подарке на бар-мицву. Наряду с чеками, стаканчиками для кидуша[305] и двумя дюжинами ручек я получил от родителей подарок, который страстно желал, – синтезатор Yamaha DX21. Он до сих пор стоит у меня в комнате. А тогда я был крайне горд, что у меня синтезатор, а не просто клавиатура. Это означало, что DX21 не просто имитировал звучание фортепиано, трубы или скрипки согласно заводским настройкам, а позволял вам программировать собственные звуки – при условии, что вы освоите довольно-таки мудреное семидесятистраничное руководство с массой картинок наподобие этой:
Каждый из этих блоков ОП представляет собой волну и имеет несколько ручек, которые вы можете повернуть, чтобы звук был громче, тише, затухал или нарастал. Все это стандартно. Настоящая гениальность DX21 – в связях между операторами, отображенных на вышеприведенной диаграмме. Это своеобразная машина Руба Голдберга[306], где волна, исходящая из ОП 1, зависит не только от ручек на этом блоке, но и от выхода ОП 2, который дает входной сигнал для ОП 1. Волны могли даже изменять сами себя: у ОП 4 есть стрелка «обратной связи».
Таким образом, поворачивая несколько ручек на каждом блоке, я мог получить на удивление большой диапазон выходных сигналов, которые предоставляли мне бесконечные возможности для создания новых самодельных звуков, например «электрическая смерть» или «космический пук»[307].
Нейронная сеть похожа на мой синтезатор. Это сеть из небольших блоков наподобие этой:
Каждый такой блок делает одно и то же: берет на входе какое-то число и выдает на выходе либо 1 (если число на входе было больше или равно 0,5), либо 0 (если число на входе было меньше 0,5). Идею использовать подобные блоки в качестве базового элемента обучающейся машины придумал в 1957 или 1958 году психолог Фрэнк Розенблатт[308] как простую модель работы нейрона: он бездействует, пока получаемый им стимул не превысит определенное пороговое значение, и в этот момент возбуждается и передает сигнал. Розенблатт назвал свои машины перцептронами. Из-за этой истории мы по-прежнему называем такие сети фальшивых нейронов «нейронными», хотя большинство людей уже не считают их имитаторами работы нашего мозгового аппарата.
Как только блок выдает выходной сигнал, это число двигается вдоль стрелки, отходящей от блока вправо. Каждой стрелке приписано определенное число, называемое весом, и выходной сигнал умножается на этот вес. Входной сигнал каждого блока – это сумма всех чисел, поступающих в него слева.
Каждый столбец блоков называют слоем, поэтому нарисованная выше сеть имеет два слоя – два блока в первом слое и один во втором. Вы начинаете с двух входных сигналов, по одному для каждого блока. Вот что может произойти.
• Оба входных сигнала не меньше 0,5. Тогда оба блока в левом столбце дают 1. При движении по стрелке вправо они превращаются в 1/3 после умножения на вес, поэтому блок в правом столбце получает на входе 2/3 и выдает на выходе 1.
• Один входной сигнал не меньше 0,5, а второй меньше. Тогда блоки слева выдают 1 и 0, блок справа получает 1/3 на входе и выдает 0 на выходе.
• Оба входных сигнала меньше 0,5. Тогда оба блока слева выдают 0, блок справа получает 0 и выдает его же.
Иными словами, эта нейронная сеть – машина, которая берет два числа и сообщает вам, меньше ли они 0,5 или нет.
Следующая нейронная сеть немного сложнее.
Теперь в левом столбце 51 блок, и все они соединены с единственным блоком в правом столбце с разными весами на стрелках. Некоторые веса маленькие – всего 3/538, самый большой – 55/538. Что делает такая машина? Она получает на входе 51 разное число и активирует каждый блок слева, если входной сигнал больше 0,5. Затем она складывает все веса, подходящие к блоку справа, и проверяет, превышает ли сумма 0,5. Если да, то на выходе будет 1, если нет, то 0.
Мы могли бы назвать эту конструкцию двухслойным перцептроном Розенблатта, но обычно ее называют Коллегией выборщиков в США: 51 блок – это 50 штатов и Вашингтон, округ Колумбия[309]. Блок штата активируется, если в нем побеждает кандидат от республиканцев. Тогда вы суммируете голоса выборщиков со всех штатов, делите на 538, и если ответ будет больше 0,5, то побеждает кандидат от республиканцев[310].
Вот более современный пример. Его не так просто описать словами, как Коллегию выборщиков, но он немного ближе к нейронным сетям, которые обеспечивают нынешний прогресс в машинном обучении.
Блоки здесь несколько сложнее, чем у Розенблатта: блок получает на входе некоторое число и выдает либо его, либо 0 в зависимости от того, какое из них больше. Иными словами, если блок на входе получает положительное число, он его пропускает дальше, а если отрицательное, то выдает 0.