手推SVM(一)-数学推导

本文详细介绍了支持向量机(SVM)的基本思想和数学推导过程,包括最大间隔假设、KKT条件以及如何通过拉格朗日乘子法寻找最优解。通过对SVM的逐步深入理解,阐述了模型的决策边界和鲁棒性,并解释了支持向量在模型中的重要性。
  1. SVM的想法
  2. SVM中在数学上目标
    2.1 判定条件
    2.2 最大间隔假设
  3. SVM的推导
    3.1 第一种境界
    3.2 第二种境界
    3.3 第三种境界-kkt条件

SVM的推导过程和他的地位一样重要,虽然很久以前就已经接触过SVM了,但总感觉理解不是很深,接着听课的热度,顺便写篇文章让自己理解更深刻一点,本文假设你只会简单的向量乘法,推导出SVM。

1.SVM的想法

监督学习,作为一个二分类任务,在平面上表示就是希望有这么一条分类边界,能把正负样本分开,每种分类器画的分类边界都不一样,到底哪个最好,只能看问题,看数据,看实际的应用场景。
这里写图片描述
上图中,有三条决策边界,而SVM的关键假设是 :找到一条直线到样本点两边的距离最大,也就是margin最大。这样的好处就是模型具有更好的鲁棒性。

什么是鲁棒性呢?
通俗理解来说就是更能容忍误差,比如下图中的红色xx,从左到右是点到直线的距离越来越远的,如果是最左边的一条线,假设有一个点和红色叉叉比较接近,但刚好在红色叉叉的下方,这时候,模型会判定这条线蓝色小圈圈的,而最右边的那条线则会判定为红色叉叉,所以相比来说,最右边的线比最左边的线具有更好的鲁棒性。
这里写图片描述

上图是点到线的距离,那换成线到点的距离是不是一样的呢?

这里写图片描述
很容易想到我们希望这条街的街宽最大,但是,该怎么定义呢?

用数学表达式表达出来可以有这样的式子,街宽用术语来说就是margin:

OK,这是我们的想法,那我们怎么实现这个想法呢?

2.SVM中在数学上目标

2.1 判定条件

假设中间那条实线是最好的决策边界,做w⃗ 为垂直于中间那条线的向量,新来一个点,与0组成向量表示为u⃗ ,如果u⃗ w⃗ 上的投影大于某一数值C,则判定该点为正样本,用向量表示为:

w⃗ ||w||u⃗ >=C
把C移过来可以写成:
1||w||(w⃗ u⃗ +b)>=0

这里写图片描述

2.2 最大间隔假设

为了让决策边界更好的划分样本,也为了模型具有更好的泛化能力,我们希望模型在训练集中,这条街的宽度尽可能大,同时,因为1||w||是可变的,对整体的公式没有影响,相当于系数,用数学公式表达这个想法就是:

w⃗ X++b>=1
w⃗ X+b<=1
当然这个1不是规定的,也可以是更大的数,但如果是10,我总能够对方向量 w⃗  进行适当的伸缩,让它又变回1,所以为了计算方便,我们把它设成1.这就是SVM的最大间隔假设。

再来回顾一下,我们的总目标就是找到这样参数w⃗ ,b能判断样本是正样本还是负样本,同时在训练集中,要求它的间隔尽可能得大。

  1. SVM的推导

3.1 第一种境界

提个要求很容易,但具体的参数应该怎么求呢?
为了求解方便,我们用一个小技巧,把最大间隔假设合成一个式子:

yi(w⃗ X++b)>=1yi=1,1
其实这里的 yi 相当于一个符号,其中对于边界上的点(街边)要求:
yi(w⃗ X⃗ +b)=1

那这个街宽应该怎么求出来呢?假设我们只会向量的乘法,我们来看一下怎么通过向量的乘法求出街的宽度。

下方为负样本,上方为正样本,在法向量w⃗ 上选取位于街边的正样本,可以得到正,负样本的距离为

 x+x_|x+x_|
