알고리즘이 취향만 보여 주면 생각은 왜 갈라질까?
추천 알고리즘이 내 취향에 맞는 글을 골라 주는 건 편리할 뿐, 사람들의 생각까지 바꾸진 않을 것 같지요. 그런데 가상의 마을 사람 400명에게 글을 보여 주는 방식만 바꿔 보면, 가운데에 모여 있던 하나의 언덕이 양 끝의 봉우리들로 갈라지는 순간이 옵니다. 추천을 얼마나 취향에 맞춰야 갈라질까요? 반대 글을 섞으면 다시 모일까요? 그리고 정말 추천만으로 그렇게 될까요? 직접 바꿔 보세요.
모델은 이렇게 움직입니다
- 소문·투표·끼리끼리·약한 유대·친구 실험과 다른 점: 이 실험은 사람들의 성격이나 동네는 그대로 두고, 추천 알고리즘이 누구의 글을 보이게 하는지만 바꿉니다.
- 가상의 마을 사람 400명이 한 가지 쟁점에 대해 의견을 하나씩 가집니다. 의견은 −100(A쪽 끝)부터 0(가운데), +100(B쪽 끝)까지이고, 어느 쪽이 옳다는 뜻은 없는 축입니다. 처음에는 대부분 가운데 근처의 약한 의견입니다(표준편차 25).
- 사람마다 하루에 글 4개를 봅니다. 후보는 무작위로 뽑힌 다른 사람 30명의 글입니다(사람 사이에 따로 정해진 친구 관계는 없이 무작위). 글 한 칸마다 추천이 취향을 따르는 정도만큼의 확률로 후보 중 내 의견과 가장 가까운 글이, 나머지 확률로 후보 중 아무 글이나 보입니다. 가끔 반대 글 섞기를 올리면 그 확률로 가운데(0)를 사이에 둔 맞은편 사람의 글을 일부러 보여 줍니다.
- 본 글이 내 의견과 쉽게 끌리는 폭 안이면 ① 그 글 쪽으로 조금 끌리고, ② 그 글이 한쪽 편을 분명히 들면(가운데에서 11 넘게 떨어진 글) 그 편 쪽으로 조금 더 굳어집니다(같은 편 이야기에 굳어지는 정도). 폭보다 먼 글은 무시합니다. 반대 의견에 거슬리는 정도를 올리면 먼 글을 볼 때 오히려 반대쪽으로 조금 밀려납니다.
- 사람마다 처음 생각으로 조금씩 돌아가려는 성질이 있고, 끝(±100)에 가까울수록 덜 움직입니다. 하루하루 아주 작은 흔들림도 있습니다.
- 지표: 갈라진 정도(0~100)는 의견들의 표준편차입니다(0 = 모두 같은 생각, 100 = 절반씩 양 끝). 의견 덩어리는 의견을 한 줄로 세웠을 때 10 넘게 벌어진 곳에서 끊어 생긴 무리 가운데 12명(전체의 3%, 최소 5명) 이상인 무리의 수입니다. 본 글 중 다른 편 글은 그날 본 글 가운데 0을 사이에 둔 맞은편 사람이 쓴 글의 비율, 처음 생각에서 움직인 정도는 처음 의견과 지금 의견의 차이를 모두 평균한 값입니다.
직접 돌려보기
① 의견 지형: 하나의 언덕이 봉우리 몇 개로 갈라질까 3D
구슬 하나가 사람 한 명입니다. 가로는 의견(왼쪽 A쪽, 가운데 0, 오른쪽 B쪽), 땅의 높이는 그 의견 근처에 있는 사람 수예요. 앞뒤 자리는 보기 좋게 흩어 놓은 것일 뿐 뜻이 없습니다. 처음에 가운데 솟은 언덕이 어떻게 변하는지, 봉우리 사이 골짜기가 깊어지는지 보세요.
드래그로 돌려 보기 · 휠이나 두 손가락으로 확대 · 가만히 두면 카메라가 천천히 돕니다 · 휴대폰에서 세로로 쓸면 페이지가 내려갑니다. 3D는 아래 그래프와 같은 결과를 입체로 본 것이고, 따로 계산하지 않습니다.
② 의견 띠: 시간이 지나며 의견이 어떻게 갈라졌나
재생이 지난 날까지만 그립니다. 가로는 날짜, 세로는 의견이고, 색이 진할수록 그 의견인 사람이 많습니다. 한 줄기가 두세 줄기로 갈라지는 때를 보세요.
③ 얼마나 갈라졌나, 다른 편 글을 얼마나 봤나
재생이 지난 날까지만 그립니다. 보라 선은 갈라진 정도, 청록 선은 그날 본 글 중 다른 편 글의 비율, 주황 점선은 처음 생각에서 움직인 정도입니다.
④ 의견 덩어리가 몇 개가 됐나
재생이 지난 날까지만 그립니다. 1이면 마을 의견이 한 덩어리, 2~3이면 서로 떨어진 무리로 나뉜 것입니다.
⑤ 추천을 얼마나 취향에 맞추면 갈라질까 (집계: 미리 돌린 28판)
다른 설정은 기본값으로 두고 추천이 취향을 따르는 정도만 0~100%로 바꿔 각각 4판씩 200일까지 돌린 뒤 마지막 20일을 평균했습니다. 재생과 상관없이 미리 계산한 집계입니다. 보라 막대는 갈라진 정도, 주황 막대는 처음 생각에서 움직인 정도, 막대 아래 숫자는 덩어리 수 평균입니다.
⑥ 반대 글을 섞으면 다시 모일까 (집계: 미리 돌린 24판, 추천 100%)
추천이 취향을 100% 따르는 마을에서 반대 글을 0·10·30% 섞어 본 집계입니다. 회색 막대는 쉽게 끌리는 폭이 40(기본)인 마을, 청록 막대는 80인 마을의 갈라진 정도예요. 막대 아래 작은 숫자는 두 마을의 덩어리 수입니다.
⑦ 쉽게 끌리는 폭이 좁으면, 넓으면 (집계: 미리 돌린 40판)
쉽게 끌리는 폭만 20~80으로 바꾼 집계입니다. 회색 막대는 추천 0%, 보라 막대는 추천 50%입니다. 막대 아래 주황 글씨는 갈라지지는 않았지만 마을 전체가 한쪽 끝으로 쏠린 판이 있었다는 뜻이고, 작은 숫자는 덩어리 수입니다.
이 결과가 말하는 것, 말하지 않는 것
말하는 것:
- 추천이 취향을 10%만 따를 땐 마을 의견이 가운데 한 덩어리로 남았지만, 30%를 넘기자 끝 쪽 무리들로 갈라졌어요. 서서히가 아니라 문턱을 넘으며 갑자기 갈렸어요.
- 비슷한 글만 보이면 같은 편 이야기만 쌓여 조금씩 끝으로 굳고, 멀어진 사람의 글은 '너무 멀어' 귀에 안 들어와요. 기본 설정 첫 판에선 12일 만에 갈라진 정도가 40을 넘었어요.
- 그렇다면 갈라짐은 어떻게 줄었을까? 이 모델에선 추천이 취향을 20% 이하로 따를 땐 크게 안 갈렸고(24 이하), 이미 강하면 반대 글 섞기가 폭 넓은 마을만 다시 모았어요(64→7, 좁으면 49).
상세 설명
말하는 것: 기본 설정(400명, 추천 50%, 끌리는 폭 40, 굳어지는 정도 100%)의 첫 판에서 처음 갈라진 정도는 26이었고, 12일째 40을 넘어 50일째 62가 됐습니다. 끝에는 A쪽 180명(평균 −75), 가운데 112명(평균 3), B쪽 108명(평균 75)의 세 무리로 나뉘었습니다. 추천 정도만 바꾼 4판 평균은 갈라진 정도가 0%일 때 9, 10%일 때 10, 20%일 때 24, 30%일 때 49, 50%일 때 57, 100%일 때 64로, 10%와 30% 사이에서 갑자기 커졌습니다(덩어리 수 1 → 2 → 3). 본 글 중 다른 편 글은 추천 0%에서 42%, 100%에서 0%였습니다. 추천 100%에서 반대 글을 30% 섞으면 끌리는 폭 40인 마을은 갈라진 정도가 64에서 49로 조금 줄었지만, 폭 80인 마을은 64에서 7로 다시 한 덩어리가 됐습니다. 폭이 좁으면(20~30) 추천이 0%여도 45로 갈라졌고, 폭이 넓으면(60~80) 추천 50%에서도 5로 갈라지지 않았지만 4판 중 2판은 마을 전체가 한쪽 끝으로 쏠렸습니다. 같은 편 이야기에 굳어지는 정도를 0으로 끄면 추천 100%에서도 갈라진 정도가 23에 그쳤고, 반대로 반대 의견에 거슬리는 정도를 100%로 올리면 추천이 0%여도 66으로 갈라졌습니다.
말하지 않는 것:
- 이 갈라짐은 추천 하나로 생긴 게 아니에요. '같은 편 이야기에 굳어지는 정도'를 0으로 끄면 추천 100%에서도 갈라진 정도가 23에 그쳤어요. 그래서 알고리즘이 원인이라는 증명이 아니에요.
- 한 쟁점·한 줄 의견만 있는 단순 모델이라 실제 알고리즘·언론·가짜뉴스·감정·집단 정체성·봇은 없어요. 숫자는 모두 이 모델의 예시이고, A쪽·B쪽은 어느 편이 옳다는 뜻이 아니에요.
- 현실에서 확인하려면 실제 사람들이 본 글과 생각의 변화를 오래 따라가 봐야 해요. 실제 연구는 추천이 갈라짐을 얼마나 키우는지 결론이 엇갈린다고 알려져 있어요.
상세 설명
말하지 않는 것: 이 모델은 한 가지 쟁점에 한 줄짜리 의견만 있는 단순한 모델이며, 실제 소셜미디어나 추천 알고리즘이 이렇게 움직인다고 주장하지 않습니다. 실제 알고리즘의 작동 방식, 언론, 가짜뉴스와 팩트체크, 감정, 집단 정체성, 봇, 친구 관계망, 사람마다 다른 관심과 접속 시간은 모두 빠져 있습니다. 이 모델의 갈라짐은 추천 하나로 생긴 것이 아니라 "같은 편 이야기를 들으면 조금 더 굳어진다"는 가정과 함께 생겼습니다(이것을 끄면 크게 줄었습니다). 그래서 "알고리즘이 갈라짐의 원인이다"라는 증명이 아니며, 실제 연구는 추천이 의견 갈라짐을 얼마나 키우는지에 대해 결론이 엇갈린다고 알려져 있습니다. A쪽과 B쪽은 어느 편이 옳거나 그르다는 뜻이 아닙니다. 숫자는 모두 이 프로젝트가 정한 무차원 설정에서 나온 예시입니다.
이론적 근거와 구현 메모
- 모델의 뿌리: 의견이 너무 다른 사람의 말은 듣지 않고 어느 정도 가까운 사람에게만 끌린다는 경계 신뢰(bounded confidence) 모델이 뿌리입니다(Deffuant 외 2000, Hegselmann·Krause 2002). 생각이 비슷한 사람끼리 이야기하면 처음보다 더 한쪽으로 기운다는 현상은 사회심리학에서 집단 극화라고 알려져 있고, 이 모델의 "굳어지기"는 그 생각을 아주 단순하게 넣은 것입니다. 추천이 비슷한 것만 보여 주어 거품 속에 갇힌다는 필터버블이라는 말은 Pariser(2011)가 널리 알렸습니다.
- 핵심 가정과 수식: 사람 i의 의견
x(−1~1, 화면에서는 ×100)는 하루에x ← x + (1/4)·Σ본 글[ 0.3·(x글 − x) + 0.08·w굳어짐·편(x글)·(1 − x²) ] + 0.05·(x처음 − x) + 흔들림으로 바뀝니다. 대괄호는|x글 − x| < 폭인 글에만 쓰고, 폭 밖의 글은−0.06·w거슬림·부호(x글 − x)·(1 − x²)를 더합니다(거슬림 0이면 무시).편(v)는 |v| ≤ 0.11이면 0, 그 뒤로 0.3에 걸쳐 ±1까지 오르는 값입니다. 글 4개는 후보 30명 중에서, 칸마다 확률섞기로 맞은편(부호가 다른) 후보 중 무작위, 아니면 확률추천으로 의견이 가장 가까운 후보, 나머지는 무작위 후보입니다. 처음 의견은 평균 0, 표준편차 0.25(±0.95에서 자름), 흔들림은 ±0.002 안의 고른 난수이고, 모든 사람이 전날 의견을 보고 동시에 바뀝니다. - 이 프로젝트의 단순화: 한 가지 쟁점, 한 줄의 의견만 있습니다. 사람 사이 관계망은 없고 날마다 무작위 후보 30명의 글 중에서 고릅니다. 추천은 "후보 중 가장 비슷한 글"이라는 가장 단순한 규칙이고, 실제 알고리즘(클릭·체류 시간·광고·인기 순위 등)은 넣지 않았습니다. 끌리는 세기·굳어지는 세기·처음 생각으로 돌아가는 세기는 이 프로젝트가 정한 무차원 값입니다. 처음 생각으로 돌아가는 성질은, 이것이 없으면 이 모델에서 마을 전체가 쉽게 한쪽 끝으로 쏠려 버려서 넣은 설정입니다. 감정, 집단 정체성, 언론, 가짜뉴스, 봇, 사람마다 다른 접속 시간은 없습니다.
- 이론값과 시뮬레이션: 이 모델에는 맞춰 볼 이론값이 없어 시뮬레이션 값만 적습니다(
node tools/validate-filterbubble.js, 시드 고정). 극단은 예상과 맞습니다. 추천 0%에서 본 글 중 다른 편 글은 42%로 절반에 가깝고 100%에서는 0%입니다. 경계 신뢰 모델에서 알려진 대로 끌리는 폭이 좁으면(20~30) 추천이 없어도 여러 무리로 나뉘었습니다. 예상과 달랐던 점: 굳어지기를 끄면 추천 100%에서도 갈라진 정도가 23에 그쳐, 이 모델의 갈라짐은 추천과 굳어지기가 함께 있어야 컸습니다. 추천이 강하면 두 편이 아니라 가운데 무리까지 셋으로 나뉘었고, 끌리는 폭이 넓을 때 추천 50%는 갈라짐 대신 마을 전체를 한쪽 끝으로 쏠리게 하기도 했습니다(4판 중 2판). - 더 읽을거리: Deffuant 외 (2000), 「Mixing beliefs among interacting agents」, Advances in Complex Systems 3. Hegselmann·Krause (2002), 「Opinion dynamics and bounded confidence: models, analysis and simulation」, Journal of Artificial Societies and Social Simulation 5(3). Pariser (2011), 『The Filter Bubble』.
- 이 프로젝트가 직접 설계한 단순화 구현이며 어떤 논문의 수치를 재현한 것도 아닙니다. 마을과 A쪽·B쪽은 모두 가상이며 실제 지역·정당·집단을 뜻하지 않습니다. ① 3D는 계산 결과를 그대로 그립니다. 땅 높이는 지금 의견들을 폭 5(의견 눈금)로 부드럽게 센 값이고, 앞뒤 자리는 사람마다 고정된 보기용 배치입니다. 하루 전과 지금 사이를 이어 그려 부드럽게 보일 뿐 결과에는 영향이 없습니다. ⑤~⑦은 기본 설정으로 미리 돌린 집계라 슬라이더를 바꿔도 달라지지 않습니다(지금 설정과 같은 막대는 옅게 칠해 표시).