玖叶教程网

前端编程开发入门

深度神经网络 (Deep Neural Networks)

1.介绍

如何构建能够学习复杂关系的神经网络,这里的关键思想是模块化(modularity),从简单的功能单元构建一个复杂的网络。我们已经了解了线性单元是如何计算线性函数的——现在我们将了解如何组合和修改这些单元,以建立更复杂的关系模型。

2.层

神经网络通常把神经元组织成层(layers)。当我们把具有一组公共输入的线性单元集合在一起时,我们得到了一个稠密层(dense layer)。

形成一个接收两个输入和一个偏置的两个线性单元的密集层。

你可以把神经网络中的每一层看作是执行某种相对简单的转换。神经网络通过层层叠加,可以以越来越复杂的方式变换输入方式。在一个训练有素的神经网络中,每一层都是一个变换,使我们更接近一个解。

多种层次

Keras中的“层”是一种非常普遍的类型。基本上,层可以是任何类型的数据转换。许多层,像卷积层和递归层(convolutional and recurrent),通过使用神经元来转换数据,并且主要在它们形成的连接模式上有所不同。其他的则用于特征工程或只是简单的算法。

3.激活函数(Activation Function)

然而,事实证明,致密层本身永远无法把我们从线和平面的世界中带出来。我们需要的是非线性的东西。我们需要的是激活函数。

没有激活函数,神经网络只能学习线性关系。为了拟合曲线,我们需要使用激活函数。

一个激活函数就是我们应用于每一层输出(激活)的函数。最常见的是整流函数max(0,x)

整流函数有一个图形,它是一条负部分“整流”为零的线。将函数应用于神经元的输出将使数据发生变化,使我们远离简单的线条。

当我们把整流器连接到一个线性单元上时,我们得到一个整流的线性单元或ReLU(因此,通常将整流函数称为“ReLU函数”。)将ReLU激活应用于线性单元意味着输出变为max(0,w*x+b),我们可以在如下图中绘制:

堆积密集层,现在我们有了一些非线性,让我们看看如何堆叠层以获得复杂的数据转换。一堆密集的层构成了一个“完全连接”的网络。输出层之前的层有时被称为隐藏层,因为我们从不直接看到它们的输出。

如果最后的(输出)层是一个线性单元(意思是没有激活函数),那么这个网络适用于回归任务,在回归任务中,我们试图预测一些任意的数值。其他任务(如分类)可能需要在输出上使用激活函数。


4.例子

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言