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

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

Существует очень интересная проблема под названием Многорукий бандит, связанная с компромиссом между исследованием и использованием средств. Итак, представьте, что вы находитесь в казино и играете в игровой автомат с тремя руками. У игрового автомата 3 рычага. Вы вытаскиваете одну из них и получаете взамен немного денег. Вначале вы ничего не знаете о машине. Вы не знаете, какой рычаг принесет вам наибольшее вознаграждение (в данном случае - денег). Каждый из рычагов имеет определенную вероятность получения вознаграждения. Что бы вы сделали, чтобы получить максимальное вознаграждение за N испытаний (скажем, 100)? Посмотрим, мы могли бы использовать следующие подходы:

  1. Всегда эксплуатировать: вы всегда можете потянуть за один из рычагов (скажем, за рычаг 1). Проблема в том, что вы не знаете, сможете ли вы заработать больше, используя другие рычаги.
  2. Всегда исследую. Вы можете каждый раз дергать за рычаг наугад. Проблема в том, что вы ничему не научитесь из своих предыдущих действий. (Всегда исследую)
  3. Epsilon Greedy: вы используете лучший рычаг в 70% (скажем) времени (эксплуатация). Вы тянете за рычаг в 30% случаев наугад (исследование). Допустим, у нас есть монета с вероятностью выпадения орла 0,3. Итак, мы подбрасываем монету, если вероятность равна 0,3 или меньше, мы дергаем рычаг наугад. Если вероятность больше 0,3, мы выберем лучший рычаг на данный момент. Значение эпсилон составляет 0,3, что также называется вероятностью исследования.
  4. Стратегия Epsilon First: вы нажимаете все рычаги фиксированное количество раз (скажем, по 20 раз каждый). Посмотрите, какой из них принес вам наибольшую награду (скажем, рычаг 3). Затем продолжайте каждый раз тянуть рычаг 3.
  5. Стратегия уменьшения эпсилона. Это то же самое, что и подход, основанный на эпсилон-жадности. Но в этом случае эпсилон уменьшается с количеством попыток. Это означает, что вначале мы будем больше исследовать (и меньше эксплуатировать). После достаточно хороших испытаний мы будем больше эксплуатировать (и меньше исследовать).

Это не исчерпывающий набор подходов, которые мы могли бы использовать. Существуют и другие подходы, такие как Адаптивная эпсилон-жадная стратегия, основанная на различиях ценностей (VDBE) и Контекстно-эпсилон-жадная стратегия. Какой подход лучше? Мы не должны использовать подходы 1 или 2 из-за упомянутых очевидных проблем. Эпсилон-Жадный - самый простой в реализации, и мы могли бы увеличить сложность алгоритма.

Где мы можем использовать компромисс между исследованием и эксплуатацией в отрасли?

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

  1. Альтернатива A / B-тестированию. Что такое A / B-тестирование? Вы запускаете новый веб-сайт, и у вас есть 2 дизайна для него с призывом к действию (например, нажмите «Купить»). Вы не уверены, какой из них использовать, поэтому вы показываете версию A 1000 пользователям и версию B еще 1000 пользователям. Выигрывает дизайн с наибольшим коэффициентом конверсии. В чем проблема? Вкусы пользователей непостоянны. Здесь мы проводим разовый эксперимент и выбираем дизайн. Что, если вкус нашей пользовательской базы изменится после определенного момента? Стоит ли нам снова провести эксперимент? Мы могли бы свести эту проблему к проблеме многорукого бандита. Мы могли бы использовать упомянутые выше стратегии (эпсилон- *). Допустим, мы используем эпсилон-жадный подход. Мы выбираем эпсилон 0,5. Это означает, что мы подбрасываем монету, и если это ГОЛОВКИ, мы случайным образом выбираем одну из версий. Если это ХВОСТ, мы выбираем лучшую версию из последних N испытаний (скажем, A). Мы могли бы выбрать вероятность эпсилон вручную или использовать другие стратегии, такие как эпсилон-убывающая или адаптивная-эпсилон-стратегия (где эпсилон обновляется с течением времени). Этот подход является надежным, поскольку у вас всегда есть элемент исследования и вы можете вознаградить менее выбранную версию, если пользовательский вкус изменится.
  2. Алгоритмы ранжирования. Допустим, вы создаете функцию «Люди также ищут» для Google. [Следующий подход, конечно, является упрощенной версией. Google может не использовать это. ;)]

Что вы хотите оптимизировать с помощью этой функции? Вы хотите убедиться, что пользователь продолжает поиск релевантных товаров (чтобы вы могли показывать рекламу и зарабатывать деньги). Люди ищут много чего до или после поиска титаника. Вы хотите предсказать, какие предметы люди могут искать дальше, и показать им. Это означает, что вы выясняете P (x / Titanic) = P (# кликов / поиск по фильму x / # поиск "Титаник"). Это означает вероятность того, что пользователь нажмет на фильм x, учитывая, что пользователь искал «Титаник». Как решить эту проблему, если у вас мало данных? Конечно, вы всегда можете использовать алгоритмы рекомендаций, основанные на содержании. Покажите фильмы, похожие на Титаник (жанр, режиссер, актеры, синопсис и т. Д.). Но в каком порядке мы их показываем? Всегда ли мы показываем самые похожие товары вверху? Или мы их меняем в зависимости от каких-то сигналов?

Давайте формализуем проблему как контекстную проблему многорукого бандита. Вы можете ранжировать предметы на основе P (x / Titanic) и награды.

1. Допустим, у вас есть набор фильмов [x1, x2, x3, ……, xN], которые похожи на «Титаник».

2. Вы должны заполнить N слотов.

3. Для каждого слота выполните шаги 4–6, пока все k слотов не будут заполнены.

4. Удалить уже выбранные элементы из набора.

5. Вы генерируете случайное число от [0,1].

6. Если он меньше эпсилон, исследовать - вы выбираете элемент из набора случайным образом и кладете его на следующую доступную позицию.

Если больше эпсилона, эксплойт - вы выбираете предмет, имеющий наибольшее вознаграждение. Это может быть ожидаемое значение P (x / Titanic) * награда, зависит от того, как вы формулируете уравнение)

7. Когда пользователь нажимает на элемент xi, обновите награду (Titanic, xi) на + r (скажем, +5).

Выберите epsilon на основе одной из стратегий, упомянутых ранее.

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

Лучшая часть? Эта система всегда будет учиться. Допустим, следующим выйдет Титаник III. И это многих волнует. Таким образом, поведение при нажатии / поиске должно отражаться на рейтинге.

Вы можете использовать этот подход для увеличения количества новых пользователей в системе (Пользователи / Каналы / Создатели контента / Исполнители).

Итак, кто узнал что-то новое? :)