CS224D Lecture 1 札记 分类: CS224D notes 2015-07-07 21:48 20人阅读 评论(0) 收藏

最近开始看Stanford的CS224D课程,这是最新的Stanford的关于Deep Learning的实用课程有兴趣的朋友可以点这里

本文只是本人的一个学习札记,难免有错误和疏漏之处,如果有网友发现我的错误或疏漏,还请不吝指正,在此谢过。

这门课程的资料给的还是挺全的,Video都传到Youtube上了,各种Matrials也在官网上有可以下载的到,很感谢Stanford的慷慨,使得全世界对Deep Learning有兴趣的朋友能够有机会接触到前沿的科技。

废话不多说了,开始写Notes吧!

这门课的Prerequisites很多,建议不满足的朋友还是不要看了,否则看了也不知所云没有什么意义。

Lecture 1就像大部分的课程的开场一样,主要是对Deep Learning for Natural Language Processing做一个综述,并且建立一个框架,之后的每一个Lecture都是填充这个框架对其中的每一条做详尽的解释和说明。

1.Video Description

Video的前一小部分讲了课程的各种事项,课程时间之类,略过不表。

后部分Video的pipeline是 NLP Description -> NLP Levels -> NLP Application -> NLP in Industry -> DP Description -> ML vs DP -> history of DP

 -> Reasons for Exploring DL-> DL Application -> Deep NLP Application Example


NLP Levels讲的类似是NLP的Pipeline

a)将语言存入计算机。人类语言主要有两个获取的渠道,第一种是通过Speech,第二种是通过Text,首先通过Morphological Analysis(形态学分析),也就是说第一种是:语音信号 -> 计算机内的文字,第二种是:人类手写文字/书本打印文字 -> 计算机内的文字

b)后面的两部是对输入进来的文字进行分析,使得计算机能够“理解”人类的语言,先通过Syntactic Analysis(语法分析),再进行Semantic Analysis(词义分析),后来看Recommend Reading 发现这两个步骤通常是混合起来用的,个人认为这个图表阐述先进行Syntactic Analysis再进行Semantic Analysis有些欠妥。


DP Description

Deep Learning 是ML(机器学习)的一个分支,Video只着重阐述了DL 在挖掘Features的方面很棒,可以自动的从Raw Data 中学习出来Features,然后ML就使用学出来的Features进行Prediction。


2.Linear Algebra Review

这个Review只是很泛的讲了些Linear Algebra只能作为一个类似Handbook 的东西,参考书的话我还是很喜欢一位MIT教授Strang的Introduction to Linear Algebra网上都有下载,遇到忘了的东西,拿出来看看总会有新收获。还有就是The Matrix Cookbook了这本书只是一本Handbook对某些公式想不起来了拿出来翻一翻很不错。


3.Convex Optimization Overview

首先从Convex Set讲起,再到Convex Functions,第二第三节主要是介绍Convex是什么,如何判断一个Set 或者Function是不是Convex

第四节就上重头戏了:Convex Problem必然有一个Globally optimal point 并且没有Locally optimal point我去多么好的性质啊!这种Problem不会在Optimize的时候使Parameters 误入歧途,就像一个碗一样,扔一个乒乓球进去,它只可能掉在碗底,不可能一直贴在碗壁上(- -当然你没把碗斜着放)。非Convex Problem就像月球表面,乒乓球掉到一个坑里就出不来了,很难找到Globally optimal point。

文章的4.2介绍了几种Convex Problems越往后越General,不过我还是没明白最后一种Semidefine Programming是怎么回事。Convex Problem有一个特点:Function满足convex function的条件,constrain 满足convex set的条件,这样就能构造出来一个碗而不是一个月球啦!(-_-||)

最后举了两个例子讲述了如何把具体问题化成Convex Problem的标准型,化成标准型主要是为了方便代入Off-the-shelf software这样就能很容易的求解Optimal point,但有时Off-the-shelf software效率不是很好,还得具体问题具体处理,自己写optimal function。


4.Stochastic Gradient Descent (SGD) 

这篇Review没有个综述,使我之前看得头大,不过也可能是从CS231n课程里抠出来的一部分综述有可能在前几章,如果有朋友再看这个Review我建议可以先看最下面的Summary和Summary上面的那一段话。

SGD(随机梯度下降)区别于batch gradient descent(抱歉不知道中文怎么说- -)。

其实我个人认为看这个Review的目的是理解SGD前面篇幅介绍Score Function和Loss Function的部分其实没那么重要,大概看看即可,主要重点还是Optimation之后的内容。

SGD这篇文章先介绍了两个负面的Optimal的例子。

第一个是Random Search,就是说你在一个碗里随机的跳,跳到一个点记录下此时的高度,如果比之前最低的还低就更新最低值,反之什么都不做。

第二个是Random Local Search,你在碗里的随机初始的一个点,然后你随机的往周围探脚,看哪边坡度最大,探假设1000次,探到最低的那个方向就往下走,然后再重复上面探脚的过程。

