本周任务
学课程
学习cs224n第五讲和第六讲
反向传播与项目指导:Backpropagation and Project Advice
依赖解析:Dependency Parsing
读论文
论文导读:高效文本分类
写作业
作业: Assignment 2 准备
- 2.0.1 预习TensorFlow
- 2.0.2 仔细阅读作业2的要求,自学作业里要求里提到的神经网络训练方法
第五课笔记
这节课用四种方法讲解了反向传播,最后还讲了很长时间的项目,总体没有什么可以记的。
看这节课理解反向传播,不如去看吴恩达的深度学习的课程,吴恩达讲解的很细致,最主要的是向量化思想,每次不是更新一个参数,而是更新参数向量。
反向传播是更新模型参数的关键。当x输入到模型中,通过参数w相乘再通过非线性,来生成一个函数用于模拟真实的样子。但是模拟的过程不是一步到位的,必须通过我们不断调整参数w才能较好的将我们的模型与真实世界的样子吻合起来。那么怎么调整参数w呢?先随机初始化一个w,结合输入x得到一个输出yhat,这个我们猜测出来的yhat与真实的标签y是有差值的。于是人为定义一个logistic回归损失函数,用来定量表示差值。用这个损失函数进行反向传播,更新一开始随机设定的参数w。那么怎么更新呢?答案是对w求偏导。我们想要得到的yhat与真实标签y越接近越好,这就要求损失函数越小越好。简单粗暴的理解是:导数是函数下降最快的方向。想让损失函数快速变小,就要沿着导数方向更新。我们暂称损失函数为L,于是就有
w = w - α*(dL/dw)
α是学习率,用来控制下降的速度,是一个超参数,需要在程序运行之前人为设定。
第六课笔记
语言学中,有两种描述语法的观点:短语结构和依存结构。
Constituency = phrase structure grammar(短语结构文法) = context-free grammars(CFGs)(上下文无关文法)
短语结构:
依存结构:
依存句法树:
依存句法分析有几个约束条件:
- Root只能被一个词依赖
- 无环
依存句法分析的几种方法:
- Dynamic programming,估计是找出以某head结尾的字串对应的最可能的句法树。
- Graph algorithms,最小生成树。
- Constraint Satisfaction,估计是在某个图上逐步删除不符合要求的边,直到成为一棵树。
- “Transition-based parsing” or “deterministic dependency parsing”,主流方法,基于贪心决策动作拼装句法树。
动作体系分为两种:投射性和非投射性。
投射性指的是,如果词p依存于词q,那么p和q之间的任意词r就不能依存到p和q所构成的跨度之外。(线不能交叉)
而非投射性就没有这种要求。
左边为投射性,右边为非投射性
处理投射现象的动作体系有Arc-eager和Arc-standard(Nirve, 2004)
处理非投射性的动作体系有Arc standard + swap (Nirve, ACL 2009)
这节课讲的是采用Arc-standard的依存句法分析器Maltphaser
详细的Arc-standard请点击http://www.hankcs.com/nlp/parsing/neural-network-based-dependency-parser.html/2#h2-6
在任何时刻你都处于某种形态:有一定的内容存在堆中,一定内容存于缓冲,有一些已经做好的弧集合。下一步要做什么呢?Nivre提出了一种解决方式,就是做一个机器学习分类器。我们已经有了树库来做句子的分析,我们可以用这些句子的分析,来看那种操作序列给出正确的句子分析。如果你在树库中有一个句子的结构,你可以做出一系列需要得到这样结构的shift reduce操作,这个操作序列其实是唯一的,对每个树库而言都有一个操作序列给出一个正确的句子结构。所以你拿到树,然后读取正确的操作序列,这样你就得到了一个监督学习问题。在这种情况下,你下一步要做的就是shift操作,然后你就建立好了分类数据然后再去做预测。分类器可以选择svm或其他的。
之前一个好用的解析器叫Maltphaser,他提供的解决方法是,无搜索,贪婪地下转移决策,线性复杂度,只损失了一点效果。
依存分析的评估:
我们要看每个词的独立项是什么就够了,因为每一个词就一个独立项(dependence)。数一数预测的所有词的独立项对了几次。一种方法叫UAS(unlabeled accuracy score),只看箭头忽略标签。另一种叫LAS,规定当标签正确的时候结果才是正确的。这里说的标签是指的每个词的词性。
课的最后教授介绍了他的C&M 2014解析器其中:
- 分类器变成了softmax的神经网络
- 不同于传统句法分析器的人工编写特征模板的作坊式风格,Chen and Manning将一些零散的原始特征直接作为输入传入神经网络模型中。至于它们是如何组合的,不再由人工编写的特征模板决定,而是由神经网络模型的隐藏层自动提取。
- 把传统的单词、词性、依存标签拼接转换成了它们的向量的拼接表示。效果还不错。详解见这里:http://www.hankcs.com/nlp/parsing/neural-network-based-dependency-parser.html