IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 机器学习理论学习:感知机 -> 正文阅读

[人工智能]机器学习理论学习:感知机


感知机 (Perceptron)是二分类的线性分类模型,其输入为实例的特征向量,输出为实例的类别,取+1和-1。感知机对应于输入空间(特征空间)中将实例划为正负两类的分离超平面,属于判别模型。感知机预测是用学习得到的感知机模型对新的输入实例进行分类,是神经网络与支持向量机的基础。强烈推荐以下参考链接,讲的非常详细。

参考连接:

机器学习——感知机

一、感知机模型

定义:输入x,对应于输入空间上的特征点,输出y={+1,-1}表示实例的类别,输入到输出的函数如下:
f ( x ) = s i g n ( w ? x + b ) f(x)=sign(w*x+b) f(x)=sign(w?x+b)
称为感知机。w、b为感知机的权重。

感知机为一种线性分类模型,属于判别模型。线性方程w*x+b=0对应于特征空间的一个超平面S,这个超平面将特征空间划分为两个部分,分别为正负两类。S也称作分离超平面,如下图所示:

在这里插入图片描述

二、感知机的学习策略

假设训练数据线性可分,感知机的学习目标是求得一个可以将正负样本完全分开的分离超平面,即确定w,b,需定义一个损失函数并将损失函数极小化。

感知机选择误分类点到分离超平面S的总距离作为损失函数。输入空间 R n R^{n} Rn中任意一点 x o x_{o} xo?到超平面的距离:
1 ∣ ∣ w ∣ ∣ ∣ w ? x 0 + b ∣ \frac{1}{||w||}|w*x_{0}+b| w1?w?x0?+b
其中 ∣ ∣ w ∣ ∣ ||w|| w为w的L2范数。

【补充】

1、点到直线的距离

设直线方程为 Ax+By+C=0 ,其上一点为 ( x 0 , y 0 ) (x_{0},y_{0}) (x0?,y0?),则距离为
d = A ? x 0 + B ? y 0 + C A 2 + B 2 d=\frac{A*x_{0}+B*y_{0}+C}{\sqrt{A^{2}+B^{2}}} d=A2+B2 ?A?x0?+B?y0?+C?
2、样本到超平面距离

