制作用于多项式回归的人工神经网络



我有一个任务,从头开始使用Python构建一个用于回归问题的ANN,而不使用任何ML库。你可能已经猜到我是一个真正的初学者,这个过程有点令人困惑,所以我真的很感激你能帮助我回答我的几个问题。

这是我所理解的训练人工神经网络的基本训练算法:

  • 预测正向prop
  • 向后prop计算错误
  • 使用errors
  • 计算每个权重的delta
  • 在数据集迭代中累积delta并计算每个权重的部分梯度
  • 使用梯度下降优化权重

我希望这些步骤是有意义的,是好的。以下是我的几个问题:

  1. 我应该使用什么激活功能?Sigmoid可能不是答案。
  2. 应该在单个输出节点上使用激活函数吗?
  3. 计算back-prop隐藏层误差的公式为δ(l) = Transpose[ϴ(l)] x δ(l+1) .* g`[z(l)],其中l为层数,我认为g`[z(l)]为通常取为a(l) .* (1 - a(l))的激活函数的导数。当我们使用一个激活函数而不是sigmoid时,这个会改变吗?
  4. 我犯了什么错误或者有什么重要的提示吗?

如果问题是非常基本的,请向我道歉。这方面我还是个新手。

如果有人在任何相同的查询中偶然发现了这一点,下面是答案:

1 - Sigmoid应该工作,但它限制了0和1之间的输出,因为这是一个回归问题,你可以设计你的问题,以获得一个标准化的输出,并将其缩放到正确的数字。或者直接使用ReLU。

2 -是的。输出节点上的激活类型会改变您得到的输出类型。

3 -当然会。将激活梯度的导数与反向传播的全局梯度相乘得到局部梯度。改变激活函数也会改变导数

4 -也许试着理解反向传播背后的数学。这是基本的链式法则,一旦你掌握了它,你就不会像这样困惑了。

最新更新