토론실
프로필 이미지
[레벨:20]이금재.
read 3463 vote 1 2021.07.23 (03:40:42)

0. 시작

 

이전 글에서는 사진처럼 움직이지 않는 대상에 대한 나의 리액션을 결정하는 지도학습 알고리즘에 관해 설명하였다. 이때도 말한바 나의 리액션은 반드시 목적에 의한다. 이는 목적이라는 테두리에 대상에 대한 나의 리액션이 종속되어 있다고 생각해도 좋다. 컴싸에서는 이를 목적함수라고도 부른다. 이제부터 알아볼 강화학습은 지도학습과 달리 움직이는 대상을 다루는 알고리즘이다. 정에서 동으로 뭔가 하나 늘어난 느낌이다. 그렇다, 강화학습이 지도학습보다 4배쯤 복잡하다.

 

사실 말을 안 했을 뿐이지 지도학습 알고리즘의 종류는 상당히 많다. 하지만 종류가 많을 뿐 원리는 전부 트리에 의존한다. 물론 강화학습을 포함한 다른 알고리즘도 마찬가지다. 일반적으로 알고리즘은 함수와 거의 같은 의미로 사용되며, 함수는 트리를 두 개 사용한다. 함수가 트리를 사용하는 것은 정보가 차원을 다루기 때문이고, 차원이 곧 트리를 의미한다. 앞서 하나의 함수에는 입출력이라는 문제를 정의하는 트리, 그리고 변수를 정의하는 트리의 총 2개로 구성된다고 했다.

 

강화학습 알고리즘의 종류 또한 상당히 많다. 컴퓨터를 만들려고 하던 시점부터 강화학습의 역사가 거의 같이 시작되었기 때문이다. 다만 처음 컴퓨터를 고안할 당시에는 동적 상황을 인식하는 개념이 부족하여 결과적으로 지도학습 개념만 제시된 것이 사실이다. 우리가 알고 있는 튜링 머신이 대표적이다.

 

튜링은 지도학습만 구현해도 인공지능을 만들 수 있다고 생각했다. 물론 이때는 지도학습이라는 말도 없었다. 원리적으로 보면 생물이 아닌 기계를 만든 것인데, 그래서 현대 프로그래밍의 전제는 대응하지 않는 혹은 움직이지 않아서 예측하기가 쉬운 대상을 다루게 되었다. 이러한 지도학습의 특징 때문에 모든 프로그래밍에는 버그가 잠재하는데 그 이유가 바로 대상이 가끔 움직이기 때문이다. 어떤 대상이 변하지 않는다고 생각했는데, 맥락이 바뀌니깐 변하기 시작한 것. 결과는 오작동. 객체지향언어 너 말이다.

 

어쨌건 이번에도 대표 알고리즘 하나만 소개하겠다. 여러분이 많이 들어본 알파고다. 알파고만으로 모든 강화학습을 설명할 수는 없겠지만, 그래도 가장 진보한 알고리즘 중 하나이므로 이전의 다른 강화학습 알고리즘을 대표한다고 할 수 있겠다.

 

 

1. 강화학습

 

강화학습은 사람이 개를 훈련하는 상황으로 이해하면 된다. 주인이 개에게 시키는 것은 "어떤 맥락에서 내가 이렇게 하면 너는 저렇게 해라"는 것이다. 사실 이 정도는 대상이 움직이지 않는다면 굳이 강화학습으로 풀지 않고 지도학습만으로도 풀 수 있는 것이다. 다만 세상의 많은 문제는 대상이 동적이므로 강화학습이라는 더 고급의 방법을 사용한다. 대표적으로 바둑이 있다.

 

바둑에서 상대는 가만히 있지를 않는다. 내가 어떤 돌을 두면 상대도 여기에 맞춰 새로운 돌을 둔다. 계속 변하는 것이다. 그리고 둘은 1) 바둑 규칙이라는 목적, 2) 동적 상대 라는 조건에 따라 실시간으로 대응하고 있다. 알려진 대로 연구자들에게 바둑은 오랫동안 풀기 어려운 문제로 인식되었다. 경우의 수가 우주의 원자 수보다 더 많다던가. 암튼 너~~무 많다. 그래서 알파고의 모든 알고리즘은 이 경우의 수를 줄이는 것에 집중한다.

 

 