最后一个就是重头戏,朝着梯度方向走了,计算梯度方向也有两种方法,第一种是微积分的近似求解,效率低不精确;第二种是Matrix Calculus但是得手算解析解,容易不小心算错,但是效率高,很精确。当然我们用第二种啦,但是使用第一种方法检验第二种的解析解是否正确。找到了方向,该迈多大的步子呢?这也很关键,就像乒乓球一样,如果往下冲快了,很容易冲到碗外面去了。

知道了怎么找方向还有怎么迈步子接下来就是根据什么选方向了,可以根据所有的数据做一个Step这样精确但是效率很低,更好的方法是Mini-batch gradient descent随机选取一个小set然后根据这个小的set选方向迈步子,mini-batch选到最小到1的时候就是SGD了。


5.From Frequency to Meaning

这个Paper主要是介绍VSM(Vector Space Models)在Semantic(语义学)的应用。

VSM主要有四个步骤:建立合适的Matrix -> Linguistic Processing(相当于对Matrix的初步处理) -> Mathematical Processing(相当于对上一步的Matrix的进一步处理) -> comparison(做实际比较工作啦)

a)VSM 有三种常用的Matrices可能还有很多不被人发现,不过现在主要用的是这三种,并且效果比较好。第一种是Term-Document Matrix,行代表单词,列代表文件,就这么简单。第二种是Word-Context Matrix,行代表的东西不变,列代表一个Context,也就是上下文,可以自定义上下文的范围(eg:定义范围=2,那么就选取指定单词+-2范围内的所有单词作为Context)可以认为Context就是从Document中抠出来的东西。第三种是Pair-Pattern Matrix是最复杂的啦,Pair是指两个在某Pattern里出现的单词(那Pattern又是什么- -|)好吧,Pattern我理解就是某种句式(比如说:徐志摩爱林徽因),X爱Y就是一个Pattern,徐志摩和林徽因就是一对Pair,如果这对pair出现的次数多了就说明他俩有关系- -,徐志摩及林徽因这两个次确实有爱这个Pattern的可能性就很大。反之徐志摩及林徽因出现pair的Pattern和爱这个pattern有相近意思的可能性也很大。

Types and Tokens:Types是同样拼写的单词用一个Index表示,Tokens是同样拼写的单词根据不同的Context用不同的Index表示,很显然后者可以处理一次多意,前者不行。

文章的2.7是个对Matrix的综述可以作为从参考。

b)Linguistic Processing

顾名思义Linguistic Processing是比较粗糙的根据语言预处理,Pipeline如下

Tokenization -> Normalization(Optional) -> Annotation(Optional)

Tokenization简单的说就是断句(句读知不知,惑之不解。- -|||),然后把没用的高频词去掉,比如说“的”,“是”之类的词

Normalization就是把不同状态的词变成其词根,这种情况在中文里出现的比较少,在英文里比较多,比如说复数-s,被动-ed,进行时-ing等等。在Normalization里还介绍了Precision和Recall的概念,刚开始我也有点困惑举个例子吧。Set A代表Document

Truly relevant to a query,Set B代表We say that a document relevant to a query,C = A intersect B。Recall = C / A, Precision = C / B。Normalization会提高Precision降低Recall

Annotaion类似于Normalization的反操作,指定某个单词是某种状态,例如Program是名词的还是动词的。Annotation会提高Recall降低Precision


c)Mathematical Processing

      Weight the Elements:立好Raw Matrix后还是不能很好的解决问题呀,接下来就要进行数学方面的处理了。举个例子两个中国男人,只看脸分辨两人,但是大部分中国人都是黑头发,黑眼睛,塌鼻子,小耳朵。如果想分辨两个人就不能找大部分共性,如果一个男人门牙少了一颗,另一个男人带耳环,涂口红,那么就很好分辨出来这两个男人。这就是4.2第一句话(The idea of weight is to give more weight to surprising events and less weight to expected events)通俗解释。A surprising event has higher information content than an expected event. An element gets high weight when the corresponding term is frequent in the corresponding document,but the term is rare in other documents in the corpus.

用数学表示上述句子就是信息论中的Mutual Information文中给出了具体公式,不再赘述。

Smoothing The Matrix:使用SVD(奇异值分解)对Matrix进行Smoothing处理,很简单的方法,也不赘述了。


d)Comparing the Vectors

比较Vectors可以比较行向量,也可以比较列向量。比较行向量可以推断各个单词间的相似或者不相似可以进行单词分类和单词聚类。比较列向量可以推断Document,Contexts,Patterns之间的相似程度,可以进行信息检索和文档归类。


e)Three Open Source VSM Systems

这一节根据Matrix划分介绍了每种VSM的开源项目,可作为课程的Projection的参考。之后的Application章指出了每种VSM的实践作用,也可作为Projection的参考。


6.Python Tutorial

使用了Python才发现python是如此的好用,就像pseudo-code很简单。没什么说的,看完tutorial参考他们官网的manual实践就行了。官网Manual链接:Python 2.7.10 Manual   NumPy 1.9 Manual Sci Manual   Matplotlib Manual


7.Lecture Notes

Notes 里讲了一些第一课video里好多没讲的内容,我估计是第二课的预习和总结,可看看作为预习。

版权声明:本文为博主原创文章,未经博主允许不得转载。

posted @ 2015-07-07 21:48  NeighborhoodGuo  阅读(416)  评论(0编辑  收藏  举报