Deep Neural Network

本文深入探讨了深度神经网络的工作原理,从前向传播算法、反向传播算法到梯度爆炸与梯度消失问题,以及如何通过ReLU激活函数、交叉熵损失函数和Dropout正则化等手段进行优化。此外,还介绍了Softmax回归在多分类问题中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将一个进行科学计算的数学模型形象化为一个神经元,模仿人类大脑的工作原理,构成神经网络。多层神经网络一般包括一个输入层,若干隐藏层,一个输出层,每一层都会有若干神经元。隐藏层中进行着大量的运算,如同一个黑箱,“不管是什么数据,我都能给你算”。每个上一层的输出都是下一层的输入,这样便给特征附加了多样性,每层神经元不再都是处理完全相同的原始数据,而是经过上一层处理的不一样的数据。以一个最基本的含有1个隐藏层的神经网络为例,介绍多层神经网络工作原理。

1.前向传播算法(Forward Propagation)


n*1维列向量X为输入层,m*n维权重矩阵(即参数矩阵)θ与向量X作向量积后得到m*1维列向量z,z作为激活函数active function的自变量,得到g(z),其中,m为下一层神经网络的神经元个数,n为特征数。

一般要在每层的神经网络上添加一个偏差单位(bias unit)x0,并使之恒等于1。上图清楚地用下标表示了各θ在权重矩阵中的位置,矩阵第一行的4个θ为下一层第一个神经元所拥有的参数,第二行4个θ为下一层第二个神经元所拥有的参数,并以此类推。由此可以给列向量z的形成以直观理解,g(z)而非z便是神经元a的输出。第二层共有3个神经元,所以会输出含有3个g(z)的列向量,将之作为第三层的输入,与权重矩阵作向量积然后代入激活函数,最终得到输出层的结果h(θ)如图:


至于多层神经网络,就是将上述神经网络的隐藏层扩展至多层,以达到更好的拟合效果;而最终的输出结果不一定是二分类的,当要求输出k分类结果时,若各种分类间并不互斥(午餐、蔬菜、肉类),可建立多个逻辑回归分类器,其中概率最大分类即为预测值;若各种分类间互斥(古典、摇滚、爵士),就需要使用Softmax回归,输出层公式如图:


将输入的列向量各维度的值作指数后作分子,或作指数后然后求和,并作为函数的分母,输出的概率最大者作为分类结果。特别的,当k=2时,Softmax回归变成逻辑回归。


2.反向传播算法(Back Propagation)

利用前向传播得到模型假设后,要求得合适的权重矩阵,便要建立代价函数、使用梯度下降法求得最小值,这一过程在多层神经网络中被称为反向传播算法。

首先建立代价函数,对最后一层即输出层的激活函数求梯度,接下来不要立刻更新各个参数,要运用多元复合函数的求导法则,分别求各层的权重矩阵中的参数,最后一起更新权重矩阵。多次重复上述过程、迭代参数,直到参数的变化量小于预定阈值时停止迭代,得到最后的权重矩阵。

3.关于梯度爆炸与梯度消失

如果使用Sigmoid函数作为激活函数、均方差函数作为损失函数时,在反向传播的过程中,因为深度神经网络的层数过多,当求前几层的梯度时,其梯度会达到相当大或相当小的数量级,导致参数迭代非常缓慢,深度越大,此效应越明显。这是多层神经网络目前仍未良好解决的问题。能稍微改善这一问题的方法,可以是换用其他激活函数、换用其他损失函数。激活函数比如:

ReLU函数:PReLU函数:

损失函数比如:

交叉熵函数:

求输出层的梯度公式为:

4.DNN的正则化

多层神经网络较为常见的问题便是过拟合,因此需要对模型假设进行正则化处理,L1与L2正则化方法效果并不好,采用的方法之一为通过Dropout进行正则化:在训练模型时,将训练数据分为n个部分,每个部分分别使用正向传播与反向传播算法,在传播过程中,将原本的每个隐藏层的随机a个神经元弃置不用,仅利用其他的神经元来拟合模型;一部分数据训练结束后,再利用其他部分数据、随机弃置每层的a个神经元来继续拟合模型。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值