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