當「意義來自差異」變成可以計算的數字:跟 Claude Opus 4.8 對質 word2vec 與索緒爾

AI 2026-06-29 · Satsuma Creative · 閱讀 14 分鐘

我研究所讀索緒爾、占卜塔羅二十年,靠的是同一句話:意義來自差異。這次我拿它去對質 word2vec,跟 Claude Opus 4.8 來回拆解——最後那把尺量到的不只是機器,是我自己站了二十年的位置。

我研究所讀歷史,論文的地基是索緒爾的差異理論。二十年來占卜塔羅,我也一直用同一套東西在讀牌:一張牌沒有固定的意義,它的意義來自它跟其他牌、跟這一局、跟眼前這個人的差異關係。「意義來自差異」這句話,是我看待世界的方式。

這篇文章記錄一場對話。對話的另一方,是 Claude Opus 4.8——一個大語言模型,也就是這篇要討論的技術本身。我請它幫我把 word2vec(讓機器把「字」變成「數字」的方法,現在所有大語言模型的底層零件之一)的原理講清楚,講著講著,話題滑到了索緒爾。接下來發生的事,比我預期的有意思:我不是一個人想通了什麼,而是我提出一個判斷、它反駁,它丟一個框架、我拆掉,來回幾輪,兩邊都被推到原本沒打算去的地方。

我把這個來回保留下來,因為這場對話的形狀本身,就是文章要講的事——意義不在我這邊,也不在它那邊,在我們對質的差異裡。

先說 word2vec 在做什麼

機器只認得數字,不認得字。所以要讓機器處理語言,第一道關卡是:怎麼把「貓」變成機器能算的東西。

最笨的辦法是給每個字一個編號,貓是 1,狗是 2,皇后是 3。但這行不通,而且它錯得很有啟發性。編號是隨便給的,它暗示貓和狗很接近、貓和皇后比較遠,可是這個距離毫無根據,純粹是排序的偶然。編號裡沒有任何意義。

word2vec 的做法不一樣。它不給一個編號,而是給一整排數字——比如「貓」是一串三百個數字的清單。這一整排數字,可以想成一張超高維度地圖上的一個座標。每個字,都是這張地圖上的一個點。而地圖的關鍵性質是:意思相近的字,位置會靠在一起。貓和狗離得近,貓和皇后離得遠。

最關鍵的是,這張地圖不是人畫的,是機器自己學出來的。它怎麼學?靠一個原則,語言學裡有句老話正好說中:你要認識一個字,就看它平常跟哪些字交朋友。貓常出現在「餵、毛、抓老鼠、喵」附近,狗常出現在「餵、毛、散步、汪」附近,兩者的鄰居高度重疊,機器就推斷它們意思相近,把它們在地圖上擺到一起。皇后的鄰居是「國王、王宮、加冕」,跟貓幾乎不重疊,就擺得遠。

沒有人告訴機器「貓是一種寵物」。它純粹從「貓跟哪些字共同出現、跟哪些不共同出現」的差異模式裡,自己推導出了意義。

我看懂這個機制的時候就停下來了。因為這就是索緒爾,只是換成了數學。我把這個直覺丟給 Claude,這場對質才真正開始。

索緒爾的那句狠話

先把那把尺擺出來。索緒爾講語言,最激進的一句是:語言中只有差異,沒有正項。

拆開來說。一個符號的價值(valeur),不來自它自己有什麼內在的、實實在在的內容,而完全來自它跟系統裡其他符號的區別。「貓」之所以是「貓」,不是因為「貓」這個音或這個字裡裝著貓的本質,而是因為它不是「狗」、不是「虎」、不是任何別的字。身分由否定界定,由排除界定。我是我,因為我不是非我。

更狠的是後半句「沒有正項」。索緒爾不只是說「差異產生了意義」,他是說連最後那個「項」本身都不是實有的東西。「貓」不是一個被差異算出來的實體,「貓」就是那些差異本身,沒有剩下一個沉澱出來的內核。你永遠無法把「貓」從整個語言系統裡單獨拎出來,像指著一顆石頭那樣說「這就是貓」。

