PGR21.com
- 자유 주제로 사용할 수 있는 게시판입니다.
- 토론 게시판의 용도를 겸합니다.
Date 2016/03/18 15:18:34
Name 65C02
Subject [일반] 인공신경망과 알파고 - 알파고는 어떻게 동작하는가?(2)

이전 글 :


인공신경망이란 무엇인가? https://pgr21.com/pb/pb.php?id=freedom&no=64050&page=3
알파고는 어떻게 동작하는가?(1) https://pgr21.com/pb/pb.php?id=freedom&no=64118&page=2

지난 글에서 jjune 님께서 다음과 같은 리플을 적어주셨는데 이에 대해서 부연설명이 필요할 것 같습니다.


jjune  16/03/16 11:18 Rollout Policy 는 정책망(Policy Network) 까지는 아닌거 같고
Linear 정책?(단순 Policy 수준) 정도이고 나중에 시뮬레이션시에 활용하는거 같네요
제 추측에는 프로기사들이 중간에 추정계가를 할때 적당히 중간 라인을 그어놓고 추정계가를 하는데... 그런 용도로 사용되는게 아닐까 합니다 


타당한 지적을 해주셨고, 제가 Rollout Policy를 정책망pi 라고 부르면서 인공신경망이라 생각한 것에 대한 변명을 하자면, 첫째 논문의 그림에서 마치 신경망인 것처럼 그려져 있었으며 둘째 fast rollout policy를 train한다는 표현이 세 번 나왔으며, 셋째 fast rollout policy의 표기를 정책망sigma나 정책망rho와 비슷하게 했기 때문입니다. 그러나 사실 어디에도 fast rollout policy가 인공신경망이라는 문구는 없기에 이에 대한 판단은 논문을 좀 더 읽어본 후에 하도록 하겠습니다. 따라서 이번 글에서는 정책망pi라는 표현은 사용하지 않고, fast rollout policy라는 용어를 그대로 사용하겠습니다. 그리고 이번 글을 읽음에 있어서 fast rollout policy는 다음과 같은 특성을 가진다는 사실만 알고 있으면 이해하는데 큰 무리는 없을 것입니다.


1. fast rollout policy는 정책망(policy network)처럼 다음 수에 대한 확률분포를 생성하는 정책이며, 정책망에 비해서 훨씬 빠르고 정확도는 떨어집니다. (정책망과 비교할 때 정확도는 57.0%대 24.2%, 처리시간은 3밀리세컨드대 2마이크로세컨드)
2. fast rollout policy의 입력값은 확률값을 계산하고자 하는 착수점 위치 주변 3*3의 패턴정보와 바로 직전에 움직임이 있었던 위치 주변 12개의 패턴 및 기타 값들이 됩니다. 즉 입력값은 바둑판 전체가 아닌 국소적인 부위에 제한됩니다.


이제 본론으로 들어가겠습니다. 구글이 바둑 인공지능을 딥러닝으로 구현했다는 얘길 들었을 때 그것이 과연 가능한 것인지 의문을 품지 않을 수 없었습니다. 바둑 인공지능은 인공신경망으로 구현하기 매우 까다로운 특징을 갖고 있다고 생각했기 때문입니다. 다음의 사진은 극단적인 예를 보여줍니다. 

Q7bkgc6.jpgGpktYq6.jpg

눈물점이 본방 때보다 조금 커 보이는 것은 기분 탓입니다. 장서희씨의 사진 여러 장으로 인공신경망을 훈련시킨 후에 위의 그림 두 장을 인공신경망의 입력값으로 사용한다면 출력값은 아마도 거의 동일한 값이 나오게 될 것입니다. (첫번째 글에서 보여드렸던 시노자키 AI 인공신경망에서, ‘약간 일반인스러운 덕후’ 0.1 과 ‘시노자키 아이 스타일의 일반인’ 0.9에 대해서도 0.845 라는 1에 가까운 출력값을 내주었던 것을 기억하시죠?) 사실 인공지능이 아니라 인간이 판단하더라도 동일인물이라고 생각하겠죠. 그러나 바둑에서는 점 하나의 상태로 인해서 그 결과가 매우 달라질 수 있습니다. 돌 하나의 위치로 인해서 큰 집이 살 수도, 죽을 수도 있는 것입니다. 그런데 인공신경망은 바둑판이 비슷한 모습일 때는 비슷한 판단을 내리게 될 것이니 문제가 발생할 것이라 생각한 것입니다.


