隨著人工智能和深度學習程序在未來幾年的蓬勃發展,自然語言處理(NLP)將日益普及,而且必要性也與日俱增。PyTorch 自然語言處理是實現這些程序的不錯選擇。
在本文中,我們將解決一些剛開始潛心研究自然語言處理時可能遇到的淺顯的問題,不過我們也會探討更深層次的問題,并給出恰當的步驟,讓你可以著手開發自己的 NLP 程序。
PyTorch 可以用于 NLP 嗎?
首先,NLP 是一門應用科學。它是工程學的一個分支,融合了人工智能、計算語言學和計算機科學,旨在“理解”自然語言(即口語和書面語言)。
其次,NLP 并不是指機器學習或深度學習。相反,要教給這些人工智能程序如何處理自然語言,利用其他系統來處理輸入到這些程序中的內容。
一些人工智能程序被稱為 NLP 程序只是因為這樣簡單,但嚴格來說,情況并非如此。在經過適當的訓練后,它們能夠對語言進行理解,但有一個完全不同的系統和過程在幫助這些程序理解自然語言。
這就是為什么用 PyTorch 進行自然語言處理會很方便。PyTorch 基于 Python 構建,它的好處是有預先寫好的代碼(稱為類),而且都是圍繞 NLP 設計的。這使得整個過程對每個參與者來說都更簡單快捷。
有了這些 PyTorch 類,再加上 PyTorch 可以使用的其他各種 Python 庫,沒有比它更適合自然語言處理的機器學習框架了。
如何開始學習自然語言處理?
使用 PyTorch 進行自然語言處理,你需要熟悉 Python 編程。一旦你熟悉了 Python,就會開始接觸到大量其他可以用于各種深度學習項目的框架。不過,由于 PyTorch Tensors 的存在,用 PyTorch 進行自然語言處理成了最佳選擇。
簡單地說,tensors 允許你使用 GPU 進行計算,這可以大大提升使用 PyTorch 開發的 NLP 程序的速度和性能。這意味著你可以加快深度學習程序的訓練速度,從而能夠利用 NLP 實現自己所期望的結果。
如上所述,PyTorch 為 NLP 及相關程序提供了不同的類,以保證它們良好運轉。我們將對其中的六個類及其使用場景進行分析,以便幫助你在一開始時做出正確的選擇。
1. torch.nn.RNN
我們要看的前三個類都是多層類(multi-layer classes),這意味著它們可以表示雙向遞歸神經網絡。簡單來說,它允許深度學習程序從過去的狀態中學習,并隨著計算繼續運行和處理從新的 / 未來的狀態中學習。這使得這些程序能夠學習和處理自然語言輸入,甚至理解更深層次的語言怪癖。
torch.nn.RNN 多對多圖
torch.nn.RNN 表示循環神經網絡(Recurring Neural Network),從名字就能看出這個類能提供什么。這是 PyTorch 提供的最簡單的循環神經網絡類,剛開始進行自然語言處理時可以考慮用它。
2. torch.nn.LSTM
torch.nn.LSTM 也是一個多層 PyTorch 類。它具有 torch.nn.RNN 的所有優點,但具有長短期記憶(Long Short Term Memory)。從本質上講,這意味著使用這個類的深度學習程序可以超越一對一的數據點連接,對整個數據序列進行處理。
在使用 PyTorch 進行自然語言處理時,torch.nn.LSTM 是一個比較常用的類,因為它不僅可以理解手寫或打字輸入數據,而且還可以識別語音和其他聲音。
能夠處理更復雜的數據序列,使該類成為希望充分利用自然語言處理潛力的程序的必要組件。
3. torch.nn.GRU
torch.nn.GRU 基于 RNN 和 LSTM 類構建,引入了門控循環單元(Gated Recurrent Units)。簡而言之,這意味著 torch.nn.GRU 類程序有一個門控輸出。也就是說,它們的功能與 torch.nn.LSTM 類似,但可以簡單地忽略那些與其他預期結果或大多數數據集的結論不一致的數據集。
torch.nn.GRU 類程序也是一種使用 PyTorch 開始學習 NLP 的好方法,因為它們比較簡單,但可以在比較短的時間內產生與 torch.nn.LSTM 類似的結果。不過,如果程序忽略了對其學習可能很重要的數據集,在沒有密切監控的情況下,它們的準確性可能會降低。
4. torch.nn.RNNCell
接下來的三個類是前面三個類的簡化版本,所以它們的功能都很接近,但優點不同。這些類都是單元級類(cell-level classes),基本上一次運行一個操作,而不是同時處理多個數據集或序列。
使用 PyTorch 進行自然語言處理的輸出結果,該過程使用了分配給相應圖片的單詞。這種方式比較慢,但只要有足夠的時間,結果會準確得多。RNNCell 程序仍然可以從過去和未來的狀態中學習。
5. torch.nn.LSTMCell
torch.nn.LSTMCell 的功能與普通的 torch.nn.LSTM 類相似,能夠處理數據集和序列,但不能同時處理多個。與 RNNCell 程序一樣,這意味著它速度比較慢,強度較低,但它可以隨著時間的推移提高精度。
這些單元級類中的每一個都與它們的前身差別不大,但如果要對這些差異進行深入研究的話,將遠遠超出本文的范圍。
6. torch.nn.GRUCell
用 PyTorch 進行自然語言處理時,最有趣的一個類是 torch.nn.GRUCell。它仍然具有門控輸出的功能,這意味著它可以忽略離群數據集,同時仍然可以從過去和未來的操作中學習。
可以說,這個 PyTorch 類更受初學者歡迎,因為它潛力最大,達到最佳效果的要求又最低。
要確保程序得到適當的訓練,主要的成本是時間和精力。
使用PyTorch 實現自然語言處理
關于如何開始使用 PyTorch 進行自然語言處理,還有很多東西需要介紹。在選擇了適合自己的深度學習模型的 PyTorch 類后,還有一個重要的因素需要了解,那就是如何在模型中實現 NLP。
要想擁有一個經過充分優化的、可使用的自然語言處理深度學習模型,很明顯,將單詞編碼到模型中大概是最重要的過程之一。使用 PyTorch 進行自然語言處理時需要某種單詞編碼方法。
有很多方法可以讓模型處理單個字母,但創建 NLP 深度學習模型,關注的不是單個單詞和字母,而是這些單詞和短語的語義和語言學意義。下面是使用 PyTorch 實現 NLP 的三種基本的詞嵌入模型:
簡單單詞編碼:訓練模型關注序列中每個單獨的單詞,讓它們自己推導出相似性和差異性。這種方法最簡單,但可能很難讓模型準確理解或預測語義。
N-Gram 語言建模:該模型經過訓練,在學習單詞時會考慮到序列中的其他單詞。也就是說,它們可以學習單詞之間的關系以及在整個句子中的作用。
連續詞袋(CBOW):這是 N-Gram 語言建模的擴展版本。經過訓練的深度學習模型可以序列化每個單詞之前和之后設定數量的單詞,進而深入學習單詞與周圍單詞的關系以及它們在序列中的作用。到目前為止,這是使用 PyTorch 進行自然語言處理最常用的方法。
選好了 PyTorch 類和詞嵌入方法后,就可以開始在下一個深度學習項目中利用自然語言處理了!
自然語言處理是深度學習和人工智能領域最熱門的話題之一,許多行業都在尋找利用這種深度學習模型的方法,以供內外部使用。
你是怎么想的?準備好用 PyTorch 解決自然語言處理的問題了嗎?
審核編輯:劉清
-
人工智能
+關注
關注
1791文章
47183瀏覽量
238264 -
自然語言處理
+關注
關注
1文章
618瀏覽量
13552 -
pytorch
+關注
關注
2文章
807瀏覽量
13200
原文標題:如何入門PyTorch自然語言處理?
文章出處:【微信號:AI_Architect,微信公眾號:智能計算芯世界】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論