PPO 莫烦 ReLU激活函数的缺点

记录一个莫烦PPO代码中的小问题

    • 莫烦在PPO中创建神经网络的代码
    • ReLU激活函数的缺点
    • 可能出现的问题
      • 可能出现的解决方法

莫烦在PPO中创建神经网络的代码

// morvanzhou 
def _build_anet(self, name, trainable):
   with tf.variable_scope(name):
   l1 = tf.layers.dense(self.tfs, 100, tf.nn.relu, trainable=trainable)

ReLU激活函数的缺点

训练的时候很”脆弱”,很容易就”die”了,训练过程该函数不适应较大梯度输入,因为在参数更新以后,ReLU的神经元不会再有激活的功能,导致梯度永远都是零。
例如,一个非常大的梯度流过一个 ReLU 神经元,更新过参数之后,这个神经元再也不会对任何数据有激活现象了,那么这个神经元的梯度就永远都会是 0.
如果 learning rate 很大,那么很有可能网络中的 40% 的神经元都”dead”了。

https://www.cnblogs.com/Time-LCJ/p/9235711.html

可能出现的问题

卷积神经网络输出一直不变
action固定一个值,或边界值

可能出现的解决方法

  1. 换一个激活函数就好了,别用relu,可以试一试Leaky ReLU,RRelu,tanh等
  2. tf.layers.batch_normalization()

参考
[1]: https://www.zhihu.com/question/52467106
[2]:https://morvanzhou.github.io/tutorials/machine-learning/

你可能感兴趣的:(深度强化学习,深度学习,神经网络,tensorflow)