根据我的经验,这是一个初学者。
对于一个简单的神经网络,例如:
- 2 个节点,用字母
i
和表示j
,
x
表示节点的输出,
w
表示连接两个节点的权重。
给定节点的输出具有以下形式。

可以翻译为
将激活函数 (lambda) 应用于前一层每个节点的值与将它们连接到当前节点的权重的乘积之和。
这个激活函数可以是

(这个特殊函数称为sigmoid函数。)
如果您在 GeoGebra 中输入该函数,您将得到以下曲线

显然,这个激活函数接受任何输入并输出一个介于 0 和 1 之间的唯一数字。由于函数变得越来越大,因此保留了顺序。
在训练阶段,当网络到达终止时,我们计算网络的总误差,它类似于训练集中的输出与我们从网络获得的输出之间的差异。
显然,每次输出提高时,该值都会降低。
对于网络的每个权重,都会计算一个梯度。这个梯度是一个数字,可以理解为在权重上添加一个小数字对总误差的影响。
这个梯度可以从网络结构派生的公式中计算出来,也可以像尝试将权重相加一样简单地计算出来,看看会发生什么。
- 如果梯度是正的,这意味着增加权重会增加总误差,我们应该减去,
- 如果梯度为负,则意味着增加权重会导致较小的总误差,我们应该增加。
通过大量重复此操作,总误差将达到最小值。
最后一件事我不知道,不要忘记在这个过程的迭代之间切换输入。如果你不这样做,你的网络只会针对它处理的最后一个项目进行适当的训练。
我希望这有一点帮助。请在评论中写下您的建议。正如您可能猜到的那样,我不是以英语为母语的人。
我推荐阅读
Michael Taylor的《Neural Networks, A Visual Introduction For Beginners 》。