ML 06、感知机
2014-11-03 12:36 ☆Ronny丶 阅读(1446) 评论(1) 编辑 收藏 举报机器学习算法 原理、实现与实践 —— 感知机
感知机(perceptron)是二分类的线性分类模型,输入为特征向量,输出为实例的类别,取值+1和-1。感知机学习旨在求出将训练数据进行线性划分的分离超平面,为此,引入了基于误分类的损失函数,利用梯度下降法对损失函数进行极小化,求得感知机模型。
1. 感知机模型
假设输入空间(特征空间)是,输出空间是。输入表示实例的特征向量,对就于输入空间的点;输出表示实例的类别。由输入空间到输出空间的映射函数
称为感知机。其中,和为感知机的模型参数,叫作权值或权值向量,叫作偏置。表示内积。是符号函数,即
感知机模型的假设空间是定义在特征空间中的所有线性分类模型或线性分类器,即函数集合。
感知机有如下几何解释:线性方程
对应于特征空间中的一个超平面S,其他是超平面的法向量,是超平面的截距。这个超平面将特征空间划分为两个部分。位于两部分的点(特征向量)分别被分为正、负两类。因此,超平面S称为分离超平面(separating hyperplane)。
感知机学习的任务可以描述为:由训练数据集(实例的特征向量及类别)
其中,求得感知机模型,即求得模型参数。感知机预测,通过学习到的感知机模型,对于新的输入实例给出其对应的输出类别。
2. 感知机的学习策略
假设训练数据集是线性可分的,感知机学习的目标就是求得一个能够将训练集正实例点和负实例点完全正确分开的分离超平面。为了找出这样的超平面,即确定感知机的模型模型参数,需要确定一个学习策略,即定义(经验)损失函数并将损失函数极小化。
损失函数的一个自然选择是误分类点的总数。但是,这样的损失函数不是参数的连续可导函数,不易优化。损失函数的另一个选择是误分类点到超平面S的总距离,这是感知机所采用的。为此,首先写出输入空间中任一点到超平面S的距离。
这里,是的范数。
其次,对于误分类的数据来说
成立。所以误分类点到超平面S的距离转化为
这样,假设超平面S的误分类点集合为,那么所有误分类点到超平面S的总距离为
忽略前面的系数,就得到感知机学习的损失函数。
给定训练数据集
其中。感知机学习的损失函数定义为
其中为误分类点的集合。这个损失函数就是感知机学习的经验风险函数。感知机学习的策略就是在假设空间中选择使损失函数最小的模型参数。
3. 感知机学习算法
感知机学习问题转化为求解损失函数最优化问题,最优化的方法是随机梯度下降法。
感知机学习算法是误分类驱动的,具体采用随机梯度下降算法(stochastic gradient descent)。首先,任意选择一个超平面,然后用梯度下降法不断地极小化目标函数。极小化过程中不是一次使中所有误分类点的梯度下降,而是一次随机选择一个误分类点使其梯度下降。
假设误分类点集合是固定的,那么损失函数的梯度由
给出。
随机选择一个误分类点,对进行更新:
式中是步长,在机器学习中又称为学习率。这样通过迭代可以期待损失函数不断减小,直到为0.
这种学习算法直观上有如下解释:当一个实例点被误分类,即位于分离超平面的错误一侧时,则调整的值,使分离超平面向该误分类点的一侧移动,以减少该误分类点与超平面之间的距离,直到超平面越过该误分类点使其被正确分类。
4. 感知机学习算法的收敛性
(Novikoff)定理 设训练数据集为,其中,则
1)存在满足条件的超平面将训练数据集完全正确分开;且存在,对所有的
2)令,则感知机算法在训练数据集上的误分类次数满足不等式
定理表明,误分类的次数是有上界的,经过有限次搜索可以找到将训练数据完全正确分开的分离超平面。但是,感知机学习算法存在许多解,这些解既依赖于初值的选择,也依赖于迭代过程中误分类点的选择顺序。为了得到唯一的超平面,需要对分离超平面增加约束条件。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)