Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

4.15 进阶:推导梯度方程

本节推导逻辑回归交叉熵损失 LCEL_{\mathrm{CE}} 的梯度。先快速复习几个微积分结论。第一,ln(x)\ln(x) 的导数为:

ddxln(x)=1x(4.57)\frac d{dx}\ln(x)=\frac1x\tag{4.57}

第二,sigmoid 的导数具有非常简洁的形式:

dσ(z)dz=σ(z)(1σ(z))(4.58)\frac{d\sigma(z)}{dz}=\sigma(z)(1-\sigma(z))\tag{4.58}

最后是导数的链式法则。若复合函数 f(x)=u(v(x))f(x)=u(v(x)),则 f(x)f(x) 的导数等于 uuvv 的导数乘以 vvxx 的导数:

dfdx=dudvdvdx(4.59)\frac{df}{dx}=\frac{du}{dv}\cdot\frac{dv}{dx}\tag{4.59}

首先求损失函数对单个权重 wjw_j 的导数(每个权重以及偏置都需要计算):

LCEwj=wj[ylogσ(wx+b)+(1y)log(1σ(wx+b))]=[wjylogσ(wx+b)+wj(1y)log[1σ(wx+b)]](4.60)\begin{array}{ll}\frac{\partial L_{\mathrm{CE}}}{\partial w_j}&=\frac\partial{\partial w_j}-[y\log\sigma(\mathbf w\cdot\mathbf x+b)+(1-y)\log(1-\sigma(\mathbf w\cdot\mathbf x+b))]\\&=-\left[\frac\partial{\partial w_j}y\log\sigma(\mathbf w\cdot\mathbf x+b)+\frac\partial{\partial w_j}(1-y)\log[1-\sigma(\mathbf w\cdot\mathbf x+b)]\right]\end{array}\tag{4.60}

应用链式法则和对数函数的导数:

LCEwj=yσ(wx+b)wjσ(wx+b)1y1σ(wx+b)wj[1σ(wx+b)](4.61)\frac{\partial L_{\mathrm{CE}}}{\partial w_j}=-\frac y{\sigma(\mathbf w\cdot\mathbf x+b)}\frac\partial{\partial w_j}\sigma(\mathbf w\cdot\mathbf x+b)-\frac{1-y}{1-\sigma(\mathbf w\cdot\mathbf x+b)}\frac\partial{\partial w_j}[1-\sigma(\mathbf w\cdot\mathbf x+b)]\tag{4.61}

重新整理各项:

LCEwj=[yσ(wx+b)1y1σ(wx+b)]wjσ(wx+b)\frac{\partial L_{\mathrm{CE}}}{\partial w_j}=-\left[\frac y{\sigma(\mathbf w\cdot\mathbf x+b)}-\frac{1-y}{1-\sigma(\mathbf w\cdot\mathbf x+b)}\right]\frac\partial{\partial w_j}\sigma(\mathbf w\cdot\mathbf x+b)

代入 sigmoid 的导数并再次应用链式法则,得到式 4.62:

LCEwj=[yσ(wx+b)σ(wx+b)[1σ(wx+b)]]σ(wx+b)[1σ(wx+b)](wx+b)wj=[yσ(wx+b)]xj=[σ(wx+b)y]xj(4.62)\begin{array}{rcl}\frac{\partial L_{\mathrm{CE}}}{\partial w_j}&=&-\left[\frac{y-\sigma(\mathbf w\cdot\mathbf x+b)}{\sigma(\mathbf w\cdot\mathbf x+b)[1-\sigma(\mathbf w\cdot\mathbf x+b)]}\right]\sigma(\mathbf w\cdot\mathbf x+b)[1-\sigma(\mathbf w\cdot\mathbf x+b)]\frac{\partial(\mathbf w\cdot\mathbf x+b)}{\partial w_j}\\&=&-[y-\sigma(\mathbf w\cdot\mathbf x+b)]x_j\\&=&[\sigma(\mathbf w\cdot\mathbf x+b)-y]x_j\end{array}\tag{4.62}