概述
神经网络激活函数
单独的单变量线性分类器并不能带来神经网络的强悍性能。就算那些不是很复杂的机器学习问题都会涉及多变量和非线性,所以我们常常要用其他的转移函数来替代感知器中原本的转移函数。
有很多非线性函数可以用来做激活函数,从而表征不同的非线性模型。在输入同样的变量的时候,不同的激活函数有不同的响应。常用的激活函数如下:
- $ Logistic $ :典型的激活函数,在计算分类的概率时非常有用。
$ f(z)=frac{1}{1+exp(-z)} $
- $ Tanh $ :跟 $ Sigmoid $ 函数很像,但是范围是 $ [-1,1] $ ,而不是 $ [0,1] $ 。
$ f(z)=tanh(z)=frac{e^{z}-e^{-z}}{e^{z}+e^{-z}} $
- $ Relu $ :修正线性函数,该函数主要是为了对抗梯度消失。也就是当梯度反向传播到第一层的时候,梯度容易趋近于 $ 0 $ 或者一个极小值。
$ f(x)=max(0, x) $
在我们计算总的误差的时候,因为是一整个函数作用于输入数据,所以我们要调整这个方程中的所有变量,来最小化方程。
怎样最小化误差呢?正如我们在优化部分所学,我们通过损失函数的梯度来最小化误差。
如果我们的网络拥有多层权重和转移函数,我们最终需要通过链式法则来求导所有参数的梯度。
TensorFlow 激活函数
最常用的激活函数如下:
- $ tf.sigmoid(x) $ :标准的 $ sigmoid $ 函数;
- $ tf.tanh(x) $ :双曲正切函数;
- $ tf.nn.relu(x) $ :修正线性函数;
$ TensorFlow $ 中其他的函数:
- $ tf.nn.elu(x) $ :指数线性单元;如果输入小于 $ 0 $ ,返回 $ exp(x)-1 $ ;否则,返回 $ x $ ;
- $ tf.softsign(x) $ :返回 $ frac{x}{abs(x)+1} $ ;
- $ tf.nn.bias_add(value,bias) $ :增加一个 $ bias $ 到 $ value $ 。
TensorFlow 中损失优化方法
- $ tf.train.GradientDescentOptimizer(learning_rate, use_locking, name) $ :原始梯度下降方法,唯一参数就是学习率。
- $ tf.train.AdagradOptimizer $ :自适应调整学习率,累加历史梯度的平方,作为分母,防止有些方向的梯度值过大,提高优化效率,善于处理稀疏梯度。
- $ tf.train.AdadeltaOptimizer $ :扩展 $ AdaGrad $ 优化方法,只累加最近的梯度值,而不对整个历史上的梯度值进行累加。
- $ tf.train.AdamOptimizertf.train.AdamOptimizer. (learningrate, beta1, beta2, epsilon, use locking, name) $ :梯度的一阶矩估计和二阶矩估计动态调整每个参数的学习率。 $ Adam $ 是自适应矩估计( $ Adaptive Moment Estimation $ )的首字母缩写。
最后
以上就是聪慧飞鸟为你收集整理的神经网络的基本概念(以及tensorflow库)的全部内容,希望文章能够帮你解决神经网络的基本概念(以及tensorflow库)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复