Machine Learning
  • Introduction
  • 机器学习
    • 前言
      • 符号表
    • 监督式学习
      • 感知机
        • 感知机模型
        • 感知机学习算法
        • 算法python实现
      • Logistic回归
        • Logistic分布
        • Logistic回归模型
        • 算法python实现
      • 线性回归
        • 线性回归模型
        • 算法python实现
      • K近邻法
        • k近邻模型
        • kd树方法
        • kd树python实现
        • knn实例
      • 朴素贝叶斯法
        • 模型和原理
        • 参数估计
        • 算法和实现
      • 决策树
        • 模型与学习
        • 特征选择
        • 生成算法和剪枝
        • python实现
      • 支持向量机
    • 神经网络
      • 神经元模型和感知机
      • 神经网络
      • 神经网络的矩阵表达
      • 反向传播算法
        • 算法证明
        • 算法代码
        • 基于矩阵的计算
      • 改进神经网络的学习方法
        • 交叉熵代价函数
        • softmax
        • regularization
        • 权重初始化
      • 卷积神经网络
        • 基本介绍
    • 数学基础
      • 线性代数
        • 特征值和特征向量
      • 概率统计
        • 随机变量的特征
        • 样本统计量
        • 先验后验概率
      • 微积分
        • 向量内积
        • 方向导数和梯度
        • 梯度下降法
      • 信息论
        • 熵
        • 相对熵和交叉熵
        • 条件熵
        • 互信息
Powered by GitBook
On this page
  • 1. 学习算法的原始形式
  • 1.1 随机梯度下降算法:
  • 1.2 直观的解释
  • 1.3 算法的收敛性
  • 2.学习算法的对偶形式
  • 2.1 算法的对偶形式
  1. 机器学习
  2. 监督式学习
  3. 感知机

感知机学习算法

Previous感知机模型Next算法python实现

Last updated 7 years ago

感知机学习问题转化为求解损失函数的最优化问题,最优化的方法就是随机梯度下降法。

1. 学习算法的原始形式

给定一个训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中,x(i)∈X=Rnx^{(i)}\in X= R^nx(i)∈X=Rn,y(i)∈Y={+1,−1}y^{(i)}\in Y=\lbrace+1,-1\rbracey(i)∈Y={+1,−1},i=1,2,...,mi=1,2,...,mi=1,2,...,m,求参数www,bbb,使得其为以下损失函数极小化的解:

min⁡w,bL(w,b)=−∑x(i)∈My(i)(w⋅x(i)+b)\min_{w,b}L(w,b)=-\displaystyle\sum_{x^{(i)}\in M}y^{(i)}(w\cdot x^{(i)}+b)w,bmin​L(w,b)=−x(i)∈M∑​y(i)(w⋅x(i)+b)

其中MMM为误分类点的集合。

假设误分类点集合MMM是固定的,那么损失函数L(w,b)L(w,b)L(w,b)的梯度由

∇wL(w,b)=−∑x(i)∈My(i)x(i)\nabla_w L(w,b)=-\displaystyle\sum_{x^{(i)}\in M}y^{(i)} x^{(i)}∇w​L(w,b)=−x(i)∈M∑​y(i)x(i)
∇bL(w,b)=−∑x(i)∈My(i)\nabla_b L(w,b)=-\displaystyle\sum_{x^{(i)}\in M}y^{(i)}∇b​L(w,b)=−x(i)∈M∑​y(i)

给出。

1.1 随机梯度下降算法:

  1. 转至步骤(2),直至训练集里面的每个点都不是误分类点,这个过程中训练集中的点可能会被重复的选中并计算。

1.2 直观的解释

1.3 算法的收敛性

可以证明,对于线性可分的数据集,感知机学习算法经过有限次迭代可以得到一个将训练数据集完全正确划分的分离超平面及感知机模型。

2.学习算法的对偶形式

2.1 算法的对偶形式

  1. 转至步骤(2),直到没有误分类点为止。

这样的矩阵称为Gram矩阵(Gram matrix):

参考:林轩田,机器学习基石

