为多项式回归制作人工神经网络
Making an ANN for Polynomial Regression
我有一项任务是在不使用任何 ML 库的情况下,使用 Python 从头开始构建回归问题的人工神经网络。您可能已经猜到我是这方面的真正初学者,这个过程有点令人困惑,所以我非常感谢您能帮助我回答我的几个问题。
这是我理解的用于训练 ANN 的基本训练算法:
- 预测的前向支撑
- 向后计算误差的道具
- 使用误差计算每个权重的增量
- 在数据集迭代中累积增量并计算每个权重的部分梯度
- 使用梯度下降优化权重
我希望这些步骤有意义并且没问题。以下是我的几个问题:
- 我应该使用什么激活函数? Sigmoid 可能不是答案。
- 是否应该在单个输出节点上使用激活函数?
- 计算反向传播中隐藏层误差的公式是
δ(l) = Transpose[ϴ(l)] x δ(l+1) .* g`[z(l)]
,其中l
是层数,g`[z(l)]
我相信是通常采用的激活函数的导数作为 a(l) .* (1 - a(l))
。当我们使用 sigmoid 以外的激活函数时,这种情况会改变吗?
- 有什么错误或重要提示吗?
如果问题非常基础,我们深表歉意。我是这方面的新手。
如果有人因任何相同的查询而偶然发现此问题,请查看以下答案:
1 - Sigmoid 应该可以工作,但它将输出限制在 0 和 1 之间,并且由于这是一个回归问题,您可以设计您的问题以获得标准化输出并将其缩放到正确的数字。或者只使用 ReLU。
2 - 是的。输出节点上的激活类型会更改您获得的输出类型。
3 - 当然会。激活梯度的导数与反向传播的全局梯度相乘得到局部梯度。改变激活函数也会改变导数。
4 - 也许尝试理解反向传播背后的数学原理。这是基本的链式法则,一旦你掌握了,你就不会再这么糊涂了。
我有一项任务是在不使用任何 ML 库的情况下,使用 Python 从头开始构建回归问题的人工神经网络。您可能已经猜到我是这方面的真正初学者,这个过程有点令人困惑,所以我非常感谢您能帮助我回答我的几个问题。
这是我理解的用于训练 ANN 的基本训练算法:
- 预测的前向支撑
- 向后计算误差的道具
- 使用误差计算每个权重的增量
- 在数据集迭代中累积增量并计算每个权重的部分梯度
- 使用梯度下降优化权重
我希望这些步骤有意义并且没问题。以下是我的几个问题:
- 我应该使用什么激活函数? Sigmoid 可能不是答案。
- 是否应该在单个输出节点上使用激活函数?
- 计算反向传播中隐藏层误差的公式是
δ(l) = Transpose[ϴ(l)] x δ(l+1) .* g`[z(l)]
,其中l
是层数,g`[z(l)]
我相信是通常采用的激活函数的导数作为a(l) .* (1 - a(l))
。当我们使用 sigmoid 以外的激活函数时,这种情况会改变吗? - 有什么错误或重要提示吗?
如果问题非常基础,我们深表歉意。我是这方面的新手。
如果有人因任何相同的查询而偶然发现此问题,请查看以下答案:
1 - Sigmoid 应该可以工作,但它将输出限制在 0 和 1 之间,并且由于这是一个回归问题,您可以设计您的问题以获得标准化输出并将其缩放到正确的数字。或者只使用 ReLU。
2 - 是的。输出节点上的激活类型会更改您获得的输出类型。
3 - 当然会。激活梯度的导数与反向传播的全局梯度相乘得到局部梯度。改变激活函数也会改变导数。
4 - 也许尝试理解反向传播背后的数学原理。这是基本的链式法则,一旦你掌握了,你就不会再这么糊涂了。