1. AutoEncoder介绍

2. Applications of AutoEncoder in NLP

3. Recursive Autoencoder(递归自动编码器)

4. Stacked AutoEncoder(堆栈自动编码器)

1. 前言

深度学习是机器学习的一个分支,它设计大量的学习函数和概念模型。大多数机器学习需要大量的人工筛选的特征作为输入,通常特征筛选需要对数据的意义有深入的了解。并且一个能很好的适用于一组数据的特征可能并不使用于其他数据集。深度学习算法在不同层次上对数据进行抽象,每一个层都是根据上一个简单的层抽象定义。这是为什么深度学习能够在复杂的任务熵表现出强大能力的原因。

2. AutoEncoder介绍

在接下来的内容中,我们将主要讨论自动编码器(AE)在NLP中的应用。自动编码器是表示学习算法的一个很好的例子。它结合了编码器功能和解码器功能,以尽可能重建输入的方式进行训练,同时隐藏层表示具有有用的属性。

2.1 Recursive Autoencoder(递归自动编码器)

RAE是递归自动编码器,假设我们有一句话的分词后的向量表示方式,希望从词向量中推断这个句子大概率。我们先为句子构建二叉树结构。第一步,RAE重建两个叶子节点,而后再每个步骤中,重建一个叶子节点和上一个RAE中的隐藏节点,直到最后重建出整棵树,RAE的构建方式可以训练任意的输入。

2.2 Stacked Autoencoder(堆叠自动编码器)

我们后面将介绍如何使用堆叠自动编码器构建深度网络。SAE是通过依次训练单个自动编码器,使用反向传播进行微调,然后添加输出层(例如用于分类问题的softmax层)来完成的。已经证明单独训练层的方法导致准确性的显着提高。

3. AutoEncoder in NLP

自然语言处理(NLP)是一个研究领域,它对涉及计算机理解人类语言的问题感兴趣。NLP包含计算机科学中一些最古老,最困难的问题。近年来,深度学习使得一些看似棘手的问题取得了有希望的进展,如下所示。事实上,自动编码器已被用于尝试解决以下问题:

3.1 word Embeddings(词向量)

为了让计算机识别语言,我们需要能够使用单词,句子和段落并将它们映射到向量。我们将单词转换为向量的过程。有一下几种方法,词集模型、词代模型、n-gram、TF-IDF、word2vec。这些是传统的词向量模型,由Lebret和Collobert在2015年提出的论文《“The Sum of Its Parts”:
Joint Learning of Word and Phrase Representations with Autoencoders》,它使用自动编码器来共同学习单词和短语的表示。

3.2 NMT(机器翻译)

机器翻译是一个非常难的问题,它的目标是准确地将文本从一种语言翻译成另一种语言。
逐字翻译的传统方法会产生非常差的结果,部分原因是大多数现代语言之间存在显着的句法差异。解决方案是分析输入语言中的语法,生成解析树,然后执行转换,生成一个新的解析树,可用于生成输出语言中的文本。
但是,由于同音异义词而导致错误:在不同的语境中,词语可能会有非常不同的含义。解决方案是分析源语言中的语义,然后根据这个含义生成目标文本。这个含义可以用单词,句子和段落向量的形式编码。
这些不同的方法由Vauquois金字塔显示。通常,中间表示的深度越大,翻译质量越高。正如Chandar和Lauly在2014年提出的论文《Bilingual Autoencoders with Global Descriptors
for Modeling Parallel Sentences》,讨论如何使用自动编码器来构建双语单词和短语表示,不过说到机器翻译,不得不说的也是在2014年,由google提出的《Sequence to Sequence Learning
with Neural Networks》,其实AE和Seq2Seq有很多相似的地方。

3.3 Document Clustering(文档聚类)

文档聚类是将文档(例如网页或新闻报道)聚合成不同类别的问题。我们将主要讨论无监督的文档分类。这里的挑战是以什么样的方式表示文档,使得它们可以容易且准确地聚类。
2006年,Hinton使用自动编码器把804414个向量降低为2000个维度,每个向量代表新闻专线故事中的特定单词概率。从下面显示的结果可以看出,自动编码器明显优于基于PCA的语义分析的标准方法和Roweis在2000年提出的非线性降维算法。

3.4 Sentiment Analysis(情绪分析)

我们将研究情绪分析中最基本的任务:确定陈述的情绪。换句话说,我们想要判断给定的文本是正面的,中性的还是负面的。这种情绪分析在商业中具有重要的应用,例如股票预测以及产品研究和营销。

早期的方法只是寻找积极或消极的话语,并单独预测这种情绪。例如,包含“好”一词的评论可能是积极的。这种方法可以非常快速地实现,因此仍然有几家公司使用这种方法实时对大量数据进行情绪分析。然而,这样的策略可能是不准确的(大多数研究发现这种方法对于大约60-80%的测试数据是准确)。
2011年,由R Socher、Andrew Y. Ng等人发表的论文《Semi-Supervised Recursive Autoencoders
for Predicting Sentiment Distributions》讨论使用递归自动编码器的方法实现情绪分析。

