2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

フィルタバブルは本当に分断を生むのか?簡単なシミュレーションで確かめてみた

2
Posted at

はじめに

意見は対立していても相手を理解する事は可能なのか:理解と意見を分離した簡単なシミュレーション議論で意固地な人がいても理解が進むのか:議論モデルの続編、と議論に関してモデルを立てて考察してきましたが、この二つの記事には、真剣に議論するという前提があります。

しかし、人は常に真剣に議論している訳ではなく、あまりに意見が違うと人の意見は聞かなくなります。この状況は、SNSのフィルタバブルと呼ばれるものと同じ状態になります。

今回は、聞いた意見を参考にして意見が近づくという事を前提として、遠い意見は遮るとどのような事が起きるのかシミュレーションしたいと思います。

結果としては、

  • ごく近い意見しか聞かないと意見は分散する
  • ある範囲のパラメータでは意見が分断する
  • 遠い意見の人も聞くと意見が一つになる

という結論になりました。

意見が必ず近づく前提なので、遠い意見の人も聞くと意見が一つになる、と言うのは非現実的ですが、このシミュレーションの前提の元だとそうなります。

モデル

下記のシンプルなアルゴリズムです。

  • ある事象に対する意見を$opinions \in [-1,1]$とする
  • ランダムに会話を行い、意見が閾値$\epsilon$より近いと、意見が近くなる
    • 意見は、意見の差$d$に、係数$\mu$をかけた量だけ近くなる
    • $o_i \leftarrow o_i + \mu (o_j - o_i)$
    • $\epsilon$が小さいほど、似た意見の人としか会話しない状況を表しています

結果

$\epsilon$毎の意見の数値をプロットしてみました。
x軸が、$\epsilon$の値で、y軸が、意見の図となっています。

simple_divide_sim.png

考察

  • ごく近い意見しか聞かないと意見は分散する
  • ある範囲のパラメータでは意見が分断する
  • 遠い意見の人も聞くと意見が一つになる

まとめ

簡単なシミュレーションですが、フィルタバブルで遠い意見を聞かない事により、意見が分断される様子のシミュレーションを行いました。
ある範囲の閾値の時に意見の分断が、出る事が確認されました。
自分の精神を守るために、自分と全く違う意見は聞かないと言うことは、精神衛生上悪い事ではありませんが、強く意見の分断を招くことがあります。
意見の分断を招くのは過激な言動があるからだけではなく、
単に「自分と近い意見しか聞かない」という条件だけで
社会は自然に分断されることが分かります。

終わりに

本当は、収益モデルも作って、分断と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()

2
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?