🚀 优质资源分享 🚀
学习路线指引(点击解锁) | 知识定位 | 人群定位 |
---|---|---|
🧡 Python实战微信订餐小程序 🧡 | 进阶级 | 本课程是python flask+微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。 |
💛Python量化交易实战💛 | 入门级 | 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统 |
1. 梯度计算式导出
我们在博客《统计学习:逻辑回归与交叉熵损失(Pytorch实现)》中提到,设www为权值(最后一维为偏置),样本总数为NNN,{(xi,yi)}Ni=1{(xi,yi)}Ni=1{(x_i, y_i)}_{i=1}^N为训练样本集。样本维度为DDD,xi∈RD+1x_i\in \mathbb{R}^{D+1}(最后一维扩充),yi∈{0,1}y_i\in{0, 1}。则逻辑回归的损失函数为:
l(w)=N∑i=1[yilogπw(xi)+(1−yi)log(1−πw(xi))]\mathcal{l}(w) = \sum_{i=1}^{N}\left[y_{i} \log \pi_{w}\left(x_{i}\right)+\left(1-y_{i}\right) \log \left(1-\pi_w\left(x_{i}\right)\right)\right]
这里
πw(x)=p(y=1∣x;w)=11+exp(−wTx)\begin{aligned}
\pi_w(x) = p(y=1 \mid x; w) =\frac{1}{1+\exp \left(-w^{T} x\right)}
\end{aligned}
写成这个形式就已经可以用诸如Pytorch这类工具来进行自动求导然后采用梯度下降法求解了。不过若需要用表达式直接计算出梯度,我们还需要将损失函数继续化简为:
l(w)=−N∑i=1(yiwTxi−log(1+exp(wTxi)))\mathcal{l}(w) = -\sum_{i=1}^N(y_i w^T x_i - \log(1 + \exp(w^T x_i)))
可将梯度表示如下:
∇wl(w)=−N∑i=1(yi−1exp(−wTx)+1)xi\nabla_w{