深层神经网络的优化
深度学习两个非常重要的性质--多层和非线性
1、线性模型的局限性
只通过线性变换,任意层的全连接神经网络和单层的神经网络的表达能力没有什么区别,而且他们都只是线性模型。然而线性模型解决的问题是有限的。这就是线性模型最大的局限性。
2、激活函数来去线性化
如果每一个神经元的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性了。这个非线性函数就是激活函数。
目前TensorFlow提供了7种不同的非线性激活函数,tf.nnrelu、tf.sigmoid和tf.tanh是常用的几个。
激活函数常用的有:
RElu函数
sigmoid函数
tanh函数
当然TensorFlow也支持使用自己定义的激活函数。
在函数尾部添加偏置项也是神经网络中非常常用的一种结构。
代码展示:
a=tf.nn.relu(tf.matmul(x,w1)+biases1)
y=tf.nn.relu(tf.matmul(a,w2)+biases2)
3、损失函数定义
神经网络模型的效果以及优化的目标是通过损失函数(loss function)来定义的。
分类问题和回归问题是监督学习的两大种类。
分类问题的损失函数:交叉熵
Ps:交叉熵刻画的是两个概率分布之间的距离,然而神经网络的输出不一定是一个概率分布。
如何将神经网络的输出变成一个概率分布呢?softmax回归就是一个非常常用的方法。
回归问题的