手工推导梯度下降公式

本文章为案例 机器学习方法实现手写数字二分类 的配套文章
本文将手工推导梯度下降公式,模型为感知机,损失函数为均方误差函数。
模型结构如下图所示:
感知机

下面我们开始进行梯度下降公式的手工推导。
手工推导梯度下降公式1
手工推导梯度下降公式2

至此,公式推导完成。

最终可以用下面的代码来实现梯度的计算过程:

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
(完)