假设超平面是 h=w?x+b,其中 w=(w0,w1,w2…wn), x=(x0,x1,x2…xn),样本点 x′到超平面的距离:
d = w ? x ′ + b ∣ ∣ d ∣ ∣ d=\frac{w*x^{'}+b}{||d||} d=dw?x+b?

另外,对于误分类分类数据 ( x i , y i ) (x_{i},y_{i}) (xi?,yi?)来说,当 w ? x i + b > 0 w*x_{i}+b>0 w?xi?+b>0时, y i = ? 1 y_{i}=-1 yi?=?1;而当 w ? x i + b < 0 w*x_{i}+b<0 w?xi?+b<0时, y i = + 1 y_{i}=+1 yi?=+1。所以,误分类到S的距离为:
? 1 ∣ ∣ w ∣ ∣ y i ( w ? x i + b ) -\frac{1}{||w||}y_{i}(w*x_{i}+b) ?w1?yi?(w?xi?+b)
不考虑 1 ∣ ∣ w ∣ ∣ \frac{1}{||w||} w1?,感知机的损失函数定义为:
L ( w , b ) = ? ∑ y i ( w ? x i + b ) L(w,b)=-\sum y_{i}(w*x_{i}+b) L(w,b)=?yi?(w?xi?+b)

三、感知机学习算法

3.1、感知机算法的原始形式

对于给定数据集 T = ( x 1 , y 1 ) , . . . , ( x N , y N ) T={(x_{1},y_{1}),...,(x_{N},y_{N})} T=(x1?,y1?),...,(xN?,yN?)求参数w,b使得损失函数最小化:
m i n L ( w , b ) = ? ∑ y i ( w ? x i + b ) minL(w,b)=-\sum y_{i}(w*x_{i}+b) minL(w,b)=?yi?(w?xi?+b)
因为我们需要不断学习 w,b,因此我们采取随机梯度下降法不断优化目标函数,在这里,随机梯度下降过程中,每一次仅用一个误分类点样本来使其梯度下降。

首先,我们求解梯度,分别对 w,bw,b 求偏导:
? w L ( w , b ) = ? ? w L ( w , b ) = ? ∑ y i x i ? b L ( w , b ) = ? ? b L ( w , b ) = ? ∑ y i ?wL(w,b)=\frac{?}{?w}L(w,b)=?∑yixi\\ ?bL(w,b)=\frac{?}{?b}L(w,b)=?∑yi ?wL(w,b)=?w??L(w,b)=?yixi?bL(w,b)=?b??L(w,b)=?yi
然后,随机选取一个误分类点对 w,bw,b 进行更新: (同步更新)
w ← w + η y i x i b ← b + η y i w←w+ηyixi\\ b←b+ηyi ww+ηyixibb+ηyi

其中,η为学习率,通过这样迭代使损失函数 L(w,b)不断减小,直至最小化。

算法步骤:

输入: T = ( x 1 , y 1 ) , . . . , ( x N , y N ) T={(x_{1},y_{1}),...,(x_{N},y_{N})} T=(x1?,y1?),...,(xN?,yN?),学习率η(0<η<=1)

输出:w,b;感知机模型 f ( x ) = s i g n ( w ? x + b ) f(x)=sign(w*x+b) f(x)=sign(w?x+b)

  1. 选取初始值 w 0 , b 0 w_{0},b_{0} w0?,b0?
  2. 选取数据 ( x i , y i ) (x_{i},y_{i}) (xi?,yi?)
  3. 如果 y i ( w ? x i + b ) < = 0 y_{i}(w*x_{i}+b)<=0 yi?(w?xi?+b)<=0

w ← w + η y i x i b ← b + η y i w←w+ηyixi\\ b←b+ηyi ww+ηyixibb+ηyi

  1. 转至(2),直至训练集中没有误分类点

根据算法可以看出,感知机主要是利用误分类点来进行学习的,通过调整w,b的值,使分离超平面向误分类点移动,减少该分离点到平面的距离,直到超平面越过该点使其被正确分类。

3.2、感知机算法的对偶形式

我们知道一般形式的权重更新:
w ← w + η y i x i b ← b + η y i w←w+ηyixi\\ b←b+ηyi ww+ηyixibb+ηyi
但是经历多次迭代,我们需要多次更新w、b权重,这样计算量比较大。有没有不用这么多次就就计算好权重的方法呢?有,那就是感知机算法的对偶形式。具体怎么引出的能?我们知道经过n次修改过后,参数变化如下公式:
w = ∑ i a i y i x i b = ∑ i a i y i w=\sum_{i} a_{i}y_{i}x_{i} \\ b=\sum_{i} a_{i}y_{i} w=i?ai?yi?xi?b=i?ai?yi?
其中 a i a_{i} ai?为误分类点 ( x i , y i ) (x_{i},y_{i}) (xi?,yi?)需要更新的次数

这样我们就从学习w,b变成学习误分类次数 a i a_{i} ai?,并且在对偶形式中引入了Gram 矩阵来存储内积,可以提高运算速度, 而反观原始形式,每次参数改变,所有的矩阵计算全部需要计算,导致计算量比对偶形式要大很多, 这就是对偶形式的高效之处。这里Gram矩阵相当于 ∑ i y i x i \sum_{i}y_{i}x_{i} i?yi?xi?。Gram 矩阵定义如下:
G = [ x 1 x 1 . . . x 1 x N x 2 x 1 . . . x 2 x N . . . . . . . . . x N x 1 . . . x N x N ] G=\left[ \begin{matrix} x_{1}x_{1} & ... & x_{1}x_{N}\\ x_{2}x_{1} & ... & x_{2}x_{N}\\ ... & ... & ...\\ x_{N}x_{1} & ... & x_{N}x_{N} \end{matrix} \right] G=?????x1?x1?x2?x1?...xN?x1??............?x1?xN?x2?xN?...xN?xN???????
算法步骤:

输入: T = ( x 1 , y 1 ) , . . . , ( x N , y N ) T={(x_{1},y_{1}),...,(x_{N},y_{N})} T=(x1?,y1?),...,(xN?,yN?),学习率η(0<η<=1)

输出:a,b;感知机模型 f ( x ) = s i g n ( ∑ j a j y i x j ? x i + b ) f(x)=sign(\sum_{j}a_{j}y_{i}x_{j}*x_{i}+b) f(x)=sign(j?aj?yi?xj??xi?+b)

  1. 赋初值a0,b0 。
  2. 选取数据点(xi,yi)。
  3. 判断该数据点是否为当前模型的误分类点,即判断若 y i ( ∑ j a j y j x j ? x i + b ) < = 0 y_{i}(\sum_{j}a_{j}y_{j}x_{j}*x_{i}+b)<=0 yi?(j?aj?yj?xj??xi?+b)<=0则更新

a i = a i + η b = b + η y i a_{i}=a_{i}+η \\ b=b+ηy_{i} ai?=ai?+ηb=b+ηyi?

  1. 转到(2),直到训练集中没有误分类点

为了减少计算量,我们可以预先计算式中的内积,得到Gram矩阵。

参考连接:

机器学习入门之《统计学习方法》笔记整理——感知机

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-16 18:49:57  更:2021-11-16 18:51:24 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 6:42:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码