【CS224n-2019學習筆記】Lecture 1: Introduction and Word Vectors


 附上斯坦福cs224n-2019鏈接:https://web.stanford.edu/class/archive/cs/cs224n/cs224n.1194/

 

1.課程簡單介紹

1.1 本課程目標

  1. An understanding of the effective modern methods for deep learning
  • Basics first, then key methods used in NLP: Recurrent networks, attention, etc.
  1. A big picture understanding of human languages and the difficulties in understanding and producing them
  2. An understanding of and ability to build systems (in PyTorch) for some of the major problems in NLP:
  • Word meaning, dependency parsing, machine translation, question answering

1.2 今年的課程與以往的不同

  1. Lectures (including guest lectures) covering new material: character models, transformers, safety/fairness, multitask learn.
  2. 5x one-week assignments instead of 3x two-week assignments
  3. Assignments covering new material (NMT with attention, ConvNets, subwordmodeling)
  4. Using PyTorchrather than TensorFlow
  5. Gentler but earlier ramp-up
  6. First assignment is easy, but due one week from today!

1.3 作業計划

  1. HW1 is hopefully an easy on ramp –an IPythonNotebook
  2. HW2 is pure Python (numpy) but expects you to do (multivariate) calculus so you really understand the basics
  3. HW3 introduces PyTorch
  4. HW4 and HW5 use PyTorch on a GPU (Microsoft Azure)
  • Libraries like PyTorch, Tensorflow(and Chainer, MXNet, CNTK, Keras, etc.) are becoming the standard tools of DL
    5.For FP, you either

  • Do the default project, which is SQuAD question answering

     Open-ended but an easier start; a good choice for most
    
  • Propose a custom final project, which we approve

    You will receive feedback from a mentor(TA/prof/postdoc/PhD) 
    

2.人類語言和詞義

2.1 我們應該如何表示一個單詞的詞義(word meaning)

首先我們來看一下韋伯斯特詞典對於meaning定義

  • the idea that is represented by a word, phrase, etc.
  • the idea that a person wants to express by using words, signs, etc.
  • the idea that is expressed in a work of writing, art, etc.

然后看一下最常見的思考meaning的語言學方式:
在這里插入圖片描述
denotational semantics是指稱語義的意思,在視頻中教授解釋說,指稱語義的想法是把meaning視為事物的代表(也就是signifier“能指”,一種符號),比如我們說到“椅子”,那么椅子這個詞的meaning就指示了我們現實世界中的椅子這種物體(signified“所指”,想法或者事物)

我們現在知道了詞義的概念,下一步就是想我們如何在計算機中得到一個可用的詞義。

2.2 我們如何在計算機中得到一個可用的詞義(word meaning)

2.2.1 常見的解決方案:例如,使用WordNet

2.2.1.1 WordNet含義

WordNet是一個包含同義詞集列表和上義詞(“is a”關系)的庫。
在這里插入圖片描述

2.2.1.2 WordNet等這類資源存在的問題

  1. Great as a resource but missing nuance(細微差別)
  • e.g. “proficient” is listed as a synonym for “good”. This is only correct in some contexts.
  1. Missing new meanings of words
  • e.g., wicked, badass, nifty, wizard, genius, ninja, bombest
  • Impossible to keep up-to-date!
  1. Subjective
  2. Requires human labor to create and adapt
  3. Can’t compute accurate word similarity

2.2.2 使用離散符號表示詞,比如one-hot表示

2.2.2.1 one-hot表示

在傳統的NLP中,我們視單詞為離散的符號。one-hot的意思就是一個詞向量中只有1個位置為1,剩下的位置全部為0,因此也可以翻譯作獨熱

詞向量的維度 = 詞表(不含重復詞)中單詞的數量(比如, 500,000)。

比如hotel,conference,motel的一個本地表示(localist representation)是:
motel = [0 0 0 0 0 0 0 0 0 0 1 0 0 0 0]
hotel = [0 0 0 0 0 0 0 1 0 0 0 0 0 0 0]

2.2.2.2 使用離散符號表示詞存在的問題

Example: in web search, if user searches for “Seattle motel”, we would like to match documents containing “Seattle hotel”.

但是我們上面也看到了motel和hotel的表示,可以發現:

  • 這兩個向量是正交的,也就是說點積為0;
  • 因此,在one-hot向量中沒有一個自然的相似的概念。也就是說使用one-hot向量很難度量詞之間的相似度

2.2.2.3 可以嘗試的解決辦法

  1. 可以依靠WordNet的同義詞集列表去得到相似度?
  • 但眾所周知,很失敗:比如同義詞集不完整等等,其實我覺得還是因為上面提到的WordNet存在的問題,比如很難及時更新等。
  1. 試着在向量本身中去編碼相似度。

2.2.3 使用詞的上下文(context)來表示詞

2.2.3.1 分布式語義(Distributional semantics)

  1. 分布式語義:一個單詞的詞義是由頻繁出現在它附近的詞給出的(A word’s meaning is given by the words that frequently appear close-by);

