はじめに
意見は対立していても相手を理解する事は可能なのか:理解と意見を分離した簡単なシミュレーション、議論で意固地な人がいても理解が進むのか:議論モデルの続編、と議論に関してモデルを立てて考察してきましたが、この二つの記事には、真剣に議論するという前提があります。
しかし、人は常に真剣に議論している訳ではなく、あまりに意見が違うと人の意見は聞かなくなります。この状況は、SNSのフィルタバブルと呼ばれるものと同じ状態になります。
今回は、聞いた意見を参考にして意見が近づくという事を前提として、遠い意見は遮るとどのような事が起きるのかシミュレーションしたいと思います。
結果としては、
- ごく近い意見しか聞かないと意見は分散する
- ある範囲のパラメータでは意見が分断する
- 遠い意見の人も聞くと意見が一つになる
という結論になりました。
意見が必ず近づく前提なので、遠い意見の人も聞くと意見が一つになる、と言うのは非現実的ですが、このシミュレーションの前提の元だとそうなります。
モデル
下記のシンプルなアルゴリズムです。
- ある事象に対する意見を$opinions \in [-1,1]$とする
- ランダムに会話を行い、意見が閾値$\epsilon$より近いと、意見が近くなる
- 意見は、意見の差$d$に、係数$\mu$をかけた量だけ近くなる
- $o_i \leftarrow o_i + \mu (o_j - o_i)$
- $\epsilon$が小さいほど、似た意見の人としか会話しない状況を表しています
結果
$\epsilon$毎の意見の数値をプロットしてみました。
x軸が、$\epsilon$の値で、y軸が、意見の図となっています。
考察
- ごく近い意見しか聞かないと意見は分散する
- ある範囲のパラメータでは意見が分断する
- 遠い意見の人も聞くと意見が一つになる
まとめ
簡単なシミュレーションですが、フィルタバブルで遠い意見を聞かない事により、意見が分断される様子のシミュレーションを行いました。
ある範囲の閾値の時に意見の分断が、出る事が確認されました。
自分の精神を守るために、自分と全く違う意見は聞かないと言うことは、精神衛生上悪い事ではありませんが、強く意見の分断を招くことがあります。
意見の分断を招くのは過激な言動があるからだけではなく、
単に「自分と近い意見しか聞かない」という条件だけで
社会は自然に分断されることが分かります。
終わりに
本当は、収益モデルも作って、分断とSNSの収益の関係を考察したかったのですが、シンプルなモデルを保つことを優先して今回は扱いませんでした。
収益モデルを含めたシミュレーションは、今後の課題としたいと思います。
Github
import numpy as np
import matplotlib.pyplot as plt
# --- パラメータ ---
N = 200
steps = 5000
mu = 0.2
eps_values = np.linspace(0.05,1.0,20)
opinions_list = []
for eps in eps_values:
opinions = np.random.uniform(-1,1,N)
for _ in range(steps):
i,j = np.random.randint(0,N,2)
d = abs(opinions[i] - opinions[j])
# interaction
if d < eps:
oi = opinions[i]
oj = opinions[j]
opinions[i] += mu*(oj-oi)
opinions[j] += mu*(oi-oj)
opinions_list.append(opinions)
# --- グラフ ---
eps_values4plot = np.tile(eps_values,len(opinions_list[0]))
eps_values4plot = eps_values4plot.flatten()
opinions4plot = np.array(opinions_list).T.flatten()
plt.figure()
plt.plot(eps_values4plot,opinions4plot,'.')
plt.xlabel("filter threshold ε")
plt.ylabel("opinion")
plt.title('SNS opinions')
plt.show()