输入:训练数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中,x(i)∈X=Rnx^{(i)}\in X= R^nx(i)∈X=Rn,y(i)∈Y={+1,−1}y^{(i)}\in Y=\lbrace+1,-1\rbracey(i)∈Y={+1,−1},i=1,2,...,mi=1,2,...,mi=1,2,...,m,学习率为η(0<η⩽1)\eta(0<\eta\leqslant1)η(0<η⩽1)

输出:w,bw,bw,b:感知机模型f(x)=sign(w⋅x+b)f(x)=sign(w\cdot x+b)f(x)=sign(w⋅x+b)

选取初始值w0,b0w_0,b_0w0​,b0​

在训练集中选取数据(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i))

如果y(i)(w⋅x(i)+b)⩽0y^{(i)}(w\cdot x^{(i)}+b)\leqslant0y(i)(w⋅x(i)+b)⩽0,则w←w+ηy(i)x(i)w \gets w+\eta y^{(i)} x^{(i)}w←w+ηy(i)x(i),b←b+ηy(i)b \gets b+\eta y^{(i)}b←b+ηy(i)

当出现误分类点时,则调整w,bw,bw,b,更正超平面的方向,使其稍微转向正确的方向。

对偶形式的基本想法是,将www和bbb表示为实例向量x(i)x^{(i)}x(i)和标记y(i)y^{(i)}y(i)的线性组合的形式,通过求解其系数而求得www和bbb。

从上面的算法中可假设初始值w0,b0w_0,b_0w0​,b0​均为0。对某个误分类点(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i))经过w←w+ηy(i)x(i)w \gets w+\eta y^{(i)} x^{(i)}w←w+ηy(i)x(i)和b←b+ηy(i)b \gets b+\eta y^{(i)}b←b+ηy(i)迭代修改,假设修改了kkk次后,w,bw,bw,b 关于该误分类点的最后的总增量为αiy(i)x(i)\alpha_i y^{(i)}x^{(i)}αi​y(i)x(i)和αiy(i)\alpha_iy^{(i)}αi​y(i),这里αi=kiη\alpha_i=k_i\etaαi​=ki​η。对于训练集中的每一个点都有αi\alpha_iαi​,所有的训练数据点的分量构成向量α=(α1,α2,...,αm)T\alpha =(\alpha_1,\alpha_2,...,\alpha_m)^Tα=(α1​,α2​,...,αm​)T,这样最后得到的w,bw,bw,b可以分别表示为(有的αi\alpha_iαi​可能为0):

w=∑i=1mαiy(i)x(i)=∑i=1mkiηy(i)x(i)w = \displaystyle\sum_{i=1}^m\alpha_iy^{(i)}x^{(i)}=\displaystyle\sum_{i=1}^mk_i\eta y^{(i)}x^{(i)}w=i=1∑m​αi​y(i)x(i)=i=1∑m​ki​ηy(i)x(i)
b=∑i=1mαiy(i)=∑i=1mkiηy(i)b = \displaystyle\sum_{i=1}^m\alpha_iy^{(i)} = \displaystyle\sum_{i=1}^mk_i\eta y^{(i)}b=i=1∑m​αi​y(i)=i=1∑m​ki​ηy(i)

输入:线性可分的数据集T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))}T=\{(x^{(1)},y^{(1)}),(x^{(2)},y^{(2)}),...,(x^{(m)},y^{(m)})\}T={(x(1),y(1)),(x(2),y(2)),...,(x(m),y(m))},其中x(i)∈X=Rnx^{(i)}\in X= R^nx(i)∈X=Rn,y(i)∈Y={+1,−1}y^{(i)}\in Y=\lbrace+1,-1\rbracey(i)∈Y={+1,−1},i=1,2,...,mi=1,2,...,mi=1,2,...,m,学习率η(0<η⩽1)\eta(0<\eta\leqslant1)η(0<η⩽1)

输出:α,b\alpha,bα,b;感知机模型f(x)=sign(∑j=1mαjy(j)x(j)⋅x+b)f(x)=sign(\displaystyle\sum_{j=1}^m\alpha_jy^{(j)}x^{(j)}\cdot x+b)f(x)=sign(j=1∑m​αj​y(j)x(j)⋅x+b),其中α=(α1,α2,...αm)T\alpha=(\alpha_1,\alpha_2,...\alpha_m)^Tα=(α1​,α2​,...αm​)T

