1、7-1 7-1 模型评价模型评价7-2 7-2 数据预处理数据预处理7-3 7-3 基础模型的选择基础模型的选择7-4 7-4 模型调试模型调试第七章 数据和模型的处理与调试数据和模型的处理与调试 要成功地使用深度学习技术,仅仅知道存在哪些算法和解释各自的数学理论要成功地使用深度学习技术,仅仅知道存在哪些算法和解释各自的数学理论是不够的。一个优秀的机器学习实践者还需要知道如何针对具体应用挑选一个合是不够的。一个优秀的机器学习实践者还需要知道如何针对具体应用挑选一个合适的算法以及如何评价系统的性能,并根据实验反馈的性能改进机器学习系统。适的算法以及如何评价系统的性能,并根据实验反馈的性能改进机器
2、学习系统。在我们了解了深度学习模型的原理后我们还应该了解如何去科学地评价一在我们了解了深度学习模型的原理后我们还应该了解如何去科学地评价一个模型,是否收集更多的数据、增加或减少模型容量、添加或删除正则化项、改个模型,是否收集更多的数据、增加或减少模型容量、添加或删除正则化项、改进模型的优化、改进模型的近似推断或调试模型的软件实现。进模型的优化、改进模型的近似推断或调试模型的软件实现。学者们提出了对实践设计流程的建议步骤:学者们提出了对实践设计流程的建议步骤:确定使用何种误差度量,并制定该误差度量的目标值。确定使用何种误差度量,并制定该误差度量的目标值。建立工作流程,包括估计合适的性能度量等。建
3、立工作流程,包括估计合适的性能度量等。搭建系统,并确定制约模型性能的因素。搭建系统,并确定制约模型性能的因素。根根据据观观察察反反复复地地进进行行增增量量式式的的改改动动,如如收收集集新新数数据据、调调整整超超参参数数或或改改进进算算法。法。7-1 7-1 模型评价模型评价 为了能够指引我们将来进一步优化模型、衡量模型的性能,需要选定使用为了能够指引我们将来进一步优化模型、衡量模型的性能,需要选定使用何种误差度量,这是构建学习模型时必要的第一步。何种误差度量,这是构建学习模型时必要的第一步。我们知道如果拥有越多的数据,模型的有效容量就会越高。所以必须权衡收我们知道如果拥有越多的数据,模型的有效
4、容量就会越高。所以必须权衡收集更多数据所需要的成本与进一步减少误差的价值。集更多数据所需要的成本与进一步减少误差的价值。如何确定合理的性能期望呢?如何确定合理的性能期望呢?为什么要强调样本均衡呢?为什么要强调样本均衡呢?我们应该如何解决数据不均衡的问题呢。有以下几种方法:我们应该如何解决数据不均衡的问题呢。有以下几种方法:扩充数据集扩充数据集 对数据集进行重采样对数据集进行重采样 人造数据人造数据 改变训练算法改变训练算法 使用其它评价指标使用其它评价指标度量模型的性能度量模型的性能:度量精度(度量精度(Precision)和召回率()和召回率(Recall)。)。例如,我们将前馈网络设计为检
5、测一种疾病,估计一个医疗结果由特征例如,我们将前馈网络设计为检测一种疾病,估计一个医疗结果由特征x x表表示的人患病的概率为示的人患病的概率为 ,每当这个得分超过某个阈值时,我们报告检测每当这个得分超过某个阈值时,我们报告检测结果。通过调整阈值,我们能权衡精度和召回率。在很多情况下,我们希望用一结果。通过调整阈值,我们能权衡精度和召回率。在很多情况下,我们希望用一个数而不是曲线来概括分类器的性能。要做到这一点,我们可以将精度个数而不是曲线来概括分类器的性能。要做到这一点,我们可以将精度p p和召回和召回率率r r转换为转换为F F分数(分数(F-scoreF-score)。7-2 7-2 数据
6、预处理数据预处理 通常情况下,采集到的信号因为具有大量噪声而无法直接使用,需要对信通常情况下,采集到的信号因为具有大量噪声而无法直接使用,需要对信号进行去噪处理。号进行去噪处理。首先,介绍对图像数据的预处理,利用首先,介绍对图像数据的预处理,利用MATLABMATLAB完成完成原始示例图像原始示例图像 为了扩增数据,可以在不影响图像的主要语义情况下为图像增加噪声。此时,为了扩增数据,可以在不影响图像的主要语义情况下为图像增加噪声。此时,我们使用我们使用imnoiseimnoise函数函数增加高斯噪声后图像增加高斯噪声后图像 噪声除了高斯噪声,还有椒盐噪声等噪声除了高斯噪声,还有椒盐噪声等 在程
7、序执行过程中,将陆续显示出增加椒盐噪声后的图在程序执行过程中,将陆续显示出增加椒盐噪声后的图7.37.3,以及经过中值滤,以及经过中值滤波降噪后的图波降噪后的图7.47.4。图图7.3 增加椒盐噪声后的图像增加椒盐噪声后的图像图图7.4 中值滤波后的图像中值滤波后的图像 对序列类数据扩展的建议,即在不影响原始信号语义的情况下增加随机扰对序列类数据扩展的建议,即在不影响原始信号语义的情况下增加随机扰动。首先将原始数据矩阵导入动。首先将原始数据矩阵导入MATLABMATLAB原始矩阵导入原始矩阵导入MATLAB生成生成0.10.1至至0.50.5的随机扰动:的随机扰动:生成与原矩阵尺寸相等的随机扰
8、动矩阵生成与原矩阵尺寸相等的随机扰动矩阵 获得扩展矩阵获得扩展矩阵扰动矩阵与原始矩阵混合形成扩展矩阵扰动矩阵与原始矩阵混合形成扩展矩阵 7-3 7-3 基础模型的选择基础模型的选择 在确定好想要达到的目标,处理好想要训练的数据之后,就可以开始设计模在确定好想要达到的目标,处理好想要训练的数据之后,就可以开始设计模型了。在本节中,我们针对不同情况推荐了使用某种算法作为第一基准方法的原型了。在本节中,我们针对不同情况推荐了使用某种算法作为第一基准方法的原则。则。根据想要处理的数据结构来选择模型。根据想要处理的数据结构来选择模型。1 1网格类的数据网格类的数据 使用卷积网络使用卷积网络2 2输入或者
9、输出是一个非定长序列类数据输入或者输出是一个非定长序列类数据 循环网络循环网络3 3根据外界的反馈来训练模型根据外界的反馈来训练模型 强化学习算法强化学习算法目前常用的激活函数为目前常用的激活函数为ReLUReLU、PReLUPReLU、maxoutmaxout等等maxoutmaxout的原理如图的原理如图:maxoutmaxout示意图示意图它的输出为:它的输出为:maxoutmaxout的拟合能力是非常强的,它可以拟合任意的凸函数。的拟合能力是非常强的,它可以拟合任意的凸函数。7-4 7-4 模型调试模型调试目前所采用的算法往往包含多个自适应部分。目前所采用的算法往往包含多个自适应部分。
10、使用自己编写的反向传播导数的方法使用自己编写的反向传播导数的方法,此时需要验证编写的梯度表达是否正此时需要验证编写的梯度表达是否正确。验证梯度表达可以通过直接计算来验证,在高等数学中导数的定义式如式所确。验证梯度表达可以通过直接计算来验证,在高等数学中导数的定义式如式所示。示。也可以使用中心差分法提高梯度近似的准确性:也可以使用中心差分法提高梯度近似的准确性:每一次中心差分法仅可以计算一个梯度,但是可以反复应用来求出多梯度。每一次中心差分法仅可以计算一个梯度,但是可以反复应用来求出多梯度。在研究完梯度问题后,开始考虑模型学习的问题。在研究完梯度问题后,开始考虑模型学习的问题。神经网络的运行速度
11、真的仅与算法有关吗?显然不是的神经网络的运行速度真的仅与算法有关吗?显然不是的。理解理解GPU和和CPU之间区别之间区别:比较它们如何处理任务比较它们如何处理任务CPUCPU与与GPU原理示意图原理示意图 总的来说,一个成功的深度学习模型不仅依靠一个好的算法,一个耐心的总的来说,一个成功的深度学习模型不仅依靠一个好的算法,一个耐心的调试过程也起到了至关重要的作用。在有的时候,甚至模型调试的时间要比建立调试过程也起到了至关重要的作用。在有的时候,甚至模型调试的时间要比建立算法所花费的时间更多。这需要我们一步一步耐心地调试,这也是一种艺术。算法所花费的时间更多。这需要我们一步一步耐心地调试,这也是一种艺术。