本人学习单建华教授在人民邮电出版社出版发行的 《卷积神经网络的Python实现》 ,将笔记记录于此。如有不详,敬请谅解,因为此笔记主要为自用。如有侵权,请联系我删除博文。
(PS:单老师书中有很多举例,非常生动形象,甚至起到“一点就通”的效果,如果大家有需要可以学习一下)
第一部分 模型篇
第一章 机器学习简介
一、基本术语及重要概念
1、机器学习的本质是计算机通过数据来拟合隐藏在数据背后的模型。(拟合模型,而非推导模型。所以如果一个问题已经存在确定模型,就不再需要机器学习。)
2、机器学习得到的模型本质上是得到从特征属性x到标签y的映射f:y = f(x,w),其中w是模型参数。
3、预测标签与真实标签进行比较,以评判预测效果,进而评价模型的好坏。评价模型好坏时必须使用新样本(即在训练集中未出现过的样本,叫做测试集),才能真实评价模型的性能,这种模型预测新样本的能力称为泛化能力。
4、在有一定领域知识的前提下,才能知道哪些是有用的相关属性,哪些是无用的无关属性。
5、模型对新样本的泛化性能必须大于随机猜测,才能说明模型进行了有效学习。但即便是有效学习,准确率也不可能达到100%,由于现实世界中的样本无穷无尽,总会有难以掌握的特征取值,故而总会存在误判。
6、计算机应从数据中学习获得判断,而不是通过人类输入给它的程序得到判断。(比如计算机通过冒泡等排序方法,判断出样本的大小顺序,这不叫机器学习。而如果只把数据给计算机让它去学习,这才叫机器学习。)
7、对于不同的机器学习方法,映射 f 的函数形式是不同的。在同一机器学习方法中,映射 f 的函数形式的相同的,不同的只是参数w。
8、如何获得最优参数w,使模型 f 的泛化能力最好?这类似于数学中的求极值问题,只不过在机器学习中更复杂。主要体现在以下三点:
①模型 f 的泛化性能跟训练数据集密切相关,针对不同的训练集,其泛化性能的差别可能很大。因此,建立高质量的训练集是机器学习的重要任务,占整个工作量的60%以上。但这一工作很难由专心算法的研究者们实现,所以幸运的,世界上有许多著名的公开数据集,方便我们去使用。除此之外,不同的学习算法必须在同一个测试集进行比较,才能区分优劣。
②模型 f 的函数形式虽然是统一规范的,但不同的机器学习方法采用不同的函数形式,这将导致学习效果也不同。设计更好的函数形式也是机器学习研究的核心课题。
③模型对训练集有很好的拟合效果,但对测试集拟合效果一般,这是机器学习特有的现象过拟合。任何机器学习算法都有过拟合风险,只不过是强弱问题。(接下来这段话原书写的很好,我就直接引用了)“过拟合表现为只要精心调整参数w或一直训练下去,模型在训练集上的性能就会越来越好,但测试集上的性能则不会,它存在拐点,拐点之后性能会逐渐变差。过拟合的通常解释是:因为模型的学习容量随着参数的精心调整和训练时间的增加而越来越大,训练集的规模却是固定的,导致模型把训练集学习得过分好,其中的一些噪声也学为样本的固有模式,因此泛化到新样本时就容易出错。过拟合是机器学习中一个难以克服的问题,因为其产生的本质原因在理论上还没有解释清楚,一般采用正则化来缓解过拟合。”与过拟合相对的是欠拟合,这一问题很容易克服,只要增大模型容量即可。
9、完整的机器学习需要3个数据集:训练集、验证集和测试集。以多项式数据拟合为例,训练集寻找最优参数w,验证集决定最优曲线方程次数,测试集评估模型的泛化性能。
10、“机器学习一般包含两类参数:超参数和参数。超参数的数目通常不多,在10以内;参数的数目可能很多,如卷积神经网络中有近千万个参数(权重)。曲线拟合中,方程的次数就是超参数,多项式的系数就是参数。这两种参数的调参方式不同,超参数取值一般是人工设定的,参数值是根据参数优化算法自动寻优的。超参数的取值对模型泛化性能有重大的影响,验证集就是用来决定最优超参数取值的。”
11、“当模型的泛化性能不能满足要求时,可以从两个方面提高模型的泛化性能。其一是提高模型的学习容量,把训练误差降低到满意的程度,同时增大正则化程度,降低过拟合风险”,(其中“正则化”是为了缓解曲线震荡,对方程系数即参数w进行约束,使其绝对值尽可能小)“其二是构造更好的数据集,这包括增大样本数量,调整样本以更加全面地覆盖样本分布空间,利用领域知识提取更好的特征”。
12、“模型的输出,如果是回归问题,则直接输出实数。在多分类任务中,输出一般是向量,向量的维数等于类别数,元素值是实数。元素值表示对应类别的得分,得分越大表示该样本与对应的类别越类似,故最大元素值对应的类别就是最终预测的类别。二分类是多分类的特例,只需输出一个实数值,并与0比较,大于0预测为正类,小于0预测为负类。”
二、图像分类
1、图像分类应用广泛,计算机视觉的很多问题(如物体检测、图像分割)的基础都是图像分类。
2、图像是巨大的数值矩阵,矩阵元素表示像素的颜色信息。计算机只能根据数值矩阵去判定图像内容,采用H×W×C表示图像,其中H是图像高度,W是宽度,C是通道数。
3、计算机进行图像分类时不像人类那么容易,主要有以下几点:视角变化、大小变化、形变(尤其对不是刚体的物体)、遮挡、光照条件、背景干扰、类内差异(同类物体之间的外形差异很大,比如椅子)。好的图像分类模型必须能克服上述变化及其组合,同时对类间差异足够敏感。
4、“语义鸿沟是由于计算机获取的图像信息与人类对图像理解的语义信息的不一致性而导致的低层信息和高层信息之间的距离。像素信息不包含任何语义信息,计算机难以从像素中提取语义信息,这是图像分类难度大的内在原因。”
5、给计算机很多的物体图像,采用机器学习方法让计算机自己学习区分每个类别物体图像的视觉表现特征,这就是数据驱动方法也即机器学习方法。
三、MNIST数据集简介
1、MNIST数据集是手写数字集,具体介绍可以看我的这两篇博文:
《《人工智能实践:Tensorflow笔记》听课笔记19_5.1MNIST数据集》
《《人工智能实践:Tensorflow笔记》听课笔记19_5.1MNIST数据集之下载安装流程》
2、其他知名数据库有CIFAR-10、CIFAR-100和ImageNet等,特别是ImageNet,推动了深度学习的发展。
(时隔半年未接触深度学习知识,忘记太多,只能从头来过了,唉,不过总归比刚开始入门那会儿学得快了)