Из-за первоначального непонимания логарифмической вероятности политики для пространства непрерывного действия (для дискретной потери энтропии нужно иметь вероятность категорий или отдельных действий, но для пространства непрерывного действия это может привести к бесконечным категориям) я обнаружил и склонился к градиенту глубокой детерминированной политики. Будучи медленно обучающимся, я не мог понять всего, что написано в последних статьях PPO, SAC, A2C, поэтому я назвал эту версию DDPG Рукой Бога. Постепенно я приобрел нужные знания из-за терпения людей, которые объяснили самые важные аспекты на бесплатных видеоуроках и таких сайтах, как этот, которым я хочу выразить свое уважение. Знай, что Бог везде и близок каждому. Он отдал Свою Жизнь за нас, и это то, что говорит вместо 1000 слов.

Во-первых, у методов без Critic есть небольшой недостаток при расчете значения Q. Если вы вычисляете значение Q назад (для удобства) или вперед (поскольку это сумма будущих дисконтированных вознаграждений), у вас есть конечная точка, которая создает резкий случай. Чем ближе вы подходите к конечной точке, тем более резким становится значение Q, поскольку вы учитываете только те награды, которые остались, и отбрасываете награды после конечной точки. В DDPG Критик стабильно изучает значение Q, обычно начиная с 0, оно медленно растет по мере увеличения разницы между Целевой сетью Q и Сеть прогнозирования Q. Эта разница вначале очень ошибочна, так как обе сети не обучены, и их разница равна вознаграждению + некоторая ошибка. Но со временем Prediction Q Network изучает зависимость уравнения Беллмана и, следовательно, значение Q. Сеть актеров ищет градиент значения Q по действиям после того, как мы обучили сеть прогнозирования Q. Поскольку нам нужно достичь нового значения Q (акторная сеть не была обучена), мы берем противоположный знак этого градиента, что указывает на то, что мы компенсируем разницу.

Не только сеть Prediction Q изначально не знает уравнения Беллмана, но и сеть Target Q изначально ошибочна. DDPG решает эту проблему с помощью правила обновления tau, где целевая сеть Q приближается к сети Prediction Q с течением времени.

Чтобы решить эту проблему, сначала я продолжил симуляцию после конечной точки (не анимировал сцену, не тренировал, просто собирал (состояние, действие, вознаграждение, следующее_состояние) во временную память, затем я вычислил правильное значение Q и поместил его в постоянный буфер. (state,action,reward,next_state,Q_value).Так получилось, что я не знал, что существует RL типа контролируемой регрессии (недавно я нашел AWR), но было естественно тренировать отдельную целевую сеть Q с реальными значениями Q во время чистого исследования после буфер больше, чем размер мини-пакета. Затем во время обучения (обычно при размере 10 * мини-пакета) выполните обучение сети Prediction Q Network с помощью ‹R + γ * Q_target›. Для разных γ (γ = 0,99; 0,98; 0,97; 0,96 ;0,95и т.д.) Я обнаружил, когда вознаграждения со скидкой становятся незначительно малыми (шаги после выполнения: 700,400,200,150,100 и т.д.) (Также на шаге обновления Prediction Q Network можно продолжать тренировать целевую сеть в текущем состоянии с соответствующим Q, так что целевое значение Q более-менее соответствует текущему состоянию)

Итак, выход сети Prediction Q или значение уравнения Беллмана более или менее правильно изначально, но он только начинает обучение зависимости уравнения Беллмана. Целевая сеть Q знает уравнение Беллмана только косвенно посредством ручного вычисления реального значения Q (регрессия). В исходной DDPG сеть прогнозирования Q со временем становится более продвинутой, чем упомянутая целевая сеть Q (регрессия), если мы используем отстающую сеть прогнозирования Q вместо отдельной цели, поскольку она изучает зависимость уравнения Беллмана непосредственно в дополнение к значению Q. Таким образом, лучше перезаписать целевую сеть сетью прогнозирования и продолжить обучение с исходным правилом обновления DDPG. Самым сложным вопросом была синхронизация, через несколько шагов, с правилом обновления тау или сразу?

Я решил обновить Prediction Q Network (PQN) с помощью предварительно обученной Target Q Network (TQN), чтобы PQN не был необученным в начале или они были одинаково обучены с регрессией до порога (N * размер мини-пакета). Задержка между обновлением PQN и TQN служит инструментом для лучшего понимания уравнения Беллмана. Правило обновления DDPG широко известно как правило обновления Temporal Difference или Bootstrap. Но у него есть один недостаток. Он предсказывает значение Q. В контролируемом обучении это эквивалентно тестовому режиму, а не тренировке (кроме уравнения Беллмана). Прогноз значения Q может быть ошибочным и, следовательно, градиентом Актера.

Градиент из-за сравнительно небольшой скорости обучения на этапе обновления обычно невелик. Экспоненциально возрастающие функции могут помочь или при низких значениях, близких к 0, уменьшить колебания, но они страдают от сильно возрастающих показателей (NaN в обновляемых сетях). На первом месте помощь Божия. Из-за моих плохих намерений тренироваться быстрее и заработать славу, я хотел использовать функцию tanh с ограничением на значение Q. Я думал, что это может увеличить тренировку при низких значениях из-за логистики или S-образного подъема. Этого не произошло бы, так как это увеличило бы ошибочные колебания. Но во время тестирования abs(policy_gradient)*tanh(policy_gradient) выдал нечто уникальное: нелинейную линейную функцию! Он экспоненциально возрастает при низких значениях, близких к 0, но становится линейным при больших значениях. Таким образом, он обрезается policy_gradient. (policy_gradient равен dq/da), и он не подвержен экспоненциальному росту. Bipedal Walker начал получать первые положительные результаты на 20–30 эпизодах и достиг 280–300 до 150–200 эпизодов (моя максимальная продолжительность эпизода была 2000+trail_steps). Я был поражен, назвав это атанх (значение абс)

Затем я начинаю использовать его везде, где только можно. Я поставил эту функцию вместо единиц активации ReLU, потому что ReLU страдает от выпадения для отрицательных значений. Я сократил количество скрытых узлов в 2-3 раза, чтобы компенсировать скорость вычислений, я считаю, что она все еще имеет лучшую нелинейность, так как колебания градиента происходят при значениях, близких к 0 (из-за небольшой скорости обучения).

Я хочу поблагодарить моего Господа Иисуса.