Именно в этом аспекте и проявляется могущество алгоритма, способного продолжать учиться, изменяться и приспосабливаться к новым данным. Машинное обучение открыло перспективу появления алгоритмов, изменяющихся и взрослеющих так же, как люди.
6
Алгоритмическая эволюция
Знание основывается не только
на истине, но и на заблуждении
[28].
Карл Юнг
Нынешние алгоритмы непрерывно учатся. В особенности это относится к рекомендательным алгоритмам, которым мы доверяем выбирать то, что мы смотрим, читаем и слушаем. Когда новый пользователь взаимодействует с таким алгоритмом, сообщая ему о своих предпочтениях, алгоритм получает новые данные для обучения, которое помогает уточнять рекомендации для следующих пользователей. Мне было интересно испытать один из таких алгоритмов, чтобы проверить, насколько хорошо он может узнать мои вкусы. Поэтому, когда я исследовал алгоритм Xbox для Kinect в лабораториях Microsoft в Кембридже, я зашел к одному коллеге, чтобы посмотреть вживую, как работает один из рекомендательных алгоритмов.
Мне был выведен графический интерфейс с названиями приблизительно двухсот фильмов, случайным образом разбросанными по экрану. Если какой-то из этих фильмов мне нравился, я должен был перенести его в правую половину экрана. Я нашел там несколько фильмов, которые посмотрел с удовольствием. Поскольку я большой поклонник Уэса Андерсона, я перенес вправо «Академию Рашмор»
[29]. Названия фильмов на экране тут же начали перемещаться. Некоторые сдвинулись вправо: это были фильмы, которые, как считал алгоритм, могли мне понравиться. Те фильмы, которые мне, возможно, не понравились бы, сдвинулись влево. По одному фильму многого не поймешь, так что большинство названий по-прежнему оставались в неопределенной зоне в середине экрана.
Я увидел один фильм, который терпеть не могу: меня ужасно раздражает Остин Пауэрс, поэтому я перенес этот фильм налево, в забракованные. Это дало программе новую информацию, и фильмы снова стали сдвигаться влево и вправо, что свидетельствовало о большей уверенности алгоритма. Теперь он предположил, что мне может нравиться «Манхэттен»
[30] Вуди Аллена. Я подтвердил это предположение, что не вызвало больших изменений в рекомендациях. Но тут я увидел, что алгоритм считает меня поклонником фильма «Это – Spinal Tap»
[31]. Этот фильм сместился довольно далеко вправо. Но я терпеть не могу «Spinal Tap», поэтому перенес его с правой половины экрана влево, в забракованные.
Поскольку алгоритм считал, что мне должен нравиться «Spinal Tap», мое сообщение о том, что это не так, дало ему много полезной информации. С учетом новых данных расположение фильмов на экране радикально изменилось. Но затем произошло и менее заметное изменение, касающееся основной программы, управляющей алгоритмом. Из данных, которые я ей дал, она узнала нечто новое. Эти новые сведения внесли очень небольшие изменения в параметры модели, вырабатывающей рекомендации. Заданная в ней вероятность того, что мне нравится «Spinal Tap», была сочтена слишком высокой, и параметры были изменены так, чтобы уменьшить эту вероятность. По опыту взаимодействия с другими любителями Уэса Андерсона и «Манхэттена» программа знала, что многие из них любят и этот фильм, но теперь она выяснила, что это правило действует далеко не всегда.
Именно таким образом наше взаимодействие с динамическими алгоритмами позволяет машине продолжать обучаться и приспосабливаться к нашим симпатиям и антипатиям. Теперь такого рода алгоритмы определяют многое из того, что мы выбираем в своей жизни, – от фильмов до музыки, от книг до потенциальных партнеров.
«Если вам нравится это…»
Основная идея алгоритма, рекомендующего фильмы, очень проста. Если вам нравятся фильмы А, В и С, а другой пользователь также перечисляет их в списке своих любимых фильмов, но ему к тому же нравится и фильм D, то велика вероятность, что фильм D понравится и вам. Разумеется, данные гораздо сложнее этого примитивного подбора. Возможно, фильмы А, В и С нравятся вам тем, что в них играет определенный актер, которого нет в фильме D, а второму пользователю – тем, что все они про шпионов.
Алгоритм должен уметь рассмотреть данные и понять, почему именно вам нравятся определенные фильмы. Затем он подбирает других пользователей, которые тоже выбрали те характеристики, которые нравятся вам. Как и во многих других случаях машинного обучения, начинать нужно с хорошего набора исходных данных. Один из важных компонентов машинного обучения состоит в том, что необходимо участие людей для классификации данных, чтобы компьютеры знали, что именно за информацию они рассматривают. Такая операция организации данных обеспечивает предварительную подготовку рабочей области, в которой алгоритм может затем выявить фундаментальные закономерности.
В случае с базой данных кинофильмов можно попросить кого-нибудь просмотреть ее и выбрать ключевые характеристики – например, отобрать романтические комедии или научно-фантастические фильмы или, скажем, фильмы определенных режиссеров или с определенными актерами. Но такого рода организация далеко не идеальна. Она отнимает много времени. Она может отражать личные пристрастия тех, кто занимается классификацией, и в результате может научить компьютер тому, что мы и так уже знаем, а не выявить новые скрытые тенденции. Она может привести к тому, что алгоритм усвоит взгляд на данные, присущий определенным людям. Лучше всего учить алгоритм распознавать и выявлять закономерности на совершенно сырых, необработанных данных.
Именно этого пыталась добиться компания Netflix, объявившая в 2006 году соревнование под названием Netflix Prize. Она разработала свой собственный алгоритм для предложения пользователям фильмов, которые должны им понравиться, но считала, что состязание может стимулировать изобретение более совершенных алгоритмов. К этому моменту у Netflix имелось огромное количество данных, полученных от пользователей, которые смотрели фильмы и выставляли им оценки от 1 до 5. Компания решила опубликовать 100 480 507 оценок 17 770 фильмов, поставленных 480 189 анонимными пользователями. Задача усложнялась тем, что названия этих 17 770 фильмов не разглашались. Каждый фильм был обозначен только номером. Узнать, какой фильм скрывается под номером 2666 – «Бегущий по лезвию»
[32] или «Энни Холл»
[33], – было невозможно. Доступ был открыт только к оценкам, которые поставили ему любые из 480 189 пользователей, если они вообще его оценивали.