Nano Hash - криптовалюты, майнинг, программирование

Как я могу улучшить производительность сети с прямой связью в качестве аппроксиматора функции q-значения?

Я пытаюсь перемещаться по агенту в домене n * n gridworld, используя Q-Learning + нейронную сеть с прямой связью в качестве аппроксиматора q-функции. По сути, агент должен найти лучший/кратчайший путь для достижения определенной конечной цели (награда +10). Каждый шаг, который делает агент, получает -1 награду. В gridworld также есть некоторые позиции, которых агенту следует избегать (награда -10, терминальные состояния тоже).

До сих пор я реализовал алгоритм Q-обучения, который сохраняет все значения Q в Q-таблице, и агент работает хорошо. На следующем шаге я хочу заменить Q-таблицу нейронной сетью, обучаемой онлайн после каждого шага агента. Я попробовал NN с прямой связью с одним скрытым слоем и четырьмя выходами, представляющими значения Q для возможных действий в мире сетки (север, юг, восток, запад). В качестве входных данных я использовал нулевую матрицу nxn, которая имеет «1» в текущих позициях агента.

Чтобы достичь своей цели, я попытался решить проблему с нуля:

  1. Исследуйте грид-мир со стандартным Q-Learning и используйте Q-карту в качестве обучающих данных для сети после завершения Q-Learning --> работает нормально

  2. Используйте Q-Learning и предоставьте обновления Q-карты в качестве обучающих данных для NN (batchSize = 1) --> сработало хорошо

  3. Полностью заменить Q-Map на NN. (Это тот момент, когда становится интересно!)

    -> ПЕРВАЯ КАРТА: 4 x 4 Как описано выше, у меня есть 16 «дискретных» входов, 4 выхода, и он отлично работает с 8 нейронами (relu) в скрытом слое (скорость обучения: 0,05). Я использовал жадную политику с эпсилоном, которая уменьшает от 1 до 0,1 в течение 60 эпизодов. Здесь показан тестовый сценарий. Производительность сравнивается между стандартным qlearning с q-map и " нейронное обучение (в данном случае я использовал 8 нейронов и разную скорость отсева).

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

-> Большая карта: 10 x 10

Теперь я попробовал использовать нейронную сеть для больших карт. Сначала я попробовал этот простой случай.

В моем случае нейронная сеть выглядит следующим образом: 100 input; 4 выхода; около 30 нейронов(релу) в одном скрытом слое; снова я использовал уменьшающийся коэффициент исследования для жадной политики; более 200 эпизодов скорость обучения снижается с 0,1 до 0,015 для повышения стабильности.

Сначала у меня были проблемы со сходимостью и интерполяцией между отдельными позициями, вызванные дискретным входным вектором. Чтобы решить эту проблему, я добавил к вектору несколько соседних позиций со значениями, зависящими от их расстояния до текущей позиции. Это значительно улучшило обучение, и политика стала лучше. Производительность с 24 нейронами показана на картинке выше.

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

Теперь вот мои вопросы/проблемы, которые я до сих пор не решил:

(1) Моя сеть способна решать действительно простые случаи и примеры на карте 10 x 10, но она терпит неудачу, поскольку проблема становится немного сложнее. В тех случаях, когда сбой весьма вероятен, в сети нет никаких изменений, чтобы найти правильную политику. Я открыт для любой идеи, которая может улучшить производительность в этом случае.

(2) Есть ли более разумный способ преобразования входного вектора для сети? Я уверен, что добавление соседних позиций к входному вектору, с одной стороны, улучшает интерполяцию q-значений по карте, но, с другой стороны, затрудняет обучение специальных/важных позиций в сети. Я уже пробовал стандартный декартовский двумерный ввод (x/y) на ранней стадии, но потерпел неудачу.

(3) Существует ли другой тип сети, кроме сети прямого распространения с обратным распространением, который обычно дает лучшие результаты с аппроксимацией q-функции? Вы видели проекты, в которых FF-nn хорошо работает на больших картах?


Ответы:


1

Известно, что Q-обучение + нейронная сеть с прямой связью в качестве аппроксиматора q-функции могут дать сбой даже в простых задачах [Boyan & Moore, 1995].

У Рича Саттона есть вопрос в FAQ его веб-сайта связанные с этим.

Возможным объяснением является явление, известное как интерференция, описанное в [Barreto & Anderson, 2008]:

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

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

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

Один из способов решить проблему интерференции — использовать аппроксиматор локальной функции. Чем более независимы каждая базисная функция друг от друга, тем менее серьезной является эта проблема (в пределе для каждого состояния имеется одна базисная функция, что соответствует случаю таблицы поиска) [86]. Классом локальных функций, которые широко используются для аппроксимации, являются радиальные базисные функции (РБФ) [52].

Итак, в вашей проблеме (n * n gridworld) нейронная сеть RBF должна давать лучшие результаты.

Ссылки

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

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

21.06.2016
  • Спасибо за ответ на мой вопрос! В случае, если я хочу перенести описанную выше задачу в непрерывное пространство состояний, возможно ли использовать нейронную сеть RBF? Может ли мой агент извлечь выгоду из методов глубокого обучения или глубокого обучения с подкреплением? 21.06.2016
  • Добро пожаловать! Да, конечно, на самом деле нет смысла применять аппроксиматор функций (MLP, RBF сеть или что-то еще), когда количество состояний дискретно и мало. Нейронная сеть RBF особенно подходит для задач, в которых размерность входного пространства мала. В случае 2D, как и в вашем случае, это здорово, потому что вы можете легко построить Q-функцию (или даже функции RBF: imgur.com/knStnKI) и отрегулируйте количество базовых функций и ширину до соответствующих значений. 21.06.2016
  • Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..