社會網絡分析(2) — OPINION DYNAMICS AND BOUNDED CONFIDENCE MODELS

Edward Tung
數學、人工智慧與蟒蛇
11 min readSep 2, 2020

[讀論文] OPINION DYNAMICS AND BOUNDED CONFIDENCE MODELS, ANALYSIS, AND SIMULATION — Rainer Hegselmann & Ulrich Krause (2002)

前言

從上次的文章裡我們介紹了意見形成模型的經典表達形式,透過很簡單的線性數學表達描繪了意見形成的方式,以及各種周圍效應如同儕、社會共識等如何影響個人的意見形成,從而在長期達到整體社會的穩定意見表達,這也是 F-J 模型的核心思想。

回顧一下,一組意見的生成可以透過以下矩陣表達式來改寫 (注意我這邊的符號與上一篇不同,為了配合論文中的原始符號而做修正) :

F-J 模型矩陣表達式 (為簡單表達式,不包含其他效應擴充)
x(t) = {x_1(t), x_2(t), ... , x_n(t)} 代表 N 人的群體在 T 期的意見表達
A 是一個固定的隨機矩陣,表達受到上期意見的影響程度
G 是一個對角矩陣,代表其有多少程度受到個人本來的觀點影響,有 I-G 程度受社會影響

當然,社會學家與數學家們也不僅嚐試了僅此一種假說,還有許多的表達方式也在50年代至90年代這半世紀間大放異彩,但有一個最大的問題是,大多數的數學表達方式都是線性的,這就造成了一些限制,包括我們很難去考量隨時間改變的不同權重、各個時間段個人也並非都參照同一組社會同儕等問題,最重要的是,由現代的觀點往回看就很好理解,當我們透過線性模型去追蹤真實數據時,效果往往不盡人意。

因此,這篇論文裡面透過以下邏輯去架構了一個非線性的模型,稱作 Bounded Confidence,開始前先附上參考連結 :

Opinion Dynamics and Bounded Confidence Models, Analysis and Simulation (2002)
https://www.math.fsu.edu/~dgalvis/journalclub/papers/02_05_2017.pdf

首先,每個人 i 只會考慮社會中那些意見與其相左的其他人 j ,但這個意見相左是有一個程度的,我們稱這個程度為 ε,此時就可以寫成 :

上面的 I(.) 為指示函數。此外,現在為了簡單起見,我們都先假設個人 i 對其所參考的所有人 j 都給予一樣的考慮權重,也就是說等於上面 F-J 模型加入以下條件 :

此時,我們可以寫成:

以上的表達式就是完整的 Bounded Confidence 模型,當然,這個假設似乎有點突如其來,因此我們接下來要完整介紹整個核心思想、分析結論以及後續可行的應用方向。

模型的分析結論與性質

【一、意見獨立(Opinion Independent)的情況】

首先,我們先來仔細研究一下這個表達式代表甚麼意思。從上面的例子不難看出,整個意見表達的結果受到的就是個人 i 選擇參考那些與自己意見相左的程度在置信度 ε 的人群 j ,而要展現其表達式威力的關鍵實際上就在於這個 ε 的靈活程度,也是後續整個模型需要輸入的參數,當然可能會有人好奇說為甚麼把 F-J 模型裡面的一個假設,即個人意見表達也受到原始個人因素影響給排除掉,實際上是因為在這個寫法裡頭,個人因素影響已經等同於常數,因此我們只需關注在社會影響的部分即可。

最簡單的 ε 當然就假定每個人都不變,也就是 ε_i = ε,此時我們僅需要考慮symmetric 的情況,即一個給定的區間 [-ε, +ε] 即可。如果複雜一些,也就是 asymmetric 的情況下 ε_left != ε_right,此時根據 i, j 的不同,區間 [ε_left, ε_right] 也就不一樣,且我們稱作這兩個個人之間發生了單邊分裂 (one-sided split),如果 ε_left < ε_right,那麼 ε_left < x_j — x_i <= ε_right 表示個體 i 會考量個體 j 的意見,但反之個體 j 並不會考慮個體 i 的意見。此外,在該假設底下,最終的一組意見 x(t) = {x_1(t), x_2(t), …, x_n(t)} 往往就形成兩個相鄰的意見差異會小於等於置信區間 ε ,我們就稱其為 ε-profile。