2. 과정


경우의 수를 줄이기가 포인트

 

1) 이미지 인식

: 대개의 상상과 달리 경우의 수를 줄이는 것은 우리가 이미 알고 있는 지도학습에 의한다. 물론 알파고 또한 딥러닝을 사용한다. 독자는 이 말이 잘 이해가 되지 않겠지만, 어쨌건 바둑판을 읽고 적절한 돌을 놓는 것은 고양이를 인식하여 이름을 출력하는 것과 비슷한 과정이다. 이름을 출력하던게 바둑돌 위치를 출력하는 것으로 바뀌었을 뿐이다.

 

그런데 이게 왜 경우의 수를 줄인다는 건가? 바둑판을 읽지 않고 바둑돌을 놓는 것과 바둑판을 읽고 놓는 것은 경우의 수에서 큰 차이가 있기 때문이다. 이는 형사가 범인에 대한 정보를 획득할수록 용의자 범위가 줄어드는 것과 같다. 어떤 판세라는 정보가 들어오면 내가 놓아야 할 돌-용의자 범위가 줄어드는 것이다.

 

그리고 이 딥러닝을 훈련하는 데는 과거의 경험을 사용한다. 어떤 사진(입력)을 보고 어떻게 대응했더니(라벨, 출력) 이긴다(맥락)는 데이터를 익히는 것이다. 알파고-(이세돌 버전)는 이 딥러닝으로 기존 아마추어 고수 바둑 기보 16만건을 바탕으로 3,000만 착점을 익혔다고 한다


나중에 알파고의 버전이 제로까지 올라가면 이 과정은 생략된다. 굳이 인간의 기보를 익힐 필요가 없는 것이다. 그냥 처음부터 지들끼리 둬보며 데이터를 생산하여 딥러닝을 학습해 버린다.

http://biz.khan.co.kr/khan_art_view.html?artid=201710190200001&code=920501


2) 지들 끼리 둬보기

: 그리고 이렇게 훈련된 알파고 끼리 서로 대국을 두어 학습된 딥러닝을 더욱 고도화 시켰다. 스스로 학습했다는 말이다.(self play) 여기까지가 사전 준비 단계다. 아래부터는 실제 대국시에 하는 것이다.

 

3) 시뮬레이션

: 이미지 인식만으로도 바둑을 둘 수는 있다. 바둑판에 돌은 점점 쌓이며 변하고 변함에 따라 어떤 수를 두는 지를 익히면 그만이다. 하지만 이렇게 하더라도 여전히 한계는 남아있다. 우리의 예상과는 달리 딥러닝은 그렇게 정확한 알고리즘이 아니다. 대개의 딥러닝이 마찬가지 문제를 겪는데, 특히 바둑은 라벨의 개수가 많다는 게 가장 큰 문제다.

 

왜 사람도 그렇잖는가? 2지선다 객관식이라면 찍어도 50%의 확률로 맞추지만, 5지선다, 100지선다가 되면 맞출 확률이 급격히 줄어들 것이다. 바둑판이 이렇다. 돌을 놓을 수 있는 자리가 너~무 많은 것이다. 실제로 딥러닝으로 훈련을 하더라도 2지선다가 되면 쉽게 맞추지만 맞춰야 라벨의 개수가 늘어나면 훈련해야 할 양도 기하급수적으로 늘어난다. 게다가 정확도도 점점 떨어진다. 또한 아무리 많이 훈련해도 일정 수준 이상의 정확도는 높일 수 없다.

 

그래도 생각보다는 근접한 답안을 내놓는다. 책상을 두고 고양이라고는 대답하지 않는다. 대강 개 정도로 대답할 수는 있다. 그래서 알파고는 개라는 오답을 고양이라는 정답으로 바꾸고자(더 좋은 답안을 내놓고자) 자신의 수읽기? 시간 동안(바둑을 잘 몰라서, 실제로 얼마나 주는 지를 모르겠다) 시뮬레이션을 한다. 미리 두어 보는 것이다. 이때 사용하는 시뮬레이션 알고리즘이 바로 몬테카를로트리서치MCTS이다. MCTS는 딥러닝의 정답지 산출과 랜덤확률을 함께 사용하여 가장 좋은 결과가 나오는 수를 선택한다.


