Форма реальности Элленберг Джордан

В терминах логики второе утверждение называется противоположным первому. Существуют и другие варианты.

Обратное утверждение. Если в автомобиле есть протечка, то коврики на полу будут влажными.

Контрапозитивное утверждение. Если в автомобиле нет протечки, то коврики будут сухими[268].

Исходное утверждение эквивалентно своему контрапозитиву; это просто два разных набора слов, выражающих одну и ту же идею, словно 1/2 и 3/6 или «величайший шорт-стоп в моей жизни» и «Кел Рипкен – младший»[269]. Вы не обязаны соглашаться ни с тем, ни с другим, но если соглашаетесь с одним, то вынуждены согласиться и с другим. Однако утверждение и обратное утверждение – две совершенно разные вещи. Может оказаться, что оба истинны, оба ложны или одно истинное, а другое ложное.

Ферма показал, что если n – простое число, то 2n делится на n. Обратное утверждение звучит так: если 2n делится на n, то n – простое число. Это утверждение, которое позволило бы делать проверку методом Ферма, иногда называют китайской гипотезой[270]. Оно истинно? Нет. Оно китайское? Тоже нет. Название происходит от стойкого и ошибочного убеждения[271], что малая теорема Ферма была известна китайским математикам еще во времена Конфуция. Как и в случае игры «Ним», западные математики сочли странно привлекательной идею, что любую математическую концепцию неясного происхождения следует считать старой и китайской. Мнение, что древние китайские математики сформулировали утверждение, обратное малой теореме Ферма, по-видимому, восходит к короткой заметке 1898 года[272], написанной британским астрофизиком Джеймсом Джинсом[273] в пору студенчества, что только добавляет издевательства к неправильной атрибуции[274].

Утверждение, обратное малой теореме Ферма, неверно, потому что, подобно тому как юноша с фальшивым удостоверением личности может обмануть самого сурового вышибалу, некоторые составные числа проходят такой тест. Наименьшее из этих чисел – 341. (Хотя этот пример, кажется, был открыт только в 1819 году!) Другой пример – то самое подлое число 4 294 967 297, одурачившее Ферма. И таких чисел бесконечно много.

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

ПЬЯНОЕ-ПЬЯНОЕ ГО

Все вышеизложенное возвращает нас к компьютерному го. Игра го намного старше шашек и шахмат и (просто для разнообразия!) действительно древняя и китайская. С другой стороны, машины, играющие в го, появились позже автоматов для других игр. Еще в 1912 году испанский математик Леонардо Торрес-и-Кеведо построил машину «Шахматист» (El Ajedrecista), которая умела разыгрывать некоторые шахматные эндшпили, а Алан Тьюринг изложил план функционального шахматного компьютера в 1950-х годах. Сама идея автомата, играющего в шахматы, еще старше: она восходит к «Шахматному турку» Вольфганга фон Кемпелена, чрезвычайно популярному автомату в XVIII и XIX веках, который вдохновлял Чарльза Бэббиджа, озадачивал Эдгара По[275] и ставил мат Наполеону, однако на самом деле управлялся человеком небольшого роста, скрытым внутри механизма[276].

Первая компьютерная программа, играющая в го, появилась только в конце 1960-х: ее написал Альберт Зобрист в рамках свой диссертации по информатике в Висконсинском университете. В 1994 году, когда «Чинук» на равных сражался с Марионом Тинсли, машины были бессильны против профессиональных игроков в го. Но, как выяснил Ли Седоль, все быстро изменилось.

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

В основе всего, что мы делаем в области искусственного интеллекта, лежит компромисс. Чем точнее оценочная функция, тем больше времени обычно требуется для ее вычисления; чем она проще, тем менее точно отражает тот параметр, для которого предназначена. Разумнее всего было бы присвоить 1 каждой выигрышной позиции и 0 каждой проигрышной; это обеспечило бы абсолютно идеальную игру, но у нас нет реальных способов вычислить такую функцию. С другой стороны, мы могли бы присвоить каждой позиции одно и то же число («Да я не знаю, вся выпечка кажется отличной»). Это число было бы очень просто вычислять, но мы не получили бы вообще никаких полезных подсказок о том, как нам играть дальше.

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

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

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

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

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

Подобные рассуждения были частью теории случайных блужданий задолго до того, как Пирсон дал им название. Можно считать, что такая схема восходит к Книге Бытия, где Ной, которому надоело сидеть законопаченным в ковчеге с несколькими сотнями пар животных, отправляет ворона, который «отлетал и прилетал» в поисках земли, оставленной отступающей водой. Ворон ничего не нашел. Тогда Ной отправил голубя, и тот тоже вернулся, не найдя суши. Но когда голубь в следующий раз отправился в случайный полет и вернулся с масличным листом в клюве, Ной понял, что земля где-то рядом[277].

Случайные блуждания появлялись при изучении игр в течение многих веков, особенно в азартных играх, где блуждание по дереву всегда случайно, по крайней мере частично. Пьер де Ферма в перерывах между написанием писем о простых числах обсуждал с математиком и мистиком Блезом Паскалем задачу о разорении игрока. В этой игре Акбар и Джефф играют в кости, причем у обоих по 12 монет. Они по очереди бросают по три кости. Каждый раз, когда Акбар выбрасывает 11 очков, он получает одну из монет Джеффа. Каждый раз, когда Джефф выбрасывает 14 очков, он забирает одну из монет Акбара. Игра заканчивается, когда один из игроков лишается всех монет и «разоряется». Каковы шансы, что Акбар выиграет?[278]

Это просто вопрос о случайном блуждании, которое начинается в тот момент, когда у игроков поровну монет, и заканчивается, когда у одного из них денег не остается. При бросании трех костей вероятность выпадения 11 очков примерно вдвое выше, чем 14 очков, – просто потому, что существует всего 15 исходов, когда сумма чисел на трех костях равна 14, и целых 27 исходов, когда сумма чисел на трех костях равна 11. Поэтому разумно предположить, что Джефф находится в невыгодном положении. Но насколько невыгодном? Этот вопрос Паскаль задал Ферма. Оказалось[279] (как сразу же ответил Паскалю Ферма, а Паскаль раздраженно дал понять, что уже сообразил), что шансы Джеффа на разорение больше в тысячу с лишним раз! Небольшой сдвиг в случайном блуждании превращается в задаче о разорении игрока в колоссальное неравенство. Джеффу может повезти, и он пару раз выбросит 14 до того, как Акбар выбросит 11, однако его преимущество вряд ли будет длительным, не говоря уже о разорении соперника.

Самый простой способ посмотреть, как это работает на практике, – заменить задачу более простой (детским примером, как ее любят называть математики). Предположим, Акбар и Джефф играют в игру, где шансы Акбара на победу в одной партии равны 60 %, и побеждает игрок, который первым выиграет две партии. Вероятность того, что это сделает Акбар (и тем самым выиграет в целом), составляет 0,6  0,6 = 0,36, или 36 %. А вероятность, что Джефф выиграет первые две партии подряд (и тем самым игру в целом), равна всего 0,4  0,4 = 0,16, или 16 %. В оставшихся 48 % случаев игроки выиграют по одной партии и игра продолжится. Акбар выиграет следующую партию в 60 % от этих 48 % случаев, то есть в 28,8 % игр (0,6  0,48 = 0,288). В оставшихся 40 % от этих 48 % случаев, то есть в 19,2 % игр (0,4  0,48 = 0,192), победит Джефф. Следовательно, общие шансы Акбара на победу (со счетом 2:0 или 2:1) составляют 36 % + 28,8 % = 64,8 %. Это несколько выше, чем его шансы выиграть каждую отдельную партию. Если игра ведется до трех побед в отдельных партиях, то вы можете убедиться, что шансы Акбара на общую победу возрастают примерно до 68,3 %. Чем длительнее игра, тем выше шансы, что победит более умелый игрок[280].

Принцип разорения игрока лежит в основе спортивных турниров. Почему мы не определяем чемпиона мира по бейсболу в одной-единственной игре или победителя какого-нибудь теннисного турнира в одном гейме? Потому что это слишком ненадежно: в одном конкретном гейме более сильный теннисист вполне может проиграть, а цель турнира – определить действительно лучшего.

