一. 摘要
这里将继续介绍NLP算法体系:基于人工神经网络(Artinci Neural Network)的深度学习方法。人工神经网络思想来源于仿生学对大脑机制的探索,即希望通过对大脑的模拟达到智能的目的。神经网络理论与技术就是在这样的目标下摸索发展出来的。神经网络是由具有自适应的单元组成的,广泛的、并行的、互联的网络,它的结构模拟了生物神经网络系统对真实世界所做出的交互反应。
二. 神经网络的组成
神经元模型:首先简单的了解以下构成神经网络的最基础单元:神经元。每个神经元与其他神经元相连,当它处于激活状态时,就会向相连的神经元发送相应信号。从而改变其他神经元的状态。如果某个神经元的信号超过某个阈值。那么将被激活,再接着发送给其他神经元。如图1所示:
image.png
图1:神经元结构
之前我们了解到的GRU和LSTM网络都是由这一基本结构构成,神经网络的任何神经元都可以表述为上述的形式。该单元主要由输入变量、带权参数和激活函数组成。首先是x1,x2,x3带权重的输入变量,该变量的取值来自前面一层所有变量与权重的乘积,然后再求和,在数学上表示为下式:
image.png
其中,x为自由的输入变量,xl为当前l层,这里的累加求和为前面一层所有变量与权重的乘积,n为神经元个数。在实践当中,神经网络的输入层由训练样本给定。隐含层和输出层的x取值由前一层计算得到。其中b为偏置参数。
激活函数:理想中的激活函数是如图2所示的跃迁函数,它将输入值映射到 O或1,很直观的1对应着神经元激活状态,0则表示神经元处于失活状态。然而由于跃迁函数不连续且非光滑(无法完美表达大脑神经网络的连续传递过程),因此实际常用Sigmoid函数作为激活函数。典型的Sigmoid函数如图3所示,它把可能的数压缩进(0,1)输出值之间,因此又名挤压函数(squashing function)。
image.png
图2:跃迁函数图
image.png
图3:sigmoid函数图
将许多这样的神经元按照一定的层次结构组织起来,就得到了人工神经网络。事实上,我们可以先不用考虑神经网络是否完全真实地模拟了人脑运作的机制,只需要从数学角度将神经网络看作有许多参数的数学模型来看待,我们会发现这个模型是由许多个函数不断嵌套而成。
感知机与多层网络:输入层接收外界的输入信号然后传递给输出层,输出层为逻辑单元,感知机的输入是几个二进制, xi输出是一位单独的二进制。
图4中的感知机有三个输入:x1、x2、x3。通常,它可以根据数据的维度设置数量。这里新增了一种计算输出的简单规则,他引入了权重(weight),w1,w2,...,wj等实数来表示各个输人对于输出的重要程度。
image.png
图4:多层感知机结构图
神经元的输出是0或者l,分别代表未激活与激活状态,由加权和的值是否小于或者大于某一个阈值(threshold value)决定。和权重一样,阈值也是一个实数,同时它是神经元的一个参数。使用更严密的代数形式来表示:
image.png
对于上面决策的式子,基本的思想就是:它是一个通过给每个维度数据赋予不同权重从而做出决策的机器。如果我们用现实中的一个例子思考,假设周末我想要周末的时候和朋友出去踢足球,对于这样一个事件是否能够成功实现,也取决与很多的外部因素:
- 周末是否有其他事情;
- 朋友是否有时间;
- 天气是否合适等等...
我们可以参考这三个因素的结果,就可以判断出该事件可不可行。也需要通过调整权重和阈值的大小,得到不同的决策模型。
很显然,感知机不能完全模拟人类的决策系统。但是,这个例子清晰地阐明了感知机如何依据不同权重来达到做出决策的目的。一个由感知机构成的复杂网络能够做出更加精细的决策,是可解释得通的。在图5所示这个网络中,第一层感知机,通过赋予输入的权重,做出三个非常简单的决策。第二层感知机呢?每一个第二层感知机通过赋予权重给来自第一层感知机的决策结果做出决策。通过这种方式,第二层感知机可以比第一层感知机做出更加复杂以及更高层次抽象的决策。第三层感知机能够做出更加复杂的决策。通过这种方式,一个多层网络感知机可以做出更加精细的决策。
image.png
图5:多层感知机网络
图5网络最左边的是输入层神经元,用于接收外界输入信息,中间为隐藏层,对信号进行一定加工与转换,最右边为输出层神经元,最终结果由输出层神经元输出表示。换言之,输入层神经元接收输入,不进行函数处理,隐藏与输出层包含功能神经元。因此,通常被称之为两层网络。一般情况下,只需要包含隐藏层,即可称为多层网络。神经网络的学习过程,就是根据训练数据来调整神经元之间的“权重”以及每个功能神经元的阈值。换言之,神经网络学到的东西,蕴含在权重和阈值当中。
设计网络的输入层通常是非常直接的。例如,我们要尝试识别一张输入图像是否有“1”。很自然的,我们可以将图片像素的强度进行编码作为输入层。如果图像是64×64的灰度图.那么我们需4096=64×64个输入神经元。每个强度都取01之间适合的值。输出层只需要一个神经元,当输出值小于0.5,表示该图像不是“1”,反之则表示输出的图像是“1”。
相较于完全固定的输入层和输出层,隐截层的设计是个难题,特别是通过一些简单的经验来总结隐藏层的设计流程不一定总是可行的。所以神经网络调参师己径为隐藏层开发了许多设计最优方法,这有助于达到期望的效果。
目前为止我们讨论的神经网络,都是的面一层作为后面一层的输入,这种经典的网络被称为前馈神经网络。这也就意味着网络中没有回路,信息总是向前传播,从不反馈。
总结:
以上部分的组合就构成了各种功能不同的神经网络。神经网络也就是一个算法框架,这个框架的执行大致可以分为如下两个阶段:训练阶段(training):是指网络输入样本数据作为初始数据,通过激活函数与网络连接。通过迭代求得最小化损失。这时网络会最终收效,学习到权重向量,作为分类器的参数。推导阶段(infer)。 使用这个训炼好的网络对实际的数据进行分类成回归,也可以称为分类阶段。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。