一、非线性假设
线性回归与逻辑回归,都是线性假设,对于一些问题,如果用线性假设模拟,参数将会非常多,计算量巨大,而用非线性假设模拟,参数数量可能要少的多。此外,所有的线性假设,如感知机,都不能解决异或(XOR,不同即为真)与同或(XNOR,相同即为真)问题,即非线性边界。神经网络,既可以做线性假设,也可以做非线性假设,因此应用范围更广。
二、模型表示
如上图,Layer1是输入层,Layer2是隐藏层,Layer3是输出层。输入层,即输入数据集层。隐藏层,中间计算结果层,单层神经网络没有此层。输出层,是结果输出层。
每个红色的圆圈,对应一个神经元。每个神经元,对应一个激活函数,如Sigmoid函数,功能即通过对加权的输入进行非线性组合产生非线性决策边界。每条箭头,对应一个权重项(参数项)。
三、激活函数
激活函数要求:
可导性:计算梯度(偏导数)时必须要有此性质。
非线性:保证数据非线性可分。
单调性:保证凸函数,能够取得全局最优结果。
有界性:保证输出结果有界。
常用激活函数可参考博文https://blog.csdn.net/u011584941/article/details/71534828简要分析。从分析可知,选择合适的激活函数也同样重要。
四、超参数
超参数是在开始学习过程之前设置值的参数,而不是通过训练得到的参数数据。通常情况下,需要对超参数进行优化,给学习机选择一组最优超参数,以提高学习的性能和效果。
超参数的一些示例:
树的数量或树的深度
矩阵分解中潜在因素的数量
学习率(多种模式)
深层神经网络隐藏层数
k均值聚类中的簇数
五、参数的反向传播算法
1、代价函数
代价函数是逻辑回归的一般形式,在这里都是似然负对数。神经网络代价函数中:L表示网络层数,s指神经元单元数,m指特征数,正则化项是所有的权重(每一个神经元对应的权重和)。
2.反向传播算法
在迭代过程中,快速求解代价函数的每一个参数的偏导数。
3.梯度检测
为了验证编码中由反向传播算法计算的偏导数,最好做梯度检测,而且只做一次即可,因为梯度检测计算梯度相比反向传播算法要慢很多。
上图是使用计算偏导数定义的方法计算梯度,当其结果与反向传播计算结果相差很小时,认为反向传播计算梯度是正确的。
4.随机初始化
如果使用迭代法求解权重,权重需要进行初始化。如果所有权重初始化为相同的值,经推导,最后训练结果各权重值相等,即对特征中各分量影响一样,这是不符合常理的。因此,可以使用随机初始化方法,原理如下:
六、大规模机器学习
1、随机梯度下降
以线性回归为例。
上面左图分别是批量梯度下降的线性回归的假设函数,代价函数及迭代过程,其中学习率后面的项为参数的偏导数。在大规模机器学习中,样本数量特别多,参数也很多。在每一次迭代过程中,要更新所有的参数,而每个参数的更新所有样本都要参与计算,而偏导数计算量是较大的且耗时。
右图为随机梯度下降(m个样本,n+1个参数)。其过程为:
(1).把m个训练样本随机打乱;
(2).循环m个样本。每次循环,只用一个样本i,用样本i计算每个参数的偏导数项,进而更新每个参数。
随机梯度下降要比批量梯度下降速度要快很多。
2.mini-batch 梯度下降
属于随机梯度下降,每次循环,使用b(一般取2-100)个样本,而不是1个样本。
3.随机梯度下降收敛
批量梯度下降,每次迭代,所有样本都参与计算,因此每次迭代都可以计算代价函数,检查是否收敛。但随机梯度下降,由于其下降过程是曲折的,即随着训练进行,代价函数值局部可能变大,整体趋势是变小的。因此,每次循环检查收敛性是不可靠的。
可以,比如每隔1000个样本,计算这1000个样本的代价函数平均值,来检查是否在收敛
吴恩达机器学习之神经网络概述
最新推荐文章于 2022-11-30 08:43:22 发布