Вместо этого теннисный сет продолжатся до тех пор, пока один из игроков не выиграет шесть геймов с опережением как минимум на два гейма. Это трудно описать словами, поэтому давайте посмотрим на рисунок.

Вы можете представлять теннис как случайное блуждание по этой сетке; каждый раз после сыгранного гейма вы перемещаетесь вправо или вверх и останавливаетесь, когда ударяетесь об одну из границ, то есть «разоряете» одного из игроков (конец сета). Если игрок А чуть-чуть лучше, чем игрок В (то есть вероятность шага вверх больше, чем вправо), то шанс закончить матч на верхней границе выше, чем на нижней[281]. Поскольку длинный диагональный коридор на диаграмме бесконечен, для продолжительности сета не установлено никаких ограничений. Если игроки не будут одинаково сильны, то крайне маловероятно, чтобы блуждание зайдет очень далеко по коридору, не ударившись о его стенки. Тем не менее такое бывало. Например, матч Джона Изнера и Николя Маю 23 июня 2010 года на Уимблдоне[282]. Два игрока то выходили вперед, то сравнивали счет – гейм за геймом. Шли часы. Солнце стало садиться. Табло на корте выключилось при счете 47:47, поскольку это был максимум, на который оно запрограммировано. Примерно в 21:00 при счете 59:59 темнота помешала играть дальше. На следующий день Изнер и Маю ее возобновили, продолжая брать геймы на своей подаче. Наконец, очередной удар Изнера[283] принес ему выигрыш 138-го гейма и общую победу 70:68 в пятом сете (и в матче). Изнер сказал: «Ничего подобного больше не повторится. Никогда»[284].

Но могло бы! Такие правила могут показаться странными, но для меня это часть очарования тенниса. Ни часов, ни сирены, ни ограничения на количество геймов. Единственный итог – кто-то должен выиграть[285].

Большинство спортивных турниров проходят иначе[286]. Когда в финале Мировой серии играют две бейсбольные команды, победителем станет та, которая первой одержит четыре победы. Поэтому серия не может длиться дольше семи игр: при счете 3:3 следующая будет решающей. Нельзя, чтобы матчи превратились в ультрамарафон, как у Маю и Изнера[287]. Геометрия границ Мировой серии отличается.

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

В этой системе действует «правило милосердия»: вам засчитывается поражение в серии, если после трех игр вы проигрываете 3:0 (название означает, что аутсайдеру не приходится лишний раз унижаться). С другой стороны, если обе команды выиграли по три игры (что свидетельствует о равенстве сил), то для чемпионства требуется одержать пятую победу. Да, вы потеряете те редкие захватывающие моменты, когда команда отыгрывается после 0:3, как бейсболисты «Бостон Ред Сокс» против «Нью-Йорк Янкиз» в 2004 году, однако такие события случаются редко. И разве это будет слишком высокой ценой за возможность сыграть восьмые матчи и девятый матч «победитель получает все», когда команды одинаково сильны?

ПРОСТРАНСТВО СТРАТЕГИЙ

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

Еще выгоднее совместить пьяные спотыкания с анализом дерева вроде того, что мы использовали для игры «Ним». Это выглядит примерно так:

Думаю, пришло время рассказать кое-что о себе. Я не умею играть в го. Партия, в которой кузен Закари сокрушил меня, была последней в моей жизни. Я даже не помню правил. Однако это не имеет значения; я в любом случае могу написать этот раздел о го, потому что дерево сообщает вам, что делать, независимо от того, знаете вы правила или нет. Дерево может быть шашечным, шахматным, деревом «Ним» или го – вы анализируете его совершенно одинаково. Все, что имеет отношение к стратегии, заключено в структуре ветвей и числах на листьях. Важна только геометрия дерева.

Числа на листьях указывают пьяную оценку для соответствующей последовательности ходов. Если Акбар делает ход А, а Джефф отвечает ходом 1, после чего они ходят наугад, то в итоге Акбар выиграет 60 % партий. Таким образом, позиция А1 получает пьяную оценку 0,4.

Однако пьяная оценка самого хода А не настолько проста. Если мы предположим, что пьяный Джефф делает после него случайный ход из трех возможных, то с вероятностью 1/3 партия перейдет в положение А1, с вероятностью 1/3 – в положение А2 и с вероятностью 1/3 – в положение А3. Из 300 пьяных попыток 100[288] закончатся в А1, и пусть Акбар выиграет из них 60, в А2 – 50 игр из 100, а в А3 – 40 из 100. В общей сложности он выиграет 150 партий из 300, то есть ровно половину. Поэтому позиция А получает пьяную оценку 0,5. Аналогичным образом мы можем найти оценки для позиции B – это 0,4, и позиции C – 0,9. (Помните, что пьяная оценка для позиции, где ход Джеффа – это вероятность того, что пьяный Джефф победит пьяного Акбара, а не наоборот.)

То, как Акбар играет в эту игру, зависит от того, когда начинается пьянка (то есть случайная игра). Если он просматривает только одну ветвь ниже по дереву, считая ее далее случайной, он выберет ход В с наименьшей пьяной оценкой. Но если он продвинется по дереву дальше, то сможет рассуждать следующим образом. Что на самом деле произойдет, если он выберет ход В? Джефф, еще трезвый как стеклышко, выберет какой-нибудь ход В2, дающий Акбару 20-процентный шанс на победу. Это лучше, чем паршивый ход С, где шансы Акбара всего 10 %, что бы Джефф ни делал дальше. Однако ход А дает Джеффу меньше: его лучший ответ – перейти в А1, где у Акбара шанс 60 %. Поэтому Акбар, думающий на два хода вниз по дереву, а не на один, сможет увидеть, что ход А лучше, чем В.

Естественно, более глубокий анализ может улучшить результат. Позиция В2 заканчивается для Акбара очень плохо, если разыгрывается наугад. Возможно, это просто объективно неблагоприятный сценарий для Акбара. Однако может оказаться, что в этой позиции у Акбара есть один потрясающий ход и много дрянных. Для Акбара, играющего наугад, такая позиция – плохая, поскольку шансы выбрать этот хороший ход невелики, а вот для Акбара, умеющего смотреть на шаг вперед, она прекрасна.

Подобная смешанная стратегия по-прежнему в значительной степени полагается на полусмехотворный метод пьяного го. Поэтому может показаться удивительным, что всего несколько лет назад компьютерные программы для го[289], основанные на подобных методах, были вполне конкурентоспособны на продвинутом любительском уровне.

Однако не эта стратегия приводит в действие машины нового поколения, из-за которых игру покинул Ли Седоль. Новые программы все еще применяют функцию, которая оценивает позицию как «хорошая или плохая для Акбара» по какой-то числовой шкале, и ориентируются на эту оценку при выборе следующего хода. Однако механизм вычисления оценки, используемый программой типа AlphaGo, много-много лучше, чем любой, добытый из случайного блуждания. Как построить такой механизм? Ответ (который, я бы сказал, вы уже точно знаете): геометрия. Но геометрия более высокого порядка.

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

Чтобы обнаружить такую стратегию, вам нужно ориентироваться в новой геометрии – геометрии пространства стратегий, – а это место рисовать куда сложнее, чем дерево. И мы пытаемся найти в этом бесконечномерном[290] абстрактном стоге сена процедуру принятия решений, которая будет лучше, чем все, что могла придумать отточенная практикой интуиция Мариона Тинсли или Ли Седоля.

Звучит сложно. Куда нам двигаться дальше? Все сводится к самому грубому и самому мощному методу – проб и ошибок. Посмотрим, как это работает.

Глава 7. Искусственный интеллект как альпинизм

Моя знакомая Мередит Бруссард[291], профессор из Нью-Йоркского университета и эксперт в сфере машинного обучения и его влияния на общество, не так давно выступала на телевидении, где ее попросили вкратце объяснить общенациональной аудитории, что такое искусственный интеллект и как он работает.

