2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授
嵌入矩陣 (Embedding Matrix)
接下來我們要將學習詞嵌入這一問題具體化,當你應用算法來學習詞嵌入時,實際上是學習一個嵌入矩陣,我們來看一下這是什么意思。
和之前一樣,假設我們的詞匯表含有10,000個單詞,詞匯表里有a,aaron,orange,zulu,可能還有一個未知詞標記<UNK>。我們要做的就是學習一個嵌入矩陣 EEE,它將是一個300×10,000的矩陣,如果你的詞匯表里有10,000個,或者加上未知詞就是10,001維。這個矩陣的各列代表的是詞匯表中10,000個不同的單詞所代表的不同向量。假設orange的單詞編號是6257(下圖編號1所示),代表詞匯表中第6257個單詞,我們用符號 O6527O_{6527}O6527? 來表示這個one-hot向量,這個向量除了第6527個位置上是1(下圖編號2所示),其余各處都為0,顯然它是一個10,000維的列向量,它只在一個位置上有1,它不像圖上畫的那么短,它的高度應該和左邊的嵌入矩陣的寬度相等。
假設這個嵌入矩陣叫做矩陣 EEE ,注意如果用 EEE 去乘以右邊的one-hot向量(上圖編號3所示),也就是,那么就會得到一個300維的向量, EEE 是300×10,000的,是10,000×1的,所以它們的積是300×1的,即300維的向量。要計算這個向量的第一個元素,你需要做的是把 EEE 的第一行(上圖編號4所示)和 O6527O_{6527}O6527? 的整列相乘,不過 O6527O_{6527}O6527? 的所有元素都是0,只有6257位置上是1,最后你得到的這個向量的第一個元素(上圖編號5所示)就是orange這一列下的數字(上圖編號6所示)。然后我們要計算這個向量的第二個元素,就是把 EEE 的第二行(上圖編號7所示)和這個 O6527O_{6527}O6527? 相乘,和之前一樣,然后得到第二個元素(上圖編號8所示),以此類推,直到你得到這個向量剩下的所有元素(上圖編號9所示)。
這就是為什么把矩陣和這個one-hot向量相乘,最后得到的其實就是這個300維的列,就是單詞orange下的這一列,它等于 e6527e_{6527}e6527? ,這個符號是我們用來表示這個300×1的嵌入向量的符號,它表示的單詞是orange。
更廣泛來說,假如說有某個單詞w,那么 ewe_wew? 就代表單詞w的嵌入向量。同樣, EOj,OjEO_j,O_jEOj?,Oj? 就是只有第 jjj 個位置是1的one-hot向量,得到的結果就是 eje_jej? ,它表示的是字典中單詞 jjj 的嵌入向量。
在這一小節中,要記住的一件事就是我們的目標是學習一個嵌入矩陣 EEE 。在下節視頻中你將會隨機地初始化矩陣 EEE ,然后使用梯度下降法來學習這個300×10,000的矩陣中的各個參數, EEE 乘以這個one-hot向量(上圖編號1所示)會得到嵌入向量。再多說一點,當我們寫這個等式(上圖編號2所示)的時候,寫出這些符號是很方便的,代表用矩陣 EEE 乘以one-hot向量 OjO_jOj? 。但當你動手實現時,用大量的矩陣和向量相乘來計算它,效率是很低下的,因為one-hot向量是一個維度非常高的向量,并且幾乎所有元素都是0,所以矩陣向量相乘效率太低,因為我們要乘以一大堆的0。所以在實踐中你會使用一個專門的函數來單獨查找矩陣 EEE 的某列,而不是用通常的矩陣乘法來做,但是在畫示意圖時(上圖所示,即矩陣 EEE 乘以one-hot向量示意圖),這樣寫比較方便。但是例如在Keras中就有一個嵌入層,然后我們用這個嵌入層更有效地從嵌入矩陣中提取出你需要的列,而不是對矩陣進行很慢很復雜的乘法運算。
在本視頻中你見到了在學習嵌入向量的過程中用來描述這些算法的符號以及關鍵術語,矩陣 EEE 它包含了詞匯表中所有單詞的嵌入向量。在下節視頻中,我們將討論學習矩陣 EEE 的具體算法。
課程板書
總結
以上是生活随笔為你收集整理的2.4 嵌入矩阵-深度学习第五课《序列模型》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2.3 词嵌入的特性-深度学习第五课《序
- 下一篇: 2.5 学习词嵌入-深度学习第五课《序列