李宏毅 SVM (support vector machine)

本文深入探讨SVM(支持向量机)的组成及HingeLoss的原理,对比Sigmoid与SquareLoss,解析CrossEntropy的优势。同时,通过对比逻辑回归与线性SVM的损失函数,阐述KernelTrick在高维空间中的应用,以及如何避免过拟合。

在这里插入图片描述
SVM组成
在这里插入图片描述
Hinge Loss讲解
loss function不可微分,所以换成另一个函数。可以微分。输入x输出正负1。
在这里插入图片描述
g(x)里边有f(x)函数。并且y^乘以f(x)是横轴。纵轴为loss值。理想下越往右loss越小。square loss就是做差求平方,但是用到binary classfity上是不合理的。
在这里插入图片描述
理想的loss函数。sigmoid + square loss函数下边的计算公式。

在这里插入图片描述

sigmoid+square loss横轴非常小的时候,实际上可以很大程度上gradient,但是调整横轴变大的时候,loss变化的却不大,所以努力了没有回报,sigmoid+ cross entropy相反,调整横轴loss变化的大符合实际,努力有回报,train的更快更容易,所以他很愿意把糟糕的值往正了推,所以大多情况下用cross entropy。
解决分类问题交叉熵公式:
在这里插入图片描述
在这里插入图片描述
hinge loss如下图;在0和后边函数之间取最大值。在训练时f(x)太大或者太小,对于hinge loss无影响,hinge loss只要做到f(x)大于1或者小于-1就行。hinge loss是紫色的线段。如图可知紫色线横坐标可知大于1就好再大也没有什么帮助。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200104103458513.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0NDc5NDAz,size_16,color_FFFFFF,t_ 70)
在这里插入图片描述
逻辑回归和线性svm不同之处就是loss function ;逻辑回归loss function是cross entropy 解决分类问题;线性svm就是hinge loss分类问题 如下图所示,它是一个凸函数无论从哪里进行梯度下降都能找到loss最小。

在这里插入图片描述
linear svm可以用gradient descent来更新参数w如下图;
在这里插入图片描述
这个loss函数的形式就是我们常见的svm loss 函数。把之前的loss 函数分解成俩个公式,但是意思是一样的。

在这里插入图片描述
svm分类的时候只考虑支持向量机就是an不等于零的data points,logistic regression所有的data points全考虑进行分类。an就是之前f(x)对hinge loss求导的值(gradient d)一个是零另一个不等于零。
在这里插入图片描述
w写成an与xn的sum之和,xn是data points 也是train set;之后进行一系列运算得到model f(x)等于an与kernel函数的sum。an不等于零的参与运算。kernel 函数就是输入x与所有xn进行内积(Inner product);
在这里插入图片描述
唯一不知道的事an,找到an是loss function最小;loss function 换算如下图,只需要知道kernel的值即x与z的内积。不需要知道输入向量x的样子,这种方法叫kernel trick(内核技巧)。svm也可以用。
在这里插入图片描述
k(x,z)比进行先做特征转换+内积快得多。计算如下;

在这里插入图片描述
多维的x进行kernel操作计算; 在这里插入图片描述
Radial Basis Function Kernel(径向基核函数)
在无穷多维空间中做内积,可能产生过拟合,在train是准确度高,test是不好。计算如下图;

sigmoid kernel
kernel计算K(x,z)就是输入vector x与train set里的每一个vector z进行内积计算;
泰勒展开公式:在这里插入图片描述
输入vector x 对每一个train set vector x 进行内积,如下图计算。下图tanh的操作与神经网络联系起来讲解;trian set的vector z 是支持向量机,an不等于零的data point。
在这里插入图片描述直接设计kernel k(x,z),不用理会x,z的feature长什么样。把x,z带进kernel就会得到一个在高维空间的内积的vector,所以不用理会x,z长什么样。svm进行语音分类举例子;一段声音讯号,无法用一个vector来描述它,长度不同,无法描述。直接定义kernel k(x,z),一段声音讯号x带进去另一段声音讯号z带进去能够得到什么结果定义好,就不用知道x,z的声音信号描述成vector是什么样的。
在这里插入图片描述
获取以上文本PPT请点击这里

### 李宏毅机器学习课程第三次作业指南 #### 作业背景介绍 李宏毅教授在其机器学习课程中设计了一系列实践性很强的家庭作业来帮助学生巩固课堂上学到的知识。这些家庭作业通常涵盖了理论推导、算法实现以及实际数据集上的应用。 #### 第三次作业主要内容概述 第三次作业主要围绕神经网络展开,特别是多层感知器(Multilayer Perceptron, MLP)。该次作业旨在让学生深入了解如何构建并训练深层神经网络模型,在实践中体会不同超参数设置对于最终性能的影响[^4]。 #### 关键知识点回顾 - **梯度下降法及其变体**: 学习率的选择至关重要;过小的学习率会使损失函数收敛速度变得极其缓慢,而过大的学习率可能导致损失值震荡甚至发散。因此,在实验过程中应当绘制loss曲线以便观察优化过程中的变化趋势,并据此调整合适的学习速率策略[^3]。 - **深度影响**: 虽然理论上单隐含层的前馈神经网络可以逼近任意连续映射关系,但在处理诸如语音识别、图像分类等复杂模式识别任务时,更深架构往往能够带来更好的表现效果。这是因为随着层数增加,网络具备更强表达能力去捕捉输入特征间的高阶关联特性。 #### 实验建议与技巧提示 为了顺利完成此次作业,推荐采取如下措施: 1. 使用小型验证集快速迭代测试不同的配置选项; 2. 尝试多种初始化方法对比其对初期收敛行为的作用差异; 3. 对于激活函数的选择也要谨慎考虑,ReLU通常是不错的选择因为它有助于缓解梯度消失问题; 4. 记录每次试验的关键指标如准确率、召回率等用于后续分析比较。 ```python import numpy as np from sklearn.datasets import make_classification from keras.models import Sequential from keras.layers import Dense # 构建简单的MLP模型 model = Sequential() model.add(Dense(32, input_dim=20, activation='relu')) model.add(Dense(16, activation='relu')) model.add(Dense(8, activation='relu')) # 更深层次的例子 model.add(Dense(1, activation='sigmoid')) # 编译模型指定优化器和损失函数 model.compile(optimizer='adam', loss='binary_crossentropy') # 创建虚拟二元分类数据集 X, y = make_classification(n_samples=1000, n_features=20) # 开始训练 history = model.fit(X, y, validation_split=0.2, epochs=50) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值