【问题标题】:Using Sigmoid instead of Tanh activation function fails - Neural Networks使用 Sigmoid 代替 Tanh 激活函数失败 - 神经网络
【发布时间】:2017-01-14 15:55:58
【问题描述】:

我正在查看来自this blog 的以下code

它提供了使用sigmoidtanh 激活函数的选项。

XOR 测试似乎与 tanh 函数产生了正常工作 ~ (0,1,1,0)

但是在更改为sigmoid 时,我得到了错误的输出~(0.5,0.5,0.5,0.5)

我已经在网上找到的another piece of code 尝试过,但出现了完全相同的问题。

似乎唯一改变的是激活函数(及其导数)。改变这一点是否需要其他改变,比如反向传播?

非常感谢您的帮助!

【问题讨论】:

  • 您是否尝试过增加 sidmoid-only 网络的大小来验证它是否能够学习 XOR?尝试使用 2-10-1 之类的过度杀伤力。 tanh 输出区间[-1,1] 与 sigmoid 输出层相结合,往往更适合 XOR。使用 sigmoid 不会改变底层的反向传播计算。

标签: python neural-network backpropagation sigmoid


【解决方案1】:

您使用的模型似乎没有训练偏见。 tanhsigmoid 之间的唯一区别是缩放和偏移。学习新的缩放将通过权重完成,但您还需要学习补偿新的偏移量,这也应该通过学习偏差来完成。

【讨论】:

  • 感谢您的解释。是否有一个程序示例(最好是在 python 中以提高可读性),您可以参考我哪些训练偏差?
  • 顺便说一句,如果我使用 True=0.9 和 False=0.1 进行 XOR 会怎样?我还需要偏见吗?
  • 偏差可以被视为额外分量的权重,总是等于1:如果x = (x1, x2, ..., xn) 是神经元的输入向量,w = (w1, w2, ..., wn) 是你学习的权重,你可以通过将输入增加为x = (x0=1, x1, x2, ..., xn) 并学习增加的权重w = (w0, w1, w2, ..., wn)w0 来学习具有完全相同框架的偏差。
猜你喜欢
  • 2012-01-07
  • 2017-03-30
  • 2021-02-05
  • 2020-12-05
  • 2014-01-18
  • 2017-12-08
  • 1970-01-01
  • 2014-01-06
相关资源
最近更新 更多