最近学习了深度神经网络(DNN)和卷积神经网络(CNN)的基础知识,现将本人的理解记录如下:
1.全连接层
全连接层,顾名思义,就是对相邻两层之间的每个神经元都建立连接关系。这里以一个输入层,一个隐藏层,一个输出层为例说明,如下图所示,输入层包括四个神经元,隐藏层包括四个神经元,输出层包括两个神经元。
![](https://img-blog.csdnimg.cn/direct/4c287aeab34d406cac80bb60c72f4f8c.png)
从数学原理上理解以上全连接层,就是通过两个权重矩阵,实现每两层之间输入特征到输出特征之间的映射。对于以上全连接层,对输入特征用x表示,隐藏层用y表示,输出特征用z表示,通过如下矩阵运算过程可以实现从x到z的映射。
2.激活函数
激活函数的作用主要是使得神经网络能够实现非线性映射,从而能够处理更加复杂的任务,对于一个全连接神经网络,其本质是一个输入到输出的函数映射:
从这个公式中,可以看出输入到输出的映射只是一个线性映射,对于非线性的任务就无能为力。以分类任务为例,如下图2所示,这样的神经网络只能画出一条直线将两种类别的点分开。 而对于更加复杂的情况,如下图3所示,需要能够画出曲线才能将两种类别的点分开,那么这样的神经网络就无法处理这类任务。
![](https://img-blog.csdnimg.cn/direct/d4f18f69c5684bfabe7b8acd5854602c.png)
![](https://img-blog.csdnimg.cn/direct/3551a54487c440738f4e96f933ab4c82.png)
为了使得神经网络能够对输入和输出建立非线性映射,研究人员引入了激活函数的概念,对每一层的输出进行非线性变换,常用的激活函数包括Sigmoid函数,Tanh函数和ReLU函数,在pytorch库中,都有其对应实现函数,现将其数学表达形式列出:
(1) Sigmoid函数:
(2) Tanh函数:
(3) ReLU函数:
ReLU激活函数应该是最常用的激活函数,个人理解,ReLU激活函数实现的是将原来的线性映射变为了分段线性映射,从而实现对非线性映射的拟合。