机器学习领域一个最令人着迷的任务,就是训练机器理解人类交流能力的进步。在机器学习领域,这一分支被称为自然语言处理(Natural Language Processing)。
在我们深入研究之前,有必要了解一些基础知识。
语言是什么?
计算机如何理解语言?
计算机要处理任何概念,都必须以一种数学模型的形式表达这些概念。
什么是自然语言处理?
自然语言处理,或简称为NLP,被广泛地定义为通过软件对自然语言(如语音和文本)的自动操作。
基本的转换
分词,词干提取,词形还原
由于词干提取是基于一组规则发生的,因此词干返回的词根可能并不总是英语单词。 另一方面,词形还原可以适当地减少变形词,确保词根属于英语。
N-grams(N元模型)
将一门自然语言分解成n-gram是保持句子中出现的单词数量的关键,而句子是自然语言处理中使用的传统数学过程的主干。
转换方法
TF-IDF
TF-IDF是一种对词汇进行评分的方式,按照它对句子含义的影响的比例为单词提供足够的权重。得分是两个独立评分,词频(tf)和逆文件频率(idf)的乘积。
词频(TF):词频表示词语出现在一篇文章中的频率。
独热编码
独热编码是另一种以数字形式表示词语的方法。词语向量的长度等于词汇表的长度,每一个句子用一个矩阵来表示,行数等于词汇表的长度,列数等于句子中词语的数量。词汇表中的词语出现在句子中时,词语向量对应位置的值为1,否则为0。
图片来源 – 谷歌
词嵌入
为了便于理解,我们可以将嵌入看作是将每个单词投射到一个特征空间,如下图所示。
每个词被映射到一个特征空间里(性别,王室成员,年龄,食物等)
然而,事实上这些维度并不那么清楚或便于理解。但由于算法是在维度的数学关系上训练的,因此这不会产生问题。从训练和预测的角度来看,维度所代表的内容对于神经网络来说是没有意义的。
表示方法
词袋
词袋是一种以表格表示数据的方法,其中列表示语料库的总词汇表,每一行表示一个观察。单元格(行和列的交集)表示该特定观察中的列所代表的单词数。 它有助于机器用易于理解的矩阵范式理解句子,从而使各种线性代数运算和其他算法能够应用到数据上,构建预测模型。
下面是医学期刊文章样本的词袋模型示例
这种表示非常有效,并且负责为一些最常用的机器学习任务(如垃圾邮件检测,情感分类器等)生成模型。
-
它忽视了文本的顺序/语法,从而失去了单词的上下文。 -
这种表示方法生成的矩阵非常稀疏,并且更偏向于最常见的单词。试想,算法主要依赖于单词的数量,而在语言中,单词的重要性实际上与出现频率成反比。频率较高的词是更通用的词,如the,is,an,它们不会显着改变句子的含义。因此,重要的是适当地衡量这些词,以反映它们对句子含义的影响。
嵌入矩阵
为了将样本转换为其嵌入形式,将独热编码形式中的每个单词乘以嵌入矩阵,从而得到样本的词嵌入形式。
循环神经网络(RNN)
循环神经网络的的标准输入是一个词而不是一个完整的样本,这是概念上与标准神经网络的不同之处。这给神经网络提供了能够处理不同长度句子的灵活性,而这是标准神经网络无法做到的(由于它固定的结构)。它也提供了一个额外的在不同文本位置共享特征学习的优势,而这也是标准神经网络无法做到的。
循环神经网络把一个句子的不同单词在t时刻输入并且利用t-1时刻的激活值,下面的图详细展示了循环神经网络结构:
上述结构也被叫做多对多架构,也就是输入的数量等于输出的数量。这种结构在序列模型中是非常有用的。
除了上面提到的架构外,还有三种常用的RNN架构。
上图中,H表示激活函数的输出。
2.一对多的RNN:一对多架构指的是RNN基于单个输入值生成一系列输出值的情况。使用这种架构的一个主要示例是音乐生成任务,其中输入是jounre或第一个音符。
3.多对多(Tx不等于Ty)架构:该架构指的是读取许多输入以产生许多输出的地方,其中,输入的长度不等于输出的长度。使用这种架构的一个主要例子是机器翻译任务。
RNN的局限性
-
上述RNN架构的示例仅能捕获语言的一个方向上的依赖关系。基本上,在自然语言处理的情况下,它假定后面的单词对之前单词的含义没有影响。根据我们的语言经验,我们知道这肯定是不对的。 -
RNN也不能很好地捕捉长期的依赖关系,梯度消失的问题在RNN中再次出现。
门控循环单元(GRU)
它是对基本循环单元的一种修改,有助于捕获长期的依赖关系,也有助于解决消失梯度问题。
GRU增加了一个额外的存储单元,通常称为更新门或重置门。除了通常的具有sigmoid函数和softmax输出的神经单元外,它还包含一个额外的单元,tanh作为激活函数。使用tanh是因为它的输出可以是正的也可以是负的,因此可以用于向上和向下伸缩。然后,该单元的输出与激活输入相结合,以更新内存单元的值。
因此,在每个步骤中,隐藏单元和存储单元的值都会被更新。存储单元中的值在决定传递给下一个单元的激活值时起作用。
LSTM
在LSTM架构中,有一个更新门和一个忘记门,而不是像在GRU中那样只有一个更新门。
这种架构为存储单元提供了一个选项,可以保留t-1时刻的旧值,并将t时刻向其添加值。
关于LSTM的更详细的解释,请访问:http://colah.github.io/posts/2015-08-explanation – lstms/
双向RNN
在上述RNN架构中,仅考虑以前时间戳出现的影响。在NLP中,这意味着它只考虑了当前单词出现之前的单词的影响。但在语言结构中,情况并非如此,因此靠双向RNN来拯救。
双向RNN由前向和后向循环神经网络组成,并结合两个网络在任意给定时间t的结果进行最终预测,如图所示。
在这篇文章中,我试图涵盖自然语言处理领域中所有流行的相关实践和神经网络架构。对于那些对深入了解神经网络感兴趣的人,我强烈建议你们去 Coursera 上 Andrew Ng 的课程。
想要查看相关文献和参考内容?
点击【从基础到 RNN 和 LSTM,NLP 取得的进展都有哪些?】即可访问~
你可能错过了这些企业的秋招信息,新增B站、美团、携程、网易等(持续更新中…)
自今天开始,AI研习社会定期搜集并推送各大名企校招岗位和内推信息,同时也会邀请求职成功者和企业人力专家分享求职经验。另外,我们会在社区职荐版块更新 AI 企业校招和社招信息,欢迎有志于在 AI 行业发展的应届毕业生们来 AI 研习社投递简历噢~
点击链接可访问查看过去一段时间企业校招信息:https://ai.yanxishe.com/page/blogDetail/14121
雷锋网雷锋网(公众号:雷锋网)雷锋网
。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/137088.html