榕城老應
上次談到一桌人吃燒烤,有三人臉髒了,別人看到,自己不知。在女招待三次提醒有人臉髒了後,終於這三人都明白過來了。最後有個問題,既然至少有一個人臉髒了,這是桌上人人都看到的事實,為什麽大家不用來作為推理的依據,還要女招待說了才見效呢?
這就涉及到“公共知識( Common Knowledge )”這個概念了。“知識”是指包含事實,擁有的人理解它,並相信它的事件。但是“我知道,你知道,大家都知道的知識”並不就是公共知識。舉一個例子來說明。
餐館跑堂端菜時,不小心將湯汁滴到女客人的裙子上,那女人瞪他一眼,跑堂的忙不迭道歉說:“這是我的錯!”
這事“跑堂錯”的知識,跑堂自己知道,那女人知道。瞪一眼跑堂,讓跑堂也知道了她有這知識。這大家都有的知識,為什麽跑堂道歉還要對她說一遍?多餘嗎?不!
因為那女人不明白跑堂是否知道這是他的錯,盡管兩人各自都知道,按常理跑堂也該知道是他的錯,但跑堂的不說,別人無從知道他認識到自己的錯。這以後的溝通就有問題了。
所以“我知道,你知道,大家都知道的知識”隻是“彼此的知識( Mutual Knowledge )”,彼此的知識不能用來推理,因為即使你事實上已經知道了,而且大家都是理性的人,但不了解你是否知道,我怎麽知道你會怎麽想呢?用想當然來猜測別人知道些什麽,依此來決定自己的行動和推斷是不可靠的,這也是世界上許多錯誤的根源。
要借用對方的看法來推理,我必須知道“你知道了什麽”,記為“我知道(你知道的知識)”。我從你的角度來推理,我想象中的你所用的知識,不是實際上的你所知道的知識,而是“我知道(你知道的知識)”。
別人想知道我的邏輯推理,根據的是“你知道(我知道的知識)”,如果是多人各自從對方的角度推理就必須根據“每個人知道(其他人知道的知識)”。這樣的知識就叫做“二階彼此的知識”。
比如上麵“菜汁滴裙”事件的店裏有個大家都知道的規矩:跑堂犯了錯,店裏要送碗甜湯來賠罪。那女人瞪跑堂一眼,讓跑堂知道了她有“跑堂錯”這個知識”,跑堂的就會想從她的角度推出她會根據這個知識來要求按規矩給碗甜湯。這個推理用的是“跑堂知道(女人知道跑堂錯)”裏的知識。跑堂沒道歉,女人沒有跑堂自己知道犯錯的知識,也就推測不出會不會送甜湯來。跑堂道歉了,這女人就可以據此推出有甜湯了。這事就不用吵了。
如果大家都知道了這個二階彼此的知識,其中包括諸如“我知道(你知道(我知道的知識))”和“張三知道(李四知道(王五知道的知識))”等等,有各種三重的“知道”,這叫三階彼此的知識,就可以用來進行三層從對方角度的推理。這階數一直加到無窮的知識就叫做“公共知識”。公共知識是無窮階彼此的知識。
暈,是嗎?回頭看一下“髒臉博弈”的例子是怎麽應用這些概念。
前麵帖子裏解答推理中“如果隻有一個髒臉”,“如果隻有兩個髒臉” 裏麵的假設推理都是虛擬的,就是某一個真實或想象中的人在推測從別人角度會怎麽想的假設推理,這個虛擬的假設推理的結果是上麵一層推理所需要的,這個關係就像計算機程序中一個程序叫另一個程序一樣。所以虛擬假設推理處在第幾層中就需要用多少階彼此的知識作為推理的依據。顯然,公共知識可以用在無論那一層中。
到了這裏,你能看出“如果隻有一個髒臉”的虛擬假設推理在這個故事中需要多少階這個“至少有一個髒臉”的彼此知識嗎?