CS224D Lecture 1 札記

最近開始看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裏好多沒講的內容,我估計是第二課的預習和總結,可看看作爲預習。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章