Это не роботы-убийцы, объяснила она ведущим, и не бесстрастные андроиды, чьи умственные способности превосходят наши. «Самое важное, что нужно помнить – сказала она, – что это просто математика и не надо ее бояться».

Удивленное выражение лиц ведущих наводило на мысль, что они предпочли бы роботов-убийц.

Однако ответ Мередит был хорош. И я готов более детально поговорить на эту тему. Так что я принимаю эстафету и попробую объяснить, что такое математика машинного обучения, потому что эта масштабная идея проще, чем вы думаете.

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

Вот одна из стратегий. Посмотрите на уклон у ваших ног. Возможно, поверхность чуть повышается при шаге на север и чуть понижается при шаге на юг. Повернитесь на северо-восток и обнаружите еще более крутой подъем. Поворачиваясь вокруг своей оси, вы проверите все возможные направления движения; среди них точно есть одно с наибольшим уклоном вверх[292]. Сделайте несколько шагов в этом направлении. Снова повернитесь, выберите самый крутой подъем и продолжите движение.

Теперь вы знаете, как работает машинное обучение!

Ладно, возможно, в нем есть нечто большее. Но в основе всего лежит идея под названием градиентный спуск[293]. Фактически это некая форма метода проб и ошибок: вы пробуете несколько возможных ходов и выбираете тот, который вам больше всего подходит. Градиент, связанный с определенным направлением, – это математическое наименование выражения «насколько изменится высота, если вы делаете один крохотный шаг в этом направлении». Другими словами, это наклон поверхности, когда вы двигаетесь в этом направлении. Если вы знаете математический анализ, то это примерно то же самое, что производная, однако для обсуждения нашей темы математический анализ не нужен. Градиентный спуск – это алгоритм, математический способ сказать «явное правило, указывающее вам, что делать в любой ситуации, с которой вы можете столкнуться». И в данном случае правило таково:

Представьте все шаги, которые можете сделать. Выясните, какой из них обеспечивает наибольший градиент, и сделайте его. Повторите.

Ваш путь к вершине, нанесенный на топографическую карту, будет выглядеть примерно так:

(Еще одно изящное геометрическое утверждение[294]: при движении по градиентному спуску ваш путь на карте всегда пересекает точки изолиний равных высот под прямым углом. Объяснение ищите в примечаниях в конце книги.)

Как видите, эта идея может оказаться удачной для альпинизма (хотя не всегда, и мы еще к этому вернемся), однако какое отношение все это имеет к машинному обучению?

Предположим, что я все-таки не альпинист, а компьютер, пытающийся чему-то научиться. Это может быть одна из машин, с которыми мы уже встречались, например AlphaGo, играющая в го лучше мастеров, или GPT-3, выдающая длинные строки правдоподобного английского текста. Но для начала будем придерживаться классики и допустим, что я – компьютер, который пытается узнать, что такое кошка.

Как мне это сделать? Примерно так же, как это делает младенец. Малыш живет в мире, где время от времени какой-нибудь взрослый показывает на нечто, находящееся в поле зрения, и говорит: «Кошка!» Вы можете обеспечить компьютеру аналогичный процесс обучения: предоставить ему тысячу изображений кошек в различных позах, при разном освещении и в разном настроении. «Все это кошки», – сообщаете вы компьютеру. В реальности, если вы действительно хотите быть полезным, вы добавляете такое же количество изображений с другими объектами и объясняете компьютеру, что это не кошки.

Задача машины – разработать стратегию, позволяющую ей отличать кошек от некошек самостоятельно. Это блуждание по ландшафту всех возможных стратегий в попытках найти лучшую – вершину точности в идентификации кошек. По сути, это аналог альпиниста. Следовательно, мы можем применить метод градиентного спуска! Вы выбираете какую-нибудь стратегию, тем самым помещая себя в ландшафт, а затем действуете в соответствии с правилом градиентного спуска.

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

ЖАДНОСТЬ – ЭТО ДОВОЛЬНО ХОРОШО

Звучит неплохо, но только до тех пор, пока вы не осознаете, что понятия не имеете, что это значит. Например, что такое стратегия? Это должно быть нечто, понятное компьютеру, а потому должно выражаться в математических терминах. Изображение для компьютера – это длинный список чисел. (Для компьютера все – длинный список чисел, за исключением вещей, которые для него являются коротким списком чисел.) Если картинка представляет собой сетку размером 600600 пикселей, и каждый пиксель имеет яркость, задаваемую числом от 0 (чистый черный) до 1 (чистый белый цвет), и если мы знаем эти 360 000 чисел (600  600), то, соответственно, знаем, что изображено на картинке (по крайней мере в черно-белом варианте).

Стратегия в нашем случае – это просто способ взять 360 000 чисел и превратить их либо в кошку, либо в некошку, то есть на языке компьютеров – в 1 или 0. В математических терминах это функция. На деле для большей психологической реалистичности результатом стратегии может быть какое-то число между 0 и 1: оно выражает неуверенность машины, если ей подсунут двусмысленное изображение, например рысь или подушку в виде кота Гарфилда. Результат 0,8 можно интерпретировать так: «Я почти уверен, что это кошка, но сомнения остаются».

Например, ваша стратегия может быть такой: «Вывести среднее значение всех 360 000 чисел входных данных». Это даст 1, если изображение было полностью белым, и 0, если оно было полностью черным, а в целом отражает его среднюю яркость на экране. Что тут общего с кошкой? Ничего. Я и не говорил, что это хорошая стратегия.

Как же измерить успешность стратегии? Простейший способ – посмотреть, как она работает на тех двух тысячах картинок, которые наш «Кошкотрон» уже видел. Для каждой картинки мы можем присвоить нашей стратегии «меру неправильности»[295]. Если нарисована кошка и стратегия дает 1, то это «нулевая неправильность», то есть получается верный ответ. Если нарисована кошка, а стратегия выдает 0, то неправильность равна 1 – наихудший из возможных результатов. Если на изображении кошка, а стратегия дает 0,8, то ответ верный, но с долей сомнения, равной 0,2[296].

Вы складываете такие числа для всех двух тысяч используемых изображений и получаете общую суммарную неправильность, которая и будет мерой вашей стратегии. Ваша цель – найти стратегию с минимальной суммарной неправильностью. Как сделать так, чтобы стратегия не ошибалась? Вот здесь и появляется градиентный спуск. Потому что теперь вы уже знаете, что означает улучшение или ухудшение стратегии при ее незначительном изменении. Градиент измеряет, как сильно меняется неправильность при небольшом изменении стратегии. И из всех возможных способов немного изменить стратегию вы выбираете тот, который максимально уменьшает неправильность. (Кстати, именно поэтому метод называют градиентным спуском, а не подъемом! Часто наша цель в машинном обучении – минимизировать что-то плохое, например неправильность, а не максимизировать что-то хорошее, скажем высоту над уровнем моря.)

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

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

Что мне нравится в стохастическом градиентном спуске, так это его странность. Представьте, например, что президент Соединенных Штатов принимает решения без какой-либо глобальной стратегии: глава государства окружен толпой кричащих подчиненных, где каждый требует скорректировать политику в соответствии с его собственными интересами. И президент ежедневно случайным образом выбирает одного из этих людей, выслушивает его и соответствующим образом меняет курс страны[297]. Довольно нелепый (и опасный!) способ руководить правительством огромной страны, однако неплохо работающий в машинном обучении!

В нашем описании пока отсутствует кое-что важное: как узнать, когда остановиться? Ну, это как раз просто: вы останавливаетесь, когда ваши мелкие изменения больше не дают никаких улучшений. Однако тут возникает большая проблема: возможно, на самом деле вы вовсе не на вершине!

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

