4.1 三类机器学习
1. 有监督学习:有标签数据的学习(需要得到的学习结果为具体的、可表示的、可描述的)
- 分类问题
- 回归问题
- 分割问题
- 识别问题
2. 无监督学习:没有标签数据的学习(对数据进行整理,归类寻找特征)
- 聚类问题
- 降维问题
3. 强化学习
4.2 机器学习术语
- 样本(输入或数据点 input):训练集中的某一实例
- 预测(输出 output):网络输出的值
- 目标(标签 label):数据的标注
- 损失值(预测误差 loss):预测值与实际值之间的差距
- 批(batch):训练算法时通常以 批数据 为一组输入样本集。批的尺寸一般为2~256
- 轮数:在整个数据集运行一遍算法成为一个Epoch
4.3 评估模型
4.4 数据预处理和特征工程
- 向量化:将原始数据转化为张量形式
- 归一化处理:(1)取较小的值:一般取值在0-1之间(2)相同值域:确保特征都在同一数据范围
- 缺失值处理:用数据中心不可能出现的值来充当缺失值
- 特征工程:提取出数据的特征信息
4.4 过拟合和欠拟合
1. 欠拟合:模型在训练中表现不佳,训练准确率无法提高达到要求。
- 解决办法:
(1)扩充数据集,获取到更多的数据来训练
(2)增加模型的层数或参数、权重数量,来提高模型复杂度。
2. 过拟合:模型在训练数据集上表现优秀,但是在未知数据验证集上的表现不佳
- 解决办法
(1)获取多样、范围更大的数据集(较困难)
(2)缩小网络模型的规模
(3)应用权重正则化:模型的权重过大时,正则化会增加损失值以对网络进行约束
(4)应用dropout层:在网络训练过程中应用dropout层,随机屏蔽一定比例的输出数据,使得模型能够不依赖特定的权重或模型
4.5 机器学习模型基本设计流程
1. 定义问题并创建数据集:确定所解决问题的类型,是分类问题还是回归问题。确定了解决的问题类 型后,需要了解数据中有哪些信息有利于问题的解决,确定好能够成为真实指标的特征(注意,选取过多的相干因素,也可能会使模型难以拟合)。
2. 成功的衡量标准:成功的标准不是简单的准确率。当模型在某类较小比例数据下的实际测试准确率高时,说明模型对于问题的解决很成功。
3. 评估协议:
评估的三种方式:
- 保留验证集
- K折交叉验证
- 迭代K折验证
4. 准备数据:将数据转化为张量格式
5. 模型基线:每个问题都应该有一个基线分数,在设计初始模型时我们应该确保简单模型可以超过这个分数。如果无法超过基线分数,说明输入中可能不包含必要信息。(注:前期不要引入任何正则化条件)
- 根据问题类型选择合适的网络最后一层:回归问题的标量线性层;边界框问题的四值输出;分类问题的sigmoid层或softmax层
- 根据问题类型选择损失函数
- 选择合适的优化算法:大多数实验中,Adam和RMSprop优化算法效果较好
6. 大到过拟合的模型: 当模型能够超过基线分数时,我们就需要尽可能提高模型的数值。一般有如下方法:
- 为网络添加更多的层
- 在现存层中加入更多的权重
- 增加训练次数
在这种情况下,当训练的准确率还在增加但是验证准确率开始停止增加甚至开始下降停止训练时,这就是模型过拟合的地方。此时,我们可以用到前面的正则化技术
7. 应用正则化
- 添加dropout:找到不同层之间的最佳位置,从较小的值 0.2开始尝试
- 尝试不同的架构:改变层数、激活函数、权重等结构
- 添加L1或L2正则化
- 应用不同的学习率
- 在输入数据中添加更多的特征或数据
8. 学习率的选择: 合适的学习率对与模型寻找问题最优解至关重要。在Pytorch中提供了一些调整学习率的技术,由torch.optim.lr_sheduler
包提供
-
StepLR:此调度器有两个主要参数。 第一个是步长,表示训练多少轮改变一次学习率,第二个参数是gamma,他决定学习率改变多少
-
MultiStepLR:它与StepLR的工作方式类似,不过步长不是规律间断的,这里步长以列表的形式给出
-
ExponentialLR:每一轮都要将学习率乘上gamma值
-
ReduceLROnPlateau:这是常用的学习率策略。当选定的度量指标不再变化时,学习率就会改变。通常是降低为原始值的1/2 ~ 1/10