對於分布式語義的評價:

  • “You shall know a word by the company it keeps”(J. R. Firth 1957: 11)
  • One of the most successful ideas of modern statistical NLP!
  1. 當一個詞w出現在一段文本中,它的上下文(context)就是這段文本中在它附近一個固定窗口(window)內出現的詞的集合(When a word w appears in a text, its context is the set of words that appear nearby (within a fixed-size window).)
  2. 基於以上理論,我們就可以使用w的多個上下文來建立w的表示。比如:
    在這里插入圖片描述

2.2.3.2 詞向量

我們為每個單詞構建一個稠密的向量,使其與出現在類似上下文中的單詞的向量相似。
在這里插入圖片描述
Note:

  • 詞向量有時也稱作是詞嵌入 或者 詞表示。他們都是一種分布式表示。
  • one-hot表示,有時也稱作離散/稀疏 表示
  • 分布式表示(distributed representation),稱作稠密 表示(dense representation)

2.2.3.3 Word meaning as a neural word vector –visualization

在這里插入圖片描述

3.Word2vec介紹

3.1 Word2vec概述

3.1.1 簡介

Word2vec (Mikolovet al. 2013)是一個學習詞語向量表示(詞向量)的框架。

Word2vec的主要想法(Idea):

  • 我們有一個大型的的文本語料庫
  • 在一個固定詞匯表中的每個單詞由一個向量表示(is represented by a vector)
  • 遍歷文本中的每個位置t,其中有一個中心詞(center word)c和上下文(outside,“外部”)單詞o
  • 使用單詞向量c和o的相似度來計算P(o|c),反之亦然
  • 不斷調整單詞向量最大化這個概率

3.1.2 窗口和P(wt+j∣wt)P(w_{t+j}|w_t)P(wt+jwt)計算過程示例

圖-1
圖-2

3.2 目標函數(objective function)

3.2.1 目標函數推導

對於每個位置t=1,…,T,給定一個中心詞wtw_twt,預測一個固定大小的窗口(大小為m)內的上下文單詞:
Likelyhood=L(θ)=∏t=1T∏−m⩽j⩽m,j≠0P(wt+j∣wt;θ)Likelyhood=L(\theta)=\prod_{t=1}^T\prod_{-m\leqslant j\leqslant m,j\neq 0}P(w_{t+j}|w_t;\theta)Likelyhood=L(θ)=t=1Tmjmj=0P(wt+jwt;θ)

  • 最大化上面這個函數就可以達到我們的目的,即最大化預測精度
  • θ\thetaθ代表所有待優化的變量

但是上面這種形式(連乘)不適合求導,因此需要做一定的轉換,log轉換可以把連乘變成累加,並且不改變原函數的單調性。於是最終的目標函數為:
J(θ)=−1TlogL(θ)=−1T∑t=1T∑−m⩽j⩽m,j≠0logP(wt+j∣wt;θ)J(\theta)=-\frac{1}{T}logL(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\leqslant j\leqslant m,j\neq 0}logP(w_{t+j}|w_t;\theta)J(θ)=T1logL(θ)=T1t=1Tmjmj=0logP(wt+jwt;θ)

  • 這樣最大化預測精度的問題就轉變成了最小化目標函數的問題,即最小化目標函數等價於最大化預測精度

3.2.2 目標函數

  • 現在我們要最小化目標函數J(θ):
    J(θ)=−1T∑t=1T∑−m⩽j⩽m,j≠0logP(wt+j∣wt;θ)J(\theta)=-\frac{1}{T}\sum_{t=1}^{T}\sum_{-m\leqslant j\leqslant m,j\neq 0}logP(w_{t+j}|w_t;\theta)J(θ)=T1t=1Tmjmj=0logP(wt+jwt;θ)
  • 還有一個問題,我們如何計算P(wt+j∣wt;θ)P(w_{t+j}|w_t;\theta)P(wt+jwt;θ)。因為在遍歷過程中,每個單詞有時是中心詞,有時是上下文。
  • 解決方案:對每個單詞w使用兩個向量表示:
    • 當w是中心詞的時候,用向量vwv_wvw表示
    • 當w是上下文詞的時候,用向量uwu_wuw表示
  • 然后對於一個中心詞c和一個上下文詞o,計算公式:
    P(o∣c)=exp(uoTvc)∑w∈Vexp(uwTvc)P(o|c)=\frac{exp(u_{o}^{T}v_c)}{\sum_{w\in V}exp(u_{w}^{T}v_c)}P(oc)=wVexp(uwTvc)exp(uoTvc)
  • 向量示例如下:
    在這里插入圖片描述
    Note:
  • 上述計算公式是softmax函數,一般形式是:
    softmax(xi)=exp(xi)∑j=1nexp(xj)softmax(x_i)=\frac{exp(x_i)}{\sum_{j=1}^{n}exp(x_j)}softmax(xi)=j=1nexp(xj)exp(xi)
  • softmax函數將任意值xix_ixi映射到一個概率分布pip_ipi
    • “max”:是因為會放大較大的xix_ixi的概率
    • “soft”:是因為也會給較小的xix_ixi賦一些概率值
    • softmax函數經常用在深度學習中