알파고에서는 이 문제를 여러 가지 방법으로 해결하기 위해 노력한 듯 합니다. 우선 지난번에 설명 드린 대로 입력 값을 단순히 바둑판의 현재 상태만으로 하지 않고, 부가적인 정보를 넣었습니다. 오히려 바둑판의 현재 상태 정보보다 부가적인 정보가 더 많습니다. (바둑판의 현재 상태 정보는 3*19*19 비트, 나머지 45*19*19 비트는 부가적인 정보) 또한 이 입력 값을 그대로 사용하지 않고 나중에 설명드릴 convolution filter를 사용했습니다. 그리고 몬테카를로 트리 탐색 알고리즘으로 수읽기를 구현했습니다. 이제 몬테카를로 트리 탐색에 관해서 설명 드리겠습니다.


수읽기는 게임의 미래 상태를 예상하고 현재 상태에서의 최선의 수를 찾는 것입니다. 바둑뿐이 아니라 거의 모든 게임에는 수읽기가 있습니다. 예를 들어 야구에서도 상대팀이 중요한 순간에 왼손타자를 대타로 낼 것을 미리 예상해서 왼손 투수를 아껴놓는 선택을 했다가 대타가 나온 순간 투입하는 수읽기를 생각해 볼 수 있습니다. 삼목(tick-tack-toe) 같은 간단한 게임에서도 플레이어가 여기에 돌을 두면 상대는 저곳에 두고, 그러면 플레이어는 이곳에 두고 하는 식으로 상대의 반응과 그에 대한 플레이어의 반응, 그리고 그 결과를 예상해 볼 수 있을 것입니다. 알파고는 수읽기를 위해 몬테카를로 트리 탐색 알고리즘을 사용합니다. 이 알고리즘을 이해하기 위해 먼저 몬테카를로 시뮬레이션과 최소-최대(MinMax) 알고리즘부터 알아야 합니다.


9iBF1Yq.jpg

위의 그림은 몬테카를로 시뮬레이션으로 원주율을 구하는 것을 보여줍니다. 그림에서 사각형 안의 임의의 위치에 계속 점을 찍었을 때, 어떤 점은 원 안에 들어가고 어떤 점은 원 밖에 존재할 것입니다. 이때 충분히 많은 점을 찍었다면 다음과 같은 공식을 적용할 수 있습니다.


원의 넓이 / 정사각형의 넓이 = 원에 찍힌 점의 수 / 전체 찍힌 점의 수 = 원주율/4
원주율 = (원에 찍힌 점의 수 / 전체 찍힌 점의 수) x 4


이와 같이 무작위 수(Random number)와 확률로 시뮬레이션을 설계하여 복잡한 문제의 해를 근사적으로 구하는 방법을 몬테카를로 시뮬레이션이라고 합니다.


아래의 그림은 삼목(tick-tack-toe) 게임의 게임 트리를 보여줍니다.
 
mnJc6dQ.jpg


체스나 장기 등 두 플레이어가 번갈아서 수를 쓰는 게임들은 주로 게임트리 라는 개념을 사용합니다. 게임트리는 각각의 노드가 게임의 한 상태를 의미하며, 각 노드의 자식 노드들은 한 수 이후에 도달할 수 있는 다음 상태들을 의미합니다. 그러한 게임의 컴퓨터 플레이어는 게임트리를 이용해서 다음 수순을 미리 예측하고 가장 유리한 수를 찾습니다.


최소-최대 알고리즘을 설명하기 위해 아래와 같은 게임트리를 생각해보도록 하겠습니다.


xo1UY0q.jpg

위의 게임트리는 4수 앞까지 수읽기를 할 수 있습니다. 원형 노드가 플레이어가 선택하는 차례의 상태이고 정사각형 노드는 상대가 선택하는 차례의 상태입니다. 마지막 노드 안에는 숫자가 적혀있는데, 이 숫자가 높을수록 플레이어에게 유리한 상태입니다. 언뜻 생각해 보았을 때는 4수째에서 플레이어에게 가장 유리한 상태가 +무한대 이므로, 첫 수에서 1번 경로를 택하는 것이 최선의 수 인 것 처럼 보일 수 있습니다. 하지만 그럴 경우 상대방의 입장에서는 두번째 수에서 선택할 수 있는 최선의 수, 곧 플레이어에게는 최악의 수인 4번 경로를 택할 것이고, 결과적으로 플레이어는 -10이라는 매우 안좋은 상태에 빠지게 됩니다. 따라서 상대방도 항상 최선의 수를 추구한다고 가정하고 수읽기를 진행하지 않으면 안됩니다. 

 

6WRNncv.jpg

위의 그림은 상대방도 최선의 수를 추구한다고 가정했을 때 선택할 수 있는 최선의 수를 찾아내는 최소-최대 알고리즘을 보여줍니다. 4수를 수읽기 하는 위의 그림에서 마지막 노드는 상대방이 4번째 수에서 선택하게 될 것이므로, 플레이어 입장에서는 최악의 수를 선택하면 됩니다. 이는 10, 5, -10, 5, -무한대, -7 이 되고, 이 값들이 한 단계 상위 노드의 가치가 됩니다. 다시 그 위의 노드는 플레이어의 3번째 수에서 선택되는 것이므로 플레이어 입장에서 최선의 수, 즉 10, -10, 5, -7을 선택하게 되고, 이 값들이 또다시 상위 노드의 가치가 됩니다. 이렇게 반복하여 첫번째 노드로 돌아왔을 때 선택할 수 있는 노드들의 가치는 -10과 -7이 되고, 이중 플레이어 입장에서 더 유리한 값인 -7이 플레이어가 기대할 수 있는 최선의 값이며(물론 상대방도 최선의 수를 택한다고 가정했을 때입니다), 이 값을 가지고 있는 오른쪽 노드를 선택하는 것(첫 번째 그림에서 2번 경로를 택하는 것)이 최소-최대 알고리즘인 것입니다.


아래 동영상은 최소-최대 알고리즘을 보여줍니다.
 



그런데 바둑에서 최소-최대 알고리즘을 사용하면 게임트리가 너무 방대해져서 계산하는 것이 불가능해집니다. 바둑 게임의 평균적 턴 수가 150 정도 이기에 게임트리의 깊이도 약 150정도가 되고, 바둑 규칙을 고려하면 평균적으로 다음 수를 둘 수 있는 경우의 수가 250개 정도이기에 250^150 = 10^360 이상의 노드가 발생할 수 있습니다. 그래서 알파고에서는 최소-최대 알고리즘을 개선한 몬테카를로 트리 탐색 알고리즘을 사용합니다.

LhoV0Ww.jpg


몬테카를로 트리 탐색 알고리즘은 다음과 같은 순서로 진행됩니다.


1. 선택 : 현재 게임상태에서 특정 경로로 수읽기를 진행
2. 확장 : 일정 수 이상 수읽기가 진행되면 그 지점에서 한 단계 더 예측(게임 트리의 확장)
3. 시뮬레이션 : 2에서 선택한 노드에서 게임이 종료될 때까지 무작위 방법으로 진행
4. 역전파 : 3의 결과를 종합하여 확장한 노드의 가치를 역전파하여 해당경로의 승산 가능성을 갱신


삼목 같은 간단한 게임의 최소-최대 알고리즘에서는 전체 게임트리(혹은 일정 수까지의 게임트리) 및 최종 말단 노드에서의 상태값(플레이어가 유리한 정도)이 주어졌지만, 체스나 바둑과 같은 프로그램에서는 게임 트리의 노드들을 모두 생성하는 것도, 상태값들을 정확하게 알아내는 것도 어렵습니다. 따라서 처음부터 게임 트리의 폭과 깊이를 모두 확장하지 않고 알고리즘에 따라서 확장해 나가면서 말단 노드까지 나아가고, 말단 노드에서는 몬테카를로 시뮬레이션을 사용하여 게임 종료지점까지 진행한 후의 상태를 예측하는 것입니다.

wXC3Oq4.jpg


윗 그림은 알파고의 몬테카를로 트리 탐색 알고리즘을 보여줍니다. 알고리즘은 다음과 같은 순서로 진행됩니다.


1. 최상위 노드에서 Q+u(P) 함수값이 최대가 되는 경로를 따라 수읽기 진행합니다.
2. 말단 노드에 도착했을 때 말단 노드에 대한 방문이 일정 횟수 이상이면 확장하는데 이때 확장된 노드들의 선택 확률 P는 정책망rho로 초기화됩니다.
3. 말단노드, 혹은 확장된 말단노드에서 몬테카를로 시뮬레이션으로 게임의 최종 결과를 계산합니다. 이때 사용되는 것이 fast rollout policy입니다. 원래의 몬테카를로 시뮬레이션이라면 랜덤한 수를 게임 종료지점까지 두게 하여 최종 결과를 알아내는 것을 반복하여 평균적인 승산을 구하겠지만, 알파고에서는 어느 정도는 프로 기사의 착수를 흉내내는 fast rollout policy를 반복적으로 이용하여 최종 결과를 알아내는 것입니다.
4. 3에서 계산한 결과와 말단노드에서의 가치망 출력값, 즉 말단노드에서의 승산을 더해서 Q값을 생성합니다.
5. 4에서 계산된 Q값은 상위 노드로 역전파되어서 각 노드의 Q값을 갱신합니다.
6. 1에서 6까지 절차를 수 차례 반복한 후 가장 방문 횟수가 많은 노드를 선택합니다.


Q는 fast rollout policy와 해당 노드에 대한 가치망의 출력값을 이용하여 계산되고, u(P)는 해당 노드에 대한 정책망rho의 출력값을 이용하여 계산됩니다. 또한 Q와 u(P)를 산출하는 수식은 해당 노드 방문 횟수에 반비례하도록 정의되어 있는데, 이는 트리 탐색의 폭을 제한하지 않기 위해서입니다.


몬테카를로 시뮬레이션 부분을 비유를 들어서 생각해보겠습니다. 프로 9단 두 명이 이틀에 걸쳐서 두는 바둑을 두고 있었는데 첫날 밤 한 명이 사망하였습니다. 첫날 둔 바둑판의 상황만 가지고 누가 얼마나 유리했는지 알아보기 위해서 기력이 비슷한 아마추어 1단 두 명에게 그 상태 그대로 바둑을 두게 하여 결과를 확인합니다. 또 다른 아마추어 1단 두 명에게 바둑을 두게 하여 결과를 확인합니다. 이것을 반복하여 통계를 내어 보면 누가 얼마나 유리했는지 추정할 수 있을 것입니다. 물론 프로 9단과 아마추어 1단의 수읽기는 차원이 다를 것이기에 어느 정도 한계는 있을 수 있겠습니다만, 임의의 위치에 두어서 결과를 추정하는 것보다는 훨씬 나을 것입니다. 스타크래프트로 비유하면 정전록 당시 이제동과 이영호 중 누가 유리했는지 알기 위해 정전되기 직전의 상황을 완벽하게 재현한 세이브 데이터를 만들고, 이 세이브 데이터로 실력이 비슷한 공방 저그 테란 플레이어 두 명에게 반복적으로 게임을 시켜보는 것을 생각해 볼 수 있습니다. 이 비유에서 아마추어 1단은 fast rollout policy를 의미합니다. 처음에 설명 드렸듯이, fast rollout policy는 매우 빠른 대신 정확도는 떨어지는 정책입니다.


이제 알파고가 동작하는 모습이 어느 정도 그려졌을 것입니다. 다음에는 convolution filter 및 기타 대충 넘어간 부분들에 대해서 말해보겠습니다. –꼐속


통합규정 1.3 이용안내 인용

"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.
법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
포포탄
16/03/18 15:34
수정 아이콘
빨리 다음편 올려주세요. 현기증 난단 말이에요!
세종머앟괴꺼솟
16/03/18 15:43
수정 아이콘
알기 쉽게 설명하시면서도 대단한 퀄리티네요.
은때까치
16/03/18 15:46
수정 아이콘
잘 봤습니다. 그런데 제가 알파고 알고리즘을 공부하면서 풀리지 않는 질문이 있어서 여쭤보고자 합니다.
데미스 하사비스는 '몬테카를로 트리서치 알고리즘에 randomness가 있다' 라고 분명히 말했습니다.
그런데 제가 알기로 알파고가 쓰는 MCTS에 랜덤 요소는 없습니다. 있다고 해 봐야 rollout policy인데, 일반적인 MCTS와는 달리 알파고는 정해진 법칙(rollout network?)에 따라서 게임 끝까지 rollout 하기 때문에 전혀 랜덤요소가 없을 것 같습니다. policy network, value network는 물론이고요.

설마 계산된 Q+u(t) value가 같은 경우에 랜덤하게 선택할까요? 몇몇 사람들은 이렇게 설명하기는 하는데, 저는 Q값이 절대로 같을 수가 없을 것 같습니다. 그리고 정말 몇억분의 1의 확률로 거의 같다고 하더라도, 조금이라도 높은 수를 선택하지 랜덤하게 고르지는 않을 것 같습니다.

MCTS의 무작위성, 어떻게 생각하시나요?
16/03/18 16:01
수정 아이콘
정책망으로 착점들 추린다음, MCTS 해서 20수 이후에 백만개의 경우의 수에 대한 판세(승리확률)를
가치망으로 분석해본결과 승리확률이 아주아주 미세한 차이일경우에는
높은 확률을 택하는게 별 의미가 없습니다.
또 어떤 경우에는 확률 값차이가 컴퓨터 수치계산시에 발생하는 오차한계 이내에 있을수도 있고요.
이럴경우 랜덤이 들어가리라 봅니다.
16/03/18 16:13
수정 아이콘
저도 아직까지는 논문에서 랜덤 요소를 발견하지 못했습니다만, M탈모 아저씨가 그렇게 얘기했다면 제가 놓친 부분이 있을 것으로 생각됩니다. 혹시 발견하게 되면 말씀드리겠습니다.
16/03/18 16:42
수정 아이콘
fast rollout policy의 결과로 확률분포가 나온다고 하셨으니, 시뮬레이션 단계에서 확률분포를 기반으로 예상 착수지점 몇 곳을 랜덤으로 고르는 것 같습니다. Tracking 분야에서 유명한 알고리즘인 particle filter와 같은 알고리즘들이 이런 방법을 기반으로 MC를 적용하여 동작한다고 알고있어요.
16/03/18 16:55
수정 아이콘
논문에 "and second, by the outcome z_L of a random rollout played out until terminal step T using the fast rollout policy p_pi" 라는 표현이 있긴 합니다.
은때까치
16/03/18 16:54
수정 아이콘
http://www.bloter.net/archives/251758
MCTS에 랜덤 요소가 있다고 했던 하사비스 인터뷰 링크입니다.
오랫동안 궁금했던 부분인데, 찾게 되면 꼭 공유해 주시면 감사드리겠습니다.
트루키
16/03/18 15:46
수정 아이콘
github 에 알파고 따라하는 프로젝트 소스가 등록이 되어있던데, 이런 내용이 들어갔는지 분석해보면 재미있겠네요! 잘 읽었습니다. 다음편도 빨리요~!
16/03/18 16:11
수정 아이콘
아싸! 퇴근하고 할 일 생김!!
감사합니다. ^^
이 글에서 제일 설레는 부분은 역시나 막줄의 "꼐속"이군요. 담편도 기대하고 있겠습니다.
꼭두서니색
16/03/18 16:14
수정 아이콘
전 글재주가 없어서 핵심적인 내용만 담아 글을 썼었는데, 이렇게 보니 논문을 읽는 느낌입니다. 좋네요 흐흐
다리기
16/03/18 17:43
수정 아이콘
읽을수록 알파고의 위엄이.. 아니 1200 CPU의 위엄이 느껴지네요 크크
16/03/18 19:28
수정 아이콘
많이 배우고 갑니다 앞으로도 잘 부탁드리겠습니다 크크크
16/03/18 19:48
수정 아이콘
알파고에서 그동안 최근 딥러닝 인공지능에서 쓰던 모델이나 최적화방법 보다 특이한 뭔가를 더 쓴건가 했는데, 위의 글대로라면 cnn을 충실히 섞어서 몬테카를로와 결합한거네요 물로 그 자체만으로 이정도 성능을 구현한 구현력은 대단한거지만요.
어쨌든 앞으로 조교가 시범 보이고 눈!으로 보고 따라해라고 가르치는 류는 모두 로봇이 인간을 대체할수 있을것 같네요 젤 위험한 직군은 인건비가 많이드는 컴터를 사용한 단순 반복업무 직군들이네요
세종머앟괴꺼솟
16/03/18 20:03
수정 아이콘
구블리자드게임들마냥 굉장한 혁신성이 있다기보다는 완성도있는 프레임워크 같습니다.
16/03/18 21:06
수정 아이콘
cnn+몬테카를로스라는 부분에 적극 동감합니다.. 논문을 읽다보니 RL 의 기여도가 생각보다 많이 낮습니다..
괜히 RL 써서 오버피팅만 만들었다는 느낌조차 들 정도입니다..
개인적으로 정말 궁금한게 RL 을 완전히 배제하고 SL 로 대체했을때 성능이 어느정도 나올까 하는 점입니다.
이렇게 토론할 자리를 마련해주신 원글자분께 정말 감사드리며..
다음 글이 정말 기대됩니다.. 이 부분에 대해서 토론할 기회가 있었으면 합니다...
은때까치
16/03/18 21:26
수정 아이콘
RL의 기여도가 낮다니요? 기존의 5급 1급 하던 바둑 프로그램이 바로 그 SR만 쓴 프로그램들입니다. RL로 self-learning 하면서 이세돌9단을 이기는 알파고가 완성된 건데, RL이 의미가 없다니요....
16/03/18 21:44
수정 아이콘
SL, RL이 각각 supervised learning, reinforcement learning을 의미한다면 둘의 성능에 대한 언급이 논문에 있습니다. "When played head-to-head, the RL policy network won more than 80% of games against the SL policy network." SL로 대체하면 성능이 많이 떨어지지 않을까요?
16/03/18 22:42
수정 아이콘
순수하게 SL policy 와 과 RL policy 만 대결시에는 RL policy 가 우월하지만 알파고의 최종 모습인 MTCS 결합에 쓰이는 policy 로는 SL policy 가 좋다고 나와 있습니다
"It is worth noting that the SL policy network pσ performed better in AlphaGo than the stronger RL policy network pρ, presumably because
humans select a diverse beam of promising moves, whereas RL optimizes for the single best move"

그렇다면 결론적으로는 RL policy network 가 알파고 최종 모습에 기여한 부분은 value network 를 학습시키기 위한 데이터 기보를 만드는데 있다고 보입니다..
거기서는 RL policy 가 SL policy 보다는 좋다고 논문에 써있구요..

그런데 value network 는 직접적으로 MTSC 에 쓰이는게 아니라 fast rollout 과 5:5 비율로 쓰입니다...
결국 RL policy 는 간접적으로(value network 학습 데이터 생성용) MTSC 에 적용되는데 그 마저도 fast rollout 과 반띵을 하죠..

그런 의미에서 원래 생각했던것보다 RL 의 의미가 적다고 말씀드린겁니다..
(혹시 제가 오독했을수도 있으니.. 논문 한번 확인 부탁드립니다..)
16/03/19 14:03
수정 아이콘
논문 뒷부분을 좀 더 읽어보니 그런 언급이 있었네요. jjune님 말씀도 일리는 있습니다. 그러나 정책망과 Rollouts만 썼을 때와 정책망, 가치망, Rollouts을 모두 썼을 때의 Elo rating 비교에서 차이가 꽤 나므로(2400 vs 2900) 가치망을 만들어낸 것 만으로도 RL이 의미 있었다고 할 수 있지 않을까 합니다.
트루키
16/03/18 22:00
수정 아이콘
판후이와 대국할 시점에 기보입력은 끝났고, 그 이후로는 거의 RL 로 이세돌 이길 정도로 성장한 것 같던데요.
목록 삭게로! 맨위로
번호 제목 이름 날짜 조회 추천
64384 [일반] 너를 기다리며 [36] 눈시4902 16/04/01 4902 0
64383 [일반] (군생활 주저리) 혹시 특이한 군대 경험을 갖고 계신 분들 있나요? [162] Janzisuka22871 16/03/31 22871 0
64382 [일반] 헤어졌는데 미련이 남습니다.... [29] 첼시FC8459 16/03/31 8459 0
64381 [일반] 트럼프 열풍(?)과 미국 인구 구성의 변화 [18] santacroce8371 16/03/31 8371 34
64380 [일반] UFC 소식 - 코너 맥그리거, 존 존스, 하빕 누르마도메고프 등 [11] The xian4746 16/03/31 4746 2
64379 [일반] [SHUFFLE!]의 작가 아고바리아님 사망 [14] 좋아요5471 16/03/31 5471 1
64378 [일반] 생애 첫 전세 계약을 했습니다. [205] 쌀이없어요16709 16/03/31 16709 193
64377 [일반] 일기 [2] 글자밥청춘3917 16/03/31 3917 8
64376 [일반] 헌재에서 성매매 처벌을 합법으로 판단했습니다. [146] Igor.G.Ne14854 16/03/31 14854 1
64375 [일반] 사람의 건강보다 중요한건 돈이야! 돈! by. 비양심기업 [14] 최강한화6212 16/03/31 6212 0
64374 [일반] [정보] 오늘 점심은 배달로 드세요~ (요기요 만원 할인) [69] 뀨뀨12032 16/03/31 12032 4
64373 [일반] 모기 v 호모 사피엔스: 최후 전쟁의 서막... [32] Neanderthal5806 16/03/31 5806 23
64372 [일반] 출사 : 삼국지 촉서 제갈량전 33 (6. 세 개의 발) [29] 글곰4127 16/03/31 4127 47
64371 [일반] 볼티모어 감독, "김현수 상황결정 전까지 더이상 출전없다" [69] 삭제됨12246 16/03/31 12246 2
64370 [일반] [KBL] 14년만에 찾아온 그들의 우승 [13] 카밋4974 16/03/31 4974 1
64369 [일반]  MLB 선수노조, '김현수 사태' 개입 [27] 피아니시모10900 16/03/31 10900 1
64368 [일반] [프로듀스 101] 전소미의 38만 대첩과 프로듀스 투표시스템의 한계 [95] evene12529 16/03/30 12529 9
64367 [일반] 아들이 혼났다 [11] Colorful6191 16/03/30 6191 43
64366 [일반] [서브컬쳐] μ’s FINAL LOVE LIVE! - 안녕이란 말에 안녕 [14] 시네라스6092 16/03/30 6092 2
64365 [일반] 창세기전2 소설을 아시나요? [8] 마음속의빛12175 16/03/30 12175 0
64364 [일반] (불법)이민자를 사랑한 여인 « 그는 나를 사랑했을까요?, 아니면 나를 이용만 한 걸까요? » [19] 가장자리6387 16/03/30 6387 0
64363 [일반] 낡은 연애편지 [3] ZolaChobo4161 16/03/30 4161 4
64362 [일반] [야구] 내야수 한상훈, 한화와 계약해지 [44] 이홍기7589 16/03/30 7589 0
목록 이전 다음
댓글

+ : 최근 1시간내에 달린 댓글
+ : 최근 2시간내에 달린 댓글
맨 위로