zl程序教程

您现在的位置是:首页 >  后端

当前栏目

江辉老师分享“自然语言处理的通用深度学习方法”

方法学习 处理 分享 深度 通用 自然语言 老师
2023-09-11 14:19:11 时间
6月5号,由阿里巴巴iDST邀请到了江辉老师,在北京阿里巴巴绿地中心阿里同学们做了一场A New General Deep Learning Approach for Natural Language Processing的讲座。

6月5号,由阿里巴巴iDST邀请到了江辉老师,在北京阿里巴巴绿地中心阿里同学们做了一场A New General Deep Learning Approach for Natural Language Processing的讲座。

DingTalk20170630102819.png

如今在NLP领域各种CNN,RNN及其变种网络层出不穷,但是它们在复杂度,模型训练等方面都有不少问题。在这样的现状下,能否有一种更简单的机制代替这样的复杂网络,同时又取得与其相当甚至更好的效果,这成为了很多人的诉求。

江辉老师直接切入了NLP的痛点之一——变长编码(variable-length encoding)。即NLP需要处理的往往不是定长(fixed-size)的数据,而是变长的短语,句子,段落甚至篇章。也是因为变长编码的原因,才使得NLP领域大量引入CNN和RNN模型。
DingTalk20170629102441.png

于是江辉老师及其团队,提出了FOFE-net架构,即FOFE(Fixed-size Ordinally-Forgetting Encoding) + DNN,来解决变长编码问题,同时降低模型复杂度,提高训练速度甚至整体效果
DingTalk20170629103259.png

FOFE是一种简单精妙的rule-base编码方式。上图中,左侧1-of-K是传统的one-hot编码,右侧是FOFE编码的计算过程的例子,下方是计算公式,公式中,z是整个编码,t表达不同的时刻,e是当前时刻的词的one-hot向量。运算当前t时刻的FOFE等于上个时刻t-1的FOFE编码乘上一个打折系数(遗忘系数)alpha,然后加上t时刻词的one-hot,通俗的说就是,在one-hot的基础上利用了数值的大小表明了词的位置信息

FOFE是简单的,同时是精妙的,江辉老师也给出了FOFE的理论证明
DingTalk20170629104721.png

解决了变长编码到定长编码的问题,那么后续只需要使用DNN(多层)就能完成很多任务,此次分享中,江辉老师展示了NLP的多个任务上使用FOFE-net和其他方法的结果对比
DingTalk20170629105039.png
(红色部分为重点介绍的任务)

由于文章篇幅有限,本文仅详细讲述Word Embedding任务,其他任务仅简单描述方法和结果
DingTalk20170629105256.png

用了FOFE编码后Word Embedding变得非常简单,甚至并不需要深度学习相关的做法就能达到很好的性能。如图上所示,词表的长度为K,对于每个词w,我们使用该词左右两侧的若干词做FOFE编码,如果该词出现多次,那么left FOFE和right FOFE则是所有出现词w的上下文FOFE编码的平均(该做法只是策略之一),得到词到词context FOFE编码的矩阵后(K * 2K,2K是因为左右两个FOFE长度),使用SVD等sparse to dense的手段就能得到Word Embedding

DingTalk20170629105912.png

这种简单的方式得到的效果轻松超越了word2vec,GloVe等方法

除此外江辉老师还介绍了NLP中不少任务上FOFE-net的做法和表现(下面只列举部分):

语言模型。使用FOFE方式编码词w历史的词,然后经过DNN预测下一个词的概率分布。在Google-1B的数据上,表现出惊人效果(超越绝大多数方法,并与谷歌的最好算法相当),并且训练时间上大大降低(google使用32GPU,FOFE使用1GPU)。 命名实体识别。假定某个词序列S=wn~wn+m为实体,使用FOFE编码S左右两侧的context,作为特征进入DNN,输出判断该词序列S是否是实体,是何种实体。在CoNLL03任务上,得到不错的效果。 信息抽取。在2015 KBP-EDL,2016 KBP-EDL上表现不俗。

还有不少任务,如指代消解,文本分类,实体链接,句法分析等都在分享中有分析和对比,由于篇幅原因不能一一列举

江辉老师的分享非常精彩,虽然只有一个小时左右,干货多多,让人意犹未尽。
QA环节也有热烈的讨论:

问:FOFE编码在处理长句子时,是否会因为alpha不断打折而导致浮点精度问题丢失了一些词的信息?答:可以采用双向的FOFE编码减缓浮点精度问题 问:FOFE编码是否能再进入RNN,CNN然后效果是否会进一步提升?答:这个工作有学生做过,训练速度下降了,但是效果并没有好

如有不对,欢迎评论区拍砖

问:如何在使用FOFE编码的同时融入更多其他信息,如词的标签,词性等,因为FOFE编码之后已经是整个sentence粒度,而词的标签还停留在word粒度?答:使用相同的编码方式编码额外的信息,如FOFE词性vector,FOFE词标签vector等; 问: 为什么FOFE-net会得到更优的性能?答:猜测。FOFE极大简化了网络复杂度,使得网络被训练得非常好,换句话说CNN和RNN这样得复杂网络在现有的BP算法下,很有可能没有被训得很好。这样的简化网络结构换取效果提升的思路貌似是个不错的方向

The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models


PyTorch深度学习实战 | 自然语言处理与强化学习 PyTorch是当前主流深度学习框架之一,其设计追求最少的封装、最直观的设计,其简洁优美的特性使得PyTorch代码更易理解,对新手非常友好。 本文主要介绍深度学习领域中自然语言处理与强化学习部分。
深度学习教程 | 自然语言处理与词嵌入 本节介绍自然语言处理的文本表示与词嵌入相关知识,包括:词嵌入与迁移学习/类比推理,词嵌入学习方法,神经概率语言模型,word2vec(skip-gram与CBOW),GloVe,情感分析,词嵌入消除偏见
【资源】用深度学习解决自然语言处理中的7大问题,文本分类、语言建模、机器翻译等 本文讲的是用深度学习解决自然语言处理中的7大问题,文本分类、语言建模、机器翻译等,自然语言处理领域正在从统计学方法转向神经网络方法。在自然语言中,仍然存在许多具有挑战性的问题。但是,深度学习方法在某些特定的语言问题上取得了state-of-the-art的结果。