問題解決與設計(四):糾結與最優解

TBBT里的擴展版剪刀石頭布(注意里面的箭頭)

關鍵詞:價值/損失函數 | 決策 | 偏好系統 | 最優解

糾結、選擇與價值函數

糾結是什么?讓我們回歸字面:一個糾纏打結的復雜線團,拆也不是、剪也不是,胡亂嘗試之下甚至纏得更緊。

很不幸的是,我們面對問題時幾乎總是會進入這樣一種狀態。原因有兩個,比如問題本身就很復雜,我們很難找到可行解。但或許更多的情況是,諸多可行解已擺在面前,我們要從中選擇出最優解。糾結的其實是如何選擇。

先讓我們來看一個令人糾結的經典問題:有軌電車難題

假設你看到一輛剎車壞了的有軌電車,即將撞上前方軌道上的5個人,而旁邊的備用軌道上只有1個人,如果你什么都不做,5個人會被撞死。你手邊有一個按鈕,按下按鈕,車會駛入備用軌道,只撞死1個人。你會選擇怎樣做?

糾結了嗎?讓我們先來分析這個問題中的最明顯的關鍵條件:一邊是5個人,一邊是1個人。這時,僅從數字上來看,當然選擇5個人,沒問題吧?

讓我們補充點佐料,那么一大波問題來了:

  1. 那5個人都是你不認識的人,那1個人則是你的親人
  2. 1000000個你不認識的人,1個你的親人
  3. 一邊5人一邊1人,你都不認識,但是你知道如果按了按鈕,你相當于主動殺掉5個無辜的人,會一輩子良心不安,反之如果什么都不做,至少你沒有主動選擇殺死誰,雖然也很難受但似乎可以承受
  4. (還可以繼續細思恐極下去...)

糾結了嗎?

為什么糾結呢?因為我們顯然不如我們自己通常認為的那樣理性

是救人多的那邊(功利)?是救親人(道德/情感)?是避免主動選擇造成的傷害(自我保護)?...

然而這道問題,在絕對的理性面前,其實沒有絲毫難度。讓我們嘗試一下。

假設對于此問題你的價值函數是一個簡單的多元線性函數:

f(x1, x2, x3) = a1x1 + a2x2 +a3x3

其中:

x1: 所有軌道上最后存活的人數
x2: 軌道上存活你的親人數
x3: 軌道上你主動殺死的人數

那么好啦,你只需要提供心儀的參數值a1,a2,a3給這個價值函數,就建立起了你自己的模型,使用這個模型,以上所有的問題都能輕松算得最優解。

舉例而言,假如你的參數是1, 100, -2,那么就問題1而言,選擇救那5個路人的價值是1*5 + 100*0 + (-2*1) = 3,選擇救1個親人的價值是1*1 + 100*1 + (-2*5) = 91,91>3,毫無疑問選擇救你的那個親人。

你還可以設置更復雜的價值函數,比如更多自變量,比如非線性

模型2. 你救的人數存在邊際效益遞減,救2人和救1人差別或許很大,但救10000人和救9000人的差別或許就沒那么強的實感了,隨便來個log來示意一下:

f(x1, x2, x3) = a1logx1 + a2x2 + a3x3

模型3. 你救的親人越多,你越會因為主動殺死別人的行為產生痛苦:

f(x1, x2, x3) = a1x1 + a2x2 + a3x1x3

或許這個例子太過血淋淋了,我們很難做到絕對理性。但我想要講的應該很清楚了,許多糾結的問題,糾結的根源是非理性,解決辦法則是,建立形式化、量化的模型,使用價值函數去評估各種選擇。

偏好系統

接下來讓我們放松一點。

我們有了一個決策模型(Model of Decision),里面有各種選擇,也有價值函數。我們知道價值函數的值當然越大越好,最大的那個對應的自然是最優解。也有反過來的情況,那函數就可以叫做Loss / Cost Function了。這種大與小、可比較,反映的是可行解之間的相對優劣關系,即偏好(Preference)。為什么我們需要價值函數?根本而言我們需要的其實是選擇之間的可比較

但可比較,其實是一個很有趣的坑。讓我們來看一個例子:

剪刀石頭布相信大家都玩過,剪刀>布,布>石頭,石頭>剪刀,簡單明確的偏好不是嗎?然并然。這個設定存在致命的缺陷。

假設這個偏好系統(System of Preferences / Preference Structure)具有可傳遞性(Transitivity),即:

(石頭>剪刀) AND (剪刀>布) -> 石頭>布

現在我們有了這樣兩條偏好:布>石頭 與 石頭>布。它們都成立使得一致性(Consistency)

布>石頭 -> NOT (石頭>布)

受到了破壞。

