www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Мое путешествие с TensorFlow

Дата публикации May 23, 2017

TL; DR

  • Разработайте базовые знания о средах OpenAI Gym. Следует отметить, чтоenv.observation_space.shapeа такжеenv.action_space.n,
  • Поймите, что Q-Learning - это марковский процесс принятия решений. У вас есть состояния, и это сложно для вещей с непрерывными входными пробелами.
  • На самом деле, понять, что почти каждая проблема обучения подкрепления является MDP. Даже те, у кого более или менее бесконечное пространство состояния / действия, все еще должны рассматриваться как MDP. Вы можете превратить эти пространства в пространственные объекты, чтобы сделать их более управляемыми.

Честно говоря, я был очень заинтересован в целом движении нейронных сетей за последние несколько лет. В частности, меня интересует изучение подкрепления и его использование в играх (см.OpenAI Gym). С моим базовым пониманием машинного обучения и исчисления из колледжа я сейчас на пути к созданию чего-то классного.

Скромное начало

«Хорошие художники заимствуют, великие художники крадут»
~ссылка

Я думал, что объединю следующую статью с CartAle-v0 OpenAI Gym. Идея состояла в том, чтобы начать с «более простого» алгоритма (Q-Learning) и перейти к нейронным сетям, чтобы провести некоторые сравнения.

Простое усиленное обучение с Tensorflow, часть 0: Q-Learning с таблицами и нейронными сетями

В этом уроке из серии «Укрепление» мы собираемся изучить семейство алгоритмов RL под названием Q…

medium.com

После некоторого спотыкания с размером пространства наблюдения и несколькими устаревшими функциями я пришел к выводу, что Q-Learning непригоден для CartPole, поскольку наблюдения представляют собой непрерывное пространство по сравнению с дискретным пространством. К счастью, TensorFlow имеетздоровоРуководство для начинающихиспользуя набор данных MNIST!

Это дает нам код, но нам все еще нужно изменить этот алгоритм классификации в алгоритм обучения.Это Github гистпредоставляет некоторую справочную информацию в разделе «Модель вознаграждения» для примера CartPole.Это Github гистобеспечивает нестатистический подход к «решению» проблемы. Это хорошо, потому что мы в основном хотим «изучить» этот ручной подход.Этот пример из репозитория tflearn's Githubмногое подражает тому, что мы делаем, за исключением того, что у нас нет такого большого пространства ввода.

Так что через некоторое время вы можете получить следующее:

inputs = tf.placeholder(tf.float32, [
None,
action_repeat,
env.observation_space.shape[0] ])
net = tflearn.fully_connected(inputs, 4, activation='relu')
q_values = tflearn.fully_connected(net, env.action_space.n)

В основном мы хранимaction_repeatОбразцы истории в нашей сети. В идеале наша сеть сможет определить направление падения полюса на основе последовательных кадров.

Если мы записываем количество итераций до сбоя, мы можем увидеть следующее:

took 51 iterations
took 46 iterations
took 51 iterations
took 29 iterations
took 33 iterations
took 38 iterations
took 73 iterations

Нет четких указаний на то, что наш алгоритм сходится к решению. :(

Делая несколько сотен шагов назад

На данный момент, совершенно ясно, что даже понимание высокого уровня обучения подкреплению недостаточно для построения алгоритма. Я бы сравнил это с использованием веб-браузера и созданием веб-сервера.

Я потратил немного времени на просмотр курса Дэвида Сильвера по усиленному обучению. Я начал слекция 3хотя я действительно должен был начать с самого начала. Это не долекция 7что актер-критик методы воспитаны. (Кроме того, похоже, что существует другой синтез информации, которая ссылается на лекции Дэвида СильвераВот).

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

Вот часть информации, которую я собрал:

  • Вы можете разбить задачу обучения подкреплению на два этапа: функции вознаграждения и функции политики.
  • Есть два типа проблем: прогнозирование и контроль. Смотрите слайды 21/22 изэта лекция, С одной стороны, мы могли бы сосредоточиться только на построении прогноза

Я также нашелэтот блого некоторых очень простых стратегиях для CartPole-v0. Я думаю, что это делает лучшую работу в достижении политических градиентов. Если вы понимаете, что делают Random Search и Hill Climbing, вы поймете, как работает политика.

Образец Награды за мою реализацию Hill Climbing

Скалолазание было довольно легко осуществить. Это надежный алгоритм для использования, если вы хотите получить опыт работы со строительными блоками TensorFlow (сводки, заполнители, сеансы, случайная инициализация). Я сделал ошибку, добавив заполнитель внутри цикла «step». По сути, мы добавляем новые операции (умножение матриц) в наш граф сеансов, что (я думаю) делает граф более сложным для оценки. Производительность замедляется и в конечном итоге останавливается из-за этого.

Я буду углубляться в градиенты политики в ближайшие недели. Не стесняйтесь проверить некоторые из моих примеров кода здесь:

jgensler8 / мой-tensorflow-путешествие

my-tensflow-путешествие - некоторые эксперименты с OpenAI Gym

github.com

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map