斯坦福CS224n-第一课笔记 自然语言处理与深度学习简介

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_34290470/article/details/102774984

【斯坦福CS224n的第一课视频笔记】

1. 什么是自然语言处理

  这是一门计算机科学、人工智能以及语言学的交叉学科。虽然语言只是人工智能的一部分(人工智能还包括计算机视觉等),但它是非常独特的一部分。这个星球上有许多生物拥有超过人类的视觉系统,但只有人类才拥有这么高级的语言。

  自然语言处理的目标是让计算机处理或说“理解”自然语言,以完成有意义的任务,比如订机票购物或QA等。完全理解和表达语言是极其困难的,完美的语言理解等效于实现人工智能。

 

1.1 自然语言处理涉及的几个层次

   作为输入一共有两个来源,语音与文本。所以第一级是语音识别和OCR或分词(事实上,跳过分词虽然理所当然地不能做句法分析,但字符级也可以直接做不少应用)。接下来是形态学,援引《统计自然语言处理》中的定义:

   形态学(morphology):形态学(又称“词汇形态学”或“词法”)是语言学的一个分支,研究词的内部结构,包括屈折变化和构词法两个部分。由于词具有语音特征、句法特征和语义特征,形态学处于音位学、句法学和语义学的结合部位,所以形态学是每个语言学家都要关注的一门学科[Matthews,2000]。

  下面的是句法分析语义分析,最后面的在中文中似乎翻译做“对话分析”,需要根据上文语境理解下文。

这门课主要关注画圈的三个部分,其中中间的两个是重中之重,虽然深度学习在语音识别上的发力最大。

1.2 自然语言处理应用

一个小子集,从简单到复杂有:

  • 拼写检查、关键词检索……

  • 文本挖掘(产品价格、日期、时间、地点、人名、公司名)

  • 文本分类

  • 机器翻译

  • 客服系统

  • 复杂对话系统

 

1.3 人类语言的特殊之处

  与信号处理、数据挖掘不同,自然语言的随机性小而目的性强语言是用来传输有意义的信息的,这种传输连小孩子都能很快学会。人类语言是离散的、明确的符号系统。但又允许出现各种变种,比如颜文字,随意的错误拼写“I loooove it”。这种自由性可能是因为语言的可靠性(赘余性)。所以说语言文字绝对不是形式逻辑或传统AI的产物。

语言符号有多种形式(声音、手势、书写),在这些不同的形式中,其意义保持不变。

  虽然人类语言是明确的符号系统,但符号传输到大脑的过程是通过连续的声学光学信号,大脑编码似乎是连续的激活值上的模式。另外巨大的词表也导致数据稀疏,不利于机器学习。这构成一种动机,是不是应该用连续的信号而不是离散的符号去处理语言。

2. 什么是深度学习

这是机器学习的一个子集。传统机器学习中,人类需要对专业问题理解非常透彻,才能手工设计特征。比如地名和机构名识别的特征模板:

然后把特征交给某个机器学习算法,比如线性分类器。机器为这些特征调整找到合适的权值,将误差优化到最小

在这个过程中一直在学习的其实是人类,而不是机器。机器仅仅做了一道数值优化的题目而已。

而深度学习是表示学习的一部分,用来学习原始输入的多层特征表示。

 

2.1 “深度学习”的历史

虽然这个术语大部分时候指代利用各种各样多层的神经网络进行表示学习,有时候也有一些概率图模型参与。统计学家会说,哦,不过是一些逻辑斯谛回归单元的堆砌而已。也许的确如此,但这还是以偏概全的说法(电子计算机还是一堆半导体的堆砌呢,大脑还是一堆神经元的堆砌呢)。这门课不会回顾历史(像Hinton老爷子那样博古通今),而只会专注当前在NLP领域大放异彩的方法。

 

2.2 为什么需要研究深度学习

  • 手工特征耗时耗力,还不易拓展

  • 自动特征学习快,方便拓展

  • 深度学习提供了一种通用的学习框架,可用来表示世界、视觉和语言学信息

  • 深度学习既可以无监督学习,也可以监督学习

深度学习可追溯到八九十年代,但在2010年左右才崛起(最先是语音与图像,后来才是NLP),那之前为什么没有呢?

与Hinton介绍的一样,无非是以前数据量不够,计算力太弱。当然,最近也的确有许多新模型,新算法。

