深层神经网络
深度学习与深层神经网络
深度学习(deep neural network)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。
– wikipedia定义 原文链接
由于实践中深层神经网络是实现“多层非线性变换”的最常用方法,所以通常可以认为深度学习就是深层神经网络的代名词。大家请注意上面定义的两个关键词: 多层
和 非线性
这里先卖个关子,之后会有解释。
线性模型的局限性与激活函数
线性模型的最大特点是:任意线性模型的组合任然是线性模型。
举个例子,之前向后传播算法中计算公式为:
$ a^{(1)} = xW^{(1)} , y = a^{(1)}W^{(2)}$
整理后有:
$ y = xW^{(1)}W^{(2)}$
令 $W^{‘} = W^{(1)}W^{(2)}$ 则有:
$ y = xW^{‘}$
依然是线性模型的定义。
线性模型的最大局限性是模型能够解决的问题是有限的。
具体例子请参看:
tensorflow playground
在激活Activation函数选择 线性(linear), 然后开始学习,最后的结果并不会按照预期将数据区分。当选择其他非线性激活函数(如 Sigmoid, Tanh, ReLU)进行模型训练时就可以达到我们预想的效果。
激活函数 (非线性)
加入偏置项和激活函数函数的向后传播的神经网络模型:
$ f(\sum_{i = 0}^n x_iw_i + b) $
其中 $b$ 为偏置项(bias)
$ f() $ 为激活函数
常见的激活函数有:
函数名 | 函数式 | tensorflow使用方法 |
---|---|---|
ReLU | $ f(x) = max(x,0) $ | tf.nn.relu |
sigmoid | $ f(x) = \frac{1}{1+e^{-x}} $ | tf.sigmoid |
tanh | $ f(x) = \frac{1-e^{-2x}}{1+e^{-2x}} $ | tf.tanh |
除此之外tensorflow还提供4个激活函数,其中以上三个为常用函数。 |
多层网络解决异或运算
感知机(perceptron)模型即单层的神经网络是无法模拟异或运算的,这里的数学证明过程从略。
这里使用tensorflow playground来侧面验证感知机无法模拟异或运算 tf playground