神经网络(DNN)是一种人脑的抽象计算模型,是通过类似生物神经元的处理单元,以及处理单元之间的有机连接,解决现实世界的模式识别、联想记忆、优化计算等复杂问题。常使用神经网络处理数据分类问题。
1)神经网络的结构
2)激活函数
3)前向传播算法
4)反向传播算法
在前面第三章感知机,我们有学到感知机的模型结构,它是一个可有多个输入,但只有一个输出的模型,如图所示:
输入到输出之间学习到了一个线性关系,得到中间结果输出为:
从而得到我们想要的输出结果1或者-1。
这个模型只能用于二元分类,并且无法学习比较复杂的非线性模型,因此在许多方面无法使用。
神经网络在感知机上做了扩展,主要体现在:
1)隐藏层,相比感知机的直接输入到输出,共两层,神经网络加入了隐藏层,结构为输入到隐藏层,在由隐藏层到输出层。其中隐藏层可以有多层,可增强模型的表达能力。当然,隐藏层越多,模型就越复杂。
如图,这个神经网络中有两个隐藏层,每个隐藏层都会进行非线性变换(线性变换+激活函数)。一层传递给另一层,直到输出。
2)激活函数不再只使用示性函数,原因在于该激活函数处理能力有限,输出结果只有一个,这在隐藏层到隐藏层,或者隐藏层到输出层是不能适用的,也不能为我们的分类结果作强有力的解释。在神经网络中,我们常使用的激活函数有:
2.1 基本结构
从上一节,我们了解了神经网络是感知机的扩展,可以将神经网络看成是多层感知机模型。
从图中,每个圆圈代表一个神经元,可得知层与层之间的神经元是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。从上一层的神经元到下一层的神经元,还是和感知机一样,经过一个线性关系
例:下面有个简单的神经网络结点计算图:
2.2 前向传播神经网络算法
由于神经网络层数比较多,那么所用到的线性关系也就会有很多,即参数w和b有许多。那么在神经网络中如何定义这些参数呢?
这就需要神经网络进行反向传播,可通过梯度下降法来更新参数。
2.3 反向传播的神经网络
在进行神经网络的反向传播前,我们需要选择一个损失函数,来度量训练样本计算出的输出和真实的训练样本输出之间的损失,那训练样本计算出的输出是怎么来的呢?其实就是我们随机选择了参数W,b后进行前向传播算法得出,即我们上一节中的aL。
2.3.1 损失函数及参数更新
在神经网络中,我们常使用均方误差来度量损失,即对于每个样本,有:
2.3.2 神经网络反向传播算法过程
这就是我们的神经网络,是一种有监督学习,自主学习训练集中的特征,然后利用自己所学去判断新样本的类型。
3.1 神经网络的优点:
1)实现从输入到输出的映射功能,在数学理论上已证明它具有实现任何复杂非线性映射的功能,适用于求解内部机制复杂的问题;
2)通过学习实例集自动提取特征,即具有自学习能力;
3)具有一定的推广、概括能力。
4)适用于处理大数据。
3.2 神经网络的缺点:
1)神经网络需要许多标记样本,数量以百万记,且学习速度很慢
2)“黑盒子”性质,也就是说神经网络是如何以及为什么会产生一定的输出。这解释性不强。
3)计算代价高昂,对计算机硬件要求高,费时长。
1)医学领域:建立神经网络使检测仪器自动判断肿瘤为良性还是恶性
2)计算机视觉
3)文本分布式表示
4)语音识别
参考文献
[1] https://www.cnblogs.com/lliuye/p/9486500.html
[2] https://www.cnblogs.com/pinard/p/6422831.html
[3] https://www.cnblogs.com/pinard/p/6418668.html
[4] https://www.jianshu.com/p/798b716f0f68
(部分文字、图片来自网络,如涉及侵权,请及时与我们联系,我们会在第一时间删除或处理侵权内容。电话:4006770986 邮箱:zhangming [at]eefung.com 负责人:张明)