1. 程式人生 > 其它 >動手學深度學習 | 語言模型 | 53

動手學深度學習 | 語言模型 | 53

目錄

語言模型

一隻猴子打字,就算是打到宇宙毀滅,他也打不出莎士比亞的文章。

語言模型的核心是估計聯合概率\(p(x_1,...,x_t)\),序列模型的核心其實也就是預測整個文字序列出現的概率。

我們使用一個最簡單的計數模型來進行建模。

一元只有一個變數,也就是自己,那麼就可以認為每個變數都是獨立的..

這是一個很現實的問題,就是序列太長不能被一次讀入記憶體中應該如何處理?

兩種方式:隨機取樣 & 順序分割槽

隨機取樣就是隨機丟棄前面k個數據,k屬於\([0,num_step-1]\)

隨機取樣的話,每一個batch的子序列之間都可以認為是獨立的。

隨機取樣的話,相鄰的兩個batch的子序列是連續的。

程式碼

程式碼展示的是時序序列的語言模型是如何讀取資料以及生成mini_batch的。

QA

  1. 在文字預處理中,所構建的詞彙表把文字對映成數字,文字資料量越大,對映的數字也就越大,這些數字還需要做預處理嗎?例如歸一化處理等,是否模型有影響?

這些數字使用做成embedding層用的,它不會真的作為一個數字傳給RNN模型,這些數字在這些地方只是一個id,後面會具體介紹這些數字具體是如何使用的。

  1. 語言sequence sample(token是word)的時間跨度T大概設成多少比較好?如果是中文的話一般又是多少?

這個東西取決於你一句話有多長,取決於你是想對一句話建模還是對一段話建模。這個T取16,32,64,128,長一點512也是有的。沐神認為32是一個不錯的選項,當然越長計算量越大,收斂也會變得慢,當然不是所有模型都能夠去處理很長的序列。