深度学习、自然语言处理和表征方法

原文链接:http://blog.jobbole.com/77709/

一个感知器网络(perceptron network)。感知器 (perceptron)是非常简单的神经元,如果超过一个阈值它就会被启动,如果没超过改阈值它就没反应。感知器网络的输入和输出都是是二进制的(0和1)。

注意可能的输入个数是有限的。对每个可能的输入,我们可以在隐层里面构建一个只对这个输入有反应的神经元(见注解1)。然后我们可以利用这个神经元和输出神经元之间的连接来控制这个输入下得到的结果(见注解2)。

这样可以说明单隐层神经网络的确是有普适性的。但是这也没啥了不起的呀。你的模型能干和查询表一样的事并不能说明你的模型有任何优点。这只能说明用你的模型来完成任务并不是不可能的罢了。

普适性的真正意义是:一个网络能适应任何你给它的训练数据。这并不代表插入新的数据点的时候它能表现地很理想。

所以普适性并不能解释为什么神经网络如此好用。真正的原因比这微妙得多… 为了理解它,我们需要先理解一些具体的成果。

单词嵌入(Word Embeddings)

我想从深度学习研究的一个非常有意思的部分讲起,它就是:单词嵌入(word embeddings)。在我看来,单词嵌入是目前深度学习最让人兴奋的领域之一,尽管它最早是由Bengio等人在十多年前提出的(见注解3)。除此之外,我认为它们能帮助你通过直觉来了解为什么深度学习如此有效。

单词嵌入W:words→Rn是一个参数化函数,它把某个语言里的单词映射成高维向量(大概200到500维)。例如这样:

W(‘‘cat”)=(0.2, -0.4, 0.7, …)
W(‘‘mat”)=(0.0, 0.6, -0.1, …)
(一般这个函数就是一个查询表,用一个矩阵θ来参数化,每行是一个单词:Wθ(wn)=θn.)
初始化时,W中每个词对应一个随机的向量。它会学习出有意义的向量以便执行任务。

举个一个可能的任务的例子:训练一个网络让其预测一个5元组(5-gram)(连续的5个词)是否‘成立’。我们可以随便从维基百科上选一堆5元组(比如cat sat on the mat)然后把其中一个词随便换成另外一个词(比如cat sat song the mat),那么一半的5元组估计都会变得荒谬且没意义了。

 判断5元组是否成立的模块网络(来自于Bottou (2011)

我们训练的模型会通过W把5元组中每个词的表征向量取出来,输入给另外一个叫R的模块,模块R会试图预测这个5元组是‘成立的’或者是‘破碎的’。然后我们希望看见:

R(W(‘‘cat”), W(‘‘sat”), W(‘‘on”), W(‘‘the”), W(‘‘mat”))=1
R(W(‘‘cat”), W(‘‘sat”), W(‘‘song”), W(‘‘the”), W(‘‘mat”))=0

为了准确地预测这些值,这个网络需要从W以及R中学习到好的参数。

现在看来这个任务并没什么意思。也许它能用来检测语法错误什么的,没什么大不了。但是极其有趣的部分是这个W。

(事实上,对我们来说,这个任务的意义就是学习W。我们当然也可以做一些其他的任务 – 一个很常见的任务是预测句子中下一个单词。但我们实际上并不在乎任务是什么。这节后面我们会谈到许多单词嵌入成果,但并不会区分得到这些成果的方法的不同。)

想直观感受一下单词嵌入空间的话,我们可以用t-SNE来对它进行可视化。t-SNE是一个复杂的高维数据可视化技术。

 t-SNE对单词嵌入的可视化结果。左图:数字区间。右图:工作岗位区间。来源:Turian et al. (2010)全图在此

这种单词构成的“地图”对我们来说更直观。相似的词离得近。另一种方法是看对一个给定单词来说,哪些其他的单词离它最近。我们可以再一次看到,这些词都很相似。

 哪些词的嵌入离一个给定词最近?来自于Collobertet al. (2011)

网络能让意义相似的词拥有相似的向量,这看起来是很自然的事。如果你把一个词换成它的同义词(例如 “a few people sing well” → “a couple people sing well”),句子的成立性并没有变化。虽然从字面上看,句子变化很大,但如果W把同义词(像“few”和”couple”这种)映射到相近的空间,从R的角度来看句子的变化很小。

这就牛了。可能的5元组的数目是巨大的,相比之下我们的训练数据量很小。相似的单词距离近能让我们从一个句子演变出一类相似的句子。这不仅指把一个词替换成一个它的同义词,而且指把一个词换成一个相似类别里面的词(如“the wall is blue” → “the wall is red” )。进一步地,我们可以替换多个单词(例如“the wall is blue” → “the ceiling is red”)。它的影响对单词数目来说是指数级的
(参见注解4)。

很明显,这是W的一个用武之地。但它是如何学会做这个的呢?看起来很可能很多情况下它是先知道“the wall is blue”这样的句子是成立的,然后才见到“the wall is red”这样的句子。这样的话,把“red”往”blue”那边挪近一点,网络的效果就更好。

我们并没见过每个单词使用的例子,但是类比能让我们泛化衍生出新的单词组合。你懂的单词你都见过,但是你能懂的句子你并没有都见过。神经网络也是如此。

DeepLearning的优化方法:

原文链接:http://www.cnblogs.com/tornadomeet/archive/2013/05/02/3053916.html

NLP:单词嵌入Word Embeddings的更多相关文章

  1. TensorFlow NMT的词嵌入(Word Embeddings)

    本文转载自:http://blog.stupidme.me/2018/08/05/tensorflow-nmt-word-embeddings/,本站转载出于传递更多信息之目的,版权归原作者或者来源机 ...

  2. deeplearning.ai 序列模型 Week 2 NLP & Word Embeddings

    1. Word representation One-hot representation的缺点:把每个单词独立对待,导致对相关词的泛化能力不强.比如训练出“I want a glass of ora ...

  3. Coursera Deep Learning笔记 序列模型(二)NLP & Word Embeddings(自然语言处理与词嵌入)

    参考 1. Word Representation 之前介绍用词汇表表示单词,使用one-hot 向量表示词,缺点:它使每个词孤立起来,使得算法对相关词的泛化能力不强. 从上图可以看出相似的单词分布距 ...

  4. 吴恩达《深度学习》-课后测验-第五门课 序列模型(Sequence Models)-Week 2: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入)

    Week 2 Quiz: Natural Language Processing and Word Embeddings (第二周测验:自然语言处理与词嵌入) 1.Suppose you learn ...

  5. 吴恩达《深度学习》-第五门课 序列模型(Sequence Models)-第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings)-课程笔记

    第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 2.1 词汇表征(Word Representation) 词汇表示,目 ...

  6. 课程五(Sequence Models),第二 周(Natural Language Processing & Word Embeddings) —— 1.Programming assignments:Operations on word vectors - Debiasing

    Operations on word vectors Welcome to your first assignment of this week! Because word embeddings ar ...

  7. [DeeplearningAI笔记]序列模型2.1-2.2词嵌入word embedding

    5.2自然语言处理 觉得有用的话,欢迎一起讨论相互学习~Follow Me 2.1词汇表征 Word representation 原先都是使用词汇表来表示词汇,并且使用1-hot编码的方式来表示词汇 ...

  8. [C5W2] Sequence Models - Natural Language Processing and Word Embeddings

    第二周 自然语言处理与词嵌入(Natural Language Processing and Word Embeddings) 词汇表征(Word Representation) 上周我们学习了 RN ...

  9. 翻译 | Improving Distributional Similarity with Lessons Learned from Word Embeddings

    翻译 | Improving Distributional Similarity with Lessons Learned from Word Embeddings 叶娜老师说:"读懂论文的 ...

