感知器训练 – delta规则

根据维基百科,使用delta规则我们通过以下方式调整权重:

dw = alpha * (ti-yi)*g'(hj)xi

其中alpha为学习常数,ti为真实答案,yi为感知器的猜测,g’为激活函数g对感知器输入的加权和的导数,xi为输入。

我在这公式中不理解的部分是乘以导数g’的部分。假设g = sign(x)(加权和的符号),那么g’总是0,dw = 0。然而,在我看到的网络上的代码示例中,作者们省略了g’,使用了以下公式:

dw = alpha * (ti-yi)*(hj)xi

我很乐意看到对此的正确解释!

提前感谢您。


回答:

您说的没错,如果您使用阶跃函数作为激活函数g,其梯度总是零(除了在0点),所以delta规则(也称为梯度下降)就什么也不做(dw = 0)。这就是为什么使用阶跃函数的感知器与梯度下降配合得不好。:)

对于线性感知器,您会有g'(x) = 1,对于dw = alpha * (t_i - y_i) * x_i

您看到的使用dw = alpha * (t_i - y_i) * h_j * x_i的代码。我们可以反向工程来理解这里发生了什么,因为显然g'(h_j) = h_j,这意味着回顾我们的微积分,我们必须有g(x) = e^x + 常数。所以显然您找到的代码示例使用的是指数激活函数。

这意味着神经元输出被限制在(0, 无穷大)(或者我猜(a, 无穷大)对于任何有限的a,对于g(x) = e^x + a)。我之前没有遇到过这种情况,但在网上看到了一些参考资料。Logistictanh激活函数在有界输出(无论是分类还是已知界限的回归)中更为常见。

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注