소셜 그래프 게임의 분석

소셜 그래프 게임은 최근에 새로 생긴 도박의 한 형태이다. 게임 방식은 아주 간단한데, 판돈을 걸면 게임이 시작된다. 그래프에 숫자가 시간이 지남에 따라 올라가는데, 그 숫자만큼의 배율에 판돈을 곱해서 보상을 받는다. 단, 플레이어가 게임을 먼저 “종료”해서 적당한 배율을 얻어내야 한다. 만약 숫자를 올리고 있는 딜러가 먼저 “종료”한다면 판돈은 딜러가 가져가고 플레이어는 보상을 받지 못한다. 게임을 언제 종료할 것인가는 전적으로 플레이어와 딜러의 선택이다. 또한, 딜러와 플레이어는 서로 상대방이 언제 종료할 것인지 알지 못하는 상태에서 게임을 하게 된다.

이 게임은 위와 같은 인터페이스를 갖고 있는데 저기 숫자로 표시된 것이 배율이다. 자, 그럼 이제 이게 뭐가 문제인지 본격적으로 분석해 보자.

x_d를 딜러가 종료할 때의 배율이라 하고, x_p를 플레이어가 종료할 때의 배율이라고 하자. x_p < x_d인 경우 플레이어는 x_p의 이익을 보고, x_p \geq x_d인 경우 플레이어는 -1의 손해를 본다. 여기서 -1로 정할 수 있는 이유는 어차피 판돈에 비례한 배율이기 때문에 손해를 보는 경우 판돈만큼 잃기 때문이다. 이것을 수익 함수 f(x_p, x_d)로 쓸 수 있다.

그 다음, 서로 언제 종료할지에 대해서는 아무런 정보가 없으므로 일단 균등분포를 가정하자. 균등분포를 가정할 경우, 최대 배율 x_{max}가 있다고 해야 하는데, 그렇게 하면 확률밀도함수를 다음과 같이 규격화 할 수 있다.

P(x_p, x_d)=\frac{1}{x_{max}^2}

그럼 이제 평균적인 수익을 계산해 볼 수 있다. A영역에 있는 경우는 수익이 -1이다. B영역에 있는 경우는 수익이 x_p이다. 구간에 따라 적분을 계산하면 다음과 같은 결과를 얻을 수 있다.

\int_A dx_d dx_p f(x_p, x_d)P(x_p, x_d) = -\frac{1}{2}

 

\int_B dx_d dx_p f(x_p, x_d)P(x_p, x_d) = \frac{x_{max}}{6}

 

\int_{A+B} dx_d dx_p f(x_p, x_d)P(x_p, x_d) = \frac{1}{2}\left(\frac{1}{3}x_{max}-1\right)

마지막 식의 의미는 무엇일까? x_{max}<3이면 평균 수익이 음수가 된다. 즉, 플레이어가 손해를 본다. 배율을 3배 이하로 유지하는 경우에는 플레이어가 무슨 전략을 써도 평균적으로 반드시 손해를 본다는 뜻이다.

하지만 동영상을 보면 배율이 3배를 넘어서 수십배, 수백배, 수천배까지 가는데요? 이런 질문이 나올 수 있다. 물론 그 경우에도 위와 같은 계산을 해서 플레이어가 평균적으로 손해를 보도록 만들 수 있다. 위의 적분 영역에서 A부분은 x_{max}의 제곱에 비례해서 늘어나는데, B부분은 확률밀도함수 P(x_p, x_d)의 구조에 따라 달라진다. 즉, 원하는 최대 배율을 설계하고서 확률밀도함수를 포함한 B영역의 전체 부피를 A영역의 부피보다 작게 유지한다면, 가끔 대박이 터지는 일은 있겠지만 전체적으로는 플레이어가 손해를 본다. 그것은 곧 딜러의 수익으로 이어진다. 심지어 이 분석은 딜러가 사기를 치지도 않고, 먹튀를 하지도 않고, 주어진 확률분포를 조작하지도 않는 나름 공정한 게임인 경우에도 성립하는 결론이다. 가령, 확률밀도함수의 중간 부분을 얇게 설계하고 최대 배율 근처와 작은 배율 근처만 두껍게 해서 대박이 좀 더 자주 터지는 것 처럼 설계할 수도 있다는 뜻이다. 또, B영역의 전체 부피가 A영역의 부피보다 작기만 하면 되므로, 아주 조금만 더 작게 설계해서 플레이어가 실제로 누군가는 이득을 보는 것 처럼 보이게 할 수도 있다.

