N-gram

Start token 和 End token

訓練 n-gram 的時候,需要在句子的前後加上 start token 和 end token,像是 <s></s>

不過仔細想想,End token 的後面不就肯定是新句子了嗎?Start token 似乎是多餘的。

其實,Start token 不止是在標示句子的開始,還是分隔 End Token 和下一句句子的工具。

訓練集的句子之間是獨立的,沒有關係。如果把它們連在一起訓練,不覺得很奇怪嗎?

<s> Today the weather is nice </s>
<s> The phenomenon of quantum entanglement challenges our classical intuitions </s>

在這個例子中,模型不應該誤以為「今天天氣很好」的下一句會是「量子力學挑戰經典力學的直覺」,因為這兩句只是碰巧放在一起的句子。訓練集句子的順序不應該影響訓練結果。

把句子的交接處變成 bigram :

(nice, </s>), (</s>, <s>), (<s>, The)

兩句句子的內容會被 <s></s> 分隔開,不會混在一起。

如果是 trigram 的話,一個 Start token 就不夠用了。

  • 只用一個 Start token 的 trigram(錯誤的做法):
(nice, </s>, <s>), (</s>, <s>, The), (<s>, The, phenomenon)
  • 用兩個 Start token 的 trigram:
(nice, </s>, <s>), (</s>, <s>, <s>), (<s>, <s>, The)

可以看到,句子的結束符不應該和下一個句子開始的單詞連在一起。我們不需要預測句子結束後,下一個新單詞是什麼,因為句子和句子之間是沒有關係的。

參考資料

J&M Ch3 (standford.edu) 的第七頁説明了 trigram 的做法,但沒有解釋原因。

🌐Check out other language versions!
網站使用 Hugo 製作
模板 StackJimmy 設計