딥러닝으로 상당히 경우의 수를 줄였지만 여전히 바둑판은 넓다는 문제가 있다. 그래서 MCTS를 사용한다. 남은 모든 경우의 수를 다 시뮬레이션 하는 게 아니라 적절히 가지치기를 해가며 시뮬레이션 한다. 그래서 알파고가 제한된 시간동안 수많은 게임을 머릿속에서 시뮬레이션 해볼 수 있는 것이다. 


바둑_경우의_수.jpg

 

딥러닝이 일단 학습을 하고 나면 생각보다 그 정보는 얼마 되지 않는다. 다만 그걸 학습시킬 때 필요한 연산량이 어마무시할 뿐이다. 그리고 시뮬레이션을 정해진 시간동안 최대한 해야 하므로 집채만한 GPGPU가 필요하게 된다. GPGPUGPU를 머신러닝에 맞춰 특화한 것이라고 이해하면 된다. 이때 들어가는 전기세가 무지막지하다. 최근 언어모델을 학습하는 GPT-3는 한번 훈련하는데 몇백억이 들었다지. 아마 거의 전기세일 것. 딥러닝은 CPU보다는 GPU로 훈련한다. CPU는 복잡한 연산을, GPU는 단순반복노가다 연산에 특화되어 있는데, 딥러닝의 학습이 바로 GPU에 적합하기 때문이다.

 

4국에서 이세돌이 신의 한 수를 두자 알파고의 승률이 급격히 떨어지고 있다는 말을 들어본 적이 있을 것이다. 이게 바로 시뮬레이션에서 나온 결과를 확률로 변환한 것을 진행자가 읽어주는 것이다. 일정 확률 이하로 떨어지면 알파고는 돌을 던진다. 더 해봐야 안 되는 것을 시뮬레이션을 통해 알 수 있기 때문이다.


99CAF54D5C5E9B2009.png

왼쪽부터 1) 인간플레이 학습 > 2)지들끼리 두어서(self play) 학습을 고도화 > 3) 현장에서 시뮬레이션 



3. 인간과 비교


꼴랑 이 정도 간단한 알고리즘으로 그 어려운 바둑을 해결한다는 게 믿기지 않겠지만, 바둑이 별 대단한 게 아니라서, 이 정도만으로도 충분히 잘 해결한다. 바둑과 달리 인간이 풀어야 하는 문제는 대부분 어떤 한 문제가 복잡하기 보다는, 맥락(사건)이 다양하다는 특성이 있다. 알파고는 바둑만 두니깐 잘하는 것이다. 물론 버전에 따라서 바둑 말고도 다른 게임을 함께 학습할 수도 있게 되었다.

 

하지만 여전히 인간이 처한 상황과는 상당히 다르다. 인간이 푸는 대부분 문제는 어느 한 문제만 보자면 상당히 단순한 것이다. 인간에게 대상을 인식하는 과정이 어려울 수도 있지만 일단 어떤 대상이 인식되고 나면 이후에는 명사화를 통해서 연산량을 확 줄여버린다. 애매한 대상에 이름을 붙이고 나면 갑자기 생각이 쉬워진 경험이 있잖은가.

 

그러나 알파고는 이런 개념이 없다. 그냥 한 문제만 깊게 잘 풀게 된다. 그럼 인간은 바둑을 어떻게 두냐고? 큰 사건에 속하는 작은 사건을 두는 방식으로 푸는 것으로 보인다. 이런 게 명사화지 뭐냐. 그래서 언어가 필요한 거고. 언어를 쓰니깐 다른 동물보다 더 다양한 대상이나 환경에도 적응할 수 있는 거고.

 


4. 또 어디다 쓰지?


강화학습으로 해결할 수 있는 문제는 바둑뿐만 아니라 스타크래프트, 자율주행, 챗봇, 공정 최적화 등 다양한 곳에서 사용될 수 있다. 인간이 머리 쓰는 곳에는 다 쓴다고 보면 된다. 그런데 누군가 채팅봇 이루다는 왜 그따구로 단답밖에 못하느냐고 하시던데, 이유가 있다. 일단 이루다는 강화학습을 쓰지 않는다. 지도학습으로 훈련된다.

 

