首先,我们了解机器学习的分类与回归问题。
(1)什么是机器学习?
机器学习,顾名思义就是让机器(计算机)进行学习。首先针对一个任务设计一种算法,再通过投喂计算机数据让它提取数据中蕴含的规律,训练出模型,然后利用所得模型进行预测的一种方法就叫做机器学习。
若投喂的数据带有标签,称作监督学习;若无,则称作无监督学习。
(2)分类与回归问题的区别
1.输出数据类型不同
定量输出称为回归,或者说是连续变量预测;
定性输出称为分类,或者说是离散变量预测。
举个例子:
预测明天气温多少度,需要求值,这是建立在前面已有温度基础构建的模型上的下一步预测,属于回归问题;
预测明天是阴、晴还是雨,总共有三个不相关的结果(性质不同),即属于分类问题。
2.应用场景不同
回归问题通常是用来测算一个值,这个值由前面数据构成的模型预测得到,如预测房价等。
分类问题是用于将事物打上一个标签,通常结果为离散值。例如判断一幅图片上的动物是一只猫还是一只狗。 分类通常是建立在回归之上,分类的最后一层通常要使用softmax函数进行判断其所属类别。分类没有逼近的概念,最终正确结果只有一个。错或对,不会有相近的概念。
(3)分类与回归问题的相同之处
二者本质相同,都是要建立映射关系。都是通过计算机学习数据集的特定规律,进而生成模型来实现预测任务。
回归问题与分类问题可以相互进行转化,即分类模型可将回归模型的输出离散化,回归模型可将分类模型的输出连续化。
(4)回归问题构建的函数类型
一般包括线性回归与非线性回归,我们通常需要找出二者中拟合性最好的函数充当目标函数,判断拟合性就要依靠损失函数。
(5)损失函数
我们假设利用来表示线性回归值与实际值的差,这个函数的误差=,误差越小,拟合度越高,拟合性越好,就越接近我们需要的函数。
(6)分类
分类同样是一类很常见的问题。
假设我们想要根据一个人的口袋中钱的数量判断这个人是富人还是穷人,我们一样可以使用回归的方法来做。我们只要找到一个模型,然后再进行匹配就行了。
其次,开始介绍深度学习各类超参数。
(1)什么是超参数,参数和超参数的区别在哪里?
区分两者最大的一点就是是否通过数据来进行调整,模型参数通常是有数据来驱动调整,超参数则不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。例如卷积核的具体核参数就是指模型参数,这是有数据驱动的。而学习率则是人为来进行调整的超参数。这里需要注意的是,通常情况下卷积核数量、卷积核尺寸这些也是超参数,注意与卷积核的核参数区分。
区分两者最大的一点就是是否通过数据来进行调整,模型参数通常是有数据来驱动调整,超参数则不需要数据来驱动,而是在训练前或者训练中人为的进行调整的参数。例如卷积核的具体核参数就是指模型参数,这是有数据驱动的。而学习率则是人为来进行调整的超参数。这里需要注意的是,通常情况下卷积核数量、卷积核尺寸这些也是超参数,注意与卷积核的核参数区分。
(2)神经网络包含哪些超参数?
通常可以将超参数分为三类:网络参数、优化参数、正则化参数。
网络参数:可指网络层与层之间的交互方式(相加、相乘或者串接等)、卷积核数量和卷积核尺寸、网络层数(也称深度)和激活函数等。
优化参数:一般指学习率(learning rate)、批样本数量(batch size)、不同优化器的参数以及部分损失函数的可调参数。
正则化:权重衰减系数,丢弃法比率(dropout)
作者:瞎了吗
链接:https://www.jianshu.com/p/6602c76cc801
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在实际应用中,我们需要进行超参数调优,原因显而易见:
寻找到全局最优解(或相对更好的局部最优解)及使模型尽量拟合到最优。
(3)超参数的重要性数据
首先, 学习率,损失函数上的可调参数。学习率直接控制着训练中网络梯度更新的量级,直接影响着模型的有效容限能力;损失函数上的可调参数,这些参数通常情况下需要结合实际的损失函数来调整,大部分情况下这些参数也能很直接的影响到模型的的有效容限能力。
其次,批样本数量,动量优化器(Gradient Descent with Momentum)的动量参数β。批样本决定了数量梯度下降的方向。过小的批数量,极端情况下,例如batch size为1,即每个样本都去修正一次梯度方向,样本之间的差异越大越难以收敛。若网络中存在批归一化(batchnorm),batch size过小则更难以收敛,甚至垮掉。这是因为数据样本越少,统计量越不具有代表性,噪声也相应的增加。而过大的batch size,会使得梯度方向基本稳定,容易陷入局部最优解,降低精度。一般参考范围会取在[1:1024]之间,当然这个不是绝对的,需要结合具体场景和样本情况;动量衰减参数β是计算梯度的指数加权平均数,并利用该值来更新参数,设置为 0.9 是一个常见且效果不错的选择。
最后,Adam优化器的超参数、权重衰减系数、丢弃法比率(dropout)和网络参数。在这里说明下,这些参数重要性放在最后并不等价于这些参数不重要。而是表示这些参数在大部分实践中不建议过多尝试。
作者:瞎了吗
链接:https://www.jianshu.com/p/6602c76cc801
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。(此处仅截取部分片段)
最后,进行网络搭建介绍。
网络搭建包括五个方面,分别是构建
卷积层;
池化层;
全连接层;
激活函数;
BN操作。
(1)卷积层
卷积神经网络中每层卷积层(Convolutional layer)由若干卷积单元组成,每个卷积单元的参数都是通过反向传播算法最佳化得到的。卷积运算的目的是提取输入的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更多层的网路能从低级特征中迭代提取更复杂的特征。
(2)池化层
池化(Pooling)是卷积神经网络中另一个重要的概念,它实际上是一种形式的降采样。有多种不同形式的非线性池化函数,而其中“最大池化(Max pooling)”是最为常见的。它是将输入的图像划分为若干个矩形区域,对每个子区域输出最大值。直觉上,这种机制能够有效地原因在于,在发现一个特征之后,它的精确位置远不及它和其他特征的相对位置的关系重要。池化层会不断地减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。通常来说,CNN的卷积层之间都会周期性地插入池化层。
(3)全连接层
全连接层的每一个结点都与上一层的所有结点相连,用来把前边提取到的特征综合起来。由于其全相连的特性,一般全连接层的参数也是最多的。
在 CNN 结构中,经多个卷积层和池化层后,连接着1个或1个以上的全连接层。与 MLP 类似,全连接层中的每个神经元与其前一层的所有神经元进行全连接。全连接层可以整合卷积层或者池化层中具有类别区分性的局部信息。
(4)激活函数
激活函数(Activation functions)对于人工神经网络 [1] 模型去学习、理解非常复杂和非线性的函数来说具有十分重要的作用。它们将非线性特性引入到我们的网络中。如图1,在神经元中,输入的 inputs 通过加权,求和后,还被作用了一个函数,这个函数就是激活函数。引入激活函数是为了增加神经网络模型的非线性。没有激活函数的每层都相当于矩阵相乘。就算你叠加了若干层之后,无非还是个矩阵相乘罢了。
如果不用激活函数,每一层输出都是上层输入的线性函数,无论神经网络有多少层,输出都是输入的线性组合,这种情况就是最原始的感知机(Perceptron)。
如果使用的话,激活函数给神经元引入了非线性因素,使得神经网络可以任意逼近任何非线性函数,这样神经网络就可以应用到众多的非线性模型中。
(5)BN操作
1.什么是BN
批标准化(Batch Normalization,BN),又叫批量归一化,是一种用于改善人工神经网络的性能和稳定性的技术。 这是一种为神经网络中的任何层提供零均值/单位方差输入的技术。批量标准化在2015年的论文中引入。 [1] 它用于通过调整和缩放激活来规范化输入层。
批标准化(Batch Normalization )简称BN算法,是为了克服神经网络层数加深导致难以训练而诞生的一个算法。
2.为什么需要BN
根据ICS理论,当训练集的样本数据和目标样本集分布不一致的时候,训练得到的模型无法很好的泛化。而在神经网络中,每一层的输入在经过层内操作之后必然会导致与原来对应的输入信号分布不同,并且前层神经网络的增加会被后面的神经网络不断的累积放大。这个问题的一个解决思路就是根据训练样本与目标样本的比例对训练样本进行一个矫正,而BN算法(批标准化)则可以用来规范化某些层或者所有层的输入,从而固定每层输入信号的均值与方差 。
3.使用方法
批标准化一般用在非线性映射(激活函数)之前,对y= Wx + b进行规范化,是结果(输出信号的各个维度)的均值都为0,方差为1,让每一层的输入有一个稳定的分布会有利于网络的训练。
在神经网络收敛过慢或者梯度爆炸时的那个无法训练的情况下都可以尝试。
4.优点
-
减少了参数的人为选择,可以取消dropout和L2正则项参数,或者采取更小的L2正则项约束参数。
-
减少了对学习率的要求。
-
可以不再使用局部响应归一化了,BN本身就是归一化网络(局部响应归一化-AlexNet)。
-
更破坏原来的数据分布,一定程度上缓解过拟合。