深层神经网络之一:深度学习与深层神经网络

维基百科对深度学习的精确定义为“一类通过非线性变换对高复杂性数据建模算法的合集”。因为深层神经网络是实现“多层非线性变换”最常用的一种方法,所以在实际中基本可以认为深度学习就是深层神经网络的代名词。从维基百科给出的定义可以看出,深度学习有两个非常重要的特性——多层和非线性。那为什么要强调这两个性质?下面将给出详细解释。

1.1线性模型的局限

在这里插入图片描述
从这个例子可以看到,虽然这个神经网络有两层(不算输入层),但是它和单层神经网络并没有什么区别。以此类推,只通过线性变换,任意层的全连接神经网络和单层神经网络模型的表达能力没有任何区别,而且它们都是线性模型。然而线性模型能够解决的问题是有限的。这就是线性模型最大的局限性,也是为什么深度学习要强调非线性。

1.2激活函数实现去线性化

之前样例中将神经元结构的输出置为所有输入的加权和,这导致整个神经网络是一个线性模型。如果将每一个神经元(也就是神经网络中的节点)的输出通过一个非线性函数,那么整个神经网络的模型也就不再是线性的了。这个非线性函数就是激活函数。下图展示了加入激活函数和偏置项之后的神经元结构:
在这里插入图片描述
其数学定义为:
在这里插入图片描述
与之前定义的线性函数相比有两个改变。第一是新的公式中增加了偏置项(bias),偏置项是神经网络中非常常用的一种结构。第二个是每个节点的取值不再是单纯的加权和。每个节点的输出在加权和的基础上还做了一个非线性变换。下图显示了几种常用的非线性激活函数的函数图像:
在这里插入图片描述
此处加入激活函数后前向传播算法的计算省略,直接以下图网络为例,看TensorFlow如何实现
在这里插入图片描述
目前TensorFlow提供了7种不同的非线性激活函数,tf.nn.relu、tf.sigmoid和tf.tanh是其中比较常用的几个。TensorFlow也支持使用自己定义的激活函数。以下代码展示了如何通过TensorFlow实现上图前向传播算法。

a=tf.nn.relu(tf.matmul(x,w1)+biases1)
y=tf.nn.relu(tf.matmul(a,w2)+biases2)

以上代码可以看出,TensorFlow可以很好支持使用了激活函数和偏置项的神经网络。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值