Нынешние алгоритмы непрерывно учатся. В особенности это относится к рекомендательным алгоритмам, которым мы доверяем выбирать то, что мы смотрим, читаем и слушаем. Когда новый пользователь взаимодействует с таким алгоритмом, сообщая ему о своих предпочтениях, алгоритм получает новые данные для обучения, которое помогает уточнять рекомендации для следующих пользователей. Мне было интересно испытать один из таких алгоритмов, чтобы проверить, насколько хорошо он может узнать мои вкусы. Поэтому, когда я исследовал алгоритм Xbox для Kinect в лабораториях Microsoft в Кембридже, я зашел к одному коллеге, чтобы посмотреть вживую, как работает один из рекомендательных алгоритмов.
Мне был выведен графический интерфейс с названиями приблизительно двухсот фильмов, случайным образом разбросанными по экрану. Если какой-то из этих фильмов мне нравился, я должен был перенести его в правую половину экрана. Я нашел там несколько фильмов, которые посмотрел с удовольствием. Поскольку я большой поклонник Уэса Андерсона, я перенес вправо «Академию Рашмор»[29]
. Названия фильмов на экране тут же начали перемещаться. Некоторые сдвинулись вправо: это были фильмы, которые, как считал алгоритм, могли мне понравиться. Те фильмы, которые мне, возможно, не понравились бы, сдвинулись влево. По одному фильму многого не поймешь, так что большинство названий по-прежнему оставались в неопределенной зоне в середине экрана.Я увидел один фильм, который терпеть не могу: меня ужасно раздражает Остин Пауэрс, поэтому я перенес этот фильм налево, в забракованные. Это дало программе новую информацию, и фильмы снова стали сдвигаться влево и вправо, что свидетельствовало о большей уверенности алгоритма. Теперь он предположил, что мне может нравиться «Манхэттен»[30]
Вуди Аллена. Я подтвердил это предположение, что не вызвало больших изменений в рекомендациях. Но тут я увидел, что алгоритм считает меня поклонником фильма «Это – Spinal Tap»[31]. Этот фильм сместился довольно далеко вправо. Но я терпеть не могу «Spinal Tap», поэтому перенес его с правой половины экрана влево, в забракованные.Поскольку алгоритм считал, что мне должен нравиться «Spinal Tap», мое сообщение о том, что это не так, дало ему много полезной информации. С учетом новых данных расположение фильмов на экране радикально изменилось. Но затем произошло и менее заметное изменение, касающееся основной программы, управляющей алгоритмом. Из данных, которые я ей дал, она узнала нечто новое. Эти новые сведения внесли очень небольшие изменения в параметры модели, вырабатывающей рекомендации. Заданная в ней вероятность того, что мне нравится «Spinal Tap», была сочтена слишком высокой, и параметры были изменены так, чтобы уменьшить эту вероятность. По опыту взаимодействия с другими любителями Уэса Андерсона и «Манхэттена» программа знала, что многие из них любят и этот фильм, но теперь она выяснила, что это правило действует далеко не всегда.
Именно таким образом наше взаимодействие с динамическими алгоритмами позволяет машине продолжать обучаться и приспосабливаться к нашим симпатиям и антипатиям. Теперь такого рода алгоритмы определяют многое из того, что мы выбираем в своей жизни, – от фильмов до музыки, от книг до потенциальных партнеров.
Основная идея алгоритма, рекомендующего фильмы, очень проста. Если вам нравятся фильмы А, В и С, а другой пользователь также перечисляет их в списке своих любимых фильмов, но ему к тому же нравится и фильм D, то велика вероятность, что фильм D понравится и вам. Разумеется, данные гораздо сложнее этого примитивного подбора. Возможно, фильмы А, В и С нравятся вам тем, что в них играет определенный актер, которого нет в фильме D, а второму пользователю – тем, что все они про шпионов.
Алгоритм должен уметь рассмотреть данные и понять, почему именно вам нравятся определенные фильмы. Затем он подбирает других пользователей, которые тоже выбрали те характеристики, которые нравятся вам. Как и во многих других случаях машинного обучения, начинать нужно с хорошего набора исходных данных. Один из важных компонентов машинного обучения состоит в том, что необходимо участие людей для классификации данных, чтобы компьютеры знали, что именно за информацию они рассматривают. Такая операция организации данных обеспечивает предварительную подготовку рабочей области, в которой алгоритм может затем выявить фундаментальные закономерности.