결론 – 하지 마라.

함수를 함수로 미분하기: 변분

물리학 문제를 풀다보면 흔히 변분 문제를 풀어야 하고, 변분 문제를 풀기 위해서는 라그랑지안이라는 함수에 관한 함수를 함수로 미분해야 하는 문제가 발생한다. 이것을 어떻게 해석해야 할까? 일단은 흔한 미분법에서부터 시작을 해야 한다.

 \frac{d}{dx} f(x) = \lim_{\Delta\rightarrow 0} \frac{f(x+\Delta)-f(x)}{\Delta}

이 경우 f(x)는 변수가 1개인 함수이고, 그 값도 스칼라로 주어져 있게 된다. 여기서 x을 x=\vec{a}\cdot\vec{v}로 정의해 보자. 그리고 \vec{v}=(v_1,v_2,...v_n)이라고 해 보자. 그럼 이제 다음과 같은 미분이 가능해 진다.

\frac{\partial f}{\partial v_i}=\frac{df}{dx}\frac{\partial x}{\partial v_i}

여기서 x=\vec{a}\cdot\vec{v} 라고 했으므로 \frac{\partial x}{\partial v_i}=a_i가 성립한다. 즉, 다시 쓰면 다음과 같은 식이 성립한다.

\frac{\partial f}{\partial v_i}=\frac{df}{dx} a_i

그럼 i는 인덱스인데, 이 인덱스를 연속화 한다면 어떻게 될까? 벡터 \vec{a}\vec{a}=(a_1,a_2,...,a_n) 으로 주어져 있고, 이 벡터는 일종의 유한수열이다. 또, 수열은 인덱스 i가 주어지면 그 인덱스에 해당하는 값인 a_i을 주기 때문에 일종의 함수로 볼 수도 있다. 그럼 일반화시켜서 \vec{a}=a(t)라고 해 보자. 과감하지만 그렇게 봐 보자. 이 경우에도 \vec{a}는 벡터이며, 거기에 해당하는 함수 \vec{v}=v(t)와 내적도 잘 정의된다.

\vec{a}\cdot\vec{v}=\int a(t)v(t)dt

이걸 다시 앞에서 썼던 f(x)에 넣고 위와 비슷한 방식의 편미분을 취해 보자.

\frac{df}{d(v(t))}=\frac{df}{dx}\frac{\partial x}{\partial v(t)}

자, 뭔가 이상하다는 느낌이 들지 않는가? 안 이상하다면 이상한 것이므로 여기서 당신은 이상하게 여겨야 한다. 앞에서 인덱스 i를 이야기 했을 때에는 자연스러웠는데, 그걸 연속화해서 변수 t를 쓰니까 뭔가 이상하다. 그렇다. 이상하다. 따라서 여기서는 “미분”이라는 것의 정의를 따라가야 한다. 편미분에서 시작했으니 편미분의 정의를 다시 살펴보자.

 \frac{\partial}{\partial v_i} f(x) = \lim_{\delta v_i\rightarrow 0} \frac{f(\vec{a}\cdot(\vec v+\delta \vec{v}))-f(\vec{a}\cdot\vec v)}{\vec{a}\cdot\delta \vec{v}}\frac{\vec{a}\cdot\delta \vec{v}}{\delta v_i}

