週三晚上的日語課,作文練習。我寫了一句很短的句子,講前一天早上出門的時候看到的東西。
老師拿紅筆在我的助詞上畫了一個圈,改成另一個。
我問為什麼。她想了大概三秒,說:「這裡就是這個。」
我又問,是因為那個東西是新出現的資訊嗎。她說也不完全是。我再問,那是因為它是在描述眼前發生的事嗎。她說,這樣講也可以啦,但也不是每次都這樣。
然後她做了一個我後來想起來覺得很誠實的動作:她把我的句子念了一遍,用我寫的那個助詞念一次,再用她改的念一次,然後看著我,意思是你聽出來了吧。
我沒有聽出來。
那天回家的捷運上我一直在想這件事,想的不是助詞,是那三秒。三秒不是在回想規則,三秒是在找一個能講給我聽的說法。她知道答案,她不知道理由。
我教過人寫程式,我知道那三秒是什麼感覺。有人問你為什麼這裡要這樣寫,你當下就知道不能那樣寫,可是「為什麼」這個問題把你打回一個你從來沒有整理過的地方。你翻找的不是答案,是一個能傳遞的形式。
差別在於,我通常翻得到。那天她翻不到,而我一開始以為那是她的問題。
我開了一個檔案
我做了一件很我的事:回家開了一份表,把我查得到的所有規則列進去,每一條後面放我自己造的例句,然後逐條測試。
我的預期是這樣:這些規則裡一定有一條是真的,其他幾條是它的推論或特例,只是教材沒有講清楚層次。找到那條主規則,這件事就結束了。
這個預期本身是有問題的,但我要花掉整個週末才會發現。
先講一下我的方法,因為這決定了我後來發現了什麼。每一條規則我不只看它解釋得了哪些句子,我更在意它解釋不了哪些。一條只被拿正面例子測過的規則,等於沒被測過——教材裡的示範句是挑出來的,挑出來的東西當然都成立。真正有資訊量的是反例:它告訴你這條規則的邊界在哪裡,而邊界的位置比中心的位置有用得多。
候選一:一個標主題,一個標主語
這是最常見的第一課說法。聽起來乾淨、術語感十足,而且對照中文很好懂。
問題是:在很多句子裡,主題跟主語是同一個詞。
「我明天要去大阪」——我既是主題也是主語。這條規則在這種句子上完全沒有分辨力,它只是換了一個名字重述問題。而我的困難全部發生在這種句子上,不是發生在教科書那些主題跟主語分離的示範句上。
更麻煩的是,我後來才知道「主語」這個概念在日語文法研究裡本身就有爭議,有一派主張日語根本不該用主語這個框架來描述。用一個有爭議的概念去解釋一個具體困難,等於在還沒付清的帳上再賒一筆。
這種事我在報告裡見過太多次了。一個名詞被引進來,看起來把問題說清楚了,實際上只是把問題翻譯成另一套詞彙。翻譯不等於解決,可是翻譯完之後房間裡的人會安靜下來,因為聽起來很像已經解決了。
這條刪掉。
候選二:舊資訊用一個,新資訊用另一個
這條強很多,也真的解釋了一大類句子。說話的人假設對方已經知道的東西,跟第一次拿出來的東西,標記方式不同。這是一個關於資訊狀態的規則,不是關於文法角色的規則,層次高明得多。
它解釋了為什麼故事的開頭跟第二句會不一樣:第一次提到某個東西的時候用一種,之後再提就換成另一種。這個現象在任何一本教材裡都會出現,而且它是真的。
但我那句不是這樣。我寫的那個東西是我每天都會經過的,對我來說是舊得不能再舊的資訊,我在心裡也不是把它當新東西講的。可是它就是要用「新資訊」那一邊的助詞。
後來我才慢慢懂:這裡的「新」不是指說話者知不知道,是指句子把它放在什麼位置。同一個東西,在你當它是背景的時候是一種,在你當它是此刻正在發生的畫面的時候是另一種。
換句話說,這條規則要問的不是「你知不知道」,而是「你打算怎麼把它端出來」。前者是關於世界的事實,後者是關於說話者的意圖,兩者剛好可以完全脫鉤——我可以拿一件我知道了三十年的事,用第一次看到的方式講出來,而語言會忠實地跟著我的意圖走,不是跟著我的知識走。
我花了很久才接受這一點,因為我的職業訓練讓我習慣把「資訊」當成客觀的東西:一個資料點要嘛已經進入你的資訊集,要嘛還沒有。語言不管這個。語言管的是你此刻選擇站在哪裡看。
所以這條規則沒有錯,只是它的「新舊」跟我理解的新舊不是同一件事。而要解釋清楚那是什麼意思,就得引進下一條。
候選三:描述眼前的畫面,還是做出一個判斷
這條在文法書裡有正式名字,大意是說:如果你在做的事是把眼前的一個場景整個端出來,用一種;如果你是在對某個已經站在那裡的東西做出評論或判斷,用另一種。
「啊,下雨了」跟「雨是從昨天開始下的」,兩句的差別不在文法角色,在說話的人在做什麼事。
這條最接近我的句子。我確實是在描述前一天早上抬頭看到的那一瞬間。
可是我測到第四個例句就卡住了:什麼叫「描述眼前的畫面」。我可以在心裡描述一件三年前的事,那算不算眼前。我可以用非常客觀的語氣講一件正在發生的事,那算描述還是判斷。
這條規則把定義的責任搬了家,沒有把它解決掉。它把「什麼時候用哪個助詞」換成了「什麼時候算描述」,而後面那個問題一樣難,只是聽起來比較有學問。
我在工作上很熟這種東西。一份規格書裡寫著「當市場處於高波動狀態時,執行以下動作」——句子完整、邏輯清楚、看起來可以直接實作,直到你問一句「高波動的定義是什麼」,然後發現整份文件裡沒有。定義被搬到一個沒有人負責的地方,而在那之前,所有人都覺得這份規格寫得很清楚。
我通常會在會議上把這種句子挑出來,因為它很危險——它讓一群人以為自己達成了共識,而實際上每個人心裡填進去的定義都不一樣。真正的分歧會被推遲到實作的那一天才爆出來,那時候成本高得多。
候選四:排他
這條說的是,其中一個助詞帶有「就是這個,不是別的」的意思。回答「誰做的」這種問題的時候一定用它,因為答案本身就在排除其他候選人。
這條很硬,而且在它的適用範圍裡幾乎不會錯。
但我那句沒有任何排他的意思。我沒有在跟誰比較,我沒有在排除任何東西,我只是講了我看到什麼。
這條也刪掉。不是它錯了,是它管不到我這句。
不過這條讓我學到一件事:同一組助詞,在不同的句型裡承擔的工作完全不一樣。在問答句裡它負責排除,在描述句裡它負責別的。我一直預設一個符號在一個語言裡只有一種功能,然後試圖找出那個唯一的功能——這個預設從來沒有被驗證過,我甚至沒意識到自己有這個預設。
一個東西可以在不同的脈絡裡做不同的事,這在程式裡叫多載,我每天都在用,只是換到別的領域我就忘了它存在。
候選五:在從屬子句裡
這條是我測下來唯一一條幾乎沒有反例的:在某些從屬子句裡面,就是要用特定的那一個,沒有選擇。
我很高興了三分鐘,然後想起來我那句是單句。
這件事本身值得記下來:可靠的規則往往只在很窄的地方可靠。一條規則的準確率跟它的適用範圍常常是反著走的——你要它涵蓋得廣,它就得模糊;你要它精確,它就只能管一小塊。這在建模上是老生常談,我卻沒想過它會出現在一本初級文法書裡。
十一條之後
週日下午我停下來,看著那張表。
我一共列了十一條。每一條都有反例,而且——這是最讓我不舒服的部分——那些反例彼此不重疊。不是有一批頑固的例外句子,把所有規則都打敗;是每一條規則各自被不同的句子打敗。
如果只有一批例外,那我還可以說「這是一條主規則加上一份例外清單」,那是一個我熟悉的、可以接受的結構。但反例互不重疊的意思是:這十一條不是同一個東西的十一種說法,它們是十一個從不同角度打出去的近似式,每一個都只照亮了一塊。
那一刻我開始懷疑,我一開始那個預期——「這些規則裡一定有一條是真的」——可能根本不成立。
還有一個細節我很在意:那十一條裡,越是能涵蓋多數句子的,反例就越多也越尖銳;越是幾乎沒有反例的,能管的句子就越少。把它們排成一列,那個取捨關係清楚得像一條線。
我盯著那條線看了很久。因為那正是我每天在做的事——在涵蓋率跟準確率之間選一個點——只是我沒有想過,一個幾百年前就存在的語言,會在一本初級教材裡把同樣的取捨攤開來給我看。
我去問了另一個人
週一在公司,我把那句話寫在便利貼上,拿去問一個日本來的同事。他做資料工程,跟我不同組,只是偶爾一起吃飯。
他看了大概三秒,指著說:「這裡要用這個。」
我問為什麼。
他說:「因為念起來就是這個啊。」
三秒。跟我老師一模一樣的三秒,一模一樣的非答案。兩個人相隔一千多公里,沒有商量過,年紀差二十歲,職業完全不同,給出了同一個判決跟同一個沒有理由。
我追問了一下,他很認真地想要幫我,於是開始自己造規則:他先說可能是因為那是新出現的東西,然後自己想到一個反例,改口說也許是因為在描述動作,接著又自己推翻。最後他笑了一下說,這個真的很難講,我們小時候沒有學過這個。
他不是在敷衍我。他是真的沒有。
母語者手上沒有那份規則
這是我那個週末真正學到的東西,跟助詞沒什麼關係。
教科書上的那些規則,不是母語者遵守的東西。母語者不是先學會規則再造句,他們是先接觸了幾十萬個句子,然後長出一種對「這樣講對不對」的判斷。那些規則是後來的人從大量的實際用法裡逆向擬合出來的近似式。
逆向擬合出來的近似式有一個很好認的特徵:它在資料密集的中間區域準得驚人,在邊界地帶開始失準。而初學者遇到的困難,幾乎全部在邊界上——因為中間區域的那些句子,你憑直覺也不會寫錯,你根本不會停下來問。
所以會發生這件很諷刺的事:規則能解釋的句子,你不需要規則;你需要規則的句子,規則解釋不了。
還有一層更彆扭的:當你要一個人說出他其實沒有的規則,他不會回答「我沒有」。他會現場生一個出來,而且那個規則聽起來很有道理,因為它確實是從他真實的判斷裡湊出來的。我同事那三分鐘就是在做這件事。他給我的每一條都不是謊話,但那些都不是他實際使用的東西——那是他為了回答我而即席建構的說法。
我對這個現象並不陌生。事後解釋跟實際運作是兩套東西,這件事在很多地方都成立,我以前只是沒有在一個活人身上這麼近距離看過。
而且我得承認我也是這樣。有人問我為什麼在某個模型裡選了那個窗口長度,我會給一個聽起來很合理的答案:因為要平衡雜訊跟反應速度。這句話沒有錯,但它不是我當初真正做的事——我當初是試了幾個值,看了結果,然後留下感覺對的那個。理由是後來補的,補得很順,順到連我自己都相信了。
差別只在於,我補的那個理由至少可以被檢驗:你可以拿別的窗口長度去跑,看我說的平衡是不是真的存在。母語者補的那個理由沒有這種待遇——沒有人會去查,因為結果反正是對的。
我為什麼那麼在意這件事
寫到這裡我得承認,我對助詞的執著,跟學語言的關係比較小。
我的工作有一個很硬的立場:一個我解釋不了的東西,我不會讓它上線。
這個立場有非常實際的理由,不是潔癖。第一,不能解釋就不能除錯——它哪天開始給出奇怪的結果,你連從哪裡開始查都不知道。第二,不能解釋就無法判斷它在沒見過的情況下會怎麼反應,而金融市場最貴的那幾天,剛好都是沒見過的情況。第三,出事的時候要有人負責,而「模型說的」不是一個可以拿去見人的答案。
這三點我講過很多次,講得很順,順到我從來沒有真的去分辨它們是不是同一件事。
然後我被一個助詞動搖了
因為助詞這件事是一個很乾淨的反例。
這裡有一套系統:它運作得極好,母語者用它幾乎不出錯,它處理的句子數量遠超過任何一本文法書涵蓋的範圍,而它的持有者完全無法解釋它。
而且它甚至不是黑箱。你可以看到全部的輸入——所有的句子都在那裡,公開的,任何人都能去讀。你不是不能觀察它,你是壓縮不了它。
這讓我不得不面對一個我一直避開的可能:有些能力的正確形式就是不可壓縮的。要求它變成一組規則,不是把它變得更清楚,是把它換成一個更差的東西——一個在中間區域跟原版一樣、在邊界上明顯不如的替代品。
我以前預設「可解釋」跟「好」是同方向的,最多是有取捨。這個週末我第一次認真考慮,它們在某些領域可能是真的衝突的。
還有一件事讓我更不舒服:這套系統的學習方式,跟我推崇的方式完全相反。母語者沒有讀過規則,他們是在大量的、沒有標註的、充滿雜訊的真實對話裡泡大的。沒有人給他們正確答案,沒有人告訴他們錯在哪裡——他們只是聽了非常非常多,然後某一天開始不會錯。
如果有人拿這個方法當成一份訓練計畫來提案,我大概會在會議上問:你的驗證集在哪裡,你怎麼知道它學到的不是相關性。而事實是它就是學會了,而且學得比任何規則系統都好。
但我的立場沒有變,變的是理由
想清楚以後,我發現我還是站在原來的位置上,只是原因跟我以為的不一樣。
差別在賭注。
講錯一個助詞,代價是對方多花半秒理解,或者覺得你講話有點怪。這個代價低到你完全可以用一個不可解釋、但正確率很高的系統來處理它,錯了就錯了。
一個模型判斷錯,代價是別人的錢,有時候是別人的工作。在這種地方,我寧可要一個笨一點、正確率低一點,但每一步都講得出理由的東西。不是因為理由讓它更準——它確實比較不準——是因為出事的時候,那條理由鏈是唯一能讓人追下去的東西。
所以我要的其實不是「解釋」,我要的是可追溯的責任鏈。這兩件事在大部分時候長得一模一樣,所以我混用了很多年。它們的差別要在賭注很小的地方才會顯露出來——而助詞這件事,賭注小到剛好可以把它們分開。
這個分辨對我有實際的用處。它讓我知道下次該問什麼:不是「這個東西能不能解釋」,而是「這個東西如果錯了,我能不能查得到是哪裡錯、以及誰要為它負責」。有些不可解釋的東西可以滿足第二個條件,有些看起來很好解釋的東西反而不行。
第二種比第一種危險。一個明白說自己不可解釋的東西,至少大家會對它保持警覺;一個有一套漂亮說法、但那套說法跟它實際的運作沒什麼關係的東西,會讓所有人放下戒心。前者的風險是已知的,後者的風險偽裝成安全感。
那張表後來怎麼了
我把規則那幾欄刪掉了。
不是因為那些規則沒用——它們對中間區域還是有用的,初學的時候沒有它們我連句子都造不出來。刪掉是因為我一直在做一件錯的事:我把它們當成待驗證的假設,然後花整個週末想證明其中一條是對的。它們不是假設,它們是鷹架。
我開了一個新分頁,只放句子。左邊是句子,右邊是那天實際用的助詞,中間那欄——本來我留給「理由」——我改成了「來源」,記的是我在哪裡看到這句話的。
第一列是老師圈起來的那一句。右邊寫著她改的那個,中間寫著日期跟課本頁碼。沒有理由。
這個空欄讓我很不舒服。我看著它的時候會想把什麼東西填進去,即使我知道填進去的會是一個我自己編的、聽起來很有道理的近似式——就像我同事那三分鐘做的一樣。
我打算讓自己不舒服一陣子。
不是要把「凡事都要有理由」這個習慣戒掉,那個習慣救過我很多次,我沒打算讓它走。是想試試看,在一個賭注小到不會傷害任何人的地方,允許自己先會用、再理解,甚至可能永遠不理解。
老實說我不太看好我自己。我猜三個月後我還是會問為什麼,因為那是我的預設反應,不是一個我可以下決心關掉的東西。
不過我給自己加了一條規矩:問之前,先把我猜的答案寫下來。
寫下來以後才問,我就會知道對方給我的那個解釋,到底是真的告訴了我新東西,還是只是把我自己已經有的直覺,用一個聽起來比較體面的說法還給我。
那一列右邊那格,我後來還是空著。
Leave A Comment