维基百科对深度学习的精确定义为“一类通过多层非线性变换对高复杂性数据建模算法的合集”。因为深度神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中基本上可以认为深度学习就是深度神经网络的代名词。从维基百科给出的定义可以看出,深度学习有两个个非常重要的概念,并将通过过具体样例------多层和非线性。那么为什么要强调这两个性质?先说明线性模型的局限性,再给出去线性化的方法,最后再说明使用多层的原因。
在线性模型中,模型的输出为输入的加权和。假设一个模型的输出y和输入xi满足以下关系,那么这个模型就是一个线性模型。
其中w_{i}, b \in R 为模型参数。被称之为线性模型是因为当模型的输入只有一个的时候,x和y形成了二维坐标系上的一条。类似地,当模型有n个输入时,x和y形成了n+1维空间中的一个平面。而一个线性模型中通过输入得到输出的函数被称之为一个线性变换。上面的公式就是一个线性变换。线性模型的最大特点是任意线性模型的组合仍然还是线性模型。
因为线性模型就能解决线性可分问题,而在深度学习面对的问题至少是无法通过直线(或者高维空间的平面)划分的。在现实世界中,绝大部分的问题都是无法线性分割的。
如果将每一个神经元(也就是神经网络中的节点)的输出通过一个非线性函数,那么整个神经网络的模型就不再是线性了。这个非线性函数就是激活函数。下图显示了加入激活函数和偏置项之后的神经元结构。
以下公式给出了神经网络结构加上激活函数和偏置项后的前向传播算法的数学定义:
相比于之前新的公式中增加了偏置项(bias),偏置项是神经网络中非常常用的一种结构。第二个改变就是每个节点的取值不再是单纯的加权和。每个节点的输出在加权和的基础上还做了一个非线性变换。下图展示了几种常用的非线性激活函数的的函数图像。
这些激活函数的函数图像都不是一条直线。所以通过这些激活函数。每一个节点不再是线性变换,于是整个神经网络也就不再是线性的了,加入ReLU激活函数之后,神经网络的前行传播算法的计算方法为:
输出层的公式为:Y=f\left(W_{1,1}^{(2)} a_{1,1}+W_{2,1}^{(2)} a_{1,2}+W_{3,1}^{(2)} a_{1,3}+b_{1}^{(2)}\right) 目前tensorflow提供了7中不同的非线性激活函数,tf.nn.relu、tf.sigmoid和tf.tanh是其中比较常用的几个。当然,tensorflow也支持使用自己定义的激活函数,下面的代码实现了神经网络的前向传播算法。
a = tf.nn.relu(tf.matmul(x, w1) + biases1)
y = tf.nn.relu(tf.matmul(a, w2) + biases2)
在神经网络的发展历史上,一个很重要的问题就是疑惑问题。神经网络的理论模型由 Warren McCulloch和Walter Pitts在1943年首次提出,并在1958年由Frank Rosenblatt提出感知机(perceptron)模型,从数学上完成了对神经网络的精确建模。感知机可以简单地理解为单层的神经网络。感知机会将输入进行加权和,然后再通过激活函数最后得到输出。这个结构就是一个灭有隐藏层的神经网络。在上世纪60年代,神经网络作为对人类大脑的模拟算法受到了很多关注。然而到了1969年,Marvin Minsky和Seymour Papert在Perceptrons:An Introduction to Computational Geometry一书中提出感知机无法模拟异或运算。
深层神经网络实际上有组合提取特征的功能。这个特征对于解决不以提取特征向量的问题(比如图片识别、语音识别等)有很大帮助。这也是深度学习在这些问题上更加容易取得突破性进展的原因。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有