@[TOC](文章目录)
前言
主要学习第四章:多层感知机
一、感知机
1、感知机模型
- 给定输入x,权重w,和偏移b,感知机输出:
感知机其实就是一个二分类问题,输出大于0则为1;否则为0
- 二分类问题和其他模型的区分:
- 感知机输出离散的分类
- 回归模型输出实数
- Softmax回归会输出概率
2. 训练感知机
表示真实标签, 表示预测值,当两者乘积小于0的时候,预测失败,说明此时参数并不准确。需要更新参数,直到所有类都分类正确了。
【这里为什么这么更新】
这个算法等价于使用批量大小为1的梯度下降,并使用如下的损失函数:
即:分类正确的话,max输出为0,梯度是一个常数,就不会更新。
3. 收敛定理
也就是判断感知机什么时候训练结束。
- 数据在半径r内
- 余量分类两边
对于,感知机保证在步后收敛。
4. XOR问题
感知机不能拟合XOR异或函数,它只能产生线性分割面。
5. 总结
感知机是一个二分类模型,它的求解算法等价于使用批量大小为1的梯度下降。
它不能拟合XOR函数,导致了第一次AI寒冬
二、多层感知机
1.学习XOR
先学习蓝色的线,可以得到1、3区为负,2、4区为正。
在学习黄色的线,可以得到1、2区为正,3、4区为负
两两相乘,会发现最后1、4为正,2、3为负
也就从一层感知机,变为多层感知机
输入和输出层是不能改变的,但隐藏层取决于模型。
2. 单隐藏层—单分类
必须是非线性激活函数,否则o仍然是线性的,那还是单层感知机。
3. 激活函数
- Sigmoid
将输入投影到(0,1)
- Tanh
将输入投影到(-1,1)
- ReLU
ReLU:rectified linear unit。跟前两个比起来,不用做指数运算,简单。
4.多类分类
跟Softmax回归比起来,只是多了隐藏层
多隐藏层的话,超参数就有:
- 隐藏层数。
- 每层隐藏层的大小。低层应该更大,高层减小,也就是一个压缩的过程。
5. 总结
- 多层感知机使用隐藏层和激活函数来得到非线性模型
- 常用激活函数
- 使用softmax来处理多分类
- 超参数为隐藏层数,和各个隐藏层大小
三、模型选择
1.训练误差和泛化误差
- 训练误差:模型在训练数据上的误差
- 泛化误差:模型在新数据上的误差
2. 验证数据集和测试数据集
- 训练数据集
- 验证数据集:一个用来评估模型好坏的数据集。
不能和训练数据混在一起!
- 测试数据集:只用一次的数据集!也就是一个新的数据集,比如考试成绩,发生了就无法改变。
3.K-则交叉验证
- 在没有足够多数据时使用
- 算法:
- 将训练数据分割成k块
- for i = 1,...,K
- 使用第i块作为验证数据集,其余的作为训练数据集
- 报告K个验证集误差的平均
四、过拟合和欠拟合
1. 模型容量
- 拟合各种函数的能力
- 低容量的模型难以拟合训练数据
- 高容量的模型可以记住所有的训练数据
泛化误差要降低到接近训练误差
2. 估计模型容量
- 难以在不同种类的算法之间比较:如树模型和神经网络
- 给定一个模型种类,将有两个主要因素:
- 参数的个数
- 参数值的选择范围
3.VC维
- 统计学习理论的一个核心思想
- 对于一个分类模型,VC等于一个最大的数据集的大小,不管如何给丁标号,都存在一个模型来对它进行完美分类。
- 它可以提供为什么一个模型好的理论依据,衡量训练误差和泛化误差之间的间隔
- 但深度学习中很少使用,因为不是很准确且计算困难
4. 线性分类器的VC维
- 2维输入的感知机,VC = 3
也就是说,能够分类任何三个点
- 支持N维输入的感知机的VC维是N+1
- 一些多层感知机的VC维
总结
这个task主要是学习了感知机的原理、代码实现,以及模型的一些有关知识