2021-04-25 19:14:53
Недавно просили в комментах рассказать про reinforcement learning (обучение с подкреплением). Расскажу вкратце, а вы уж решайте, интересно ли это вам. В общем, RL - это когда модели обучаются методом проб и ошибок.
Делается это не от хорошей жизни. Гораздо проще и удобнее мир supervised learning (обучение с учителем), когда для обучения модели есть готовые пары (x, y), модель предсказывает y', и мы настраиваем её так, чтобы минимизировать различие между y и y'. Но такое возможно не всегда. Бывает, что правильные y получить сложно или дорого – например, надо рекомендовать пользователю контент, но мы не знаем, какие рекомендации являются верными, и можем ориентироваться только на лайки и дизлайки. А ещё бывает, что различие между y и y' невозможно выразить в виде дифференцируемой функции, а значит, сложно оптимизировать – например, если y и y' это тексты, а различие мы меряем как расстояние Левенштейна или BLEU. Для таких ситуаций и придумали RL.
В RL формализм такой: идёт «игра» в несколько шагов, на каждом шаге дано состояние S, модель выбирает действие A и получает за это награду R, и затем мы переходим к следующему шагу. Задача модели – выбирать действия так, чтобы максимизировать сумму наград за всю игру. Например, состояние S может описывать шахматную доску с расстановкой фигур, действие A может быть любым разрешённым шахматным ходом, а награда R на последнем шаге равна +1 в случае победы и -1 в случае поражения, и равна 0 на всех предыдущих шагах. Задача модели – много-много раз сыграть в шахматы и научиться выбирать действия, приводящие к победе.
Один подход к решению таких задач – научить модель по парам (S, A) предсказывать сумму будущих выигрышей. Тогда, оказавшись в состоянии S, можно выбрать действие A, для которого такая предсказанная сумма будет максимальна. Другой подход предлагает по состоянию S сразу предсказывать распределение над всеми возможными A, и выбирать действие из этого распределения. Оба подхода, как видите, сводят RL к SL.
На практике RL применяется мало где, кроме рекомендательных/рекламных систем и некоторых сложных задач генерации текста. Есть большие надежды, что методы RL помогут круто управлять беспилотниками, но, насколько я знаю, пока это не совсем так. А большая часть академических статей обкатывает методы RL на играх, как настольных, так и компьютерных. На Курсере есть курс Practical RL (coursera.org/learn/practical-rl), но, к сожалению, его название является оксюмороном. За весь курс рассматривается только одна прикладная задача (машинный перевод), а во всех остальных заданиях учат играть в игрушки. Впрочем, содержание и подача курса хороши, так что для общего развития я его рекомендовать могу.
Стоит ли вам изучать RL? Для решения прикладных задач – скорее всего, нет. Для удовольствия, тренировки мозгов, и развития собственной интуиции в области оптимальных решений, баланса exploration/exploitation, планирования и, прости господи, общего ИИ – да, вполне.
382 viewsedited 16:14