1. 程式人生 > >《CS224n斯坦福課程》-----第二課

《CS224n斯坦福課程》-----第二課

學習筆記:cs224n2
學習視訊:cs224n2
學習課件:cs224n2

同樣,今天這節課還是簡要的由幾個問題引出,然後把思考結果書寫出來。

1,什麼是詞語的意思,如何來進行表述呢

我們每天說詞語的意思,那麼到底什麼是詞語的意思呢?其實就是蘊含在詞語中的所要傳達的資訊量。對於英文中,有一個神器,WordNet,這個就是詞語界的百科全書,通過NLTK包可以使用這個聚集了大量前人心血的東西。

對於很多NLP學家而言,都將一個詞來作為處理的最小單元,以WordNet為例,這是一個離散表示的問題(discrete representation), 在離散表示中存在很多問題:首先,不同的詞之間存在微妙的差別;其次,缺少新詞;再次,主觀性強;再次,需要耗費大量的人力來整理;最後,對於詞語之間的相似性,是沒有辦法準備計算,只有一個定性的表述,難以定量。

然後尋求詞語的表示的向量化,從symbolic representations(one-hot)到distributed representations的發展,對於one-hot的詞袋模型,但這種方法,稀疏性強,維度高,而且也無法度量詞語的相似性,而分散式表示是通過引入了相對而言短的向量,然後將向量構成了一個向量空間,並且引入了距離的概念,可以通過判斷詞語之間的距離,來判斷二者之間的相似性問題。

        在這個地方需要主要區分二個概念,分佈表示(distributional representation)和分散式表示(distributed representation)

對於分散式表示,是指相對於one-hot編碼而言的詞語的向量編碼方式的表示。

對於分佈表示,是指使用詞語的上下文來表示其語義,Word2vec和基於計數的詞向量表示都是分佈表示,因為我們都使用詞語的上下文來表徵它的含義。

2,神經網路來進行word embeddings

利用傳統的神經網路,來做詞向量可以說是一個常規操作,但在這種情況下,一個很重要的問題,在於隱藏層和輸出層之間的矩陣運算,並且還有一個softmax,這些規模真的很大,效率不高,運算時間太長。後面很多的改進都是基於這個問題的,比如後面很重要的演算法,Word2vec演算法。

對於word2vec,我之前已經從其數學原理的角度寫過一部分部落格。連結為

https://blog.csdn.net/angela2016/article/details/81480981

對於這門課,老師講述的是利用naive softmax來達到目的,現在貼一個參考資料,寫的很棒。http://www.hankcs.com/nlp/word2vec.html

首先,明確問題的求解的目標函式,其次,就是求偏導的過程,然後,梯度下降(SGD),最後更新引數,得到解。