目錄:
- 火炬張量庫簡介
- 計算圖和自動差異化
- 深度學習構建基礎:仿射圖,非線性和目標
- 優化和培訓
- 在Pytorch中創建網絡組件
- 單詞嵌入:編碼詞彙語義
- 示例:n-gram語言建模
- 練習:學習單詞嵌入的持續單詞袋
- 序列建模和長期術語記憶網絡
- 示例:用於詞性標籤的LSTM
- 練習:通過角色級功能增強LSTM標記器
- 高級:動態工具包,動態編程和Bilstm-CRF
- 示例:命名實體識別的BI-LSTM條件隨機字段
- 練習:判別標籤的新損失功能
這個教程是什麼?
我寫本教程是因為儘管那裡還有很多其他教程,但它們似乎都有三個問題之一:
- 他們在計算機視覺和Conv網上有很多內容,這與大多數NLP無關(儘管Conv網絡已以很酷的方式應用於NLP問題)。
- Pytorch是全新的,NLP教程的深入學習是在較舊的框架中,通常不在諸如Pytorch之類的動態框架中,Pytorch具有完全不同的風味。
- 這些示例不會超越RNN語言模型,並且在嘗試進行lingusitic結構預測時可以顯示您可以做的很棒的事情。我認為這是一個問題,因為Pytorch的動態圖使結構預測成為其最大的優勢之一。
具體來說,我正在為佐治亞理工學院(Georgia Tech)的自然語言處理課撰寫本教程,以簡化我為班上寫的有關深度過渡解析的班級編寫的問題。該問題集使用一些高級技術。本教程的目的是涵蓋基礎知識,以便學生可以專注於問題集的更具挑戰性的方面。目的是從基礎知識開始,並提升到語言結構預測,我認為在其他Pytorch教程中幾乎完全不存在。一般的深度學習基礎知識有簡短的論述。儘管我認為完整的描述會重新發明方向盤並佔用太多空間時,但主題更特定於NLP特定於深入的討論。
依賴性解析問題集
如上所述,這是通過在Pytorch中實現高性能依賴解析器的問題集。我想在此處添加一個鏈接,因為它可能很有用,只要您忽略了班級的特定內容即可。一些筆記:
- 有很多代碼,因此問題集的開始主要是為了讓人們熟悉我的代碼表示相關數據的方式以及您需要使用的界面。問題集的其餘部分實際上是為解析器實現組件。由於我們以前從未在班上做過深入的學習,因此我在編寫它時試圖提供大量的評論和提示。
- 每個可交付的都有一個單位測試,您可以使用該測試使用該測試。
- 由於我們在班級中使用了此問題,因此請不要公開發布解決方案。
- 如果您正在尋找書面源以補充問題集,則相同的存儲庫中有一些註釋,其中包括有關Shift-Reduce依賴解析的部分。
- 如果在新學期開始時,上面的鏈接可能無法正常工作。
參考:
- 我從本教程中的關於Dynet的教程中在EMNLP 2016上學到了很多關於CMU的Chris Dyer和Graham Neubig以及Bar Ilan University的Yoav Goldberg的知識。 Dynet是一個很棒的軟件包,特別是如果您想使用C ++並避免動態鍵入。 Bilstm CRF練習和角色級特徵練習是我從本教程中學到的東西。
- 一本關於結構預測的好書是諾亞·史密斯(Noah Smith)的語言結構預測。它不使用深度學習,但這還可以。
- 我知道的最好的深度學習書是深度學習,這是該領域的一些主要貢獻者,並且非常全面,儘管沒有NLP的重點。它是免費的,但值得在您的架子上。
練習:
教程中有一些練習,可以實現流行模型(CBOW)或增強我的模型之一。角色級特徵練習尤其是非常不平凡的,但非常有用(我不能引用確切的數字,但是我之前已經運行了實驗,通常是字符級特徵提高了精度為2-3%)。由於它們不是簡單的練習,因此我很快將自己實施它們,並將它們添加到存儲庫中。
建議:
如果您發現任何錯誤或認為有一個特定的模型可以添加,請打開GitHub問題。