keras深度学习——神经网络基础

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

神经网络是一种性能强大的学习算法,其灵感来自大脑的运作方式。类似于神经元在大脑中彼此连接的方式,神经网络获取输入,通过某些函数在网络中进行传递,连接在其后的一些神经元被激活,从而产生输出。

简单神经网络的架构

人工神经网络受到人脑运作方式的启发。从本质上讲,它是对线性回归和逻辑回归的一种改进,神经网络在计算输出时引入了多种非线性函数。此外,神经网络在修改网络体系结构以利用结构化和非结构化数据跨多个域解决问题方面具有极大的灵活性。

函数越复杂,网络对于输入的数据拟合能力就越大,因此预测的准确性就越高。

前馈神经网络的典型结构如下:

网络连接.png

神经网络中的层(layer)是一个或多个节点(计算单元)的集合,层中的每个节点都连接到下一层中的每个节点。输入层由预测输出值所需的输入变量组成。

输出层中节点的数量取决于我们要预测连续变量还是分类变量。如果输出是连续变量,则输出层一个节点。

如果输出结果是n个类别的预测类的分类,则输出层中将有n个节点。隐藏层用于将输入层的值转换为高维空间中的值,以便我们可以从输入中了解数据的更多特征。隐藏层中节点的工作方式如下:

全连接节点单元.png

在上图中, x 1 , x 2 , . . . , x n x_1, x_2, ..., x_n 是自变量, x 0 x_0 是偏置项,类似于线性方程 y = k x + b y=kx+b 里的 b b w 1 , w 2 , . . . , w n w_1, w_2, ..., w_n 是赋予每个输入变量的权重。如果 a a 是隐藏层中的节点之一,则计算方法如下所示:

a = f ( w i N w i x i ) a=f(\sum _{w_i} ^N w_ix_i)

  f f 函数是激活函数,用于在输入和它们相应的权重值的总和上引入非线性。可以通过使用多个隐藏层实现更强的非线性能力。

综上,神经网络是相互连接的层中节点权重的集合。该集合分为三个主要部分:输入层,隐藏层和输出层。神经网络中可以具有n个隐藏层,术语“深度学习”通常表示具有多个隐藏层的神经网络。 当神经网络需要学习具有复杂上下文或上下文不明显的任务(例如图像识别)时,就必须具有隐藏层,隐藏层也被称为中间层(不是输入或输出的层)。

训练神经网络

训练神经网络实际上就是通过重复两个关键步骤来调整神经网络中的权重:正向传播和反向传播。 

在正向传播中,我们将一组权重应用于输入数据,将其传递给隐藏层,对隐藏层计算后的输出使用非线性激活,通过若干个隐藏层后,将最后一个隐藏层的输出与另一组权重相乘,就可以得到输出层的结果。对于第一次正向传播,权重的值将随机初始化。

在反向传播中,尝试通过测量输出的误差,然后相应地调整权重以降低误差。神经网络重复正向传播和反向传播以预测输出,直到获得令误差较小的权重为止。

神经网络的应用

最近,神经网络在各种应用中的广泛采用。神经网络可以通过多种方式进行构建。以下是一些常见的构建方法:

网络架构.png

底部的紫色框代表输入,其后是隐藏层(中间的黄色框),顶部的粉色框是输出层。一对一的体系结构是典型的神经网络,在输入和输出层之间具有隐藏层。不同体系结构的示例如下:

架构 示例
one-to-many 输入是图像,输出是图像的预测类别概率
many-to-one 输入是电影评论,输出评论是好评或差评
many-to-many 将一种语言的句子使用神经网络翻译成另一种语言的句子

现代神经网络中经常用到的一种架构称为卷积神经网络(Convolutional Neural Networks, CNN),可以用来理解图像中的内容并检测内容所在的位置,该体系架构如下所示(在之后的学习中会进行详细介绍):

CNN.png

神经网络在推荐系统,图像分析,文本分析和音频分析的都有着广泛的应用,神经网络能够灵活地使用多种体系结构解决问题,可以预料的是,神经网络的使用范围将会越来越广。

猜你喜欢

转载自juejin.im/post/7083016733363011620