首先明确问题,这里是一个两层的多层感知机(MLP)模型,输入层有d个单位(x1到xd),输出层有一个单元y。给出的forward公式表示二元交叉熵损失函数(binary cross entropy loss)以及Sigmoid激活函数。现在要求输出层的backward梯度计算。
根据以上描述,我们首先列出相关公式:
- Sigmoid激活函数:y = σ(a) = 1 / (1 + exp(-a))
- 二元交叉熵损失函数:L = -(y^ * log(y) + (1 - y^) * log(1 - y))
- 线性组合:a = Σ(w_j * x_j) (j从1到d)
下面我们来计算损失函数关于各个参数的梯度:
求L关于y的梯度:
dL/dy = - (y^ / y - (1 - y^) / (1 - y))
求L关于a的梯度(链式法则):
dL/da = (dL/dy) * (dy/da)
dy/da = σ(a) * (1 - σ(a)) = y * (1 - y)
dL/da = (dL/dy) * (dy/da) = - (y^ / y - (1 - y^) / (1 - y)) * y * (1 - y)
对于每个权重参数 w_j,求L关于w_j的梯度(链式法则):
dL/dw_j = (dL/da) * (da/dw_j)
da/dw_j = x_j
所以,
dL/dw_j = (dL/da) * (da/dw_j) = - (y^ / y - (1 - y^) / (1 - y)) * y * (1 - y) * x_j
现在我们已经得到了损失函数关于各个权重参数的梯度。这些梯度可以用于更新权重,从而优化模型。在二元分类问题中,二元交叉熵损失函数和Sigmoid激活函数常常一起使用,因为它们可以很好地衡量模型预测概率和真实概率之间的差距。计算出梯度之后,可以使用梯度下降或其他优化算法来更新权重,从而最小化损失函数。