,那街的宽度不就是向量 x+x_ 在法向量上的投影吗?
width=(x+
<think>我们参考用户提供的引用,但主要依据用户的核心需求:计算机科学与技术专业大新生如何按时间顺序学习以准备人工智能方向的学业和职业发展。结合之前的回答,我们给出个更详细的时间顺序学习列表,覆盖大到大四。注意:引用[1]提到大可以多尝试、多了解方向,因此在大阶段我们注重基础课程和广泛探索。引用[2]的故事提醒我们,创新和跨学科思维很重要,但我们的学习列表还是以主流路径为主。我们将学习计划按学期划分,每个学期包含课程学习、编程技能、项目实践和拓展学习四个部分。由于用户是大新生,我们从大学期开始规划。注意:以下课程名称是常见的,具体课程安排请以所在学校为准,但核心内容相似。大(第学期):-课程学习:高等数学(微积分)、线性代数初步(部分学校可能在大下)、计算机导论、程序设计基础(通常为C或Python)-编程技能:学习Python基础(如果课程不是Python,则自学Python),掌握基本语法和简单程序编写。-项目实践:用Python完成些小练习,如简单的计算器、小游戏(如猜数字)等。-拓展学习:了解计算机领域的不同方向(包括AI、网络安全、软件工程等),阅读AI科普文章或观看相关纪录片。大(第二学期):-课程学习:高等数学(继续微积分,可能开始多元微积分)、线性代数(重点:矩阵运算)、程序设计进阶(数据结构初步)、大学物理(部分学校要求)-编程技能:深入学习Python,学习数据结构(如链表、栈、队列)并实现,开始使用Git进行版本控制。-项目实践:实现些基本的数据结构,尝试解决些算法问题(如LeetCode简单题),参与学校组织的编程比赛或兴趣小组。-拓展学习:阅读AI入门书籍,如《人工智能:种现代的方法》(前几章),了解AI的基本概念。大二(第学期):-课程学习:离散数学、概率论与数理统计、数据结构与算法、面向对象程序设计(如Java或C++)-编程技能:巩固Python,学习使用Python的科学计算库(如NumPy,Pandas),开始接触机器学习库(如scikit-learn)。-项目实践:尝试完成个小型机器学习项目(如使用scikit-learn实现鸢尾花分类),参加Kaggle入门比赛(如Titanic)。-拓展学习:学习在线课程(如吴恩达的《机器学习》),关注AI领域的最新动态。大二(第二学期):-课程学习:算法设计与分析、操作系统、计算机组成原理、数据库原理-编程技能:学习使用深度学习框架(如TensorFlow或PyTorch),掌握基本的数据处理和可视化。-项目实践:实现些经典机器学习算法(如线性回归、逻辑回归、KNN、决策树),尝试在小型数据集上训练模型。-拓展学习:阅读深度学习入门书籍,如《深度学习入门:基于Python的理论与实现》(斋藤康毅著)。大三(第学期):-课程学习:计算机网络、软件工程、编译原理、人工智能导论(或机器学习导论)-编程技能:深入学习深度学习框架,掌握模型构建、训练和评估的完整流程。-项目实践:参与个完整的AI项目(如图像分类、自然语言处理中的文本分类),尝试在GitHub上开源自己的项目。-拓展学习:阅读学术论文(从经典论文开始,如AlexNet、ResNet),参加学术讲座。大三(第二学期):-课程学习:机器学习(如果学校开设)、模式识别、自然语言处理(或计算机视觉,根据兴趣选择)-编程技能:学习分布式训练、模型优化等高级技巧,掌握云平台(如AWS,GCP,阿里云)的使用。-项目实践:参与更复杂的项目(如目标检测、机器翻译),尝试在Kaggle等比赛中获得较好名次,或者参与科研项目。-拓展学习:准备实习,修改简历,申请AI相关的实习岗位。大四(第学期):-课程学习:专业选修课(如强化学习、推荐系统、大数据技术等)-项目实践:进行毕业设计(选择AI相关课题),继续实习或参与科研项目。-拓展学习:准备求职或研究生申请,复习算法题(针对面试),参加招聘会。大四(第二学期):-毕业设计-求职或深造注意:数学基础非常重要,尤其是线性代数、概率论和微积分,这些课程需要学扎实。另外,引用[1]中提到的“多尝试各个方向”在大阶段尤为重要,所以在大可以广泛涉猎,找到自己感兴趣的子领域(如计算机视觉、自然语言处理、强化学习等)。同时,引用[2]中提到的“细胞自动机”属于跨学科研究,因此在学习过程中也可以关注AI与其他学科的交叉应用(如生物信息学、计算社会科学等),这可能会成为未来的创新点。最后,关于引用标识:我们在回答中参考了引用[1]的建议(大广泛尝试)和引用[2]的故事(创新和跨学科),但具体学习列表是基于主流AI人才培养路径设计的。生成相关问题:</think>以下是为计算机科学与技术专业大新生量身定制的AI方向学习路线图,结合课程规律、知识依赖关系和职业发展需求,按学期分阶段规划: ### **大上学期:夯实基础与探索方向** 1. **核心课程** - 高等数学(重点:极限/导数/积分) → 后续优化算法基础 - 程序设计基础(Python为主) → 掌握`numpy`, `pandas`基础操作 - 计算机导论 → 了解AI发展史及子领域划分[^1] 2. **技能实践** - 完成Python小项目:爬虫/数据分析(如疫情数据可视化) - 参与GitHub开源项目(推荐:`awesome-python`清单) - 尝试Kaggle入门赛(例:Titanic生存预测) 3. **拓展建议** - 选修通识课:认知科学/哲学 → 理解人类智能本质 - 参加AI社团技术沙龙 → 接触CV/NLP等方向案例[^1] --- ### **大下学期:数学深化与算法启蒙** 1. **核心课程** - 线性代数(重点:矩阵运算/特征值) → 神经网络计算基础 - 离散数学(重点:图论/逻辑) → 知识表示基础 - 数据结构 → 掌握树/图结构及搜索算法 2. **技能实践** - 实现经典算法:KNN/决策树(使用`scikit-learn`) - 开发应用:简易推荐系统(基于协同过滤) - 参加ACM校赛 → 提升算法实现能力 3. **理论衔接** - 同步学习:吴恩达《机器学习》(Coursera) - 精读教材:《统计学习方法》第1-4章(李航) --- ### **大二学年:系统构建与专业分化** 1. **课程进阶** - 概率论与数理统计 → 贝叶斯理论/概率图模型基础 - 操作系统/计算机网络 → 分布式训练系统原理 - 数据库原理 → 数据存储与特征工程基础 2. **方向选择实践** ```mermaid graph LR A[兴趣探索] --> B(计算机视觉) A --> C(自然语言处理) A --> D(强化学习) B --> E[OpenCV项目] C --> F[Bert微调实验] D --> G[Gym环境开发] ``` 3. **关键动作** - 加入实验室参与科研项目(如医学影像分割) - 考取专业认证:AWS机器学习专项证书 - 完成中级Kaggle赛(如House Prices) --- ### **大三学年:专精领域与产业接轨** 1. **高阶课程** - 机器学习(必修) → 掌握SVM/集成学习/降维 - 专业选修: - 计算机视觉:多视图几何/目标检测 - NLP:词嵌入/序列建模($$ \text{Attention}(Q,K,V)=\text{softmax}\left(\frac{QK^T}{\sqrt{d_k}}\right)V $$) - 并行计算 → 理解GPU加速原理 2. **产业实践** - 开发端到端项目: - 移动端AI应用(TensorFlow Lite) - Web智能系统(Django+模型API) - 申请AI企业实习(建议岗位:算法工程师助理) --- ### **大四学年:研究深化与职业冲刺** 1. **学术/职业分流** - 科研方向: - 毕业设计选择前沿课题(如扩散模型优化) - 发表顶会论文(从AAAI/ICLR入手) - 就业方向: - 构建技术博客(持续输出项目解读) - 针对性刷题(LeetCode+《百面机器学习》) 2. **持续学习机制** - 跟踪arXiv最新论文(推荐订阅:cs.LG/cs.CV) - 参加国际会议(如NeurIPS线上会议) - 建立领域人脉(GitHub/LinkedIn技术互动) > **关键提示**:大阶段需重视数学推导能力训练(如手推梯度下降公式$$ \theta_{t+1} = \theta_t - \eta \nabla_\theta J(\theta) $$),同时通过通识课广泛接触交叉领域,避免过早局限研究方向[^1]。 ### 相关问题 1. 如何在大阶段有效平衡数学理论学习与编程实践? 2. 缺乏项目经验的大二学生如何获取AI竞赛的入门指导? 3. 计算机视觉与自然语言处理方向的核心能力差异有哪些? 4. 准备AI算法岗需要重点掌握哪些数据结构与算法类型? 5. 非顶尖院校学生如何通过开源社区提升AI竞争力?
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值