這意味著這個系統中可傳遞性與一致性不可共存,進一步可以推知在剪刀石頭布這個環狀結構(cycle)之中,永遠找不到最優解。事實上我們早就認識到了這一點,當三人以上玩這個游戲的時候,我們將會拋棄可傳遞性,如果同時出現剪刀、石頭和布,就會直接進入下一局,直至只出現兩種的某局,從而分出勝負(這好像又變成了一個二分類問題,interesting)。

這種類似的環狀偏好系統還有很多,比如五行相克;在游戲設計中其實也經常用到,比如火焰紋章的劍斧槍,或者夢幻西游里的門派相克,但之所以不會有問題,是因為這種設計目的就是為了消除最優解,從而平衡游戲中的選擇,而且大部分游戲里都不會出現三方混戰的情形(即使很多多人游戲看起來很即時),根本不用考慮可傳遞性。

火焰紋章中的屬性相克

所以說環,真是一個非常有趣的結構啊,突然又聯系起PageRank(還有我之前參與的英雄聯盟英雄強弱ranking...)之類的東西,走遠了趕緊剎住。

一致性和可傳遞性以外,偏好系統其實還需要一個完整性(Completeness)。也就是說系統內任何選擇之間都是可比的:

石頭,布 -> (石頭>= 布) OR (石頭<=布)

沒有滿足這個基本的完整性,意味著無法確定某些選擇間的相對次序關系,最優解根本無法存在。偏好系統其實還可具有更多的性質,比如連續性(Continuity)凸性(Convexity),從而支持各種更嚴格的決策模型。

以復雜對抗糾結

像是剪刀石頭布這樣的糾結是可怕的,可怕在于你以為自己已經很理性,對各種選擇有明確的偏好,但其實這些偏好無法同時具有可傳遞性和一致性,有限的理性,有時整體而言其實是不理性的。這種不理性在現實中的根源又在何處?

知乎上有一篇文章討論了單因素模型這種思維模式的危害。人們在面對人生中大大小小的問題時,常常在抓住一個因素的同時,錯誤地忽略了許多其他的重要因素,打敗了一種盲從的同時,又建立了一種新的盲從。看似簡單粗暴毫不費力,實際上事倍功半。

我們常常交替地用不同的“單因素模型”去套用當前面臨的問題,而一旦想綜合考慮多個因素,腦子就覺得不夠用了,補了東墻又拆了西墻。石頭大于剪刀是因為石頭可以把剪刀破壞,剪刀大于布也是因為剪刀可以破壞布,然而布可以破壞石頭嗎?不能,布戰勝石頭靠的是它能把石頭包。。起。。來。。明顯的兩個單因素交替,雙重標準。

沒有通過形式化、通過足夠復雜的模型對整個思考過程、對多個因素進行記錄與審視。因而對于重要的問題,特別是將影響人生大方向的問題,我們隔三差五都在不自覺地重復同樣的怪圈,甚至在一圈內死循環、不斷隨機goto到某一步。我們永遠在建立新的偏好系統,但永遠沒有建立起一個同時具有完整性、可傳遞性和一致性的系統,從而,永遠找不到最優解

我們的大腦是喜好簡單的,假如有一個方法、一種因素可以解釋萬事萬物,解決所有疑問(42?),為何要細致入微地、艱苦卓絕地考慮所有細枝末節呢?簡化并不是一件壞事,比如上一篇里提到的抓大放小,是非常有用的策略(特別是對于開放問題)。但是正如本篇想要嘗試表達的,過于簡化是錯誤的,是對理性的逃避,只會使糾結更糾結。

當然,每個問題都有其比較適合的模型復雜度,太大太小均非好事,最佳莫過于剛剛好,這一點我將在接下來的文章里繼續進一步的思考。


到此,這個系列已經從心理學教材硬生生扯到了決策/學習的基本概念,所以扯到游戲設計也算設計吧,我這樣安慰自己:)


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 機器學習是做NLP和計算機視覺這類應用算法的基礎,雖然現在深度學習模型大行其道,但是懂一些傳統算法的原理和它們之間...
    在河之簡閱讀 20,549評論 4 65
  • 關鍵詞:可行解 | 可能性空間 | 偏見 | 定勢 | 功能固著 | 可供性 第一篇中討論的問題情境,在我的理解中...
    simoncos閱讀 1,108評論 2 3
  • 感恩今天老師分享關于買保險的文章,感受老師用心良苦和苦口婆心,感恩唐小玲十七年前把保險介紹給我,也感恩當時的自己愿...
    幸福的小兔豬閱讀 172評論 0 0
  • “媽媽… 媽媽… 媽媽…” 高頻的呼喚, 夾雜許多絮絮叨叨 可有可無的對話。 “巨人”坐在他的電腦旁 人機對著話,...
    晨光微曉閱讀 472評論 7 6
  • 兩會開完,北京又陷入了優轉良,輕度轉中度乃至重度的空氣質量循環,也許再過幾天又將陷入嚴重污染的空氣質量預警,空氣質...
    拾捌學仕閱讀 476評論 0 0