Q-обучение в нейронной сети, а не «обучение»

Я сделал простую игру Tron на C ++ и MLP с одним скрытым слоем. Я реализовал Q-learning в этой нейронной сети, однако он не заставляет агента выигрывать больше игр с течением времени (даже после 1 миллиона игр). Я постараюсь объяснить в тексте, что я сделал, надеюсь, кто-то обнаружит ошибку, которая может вызвать эту проблему.

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

Я инициализирую 4 MLP, по одному на каждое возможное действие, со 100 входными узлами (вся игровая сетка 10×10), где каждая точка равна 1, если сам игрок находится там, 0, если точка пуста, и -1, если противник посетил это точка. Тогда есть 50 скрытых узлов и 1 выходной узел (я также пробовал одну сеть с 4 выходными узлами, но и это не помогает). Веса выбираются случайным образом от -0,5 до 0,5.

В каждую эпоху я инициализирую игровое окружение с двумя агентами, случайно расположенными в сетке. Затем я запускаю игру в цикле while, пока игра не закончится, а затем перезагружаю игровую среду. В рамках этого цикла я делаю следующее.

  1. Я поставляю MLP текущее состояние и определяю самое высокое
    Q-Value и идите туда с вероятностью 90% (10% случайного движения). Значение Q определяется с помощью функции активации сигмоида или RELU (я пробовал оба).
  2. Затем я вычисляю в новом состоянии 4 Q-значения и использую это для обучения сети моего первого хода со следующей целью: Target = reward + gamma * (maxQnextState). Тогда ошибка = Target — qValue, вычисленная в предыдущем состоянии.
  3. Я использую обратное распространение с производной сигмоидальной функции и высокой скоростью обучения и импульсом, чтобы распространять ошибку в обратном направлении.

Кажется, что мои значения qV очень низки (порядка 0,0001) или очень близки к 1 (0,999). И если я смотрю на погрешность на каждые 10.000 игр, она, похоже, не уменьшается.

Я начал с MLP, который мог изучать функцию XOR, и теперь использовать ее для Q-обучения. Может быть, некоторые из базовых предположений в случае XOR отличаются и вызывают проблемы для Q-обучения?

Или, может быть, это редкий вход (всего 100 раз 0, 1 или -1), который делает невозможным обучение?

Предложения действительно ценятся!

2

Решение

Есть несколько факторов, которые затрудняют объединение MLP с Q-learning, особенно для новичка в этой области. У Рича Саттона (одного из пионеров Reinforcement Learning) есть вопрос в FAQ его Веб-сайт связано с вашим вопросом. Поэтому я рекомендовал вам прочитать этот документ.

Хорошо известно, что Q-Learning + нейронная сеть с прямой связью как аппроксиматор Q-функции может дать сбой даже в простых задачах [Боян & Мур, 1995].

Возможное объяснение — феноменок, известный как интерференция описано в [Баррето & Андерсон, 2008]:

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

Вмешательство естественным образом связано с обобщением, а также происходит в обычном обучении под наблюдением. Тем не менее, в парадигме подкрепляющего обучения его эффекты имеют тенденцию быть гораздо более вредными. Причина этого двоякая. Во-первых, сочетание помех и начальной загрузки может легко стать нестабильным, поскольку обновления больше не являются строго локальными. Доказательства сходимости для алгоритмов, полученных из (4) и (5), основаны на том факте, что эти операторы являются сжимающими отображениями, то есть их последовательное применение приводит к последовательности, сходящейся к неподвижной точке, которая является решением для уравнения Беллмана [14,36]. Однако при использовании аппроксиматоров эта асимптотическая сходимость теряется, […]

Еще один источник нестабильности — это следствие того факта, что в режиме онлайн-обучения подкреплению распределение поступающих данных зависит от текущей политики. В зависимости от динамики системы агент может некоторое время оставаться в области пространства состояний, которая не является представительной для всей области. В этой ситуации алгоритм обучения может выделять избыточные ресурсы аппроксиматора функции для представления этой области, возможно, «забывая» предыдущую сохраненную информацию.

В заключение, начиная с MLP для аппроксимации Q-функции, это не очень хорошая идея.

Рекомендации

Боян, Дж. А. & Мур, А. В. (1995) Обобщение в обучении с подкреплением: безопасное приближение к функции стоимости. NIPS-7. Сан-Матео, Калифорния: Морган Кауфманн.

Андре да Мотта Саллес Баррето & Чарльз У. Андерсон (2008) Алгоритм ограниченного градиентного спуска для приближения значения-функции в обучении с подкреплением, Искусственный интеллект 172 (2008) 454–482

2

Другие решения

Я обратил внимание на то, что скорость обучения была слишком высокой (0,05). Когда я понизил это до 0,005 / 0,001, это решило проблему.

0

По вопросам рекламы [email protected]