【 Logistic Regression 】林轩田机器学习基石
这里提出Logistic Regression的角度是Soft Binary Classification。输出限定在0~1之间,用于表示可能发生positive的概率。
具体的做法是在Linear Regression的基础上,再加一层Logistic Function,限定住输出的取值。
完成了hypothesis的部分,下面就是如何写出Ein的表达式了。
这里自己先回想了一下Linear Regression的情况,为啥能得到analytic close solution呢?
因为Linear Regression的输出yhat可以直接跟样本点的y比较,Ein可以直接被写出来。
第二次过这内容,注意到了square error是friendly error,如果Logistic Regression的话,再用square error就是不friendly的了。
但是到了Logistic Regression的情况:hypothesis的输出是P(+1|x),即给定输入下,预测样本为正的概率。这下有些麻烦了,没法直接跟y直接比较了。
看来,Ein模仿Linear Regression这条路走不通了,只能想别的办法了。这里用的办法是MLE(Maximum Likelihood Estimate)极大似然估计。
这种连加形式的不太好弄;由于h(ynxn)都是正的,所以可以加一个ln,换成连乘的形式。
接下来,把求最大变成求最小;前面补上一个1/N是为了凑形式
然后,Ein就神奇地变成了最小化上述的式子(虽然看起来怪怪的,而且名字也cross-entropy error也怪怪的,但是林说有历史原因)。
随后,相信这个Ein是连续,可导,二阶可导,convex,然后就是导数等于0即可了。
接下来,就是“剥洋葱”求导过程,如下图。
上述的求导过程先对某一个wi求导,然后扩展到全部的w;最终的出来了梯度的表达式。
接下来,就是如何求解梯度表达式为0的w了。
林并没有直接讲这个Ein怎么求,而是先回顾的PLA算法的最小化Ein过程。
这种iterative optimization approach的过程可以用两部分来刻画:ita和v
首先明确,每轮迭代调整的对象是w
(1)ita表示的是调整的幅度
(2)v表示是调整的方向(既然是方向,那么就要保证||v||=1)
这种非线性的还是太困难,因此利用多维度Taylor展开,把v提出去,如下。
按照上面的阐述,每次利用ita和v更新完w后,Ein的变化幅度公式就可以得到了。
我自己用y=x²来理解的。
比如,y=(x+0.0001)²≈x²+0.0001*(x²)'=x²+0.0001*2x,大概类似这个意思吧。
然后就是优化的问题了,如何能保证按照上述的公式,每次Ein减小的最快呢?
问题的关键就在于v了:这里如果v与Ein梯度方向完全相反,则二者内积最小,也就是Ein减小的最快;由此,v的表达式也就得到了。
之前的讨论,都是固定ita的大小;如果不注意ita的取值大小,可能带来如下的问题:
因此,一个比较直观的策略就是,ita的变化跟||Ein梯度||正相关,这样似乎更好一些。因此有了如下的结论:
最后,得到了完整的Logistic Regression的学习算法:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?