购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

3.1 人工神经网络和神经语言模型

传统的机器学习需要手动地去进行特征工程(Feature Engineering),即通过人工经验和知识去提取、整合、总结、处理数据的特征,然后输入到模型中进行学习和预测。这种方式在面对高维度、非线性数据时,容易出现维度灾难、过拟合等问题,同时也需要大量的时间和精力去设计和调试特征。与之相对的,深度神经网络则可以采用端到端的形式去对数据进行学习和泛化,自动地捕捉数据中的关键特征,进而实现更高水平的识别、分类、预测等任务。深度神经网络在计算机视觉、自然语言处理、语音处理等领域的应用场景下均展现出了突破性的效果,在现代人工智能领域占有重要地位。本章将介绍神经网络的发展历程,经典神经网络的计算原理以及基于神经网络的语言建模方法。

3.1.1 人工神经网络

生物神经网络由一组化学连接或功能相关的神经元组成。单个神经元可以连接到许多其他神经元,并且网络中的神经元和连接的总数可能是无限的。连接,又称为突触,通常是从轴突到树突形成的。突触除了接收电信号外,还要接收来自神经递质扩散的其他形式的信号。

人工神经网络(Artificial Neural Network, ANN),简称神经网络,是一种模仿生物神经网络的结构和功能的计算模型。神经网络由大量的人工神经元联结进行计算。每个节点包含一种特定的输出函数,称为激活函数。每两个节点间的连接都代表一个对于通过该连接信号的加权值,也被称为权重,这相当于人工神经网络的记忆。网络的输出则根据网络的连接方式、权重和激励函数的不同而不同。而网络自身通常都是对自然界某种算法或者函数的逼近,也可能是对一种逻辑策略的表达。

人工神经网络的基本单元是神经元模型。神经元模型是一个包含输入、输出与计算功能的模型。输入可以类比为神经元的树突,而输出可以类比为神经元的轴突,计算则可以类比为细胞核。典型的神经元模型的两层神经元之间通过有向箭头连接,每一个连接上都赋有权重。神经网络的训练就是让权重的值调整到最佳,以使得整个网络的预测效果最好。在其他绘图模型里,有向箭头可能表示的是值的不变传递。而在神经元模型里,每个有向箭头表示的是值的加权传递。如图3.1所示, a 表示输入, w 表示权重, z 表示加权后的输出。

图3.1表示连接的有向箭头可以理解为,在初端,传递的信号大小是 a ,端中间有加权参数 w ,因此在连接的末端,信号的大小变成 a × w 。输出 z 是在输入与权重的线性加权求和后叠加了一个函数 g 的值。在人工神经元模型里,函数 g 是sgn函数,也就是符号函数,当输入大于0时,输出1,否则输出0。将sum函数与sgn函数合并到一个圆圈里,代表神经元的内部计算。神经元可以看作一个计算与存储单元,计算是指神经元对其输入进行计算,存储是神经元会暂存计算结果,并传递到下一层。

图3.1 神经元模型

1958年,计算科学家Rosenblatt [1] 提出了由两层神经元组成的神经网络,并给它起名为感知器(Perceptron)。感知器是当时首个可以自主学习的人工神经网络。感知器中有两层,分别是输入层和输出层。输入层里的“输入单元”只负责传输数据,不做计算。输出层里的“输出单元”则需要对前面一层的输入进行计算。图3.2所示为带有两个输出单元的两层神经网络。

图3.2 两层神经网络(感知器)

其中输出单元 z 1 z 2 的计算公式如下:

感知器与神经元模型不同,感知器中的权重是通过训练得到的。因此,感知器类似一个逻辑回归模型,可以做线性分类任务。

Minsky和Papert [2] 在1969年出版的书籍中用详细的数学推导证明了感知器的优势和不足之处,尤其是感知器无法解决异或简单分类任务。虽然两层神经网络无法解决异或问题,但当增加一个计算层后,三层神经网络不仅可以解决异或问题,还具有非常好的非线性分类效果。然而,多层神经网络的参数更新仍然没有高效的解法。1986年,Rumelhart和Hinton等 [3] 提出了反向传播(Back Propagation, BP)算法,解决了多层神经网络所需要的复杂计算量问题,从而带动了业界使用多层神经网络研究的热潮。目前,多层神经网络被广泛应用,它也被称为多层感知器(Multilayer Perceptron, MLP),三层神经网络结构如图3.3所示。

图3.3 三层神经网络(多层感知器)

3.1.2 神经语言模型

正如第2章所介绍的,语言模型是自然语言处理领域的基础问题,在词性标注、句法分析、机器翻译、信息检索等任务中起到了重要作用。语言模型可用来计算一段文本出现的概率,以及衡量该文本的流畅度和合理性。给定 n 个词语构成的句子 w 1 w 2 w n ,其出现的可能性可以根据链式法则来进行计算:

在传统语言模型的建模过程中,往往基于相对频率的最大似然估计(Maximum Likelihood Estimation, MLE)方法估计条件概率 z 1 = g ( a 1 w 1,1 + a 2 w 1,2 + a 3 w 1,3 ):

由于 i 越大,词组 w 1 ,…, w i 出现的可能性越小,最大似然估计越不准确。因此,典型的解决方法是采用 n -1阶的马尔可夫链对语言模型进行建模,即 n 元语法( n -gram)的语言模型。假设当前词的出现概率仅与前 n -1个词有关:

n =1,表示一元语言模型(unigram),假设词语之间是相互独立的; n =2表示二元语言模型(bigram),当前词的出现概率与前一个词有关。 n =3、 n =4和 n =5是使用最广泛的几种 n 元语言模型。这种近似估计方法使得词序列的语言模型概率计算成为可能。然而, n -gram对词的表示是one-hot的离散表示,存在如下问题:参数空间随着 n 的增大成指数增长,当词典数量较大时存在维度灾难问题;无法理解词与词之间的内在联系,无法建模出多个相似词的关系。

Bengio等 [4] 提出了一种基于前馈神经网络(Feed-Forward Neural Network, FNN)的概率语言模型(见图3.4)。他们在该模型中提出了一种词的分布式表示方法来缓解词典的维数灾难问题。具体来说包括三个步骤:首先,为词汇表中的每个词分配一个分布式的词特征向量,接着为词序列中出现的词以词特征向量形式表示联合概率函数,最后同时学习词特征向量和联合概率函数的参数。词向量对深度学习在自然语言处理中的应用起了很大的作用,也是获取词的语义特征的有效方法。

图3.4 基于神经网络的概率语言模型 [ 4 ]

该网络的输入是 w t-n +1 ,…, w t -1 这前 n -1个词,输出是模型预测的下一个单词 w t

计算过程为

第一步,将输入的 n -1个单词索引转换为词向量 C ( i ),然后将这 n -1个向量进行拼接运算操作,形成一个( n -1)× m 大小的输入矩阵,用 C 表示。

第二步,将词向量矩阵 C 送入隐藏层进行计算,所用的是tanh双曲正切函数,隐藏层的输出为

第三步,将hidden out 送入输出层,输出层的每个节点 y i 表示预测下一个单词 i 的概率,输出 y 的计算公式为

C ( i )是单词 w 对应的词向量,其中 i 为词 w 在整个词汇表中的索引; n -1是输入的单词个数; m 是词向量的维度,一般大于50。在隐藏层部分, H 是隐藏层的权重; d 是隐藏层的偏置项; h 是隐藏层的神经元个数。在输出层部分, U 是输出层的权重; b 是输出层的偏置项; W 是输入层到输出层的权重;| V |是输出层的节点个数,也是词汇表的大小,即语料库中去重后的单词个数。 BaCUvIQRsIscLJM1eqgNRXqKFqF5N1dEopGINOvv2HkRmaksYrIMyh5WvUOI+Qaf

点击中间区域
呼出菜单
上一章
目录
下一章
×