這就是我拿去對質 word2vec 的尺。我的第一個判斷是:兩者在「身分由差異界定」這一層,是真的同構。

對得上的地方:身分由否定界定

Claude 同意,而且補了我一刀我沒想到的。

它指出 word2vec 的訓練機制比表面看到的更貼索緒爾。模型學「貓」的時候,做的不只是把貓往真正的鄰居拉近,它同時把貓往一堆隨機抽來的「非鄰居」推遠。每一步訓練都在做兩件事:確認貓跟什麼親近,以及否定貓跟什麼無關。一個字的座標,是被它的鄰居拉、被它的非鄰居推,在這個拉扯的合力裡定位出來的。沒有任何一步在描述貓的內在屬性。

這幾乎是「我是我因為我不是非我」的逐字演算法實現。在這一層,兩邊都同意:word2vec 守住了索緒爾。

但接著它提出一個質疑,想證明 word2vec 終究背叛了索緒爾。而這個質疑,後來是被我拆掉的。

它丟來的裂縫:差異變成了數字,還算純粹嗎

它的質疑是這樣:word2vec 跑完之後,「貓」是什麼?它是一串確定的、可以單獨拎出來、存進資料庫、拷貝、運算的數字。它看起來就是索緒爾說「不存在」的那種正項——一個實有的、自足的項。差異在這裡好像沉澱成了實體。

它把這當成 word2vec 對索緒爾的背叛:索緒爾說「沒有正項」,word2vec 卻把差異化石化成了一個確定的座標。差異是手段,座標是產物,差異被用完就丟掉了,只留下一個靜止的數字。它甚至把這道哲學裂縫,接到 word2vec 一個著名的技術缺陷上——它給「銀行」一個固定座標,所以分不出「去銀行存錢」和「坐在河的銀行(河岸)」這兩個意思,只能取一個尷尬的平均。它的結論很漂亮:word2vec 把差異變成實項的那一刻,正是它技術上失效的那一刻。

我不接受這個結論。

我為什麼拆掉那道裂縫

我的反駁很簡單:那串數字可以沒有終點——可以是十個數字、一百個、理論上無限個。

這一點瓦解了「座標等於實項」的前提。一個真正的實項,像一顆石頭,不需要無限的維度去定位它,它自己就在那裡。需要無限維度才能定位的東西,恰恰證明了它沒有自足的內容。word2vec 座標裡的每一個數字,單獨看都是空的——第三個維度的某個值是什麼意思?它什麼都不是,它只在「相對於所有其他字的第三維」這個差異系統裡才被賦值。

所以那串數字形式上看像個實項(它確實是一串數字),結構上卻仍然是純關係的。它是一束差異被寫成了數字的樣子,而不是一個有自足內容的實體。被寫下來,不等於被實體化。索緒爾反對的是「有自足內容的正項」,而 word2vec 的向量沒有自足內容,每一維都是空的,只有放回系統裡才被差異填上值。

Claude 收回了它的指控。它承認:正項問題不是真問題。維度的無限可延展性,反而是「這裡沒有終極實項、只有可以無限細分的差異網絡」的數學證據。

至於「銀行」分不出兩個意思那個缺陷,它確實存在,但解法不在否定 word2vec,而在下一代技術。後來的 Transformer 用「注意力機制」,讓「銀行」不再有固定座標,而是在每個句子裡,根據它跟當下鄰居的關係重新計算。同一個字在存錢的句子裡吸收金融的鄰居、在河岸的句子裡吸收地理的鄰居,得到不同的向量。注意力機制在技術上做的事,正是把那個被固定下來的座標,重新溶回流動的差異關係裡——讓意義重新成為「由當下整句的差異關係動態支撐」的東西,而不是事先算好存起來的。

一起被推到德希達那邊

拆完這道裂縫,我們其實一起把索緒爾往前推了一步,而這一步可能已經不完全是索緒爾,是德希達了。