如果我們研究置信區間一致的情況,也就是 ε_left = ε_right 的時候,該模型會有以下幾個性質 :

1. 這些動態變化不會造成意見的順序改變,也就是說如果對於所有 i <= j 都有 x_i(t) <= x_j(t),那麼 x_i(t+1) <= x_j(t+1) 2. 如果兩個個體之間發生了 Split,那麼這個 Split 會一直持續下去3. 如果一開始群體意見就已經出現共識(Consensus),那麼不論任何時點群體意見都會是ε-profile4. 如果群體人數只有 2~4 人 (5人以上該性質失效),只要起始群體意見是 ε-profile,那麼最終會達成共識

上面的性質大家可以自己動手迭代一下,有趣的是第四個性質,這就說明了只要一個群體有五個人以上,不管開始時大家的意見再怎麼相似,最終都很難達成共識。

接下來,就是動手時間啦!有這些性質與參數後,我們可以透過程式碼視覺化來看看在不同情況下,集體的最終意見會是個甚麼樣子。首先我們先進行一些定義 :

1. 意見表達的值域介於[0, 1], 0 與 1 分別代表兩個極端(比如完全支持或完全不支持某項議題),初始化我們將其設定為正態分布,可以比較良好地反映社會上大多數人的初始情形2. 置信度 ε 可以靈活設置,可以是一個常數也可以是矩陣,前者是簡單的情形而後者代表每個人各自的置信度不同3. 迭代輸入參數為 一、意見形成期間;二、初始意見分布;三、群體人數

以下來看實現代碼,不難 :

Epli 可以為固定值或矩陣... 我懶得優化接口了,有興趣的自己補XD

我們可以來比較一下不同參數下的表現是如何,在這裡我統一設定有500個人,且迭代50次,比較不同的置信區間下的情況。

由前三張圖我們可以看出,基本上越高的置信度代表社會會越快達到共識,因為每個人都很輕易被他人影響意見,在 ε = 0.01 的情況下,社會基本上還是有多元聲音,但到 0.3 的時候,社會上基本上就趨近於中立共識了(作者在論文提到當這個值超過0.4的時候不管做甚麼模擬最後大多都達到 Conformity)。另外,第四張圖我們也可以看見當置信度每個人不同時候的變化,以指數分布 Rescale 在區間 [0, 1] 時,我們會發現社會上還是會有不同聲音的存在,多數為中立偏左或偏右,極少數極端。(備註,這邊的偏左或偏右只是一個方便用詞,並不代表廣泛認知的左派或右派)

另外,我們剛才的模擬都是基於起始狀態為常態分佈的情況下,也就是大多數人一開始的意見表達,這比較符合我們的直覺,但我們也好奇如果一開始社會上真的這麼多元,也就是不同的意見表達區段都有一樣多的人數,經過模擬之後會得到甚麼樣的結果 ? 作者給出了模擬結果 :

Source : Paper (See link at the beginning of this article)

簡單來說,最後社會上會趨近於兩種聲音,兩種聲音都並非完全極端的偏向某一方,但的確有偏向某一方的趨勢在(Polarity)。如果我們將這些過程仔細觀察,就會得到以下的圖表 :

Source : Paper (See link at the beginning of this article)

其中,線段的顏色代表起始的意見,比如紫色代表起始意見為 1.0;橫軸是時間變化,縱軸則是該時間下意見受影響的幅度,因此我們如果觀察紫色線或紅色線等起始的極端意見,會發現隨時間影響會慢慢往反方向收斂,直到中立偏左或偏右,而一開始中立的民眾則會在時間推移下,不時受到某方意見的大量影響,最終也趨近於中立偏左或偏右。這樣的現象我們可以用上述提到的 Split 來解釋,當設定置信度 ε 的時候,其實就代表了某個人 i 會受到 j 的影響而反之不一定,最終造成社會的意見被特定幾種聲音給淹沒,失去了完全的多元性。

