本文章为案例 机器学习方法实现手写数字二分类 的配套文章
本文将手工推导梯度下降公式,模型为感知机,损失函数为均方误差函数。
模型结构如下图所示:
下面我们开始进行梯度下降公式的手工推导。
至此,公式推导完成。
最终可以用下面的代码来实现梯度的计算过程:
def gradient(self, x, y, pred_y):
"""
x: 样本输入值
y: 样本标签值
pred_y: 样本输入到感知机模型后得到的预测值
"""
gradient_w = (pred_y-y)*pred_y*(1-pred_y)*x
gradient_w = np.mean(gradient_w, axis=0)
gradient_w = gradient_w[:, np.newaxis]
gradient_b = (pred_y - y)*pred_y*(1-pred_y)
gradient_b = np.mean(gradient_b)
return gradient_w, gradient_b