【问题标题】:Making an ANN for Polynomial Regression为多项式回归制作人工神经网络
【发布时间】:2021-02-09 12:06:21
【问题描述】:

我有一个任务是在不使用任何机器学习库的情况下从头开始使用 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. 我犯了什么错误或任何重要提示?

如果问题非常基本,我们深表歉意。我是这方面的初学者。

【问题讨论】:

    标签: python neural-network linear-regression


    【解决方案1】:

    如果有人在任何相同的查询中偶然发现此问题,以下是答案:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-27
      • 2011-11-19
      • 2014-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-13
      • 1970-01-01
      相关资源
      最近更新 更多