1.2 数学符号-深度学习第五课《序列模型》-Stanford吴恩达教授
| 1.1 為什么選擇序列模型 | 回到目錄 | 1.3 循環神經網絡 | 
數學符號(Notation)
本節先從定義符號開始一步步構建序列模型。
比如說你想要建立一個序列模型,它的輸入語句是這樣的:“Harry Potter and Herminoe Granger invented a new spell.”,(這些人名都是出自于J.K.Rowling筆下的系列小說Harry Potter)。假如你想要建立一個能夠自動識別句中人名位置的序列模型,那么這就是一個命名實體識別問題,這常用于搜索引擎,比如說索引過去24小時內所有新聞報道提及的人名,用這種方式就能夠恰當地進行索引。命名實體識別系統可以用來查找不同類型的文本中的人名、公司名、時間、地點、國家名和貨幣名等等。
現在給定這樣的輸入數據 xxx ,假如你想要一個序列模型輸出 yyy ,使得輸入的每個單詞都對應一個輸出值,同時這個 yyy 能夠表明輸入的單詞是否是人名的一部分。技術上來說這也許不是最好的輸出形式,還有更加復雜的輸出形式,它不僅能夠表明輸入詞是否是人名的一部分,它還能夠告訴你這個人名在這個句子里從哪里開始到哪里結束。比如Harry Potter(上圖編號1所示)、Hermione Granger(上圖標號2所示)。
更簡單的那種輸出形式:
這個輸入數據是9個單詞組成的序列,所以最終我們會有9個特征集和來表示這9個單詞,并按序列中的位置進行索引, x<1>、x<2>、x<3>x^{<1>}、x^{<2>}、x^{<3>}x<1>、x<2>、x<3> 等等一直到 x<9>x^{<9>}x<9> 來索引不同的位置,我將用 x<t>x^{<t>}x<t> 來索引這個序列的中間位置。 ttt 意味著它們是時序序列,但不論是否是時序序列,我們都將用 ttt 來索引序列中的位置。
輸出數據也是一樣,我們還是用 y<1>、y<2>、y<3>y^{<1>}、y^{<2>}、y^{<3>}y<1>、y<2>、y<3> 等等一直到 y<9>y^{<9>}y<9> 來表示輸出數據。同時我們用 TxT_xTx? 來表示輸入序列的長度,這個例子中輸入是9個單詞,所以 Tx=9T_x=9Tx?=9 。我們用 TyT_yTy? 來表示輸出序列的長度。在這個例子里 Tx=TyT_x=T_yTx?=Ty? ,上個視頻里你知道 TxT_xTx? 和 TyT_yTy? 可以有不同的值。
你應該記得我們之前用的符號,我們用 x(i)x^{(i)}x(i) 來表示第 iii 個訓練樣本,所以為了指代第 ttt 個元素,或者說是訓練樣本 iii 的序列中第 ttt 個元素用 x(i)<t>x^{(i)<t>}x(i)<t> 這個符號來表示。如果 TxT_xTx? 是序列長度,那么你的訓練集里不同的訓練樣本就會有不同的長度,所以 Tx(i)T_x^{(i)}Tx(i)? 就代表第 iii 個訓練樣本的輸入序列長度。同樣 y(i)<t>y^{(i)<t>}y(i)<t> 代表第 iii 個訓練樣本中第 ttt 個元素, Ty(i)T_y^{(i)}Ty(i)? 就是第 iii 個訓練樣本的輸出序列的長度。
所以在這個例子中, Tx(i)=9T_x^{(i)}=9Tx(i)?=9 ,但如果另一個樣本是由15個單詞組成的句子,那么對于這個訓練樣本, Tx(i)=15T_x^{(i)}=15Tx(i)?=15 。
既然我們這個例子是NLP,也就是自然語言處理,這是我們初次涉足自然語言處理,一件我們需要事先決定的事是怎樣表示一個序列里單獨的單詞,你會怎樣表示像Harry這樣的單詞, x<1>x^{<1>}x<1> 實際應該是什么?
接下來我們討論一下怎樣表示一個句子里單個的詞。想要表示一個句子里的單詞,第一件事是做一張詞表,有時也稱為詞典,意思是列一列你的表示方法中用到的單詞。這個詞表(下圖所示)中的第一個詞是a,也就是說詞典中的第一個單詞是a,第二個單詞是Aaron,然后更下面一些是單詞and,再后面你會找到Harry,然后找到Potter,這樣一直到最后,詞典里最后一個單詞可能是Zulu。
因此a是第一個單詞,Aaron是第二個單詞,在這個詞典里,and出現在367這個位置上,Harry是在4075這個位置,Potter在6830,詞典里的最后一個單詞Zulu可能是第10,000個單詞。所以在這個例子中我用了10,000個單詞大小的詞典,這對現代自然語言處理應用來說太小了。對于商業應用來說,或者對于一般規模的商業應用來說30,000到50,000詞大小的詞典比較常見,但是100,000詞的也不是沒有,而且有些大型互聯網公司會用百萬詞,甚至更大的詞典。許多商業應用用的詞典可能是30,000詞,也可能是50,000詞。不過我將用10,000詞大小的詞典做說明,因為這是一個很好用的整數。
如果你選定了10,000詞的詞典,構建這個詞典的一個方法是遍歷你的訓練集,并且找到前10,000個常用詞,你也可以去瀏覽一些網絡詞典,它能告訴你英語里最常用的10,000個單詞,接下來你可以用one-hot表示法來表示詞典里的每個單詞。
舉個例子,在這里 x<1>x^{<1>}x<1> 表示Harry這個單詞,它就是一個第4075行是1,其余值都是0的向量(上圖編號1所示),因為那是Harry在這個詞典里的位置。
同樣 x<2>x^{<2>}x<2> 是個第6830行是1,其余位置都是0的向量(上圖編號2所示)。
and在詞典里排第367,所以 x<3>x^{<3>}x<3> 就是第367行是1,其余值都是0的向量(上圖編號3所示)。如果你的詞典大小是10,000的話,那么這里的每個向量都是10,000維的。
因為a是字典第一個單詞, x<7>x^{<7>}x<7> 對應a,那么這個向量的第一個位置為1,其余位置都是0的向量(上圖編號4所示)。
所以這種表示方法中, x<t>x^{<t>}x<t> 指代句子里的任意詞,它就是個one-hot向量,因為它只有一個值是1,其余值都是0,所以你會有9個one-hot向量來表示這個句中的9個單詞,目的是用這樣的表示方式表示 XXX ,用序列模型在 XXX 和目標輸出 YYY 之間學習建立一個映射。我會把它當作監督學習的問題,我確信會給定帶有 (x,y)(x,y)(x,y) 標簽的數據。
那么還剩下最后一件事,我們將在之后的視頻討論,如果你遇到了一個不在你詞表中的單詞,答案就是創建一個新的標記,也就是一個叫做Unknow Word的偽造單詞,用<UNK>作為標記,來表示不在詞表中的單詞,我們之后會討論更多有關這個的內容。
總結一下本節課的內容,我們描述了一套符號用來表述你的訓練集里的序列數據 xxx 和 yyy ,在下節課我們開始講述循環神經網絡中如何構建 XXX 到 YYY 的映射。
課程板書
 
 
| 1.1 為什么選擇序列模型 | 回到目錄 | 1.3 循環神經網絡 | 
總結
以上是生活随笔為你收集整理的1.2 数学符号-深度学习第五课《序列模型》-Stanford吴恩达教授的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 1.1 为什么选择序列模型-深度学习第五
- 下一篇: 1.3 循环神经网络模型-深度学习第五课
