10分鐘快速入門PyTorch (7)

上一節(jié)中我們介紹了LSTM如何處理圖像分類問題,本質(zhì)上是將圖像看成一個序列做處理偷线,但是RNN的長處并不是做圖像分類磨确,而是做自然語言處理,所以這一節(jié)我們將講一下pytorch下RNN如何做自然語言處理声邦。

Word Embedding

在自然語言處理中詞向量是很重要的乏奥,首先介紹一下詞向量。

之前做分類問題的時候大家應(yīng)該都還記得我們會使用one-hot編碼亥曹,比如一共有5類邓了,那么屬于第二類的話恨诱,它的編碼就是(0, 1, 0, 0, 0),對于分類問題骗炉,這樣當(dāng)然特別簡明照宝,但是對于單詞,這樣做就不行了句葵,比如有1000個不同的詞厕鹃,那么使用one-hot這樣的方法效率就很低了,所以我們必須要使用另外一種方式去定義每一個單詞乍丈,這就引出了word embedding剂碴。

我們可以先舉三個例子,比如

  • The cat likes playing ball.
  • The kitty likes playing wool.
  • The dog likes playing ball.
  • The boy likes playing ball.

假如我們使用一個二維向量(a, b)來定義一個詞诗赌,其中a汗茄,b分別代表這個詞的一種屬性,比如a代表是否喜歡玩飛盤铭若,b代表是否喜歡玩毛線洪碳,并且這個數(shù)值越大表示越喜歡,這樣我們就可以區(qū)分這三個詞了叼屠,為什么呢瞳腌?

比如對于cat,它的詞向量就是(-1, 4)镜雨,對于kitty嫂侍,它的詞向量就是(-2, 5),對于dog荚坞,它的詞向量就是(3, -2)挑宠,對于boy,它的詞向量就是(-2, -3)颓影,我們怎么去定義他們之間的相似度呢各淀,我們可以通過他們之間的夾角來定義他們的相似度。

1

上面這張圖就顯示出了不同的詞之間的夾角诡挂,我們可以發(fā)現(xiàn)kitty和cat是非常相似的碎浇,而dog和boy是不相似的。

而對于一個詞璃俗,我們自己去想它的屬性不是很困難嗎奴璃,所以這個時候就可以交給神經(jīng)網(wǎng)絡(luò)了,我們只需要定義我們想要的維度城豁,比如100苟穆,然后通過神經(jīng)網(wǎng)絡(luò)去學(xué)習(xí)它的每一個屬性的大小,而我們并不用關(guān)心到底這個屬性代表著什么,我們只需要知道詞向量的夾角越小鞭缭,表示他們之間的語義更加接近剖膳。

下面我們使用pytorch來實(shí)現(xiàn)一個word embedding

Code

在pytorch里面word embedding實(shí)現(xiàn)是通過一個函數(shù)來實(shí)現(xiàn)的nn.Embedding

word_to_ix = {'hello': 0, 'world': 1}
embeds = nn.Embedding(2, 5)
hello_idx = torch.LongTensor([word_to_ix['hello']])
hello_idx = Variable(hello_idx)
hello_embed = embeds[hello_idx]
print(hello_embed)
2

這就是我們輸出的hello這個詞的word embedding魏颓,下面我們一步一步來解釋一下代碼

首先我們需要word_to_ix = {'hello': 0, 'world': 1}岭辣,每個單詞我們需要用一個數(shù)字去表示他,這樣我們需要hello的時候甸饱,就用0來表示它沦童。

接著就是word embedding的定義nn.Embedding(2, 5),這里的2表示有2個詞叹话,5表示5維偷遗,其實(shí)也就是一個2x5的矩陣,所以如果你有1000個詞驼壶,每個詞希望是100維氏豌,你就可以這樣建立一個word embedding,nn.Embedding(1000, 100)热凹。如何訪問每一個詞的詞向量是下面兩行的代碼泵喘,注意這里的詞向量的建立只是初始的詞向量,并沒有經(jīng)過任何修改優(yōu)化般妙,我們需要建立神經(jīng)網(wǎng)絡(luò)通過learning的辦法修改word embedding里面的參數(shù)使得word embedding每一個詞向量能夠表示每一個不同的詞纪铺。

hello_idx = torch.LongTensor([word_to_ix['hello']])
hello_idx = Variable(hello_idx)

接著這兩行代碼表示得到一個Variable,它的值是hello這個詞的index碟渺,也就是0鲜锚。這里要特別注意一下我們需要Variable,因?yàn)槲覀冃枰L問nn.Embedding里面定義的元素苫拍,并且word embeding算是神經(jīng)網(wǎng)絡(luò)里面的參數(shù)芜繁,所以我們需要定義Variable。

hello_embed = embeds(hello_idx)這一行表示得到word embedding里面關(guān)于hello這個詞的初始詞向量绒极,最后我們就可以print出來骏令。

以上我們介紹了word embeding在pytorch里面是如何實(shí)現(xiàn)的,下一節(jié)我們將介紹如何用word embedding結(jié)合n gram模型進(jìn)行簡單的預(yù)測集峦。


本文代碼已經(jīng)上傳到了github

歡迎查看我的知乎專欄伏社,深度煉丹

歡迎訪問我的博客

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市塔淤,隨后出現(xiàn)的幾起案子摘昌,更是在濱河造成了極大的恐慌,老刑警劉巖高蜂,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件聪黎,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稿饰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門锦秒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人喉镰,你說我怎么就攤上這事旅择。” “怎么了侣姆?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵生真,是天一觀的道長。 經(jīng)常有香客問我捺宗,道長柱蟀,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任蚜厉,我火速辦了婚禮长已,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘昼牛。我一直安慰自己术瓮,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布匾嘱。 她就那樣靜靜地躺著斤斧,像睡著了一般。 火紅的嫁衣襯著肌膚如雪霎烙。 梳的紋絲不亂的頭發(fā)上撬讽,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天,我揣著相機(jī)與錄音悬垃,去河邊找鬼游昼。 笑死,一個胖子當(dāng)著我的面吹牛尝蠕,可吹牛的內(nèi)容都是我干的烘豌。 我是一名探鬼主播,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼看彼,長吁一口氣:“原來是場噩夢啊……” “哼廊佩!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起靖榕,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤标锄,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后茁计,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體料皇,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了践剂。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片鬼譬。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖逊脯,靈堂內(nèi)的尸體忽然破棺而出优质,到底是詐尸還是另有隱情,我是刑警寧澤男窟,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布盆赤,位于F島的核電站,受9級特大地震影響歉眷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜颤枪,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一汗捡、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧畏纲,春花似錦扇住、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至票灰,卻和暖如春女阀,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背屑迂。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工浸策, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人惹盼。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓庸汗,卻偏偏與公主長得像,于是被迫代替她去往敵國和親手报。 傳聞我的和親對象是個殘疾皇子蚯舱,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容