主要内容:
- 机器学习形式
- 评估机器学习模型的规范流程
- 为深度学习准备数据
- 特征工程
- 解决过拟合
- 处理机器学习问题的通过流程
机器学习核心难题:过拟合
4.1 机器学习的四个分支
- 监督学习:分类、回归、序列生成(sequence generation)、语法树预测(syntax tree prediction)、目标预测(object detection)、图像分割(image segmentation)
- 无监督学习:降维(dimensionality reduction)、聚类(clustering)
- 自监督学习:自编码器(autoencoder)
- 强化学习:选择使奖励最大化的行动
相关术语:
样本(sample)或输入(input)
预测(predict)或输出(output)
目标(target)
预测误差(prediction error)
类别(class)
标签(label)
真值(ground-truth)或标注(annotation)
二分类(binary classification)
多分类(multiclass classification)
多标签分类(multilabel classification)
标量回归(scalar regression)
向量回归(vector regression)
小批量(mini-batch)或批量(batch):通常是2的幂次。8~128
4.2 评估机器学习模型
机器学习目的:得到好的泛化(generalize)模型
4.2.1 训练集、验证集和测试集
验证模型时,有可能会发生消息泄露(information leak)
评估方法:
- 简单的留出验证(hold-out validation)
- K折验证(K-fold validation)
- 带打乱数据的重复K折验证(iterated K-fold validation with shuffling)
4.2.2 评估模型的注意事项
- 数据代表性(data representativeness):随机打乱数据
- 时间箭头(the arrow of time):预测与时间相关,不能随机打乱;且确保测试集数据晚于训练集数据
- 数据冗余(redundancy in your data):确保训练集和数据集没有交集
4.3 数据预处理、特征工程和特征学习
4.3.1 神经网络的数据预处理
预处理目的:使原始数据更适合于神经网络处理,向量化、标准化、处理缺失值和特征处理
- 向量化:输入和预测值必须是浮点数张量。数据向量化(data vectorization)
- 值标准化:取值较小,同质化(homogeneous)平均值为0,标准差为1。 x-=x.mean(axis=0) x/=x.std(axis=0)
- 处理缺失值:缺失值设为0,让网络学到,0意味着缺失值。当测试集有缺失值,而训练集没有时,要手动给训练集加缺失值。
4.3.2 特征工程(feature engineering)
特征工程:将数据输入模型前,利用人对数据的认识,先对数据进行处理。
本质:更简单的方式表述问题,是问题变得简单。
例:钟表识别
良好的特征可以用较少的资源解决问题。
4.4 过拟合与欠拟合
优化(optimization)
泛化(generalization)
4.4.1 减小网络大小
4.4.2 添加权重正则化
奥卡姆剃刀(Occam/s razor)
成本(cost)
L1正则化:系数绝对值
L2正则化:系数平方
惩罚只在训练时有,所以测试误差会小很多。
4.4.3 添加dropout正则化
训练过程中随机把改层输出特征舍弃
dropout比率:通常0.2~0.5
测试时没有单元舍弃,层输出需要按dropout比率缩小。
防止过拟合:
- 更多数据
- 减小网络容量
- 添加正则化
- 添加dropout
4.5 机器学习的通用工作流程
4.5.1 定义问题,收集数据集
假设:
- 输出可由输入进行预测
- 数据包含足够信息,能够学习输入和输出的关系
非平稳问题(nonstationary problem):如随季节变化问题
4.5.2 选择衡量成功的指标
平衡分类问题:精度和接受者操作特征曲线下面积(area under the receiver operating characteristic curve,ROC AUC)
非平衡分类问题:准确率和召回率
排序和多标签分类:平均准确率均值(mean average precision)
4.5.3 选择评估方法
- 简单的留出验证(hold-out validation):数据量大
- K折验证(K-fold validation):数据量小,无法保证准确性
- 带打乱数据的重复K折验证(iterated K-fold validation with shuffling):数据量小,准确性要求高
4.5.4 准备数据
张量
较小值,[-1,1],[0,1]
标准化
缺失值
特征工程
4.5.5 开发比基准好的模型
统计功效(statistical power)
纯随机基准(dumb baseline)
- 最后一层的激活
- 损失函数
- 优化配置
ROC AUC不可直接优化,用交叉熵替代。两者成逆相关。
问题类型 | 最后一层激活函数 | 损失函数 |
---|---|---|
二分类 | sigmoid | binary_rossentropy |
多分类、单标签 | softmax | catrgorical_crossentropy |
多分类、多标签 | sigmoid | binary_crossentropy |
回归 | 无 | mse |
回归,0~1取值 | sigmoid | mse或binary_crossentropy |
4.5.6 扩大模型规模:开发过拟合的模型
使模型过拟合:
- 添加更多层
- 让每一层变得更大
- 训练更多轮次
4.5.7 模型正则化与调节超参数
- 添加dropout
- 尝试不同的架构:增加或减少层数
- 添加L1和L2正则化
- 尝试不同的超参数
- 做特征工程