Простое Q-обучение|Одномерный мир Сяо Мина (1) Простое Q-обучение|Одномерный мир Сяо Мина (2) Простое Q-обучение|Одномерный мир Сяо Мина (3)
Q-обучение стало одним из самых эффективных алгоритмов обучения с подкреплением. Хотя, у него есть и некоторые недостатки, такие как дискретность действий. Несмотря на это, эффективность Q-learning была доказана во многих приложениях. С другой стороны, среди многих алгоритмов обучения с подкреплением принцип Q-обучения относительно прост и подходит в качестве вводного алгоритма обучения с подкреплением. Эта статья направлена на то, чтобы применить простейший алгоритм Q-обучения, основанный на Q-таблице, к простому приложению в одномерной среде, чтобы мы могли выйти из мира сложных алгоритмов и испытать только Q-обучение.
Одномерный мир Сяо Мина
Если вы были в парке с озером, возможно, вы видели водную дорожку, сделанную из каменных опор в воде, как показано на картинке ниже. Путь в воде — это одномерный мир Сяо Мина. Предполагая, что Сяомину разрешается каждый раз стоять только на одном из каменных пирсов, процесс перехода от первого каменного пирса к другому каменному пирсу не засчитывается.
Мы абстрагируем путь каменного пирса в воде в одномерный мир Сяо Мина. На каменном пирсе посередине лежит 100 юаней (не спрашивайте, кто свободен, я убираю, когда свободен =v=). Теперь Сяо Мину нужно получить 100 юаней. Мы можем легко понять, что если Сяомин находится по обе стороны от среднего каменного пирса, ему нужно пройти к середине. Совершенно верно! ! !
Вышеупомянутое предположение состоит в том, что Сяо Мин может управлять движением влево на одну клетку, вправо на одну клетку или не двигаться. Что, если Сяо Мин может контролировать свою скорость, увеличивая или уменьшая ее только на одну единицу или оставаясь неизменной, и если Сяо Мин может контролировать свое ускорение, увеличивая или уменьшая ее только на одну единицу или оставаясь неизменной. Как Сяо Мин должен контролировать количество, которое он может контролировать, чтобы, когда он, наконец, достигает среднего камня, он находился в устойчивом состоянии (скорость и ускорение равны нулю). Обратите внимание, что Сяо Мин может получать деньги только тогда, когда он находится в стабильном состоянии!
Достать ручку и бумагу? Не волнуйтесь, мы определенно можем получить подходящую стратегию с помощью математического анализа. Давайте сначала посмотрим, как это делает Q-learning.
Реорганизуйте три разных одномерных мира Сяо Мина:
- Мир локации: Сяо Мин может контролировать себя, чтобы двигаться на одну клетку влево, одну клетку вправо или не двигаться.
- Мир скорости: Сяо Мин может контролировать свою скорость, чтобы увеличить или уменьшить ее на единицу или оставить неизменной.
- Мир ускорения: Сяо Мин может контролировать свое ускорение, чтобы увеличить или уменьшить его на единицу или оставить без изменений.
Ниже описано, как алгоритм Q-обучения вычисляет подходящую стратегию для Сяомин для трех разных одномерных миров Сяомин. Пусть Сяо Мин успешно получит 100 юаней.
Введение в Q-обучение
Потому что есть очень много блогов, которые знакомят с принципами Q-learning! Здесь это подробно не объясняется, только перечислены понятия и формулы, используемые в этой статье. Если вы хотите узнать больше об алгоритме Q-обучения, см.Глубокое обучение с подкреплением | Чжиху.
Обучающая выборка алгоритма Q-обучения представляет собой четверку. от государствавыбрать действиеПосле этого перейти к следующему состоянию, и получить возвращаемое значение.
Пространство состояний здесь дискретное **[дискретное положение (каменный пирс), дискретная скорость (приращение декремента равно 1 или 0), дискретное ускорение (приращение декремента равно 1 или 0)]**.
Предположим, что число состояний равно, количество действий, мы используем Q-таблицу для хранения значения Q каждой пары состояние-действие. И это значение Q являетсяматрица.
Предположим, что образец получен в это время, мы используем следующую формулу для обновления Q-таблицы:в,ступенчатая скидка,государствос действиемСоответствует значению в Q-таблице.
Пока имеется достаточное количество разведочных выборок, значение Q в Q-таблице будет сходиться к истинному значению.
И каждому состоянию соответствует значение Q действия, который представляет значение выполнения действия в текущем состоянии, а действие с наибольшим значением считается оптимальным действием в текущем состоянии. Итак, мы можем вывести политику из конвергентной Q-таблицы:
Нетрудно понять алгоритм Q-обучения.Возможно, более важным является определение пространства состояний, пространства действия и функции вознаграждения.Если эти приготовления выполнены хорошо, в основном обучение Q-обучению было успешным на 90%. Остальные 10% — это процесс обучения алгоритма и небольшие хитрости. Например: используйте нейронную сеть вместо Q-таблицы, используйте модуль воспроизведения опыта для хранения образцов в фиксированном окне и т. д. (есть еще много других)... для повышения эффективности обучения Q-обучения. Но, но, но, это не цель этой статьи. Потому что эти идеи привели к большим опубликованным статьям и очень подробным сообщениям в блогах. В этой статье основное внимание уделяется определению пространства состояний, пространства действий и функции вознаграждения. Эта простая среда позволяет нам выйти из сложного мира алгоритмов и лучше понять Q-обучение.
одномерный мир локаций
В мире позиций Сяо Мин может контролировать свою позицию только для перемещения на одну позицию влево, одну позицию вправо или оставаться на месте. На каждом камне у Сяо Мин есть только эти три действия на выбор. Потому что это слишком интуитивно, когда на камнях по обе стороны от среднего камня Сяо Мину нужно только пройти к середине. Итак, давайте посмотрим, как это делает Q-learning.
Этот мир действительно прост, состояние Сяо Мина - это всего лишь несколько позиций, повторите эту картинку. Всего у Сяо Мина 21 состояние, мы обозначаем их слева направо как -государственное пространство
Всего у Сяо Мин есть три доступных действия: переместиться на одно поле влево, переместиться на одно деление вправо и не двигаться. Мы обозначаем эти три действия как -пространство действия
Q-table в,это количество состояний,Элементы матрицы соответствуют. Здесь, когда алгоритм инициализируется,Все элементы инициализируются 0.
Предполагается, что после периода обучения достигается тренировочная сходимость, как мы используем этизначение, чтобы помочь Сяо Мину предпринять правильные действия в определенном состоянии——экспортная стратегия, можно использовать следующую формулу:
Различные настройки функции вознаграждения
дай код
import numpy as np
def model_update(x,a): # 位置模型
x = x+a
if x < -10: # 保持状态不超出区间
x = -10
if x > 10:
x = 10
return x
xt = np.random.randint(-9, 10) # 随机初始化一个状态(位置)
Q_table = np.zeros((21, 3)) # 初始化Q table,全为零
for i in range(1000):
r = 0.0
a = np.random.randint(0,3)-1
xt1 = model_update(xt, a) #调用模型生成下一个状态
# if xt1 == 0: # 稀疏奖励
# r = 10.0
r = -abs(xt1) # 稠密奖励
Q_table[xt+10, a+1] = r+0.9*np.max(Q_table[xt1+10]) # 更新Q table
xt = xt1
print(Q_table) # 打印Q table
1. Функция редкого вознаграждения
Средняя позиция может получить 100 юаней, поэтому награда в средней позиции самая большая. Мы даем ему большое положительное вознаграждение. Остальные позиции безвредны и не имеют очевидной выгоды, поэтому их вознаграждение равно 0. Размер шага сходимости составляет около 2000 шагов.
2. Плотная функция вознаграждения
В этом случае все состояния соответствуют значимому значению вознаграждения.
Объяснение состоит в том, что чем дальше камень от среднего камня, тем больше стоимость достижения среднего камня, то есть тем меньше значение вознаграждения. Кратчайшее время, 200 шагов сойдутся.
В общем, в итоге все сошлось. В целом плотные вознаграждения сходятся гораздо быстрее, чем разреженные. Стратегия, усвоенная в конце концов, может вывести Сяо Мина из любой позиции в среднюю позицию и там остановиться — взять сто долларов.
- Предполагая, что Сяомин находится в крайнем левом положении, выученная стратегия заставляет его шаг за шагом двигаться к центру.
import matplotlib
import matplotlib.pyplot as plt
import time
%matplotlib inline
/*** plt 动态显示 ***/
is_ipython = 'inline' in matplotlib.get_backend()
if is_ipython:
from IPython import display
plt.ion()
x = np.arange(-10, 11)
y = np.zeros(21)
xt = -10
for i in range(20):
a = np.argmax(Q_table[xt+10])-1 # Q值导出策略
xt1 = model_update(xt, a)
# print(xt, a, xt1)
xt = xt1
plt.clf()
plt.plot(x, y, 'ob')
plt.plot(0.0,0.0,'or')
plt.plot(xt,0, 'og')
plt.pause(0.1)
if is_ipython:
display.clear_output(wait=True)
display.display(plt.gcf())
step. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
Динамическая карта - зеленые точки обозначают Сяомин, красные точки обозначают направление, в котором движется Сяомин.
Простое Q-обучение|Одномерный мир Сяо Мина (2) Простое Q-обучение|Одномерный мир Сяо Мина (3)