此笔记来源于 Sebastian Raschka 的 Introduction to Deep Learning 系列课程。
首先介绍的是传统的编程范式,假设我们想实现垃圾邮件识别的功能,传统的方法就是由程序员来找出垃圾邮件的规则并对其进行编程,得到一个垃圾邮件识别的程序。
机器学习的方法,可以通过输入邮件以及邮件对应的标签,通过算法自动得到机器学习模型,该模型可以代替传统方法中程序员手动编写规则得到的程序,实现垃圾邮件识别。
单个的训练样本(不包含标签),其实就是一个特征向量(列向量),特征数量为 m
当有 n 个训练样本的时候,常用设计矩阵来表示训练集,这个矩阵是 n 行 m 列的,下标表示的是第几个特征,上标表示的是第几个样本。
在结构化的数据中,常见的形式就是这种,n 行 m + 1 列的矩阵,n 是训练样本的数量,m 是特征数量,最后多了的 1 列是标签列。
在非结构化的数据中,例如图像,就常用多维数组来表示,最常见的表示法是 NCHW(Number、Channel、Height、Weight),分别表示图像的数量、不同颜色(RGB)的通道、高度以及宽度,这就是一个四维数组或四维张量(4D Tensor)。
根据对于数据作出的假设(Assumption)的不同,可以将神经网络分为几类:
1、多层感知器(前馈神经网络、全连接层),一般接收表格数据作为输入,它对于数据是没有假设的(Independence),例如我们把第一列特征与第四列特征交换位置,得到的训练结果应该不变。因为没有假设,所以它的学习能力最强,但是难度也最高。
2、卷积神经网络,它对于数据的假设是相邻像素是相互关联的(Locality),同时这种关系具有平移不变性,例如人脸图片中的眼睛,黑色像素都是相互关联的,且这个眼睛可能在图片的左边或者右边出现,而打乱像素会导致图片没有意义。
3、循环神经网络,它对于数据的假设是输入数据有顺序关系(Sequentiality),常用于文本数据,因为输入一个句子,句子中的单词是有顺序关系的,打乱的话这个句子就没有意义了。