Хотя нет. Настоящая вершина далеко, и градиентный спуск не приведет вас туда. Вы попали в точку, известную как локальный оптимум[298], в которой никакие мелкие изменения не приводят к улучшению, но при этом она далека от фактического наилучшего положения. Мне нравится думать о локальном оптимуме как о математической модели прокрастинации – склонности откладывать дела на потом. Предположим, вам нужно сделать какое-то неприятное дело: например, разобрать огромную шаткую стопку папок, большинство из которых связано с целями, к которым вы стремились годами, и избавление от них означало бы окончательное признание, что вы этими путями уже больше никогда не пойдете. В любой конкретный день метод градиентного спуска рекомендует вам совершить какой-то маленький шаг, который сделает вас в этот день максимально счастливым. Нужно ли для этого разбирать завалы? Нет, как раз наоборот. Начав возиться со злополучной стопкой, вы почувствуете себя ужасно. Таким образом, градиентный спуск требует от вас отложить работу на завтра. Но завтра он вам скажет то же самое. И послезавтра тоже. Поздравляю! Вы попали в точку локального оптимума, на невысокую вершину. Чтобы подняться на более высокую вершину, вам придется спуститься в какую-то низину и, возможно, преодолеть большое расстояние – спуститься, чтобы в итоге покорить вершину. Градиентный спуск – это так называемый жадный алгоритм, потому что в любой момент он требует сделать шаг, ведущий к краткосрочной выгоде. Жадность – одна из главных ветвей на древе грехов, но опять же, согласно капиталистической поговорке, жадность – это хорошо[299]. В машинном обучении правильнее сказать: «Жадность – это довольно хорошо». Метод градиентного спуска может привести к локальному оптимуму, однако на практике это случается не так часто, как можно предположить теоретически.

Существуют способы обойти локальный оптимум: нужно просто ненадолго приструнить свою жадность. У каждого хорошего правила есть исключения! Например, вы можете вместо остановки на какой-то вершине выбрать другое случайное положение и заново запустить градиентный спуск. Оказываясь в одном и том же месте, вы обретете больше уверенности, что эта точка – наилучшая. Однако на картинке, нарисованной выше, выход из случайной начальной точки с большей вероятностью закончится на высоком пике, а не на низком.

В реальной жизни весьма сложно поставить себя в случайно выбранное новое местоположение! Более реалистичный поступок – сделать из своего текущего положения случайный большой шаг вместо маленького жадного шажка; часто этого достаточно, чтобы вы оказались в такой точке, откуда можно добраться до наилучшей доступной вершины. Именно это мы делаем, когда просим совета у незнакомца, находящегося вне нашего обычного круга общения, или вытаскиваем карты из колоды вроде «Обходных стратегий»[300], изречения на которых («Используй неприемлемый цвет», «Самое главное – то, что легче всего забыть», «Бесконечно малые градации»[301], «Отбрось аксиому»[302]) предназначены для того, чтобы выбить нас из локального оптимума, где мы застряли, и сделать шаги, «срабатывающие» не сразу. Само название указывает на путь, отличающийся от того, что мы обычно выбираем.

ПРАВ ЛИ Я? ОШИБАЮСЬ ЛИ Я?

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

Но что насчет пространства всех возможных стратегий для оценивания изображений кошек? Это пространство гораздо больше, фактически оно бесконечномерное. Нет никакого реального способа рассмотреть все ваши возможные варианты. Это очевидно, если расценивать ситуацию с точки зрения человека, а не машины. Предположим, я пишу книгу по саморазвитию с помощью градиентного спуска и говорю: «Улучшить выбор в жизни легко: достаточно взять все возможные способы изменить ее и выбрать тот, который кардинально улучшает ситуацию». Вас бы парализовало! Пространство всех возможных изменений поведения слишком велико для поиска. А если с помощью какого-то сверхчеловеческого подвига самоанализа вы все же смогли бы его вести? Тогда вы столкнулись бы с еще одной проблемой, потому что есть стратегия для вашей жизни, которая абсолютно минимизирует неправильность всего вашего прошлого опыта.

Стратегия: если решение, которое вам предстоит принять, в точности совпадает с тем, что вы уже принимали раньше, примите то, которое вы сейчас, оглядываясь назад, считаете правильным. В противном случае подбросьте монету.

В сценарии «Кошкотрона» аналог этого правила будет таким.

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

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

Мы увидели два вида неэффективности стратегий. В каком-то смысле они противоположны.

• Стратегия неверна во множестве ситуаций, с которыми вы уже сталкивались.

• Стратегия настолько точно адаптирована к ситуациям, с которыми вы уже сталкивались, что бесполезна для новых ситуаций.

Первая проблема называется недообучением: при формировании стратегии вы недостаточно использовали свой опыт; вторая – переобучением: мы слишком полагаемся на свой опыт. Как найти золотую середину между этими бесполезными крайностями? Это можно сделать, приблизив задачу к настоящему походу в горы. Альпинист выбирает из весьма ограниченного количества вариантов, и мы тоже можем так поступить, если заранее решим ограничить свои возможности. Давайте вернемся к моей книге по саморазвитию с помощью градиентного спуска. Что, если вместо указания рассортировать все допустимые вмешательства, которые читатели могут предпринять, я предложу им подумать только об одном измерении? Например, спрошу работающих родителей, что для них важнее – работа или дети? Это выбор в одном измерении – одна ручка на приборе вашей жизни, которую можно повернуть. И вы можете спросить себя, оглядываясь назад: хотелось бы мне повернуть эту ручку больше в сторону работы или моих детей?

Инстинктивно мы это знаем. Думая о выборе своих жизненных стратегий, мы, как правило, используем метафору с перемещением по поверхности земли, а не по бесконечномерному пространству. Роберт Фрост назвал это развилкой двух дорог. Песня «Лишь раз в жизни» (Once in a Lifetime)[303] группы Talking Heads – своеобразное продолжение стихотворения Фроста «Неизбранная дорога» (The Road Not Taken), это почти изображение градиентного спуска (если прищуриться):

  • И ты можешь спросить себя:
  • «Что это за прекрасный дом?»
  • И ты можешь спросить себя:
  • «Куда ведет эта дорога?»
  • И ты можешь спросить себя:
  • «Прав ли я? Ошибаюсь ли я?»
  • И ты можешь сказать себе:
  • «Боже мой! Что я наделал?!»

Вы не обязаны ограничивать управление только одной ручкой. Типичная книга по саморазвитию может содержать много подобных вопросов: хотите повернуть ручку в сторону детей или работы? В сторону детей или супруга? В сторону амбиций или легкой жизни? Но ни в одной книге по саморазвитию, какой бы авторитетной она ни была, вы не найдете бесконечного количества таких вопросов. Каким-то образом из огромного числа возможных ручек, которые вы можете покрутить в своей жизни, книга выбирает конечный набор направлений, куда вы можете пойти.

Будет ли такая книга хорошей, зависит от того, хорошие ли ручки она предлагает. Если бы там говорилось о том, следует ли вам побольше читать Джейн Остин, а поменьше Энтони Троллопа, или о том, нужно ли смотреть побольше хоккея, а поменьше волейбола, то они, вероятно, не помогли бы большинству людей с их насущными проблемами.

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

Сравнение посещаемости и процентной доли выигранных матчей для команд Главной лиги бейсбола в 2019 году

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

посещаемость = (первое загадочное число)  (процент побед) + (второе загадочное число).

Любая подобная стратегия соответствует прямой линии на диаграмме, и вы хотите, чтобы такая линия как можно лучше соответствовала вашим данным – точкам. Два загадочных числа – это две ручки, вы можете поворачивать их вверх и вниз и тем самым выполнять градиентный спуск, меняя эти числа до тех пор, пока суммарную неправильность вашей стратегии уже нельзя будет уменьшить такими небольшими вмешательствами[304].

Линия, которую вы получите, будет выглядеть так.

Сравнение посещаемости и процентной доли выигранных матчей для команд Главной лиги бейсбола в 2019 году

Вы можете заметить, что прямая с наименьшей неправильностью все равно весьма неточная! Большинство взаимосвязей в настоящем мире не строго линейны. Мы можем попробовать решить эту задачу, взяв больше переменных (например, можно учесть размер стадиона команды), но в итоге на линейных стратегиях далеко не уедешь. Этот класс стратегий попросту недостаточно велик, чтобы, например, рассказать вам, какие изображения будут кошками. Вам придется рискнуть и выйти в дикий мир нелинейности.

DX21

