单神经元神经网络中derivative变量的来源及推导逻辑咨询
单个神经元中导数的推导与逻辑解析
核心目标:最小化平方误差损失
这段代码是用梯度下降法优化单个线性神经元的权重,目标是让预测值尽可能接近目标值。我们选择**平方误差(sq_error)**作为损失函数,因为它连续可导,适合梯度下降,还能对大误差施加更大惩罚。
导数的具体推导
我们要求的是平方误差损失函数关于权重weight的导数——只有知道损失随权重变化的斜率,才能确定该往哪个方向调整权重来减小误差。一步步拆解:
- 预测值公式:
prediction = weight * input(单个线性神经元的输出,无激活函数) - 原始误差:
clear_error = prediction - goal(预测与目标的差值) - 平方损失函数:
sq_error = (prediction - goal)² = clear_error²(我们要最小化的目标)
用链式法则对weight求导:
d(sq_error)/d(weight) = d(sq_error)/d(clear_error) * d(clear_error)/d(prediction) * d(prediction)/d(weight)
- 第一项:
d(sq_error)/d(clear_error) = 2 * clear_error(x²的导数是2x) - 第二项:
d(clear_error)/d(prediction) = 1(clear_error是prediction减常数goal,导数为1) - 第三项:
d(prediction)/d(weight) = input(prediction是weight乘常数input,导数为input)
三项相乘得到完整导数:2 * clear_error * input
为什么代码里是input * clear_error?
代码里省略了系数2,是因为这个系数可以合并到学习率alpha中——alpha是控制权重更新步长的超参数,2*alpha依然是一个可调整的小常数,不影响梯度下降的方向(只影响步长),所以为了简化计算就直接省略了,本质逻辑和完整导数一致。
权重更新的逻辑
梯度的方向是损失函数增大的方向,所以用weight = weight - derivative * alpha,就是沿着损失减小的方向调整权重,每次迭代都让权重更接近最优值。
内容的提问来源于stack exchange,提问作者GreenOwl
相关产品推荐
相关产品推荐