위의 극한을 이용한 정의는 앞부분과 뒷부분으로 나눠지게 되는데, 그중 앞부분은 df/dx와 같으므로 뒷부분을 연속화 하는데만 신경쓰면 된다.

뒷부분은 인덱스 i가 주어져 있을 때 그 벡터의 변화량이다. 마찬가지로 매개변수 t가 주어져 있을 때 그 벡터의 변화량은 함수 자체의 변화량으로 주어진다. 따라서, 어떤 함수 v=v(t)가 주어져 있을 때, 그 함수의 변화량은 역시 어떤 함수로 주어지며 v+\delta v = v(t)+\delta v(t)이 된다. 이 때, 불연속적인 인덱스를 쓰는 경우에서 i이 바뀔 때마다 \Delta v_i이 바뀌어 가며 주어지므로 (즉, 극한으로 달려가는 속도가 각각 독립이므로), 연속적인 인덱스를 쓰는 경우에도 \delta v(t)는 매개변수 t에 관한 함수가 된다. 이제 다음과 같은 해석이 가능하다.

\frac{\partial x}{\partial v(t)}=\lim_{\delta v(t)\rightarrow 0}\frac{\vec{a}\cdot\delta \vec{v}}{\delta v(t)}=a(t)

이렇게 생각하는 것은 수학자들이 들으면 천인공노할 만행이기 때문에 이런식으로 정의하는 것이 변분의 엄밀한 정의는 아니다. 하지만 수열을 일반화한 것이 함수이고, 벡터의 내적을 함수에 대해 일반화한 것이 적분이라는 관점에서 편미분을 연속화해서 일반화한 것이 변분이라고 생각하면 변분법에 대해 조금 더 쉽게 이해할 수 있을 것이다.

매일매일, 푸! 리! 에!

아침에 수업을 들으러 학교에 가다가 웃긴 생각이 들었다. 푸리에 변환을 일상 생활에 적용할 수는 없을까

푸리에 변환이란 어떤 함수를 다른 기본 함수들의 합으로 나타내는 변환 중에서, 기본 함수를 삼각함수들로 표현하는 것을 말한다. 다시말해서, 푸리에 변환을 하면 각각의 삼각함수의 성분이 얼마나 포함되어 있는지 알 수 있다.

자. 일단, 일상생활을 시간에 대한 함수로 표현할 수 있을까? 함수를 숫자에서 숫자로 가는 것 뿐만 아니라, 숫자에서 다른 추상적인 대상으로 가는 것으로 확장한다면 일상생활을 시간에 대한 함수로 표현하는 것은 명백히 가능하다.

이제, 푸리에 변환(?)을 한번 생각해 보자.

f : 시간 -> 작업

여기서, f는 시간에서 그 순간에 하는 일로 가는 함수이다.

그럼 푸리에 변환 g(진동수)=F(f(시간))을 정의할 수 있는데, 이렇게 정한다

g(진동수) = “특정 주기로 해야 하는 모든 작업” 이다.

물론 진동수는 주기와 반비례 관계를 갖는다.

이 계산을 하면? 적당한 함수 g(진동수)가 나오게 되는데, f라는 함수에 어떤 진동수가 얼마나 많이 들어가 있는지 알려주게 된다. 정확히는 g(진동수)는 f(시간)가 살던 작업과 같은 동네에 산다. 이것을 스펙트럼이라고 한다. 이 스펙트럼을 분석해 보자. 진동수가 0인건 뭘까? 진동수가 0인 것은 주기가 무한대임을 뜻한다. 이것은 평생 한두번 있을까말까 한 작업을 뜻한다. 그럼 진동수가 무한대로 가는 극한은? 이건 아주 쉴새없이 일어나는 일을 뜻한다. 주기가 0이 된다는 거니까. 아무때나 무작위로 해야 하는 일은? g에 아무 진동수를 넣어도 다 나올 것이다.

푸리에 변환을 간단히 해석해 보았다.

 

Proudly powered by WordPress | Theme: Baskerville 2 by Anders Noren.

Up ↑