<p>오랜만에 놀러왔다가 이런 게시판이 있었지 재밌어서 또 적는 글. 장문주의. 수학주의.</p> <p> </p> <p> </p> <p>시간에 대한 미분방정식 (ordinary differential equation, ODE)</p> <p style="text-align:left;"> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743065b049ab48a5b74423b0abc38a7bbbf935__mn260556__w154__h72__f2236__Ym202309.png" alt="스크린샷 2023-09-26 174310.png" style="width:154px;height:72px;"></p> <p>의 의미는 사실 <span style="color:#0000ff;">적분꼴</span>로만 정의됩니다. 일반적으로 t=0 에서 출발한다고 치면,</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743069337a1fef29994068a3e719f7943e22e3__mn260556__w249__h63__f3027__Ym202309.png" alt="스크린샷 2023-09-26 174316.png" style="text-align:center;width:249px;height:63px;"></p> <p></p> <p>이렇게 표현이 되지요. 그런데 이러한 정적분은 t가 0보다 작더라도 잘 정의되며, 또한 꼭 0에서 출발할 필요도 없습니다. 예를들어서</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743070146bf17dc4a64e31b74d618e0408a55b__mn260556__w449__h66__f4657__Ym202309.png" alt="스크린샷 2023-09-26 174324.png" style="text-align:center;width:449px;height:66px;"></p> <p>이렇게 쓸 수도 있지요. 우리는 이것을 <span style="color:#0000ff;">x(T) 에서 출발해서, 시간을 거꾸로 돌려서 t까지 돌아간 것</span>이라고 이해할 수 있습니다.</p> <p> </p> <p>그런데 여기에 약간의 <span style="color:#ff0000;">랜덤성</span>을 가미하면 어떻게 될까요? 주식차트처럼 말이죠. 랜덤 노이즈(Brownian motion) 항을 포함한 미분방정식을 확률미분방정식, 영어로 stochastic differential equation (SDE) 라고 합니다.</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743071a184192095a44aa7a895d76a6e25d65b__mn260556__w317__h50__f3312__Ym202309.png" alt="스크린샷 2023-09-26 174329.png" style="text-align:center;width:317px;height:50px;"></p> <p>이렇게 표현합니다. 잘 보면 왠지 양변을 dt로 나눠주고 싶어지는데, 그러면 처음 ODE에 dW 라는 항이 추가된 꼴입니다.</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743072023e7d9a7b0044dbbfbcd173adb512de__mn260556__w338__h76__f3997__Ym202309.png" alt="스크린샷 2023-09-26 174334.png" style="text-align:center;width:338px;height:76px;"></p> <p>물론 이렇게 표현할 수도 있긴 합니다만, W(t) 가 Brownian motion 일 경우 미분불가능하죠 그래서 SDE 역시 적분꼴로 이해해야 합니다.</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743074e5066990da1c4f8cbc5624a92c48275f__mn260556__w407__h70__f4579__Ym202309.png" alt="스크린샷 2023-09-26 174340.png" style="text-align:center;width:407px;height:70px;"></p> <p>새로 추가된 항은 Ito stochastic integral 인데 자세한 이해는 넘어가기로 하고, 중요한 것은 이걸 써먹으려면 <span style="color:#0000ff;">x(t)는 미래를 보고와선 안됩니다</span>. 오직 과거의 정보만을 가지고 있어야 하지요.</p> <p>그러다보니 SDE 는 ODE처럼 시간을 거꾸로 돌리기가 매우 곤란해집니다.</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/1695743075cc9637bb6fec40788d39ba29f7e290ff__mn260556__w419__h68__f5080__Ym202309.png" alt="스크린샷 2023-09-26 174346.png" style="text-align:center;width:419px;height:68px;"></p> <p>이렇게 써버리면 x(t) 가 미래 (t부터 T까지) 를 보고와버리거든요. <span style="color:#ff0000;">자칫하면 시공간의 모든 질서가 무너져버리게 됩니다!!</span></p> <p> </p> <p>이를 해결하고 SDE 모델의 시간을 거꾸로 돌리는 방법에는 2가지가 있습니다. 하나는 BSDE 라고 하는 방법인데 생략하고, 다른 하나가 이 글에서 소개할 <span style="color:#0000ff;">time-reversal</span> 이라는 개념입니다. 아주 단순한 SDE 하나를 봅시다:</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/16957430770aed534df4624524beef781252492343__mn260556__w468__h53__f4548__Ym202309.png" alt="스크린샷 2023-09-26 174351.png" style="text-align:center;width:468px;height:53px;"></p> <p>f(x) = -bx 이고 시그마는 그냥 상수인 경우입니다. 이 확률과정을 <span style="color:#0000ff;">Ornstein-Uhlenbeck process</span>, 줄여서 오-유 프로세스 라고 합니다. 앗 이 사이트의 이름이.. 암튼 이때 X(t) 의 확률밀도함수를 p_t 라 합시다. </p> <p>이제 새로운 프로세스 Y를 <span style="color:#0000ff;">Y(t) = X(T-t)</span> 로 정의합시다. 이 말인즉슨,<span style="color:#0000ff;"> Y(0) = X(T) 에서 출발해서 Y(T) = X(0) 까지 시간을 돌려 거꾸로 쫒아가겠다</span>는 거죠. 이 Y는 다음과 같은 식을 따라간다는 것이 알려져있습니다:</p> <p> <img src="http://thimg.todayhumor.co.kr/upfile/202309/16957430786f38f73635a94fadb30dc28f116684a0__mn260556__w653__h51__f6172__Ym202309.png" alt="스크린샷 2023-09-26 174356.png" style="text-align:center;width:653px;height:51px;"></p> <p>여기서 <span style="color:#0000ff;">d</span><strike><span style="color:#0000ff;">W</span></strike><span style="color:#0000ff;">를 time-reversal of Brownian motion</span>이라고 합니다. W(T)-W(T-t)에 해당하는데, 이녀석의 확률분포는 Brownian motion과 똑같습니다. 즉 X(T) 가 주어진 상태에서, 시간을 거슬러올라가 X(t)의 샘플을 얻으려면 그냥 <strike>W</strike>를 보통의 B.M. 이라고 생각하고 역방향으로 돌릴 수 있습니다.</p> <p> </p> <p>이 오-유 프로세스는 아주 유용한 특징을 가지고 있습니다. T가 충분히 크고 적당한 가정을 하면 p_0에 관계없이 <span style="color:#0000ff;">p_T 는 정규분포</span>로 수렴합니다. 정규분포? 우리가 가장 잘 이해하고 있는 확률분포인데다가 샘플링하기도 쉽죠. 그렇다면 이런 논리를 생각해볼 수 있습니다.</p> <p>1. 우리는 p_0 에서 샘플을 하나 뽑고싶다.</p> <p>2. 그런데 p_0 는 뭔지 잘 모르겠지만 <span style="color:#0000ff;">p_T는 정규분포에 매우 가깝다</span>.</p> <p>3. <span style="color:#0000ff;">정규분포에서 Y(0) 를 뽑은다음, 역방향으로 돌리면 Y(T) 는 (유사) p_0 에서 뽑은 샘플이다!</span></p> <p> </p> <p>오 괜찮군요! 그런데 Y를 굴리려고보니 <span style="color:#ff0000;">∇log(p_(T-t)) 라는 함수</span>가 우릴 가로막습니다. 어.. 이건 어떻게 하죠 선생님? 이럴 땐 데이터가 필요합니다. 상황을 이렇게 수정합시다.</p> <p>1. 우리는 p_0 에서 뽑은 샘플이 잔뜩 있는데, 하나 더 뽑고 싶다. 그런데 지금 있는 샘플중에 하나 고르긴 싫다.</p> <p>2. 샘플들을 X(0) 에 넣고 <span style="color:#0000ff;">정방향</span>으로 잔뜩 돌린다.</p> <p>3. 돌린 데이터를 사용하여 <span style="color:#0000ff;">∇log(p_(T-t)) 를 근사</span>한다.</p> <p>4. <span style="color:#0000ff;">정규분포에서 Y(0) 를 뽑은다음, 역방향으로 돌리면 Y(T) 는 p_0 에서 뽑은 샘플이지만, 기존 샘플이랑은 다른 녀석이다!</span></p> <p> </p> <p>최근에는 다른 방식들이 또 등장하고 있습니다만, 이것이 기본적으로 AI야 동탄해줘(?) 의 기본적인 원리가 됩니다. 수많은 그래픽 데이터는 사실 각 픽셀에 RGB 값이 저장된 숫자 벡터입니다. 우리가 만약에 대충 아무 숫자나 들어간 벡터 하나를 뽑아서 그림으로 출력하면 99.999% 는 그냥 이상한 노이즈처럼 보일거에요.</p> <p> <span style="color:#0000ff;">"말이 되는 그림" 에 해당하는 벡터는 극소수</span>일겁니다. 위의 모델을 이용하면 수많은 그림들을 넣고 "정방향" 으로 돌리면서 그림을 노이즈로 만들어버리고, 그 데이터를 사용하여 <span style="color:#0000ff;">역방향 dynamics 를 학습</span>하죠. 그리고 거꾸로 아무 노이즈에서나 출발해서 "역방향" 을 돌리면 그림이 하나 튀어나오는 겁니다. </p> <p> </p> <p> </p> <p>몇 년 전엔 GAN 이라는 모델이 핫했지요. 딥페이크 영상이란게 화제가 되기 시작했을 때인데, 위의 방법 (정방향-노이즈로 만들며 역방향 학습-역방향으로 샘플 생성)이 등장하고 싹 들어가 버렸습니다. 이 방식을 Score generative model 혹은 diffusion model 이라고 부릅니다. 다만 요새의 트렌드는 또 다른 방식을 쓴다고 하네요. </p>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.