通过浅读几本书籍(《图解深度学习》、《统计学习方法》、《动手学深度学习》),我对机器学习及深度学习有了浅薄的了解及对该领域有了大概的轮廓认知,此文仅作学习记录,不当之处还请斧正,后续再精学的时候也会复盘、更改。本篇以《图解深度学习》为主概述。
对于机器学习的定义:
我对该专业名词的字面意思理解:机器能够(像人一样)实现学习的功能以完成某个目标,
但书中介绍到的广义概念:指从已知的数据中获得规律、并利用规律对未知数据进行预测的方法。
机器学习其实就是一种统计学习方法,需要大量数据进行学习,方式分为监督学习和无监督学习。二者都是需要大量数据训练网络(对这两个概念的深入理解可以看《统计学习方法》第一章节,此处不再赘述)
而深度学习就是是机器学习研究中的一个新的领域,其动机在于建立、模拟人脑进行分析学习的神经网络,它模仿人脑的机制来解释数据。
二者的关联可借鉴此篇科普文章:
《深度学习和机器学习有什么差别?》https://ai.baidu.com/forum/topic/show/492744
一般是指具有多重结构的网络,不过对于网络的层数没有严格定义,有很多种网络生成方法
a.功能强大,在各个领域的基准测试中均打破了原有的性能极限
b.可以轻松获得大量训练数据、多种性能方法提升、GPU(图形处理器、Graphics Processing Unit)、内存等硬件
c.能模仿人脑机制获取知识
d.相比较以往机器学习,能够通过学习大量数据自动确定需要提取的特征信息,甚至能自动获取一些人类无法想象的由颜色、边缘等组合起来的特征信息。
A感知器:是将多个感知器组合得到的多层感知器,然后加入类似人类视觉皮质的结构得到的卷积神经网络(多应用于图像识别领域);是一种有监督学习,根据期望输出训练网络。
B玻尔兹曼机:将多个受限玻尔兹曼机组合一起得到的深度玻尔兹曼机、深度信念网络;是一种无监督学习。
第一阶段(1940-1970):1943年提出形式神经元模型、1958年提出感知器、1969年提出“感知器无法解决线性不可分问题”
第二阶段(1980-1990):1980年提出神经认知机、1982年提出霍普菲尔德模型、1986年提出误差反向传播算法、1989年提出卷积神经网络
第三阶段(2000-2010):2006年提出将预训练和自编码器与深度神经网络结合的方法、2011年在语音识别领域测试的突破性效果、2012年在卷积神经网络中引入ReLU(保留正值)作为激活函数,又在图像识别基准测试中获得压倒性优势
下面记录随着时间发展的神经网络
多个输入结点Xi对应一个输出结点y,不同的结点Xi有不同的权重Wi:假设二者皆为矩阵(前(后)者为单行横(纵)向矩阵),则二者内积的结果key与预先设置的值goal比较,key>goal则输出1,否则为0,输入、输出均是0/1。
此模型可以用于表示 AND、OR 等逻辑运算。
M-P模型局限性过大,以罗森布拉特提出了感知器,能够根据训练样本自动获取样本的组合。相比前者,它能通过训练(有监督学习)自动确定参数
训练过程:需要设定训练样本和期望输出,然后调整 实际输出 和 期望输出之差(误差修正)
感知器训练过程:
1)准备N个训练样本xi和期望输出ri、随机的初始参数wi和goal;
2)调参:逐个加入样本,计算实际结果key,当key=goal时,参数不变,否则根据误差修正方法调整参数,直至误差为0或者小于某指定数值。
相比较M-P,它有了较大改进,但仍只能解决线性可分问题,无法解决线性不可分问题,想解决后者则需要多层感知器。
由多层结构的感知器递阶组成的输入值向前传播的网络,也被称为前馈网络或者正向传播网络
一般由输入层、中间层、输出层组成。
中间层与二者的连接都是通过权重关系与二者连接,由于因果是多对一的关系,所以从前至后每层的数目逐渐减少。
但是初期的多层感知器在输入层与中间层使用随机数作为连接权重(现象:输入数据不同,但中间层输出值相同,导致无法精确分类),而去迭代中间层与输出层的权重数据(也是通过误差修正方法),为训练好连接权重,提出了误差反向传播算法。
通过比较实际输出key与期望输出goal得到误差信号,由输出层逐层向前传播得到各层的误差信号,再调整各层的连接权重(调整权重的方法主要使用的是:梯度下降法)
误差计算方法:最小二乘法;
权重调整方法:梯度下降法(推导可参考花书P258页)
结论为:权重调整值的计算是对误差函数、激活函数、连接权重分别求导的过程。对连接权重求导就是对上一层的连接权重、中见层与输入层的激活函数及连接权重作求导的过程。
这种从后向前逐层求导的过程成为链式法则(chain rule)
误差函数作为机器学习/深度学习中误差下降的指标,应根据不同的情况作不同的选择,
常见的误差函数根据不同的任务有:
分类问题的误差函数有:Classification Accuracy - 分类准确性、Logarithmic Loss - 对数损失、Confusion Matrix - 混淆矩阵、Area Under Curve (AUC)- 曲线下面积、 F1 Score - F1得分;多分类的问题使用的Cross-entropy cost function交叉墒代价函数、softmax函数、sigmoid二分类函数
回归问题的误差函数有:Mean Absolute Error - 平均绝对误差、Mean Squared Error - 均方误差
激活函数类似于人类神经元,对输入信号作(非)线性变换
似然函数是一种关于统计模型中的参数的函数,表示模型参数中的似然性
概率用于在已知一些参数的情况下,预测接下来的观测所得到的结果,而似然性则是用于在已知某些观测所得到的结果时,对有关事物的性质的参数进行估计
随机梯度下降法只使用了部分训练样本进行迭代计算
此处简单概述:根据训练样本的输入方式不同,选择不同种类的误差反向传播算法。
有批量学习(batch learning)、小批量梯度下降方法(mini-batch learning)[目前使用的主流算法]、在线学习(online learning)
学习率是用来确定权重连接调整程度的系数。
直接体现:权重调整值=学习率*随机梯度下降法的计算结果,学习率过大易导致修正过头、过小则收敛速度很慢、训练时间过长。
需要学习一下“自适应调整学习率”,如AdaGrad方法,熟练之后可根据经验设置一个较大的初始值在逐渐减小。
组成:输入层、卷积层、激活层、池化层、全连接层、输出层。可根据情况增加卷积层与池化层。
直白讲,输入样本与卷积核的内积运算,原理上其实是对两张像素矩阵进⾏点乘求和的数学操作,其中⼀个矩阵为输⼊的数据矩阵,另⼀个矩阵则为卷积核(滤波器或特征矩阵),求得的结果表⽰
为原始图像中提取的特定局部特征。根据需求,有不同的卷积方案及填充方案。
负责对卷积层抽取的特征进⾏激活,由于卷积操作是由输⼊矩阵与卷积核矩阵进⾏相加的线性变化关系,需要激活层对其进⾏⾮线性的映射,激活层主要由激活函数组成,即在卷积层输出结果的基
础上嵌套⼀个⾮线性函数,让输出的特征图具有⾮线性关系。卷积⽹络中通常采⽤ReLU来充当激活函数(还包括tanh和sigmoid等)。
池化层的作用是减小卷积层产生的特征图尺寸,是对感受域内的特征进⾏筛选,提取区域内最具代表性的特征,能够有效地降低输出特征尺度,进⽽减少模型所需要的参数量。按操作类型通常分为
最⼤池化(Max Pooling)、平均池化(Average Pooling)和求和池化(Sum Pooling),它们分别提取感受域内最⼤、平均与总和的特征值作为输出,最常⽤的是最⼤池化。
类似多层感知机,全连接层也需要计算激活值,需要对卷积神经⽹络学习提取到的特征进⾏汇总,将多维的特征输⼊映射为⼆维的特征输出,⾼维表⽰样本批次,低位常常对应任务⽬标。