深层神经网络——激活函数去线性化

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

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

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

你可能感兴趣的:(深度学习,神经网络)