Самая главная вещь в современном машинном обучении – это метод, называемый глубоким обучением. Именно его использует 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.

Давайте посмотрим на работу такого устройства. Предположим, я начинаю слева с 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. Вы – свой нольюродный брат, и другие карты

Что такое окружность? Вот официальное определение.

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

Прекрасно, а что такое расстояние?

Мы уже сталкивались с такой проблемой. Расстояние между точками может быть расстоянием по прямой. Но в реальности, если кто-то спрашивает вас, как далеко вы от его дома, вы можете сказать: «О, всего в пятнадцати минутах ходьбы». И это тоже понятие расстояния. Если рассматривать расстояние как «время, необходимое для преодоления», то окружности могут выглядеть так:

Эти заостренные «морские звезды» представляют собой концентрические окружности, которые обозначают точки, находящиеся ровно в десяти, двадцати, тридцати, сорока и пятидесяти минутах езды на трамвае от их общего центра – площади Пикадилли-Гарденс в Манчестере (Англия). Карты такого рода называются изохронными[317].

Различная геометрия города дает различные виды окружностей. На Манхэттене (слоган: «Я здесь хожу!») люди перемещаются пешком, и, если кто-то спрашивает вас, как далеко вы от дома, вы называете число кварталов. Окружность из точек, находящихся на расстоянии четырех кварталов от центра, выглядит как квадрат, поставленный на один из своих углов.

(Смотрите, мы таки умудрились квадрировать круг!) И любая изохронная карта покажет кучу концентрических квадратов, которые в данном контексте представляют собой окружности вокруг центральной точки.

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

Расстояние до вашего дяди равно 3: сначала один шаг до вашего родителя, который, как мы только что выяснили, находится на расстоянии 2 от своих брата или сестры. Расстояние до вашего двоюродного брата (или двоюродной сестры) равно 4: два шага до бабушки или дедушки, а потом два до кузена или кузины. Вы можете аналогично поступить для любого уровня родства и получить красивую формулу:

расстояние до вашего n-юродного брата = 2n,

поскольку n-юродный брат – это человек, с которым у вас общий предок находится на n уровней выше вас.

Вы являетесь собственным нольюродным братом, поскольку ваш общий родственник – это вы и есть, ноль шагов вверх! (То же самое говорит и формула: расстояние от вас до себя равно 2  0 = 0.) Что касается ваших родителей, то у них нет общего предка (если только они не из истинно аристократического клана), зато есть общий родственник – вы! – ниже по дереву, так сказать, на – 1 уровень вверх. Так что ваши родители друг другу – «минус-одноюродные» брат и сестра. Ваша минус-двоюродная сестра – это человек, с кем у вас общий внук, например теща вашего сына. Такие сложные отношения, называемые «самдхи» на хинди, «консуэгро» на испанском, «атони» на языке кикамба (на котором говорит народ камба в Кении), «мехутаним» на иврите и «махатунем» на идише[318], не имеют названия в английском языке, который бедноват в сфере именования родственных отношений.

Если представить людей своего поколения из моей семьи ввиде точек на некоторой плоскости, то круг радиуса 2 будет включать меня и всех моих родных братьев и сестер[319]; круг радиуса 4 – меня, всех моих братьев и сестер и всех двоюродных братьев и сестер; круг радиуса 6 – всех вышеперечисленных плюс моих троюродных братьев и сестер. И здесь мы видим очаровательно странную особенность «кузеновой» геометрии. Как выглядит круг радиуса 4 вокруг моей двоюродной сестры Дафны? В него входит Дафна, ее родные и двоюродные братья и сестры – другими словами, все внуки моих общих с Дафной бабушки и дедушки. Но ведь это в точности тот же круг радиуса 4, что и у меня! Так кто же находится в его центре – я или Дафна? Никуда не денешься – мы оба. В этой геометрии каждая точка круга является его центром.

Треугольники в «кузеновой» плоскости тоже отличаются от тех, к которым мы привыкли. Мы с сестрой находимся на расстоянии 2 друг от друга, и каждый из нас находится на расстоянии 4 от нашей кузины Дафны, – следовательно, мы образуем равнобедренный треугольник. Представьте себе: любой треугольник в этой плоскости – равнобедренный. Предлагаю вам самостоятельно убедиться, что это так. Странные геометрии наподобие этой называются неархимедовыми. Они могут показаться уродливыми научными курьезами, тем не менее встречаются в математике регулярно. Например, существует «2-адическая» геометрия целых чисел, в которой расстояние между двумя числами – величина, обратная наибольшей степени двойки, на которую делится их разность. Серьезно, оказывается, это хорошая идея.

Практически не бывает настолько абстрактных контекстов, чтобы там нельзя было изобрести понятие расстояния, а за ним и сопутствующую геометрию. Дмитрий Тимочко, теоретик музыки из Принстона, пишет целые книги о геометрии аккордов[320] и о том, как композиторы инстинктивно подбирают кратчайшие пути от одного музыкального положения к другому. Даже язык, на котором мы говорим, обладает определенной геометрией, и ее построение ведет нас к карте всех слов.

КАРТА ВСЕХ СЛОВ

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

Кстати, не совсем очевидно, что эти расстояния опишут вам форму карты! Предположим, в Висконсине всего три города. Знание расстояний между любыми двумя из них означает, что у нас есть длины трех сторон треугольника, а согласно упоминавшемуся в главе 1 утверждению Евклида, если вы знаете три стороны треугольника, то знаете и его форму. Однако куда больше усилий нужно, чтобы доказать, что можно восстановить форму, образованную произвольным множеством точек, если вы знаете расстояния между любыми двумя из них[321]. Мы с вами на основе этих данных можем составить разные карты, но мою карту можно будет перевести в вашу с помощью движения – переноса и поворота, без изменения формы[322].

Зачем представлять форму Висконсина в таком сложном для улавливания табличном виде, когда карты уже существуют? Незачем. Однако для других – негеографических – сущностей мы можем ввести понятие расстояния и с его помощью создать новые виды карт. Например, мы могли бы составить карту индивидуальных черт личности. Что бы мы подразумевали под расстоянием между двумя чертами? Самый простой способ – спросить людей. В 1968 году[323] психологи Сеймур Розенберг, Карнот Нельсон и П. С. Вивеканантан раздали студентам колледжа пакеты из 64 карточек с различными чертами и попросили сгруппировать карточки так, чтобы в одной группе оказались черты, которые, по их мнению, могут принадлежать одному человеку. Тогда расстояние между двумя чертами можно определить по частоте, с которой студенты объединяли соответствующие карточки. Слова reliable («надежный») и honest («честный») часто встречались вместе, потому что они близки по смыслу; а слова good-natured («добродушный») и irritable («раздражительный») – реже, потому что плохо сочетаемы и должны располагаться подальше друг от друга[324].

Как только получите такие числа, можете попробовать составить карту черт личности, чтобы расстояние между ними на бумаге соответствовало расстояниям, установленным в эксперименте.

Возможно, у вас не выйдет! А вдруг вы обнаружите, что любые два слова из набора reliable («надежный»), finicky («разборчивый»), sentimental («сентиментальный») и irritable («раздражительный») находятся на одинаковом расстоянии друг от друга? Вы можете попытаться расположить четыре точки на плоскости на одинаковых расстояниях друг от друга, но у вас ничего не получится. (Я настоятельно рекомендую действительно попробовать это сделать, чтобы ваша геометрическая интуиция осознала, почему это невозможно.) Одни множества расстояний можно передать на плоскости, другие – нет. Существует так называемый метод многомерного шкалирования, который позволяет нарисовать карту, если вы соглашаетесь, чтобы расстояния на ней только приблизительно соответствовали найденным. (Кстати, вам нужно быть готовым к тому, что студенты колледжа, участвующие в психологических экспериментах за деньги на пиво, не обеспечивают точность на уровне электронного микроскопа.) Вы получите следующую картину:

Думаю, вы согласитесь, что эта схема отражает кое-что в геометрии личности. (Оси на рисунке нарисованы исследователями: это их интерпретация того, что на этой карте в действительности означают направления[325].)

