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. Nginx反向代理+Tomcat+Springmvc获取用户访问ip

    Nginx+Tomcat+Springmvc获取用户访问ip 1.Nginx反向代理 修改Nginx配置文件 location / { ***********之前代码*******; proxy_se ...

  2. Oracle命令(二):Oracle数据库几种启动和关闭方式

    一.Oracle数据库几种启动方式 1.startup nomount 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进 ...

  3. 使用mysqldump导入导出MySQL数据库

    数据库的基本导入\导出的命令 是 mysqldump 和 source 在linux下直接用命令行操作就可以 在windows下 一般情况下有两种方法一个也是用命令行 另一个是用phpmyadmin ...

  4. 温故而知新 babel-cli 的相关使用

    # 在线编译 http://babeljs.io/repl # babel-cli 安装入门 http://babeljs.io/setup#installation # babel-cli 使用手册 ...

  5. Python 爬虫实例(15) 爬取 百度百聘(微信公众号)

    今天闲的无聊,爬取了一个网站,百度百聘,仅供学习参考 直接上代码: #-*-coding:utf-8-*- from common.contest import * def spider(): hea ...

  6. mysql中and 和 or 联合使用

    以下是两张表,我只列出有用的字段. Table:student_score 学生成绩 sid(学生ID) cid(课程ID) score(分数) 5 1 50 5 2 110 5 3 64 5 4 n ...

  7. django性能优化缓存view详解

    缓存提升性能: 1.通常的view会去数据库端执行相关的查询然后交由template渲染.数据库访问通常就是性能的瓶颈所在. 2.由于许多数据要很久才会变一次.两次连续的数据库访问通常返回的数据是一样 ...

  8. JS中getElementByID,getElementsByName,getElementsByTagName的区别

    <input type="text" name="mynumber" id="mynum1" value="" / ...

  9. 复习下C 链表操作(双向链表)

    双向链表 创建.删除.反转.插入 //struct #include <stdio.h> #include <stdlib.h> #include <string.h&g ...

  10. 用较早版本的APIs实现抽象类

    原文链接:http://android.eoe.cn/topic/android_sdk 用较早版本的APIs实现抽象类 这节课程我们讨论如何创建一个实现类,即能对应新版本的API,又能够保持对老版本 ...