2.3 语音识别中的深度学习

 

2.4 计算机视觉中的深度学习

 

3.为什么NLP难

人类语言是充满歧义的,不像编程语言那样明确。编程语言中有各种变量名,但人类语言中只有少数几个代词可以用,你得思考到底指代的是谁……

人类语言的解读依赖于现实世界、常识以及上下文。由于说话速度书写速度阅读速度的限制,人类语言非常简练,省略了大量背景知识。

接下来是几个英文的歧义例子,对native speaker而言很有趣。为了完整性只看一个:

The Pope’s baby steps on gays

主要歧义发生在baby上面,可以理解为“教皇的孩子踩了基佬”,也可以理解为“教皇在同性恋问题上裹足不前”。

 

Deep NLP = Deep Learning + NLP

将自然语言处理的思想与表示学习结合起来,用深度学习的手法解决NLP目标。这提高了许多方面的效果:

  • 层次:语音、词汇、语法、语义

  • 工具:词性标注、命名实体识别、句法\语义分析

  • 应用:机器翻译、情感分析、客服系统、问答系统

深度学习的一个魅力之处是,它提供了一套“宇宙通用”的框架解决了各种问题。虽然工具就那么几个,但在各行各业都适用。

 

3.1 word vector

简单来讲,词向量是一个用来表达一个词的意思的向量。

词向量大致经过3个时期:

  1. 最早在做检索系统,或者推荐系统时候,需要计算query和文档,或者user和文档之间的相关性,涉及到相关性,很直观的利用到了向量的欧式距离活着余弦距离。所以这个时期的向量化主要是基于整体数据的矩阵分解,使用的是整体数据的global信息。
  2. 词向量的是一个主题回归的过程,相同主题的词的向量彼此就比较接近。
  3. 分布式语义的表示,使用机器学习的方式,然后选择合适的学习目标,然后词的向量作为变量来学习迭代。

一个词向量的简单示例
 

在这个图片中,我们假象每个维度都代表了一个清晰定义的意思。例如,你可以想象第一个维度代表animal,每个词汇在这个维度的权重代表了与这个意思或概念的相近度。

这是一个非常简化的词向量版本,因为实际上维度并没有这么清晰定义的语义意思。但这是一个有效且直观的方式来让你明白词向量维度的概念。

词向量从何而来?

这是一个非常好的问题,这些维度和权重都是从哪里得来的?有两种通常使用的方法来生成词向量:

1. 词汇的计数/ 同语境共同出现次数

2. 根据词汇预测语境(skip-gram 神经网络模型,例如:word2vec)

两种方法都基于Firth’s 的分布假设(DistributionalHypothesis),其中提到:

“You shall know a word by the company it keeps”

换句话说,出现在相似语义环境中的词倾向于具有语义上的相似性。一个词的语义环境实际上可以表示为它周围的词,词向量(通常)就是通过预测这个词的语义环境来生成的。再换句话说,组成词向量的权重是通过预测其他词语义上与这个词相近的概率得来的。这就像是在填满一个给定词汇周围的空位。

 

3.2 NLP表示层次:形态级别

传统方法在形态级别的表示是词素:

深度学习中把词素也作为向量:

多个词素向量构成相同纬度语义更丰富的词向量。

 

3.3 NLP工具:句法分析

3.4 NLP语义层面的表示

传统方法是手写大量的规则函数,叫做Lambda calculus:

在深度学习中,每个句子、短语和逻辑表述都是向量。神经网络负责它们的合并

 

情感分析

传统方法是请一两百个工人,手工搜集“情感极性词典”在词袋模型上做分类器。

深度学习复用了RNN来解决这个问题,它可以识别“反话”的情感极性。

QA

传统方法是手工编写大量的逻辑规则,比如正则表达式之类:

深度学习依然使用了类似的学习框架,把事实储存在向量里。

 

客服系统

最著名的例子GMail的自动回复。

机器翻译

传统方法在许多层级上做了尝试,词语、语法、语义之类。这类方法试图找到一种世界通用的“国际语”(Interlingua)来作为原文和译文的桥梁。

Neural Machine Translation将原文映射为向量,由向量构建译文。也许可以说Neural Machine Translation的“国际语”是向量。

结论:所有层级的表示都是向量

猜你喜欢

转载自blog.csdn.net/qq_34290470/article/details/102774984