感知机——最基本模型
- 定义:二分类的线性分类模型,输入为实例的特征向量,输出为实例的类别(取1和0),其形式化结构如下图所示:
其中,最下侧的一层代表输入特征;棕色则是代表输出层,将输入数据进行整合后转为输出要求的格式;
- 作用:感知机对应于输入空间中将实例划分为两类的分离超平面。感知机旨在求出该超平面,如下图所示:
其中,w0是一个偏差值,这个条件是必要的,如果没有这个条件,切平面会经过原点。我们需要这个偏差值控制决策平面到原点的距离。
为了求得合适的超平面,这里引入了损失函数的概念,它利用了梯度下降的方法来对函数进行最优化;
通过调整学习率来改变下降的幅度一样的东西。但利用梯度下降算法收敛到正确的权值的前提条件是训练的样本线性可分;
若训练的样本线性不可分,则需要用到Delta学习规则:利用梯度下降来搜索可能的权向量的假设空间,以找到最佳拟合训练样例的权向量,如下图所示:
其中,td代表期望输出,而ot代表实际输出
而要实现梯度下降,就需要计算每个模型关于参数θj的成本函数的梯度,也就是关于参数θj的成本函数的偏导数——>批量梯度下降:
- 算法流程:
- 初始化权重wi为小的随机值;
- 在满足结束条件前,做如下操作:
2.1 初始化△wi为0;
2.2 对于在训练数据集中的每个<x, t>,进行:
2.2.1 输入x到单元中并计算输出o;
2.2.2 对于每个线性单元的权重wi:-△wi←△wi + η \eta η(t-o)xi; - 对于每个线性单元的权重wi: wi← wi + △wi;
多层感知机
就是多了个隐藏层,用于对输入特征进行处理
通过隐层来讲输入特征进行缩放,在此之后再进行输出。
下面是异或门的分类,从图中可以明显看出,这是线性不可分的:
但是其实可以用多层感知机(其实就是隐层)来把问题拆分为小问题,再去解决小问题,如下图所示:
最经典的处理函数就是Sigmoid函数,它可以将变量映射到0,1之间,再通过设置阈值来判断该值对应的输出:
学习算法
反向传播算法
其实就是误差对权重求偏导,如下图所示:
-
对于输出的训练:
-
对于隐层的训练: