自然语言处理学习笔记十三(Deep Learing 与 NLP )

一、 传统方法的局限性

         1.1  数据稀疏

        由于语言是离散的符号系统,每个字符与单词都是离散型随机变量。任何机器学习模型只接受向量,将文本转换成向量,表示为元素为0 1 的二进制向量,然后不同单词的相似句子却是不同的向量,现实中有无数个单词,从而会有严重的数据稀疏问题。

        1.2  特征模板

        为了建模语言的复合性,传统自然语言处理依赖于手工制定的特征模板,这些模板也是各种单词的组合,组合太多。同样也会带来数据稀疏的问题。

       复杂的特征模板会加重数据稀疏问题;高级的NLP任务需要复杂的特征。即便数据充裕、标注语料库足够,但高级的NLP任务依然无法通过传统机器学习来解决。原因还是在于很难设计出有效的特征模板。而且一个特征模板也不能适用于各个领域,不存在一种放之四海而皆准的特征模板。

      1.3 误差传播

       现实中的项目需求通常需要经过中文分词、词性标注,并根据词性标注的结果和停用词词典过滤掉一些不重要的词语,并经过卡方检验等方法筛选特征,最后用朴素贝叶斯模型或者支持向量机等机器学习模块进行分类预测。这一些列的流水线作业方式存在严重的误差传播问题。

二、深度学习的优势

       2.1  深度学习

       它是指利用具有一定深度的模型来自动学习事物的向量表示的一种学习方式。通过多层感知机提取向量是深度学习的精髓

       一个感知机通常称为一个神经元,神经元在输入达到足够强度时会被激活,即输出显著大于0的值,否则保持抑制状态,即输出接近0的值。在计算机中,通常哦那个给一个非线性的S形函数来提模拟这种激活机制,称为激活函数

       感知机的结构分层:最底层的输入层、中间的隐藏层、顶层的输出层。

       多层感知机也被称为神经网络,是深度学习的基础元件。而深度学习中的深度指的是多层感知机对特征向量的多层次提取。

     2.2  用稠密向量解决数据稀疏

      由于每一层都在上一层的基础上发生了k次重组,一个具备n个隐藏层的神经网络对原始特征进行了k的n次重组,通过多层学习得到的稠密向量短小精悍,其对应低维空间的一个点,无论数据所处的原始空间的维数有多高,数据的分布有多稀疏,将其映射到低维空间后,彼此的距离就会缩小,相似度就会体现出来,从而解决稀疏问题。

     2.3  多层网络自动提取特征表示

       神经网络两层之间一般全部连接,并不需要人们根据具体问题具体设计连接方式,这些隐藏层会根据损失函数的梯度自动调整多层感知机的权重矩阵,从而自动学习到隐藏层的特征表示。自动提取的能力可以将旧模型应用于新领域,不需要具备相关的领域知识,神经网络会根据训练数据自动找到合适的特征,不需要人工参与。

       2.4 端到端的设计

        由于神经网络各层之间、各个神经网络之间的"交流语言"为向量,因此可以很轻松地将多个神经网络组合起来,形成一种端到端的设计。

三、词向量

     3.1  基本概念

           作为传统机器学习与深度学习的桥梁,词向量是入门深度学习的第一站。

           词向量的训练方法有很多,word2vec是比较著名的一种。

           word2vec包含两种模型:CBOW模型、Skip-gram模型

                    CBOW模型:通过上下文来预测当前值。

                    Skip-gram模型:用当前词来预测上下文。

     3.2  单词语义相似度

           通过词向量来查找与给定单词意义相近的前N个单词。

     3.3  词语类比

           将两个词语的词向量相减,就会产生一个新向量,通过与该向量做点积,可得到一个单词与这两个单词的差值之间的相似度。

     3.4  短文本相似度

          利用词袋模型的思想,将短文本中的所有词向量求平均,就能将这段短文本表达为一个稠密向量。以此来衡量任意两端短文本之间的相似度。

四、基于神经网络的高性能依存句法分析器

         2014年发表的word2vec论文掀起了一股从独热向量到稠密向量的改革浪潮,研究者发现,只要将稀疏的特征向量替换成类似于词向量的稠密向量,就可得到更高的性能。如 Arc-Standard转移系统、Arc-Eager转移系统。两个转移系统的逻辑不同,Arc-Eager自顶而下构建,Arc-Standard要求右子树自底而上构建。两者的复杂度都是O(n),但Arc-Standard更简洁,更受欢迎。

五、自然语言处理进阶

       神经网络的两个常用的特征提取器: 用于时序数据的递归神经网络RNN 和 用于空间数据的卷积神经网络CNN

       RNN 可以处理变长的输入,适用于文本,特别是LSTM网络,可以记忆大约200左右的单词,为建模句子中的单词之间的长距离依存创造了条件。但是RNN难以并行化。CNN可捕捉文本中的n元语法,并且在并行化方面具备天然优势。因此,在句子颗粒度上一般进行的基础NLP任务经常采用RNN来实现。

      word2vec、fastText(FaceBook通过词语内部的构词信息引入Skip-gram模型得到的,可以为任意词语构造词向量,而不要求该词语一定得出现在语料库中)。这两者都无法解决一词多义的问题。多义词的消歧必须根据给定句子的上下文才能进行,因此催生了一系列能够感知上下文的词语表示方法,如 华盛顿大学的ELMo,是一个在大规模纯文本上训练的双向LSTM语言模型。谷歌的BERT模型是通过一种高效的双向Transformer网络同时对上下文建模。

      目前基于深度学习的依存句法分析器飞速发展,准确率已经快触及人工准确率的天花板,目前主流的研究方向已经转为语义依存分析。目前最准确的方法是斯坦福大学的BiAffineAttention.

      在深度学习时代,一些比较难的NLP任务,如自动问答和文档摘要,显得非常简单。在机器翻译领域,谷歌早已利用基于神经网络的机器翻译技术淘汰了基于短语的机器翻译技术。目前,学术界的流行趋势是利用Transformer和注意力机制提取特征。

       总体上,自然语言处理已经由过去的特征工程转变为结构工程。研究者依靠自己的语言学知识设计符合某种语言学先验的网络结构,并且通过大量的试验验证这种网络结构的有效性。然而一些更前沿、更本质的工作正在研究如何教机器自动设计神经网络。

       

       

   

你可能感兴趣的:(自然语言处理,人工智能,nlp)