4. 总结

文本主要介绍了AE在NLP中可以尝试去解决的问题,其实AE能有这么多用处,主要还是得益于AE算法的强大的数据压缩的功能,能够把无论什么形式的数据压缩到固定维度,供给进行下一步运算使用。

2. AutoEncoder在NLP中的应用的更多相关文章

  1. GAN︱GAN 在 NLP 中的尝试、困境、经验

    GAN 自从被提出以来,就广受大家的关注,尤其是在计算机视觉领域引起了很大的反响,但是这么好的理论是否可以成功地被应用到自然语言处理(NLP)任务呢? Ian Goodfellow 博士 一年前,网友 ...

  2. 从0到1,了解NLP中的文本相似度

    本文由云+社区发表 作者:netkiddy 导语 AI在2018年应该是互联网界最火的名词,没有之一.时间来到了9102年,也是项目相关,涉及到了一些AI写作相关的功能,为客户生成一些素材文章.但是, ...

  3. 图解BERT(NLP中的迁移学习)

    目录 一.例子:句子分类 二.模型架构 模型的输入 模型的输出 三.与卷积网络并行 四.嵌入表示的新时代 回顾一下词嵌入 ELMo: 语境的重要性 五.ULM-FiT:搞懂NLP中的迁移学习 六.Tr ...

  4. [转] 理解NLP中的卷积&&Pooling

    转自:http://blog.csdn.net/malefactor/article/details/51078135 CNN是目前自然语言处理中和RNN并驾齐驱的两种最常见的深度学习模型.图1展示了 ...

  5. 转:使用RNN解决NLP中序列标注问题的通用优化思路

    http://blog.csdn.net/malefactor/article/details/50725480 /* 版权声明:可以任意转载,转载时请标明文章原始出处和作者信息 .*/ author ...

  6. [NLP/Attention]关于attention机制在nlp中的应用总结

    原文链接: https://blog.csdn.net/qq_41058526/article/details/80578932 attention 总结 参考:注意力机制(Attention Mec ...

  7. 在NLP中深度学习模型何时需要树形结构?

    在NLP中深度学习模型何时需要树形结构? 前段时间阅读了Jiwei Li等人[1]在EMNLP2015上发表的论文<When Are Tree Structures Necessary for ...

  8. 理解NLP中的卷积神经网络(CNN)

    此篇文章是Denny Britz关于CNN在NLP中应用的理解,他本人也曾在Google Brain项目中参与多项关于NLP的项目. · 翻译不周到的地方请大家见谅. 阅读完本文大概需要7分钟左右的时 ...

  9. NLP中的预训练语言模型(五)—— ELECTRA

    这是一篇还在双盲审的论文,不过看了之后感觉作者真的是很有创新能力,ELECTRA可以看作是开辟了一条新的预训练的道路,模型不但提高了计算效率,加快模型的收敛速度,而且在参数很小也表现的非常好. 论文: ...

随机推荐

  1. Ubuntu菜鸟入门(十六)—— 安装视频播放器vlc

    sudo add-apt-repository ppa:videolan/master-daily sudo apt-get update sudo apt-get install vlc Ubunt ...

  2. Python学习笔记(七)—— 循环

    一.for ... in ... 循环 1.语法 names = ['Michael', 'Bob', 'Tracy'] for name in names: print(name) (1)需要有冒号 ...

  3. 必须掌握的30种SQL语句优化

    1.’对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用 ...

  4. XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)

    随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...

  5. Python - 列表解析式/生成器表达式

    列表解析式: [expr for iter_var in iterable if cond_expr] 生成器表达式: (expr for iter_var in iterable if cond_e ...

  6. hdu 3183 A Magic Lamp(RMQ)

    A Magic Lamp                                                                               Time Limi ...

  7. Android中使用IntentService运行后台任务

    IntentService提供了一种在后台线程中运行任务的方式,适合处理运行时间较长的后台任务. 长处: (1)IntentService执行在单独的线程中.不会堵塞UI线程 (2)IntentSer ...

  8. Android通讯录管理(获取联系人、通话记录、短信消息)

    前言:前阵子主要是记录了如何对联系人的一些操作,比如搜索,全选.反选和删除等在实际开发中可能需要实现的功能,本篇博客是小巫从一个别人开源的一个项目抽取出来的部分内容,把它给简化出来,可以让需要的朋友清 ...

  9. git概念及工作流程详解

    git概念及工作流程详解 既然我们已经把gitlab安装完毕[当然这是非必要条件],我们就可以使用git来管理自己的项目了,前文也多多少少提及到git的基本命令,本文就先简单对比下SVN与git的区别 ...

  10. nexus7 1代 刷4.2.2+root[转]

    下面和大家分享一下刷机方法.(该刷机方法根据论坛有小改动)刷机前记得备份...刷机前准备:一.准备工具1.N7电脑驱动(usb_driver_r06_windows.zip)2.刷机工具(N7 fas ...