Форма реальности. Скрытая геометрия стратегии, информации, общества, биологии и всего остального — страница 32 из 82

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

Звучит неплохо, но только до тех пор, пока вы не осознаете, что понятия не имеете, что это значит. Например, что такое стратегия? Это должно быть нечто, понятное компьютеру, а потому должно выражаться в математических терминах. Изображение для компьютера – это длинный список чисел. (Для компьютера все – длинный список чисел, за исключением вещей, которые для него являются коротким списком чисел.) Если картинка представляет собой сетку размером 600×600 пикселей, и каждый пиксель имеет яркость, задаваемую числом от 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].

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