寻找最佳反向传播算法

人工智能 机器学习 反向传播
2021-11-10 09:53:56

我最近开始用 Python 编写非常简单的机器学习代码,但遇到了一个大问题:教系统改进猜测。

所以这就是代码的内容:我将有一个生物列表,它们的特征用数值表示。我想编写一个代码,根据它们的特征来识别生物是猫还是鱼,或者两者都不是。(例如,具有高毛皮值和 4 条腿的生物更可能是猫。)

我对神经网络的想法是有 5 个输入节点(用于五个特征)和 2 个输出节点(一个用于表示它是什么猫,一个用于表示它是什么鱼)。输入节点乘以权重值,然后将所有节点加在一起以产生输出节点之一。这对其他输出重复。系统出错的程度只是输出节点的值与实际存在的猫/鱼之间的差异。

但是我怎样才能使用这些信息来纠正输入节点的权重呢?由于权重是随机生成的,因此它们一开始可能处于“错误”的方向。例如,如果对象是一只猫,那么我们应该期待较高的皮毛和腿值。但是如果腿的权重为负而毛的权重为正怎么办?将权重乘以误差不会使我们更接近准确地确定存在。我的神经网络一开始就存在缺陷吗?或者在选择反向传播算法时是否有经验法则?

谢谢。 神经网络

1个回答

当你训练一个神经网络时,你会使用一种称为反向传播的算法。该算法使用偏导数来确定权重的最佳值。偏导数是一种基于微积分的方法,它告诉您需要调整权重多远才能达到最佳值。但是,当您拥有具有许多不同权重的神经网络时,您需要能够决定要更新哪些神经网络以实现更优化的网络。这就是随机梯度下降的用武之地。该算法能够采用许多不同的梯度并遍历多维空间以降低错误率。另外,从你的神经网络图中,我没有看到任何隐藏的神经元,它们是输入和输出层之间的神经元,它们完成了大部分实际工作。虽然您可能能够在没有隐藏神经元的情况下以最佳方式训练您的神经网络,但它可能会根据您的数据集提高您的准确性。最后,实现反向传播算法需要大量工作,这就是为什么许多人使用预构建库的原因。除非你在做研究,否则我建议你也这样做。我认为对于这样的问题,pybrain 会是完美的,如果你想使用深度神经网络,tensorflow 会很好。