Кстати, в трех измерениях сделать одинаковыми все шесть расстояний очень просто: вы размещаете четыре точки в вершинах правильного тетраэдра.

Чем больше размерность пространства, тем точнее вы сможете разместить на своей карте точки так, чтобы расстояния между ними соответствовали измеренным. Это означает, что данные могут сказать вам, в пространстве какой размерности они «хотят» быть[326]. Политологи определяют сходство между членами конгресса на основе их голосования, затем помещают конгрессменов на карту так, чтобы рядом оказались голосовавшие аналогичным образом. Знаете, какая размерность пространства нужна, чтобы вполне качественно расположить американских сенаторов в соответствии с их голосованиями? Всего единица. Вы можете расставить[327] сенаторов вдоль по одной прямой – от самого левого (Элизабет Уоррен из Массачусетса) до самого правого (Майкл Ли из Юты) – и тем самым успешно отразить большую часть их наблюдаемого поведения при голосовании. Так было на протяжении десятилетий; когда же этого не происходило, причиной был настоящий идеологический раскол в демократической партии между крылом, поддерживающим гражданские права, и преимущественно южной фракцией, остававшейся воинственно сегрегационистской. Некоторые полагают, что Соединенные Штаты движутся к новой перестройке, где традиционное разделение «левые против правых» не охватывает всей картины. Например, существует популярная «теория подковы», которая утверждает, что крайне левое и крайне правое крыло в американской политике, расположенные в чисто линейной модели максимально далеко друг от друга, на самом деле весьма близки. С геометрической точки зрения теория подковы утверждает, что политика не вписывается в прямую, а требует плоскости.

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

Для больших массивов данных двумерного пространства редко бывает достаточно. Группа специалистов Google под руководством Томаша Миколова разработала гениальное математическое устройство Word2vec, которое можно назвать картой всех слов. Нам больше не нужно полагаться на студентов и карточки, чтобы собрать информацию о том, какие слова сочетаются между собой. Программа Word2vec, обученная на наборе текстов из Google News объемом шесть миллиардов слов, присваивает каждому английскому слову точку в трехсотмерном пространстве. Нарисовать это трудно, но помните, что точно так же, как точка в двумерном пространстве задается двумя числами (широтой и долготой), точка в трехсотмерном пространстве – это всего лишь список из 300 чисел: долгота, широта, высота, мелкота, густота, прямота, частота, круглота и т. д. и т. п., насколько вам поможет словарь рифм. В трехсотмерном пространстве тоже есть понятие расстояния, которое не особо отличается от известного нам расстояния на плоскости[328]. Цель Word2vec – разместить похожие слова в точках, находящихся недалеко друг от друга.

Что делает слова похожими? Вы можете представить, что у каждого слова есть облако соседей – слов, которые часто появляются вместе с ним в наборе текстов Google News. В первом приближении Word2vec расценивает два слова как похожие, если их облака соседей сильно перекрываются. Во фрагменте текста, окружающего слова glamour («очарование»), runway («подиум») или jewel («драгоценность»), вы можете ожидать найти слова stunning («оглушительный, ошеломительный») или breathtaking («захватывающий»), но не trigonometry («тригонометрия»). А потому слова stunning и breathtaking, в облаках которых встречаются общие слова glamour, runway и jewel, можно считать похожими, отражая тот факт, что эти два почти синонимичных слова часто встречаются в одинаковых контекстах. Word2vec ставит их на расстоянии 0,675 друг от друга. На самом деле из миллиона слов, которые умеет кодировать Word2vec, слово breathtaking – ближайшее к слову stunning. Для сравнения: расстояние от stunning до trigonometry составляет 1,403.

Как только у нас появляется представление о расстояниях, можно говорить об окружностях и кругах. (Хотя, возможно, находясь в трехсотмерном пространстве, было бы лучше говорить об их многомерных аналогах – сферах и шарах.) Круг радиуса 1 вокруг слова stunning содержит 43 слова, в том числе spectacular («зрелищный, эффектный»), astonishing («изумительный, поразительный»), jaw-dropping («крайне удивительный, феерический») и exquisite («изумительный, изысканный»). Машина явно улавливает нечто в этом слове, включая то, что оно может обозначать как красоту, так и удивление. Я должен отметить, что тут не происходит никакого численного выделения смысла слов. Это было бы настоящим подвигом. Вся стратегия строится вовсе не для этого. Расстояние от слова hideous («страшный, омерзительный») до stunning всего 1,12; хотя они почти противоположны по значению, вы вполне можете представить, что они часто появляются в общем контексте, например: «Этот свитер реально __________». Круг слов радиусом 0,9 от teh включает слова ther, hte, fo, tha, te, ot и thats – это даже не слова, не то что не синонимы, однако Word2vec правильно распознает, что все они могут появляться в контекстах с большим количеством опечаток.

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

Как вам описать этот вектор, переносящий вас из Милуоки в Окономовок? Вы могли бы назвать его «вектор на запад до внешнего кольца пригородов». Приложите его к Нью-Йорку[329], и получите город Морристаун (штат Нью-Джерси), или, точнее, природный парк Dismal Harmony («Мрачная гармония») непосредственно к западу от города.

Вы можете перефразировать это по аналогии так: Морристаун относится к Нью-Йорку так же, как Окономовок к Милуоки, как Буанвиль-ан-Мантуа к Парижу, Сан-Херонимо-Икстапантонго к Мехико, а Фараллоновы острова (необитаемое место, бывшая свалка отходов атомной промышленности, а сейчас территория с самой большой плотностью грызунов на планете) – к Сан-Франциско.

Это возвращает нас обратно к слову stunning. Разработчики Word2vec обратили внимание на интересный вектор: тот, который говорит нам, как перейти от слова he («он») к слову she («она»). Можете считать его вектором феминизации. Применив его к слову he, получаете слово she. Что, если применить его к слову king («король»)? Вы получаете точку, которая, как и в случае с парком Dismal Harmony, не попадет в точности в то место, для которого у вас есть слово. Но ближайшее слово – queen («королева»), как в случае парка ближайшим городом был Морристаун. Queen относится к king, как she к he. Это хорошо работает и для других слов: феминизированная версия для слова actor («актер») – actress («актриса»), а для waiter («официант») – waitress («официантка»).

А что насчет слова stunning? Представьте себе: вы получите gorgeous («пышный, великолепный»). Слово gorgeous относится к слову she так же, как stunning к he. Приложите этот вектор в другом направлении, попросив программу Word2vec маскулинизировать stunning, и получите spectacular («зрелищный»). Поскольку эти аналогии представляют собой только приблизительные числовые равенства, они не всегда симметричны: результатом обратной феминизации для spectacular действительно будет stunning, но при маскулинизации слова gorgeous получится magnificent («великолепный»).

Что это означает? Что в математическом, универсальном и совершенно объективном смысле слово gorgeousness («великолепие») – это женская версия слова stunningness («поразительность, ошеломительность»)? Естественно, нет. Программа Word2vec не знает значений слов и не имеет возможности узнать. Все, что она знает, – это огромный набор английских текстов (преобразованные в массу чисел газеты и журналы, выходившие в течение десятилетий), на которых ее обучали. Когда англоговорящие люди хотят выразить stunningness в отношении женщины, у них есть статистически обнаруживаемая привычка употреблять слово gorgeous. Когда речь идет о мужчине, такой привычки нет. Та геометрия, которую вычленила программа Word2vec, на первый взгляд может показаться геометрией смыслов, однако на самом деле это геометрия нашей манеры говорить; отсюда мы можем многое узнать как о себе и своих гендерных предрассудках, так и о нашем языке.

Баловаться с Word2vec – все равно что положить собрание сочинений англоязычного мира на кушетку психоаналитика и заглянуть в его безобразное бессознательное. Феминизированная версия слова swagger («чванство») – sassiness («дерзость»); слова obnoxious («несносный, противный») – bitchy («стервозный»); слова brilliant («блестящий») – fabulous («вымышленный, сказочный»); слова wise («мудрый») – motherly («материнский»). Женский вариант для слова goofball («дурачок, недотепа») – ditz («глупышка»), а второй предлагаемый вариант – вот честное слово! – perky blonde («бойкая блондинка»)[330]. Женский вариант для слова genius («гений») – minx («кокетка»). И тут снова несимметричность: мужской вариант от minx – scallywag («озорник, проказник»). Шаг в мужскую сторону от teacher («учитель») – headmaster («директор школы»). Шаг в мужскую сторону от имени Карен[331] – Стив[332].

