以下是第一讲的相关笔记,主要参考自课程的slides,视频和其他相关资料。
什么是自然语言处理(NLP)
- 自然语言处理是一门交叉学科,包括计算机科学,人工智能和语言学
- 目标:让计算机去处理或“理解”自然语言, 完成一些有用的任务例如问答系统,机器翻译
- 完全理解或者表示语言的意义(甚至去定义它)都是一个虚幻的目标
- 完美的理解语言是一个“AI-complete”的问题
自然语言处理的层次
自然语言处理的应用
- 应用范围从简单到复杂
- 拼写检查, 关键词提取&搜索,同义词查找&替换
- 从网页中提取有用的信息例如产品价格,日期,地址,人名或公司名等
- 分类,例如对教科书的文本进行分级,对长文本进行正负情绪判断
- 机器翻译
- 口语对话系统
- 复杂的问答系统
工业届里的NLP应用
- 搜索引擎
- 在线广告
- 自动的或辅助的翻译技术
- 市场营销或者金融交易领域的情感分析
- 语音识别
NLP为什么这么难
- 语言在表达上就很复杂,使用的时候要综合考虑使用情境
- Jane hit June and then she [fell/ran].
- 歧义问题:“I made her duck”
什么是深度学习(DL)
- 深度学习是机器学习的一个分支
- 大多数机器学习方法很有效主要依靠人工精心设计的特征,例如下表是一个命名实体识别任务中设计的特征模板(Finkel, 2010)
- 最终这些机器学习问题会变成优化问题:优化这些特征权重以达到最好的预测效果
机器学习 vs 深度学习
什么是深度学习(DL)续
- 表示学习 or 表达学习(Representation Learning)尝试自动的学习合适的特征及其表征
- 深度学习(Deep Learning) 算法尝试学习(多层次)的表征以及输出
- 从一个“原生”的输入x(例如“单词”)
深度学习的历史
- 这门课主要关注至今为止在解决NLP问题上有效果的深度学习技术
- 关于深度学习模型的相关历史,推荐参考《Deep Learning in Neural Networks: An Overview》
探索深度学习的原因
- 人工设计的特征常常定义过多,不完整并且需要花费大量的时间去设计和验证
- 自动学习的特征容易自适应,并且可以很快的学习
- 深度学习提供了一个弹性的,通用的学习框架用来表征自然的,视觉的和语言的信息。
- 深度学习可以用来学习非监督的(来自于生文本)和有监督的(带有特别标记的文本,例如正向和负向标记)
- 在2006年深度学习技术开始在一些任务中表现出众,为什么现在才热起来?
- 深度学习技术受益于越来越多的数据
- 更快的机器与更多核CPU/GPU对深度学习的普及起了很大的促进作用
- 新的模型,算法和idea层出不穷
- 通过深度学习技术提升效果首先发生在语音识别和机器视觉领域,然后开始过渡到NLP领域
面向语音识别的深度学习
- “深度学习”在大数据集上的第一个突破性进展发生在语音识别领域
- Paper:Context-Dependent Pre-trained Deep Neural Networks for Large Vocabulary Speech Recognition Dahl et al. (2010)
面向计算机视觉的深度学习
- 很多深度学习研究小组把大量的精力放在计算机视觉上(直到现在也是)
- 突破性的Paper: ImageNet Classification with Deep Convolutional Neural Networks by Krizhevsky et al. 2012
Deep Learning + NLP = Deep NLP
- 综合使用一些深度学习的方法来解决NLP的相关问题
- 近几年在NLP的一些应用领域效果有了较大的提升
- 层次:语音,词形,句法,语义
- 应用:机器翻译,情感分析,问答系统
音位学层次的表示
- 传统的方法:音素
- 深度学习:通过声音特征并将这些特征表示为向量直接来预测音素(或词语)
形态学层次的表示
- 传统的方法:语素,例如前缀,词干,后缀等
- 深度学习:
- 每个语素都用向量表示
- 神经网络用于向量的两两合并
- Thang et al. 2013
句法层次的表示
- 传统的方法:将一个短语或句子划分到多个句法标记,例如NP,VP等
- 深度学习
- 每个单词或者短语都是一个向量
- 神经网络用于向量的两两合并
- Socher et al. 2011
语义层次的表示
- 传统的方法: Lambda算子 or Lambda演算(Lambda calculus)
- 非常精细的函数设计
- 需要指定其他函数的输入
- 没有相似性的概念或者模糊语言
- 深度学习
- 每个单词或者短语或者逻辑表达式都是一个向量
- 神经网络用于向量的两两合并
- Bowman et al. 2014
NLP应用:情感分析
- 传统的方法:精选的情感词典+词袋模型(忽略词序)+人工设计的特征(很难覆盖所有的信息)
- 深度学习:和上述词素,句法和语义相似的深度学习模型–>RNN
- Demo: http://nlp.stanford.edu/sentiment/
NLP应用:问答系统
- 传统的方法:用了非常多的特征工程去获取相关的知识,例如正则表达式,Berant et al. (2014)
- 深度学习:和上述词素,句法,语义,情感分析相似的深度学习模型
- 知识可以储备在向量中
NLP应用:机器翻译
- 过去尝试过很多层次的机器翻译方法
- 传统的机器翻译系统是一个非常大的复杂系统
- 可以思考一下在深度学习中中间语(interlingua)对于翻译系统是如何起作用的?
- 深度学习:
- 源句子首先映射为向量,然后在输出的时候进行句子生成
- Sequence to Sequence Learning with Neural Networks by Sutskever et al. 2014
- 方法很新但是可以替换传统非常复杂的机器翻译架构
可以发现所有NLP层次的表示都涉及到向量(Vectors), 下一讲将讲到如何来学习词向量以及这些向量表示了什么?