아니 강화학습처럼 좋은 걸 놔두고 왜 지도학습을 사용했냐고? 쓸 줄 몰라서 그런거다. 아마 외국에서는 챗봇을 강화학습으로 일부 구현했을 텐데, 아직 한국의 연구자들은 텍스트에 강화학습을 어떻게 적용해야 하는지를 생각하지 못한다.

 

강화학습으로 대화봇을 만들 수 있을 지는 바둑을 잘 생각해 보면 된다. 바둑을 두는 것이나 대화를 하는 것이나 비슷한 것이다. 이전의 대화가 누적되어 다음에 할 말이 정해지는 것이나 이전의 돌이 누적되어 다음에 놓을 수가 정해지는 것이나 매한가지다. 그러므로 돌대신 말을 선택하도록 하면 간단하다. 근데 아무도 이렇게 안 하대.

 

이루다가 사용한 지도학습은 이전의 말들을 누적하여 답하는 것이 아니라 딱 한 턴의 질문에 대해서만 답하도록 설계되어 있다. 이건 이루다가 꼬져서 그렇다기 보다는 연구자들이 그렇게 밖에 설계를 못해서 그런거라고 이해하면 된다. 외국에서 대화봇에 대한 논문이 단답형만 나와서 그런 면도 없잖아 있다. 버트라고 있다.


물론 다양한 맥락을 인식하여 개별적인 강화학습으로 대응하는 방법은 현재도 설계할 수는 있다. 근데 아무도 안 하대. 그렇게 잘난 왜 니가 안 만드냐고? 대답 안 할래.



5. 미래에는?


문제를 설계하는 능력은 곧 변증법적으로 사고하는 것이다. 변증법적 사고를 할 수 있으면 머신러닝이 인공지능이라고 불리게 된다. 현재 강화학습 정도의 알고리즘만 사용하더라도 인간이 원하는 많은 문제를 해결할 수는 있다. 맥락법만 사용하더라도 개별적인 학습량이 줄어들어 성능이 더 올라갈 수도 있다. 하지만 문제를 출제하는 변증법은 얘기가 다르다. 현재 인간이 만든 그 어떤 알고리즘이라도 문제를 스스로 출제하지는 않는다. 전부 인간이 출제한 문제를 풀 뿐이다. 변증법적 사고를 하는 머신러닝을 만드는 것은 어떤 머신러닝 하나를 만든다기 보다는 머신러닝 군집을 만들어야 하는 어려움이 있다. 물론 지금도 이론적으로는 불가능한 것이 아니다. 열심히 생각하고 만들다보면 조만간 만들어질 수도 있다. 구체적인 것은 다음 편에.



6. 이제 아래 글이 대강 이해될 것이다.


