机器学习周志华笔记系列-第五章-神经网络(欢迎讨论)

系列背景:

从周志华机器学习第四章开始,总结每章的知识点。

非科班,能源工科,复习过考研微积分,线性代数,概率论。机器学习小白。

所以总结机器学习方法的思想,尽量不涉及数学工具,如矩阵微分、奇异值分解、凸优化、概率论共轭分布、KL散度等(书中附录)。

结构简单,问题导向,每个问题分为:问题,思想,其他方法和比较,具体方法,思考,其他。

思考部分为自己提出的一些问题,欢迎大家提出自己的想法

欢迎讨论

 

第五章 神经网络

 

1.问题:神经网络解决什么问题

解答:同线性模型和决策树一样,用来表示因果关系

思想:人类神经系统的基本组成单位是神经元,神经元的工作过程是神经元受刺激(输入)之后电位发生变化,当电位达到阈值时,释放物质(输出)刺激与它相连的神经元,如此将刺激传递下去。神经网络正是将这一过程模型化,神经网络的神经元接收与其连接的神经元的输入(输入用数来表示),为表示不同神经元的影响不同,将输入加权求和作为神经元的输入,神经元接收输入后与阈值作差,最后用激活函数处理,判断对后续神经元是否产生影响。所以理想的激活函数是阶跃函数,但阶跃函数不连续不光滑,所以用sigmoid函数近似。

其他方法和比较:既然都是表示因果关系,神经网络与线性模型和决策树的区别在哪。在我看来,线性模型是一个简单的线性函数,而神经网络和决策树更像是一种函数组织方式。决策树的基本单元是测试节点,它将节点以分支的形式(从下到上)组织起来(类似数据结构中的树)。神经网络的基本单元是神经元,用网络将它们组织起来(类似数据结构的“图”),明显比线性模型更复杂。

思考:值得注意的是神经网络的结构包含层的概念,同一层中神经元不相连,而实际的神经系统中可能没有层的概念,所有神经元平等,互通互联。

 

2.问题:神经网络既然比线性模型复杂,那么它能解决的最复杂的问题有多复杂

解答:具有输入层(不包含激活函数)、一层包含足够多神经元的隐含层(包含激活函数)和输出层(包含激活函数)的神经网络能解决所有非线性可分问题,或者说能逼近任何函数。

思考:是否所有的分类问题、聚类问题都属于线性可分或者非线性可分问题?

 

3.问题:如何求解神经网络

解决:误差逆传播算法(BP算法)

思想:采用均方误差法(预测值与实际值之差的平方表示预测和实际的差距,求解的参数要最小化这个差距)和梯度下降法(函数在最小值处梯度为零,对于无法对梯度为零进行求解的函数,常常要按照一定步长进行试值,直到试出函数值最小的自变量;梯度下降法利用函数沿梯度方向下降最快,动态调整步长,加速了获得结果的过程)。

 

4.问题:梯度下降法如何避免局部最优,而得到全局最优

以不同参数值初始化

模拟退火:每一次迭代都以一定概率接受比当前解更差的解,但随着迭代进行概率应该越来越小,以保证算法稳定

随机梯度下降法:在梯度下降法中加入随机项,因此即使达到局部最优,梯度也可能不为零,从而跳出局部最优

遗传算法:通过变异,引入随机因素

其他方法和比较:上述方法都是启发式的

 

5.问题:如何避免过拟合?

解决:早停和正则化

早停:数据分成训练集和测试集,测试集误差开始上升时就停止训练

正则化:在均方误差上加一个描述神经网络复杂度的部分——连接权和阈值的平方和。

思考:

正则化中的连接权和阈值为什么能反应网络复杂度,作者的解释是较小的连接权和阈值会使网格光滑,如何理解?引入的λ怎么确定?

能否采用删去神经元的方法避免过拟合?

 

6.问题:激活函数如何选择?

解答:通常为sigmoid函数,然而在卷积神经网络CNN中通常使用修正线性函数

 

7.问题:神经元个数如何选择?

解答:试错法

 

8.问题:梯度下降法学习率(即步长)如何选择?

思想:学习率(0, 1),学习率过大容易产生震荡,学习率过小收敛速度慢,不同参数的学习率可以不同,一个小窍门是在训练过程中自适应改变学习率,先选择大的学习率,再逐步缩小。

思考:如何做到自适应?

 

9. 累积BP算法:

思想:对训练集样例全部读取后,计算各个样例的误差和,然后对误差和最小化。

其他方法和比较:相比BP算法,累积BP算法参数迭代次数少,但是在很多任务中当累积误差下降到一定程度后,进一步下将会非常缓慢,此时BP算法能更快获得更好的解,尤其训练集特别大的情况

思考:具体怎么实现?

 

10.问题:图像识别的任务,简单的通过多层前馈神经网络求解像素点数值到标签的映射关系已经不能很好的解决问题,需要对图像提取更多的反应像素点关系的特征,再求解特征到标签的映射,所以需要增加网络层数。

解决:深度学习(增加神经网络层数)

思考:能否通过使网络结构更复杂解决这个问题?

其他:因为增加的隐含层是对原始数据提取特征,所以深度学习可理解为特征学习和表示学习

 

11.问题:使用标准BP算法训练多隐藏层网络时,误差在隐藏层内逆向传播往往会发散,需要新的训练方法。

无监督逐层训练:算法逐层训练,每一层的输出作为下一层的输入,称作预训练,全部结束后利用BP算法对整个网络进行训练,更易收敛

权共享:让一组神经元有相同的权重,减少参数,更易收敛,卷积神经网络CNN经常使用

思考:发散的原因是什么?这两种方法各自的优缺点?有没有其他的方法?

 

(接问题1.)其他:

阈值(threshold)也叫偏差(bias)

感知机是最简单的神经网络,只有输入层(不包含激活函数)和输出层(包含激活函数),只能解决线性可分问题

目前常用的神经网络是多层前馈神经网络,前馈指的是同一层之间不连接,也不存在环路

BP网络一般指采用BP算法训练的多层前馈神经网络

神经元模型有MP神经元模型(前述的模型)和脉冲神经元模型

思考:

什么是脉冲神经元模型?

连接权相加是否得1?

感知机的求解规则也是梯度下降法,如何理解?

什么是贝叶斯框架?

神经网络的可解释性:人类对自身的神经系统机理还没认识清楚,而神经网络模拟人的神经系统,所以对神经网络的机理也难以认清

其他常见神经网络的思想?

 

你可能感兴趣的:(周志华,机器学习)