人工智能神器——TensorFlow入门基础(激励函数与优化器)

TensorFlow流程图

TensorFlow流程图

人工智能神器TensorFlow流程图包括输入层、隐藏层、训练层等

输入层:主要是构建图的节点输入数据,主要是我们输入神经网络的权重(W)与偏差(biases)或者其他数据
隐藏层:本层是神经网络的内部结构,数据通过隐藏层降维计算后,输出给训练层,本层主要的算法就是神经网络的Activation Function(激励函数)
训练层:本层就是神经网络的核心层,主要对数据进行训练,达到设计目的,本层主要的核心就是Optimizer(优化器)

Activation Function(激励函数):

激励函数 activation function

我们为什么要使用激励函数?这个问题需要讨论高等数学里面的线性函数(y=Wx+b)与非线性函数y=AF(Wx+b)(AF就是激励函数),虽然线性函数特别美好,但是它并不符合实际的数据应用。现实数据由于多种因素的存在,不会像我们想象的那么美好。且线性函数不能收敛,这在实际应用中,并不是所有的事情是符合线性关系。

直接构建神经网络的输入与输出是一个线性关系,如下:

线性神经网络

激励函数的实质是非线性方程。Tensorflow 的神经网络里面处理较为复杂的问题时都会运用激励函数 activation function。 通过加入激励函数可实现张量计算的非线性化,从而提升TensorFlow神经网络模型的泛化能力。如果不使用激励函数,神经网络的每层都只是做线性变换,即使是多层输入叠加后也还是线性变换。通过使用激励函数引入非线性因素后,使神经网络的训练更强大。

常用的激励函数主要有:

tf.nn.relu
tf.nn.relu6
tf.nn.elu
tf.nn.softplus
tf.nn.softsign
tf.nn.dropout
tf.nn.bias_add
tf.sigmoid
tf.tanh

在少量层结构中, 我们可以尝试很多种不同的激励函数,但在卷积神经网络CNN中, 推荐 relu. 在循环神经网络中RNN, 推荐的是 tanh 或者是 relu,当然你也可以尝试不同的激励函数

TensorFlow optimizer(优化器)

TensorFlow optimizer(优化器)主要用来训练神经网络(利用不同的算法来优化我们的神经网络)

常用的优化器主要有:

 tf.train.Optimizer
 tf.train.GradientDescentOptimizer
 tf.train.AdadeltaOptimizer
 tf.train.AdagradOptimizer
 tf.train.AdagradDAOptimizer
 tf.train.MomentumOptimizer
 tf.train.AdamOptimizer
 tf.train.FtrlOptimizer
 tf.train.ProximalGradientDescentOptimizer
 tf.train.ProximalAdagradOptimizer
 tf.train.RMSPropOptimizer

具体每个优化器如何使用,大家可以参考官方的文档。

下期预告:

通过以上的介绍,我们简单了解了TensorFlow如何构建图,启动图以及激励函数与优化器的概念,下期通过代码介绍一个简单的例子介绍TensorFlow流程,(y=Wx+b)如何让TensorFlow训练,找到我们的(W,b)