알고리즘(https://ko.wikipedia.org/wiki/%EC%95%8C%ED%8C%8C%EA%B3%A0)

인공지능의 학습에 있어 데이터와 연산능력 보다 중요시 되는 것이 알고리즘이다. 핵심은 무한대에 가까운 광범위한 경우의 수를 줄이는 것이다. 알파고는 훈련된 심층신경망(DNN, Deep Neural Network)이 몬테카를로 트리 탐색(MCTS, Monte Carlo Tree Search) 통해 선택지 중 가장 유리한 선택을 하도록 설계되었다. 심층신경망은 정책망(policy network)과 가치망(value network)의 결합에 의해 이루어진다. 정책망은 승리 가능성이 높은 다음 수를 예측하여 검색 범위를 좁히고, 가치망은 트리 탐색의 단계(depth)를 줄여 끝날 때까지 승률을 계산하여 승자를 추정한다.[1] 이를 실현하기 위한 기계학습은 여러 계층(layer)으로 디자인된 정책망을 구성하고, 정책망 지도학습, 정책망 강화학습, 가치망 강화학습 단계를 거친다.[4][7]

 

정책망 지도학습 (Supervised learning of policy networks) >> 내가 딥러닝이라고 말한 거

KGS 바둑 서버에 등록된 16만 개의 기보를 회선신경망(CNN, Convolutional Neural Networks)으로 학습하고 3천 만개 이르는 착점 위치 정보와 패턴을 파악해 다음 수를 예측하여 인간의 바둑을 흉내내도록 훈련되었다. 훈련 결과 기존 44% 수준의 예측 확률이 57%까지 높아졌다.[8]

 

정책망 강화학습 (Reinforcement learning of policy networks) >> 내가 지들 끼리 둔 거라고 말한 거

기보에만 최적화 되는 한계를 극복하기 위해 반복적인 자가 대국으로 정책망의 성능을 개선한다. 무작위로 선정된 신경망 사이의 자가 대국을 통해 학습하며, 승리하면 보상을 받고(+1) 패하면 보상을 잃는(-1) 방식으로 진행한다. 이 과정을 거쳐 강화학습 이전의 정책망과 비교해 80% 더 많은 대국에서 이길 수 있게 되었다.

 

가치망 강화학습 (Reinforcement learning of value networks) >> 내가 시뮬레이션 한 거라고 말한 거

결과 예측을 강화하는 단계로 정책망의 자가 대국으로 확보된 기보를 바탕으로 승률을 파악하고 가중치를 부여해 다음 대국을 진행하는 방식으로 가차망의 분석 능력을 향상시킨다.

 

2016년 이세돌 9단과 대국한 알파고는 12개의 신경망 계층을 활용해 지도학습과 이를 통해 가장 합리적인 수를 도출하는 강화학습을 병행하였고, 2017년 커제 9단과 대국한 알파고 마스터는 신경망 계층을 40개로 늘려 지도학습 없이 강화학습만으로도 기력을 향상시킬 수 있도록 진화했다. 딥 블루는 특정 목적을 위해 만들어진 인공지능이라는 한계가 있었지만, 알파고의 알고리즘은 여러 분야에 범용으로 활용 할 수 있다는 강점이 있다.

 

Drop here!

[레벨:15]다음

2021.07.23 (04:18:08)

알파고 제로처럼 강화학습만으로 이루어진 언어ai가 가능하다면 엄청난 혁명이겠죠. 비록 그게 뭘 의미하는지 아직 알 수 없지만요.

프로필 이미지 [레벨:13]kilian

2021.07.23 (05:06:09)

List of Articles
No. 제목 글쓴이 날짜sort 조회
공지 구조론 매월 1만원 정기 후원 회원 모집 image 29 오리 2020-06-05 79825
2086 진보와 보수 1 레인3 2023-05-22 5966
2085 장안생활 격주 목요모임 image 오리 2023-05-10 6288
2084 仁流 image 덴마크달마 2023-05-10 6333
2083 사토시 나카모토 추정 인물 image 2 오리 2023-05-09 6357
2082 학폭예방법의 가장 큰 문제는 관계를 배울 기회를 실종시켜 버렸다는 점 이상우 2023-05-08 5878
2081 감자 보급과 이중의 역설 SimplyRed 2023-05-06 5643
2080 1980년대, 2000년대의 2 사이클 dksnow 2023-05-06 5064
2079 장안생활 격주 목요모임 image 오리 2023-04-26 5086
2078 구글 바드 테스트 image 1 chow 2023-04-21 5072
2077 장안생활 격주 목요모임 image 김동렬 2023-04-13 4774
2076 구조론, 내시균형과 컴퓨터게임 SimplyRed 2023-04-11 4978
2075 ChatGPT의 훈련 방법 image chow 2023-03-24 6287
2074 장안생활 격주 목요모임 image 오리 2023-03-22 5234
2073 노블 vs 도킨스 1 오리 2023-03-18 5514
2072 대중음악과 발성의 구조 SimplyRed 2023-03-17 4605
2071 빙ai에게 구조론에 대해 물어봤습니다 image 1 오민규 2023-03-15 4610
2070 드라마 '더 글로리'와 ‘정순신 사태’가 교사에게 주는 의미는 image 2 이상우 2023-03-13 4624
2069 구조론 데이터를 통한 ChatGPT 테스트 1 오리 2023-03-11 3993
2068 장안생활 격주 목요 모임 image 오리 2023-03-09 3081
2067 챗gpt와의 대화 33가지 image 1 아란도 2023-02-28 3425