Если вы возьмете bagel («бейгл») и феминизируете его, то леди-бейгл – это muffin («маффин»). Hindu bagel («индийский бейгл») – то есть то, что вы получите, если возьмете вектор, переводящий слово Jewish («еврейский»)[333] в Hindu («индийский»), и примените его к слову bagel, – это vada pav («вада пав»), популярное в Мумбаи вегетарианское блюдо: булочка с двумя картофельными котлетками. Catholic bagel («католический бейгл») – это sandwich («сэндвич»); второй вариант – meatball sub (сэндвич с фрикадельками под соусом).

Программа Word2vec знает и названия городов. Если вместо широты и долготы использовать ее концептуальный векторный анализ, то Окономовоком для Нью-Йорка будет вовсе не Морристаун, а Саратога-Спрингс. Понятия не имею почему.

Играть с этой штукой весело и в каком-то смысле поучительно. Но я позволил себе ненадлежащее поведение, свойственное авторам статей о машинном обучении, – настойчиво выбирал фактики поинтереснее. Забавно делиться самыми эффектными и впечатляющими примерами! Это может ввести в заблуждение: Word2vec – вовсе не волшебная машина смыслов. Чаще всего предлагаемая аналогия – всего лишь синоним исходного слова (женский вариант для слова boring («скучный») – это uninteresting («неинтересный»); для слова mathematics («математика») – просто сокращение math; для amazing («поразительный») – incredible («невероятный»); написание с орфографической ошибкой (женская версия слова vicious («порочный») – это viscious) или просто совсем неправильное слово: мужской вариант для duchess («герцогиня») – это prince («принц, князь»), женский для pig («свинья») – piglet («поросенок»), женский для cow («корова») – cows («коровы»), женская версия слова earl («граф») – это Georgiana Spencer (Джорджиана Спенсер), хотя правильное слово здесь – countess («графиня»). Правда, тут нужно признать: Спенсер графиней была[334].

Читая о последних достижениях искусственного интеллекта, не относитесь к ним пренебрежительно: прогресс в этой области действительно впечатляет. Хотя есть вероятность, что то, что вы читаете в пресс-релизе, – наилучшие результаты из множества попыток. Поэтому сохраняйте и здоровую долю скептицизма.

Глава 9. Три года воскресений

Действительно важный и в каком-то смысле замалчиваемый факт о математике – она очень сложна. Иногда мы скрываем этот факт от учеников, полагая, что оказываем им услугу. Как раз наоборот. Будучи стажером у преподавателя Робина Уильямса, я научился у него одной простой вещи. Когда мы говорим, что этот урок легкий или простой, а это явно не так, мы даем учащимся понять, что проблемы не в математике, а в них. И они нам верят. К худу или к добру, но ученики доверяют учителям. «Если я не понял даже то, что было просто, – скажут они, – то зачем вообще утруждать себя попытками понять что-то сложное?»

Наши ученики боятся задавать вопросы в классе из-за опасений «выглядеть глупо». Если бы мы честно признались[335], насколько трудна и глубока математика, то даже та математика, которую изучают на уроках геометрии в старших классах, явно стала бы меньшей проблемой: мы оказались бы в классах, где задавать вопросы значило бы не «выглядеть глупо», а, наоборот, «выглядеть как человек, который хочет чему-то научиться». И это относится не только к слабым ученикам. Да, некоторые легко усваивают основные правила алгебраических операций или геометрических построений, но даже им следует задавать вопросы – учителям и себе. Например: я сделал то, что просил учитель, но что, если бы я попробовал сделать что-то другое, о чем учитель не спрашивал? И кстати, почему учитель просил то, а не иное? Нет такой интеллектуальной вершины, с которой вы не сможете увидеть какой-то пробел в знаниях, и именно туда и нужно направить усилия, если вы хотите учиться. Если урок математики легкий, значит, вы что-то делаете неправильно.

Что такое вообще сложность? Это одно из тех слов, которые, как нам кажется, мы хорошо знаем, но при попытках их описать они распадаются на связанные, но разные понятия. Мне нравится история, рассказанная специалистом по теории чисел Эндрю Грэнвиллом об алгебраисте Фрэнке Нельсоне Коуле[336].

На заседании Американского математического общества[337] в 1903 году Коул подошел к доске и, не говоря ни слова, вычислил величину 267 – 1 = 147 573 952 589 676 412 927. Затем на второй части доски он написал 193 707 721  761 838 257 287, перемножил эти числа и получил то же самое число. После этого он, по-прежнему не сказав ни слова, сел на свое место, а впоследствии признался, что разложение числа 267 – 1 на два множителя заняло у него «три года воскресений». Мораль этой истории в том, что, хотя Коулу потребовались огромные усилия и настойчивость, чтобы найти эти множители, ему не понадобилось много времени, чтобы продемонстрировать и обосновать свой результат в аудитории математиков (и доказать свою правоту). Таким образом, как мы видим, доказательство может быть коротким, даже если его поиск занял массу времени.

Одно дело – трудность в признании истинности какого-нибудь утверждения, и совсем другое – трудность в придумывании утверждения, истинность которого должна быть признана. Именно этому достижению аплодировала аудитория Коула. Мы уже видели, что поиск простых делителей для больших чисел – это сложная задача; однако число 147 573 952 589 676 412 927 по стандартам современной компьютерной техники вовсе не является большим. Я только что разложил его[338] на своем ноутбуке, и это заняло не целое воскресенье, а совершенно незаметный промежуток времени. Так сложна эта задача или нет?

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

Знать сто цифр числа  – вовсе не значит знать о кругах больше, чем другие люди. В числе важно не его значение, а то, что оно само имеет большое значение. Значимым фактом будет то, что отношение длины окружности к ее диаметру не зависит от ее размера и местоположения. Это факт о симметрии плоскости. Любую окружность можно преобразовать в другую с помощью так называемого подобия, состоящего из переносов, вращений и изменений масштаба. Подобие может менять расстояния, однако делает это путем умножения на фиксированную константу: возможно, все расстояния удваиваются, возможно, уменьшаются в десять раз, но в любом случае отношение между двумя длинами (скажем, длиной окружности и длиной ее диаметра) остается тем же. Если вы считаете две фигуры одинаковыми, когда их можно перевест друг в друга путем симметрий такого рода (называя разные вещи одним именем в стиле Пуанкаре), то в реальности существует всего одна окружность, а потому и только одно число . Аналогично есть только один квадрат и, соответственно, только один ответ на вопрос «Каково отношение периметра квадрата к его диагонали?»[339], и этот ответ равен удвоенному квадратному корню из 2, то есть примерно 2,828… и эту величину можно назвать числом для квадрата. Точно так же есть только один правильный шестиугольник, и его равно 3.

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

Сложно ли сыграть идеальную партию в шашки? Для человека – да, но компьютерной программе «Чинук» вполне по силам. (Правильно ли ставить вопрос не о сложности, с которой сталкивается «Чинук» в игре, а о сложности, с которой столкнулись ученые при создании программы?) Как мы видели, задача игры в идеальные шашки, идеальные шахматы или идеальное го принципиально ничем не отличается от перемножения двух больших чисел. А разве в каком-то смысле это действие не концептуально простое? Мы точно знаем, что нужно сделать, чтобы проанализировать дерево игры, даже если в реальности нам не хватит на это времени жизни Вселенной.

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

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

и спросите, что будет на выходе, если на входе 3,2, то он скажет: 3,2. То же самое выдаст и нейронная сеть, обученная на этих данных. А если на входе будет 10,0? Человек скажет 10,0. А вот нейронная сеть может ответить что угодно. Существует масса безумных правил, которые согласуются с формулой «вход = выход» в промежутке от 1 до 5, но ведут себя совершенно иначе вне этого диапазона. Человек знает, что «вход = выход» – это самый простой и естественный способ экстраполировать правило на более широкий класс возможных входных сигналов, а вот алгоритм машинного обучения[340] не знает. Вычислительные мощности у него есть, а понимания нет.

Естественно, я не могу исключить, что машины со временем (или даже неизбежно!) превзойдут когнитивные способности людей во всех аспектах. Такую вероятность исследователи искусственного интеллекта признавали всегда. Один из пионеров в этой области Оливер Селфридж в телевизионном интервью начала 1960-х годов сказал: «Я убежден, что[341] машины могут и будут думать при нашей жизни», хотя и с оговоркой: «Не думаю, что моя дочь когда-либо выйдет замуж за компьютер». (Нет настолько абстрактных технических достижений, чтобы люди не ощущали сексуального беспокойства по этому поводу.) Многомерная геометрия сложности должна нам напоминать, что очень трудно понять, какие умения машины находятся на грани появления. Возможно, автомобиль без водителя делает правильный выбор в 95 % случаев; но как раз приходящиеся на оставшиеся 5 % исключительные случаи и могут быть той самой проблемой, для решения которой наши тестообразные мозги приспособлены лучше, чем любая современная или разработанная в ближайшем будущем машина.

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

Пару лет назад Лиза Пиччирилло, в то время аспирантка в Техасском университете, решила давнюю геометрическую задачу[342] об узле Конвея, доказав, что это не срезанный узел (это факт о том, как выглядит узел с точки зрения четырехмерных существ, но для нашей истории не имеет значения, что это в точности означает). Это была знаменитая сложная задача. Но даже здесь значение слова непонятно: задача была сложной, потому что многие математики безуспешно работали над ней, или легкой, потому что Пиччирилло нашла элегантное решение всего на девяти страницах, из которых две – рисунки? Один из моих наиболее часто цитируемых результатов[343] обладает той же природой: шестистраничная статья решает проблему, над которой я и многие другие математики трудились в течение двадцати лет. Может быть, нам нужно новое слово, которое означало бы не «это легко» или «это сложно», а «сложно осознать, что это легко»?

За несколько лет до Пиччирилло тополог по имени Марк Хьюз[344] из Университета Бригама Янга пытался создать нейронную сеть, которая позволяла бы узнать, какие узлы срезаны. Он предоставил ей длинный список узлов, для которых ответ был известен, – точно так же, как нейронная сеть, обрабатывающая изображения, получала длинный список изображений кошек и некошек. Нейронная сеть Хьюза научилась присваивать каждому узлу определенное число: если узел был срезанным, то число должно быть 0, если не срезанным, то предполагалось, что машина должна выдавать целое число больше 0. На деле нейронная сеть спрогнозировала значение, очень близкое к 1 (то есть предсказала, что узел не срезанный), для всех узлов, протестированных Хьюзом, – за исключением одного. Это был узел Конвея. Нейронная сеть выдала число, весьма близкое к 1/2: это ее способ сказать, что она совершенно не уверена, какой должен быть ответ – 0 или 1. Потрясающе! Нейронная сеть правильно определила узел, действительно представляющий трудную и математически богатую проблему (в данном случае она воспроизвела то интуитивное представление, к которому топологи уже давно пришли). Некоторые люди воображают мир, где компьютеры дают нам все ответы. Я мечтаю о большем. Я хочу, чтобы они задавали хорошие вопросы.

Глава 10. Что произошло сегодня, произойдет и завтра

Я пишу эту главу в условиях пандемии. Уже несколько месяцев в мире бушует COVID-19, и никто точно не знает, как будет распространяться болезнь. Сколько людей заболеет, где и когда? Это не математический вопрос, но вопрос, содержащий математику. Весь мир прошел интенсивный курс математики болезней. И этот вопрос в его современной форме снова возвращает нас к человеку-комару Рональду Россу. Его лекция по случайному блужданию комаров была частью более масштабного проекта: перенесение болезней в область, поддающуюся количественному измерению. В течение всей истории человечества эпидемии были подобны кометам: появлялись неожиданно, ужасали людей и снова исчезали без какого-либо расписания. Ньютон и Галлей разобрались с их появлением, привязав кометы к эллиптическим орбитам с помощью законов движения. Почему бы и эпидемиям не подчиняться столь же универсальным законам?

Лекция Росса не увенчалась успехом. «На самом деле мне надо было начать дискуссию по патлогии[345], – писал он позже, – но меня убедили, что я могу выбрать тему на свое усмотрение, поэтому я прочитал математическую статью… сотням разочарованных врачей, которые ни слова не поняли из того, что я сказал!»

Эти слова прекрасно отражают сущность личности Росса. Он всецело посвятил себя внедрению математических методов в медицину, но это не всегда приводило к признанию врачей. «Некоторые представители[346] этой профессии, – писал редактор журнала British Medical Journal, – с удивлением (возможно, смешанным с сожалением) узнают, что этот выдающийся представитель экспериментального метода – энтузиаст применения количественных методов в эпидемиологии и патологии».

К тому же он был несколько самоуверен. Журнал Journal of the Royal Society of Medicine писал:

У сэра Рональда Росса была репутация[347] тщеславного, обидчивого, жадного до славы и денег человека. В какой-то степени так и было, но это не единственные и не доминирующие его черты.

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

На рубеже веков Росс вел ожесточенные войны с итальянским паразитологом Джованни Грасси за приоритет в исследованиях малярии. Даже получив Нобелевскую премию (в отличие от Грасси), Росс, похоже, ощущал, что и этого признания недостаточно. Его споры с Грасси переросли в общую неприязнь к итальянцам, которые встали на сторону соотечественника[348]. Лекция Росса в Сент-Луисе[349] практически сорвалась, потому что, узнав, что в дискуссии должен участвовать римский врач Андреа Челли, он немедленно отказался от поездки; его уговорили поехать только после того, как заверили телеграммой, что Челли не будет участвовать.

Росса посвятили в рыцари, назначили руководителем научного института, носящего его имя, он коллекционировал научные награды, словно это были диспенсеры Pez[350], однако ему всегда чего-то не хватало. Несмотря на то что он не испытывал никаких финансовых затруднений, он годами публично призывал парламент дать ему денежную премию за вклад в общественное здравоохранение. Эдвард Дженнер получил ее в 1807 году за разработку вакцины от оспы, и Росс считал, что заслуживает не меньшего.

Возможно, его многолетняя раздражительность проистекала из скрытого ощущения, что он не идет по своему истинному жизненному пути, предначертанному свыше. Как ни удивительно это звучит для столь выдающегося врача, Росс утверждал, что попал в медицину «просто и чисто по долгу службы», отказавшись от двух занятий, которые по-настоящему владели его сердцем. Одним были стихи, которые он писал на протяжении всей карьеры. Стихотворение, которое он сочинил, когда получил экспериментальное подтверждение своей теории малярии («Со слезами и тяжким вздохом я нахожу твои коварства семена. О смерть, уносящая миллионы»), в то время было хорошо известной частью его легенды. Двадцать лет спустя он (вполне в своем духе) написал другое стихотворение «Юбилей», где жаловался на то, что его недооценивают («Чего добились сущим чудом мы, то глупый мир презрел…»). В какой-то момент он стал использовать фонетический алфавит, который счел наиболее подходящим для имитации латинских достоинств в английских стихах:

Страницы: «« 12345678 »»

Читать бесплатно другие книги:

7-дневный интенсив по личному развитию от ведущего тренера Норвегии и автора бестселлера «Без жалост...
Один из финансовых гениев корпорации Arasaka попадает в альтернативный мир Японии восьмидесятых, где...
Далекое будущее, люди ведут ожесточенную войну с инопланетной расой. С каждой потерянной планетой ст...
«Игра мистера Рипли» (1974) – третья книга в серии о самом известном персонаже американской романист...
В своей новой книге Райан Холидей воспевает удивительную силу самодисциплины и тех, кто ею овладел. ...
Сегодня и во все времена Англия была и остается самым последовательным, коварным и опасным геополити...