建议先阅读我之前的深度学习博客,掌握一定的深度学习前置知识后再阅读本文,链接如下:
带你从入门到精通——深度学习(一. 深度学习简介和PyTorch入门)-CSDN博客
带你从入门到精通——深度学习(二. PyTorch中的类型转换、运算和索引)-CSDN博客
带你从入门到精通——深度学习(三. PyTorch中张量的形状重塑、拼接和自动微分)-CSDN博客
目录
四. 神经网络一
4.1 神经网络的概念
人工神经网络(Artificial Neural Network,ANN)是一种模仿生物神经网络结构和功能的计算模型,简称神经网络(Neural Network,NN)。
单个神经元的网络结构如下:
单个神经元结构的最终输出的是经过激活函数后的各个输入xi的加权和。
多个神经元便构成了如下的神经网络结构:
神经网络中信息从输入节点开始向前移动,通过隐藏节点,最终移动到输出节点,因此神经网络的基本架构为:输入层(即输入x的一层)、输出层(即输出y的一层)、隐藏层(输入层和输出层之间皆为隐藏层),这种网络结构也被称为全连接(full connected,FC)网络。
全连接网络的特点如下:
1. 同一层的神经元之间没有连接。
2. 第N层的每个神经元与第N - 1层的所有神经元相连(这也是全连接的含义),每一个连接都有一个自己的权重值(包含w系数和b系数)
3. 第N - 1层神经元的输出就是第N层神经元的输入。
4.2 激活函数
4.2.1 激活函数的概念
激活函数用于对神经网络每层的输出数据进行变换,为整个神经网络注入了非线性因素,使得神经网络可以逼近任意函数,加强了神经网络对复杂问题的拟合能力。
而如果不使用激活函数,整个神经网络虽然看起来复杂,但究其本质依然属于一种线性模型,证明如下:
4.2.2 sigmoid函数
在机器学习的逻辑回归章节有该函数的详解介绍,这里只做简要概括。
sigmoid函数一般用于二分类任务的输出层,对于sigmoid函数来说,当输入值< -6 或者 > 6时,任何的输入值得到的激活值都是差不多的,这样会丢失部分的信息,因此该函数的有效区间为(-6,6),并且sigmoid函数容易出现梯度消失现象。
4.2.3 tanh函数
tanh函数也叫双曲正切函数,它是一种奇函数,能够将输入值映射到(-1,1)之间,其函数表达式和导数表达式如下:
tanh函数的函数图像与导数图像如下:
由上图可知tanh函数的有效区间为(-3,3), 与Sigmoid相比,tanh的梯度相对较大,使得其收敛速度要比sigmoid函数快,能够减少有效迭代次数,但使用tanh函数作为激活函数同样也有梯度消失的风险。
4.2.4 ReLU函数
ReLU函数的表达式如下:
ReLU函数的函数图像和导数图像如下:
ReLU函数将小于0的值映射为 0,而大于0的值则保持不变,使得它更加重视正信号,而忽略负信号,这种激活函数运算更为简单,能够提高模型的训练效率。
当x < 0时,ReLU函数的导数为0,而当x > 0时,ReLU函数的导数恒为1,因此ReLU能够在x > 0时保持梯度不衰减,从而缓解梯度消失问题,然而,随着训练的推进,部分输入会落入小于0区域,导致其对应权重无法更新,这种现象被称为神经元死亡问题或者ReLU函数的死区问题。
ReLU函数是目前最常用的激活函数,其优势如下:
1. 相对于sigmoid函数和tanh函数来说求导更为方便,在反向传播求参数的梯度时,计算量相对较小。
2. 能够缓解梯度消失问题。
3. ReLU函数会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生。
4.2.5 softmax函数
softmax函数常用于多分类任务中,它是二分类任务的常用激活函数sigmoid在多分类任务中的推广,目的是将多分类的结果以概率的形式展现出来,其函数表达式如下:
softmax函数能够将网络输出的logits(逻辑值)映射为值域在(0,1)之间的概率值,我们可以选取概率值最大的类别作为最终的预测类别。
注意:softmax函数的所有输出值的总和必定为1(满足概率的性质)。
4.2.6 其他常见激活函数
其他常见激活函数如下表所示:
注意:神经网络的隐藏层通常优先选择ReLU激活函数;回归问题通常选择identity激活函数,即y = x的恒等映射。
4.3 参数初始化
4.3.1 基础初始化方法
均匀分布初始化:初始网络参数从区间为(0,1)的均匀分布中抽样获得。
正态分布初始化:初始网络参数从均值为0,标准差为1的高斯分布中抽样获得。
全0初始化:将初始网络参数全部初始化为0。
全1初始化:将初始网络参数全部初始化为1。
固定值初始化:将初始网络参数全部初始化为某个固定值。
4.3.2 kaiming初始化和xavier初始化
kaiming初始化,也称HE初始化,该初始化方法分为正态分布的kaiming初始化和均匀分布的kaiming初始化。
正态分布的kaiming初始化:初始网络参数从均值为0,标准差为的高斯分布中抽样获得,其中n为输入神经元的个数。
均匀分布的kaiming初始化:初始网络参数从区间为的均匀分布中抽样获得,其中n为输入神经元的个数。
xavier初始化,该初始化方法也分为正态分布的xavier初始化和均匀分布的xavier初始化。
正态分布的xavier初始化: 初始网络参数从均值为0,标准差为的高斯分布中抽样获得,其中n为输入神经元和输出神经元个数之和。
均匀分布的kaiming初始化:初始网络参数从区间为的均匀分布中抽样获得,其中n为输入神经元和输出神经元个数之和。
注意:在使用PyTorch框架构建网络模型时,每个网络层的参数都有默认的初始化方法。
标签:初始化,精通,入门,4.2,ReLU,神经网络,神经元,函数 From: https://blog.csdn.net/2401_86480334/article/details/145213548