Оптимизируйте глубокую сеть Q с длинным эпизодом - PullRequest
11 голосов
/ 17 мая 2019

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

Таким образом, мы постепенно изучаем матрицу (100 * 10), и в каждом эпизоде ​​нам необходимо выполнить 100 * 10 итераций определенных операций. В основном мы выбираем кандидата из пула из 1000 кандидатов, помещаем этого кандидата в матрицу и вычисляем функцию вознаграждения, вводя всю матрицу в качестве входных данных:

enter image description here

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

Все элементы в матрице в долгосрочной перспективе зависят друг от друга, поэтому, если я правильно понял, вся процедура не подходит для какой-то "распределенной" системы.

Может ли кто-нибудь пролить свет на то, как мы смотрим на потенциальные возможности оптимизации здесь? Как некоторые дополнительные инженерные усилия или так? Любые предложения и комментарии будут очень благодарны. Спасибо.

======================= Обновление некоторых определений =================

0. начальный этап:

  • матрица 100 * 10, каждый элемент как пустой

1. пространство действия:

  • каждый шаг я выберу один элемент из пула кандидатов в 1000 элементов. Затем вставьте элемент в матрицу один за другим.

2. окружающая среда:

  • каждый шаг у меня будет обновленная матрица для изучения.

  • Функция оракула F возвращает диапазон количественных значений от 5000 до 30000, чем выше, тем лучше (примерно одно вычисление F занимает 120 секунд).

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

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

3. эпизод:

Сказать, что «мы планируем решить его в течение 100 эпизодов», это просто эмпирическая оценка. Но это должно быть не менее 100 эпизодов, по крайней мере.

4. Ограничения

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

Действительно, добавляя все больше и больше элементов в матрицу, вознаграждение может увеличиться или уменьшиться.

5. цель

Синтезированная матрица должна позволять функции оракула F возвращать значение больше 25000. Всякий раз, когда она достигает этой цели, я прекращаю этап обучения.

Ответы [ 2 ]

2 голосов
/ 29 мая 2019

Не решение вашего вопроса, только некоторые общие мысли, которые могут иметь отношение к делу:

  • Одним из самых больших препятствий для применения обучения с подкреплением в задачах "реального мира" является поразительно большой объем данных./ опыт, необходимый для достижения приемлемых результатов.Например, игра OpenAI в Dota 2 собрала опыт, эквивалентный 900 годам в день.В оригинальной работе Deep Q-network для достижения производительности, близкой к типичному человеку, требовались сотни миллионов игровых фреймов в зависимости от конкретной игры.В других тестах , где входные данные не являются необработанными пикселями, например MuJoCo, ситуация не намного лучше.Так что, если у вас нет симулятора, который может генерировать сэмплы (состояние, действие, следующее состояние, вознаграждение) дешево, возможно, RL - плохой выбор.С другой стороны, если у вас есть модель правдоподобия, возможно, другие подходы могут легко превзойти RL, такие как поиск по дереву Монте-Карло (например, глубокое обучение для игры в Atari в реальном времени с использованием автономного поиска по дереву Монте-КарлоПланирование или Простой случайный поиск обеспечивает конкурентный подход к обучению с подкреплением ).Все эти идеи и многое другое обсуждается в этом замечательном сообщении в блоге .
  • Предыдущее замечание особенно верно для глубокого RL.Факт аппроксимации значений функций или политик с использованием глубокой нейронной сети с миллионами параметров обычно подразумевает, что вам понадобится огромное количество данных или опыта.

А что касается вашего конкретного вопроса:

  • В комментариях я задал несколько вопросов об особенностях вашей проблемы.Я пытался выяснить, действительно ли вам нужен RL для решения проблемы, так как это не самый простой метод для применения.С другой стороны, если вам действительно нужен RL, неясно, следует ли вам использовать глубокую нейронную сеть в качестве аппроксиматора или использовать мелкую модель (например, случайные деревья).Однако эти вопросы и другие потенциальные оптимизации требуют большего знания предметной области.Здесь, кажется, вы не можете поделиться сферой проблемы, которая может быть вызвана многочисленными причинами, и я прекрасно понимаю.
  • Вы оценили количество необходимых эпизодов для решения проблемы, основываясь на некоторых эмпирическихисследования с использованием уменьшенной версии матрицы размером 20 * 10.Только предостережение: из-за проклятия размерности , сложность проблемы (или необходимый опыт) может возрастать экспоненциально, когда увеличивается размерность пространства состояний, хотя, возможно, это не ваш случай.

Тем не менее, я с нетерпением жду ответа, который действительно поможет вам решить вашу проблему.

2 голосов
/ 25 мая 2019

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

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

Я бы посоветовал вам поделиться более подробной информацией о проблеме, например, представив код дляузнайте, какой компонент занимает больше всего времени, поделившись фрагментом кода или, по мере того, как стандарт для науки становится все выше, разделить базу воспроизводимого кода.

...