Почему выходные значения из нейронной сети увеличиваются / «взрываются»? - PullRequest
0 голосов
/ 12 октября 2019

Я тренирую нейронную сеть как часть обучения с подкреплением, используя PPO, и когда модель впервые инициализируется, выходные данные выглядят «нормально», как это:

[-0.00611657 -0.01238834  0.00284606  0.02600986 -0.00587347 -0.00182077
 -0.00975011]

Но постепенно выходы увеличиваются и посленесколько часов обучения выглядят так:

[-3119.771    1075.3921    513.0797  -3039.5288  -2695.9114    388.93564
 -3112.1418 ]

Награды от окружения всегда от -5 до +5, и они нормализованы:

rewards = (rewards - rewards.mean()) / torch.max(rewards.std(), torch.tensor(1e-5))

Я думаючто указывает на ошибку где-то? Любые идеи о том, что может привести к такому «взрыву» выходов?

Архитектура модели выглядит следующим образом:

Sequential(
  (0): Linear(in_features=174, out_features=500, bias=True)
  (1): ReLU()
  (2): Linear(in_features=500, out_features=500, bias=True)
  (3): ReLU()
  (4): Linear(in_features=500, out_features=500, bias=True)
  (5): ReLU()
  (6): Linear(in_features=500, out_features=500, bias=True)
  (7): ReLU()
  (8): Linear(in_features=500, out_features=500, bias=True)
  (9): ReLU()
  (10): Linear(in_features=500, out_features=500, bias=True)
  (11): ReLU()
  (12): Linear(in_features=500, out_features=7, bias=True)
)
...