레플리
글 수 203

알파고의 딥러닝 알고리즘

조회 수 5494 추천 수 0 2017.03.12 03:53:17


AlphaGo : AlphaGo Pipeline 헤집기

-> https://shuuki4.wordpress.com/2016/03/11/alphago-alphago-pipeline-%ED%97%A4%EC%A7%91%EA%B8%B0/

 

AlphaGo의 알고리즘과 모델

-> http://sanghyukchun.github.io/97/

 

DeepMind에서 발표한 논문

-> https://gogameguru.com/i/2016/03/deepmind-mastering-go.pdf

 

 

 

Deep Q-Network로 오목을 학습하는 딥러닝을 구현하려고 공부하고 있습니다. 알파고 알고리즘을 좀 더 자세히 찾아봤는데 알고보니 여기 사용된 강화학습은 DQN가 아니었습니다.

 

아타리 게임을 학습하던 DQN은 Q-Learning 방법을 사용합니다. 상태 s에서 행동 a를 했을때 Q(s,a)값이 높은 쪽으로 행동을 결정합니다. 좋은 행동이었을 경우 보상값 r을 받고 보상값을 인접 Q테이블에 조금씩 감소시키며 전파합니다. 계속 반복학습을 통해 전체 상태집합에서 어떤 행동이 가장 좋은 것인지 알 수 있습니다.

 

알파고에서 구현한 강화학습은 이것과 약간 다릅니다. 어떤 알고리즘이 사용되었는지 간단하게 살펴보겠습니다.

 

 

 

full-minimax-move-tree.png

 

보드게임 인공지능을 위한 대표적인 방법은 미니맥스(Minimax) 알고리즘입니다. 나와 상대방이 번갈아 두는 모든 경우의 수를 구하고 어떤 수가 이길 수 있는 최선인지 검색합니다.

 

위 그림은 틱택토의 미니맥스 트리인데 이기면 +10, 지면 -10의 평가값을 얻습니다. 트리의 말단 노드까지 검사하여 평가값이 가장 높은 수를 선택합니다.

 

하지만 바둑은 경우의 수가 천문학적으로 많기 때문에 모든 트리를 검사할 수 없습니다. 그래서 몬테카를로 트리 검색(Monte Carlo Tree Search)라는 방법을 사용합니다. 기본적인 아이디어는 트리의 일부분만 샘플링하여 검색하고 이를 여러번 반복하여 근사치를 얻는 것입니다.

 

 

 

 

K-001.png

 

알파고는 MCTS를 기반으로 정책망(Policy Network)와 가치망(Value Network)를 사용합니다. 트리를 샘플링하여 가치를 칠때 최대한 연관이 높은 것을 선택해야 합니다. 바둑에서 다음 수는 보통 이전 수 근처에 있지 멀리 떨어진 곳에 두지 않습니다.

 

이렇게 좋은 쪽으로 트리를 선택하기 위해서 정책망으로 판단을 하는데 이걸 딥러닝 CNN으로 구현했습니다. 프로기사가 둔 3000만개의 기보를 사용하여 지도학습을 했다고 합니다. 학습된 정책망으로 현재 상태에서 최적의 수를 찾아내고 그쪽 방향으로 계속 검색합니다.

 

 

 

하지만 이런 방법으로는 기보에 없는 새로운 수를 찾을 수 없는 한계가 있습니다. 이를 극복하기 위해 지도학습 정책망과 함께 강화학습 정책망을 이용합니다. 강화학습 정책망은 지도학습 정책망의 가중치를 초기값으로 하여 생성합니다.

 

그리고 지도학습 정책망끼리 대결을 하여 그 결과에 따라 강화학습 정책망의 가중치를 조정합니다. Q러닝과는 다른 방법으로 직접 가중치를 조정하는데 논문에는 자세한 방법이 나와있지 않습니다.

 

 

 

정책망으로 트리를 선택한 다음에는 가치망으로 좋은 수인지를 평가해야 합니다. 가치망에서도 강화학습을 사용하는데 이것 역시 Q러닝은 아닙니다.

 

정책망끼리 대결을 하여 승패를 기록하고 이 데이터로 CNN 지도학습을 합니다. (바둑판 상태, 평가값)의 데이터인데 많이 이긴 바둑판의 상태일 경우 높은 평가값을 가집니다.

 

지도학습 정책망 CNN이 최선의 수를 찾는 분류작업이라면 가치망 CNN은 현재 바둑판의 상태에서 평가값을 예측하는 것이라 할 수 있습니다.

 

 

 

정리하면 알파고에서 사용된 딥러닝은 모두 세가지 입니다.

 

1. 지도학습 정책망

2. 강화학습 정책망

3. 강화학습 가치망

 

 

 

< 인공지능 개발자 모임 >

- 페이스북 그룹에 가입하시면 인공지능에 대한 최신 정보를 쉽게 받으실 수 있습니다.

https://www.facebook.com/groups/AIDevKr/

 

List of Articles
제목 글쓴이 날짜 조회 수sort
CNN 초보자가 만드는 초보자 가이드 깊은바다 2017-04-09 1041
메타AI의 멀티모달 자기지도학습 모델인 Data2vec 깊은바다 2022-01-26 1032
GAN으로 사진에서 특정 부분을 지워주는 서비스 - Cleanup.pictures file 깊은바다 2022-01-17 1026
딥러닝(Deep Learning)에 대한 소개 깊은바다 2016-03-21 1000
어떻게 컴퓨터가 사진을 이해하게 되었는가 깊은바다 2017-03-31 995
문장을 사진으로 변환하는 GPT-3 모델, DALL-E 깊은바다 2021-01-09 985
95생 천재 소녀가 만든 Pika가 빅테크들을 이길 수 있었던 이유 file [2] 깊은바다 2023-12-24 976
스케치를 사진으로 변환하는 딥러닝 - NVIDIA의 GauGAN 깊은바다 2019-03-20 968
원티드는 어떻게 AI로 채용 결과를 예측하고 매칭할까 깊은바다 2021-11-09 961
자신의 이름을 음성으로 만들어 주는 사이트 깊은바다 2019-02-04 956
딥러닝 라이브러리 텐서플로우의 기본 사용법 깊은바다 2017-03-03 949
책 읽어주는 딥러닝 깊은바다 2017-11-23 943
딥러닝의 기본 깊은바다 2019-07-12 942
가중치를 하나로 공유하고 모델의 구조만 찾는 WANN 깊은바다 2019-09-10 916
대학교 게시판을 크롤링하여 만든 GPT2 모델 file 깊은바다 2020-07-18 916