牛津大学xDeepMind 自然语言处理(2)
牛津大学xDeepMind 自然语言处理 Natural Language Processing
文本分类
-
分类基础
-
分类任务
邮件垃圾识别、评论负面分析、文章主题识别、推文标签预测、年龄/性比预测、语言识别、情感分析等
-
任务类型
二元(true ,false)、多类(politics,sports,gossip)、多标签分类(#party #FRIDAY #fail)及聚类(labels unknown)
-
分类方法
手动(准确但慢)、基于规则的分类Rule-based(依赖规则)、统计分类Statistical(需要分类好的训练数据)
-
-
统计文本分类
-
核心
学习P(c|d) (文本d属于类别c的概率)
-
两阶段
- 文本表示:将文本处理为某种固定形式,即如何学习d
- 分类:根据该表示形式对文档进行分类,即如何学习P(c|d)
-
分类方法
- 词袋模型 Bag of Words (BOW):简单但大小不固定、忽略句子结构
- 手工构建的特征 Hand-crafted features:可完全控制,能利用nlp处理管道,特定于类别的特征,但过于具体、不完整,依赖nlp处理管道
- 学习到的特征表示 Learned feature representation:可以学习包含所有相关信息,但需要进行学习
-
-
模型相关
-
生成与判别模型 Generative vs. Discriminative Models
-
生成(联合)模型:P(c,d)
对各个类别的分布进行建模,并对观察到的数据和隐藏变量(如标签)赋予概率。
例如:n元模型、隐马尔可夫模型、概率上下文无关文法、IBM机器翻译模型、朴素贝叶斯等
-
判别(条件)模型:P(c|d)
学习类别之间的边界。将数据视为给定的,并在给定数据的情况下对隐藏结构赋予概率。
例如:逻辑回归、最大熵模型、条件随机场、支持向量机等
-
-
朴素贝叶斯 Naive Bayes classifier
基于贝叶斯法则P(c|d) = P© P(d|c) / p(d),属生成模型.
- 优点:简单、可解释、快速、文本表示简单(词袋模型)
- 缺点:独立性假设往往过于严格、不考虑句子/文档结构、朴素分类器存在零概率问题、平滑处理较麻烦
-
特征表示 Feature Representations
文本的特征表示可以看作是一个向量,其中每个元素表示某个特征在文档中的存在或不存在。
特征可以是二元的(存在/不存在)、多项式的(计数)或连续的(如TF-IDF加权)
-
逻辑回归 Logistic Regression
如果我们只想对文本进行分类,不需要生成模型的全部功能,判别模型就足够了,只想学习P(c|d) ,逻辑回归是一个通用框架,“逻辑”是因为它使用逻辑函数,“回归”是将特征向量d与权重β结合起来计算结果。
判别模型,用逻辑/softmax函数。
- 优点:简单、可解释、不假设特征之间的统计独立性
- 更难学习、手工设计特征成本更高、不一定能很好地泛化
-
-
深度学习方法
-
RNN
利用RNN的隐藏状态表示文本,可结合逻辑回归等分类器,也可将分类函数融入网络,使用交叉熵损失训练,可扩展到多标签分类,还可结合语言模型目标构建双目标RNN及使用双向RNN
RNN分类器类型:可分为生成模型或判别模型,取决于是否建模文本概率等
-
其他神经网络
递归神经网络(遵循句法结构进行组合)、卷积神经网络(可从图像分类适应到文本,利用卷积和池化操作)
-
NLP的软件和硬件
-
motivation
缩短解决问题时间很重要,有些事情取决于用户
-
CPU vs GPU
设计决定性能
- 设计差异:CPU优化低延迟;GPU优化高吞吐量
- 性能差距:GPU在理论单精度GFLOP/s和峰值带宽上远优于CPU
-
屋顶线模型 Roofline Model
- 定义:分析算法计算强度与浮点吞吐量关系的工具
- 计算强度:不同操作有不同值,LSTM待确定
-
LSTM的计算分析
- 计算操作:不同批次大小下的公式和操作
- 比率分析:浮点运算与字节的比率
- 受限情况:内存和浮点运算受限,探讨小批次选择
-
LSTM网络级优化
- 减少内存流量:随时间展开、释放依赖关系、随时间融合操作等
- 减少开销:融合逐点操作到一个内核
- 提高并行性:使用流+层等
- 优化效果:显著提升速度
-
cuDNN
- cuDNN:英伟达的神经网络加速库
-
总结
硬件和软件选择影响性能,可能需额外工作获最佳性能