选取初始值α=(0,0,...,0),b=0\alpha =(0,0,...,0), b=0α=(0,0,...,0),b=0

在训练集中选取数据(x(i),y(i))(x^{(i)},y^{(i)})(x(i),y(i))

如果y(i)(∑j=1mαjy(j)x(j)⋅x(i)+b)⩽0y^{(i)}(\displaystyle\sum_{j=1}^m\alpha_jy^{(j)}x^{(j)}\cdot x^{(i)}+b)\leqslant0y(i)(j=1∑m​αj​y(j)x(j)⋅x(i)+b)⩽0,则αi←αi+η\alpha_i \gets \alpha_i+\etaαi​←αi​+η,b←b+ηy(i)b \gets b+\eta y^{(i)}b←b+ηy(i),也就是每次只更新向量α\alphaα的第iii个分量

观察可以看到步骤3中每次更新的x(j)⋅x(i)x^{(j)}\cdot x^{(i)}x(j)⋅x(i)可以事先计算好并以矩阵的形式存储,那么就不需要每次都计算,

G=[x(i)⋅x(j)]m×mG=[x^{(i)}\cdot x^{(j)}]_{m\times m}G=[x(i)⋅x(j)]m×m​
G=[x(1)⋅x(1)x(1)⋅x(2)x(1)⋅x(3)...x(1)⋅x(m)x(2)⋅x(1)x(2)⋅x(2)x(2)⋅x(3)...x(2)⋅x(m)x(3)⋅x(1)x(3)⋅x(2)x(3)⋅x(3)...x(3)⋅x(m)...x(m)⋅x(1)x(m)⋅x(2)x(m)⋅x(3)...x(m)⋅x(m)]G= \begin{bmatrix} x^{(1)}\cdot x^{(1)} & x^{(1)}\cdot x^{(2)} & x^{(1)}\cdot x^{(3)} & ... & x^{(1)}\cdot x^{(m)}\\ x^{(2)}\cdot x^{(1)} & x^{(2)}\cdot x^{(2)} & x^{(2)}\cdot x^{(3)} & ... & x^{(2)}\cdot x^{(m)} \\ x^{(3)}\cdot x^{(1)} & x^{(3)}\cdot x^{(2)} & x^{(3)}\cdot x^{(3)} & ... & x^{(3)}\cdot x^{(m)} \\ ... \\ x^{(m)}\cdot x^{(1)} & x^{(m)}\cdot x^{(2)} & x^{(m)}\cdot x^{(3)} & ... & x^{(m)}\cdot x^{(m)} \end{bmatrix}G=​x(1)⋅x(1)x(2)⋅x(1)x(3)⋅x(1)...x(m)⋅x(1)​x(1)⋅x(2)x(2)⋅x(2)x(3)⋅x(2)x(m)⋅x(2)​x(1)⋅x(3)x(2)⋅x(3)x(3)⋅x(3)x(m)⋅x(3)​............​x(1)⋅x(m)x(2)⋅x(m)x(3)⋅x(m)x(m)⋅x(m)​​

则关于∑j=1mαjy(j)x(j)⋅x(i)\displaystyle\sum_{j=1}^m\alpha_jy^{(j)}x^{(j)}\cdot x^{(i)}j=1∑m​αj​y(j)x(j)⋅x(i)的计算,∑j=1mαjy(j)x(j)⋅x(i)=∑j=1mαjy(j)G[i,j]=∑α∘y∘G[i]\displaystyle\sum_{j=1}^m\alpha_jy^{(j)}x^{(j)}\cdot x^{(i)} = \displaystyle\sum_{j=1}^m\alpha_jy^{(j)}G[i,j]= \sum \alpha \circ y \circ G[i]j=1∑m​αj​y(j)x(j)⋅x(i)=j=1∑m​αj​y(j)G[i,j]=∑α∘y∘G[i],即三个向量中每个元素相乘再做和运算。