自然語言處理
語言建模(language modeling)
/ LANG-gwij MOD-ul-ing /
語言建模的核心,就是一個預測下一個詞的遊戲。給定「今天的天氣非常 ___」,語言模型會給可能的下文標上機率:「熱」很可能,「晴」很可能,「紫色」不太可能,「的」幾乎絕無可能。所謂語言模型,無非就是任何能給詞語序列賦予機率的系統——能說出哪些句子聽起來像真正的語言,哪些聽起來像亂碼。這跟你搶在朋友前面把他的話補完,用的是同一種本能。
這麼一個樸素的任務,為什麼如此要緊?因為要把下一個詞預測得真正好,系統就不得不悄悄學到驚人之多的語法、事實和推理。要補完「法國的首都是 ___」,你得懂地理;要補完「她把牛奶倒進了 ___」,你得對物理常識有感覺。這正是今天大語言模型背後那個神奇的洞見:拿一個大神經網路,除了在大半個網際網路上預測下一個詞之外什麼都不幹,有用的知識竟會作為副產品掉出來——無需任何標註。
對它是什麼、不是什麼要誠實。語言模型捕捉的是哪些詞序列更可能出現,而非什麼是真的;它能產出流暢、自信卻徹頭徹尾錯誤的文字,因為「聽起來合理」和「正確」根本不是一回事。老式語言模型靠數n元語法;現代的則是神經網路。無論哪種,那個訓練目標——猜下一個詞元——都是聊天機器人、自動補全、翻譯和語音辨識底下共同的、安靜的引擎。
提示:「我把鑰匙落在了廚房的 ___ 上。」一個好的語言模型會把「桌子」「檯面」排得很高,把「天空」壓到幾乎為零。把數十億次這樣的預測疊起來,你就得到一個能寫出整段文字的系統。
反覆地預測下一個詞,就是現代文本生成背後的引擎。
語言模型評的是合理性,不是真實性——流暢的文字也可能自信地胡說。「它能很好地預測下一個詞」和「它知道事實」是兩個不同的論斷;切勿由前者徑直推出後者。
又稱
另見