當然,文中作者還給出了其他幾種置信度的情況,比如 ε_left != ε_right 的狀況,如下圖 :

Source : Paper (See link at the beginning of this article)

在這種情況下,最終趨近的意見並不會完全的中立,而是會更加像某個極端靠攏,有興趣的讀者可以自己往論文裡頭研究。

【二、意見依賴(Opinion Dependent)的情況】

剛才的各種模擬都是基於一個前提,那就是置信度與意見是相互獨立的情況。甚麼意思呢 ? 意思是你選擇要不要聽從他人意見的時候並不考慮對方的意見表達,對於其意見的相左程度都給予一樣的權重,只要別差太多你就把他人的意見聽進去。然而現實中,多半你選擇要不要相信對方的程度,會受到對方表達出來意見的影響,那些持有意見偏左(右)的人多半選擇聽從那些意見偏左(右)的人的想法 (同樣,這裡的左右並不指左右派,而是數學上兩極點之間的相對位置),也就是真實的置信度多半會長這樣 :

現在的問題是,要如何對這樣的情況建立模型? 由於每次都需要參考他人的意見生成一組不對等的置信區間,計算量頗大;此外,具體該不對等的程度應該是多少也是另一個問題,因此一個可行的做法是額外引入偏誤變量 Beta_left 與 Beta_right,兩者相加為 1,這樣就可以在給定一個固定的置信水平底下透過該變量將區間拆解成兩半了。而我們可以透過給定一個嚴格單調遞增的函數產生 Beta_right,就同時可以透過 1-Beta_right 的函數生成對應的 1-Beta_left。作者在論文中給出的生成函數是透過以下兩個公式完成 :

其中,m 與 ε 一樣是我們需要輸入的參數,取值為 0.1,當 m = 0 的時候我們沒有任何 Bias,此時 Beta_left = Beta_right = 0.5,假如給定置信水準 ε,則 ε_left = ε_right = 0.5*ε ,這邊也展示一下在同樣給定 ε = 0.6 的情況下,不同 m 對社會意見表達造成的影響。

m 越大代表甚麼呢 ? 也就是持有同樣意見的人彼此聽從的情況越嚴重,由上圖可以看到 m = 0.25 與 m = 0.75 時的差異,前者會讓社會達成中立共識,後者則會造成兩種意見的極端。當然,這也很符合我們在社會上的一般嘗試,如果每個人只聽從與自己意見類似的想法,即使一開始社會是多元的,也將偏向兩極化。

結語

其實本篇的真實應用除了廣泛層面的輿情分析、社會意見分析,最重要的是給予我們對於長期之間,不同個人的意見交互給出一些估計的方法,當前的機器學習,即使是在社會網絡分析的分支中,大多數也是以優化為主,不論將社會交互的情況用圖論的方式下去分析,或是透過其他的方式,本質上都還是對於現有情況下進行梳理並最佳化。

然而,真實社會中的交互情況是交雜而混亂的,能夠通過給出更多參數的方式,回頭讓機器學習通過現有情況去學習這些參數的最佳估計值,也能夠給到我們一些新的思路。舉例而言,觀察一陣子消費者對於該產品的兩極評價以後,我們可以通過機器學習的方式反向預估消費者之間彼此參照口碑的影響程度有多大,進而影響商業決策。當然,這些東西都是假想,隨著學習越來越多領域的知識,我們也不斷認識到現有模型或方法在不同應用情境下所需做出的調整,希望未來不論自己或是學術界、業界,都能不斷通過這些新方法的組合去解決現存的社會問題。

--

--

Edward Tung
數學、人工智慧與蟒蛇

Columbia Student || 2 yrs of data scientist and 1 yr of business consultant experience