3.3 如何訓練模型

3.3.1 模型訓練示例

通常訓練一個模型的時候,我們需要調整參數,最小化損失函數。

  • 例子:下面是對於一個簡單凸函數的兩個參數的優化,等高線表示目標函數的值
    在這里插入圖片描述

3.3.2 模型訓練:計算所有詞向量的梯度

  • 前面說了,θ是一個長向量,代表了模型中的所有參數
  • 在這里,詞向量是d維,共有V個詞:
    在這里插入圖片描述
    • 注意,每個詞有兩個向量,分別是作為中心詞、上下文詞時的向量
    • 沿着梯度的反方向,優化以上參數

4.Word2vec目標函數梯度

4.1 補充知識

4.1.1 鏈式法則

用於復合函數求導,有y=f(u),u=g(x)y=f(u),u=g(x)y=f(u),u=g(x),則:
dydx=dydududx\frac{dy}{dx}=\frac{dy}{du}\frac{du}{dx}dxdy=dudydxdu

4.1.2 向量求導

∂xTa∂x=∂aTx∂x=a\frac{\partial x^Ta}{\partial x}=\frac{\partial a^Tx}{\partial x}=axxTa=xaTx=a

  • 其中,x、a默認為列向量
  • 上式求導為標量對向量求導,分子布局:n維行向量,分母布局:n維列向量(默認布局)[2]^{[2]}[2](關於具體的推導步驟:見評論區鏈接)

4.2 白板推導

有了上述補充知識之后,就開始進行求偏導數的白板推導,視頻中教授只對一個中心詞進行了求導演示,以下是我跟着視頻推導的過程(感興趣的可以看看這部分視頻,講解非常清晰):
在這里插入圖片描述

  • 上面演示了損失函數對一個中心詞的求導,另外還需要推導損失函數對於上下文詞的求導,感興趣的可以自己試一下。最終推出對θ中每個向量元素的偏導數。
  • 我的推導如下:
    在這里插入圖片描述

4.3 計算梯度

  • 遍歷每一個在一個固定窗口內的中心詞的梯度
  • 同樣也需要上下文詞的梯度
  • 通常,在每個窗口內,我們會更新這個窗口內用到的所有參數,比如:
    在這里插入圖片描述

4.4 關於Word2vec的細節

為什么同一個詞需要兩個向量?

  • 更易進行優化
  • 在訓練完成后將兩者取平均,即為該詞的詞向量

有兩種模型:

  • Skip-gram(SG):通過中心詞預測上下文詞
  • Continuous Bag of Words(CBOW):使用窗口內的所有上下文詞預測中心詞
  • 本文上面講述的是Skip-gram模型

其他令訓練更有效的手段:

  • 負采樣(negative sampling)
  • 本文上面講的是很簡單的訓練方法

5.優化基礎

5.1 梯度下降法介紹

5.1.1 示例

  • 假設我們有一個損失函數J(θ)J(\theta)J(θ),要最小化
  • 梯度下降法就是一種可以最小化J(θ)J(\theta)J(θ)的算法
  • 主要想法:
    • 對於當前的θ值,計算J(θ)對於θ的梯度,然后將θ沿着梯度的反方向走一小步。重復此步驟,直至滿足停止條件。
      在這里插入圖片描述

5.1.2 梯度更新

  • 矩陣形式更新:
    θnew=θold−α∇θJ(θ)\theta^{new}=\theta^{old}-\alpha \nabla \theta J(\theta)θnew=θoldαθJ(θ)
  • 單個參數更新,要注意參數必須同時更新
    θjnew=θjold−α∂∂θjoldJ(θ)\theta^{new}_j=\theta^{old}_j-\alpha \frac{\partial}{\partial \theta_j^{old}}J(\theta)θjnew=θjoldαθjoldJ(θ)
  • α稱為學習率(learning rate)

5.2 梯度下降法分類

根據每次迭代時使用的樣本量大致分為:

  • 批量梯度下降法(Batch GD,BGD):每次迭代使用全部的樣本對參數進行更新
  • 隨機梯度下降法(Stochastic,SGD):每次迭代使用一個樣本對參數進行更新
  • 小批量梯度下降法(Mini-Batch GD,MBGD):每次迭代使用batch_size個樣本對參數進行更新

更加詳細的介紹見批量梯度下降(BGD)、隨機梯度下降(SGD)以及小批量梯度下降(MBGD)的理解

6.詞向量的簡單演示

教授利用Glove詞向量做了一些簡單展示:

  • 相似詞:找和某個詞向量最相似的那個詞,model.most_similar(“banana”)
  • 詞類比:比如king之於man,等於queen之於woman,也是詞在向量空間king-man+woman=queen
  • 可視化:將詞向量利用PCA降到二維,並進行可視化,可以發現相似概念的詞距離很接近,最終結果如下所示:
    在這里插入圖片描述

參考資料:
1.2019斯坦福公開課CS224N-P1
2.矩陣向量求導-求導定義與求導布局


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM