python学智能算法(二十七)|SVM-拉格朗日函数求解上

【1】引言

前序学习进程中,我们已经掌握了支持向量机算法中,为寻找最佳分割超平面,如何用向量表达超平面方程,如何为超平面方程建立拉格朗日函数。

本篇文章的学习目标是:求解SVM拉格朗日函数。

【2】求解方法

【2.1】待求解函数

支持量机算法的拉格朗日函数为:
L ( w , b , α ) = 1 2 ∥ w ∥ 2 − ∑ i = 1 m α i y i ( w ⋅ x i + b − 1 ) L(w,b,\alpha)=\frac{1}{2}{\left\|w\right\|}^2-\sum_{i=1}^{m}\alpha_{i}y_{i}(w\\cdot x_{i}+b-1) L(w,b,α)=21∥w∥2−i=1∑mαiyi(w⋅xi+b−1)

【2.2】函数求导

按照一贯的求解思路,先对拉格朗日函数进行求导:

【2.2.1】对w求导

∂ L ∂ w = ∂ ∂ w 1 2 w T w − ∑ i = 1 m α i y i w T x i \frac{\partial L}{\partial w}=\frac{\partial }{\partial w}{\\frac{1}{2}w\^Tw}-\\sum_{i=1}\^{m}\\alpha_{i}y_{i}w\^Tx_{i} ∂w∂L=∂w∂21wTw−i=1∑mαiyiwTxi

细心观察的朋友肯定发现上式出现了权重矩阵w的转置 w T w^T wT,这是因为:

在之前的所有公式的写法中,我对w和x/的矩阵乘法都沿用了最为稳妥的写法 w ⋅ x w\cdot x w⋅x。在机器学习领域,一般默认的向量形式为列向量,所以 w w w和 x i x_{i} xi可能都是列向量,实际做矩阵乘法的时候,需要转置其中一个,实际的超平面式简写后为
w T x + b = 0 w^Tx+b=0 wTx+b=0或者 w x T + b = 0 wx^T+b=0 wxT+b=0这两种写法完全等效。

在求导的时候,必须选择上述写法中的任何一个,这里选择了 w T x i + b = 0 w^Tx_{i}+b=0 wTxi+b=0,是为了和 1 2 ∥ w ∥ 2 = 1 2 w T w \frac{1}{2}{\left\|w\right\|}^2=\frac{1}{2}w^Tw 21∥w∥2=21wTw保持一致。

继续求解导数:
∂ L ∂ w = ∂ ∂ w 1 2 w T w − ∑ i = 1 m α i y i w T x i = w − ∑ i = 1 m α i y i x i \frac{\partial L}{\partial w}=\frac{\partial }{\partial w}{\\frac{1}{2}w\^Tw}-\\sum_{i=1}\^{m}\\alpha_{i}y_{i}w\^Tx_{i}=w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i} ∂w∂L=∂w∂21wTw−i=1∑mαiyiwTxi=w−i=1∑mαiyixi

【2.2.2】对b求导

∂ L ∂ b = − ∑ i = 1 m α i y i \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i} ∂b∂L=−i=1∑mαiyi

【2.3】极值代入

令前两步的导数为0,首先:
∂ L ∂ w = w − ∑ i = 1 m α i y i x i = 0 \frac{\partial L}{\partial w}=w-\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i}=0 ∂w∂L=w−i=1∑mαiyixi=0可得:
w = ∑ i = 1 m α i y i x i w=\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i} w=i=1∑mαiyixi

然后:
∂ L ∂ b = − ∑ i = 1 m α i y i = 0 \frac{\partial L}{\partial b}=-\sum_{i=1}^{m}\alpha_{i}y_{i}=0 ∂b∂L=−i=1∑mαiyi=0

可得:
∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1∑mαiyi=0将上数值代入拉格朗日函数有:

第一项:
1 2 ∥ w ∥ 2 = 1 2 w T w = 1 2 ( ∑ i = 1 m α i y i x i ) T ∑ i = 1 m α j y j x j = 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j \frac{1}{2}{\left\|w\right\|}^2=\frac{1}{2}w^Tw=\frac{1}{2}({\sum_{i=1}^{m}\alpha_{i}y_{i}x_{i})^T}\sum_{i=1}^{m}\alpha_{j}y_{j}x_{j}=\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j} 21∥w∥2=21wTw=21(i=1∑mαiyixi)Ti=1∑mαjyjxj=21i,j=1∑mαiαjyiyjxiTxj

第二项:
∑ i = 1 m α i y i w T x i = ∑ i = 1 m α i y i ( ∑ j = 1 m α j y j x i ) T x i = ∑ i = 1 m α i y i ( ∑ j = 1 m α j y j x j T ) x i = ∑ i , j = 1 m α i α j y i y j x j T x i \begin{align*}\sum_{i=1}^{m}\alpha_{i}y_{i}w^Tx_{i}=\\ \sum_{i=1}^{m}\alpha_{i}y_{i}(\sum_{j=1}^{m}\alpha_{j}y_{j}x_{i})^Tx_{i}=\sum_{i=1}^{m}\alpha_{i}y_{i}(\sum_{j=1}^{m}\alpha_{j}y_{j}x_{j}^T)x_{i}\\=\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{j}^Tx_{i}\end{align*} i=1∑mαiyiwTxi=i=1∑mαiyi(j=1∑mαjyjxi)Txi=i=1∑mαiyi(j=1∑mαjyjxjT)xi=i,j=1∑mαiαjyiyjxjTxi

第三项:
∑ i = 1 m α i y i b = b ∑ i = 1 m α i y i = 0 \sum_{i=1}^{m}\alpha_{i}y_{i}b=b\sum_{i=1}^{m}\alpha_{i}y_{i}=0 i=1∑mαiyib=bi=1∑mαiyi=0

第四项:
∑ i = 1 m α i ⋅ 1 = ∑ i = 1 m α i \sum_{i=1}^{m}\alpha_{i}\cdot 1=\sum_{i=1}^{m}\alpha_{i} i=1∑mαi⋅1=i=1∑mαi

将上述四项叠加后,得到:
L ( w , b , α ) = ∑ i = 1 m α i − 1 2 ∑ i , j = 1 m α i α j y i y j x i T x j L(w,b,\alpha)=\sum_{i=1}^{m}\alpha_{i}-\frac{1}{2}\sum_{i,j=1}^{m}\alpha_{i}\alpha_{j}y_{i}y_{j}x_{i}^Tx_{j} L(w,b,α)=i=1∑mαi−21i,j=1∑mαiαjyiyjxiTxj

【3】总结

对支持向量机算法的拉格朗日函数按照参数求导后,获得了新的表达式。

相关推荐
梦里寻码6 分钟前
我用 NestJS + Vue3 写了一套完整的研发管理系统(58 表 / 229 API / 130 项断言,全开源
前端·后端·算法
狒狒AI11 分钟前
手绘白板动画的生产线拆解:AI 出图、笔迹对齐、镜头渲染七道工序(附 21 个开源脚本)
人工智能·aigc
用户27639657651015 分钟前
上手 GitHub 官方 Spec Kit:AI 编码别再裸奔,先写 spec 再出码,SDD规约开发
人工智能
Lucas_coding16 分钟前
【Agent】Agent 知识地图:核心概念、工程方法与产品生态
人工智能
方方洛16 分钟前
ray教程-28-附录G-CICD与Slurm与云上调度
人工智能·分布式·机器学习
猿人谷30 分钟前
Surrogate Model:让进化算法学会“预测”,为什么它正在成为智能优化的重要技术?
后端·算法·架构
疯华整猫32 分钟前
混淆起初根本不是为了防破解:我用 Trae 把 Android 混淆这二十来年重跑了一遍
android·人工智能·计算机视觉
Kari1135 分钟前
企业大模型RAG知识库从0到1搭建指南:腾讯云ADP+JOTO实战
人工智能·云计算·腾讯云
深蓝AI35 分钟前
GPT-6.1 Terra 在 Bedrock 全面可用:便宜一半快三倍,日常任务选型要重算
人工智能·程序员
Sakura_j_h_41 分钟前
从零写一个 MCP stdio Server:用 Python 校验博客文章格式
开发语言·python·自动化·ai工具·mcp·json-rpc