|
|
# Введение в обучение с подкреплением
|
|
|
Обучение с подкреплением (Reinforcement learning, RL) рассматривается как одна из основных парадигм машинного обучения, наряду с обучением с учителем (supervised learning) и без учителя (unsupervised learning). RL - это все о принятии решений: принятии правильных решений или, по крайней мере, извлечении уроков из них.
|
|
|
|
|
|
Представьте, что у вас есть смоделированная среда, такая как фондовый рынок. Что произойдет, если вы введете определенное правило. Имеет ли это положительный или отрицательный эффект? Если происходит что-то негативное, вам нужно принять это _негативное подкрепление_, извлечь из него урок и изменить направление. Если это положительный результат, вам нужно использовать это _положительное подкрепление_.
|
|
|
|
|
|
![Петя и волк](../images/peter.png)
|
|
|
|
|
|
> Пете и его друзьям нужно спастись от голодного волка! Автор изображения [Jen Looper](https://twitter.com/jenlooper)
|
|
|
|
|
|
## Региональная тема: Петя и Волк (Россия)
|
|
|
|
|
|
[Петя и Волк](https://ru.wikipedia.org/wiki/%D0%9F%D0%B5%D1%82%D1%8F_%D0%B8_%D0%B2%D0%BE%D0%BB%D0%BA) - музыкальная сказка русского композитора [Сергея Прокофьева](https://ru.wikipedia.org/wiki/%D0%9F%D1%80%D0%BE%D0%BA%D0%BE%D1%84%D1%8C%D0%B5%D0%B2,_%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B9_%D0%A1%D0%B5%D1%80%D0%B3%D0%B5%D0%B5%D0%B2%D0%B8%D1%87). Это история о юном пионере Пете, который смело выходит из своего дома на лесную поляну, чтобы преследовать волка. В этом разделе мы обучим алгоритмы машинного обучения, которые помогут Пете:
|
|
|
|
|
|
- **Исследовать** окрестности и построить оптимальную навигационную карту.
|
|
|
- **Научиться** пользоваться скейтбордом и балансировать на нем, чтобы двигаться быстрее.
|
|
|
|
|
|
[![Петя и Волк](https://img.youtube.com/vi/Fmi5zHg4QSM/0.jpg)](https://www.youtube.com/watch?v=Fmi5zHg4QSM)
|
|
|
|
|
|
> 🎥 Нажмите на изображение выше, чтобы послушать Петю и Волка Прокофьева
|
|
|
|
|
|
## Обучение с подкреплением
|
|
|
|
|
|
В предыдущих разделах вы видели два примера проблем машинного обучения:
|
|
|
|
|
|
- **Обучение с учителем**, где у нас есть наборы данных, которые предлагают примеры решений проблемы, которую мы хотим решить. [Классификация](../../4-Classification/README.md) и [регрессия](../../2-Regression/README.md) - это задачи обучения с учителем.
|
|
|
- **Обучение без учителя**, в котором у нас нет размеченных данных для обучения. Основным примером обучения без учителя является [Кластеризация](../../5-Clustering/README.md).
|
|
|
|
|
|
В этом разделе мы познакомим вас с новым типом задач, которые не требуют маркированных данных для обучения. Есть несколько типов таких проблем:
|
|
|
|
|
|
- **[Обучение с частичным привлечением учителя](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D1%87%D0%B0%D1%81%D1%82%D0%B8%D1%87%D0%BD%D1%8B%D0%BC_%D0%BF%D1%80%D0%B8%D0%B2%D0%BB%D0%B5%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC_%D1%83%D1%87%D0%B8%D1%82%D0%B5%D0%BB%D1%8F)**, где у нас есть много немаркированных данных, которые можно использовать для предварительного обучения модели.
|
|
|
- **[Обучение с подкреплением](https://ru.wikipedia.org/wiki/%D0%9E%D0%B1%D1%83%D1%87%D0%B5%D0%BD%D0%B8%D0%B5_%D1%81_%D0%BF%D0%BE%D0%B4%D0%BA%D1%80%D0%B5%D0%BF%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5%D0%BC)**, в котором агент учится вести себя, проводя эксперименты в некоторой моделируемой среде.
|
|
|
|
|
|
### Пример - компьютерная игра
|
|
|
|
|
|
Предположим, вы хотите научить компьютер играть в игру, например, в шахматы или [Супер Марио](https://ru.wikipedia.org/wiki/Super_Mario_(%D1%81%D0%B5%D1%80%D0%B8%D1%8F_%D0%B8%D0%B3%D1%80)). Чтобы компьютер мог играть в игру, нам нужно, чтобы он предсказывал, какой ход сделать в каждом из игровых состояний. Хотя это может показаться проблемой классификации, это не так - потому что у нас нет набора данных с состояниями и соответствующими действиями. Хотя у нас могут быть некоторые данные, такие как существующие шахматные матчи или записи игроков, играющих в Супер Марио, скорее всего, что эти данные не будут в достаточной степени охватывать достаточно большое количество возможных состояний.
|
|
|
|
|
|
Вместо поиска существующих игровых данных **Обучение с подкреплением** (RL) основано на идее *заставить компьютер играть* много раз и наблюдать за результатом. Таким образом, чтобы применить обучение с подкреплением, нам нужны две вещи:
|
|
|
|
|
|
- **Среда** и **симулятор**, которые позволяют нам играть в игру много раз. Этот симулятор будет определять все правила игры, а также возможные состояния и действия.
|
|
|
|
|
|
- **Функция вознаграждения**, которая сообщит нам, насколько хорошо мы сделали отдельный ход или прошли всю игру.
|
|
|
|
|
|
Основное различие между другими типами машинного обучения и RL заключается в том, что в RL мы обычно не знаем, выиграем мы или проиграем, пока не закончим игру. Таким образом, мы не можем сказать, является ли отдельно взятый ход хорошим или нет - мы получаем награду только в конце игры. И наша цель - разработать алгоритмы, которые позволят нам обучать модель в неопределенных условиях. Мы познакомимся с одним алгоритмом RL под названием **Q-Learning**.
|
|
|
|
|
|
## Уроки
|
|
|
|
|
|
1. [Введение в обучение с подкреплением и Q-Learning](../1-QLearning/README.md)
|
|
|
2. [Использование тренажерного зала](../2-Gym/README.md)
|
|
|
|
|
|
## Благодарности
|
|
|
|
|
|
«Введение в обучение с подкреплением» написано с ♥ ️[Дмитрием Сошниковым](https://soshnikov.com)
|