为多项式回归制作人工神经网络

Making an ANN for Polynomial Regression

我有一项任务是在不使用任何 ML 库的情况下,使用 Python 从头开始​​构建回归问题的人工神经网络。您可能已经猜到我是这方面的真正初学者,这个过程有点令人困惑,所以我非常感谢您能帮助我回答我的几个问题。

这是我理解的用于训练 ANN 的基本训练算法:

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

  1. 我应该使用什么激活函数? Sigmoid 可能不是答案。
  2. 是否应该在单个输出节点上使用激活函数?
  3. 计算反向传播中隐藏层误差的公式是δ(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 - 也许尝试理解反向传播背后的数学原理。这是基本的链式法则,一旦你掌握了,你就不会再这么糊涂了。