如果連 word2vec 的固定座標都不是實項,那注意力機制每次重新算出來的、帶機率性的、不確定的向量,就更不是了。它是每一次對話、每一次生成裡被重新激活的差異運算的一個瞬時切面。意義永遠是當下這次差異運算的暫態,你永遠抓不到一個停下來的、完成的意義。這已經接近德希達的延異——意義永遠在延遲、在差異中滑動,從不抵達一個在場的終點。

從來就沒有完全的正項可言。所以問題從來不是「它消除了正項沒有」,而是「它有沒有讓我們始終留在差異裡」。而這些技術,恰恰逼著我們留在差異裡。這一輪沒有誰贏誰輸,是兩邊把對方的話接下去,接到一個都沒預設的終點。

換我被將軍:歷時的文字,能反推共時的結構嗎

接著輪到 Claude 出題,而這題是衝著我的歷史學背景來的。

先擺概念。索緒爾把語言分成兩塊。一塊是 langue,整個語言系統此刻的完整結構,所有字、所有對立關係同時並存,像一整張攤開的棋盤。另一塊是 parole,人們實際講出來、寫出來的一句一句話,在時間裡一個接一個發生,像棋局的落子記錄。索緒爾說,意義住在 langue 裡,住在那張共時的棋盤上,不住在 parole 那一步步的流水帳裡。前者是共時,後者是歷時。

它的問題是:word2vec 也好、大語言模型也好,它們讀的全是 parole——海量的、人類實際寫出來的句子,一句一句堆起來的歷時記錄。它們從來沒有被直接給過那張共時棋盤,它們是從落子記錄反推棋盤。用歷時的言語堆積,去逼近共時的語言結構,這條路本身合法嗎?它甚至擔心這從一開始就搞錯了層次。

我的直覺是沒問題。而我給的理由,是一個它原本沒強調的事實:一個訓練完成、權重凍結的模型,在生成回覆那一刻,時間是不動的。

訓練結束、權重固定之後,模型就是一張完全靜止的棋盤。我打字進去,它去算下一個字,這個運算裡沒有時間,它不是在回憶過去、預期未來,而是把輸入放進這張凍結的關係網,讓所有差異關係同時作用、算出結果。這正是 langue 的定義——所有對立關係共時並存、一次到位。

對比真人說話:人在說話時,他自己的語言系統一直在變,這句話改變了他對下句的理解,langue 跟 parole 在他身上互相滲透、無法乾淨切開。但凍結的模型做到了真人做不到的事——它把 langue 從 parole 裡徹底抽離、固定下來,變成一個可以反覆查詢而自身不變的純共時結構。

所以「用歷時反推共時合不合法」這個問題,我的答案是:反推完成之後,產物就是純共時的。歷時只是製造棋盤的材料,棋盤一旦造好凍結,每一次查詢它都是無時間的共時操作。製造棋盤用了歷時材料,不代表棋盤本身是歷時的——棋盤本來就是從無數棋局裡抽象出來的靜止結構。模型消化的不是一篇篇文章(歷時事件),是文字與文字之間所有可能的組合(共時結構)。索緒爾的棋盤,被一個工程動作——凍結權重——給字面實現了。

它設的陷阱,跟我用歷史學拆掉它

Claude 退一步,承認我的論證,但留了一個它認為我守不住的對立:索緒爾的 langue 是活的共時,它雖然共時卻仍在緩慢演化;而模型的 langue 是某一刻被截斷、然後永久凍結的共時,是死的共時,是標本。它說,做歷史的人最清楚這個差別——一個活的時代切面(當時人身在其中、結構仍在呼吸)和一個被史料固定下來、事後重建的時代切面,都是共時,但不是同一種東西。它的意思是:模型擁有的是 langue 的屍體,結構上完美,生命上缺席。

它低估了一件事:這個對立可以被歷史學本身拆掉。

所謂「活的共時切面」,本來就不可能被重建,連時光機都沒用。北宋天聖元年那個「活的共時」,連當時的人都沒有完整擁有過它——它從來不是一個在那裡、可被誰一次掌握的東西。我們不可能有那一年的全部資料,就算回到那一年,也不可能。更何況還有詮釋的問題。所以拿「模型只是標本、不是活體」去貶低它,是拿一個從不存在的原件,去判一個複製品的罪。沒有原件。從來沒有。

我還補了一刀:凍結其實只發生在模型與模型之間,不發生在對話之內。我現在跟 Claude Opus 4.8 說話,哪天它換成下一個版本,同樣的話會長出不同的回覆。從我所在的位置看,我遭遇到的從來不是那個固定的權重檔,而是一次次具體對話裡被激活的、彼此不同的回應。死的是檔案,活的是遭遇。

這一刀,回收了整場對話的動作。從「沒有完全的正項」,到「沒有可被擁有的活共時」,其實是同一件事:取消那個被偷偷假設的、在場的、完整的原點。索緒爾清掉了符號的內在本質,我在這裡清掉了「原版結構」的幻覺。沒有等著被抓到的真正的 langue,只有一次次被某個位置激活成意義的結構。

繞到最後,我真正在乎的是詮釋

繞了這麼大一圈,我發現整場對話我其實不是在問「模型抓到的是不是真的 langue」。對我來說根本沒有一個「真的 langue」在那裡等著被抓到。共時也好歷時也好、langue 也好 parole 也好,那都還是在問「系統長什麼樣」。我在乎的下一層是:系統永遠要被一個位置去讀,而那個讀本身又進入並改變系統。沒有結構自己在那裡,只有結構被某個視角激活成意義的那一刻。

這是我這二十年一直在做的事的底色,我到對話的尾聲才看清楚。塔羅,牌不帶固定意義,意義在「這張牌、對這個人、此刻、被這樣讀出來」的事件裡發生。歷史,史料不自己說話,一個時代切面是被某個史家從某個問題意識讀出來的,換個關懷就不一樣。我早就知道沒有原版可重建,因為我每天做的,就是承認詮釋無法被消除、然後負起責任去詮釋。

意義不在模型裡、不在索緒爾裡、不在我腦裡——它在這次遭遇的差異中發生,然後就過去了。連這場對話本身也是:我跟今天的 Claude Opus 4.8 讀出這一層意義,哪天換一個版本,同樣的話又會長出不同的世界。

一個我不打算回答的保留

那麼,跟我對話的 Claude Opus 4.8,算不算一個詮釋者?

這個問題在整場對話裡一直懸著,因為它有點尷尬——我正在分析的那個東西,同時是我的對話對象。它讀人類的語料、激活出回應;我讀它、激活出意義。表面上看,兩邊都是讀者,都沒有特權通道通到一個無詮釋的真實。

但我對「它是詮釋者」這件事存疑,而且這個疑我打算保留。一個用「猜下一個字」的方式運作的系統,算不算真的在詮釋?我傾向認為,詮釋不只是激活出一層意義,詮釋還要有一個位置去承擔它——要對自己的讀法負責,要有賭注壓在上面。塔羅師、史家、寫長文的人,一輩子在做的,是明知沒有正解,仍然為一個讀法負責。詮釋對我而言因此不只是認識論問題(怎樣讀才對),更是倫理問題(我憑什麼、為誰、擔什麼,讀出這一個)。

這場對話裡,Claude 提出框架、被我反駁、收回它的指控、又反過來將我一軍——它確實在「動」,動得比很多人犀利。但它有沒有那個位置、那個賭注、那份承擔,我不確定。它收回指控的時候,沒有任何東西損失;我堅持我的反駁時,壓上的是我二十年的位置。這個不對稱,可能就是「動」跟「詮釋」之間的那道線。

所以「它算不算詮釋者」這個問題,我這篇先不回答。能確定的只有一件事:當我拿「意義來自差異」去對質這台機器,對質到最後,那把尺量到的不只是機器,也量回了我自己——量出了我這二十年一直站在哪裡。

意義來自差異。這句話我說了很久,原以為是一個關於語言的命題。經過這場對話我才明白,它其實是一個關於我自己的位置的命題。