最近想要学习深度学习模型,没有一上来就先学习CNN、RNN、LSTM,而是先学习全连接神经网络(Fully Connected Neural Network),原因非常简单,上述所说的各种神经网络都是基于全连接神经网络出发的,最基础的原理都是由反向传播而来,所以只要掌握了这节最基本的原理,接下来的各种网络也能学得得心应手。

一、全连接神经网络简介

全连接神经网络模型是一种多层感知机(MLP),感知机的原理是寻找类别间最合理、最具有鲁棒性的超平面,最具代表的感知机是SVM支持向量机算法。神经网络同时借鉴了感知机和仿生学,通常来说,动物神经接受一个信号后会发送各个神经元,各个神经元接受输入后根据自身判断,激活产生输出信号后汇总从而实现对信息源实现识别、分类,一个典型的神经网络如下图所示:
在这里插入图片描述
上图是典型的全连接神经网络模型(DNN),有的场合也称作深度神经网络,与传统的感知机不同,每个结点和下一层所有结点都有运算关系,这就是名称中‘全连接’的含义,上图的中间层也成为隐藏层,全连接神经网络通常有多个隐藏层,增加隐藏层可以更好分离数据的特征,但过多的隐藏层也会增加训练时间以及产生过拟合。

观察上图,输入数据是一个3维向量,隐藏层有5个结点,意味着通过线性映射将3维向量映射为一个5维向量,最后再变为一个2维向量输出。当原输入数据是线性不可分时,全连接神经网络是通过激活函数产生出非线性输出,常见的激活函数有Sigmoid,Tanh,Relu,分别如下图所示:
在这里插入图片描述
全连接神经网络训练分为前向传播、后向传播两个过程,前向传播数据沿输入到输出后计算损失函数值,后向传播则是一个优化过程,利用梯度下降法减小前向传播产生的损失函数值,从而优化、更新参数。

二、全连接神经网络原理

在这里插入图片描述
就是这么一个东西,左边输入,中间计算,右边输出。可能这样还不够简单,画一个更简单的运算示意图:
在这里插入图片描述
不算输入层,上面的网络结构总共有两层,隐藏层和输出层,它们“圆圈”里的计算都是下面公式的计算组合:

在这里插入图片描述
每一级都是利用前一级的输出做输入,再经过圆圈内的组合计算,输出到下一级。

为什么要加上f(z)这个运算,这个运算的目的是为了将输出的值域压缩到(0,1),也就是所谓的归一化,因为每一级输出的值都将作为下一级的输入,只有将输入归一化了,才会避免某个输入无穷大,导致其他输入无效,变成“一家之言”,最终网络训练效果非常不好。

反向传播网络?反向去哪了?对的,这个图还没画完整,整个网络结果结构应该是这样:
在这里插入图片描述
反向传播的东西到底是什么呢?目的又是什么呢?这里,要有这么一点认识,神经网络的训练是有监督的学习,也就是输入X 有着与之对应的真实值Y ,神经网络的输出Y 与真实值Y 之间的损失Loss 就是网络反向传播的东西。整个网络的训练过程就是不断缩小损失Loss 的过程。

然后就是求解过程:我们可以将整个求解过程看做下山(求偏导过程),为此,我们先初始化自己的初始位置。

这样我们不断地往下走(迭代),当我们逐渐接近山底的时候,每次更新的步伐也就越来越小,损失值也就越来越小,直到达到某个阈值或迭代次数时,停止训练,这样找到 就是我们要求的解。

我们将整个求解过程称为梯度下降求解法

参考:

深度学习开端|全连接神经网络

DNN-全连接神经网络

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