随机推荐

  1. 【codeforces 768D】Jon and Orbs

    [题目链接]:http://codeforces.com/contest/768/problem/D [题意] 你有一个水晶; 它每天都会产生一个球??(球有k种) 然后每种球产生的可能性是相同的-& ...

  2. OpenCV 基于超像素分割的图像区域选取方法及源码

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51386993 工程源码GitHub: ...

  3. python实现字符串之间的映射

    类似于凯撒密码一样的加密 # *-* coding=utf-8 *-* import string intab = string.lowercase outtab = 'qwertyuiopasdfg ...

  4. [Bzoj4196] [NOI2015] 软件包管理器 [树链剖分,线段树]

    题解摘要:树链剖分后用线段树区间查询修改,对于安装软件,将改点到根的路径全部变为1,对于卸载软件,将子树清空.注意边界,编号是从0开始的,容易漏掉树根. 第一次写树剖- #include <io ...

  5. 多校第六场 1003 hdu 5355 Cake(贪心)

    题目链接:(数据加强后wa了) hdu 5355 题目大意: 给出一个蛋糕.切成1~n大小的n块.问是否能在不继续分割的情况下拼凑出m等份. 题目分析: 首先我们是可以知道每份蛋糕的尺寸的,利用n*( ...

  6. 3D数学读书笔记——多坐标系和向量基础

    本系列文章由birdlove1987编写,转载请注明出处. 文章链接: http://blog.csdn.net/zhurui_idea/article/details/24662453 第一个知识点 ...

  7. 实例介绍Cocos2d-x中Box2D物理引擎:碰撞检測

    在Box2D中碰撞事件通过实现b2ContactListener类函数实现,b2ContactListener是Box2D提供的抽象类,它的抽象函数:virtual void BeginContact ...

  8. 学习笔记——SQL SERVER2014内存数据库

    sql server2014支持内存数据库功能. 内存可以说是数据库性能的生命线.理论上,如果内存足够,SQL SERVER可以将所有的数据都装载到内存里,访问.修改什么的,都在内存中进行,只有在ch ...

  9. CentOS 安装 MRTG 软件完成后的 403 Forbidden(转载)

    用 yum 安装 MRTG 並设定好之后也把 apache 的 httpd.conf 加上 mrtg 的目录,但 http://server/mrtg 卻一直出現 403 Forbidden.在 ht ...

  10. 洛谷 P3515 [ POI 2011 ] Lightning Conductor —— 决策单调性DP

    题目:https://www.luogu.org/problemnew/show/P3515 决策单调性... 参考TJ:https://www.cnblogs.com/CQzhangyu/p/725 ...