当神经元结构的输出为所有输入的加权和,那么神经网络是一个线性模型。如果将每一个神经元(神经网络节点),的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了。这个非线性函数就是**函数。
下图为加入了**函数和偏置项后的神经元结构:
深层神经网络——**函数去线性化
神经网络结构加上**函数和偏置项后的前向传播算法的数学定义为:
深层神经网络——**函数去线性化
相比于传统的神经网络主要有两个改变:
第一是增加了偏置项(bias),偏置项是神经网络中非常常用的一种结构。
第二是每个节点的取值不再是单纯的加权和。每个节点的输出在加权和的基础上还做了一个非线性变换。
以下是几种常用的非线性**函数的函数图像:
深层神经网络——**函数去线性化
ReLu函数基本代替了sigmoid函数了,因为sigmoid函数很容易引起梯度消失,导致过拟合。
这些**函数图像都不是一条直线,所以通过这些**函数,每一个节点不再是线性变换,于是整个神经网络就不再是线性的了。

下图是加入了偏置项和ReLu**函数之后的神经网络结构:
深层神经网络——**函数去线性化
偏置项被设置为一个输出永远为1的节点(通常设置为1或者0,一般为常数项)。
新的神经网络模型前向传播算法的计算方法为:
隐藏层:
深层神经网络——**函数去线性化
输出层:
深层神经网络——**函数去线性化

目前Tensorflow提供了七种不同的非线性**函数,tf.nnrelu、tf.sigmoid、tf.tanh是比较常用的几个。当然,Tensorflow也支持使用自己定义的**函数。

相关文章:

  • 2021-12-13
  • 2022-03-03
  • 2021-12-04
  • 2021-12-06
  • 2021-04-19
猜你喜欢
  • 2022-01-13
  • 2021-12-04
相关资源
相似解决方案