Untitled Document
   
> 담론방 > 자유게시판


 
작성일 : 22-08-09 16:57
인공지능 험난한 여정(1)
 글쓴이 : 빨간벽돌
 


지난 2016년 알파고와 이세돌의 대국을 시작으로, 개발자가 아닌 일반인들도 강화학습이나 인공지능에 대해 관심을 가지는 경우가 많아졌다. 이후 알파고 외에도 <스타크래프트2>의 알파스타, <도타 2>의 'OpenAI' 등과 같은 게임이 인공지능 테스트의 장으로 떠올랐다.


옥찬호 프로그래머는 발표 시작 전에 이 프로젝트는 개인 연구로, 블리자드의 후원이나 보증이 없다고 밝혔다


​# 왜 하스스톤을 선택했나? 

 

옥찬호 프로그래머는 <하스스톤>에서 다양한 덱을 짜는 것은 좋아한다. 해당 덱이 의도에 맞게 작동하는지 테스트하기 위해 컴퓨터와 자주 대전한다고 한다. 현재 하스스톤의 인공지능은 대체로 사람처럼 행동하는 편이지만, 가끔 이상한 행동을 하는 경우가 많았다.

 

예를 들어 내 턴이 돌아올 때 필드의 하수인을 모두 제거하는 '종말의 예언자' 하수인을 낸 상태로 적 하수인을 모두 얼려서 공격할 수 없는 상황을 생각해보자. 이 때 컴퓨터는 제압기가 없다면 필드 위의 하수인을 모두 포기하는 것이 합리적이다. 하지만 컴퓨터는 이 상황에서 필드 위 하수인의 능력치를 강화하는 카드를 사용해 결과적으로 무의미한 손해를 보게 되는 경우도 있다.

 

옥찬호 프로그래머는 '알파고', '알파스타'에 감명받아 하스스톤 인공지능의 이런 '멍청한' 행동을 줄이고 '잘하는' 컴퓨터를 만들어보고 싶어서 작업을 시작했다고 설명했다.

 

내 턴이 돌아올 때 필드 하수인을 모두 제거하는 '종말의 예언자'
다음 턴에 죽을 하수인에 '버프 카드'를 사용하는 인공지능

 

# 천 리 길도 한걸음부터…우선 하스스톤을 만들자!

 

게임에 강화학습을 적용하려면 크게 세가지 방법이 있다. 우선 '알파스타'처럼 게임사에서 제공받은 API(Application Programing Interpace)를 활용하는 방법이 있다. 이를 이용하면 프로그래밍 언어가 제공하는 기능을 사용할 수 있다. 하지만 <하스스톤>의 경우 이것이 공개되지 않아 이용할 수 없는 방법이다.

 

둘째는 게임을 후킹(Hooking, 텍스트 코드를 중간에 낚아채는 방식)해 알아낸 정보를 이용하는 것인데, 서비스 중인 게임에 영향을 주는 행위는 불법이므로, 경찰서에 불려갈 있어 포기했다. 

 

마지막 방법은 가장 시간이 많이 걸리지만 확실한 방법이다. 바로 게임을 구현해보는 것이다. 옥찬호 프로그래머는 '맨 땅에 헤딩하는' 느낌으로 프로젝트를 시작했다고 전했다.

 

<하스스톤>의 게임 요소를 파악하는 과정부터 시작했다. 이 게임은 크게 ▲ 전장 ​ 영웅 ▲ 손패 ​ 영웅 능력 ​ 덱 ​묘지​의 여섯가지 구성 요소로 나눌 수 있고, 각 항목을 파고들면 또 다시 구현해야하는 요소들이 나온다. 

 

하스스톤은 크게 6가지의 구성 요소로 파악할 수 있다.

 

# 역시 카드 게임에서 가장 구현하기 어려운 것은 '카드'

 

현재 하스스톤에서 유저가 수집할 수 있는 카드는 총 1926장이다. 게다가 수집할 수는 없지만 게임 플레이 과정에서 사용되는 카드 등을 모두 합치면 총 6086장이라고 한다. 카드 개수도 많지만 '전투의 함성', '죽음의 메아리'나 고유 효과 같은 카드의 효과도 제각각이라 구현하는데 시간이 정말 많이 걸린다. 

 

옥찬호 프로그래머는 이 과정에서 '하스스톤제이슨(HearthstoneJSON), 파이선하스스톤(Python-Hearthstone), 베터이넘(Better-Enums) 등 사이트의 도움을 받았다고 전했다. 해당 사이트에서 개발에 필요한, 하스스톤 카드의 코드를 일정 부분 구현한 자료나 카드 데이터의 열거체 타입 등을 얻을 수있다는 것이다.

 

또한 순수한 카드 개체 값을 나타내는 '카드'와 인게임 '하수인'과 같이 플레이에 직접적으로 사용되는, 강화가 가능한 개체인 '엔티티'도 구별해줘야 한다. '엔티티'의 가장 쉬운 예는 카드를 필드에 냈을 때 등장하는 하수인이다. 이후 게임 플레이 흐름을 16가지 단계로 나눠 구현해주면 강화학습 인공지능을 만들 <하스스톤>을 만들 수 있다.

 

하스스톤의 게임 과정은 16단계로 나눌 수 있다.

 

 

# 강화학습을 적용할 때 알아둬야 할 하스스톤과 타 종목의 차이점

 

강화학습을 이해할 때, 아이가 첫 걸음을 떼는 과정을 생각하면 편하다. 아기는 걷는 방법을 배운 적이 없지만, 수 많은 시행착오를 거쳐 우연히 걷게 된다. 자신이 하고 있는 행동과 걷는다는 보상 사이의 상관관계를 파악함으로써 더 잘 걷게 되는 것이다. 강화학습을 하는 에이전트도, 보상을 통해 어떤 방향을 향해 가야하는지 알 수 있다.

 

그렇다면 <하스스톤>은 강화학습 인공지능이 활약했던 종목인 바둑, <스타크래프트 2>와 어떤 차이가 있을까?

 

우선 바둑은 시야 제한이 없다. 바둑판 위의 모든 정보가 유저에게 공개된다. 또한 턴제로 진행하며 제한시간 안에만 자신의 수를 결정하면 된다. 반면 <스타크래프트 2>는 실시간 전략 게임으로 바둑보다 더 빠른 의사결정이 필요하다. 또한 '유닛의 시야 범위'라는 시야 제한이 있어 정찰을 통해 상대의 상황을 추론해 전략을 결정해야 한다.

 

알파고가 플레이하는 종목인 바둑의 특성

<하스스톤>은 카드 게임으로 가려진 상대방의 정보는 물론이고, 나 자신의 정보도 완전히 알 수는 없다는 특징이 있다. 유저가 '오른쪽 메타', '기도 메타'라고 부르는 '카드 드로우' 영역뿐만 아니라 이미 들고 있는 카드를 낼 때도 무작위성이 작용하는 경우가 많다. 이런 특징을 기반으로 하스스톤에 강화학습을 적용하려는 연구가 계속 나오고 있다.

 

<하스스톤> 플레이어라면 프로 레벨이라 할지라도 기도를 피할 수는 없다 

# <하스스톤> 강화학습 환경 조성하기

 

이렇게 만든 게임에서 AI가 게임을 실제로 펼치게 만들기 위해서는 강화학습 환경을 조성해줘야한다. AI가 행동을 하게하는 통로와 AI가 선택한 값을 게임에 전달하는 과정을 ​정해줘야 하는 것이다.

 

이를 위해 게임을 플레이하는 도중 알 수 있는 모든 정보를 데이터화 하는 과정도 거친다. 상대방 손, 덱 카드 개수, 내 덱 카드 개수를 비롯해서 게임 내 모든 카드의 비용, 공격력, 방어력, 심지어는 각종 효과도 데이터화 해서 인공지능에게 전달한다.

 

이후 인공지능이 전달받은 게임의 상황을 고려해 결정을 내릴 때 파이썬 기반의 'RosettaTorch'라는 프로그램을 활용하게 된다.​ 

 

옥찬호 프로그래머는 발표 말미에 "프로젝트를 상당 부분 완료한 상태로, 조만간 이를 활용한 예제를 발표할 예정"이라며 "내년에는 완성된 프로젝트를 바탕으로 한 번 더 강의를 진행할 수 있었으면 좋겠다"라고 말했다. 

 


혁명은 증산상제님의 갑옷을 입고 행하는 성사재인이다
※ 밀알가입은 hmwiwon@gmail.com (개인신상은 철저히 보호됩니다)
※ 군자금계좌: 농협 356-0719-4623-83안정주
※ 통합경전계좌 : 국민은행 901-6767-9263노영균sjm5505@hanmail.net
※ 투자금 계좌: 하나은행 654-910335-99107 안정주

빨간벽돌 22-08-09 16:57
 
지난 2016년 알파고와 이세돌의 대국을 시작으로, 개발자가 아닌 일반인들도 강화학습이나 인공지능에 대해 관심을 가지는 경우가 많아졌다. 이후 알파고 외에도 <스타크래프트2>의 알파스타, <도타 2>의 'OpenAI' 등과 같은 게임이 인공지능 테스트의 장으로 떠올랐다.
빨간벽돌 22-08-09 16:58
 
옥찬호 프로그래머는 '알파고', '알파스타'에 감명받아 하스스톤 인공지능의 이런 '멍청한' 행동을 줄이고 '잘하는' 컴퓨터를 만들어보고 싶어서 작업을 시작했다고 설명했다.
빨간벽돌 22-08-09 16:58
 
아기는 걷는 방법을 배운 적이 없지만, 수 많은 시행착오를 거쳐 우연히 걷게 된다. 자신이 하고 있는 행동과 걷는다는 보상 사이의 상관관계를 파악함으로써 더 잘 걷게 되는 것이다. 강화학습을 하는 에이전트도, 보상을 통해 어떤 방향을 향해 가야하는지 알 수 있다.
빨간벽돌 22-08-09 16:59
 
우선 바둑은 시야 제한이 없다. 바둑판 위의 모든 정보가 유저에게 공개된다. 또한 턴제로 진행하며 제한시간 안에만 자신의 수를 결정하면 된다. 반면 <스타크래프트 2>는 실시간 전략 게임으로 바둑보다 더 빠른 의사결정이 필요하다.
빨간벽돌 22-08-09 17:00
 
<하스스톤>은 카드 게임으로 가려진 상대방의 정보는 물론이고, 나 자신의 정보도 완전히 알 수는 없다는 특징이 있다. 유저가 '오른쪽 메타', '기도 메타'라고 부르는 '카드 드로우' 영역뿐만 아니라 이미 들고 있는 카드를 낼 때도 무작위성이 작용하는 경우가 많다.
겨울 22-08-16 09:21
 
옥찬호 프로그래머는 <하스스톤>에서 다양한 덱을 짜는 것은 좋아한다. 해당 덱이 의도에 맞게 작동하는지 테스트하기 위해 컴퓨터와 자주 대전한다고 한다.
겨울 22-08-16 09:22
 
게임에 강화학습을 적용하려면 크게 세가지 방법이 있다. 우선 '알파스타'처럼 게임사에서 제공받은 API(Application Programing Interpace)를 활용하는 방법이 있다.
겨울 22-08-16 09:23
 
옥찬호 프로그래머는 '맨 땅에 헤딩하는' 느낌으로 프로젝트를 시작했다고 전했다.
겨울 22-08-16 09:24
 
강화학습을 이해할 때, 아이가 첫 걸음을 떼는 과정을 생각하면 편하다. 아기는 걷는 방법을 배운 적이 없지만, 수 많은 시행착오를 거쳐 우연히 걷게 된다.
겨울 22-08-16 09:25
 
옥찬호 프로그래머는 발표 말미에 "프로젝트를 상당 부분 완료한 상태로, 조만간 이를 활용한 예제를 발표할 예정"이라며 "내년에는 완성된 프로젝트를 바탕으로 한 번 더 강의를 진행할 수 있었으면 좋겠다"라고 말했다.
산백초 22-08-17 09:50
 
게임을 후킹(Hooking, 텍스트 코드를 중간에 낚아채는 방식)해 알아낸 정보를 이용하는 것인데, 서비스 중인 게임에 영향을 주는 행위는 불법이므로, 경찰서에 불려갈 있어 포기했다.
산백초 22-08-17 09:51
 
카드 개수도 많지만 '전투의 함성', '죽음의 메아리'나 고유 효과 같은 카드의 효과도 제각각이라 구현하는데 시간이 정말 많이 걸린다.
산백초 22-08-17 09:51
 
'엔티티'의 가장 쉬운 예는 카드를 필드에 냈을 때 등장하는 하수인이다. 이후 게임 플레이 흐름을 16가지 단계로 나눠 구현해주면 강화학습 인공지능을 만들 <하스스톤>을 만들 수 있다.
산백초 22-08-17 09:52
 
강화학습을 하는 에이전트도, 보상을 통해 어떤 방향을 향해 가야하는지 알 수 있다.
산백초 22-08-17 09:52
 
이후 인공지능이 전달받은 게임의 상황을 고려해 결정을 내릴 때 파이썬 기반의 'RosettaTorch'라는 프로그램을 활용하게 된다.​
늘배움 22-08-17 17:47
 
현재 하스스톤의 인공지능은 대체로 사람처럼 행동하는 편이지만, 가끔 이상한 행동을 하는 경우가 많았다.
늘배움 22-08-17 17:47
 
바로 게임을 구현해보는 것이다. 옥찬호 프로그래머는 '맨 땅에 헤딩하는' 느낌으로 프로젝트를 시작했다고 전했다.
늘배움 22-08-17 17:47
 
또한 순수한 카드 개체 값을 나타내는 '카드'와 인게임 '하수인'과 같이 플레이에 직접적으로 사용되는, 강화가 가능한 개체인 '엔티티'도 구별해줘야 한다.
늘배움 22-08-17 17:48
 
이후 게임 플레이 흐름을 16가지 단계로 나눠 구현해주면 강화학습 인공지능을 만들 <하스스톤>을 만들 수 있다.
늘배움 22-08-17 17:49
 
상대방 손, 덱 카드 개수, 내 덱 카드 개수를 비롯해서 게임 내 모든 카드의 비용, 공격력, 방어력, 심지어는 각종 효과도 데이터화 해서 인공지능에게 전달한다.
 
 

Total 9,905
번호 제   목 글쓴이 날짜
공지 1• 3 • 5 프로젝트 통장을 드디어 공개합니다. (70) 혁명위원회 09-12
공지 진법일기 70- 1.3.5 프로젝트가 의미하는것은 무엇인가? (61) 이순신 09-19
공지 혁명을 하면서~ <아테네의 지성! 아스파시아와 페리클레스> (12) 현포 07-31
공지 히틀러, 시진핑, 그리고 트럼프 (15) FirstStep 06-23
공지 <한 지경 넘어야 하리니> (21) 고미기 07-28
공지 트럼프, 폼페이오, 볼턴을 다루는 방법들 (32) 봉평메밀꽃 07-18
공지 판소리의 대표적 유파로 '동편제'와 '서편제'가 있습니다. (27) 흰두루미 06-20
공지 소가 나간다3 <결結> (24) 아사달 03-20
9872 노벨상 밥 먹듯 타던 일본의 미래가 어두운 이유 (18) 빨간벽돌 09-26
9871 게코노믹스 - 거대시장을 개척하라 (3조원에 달하는 일본 무알콜 시장) (17) 빨간벽돌 09-13
9870 최수철 칼럼 (할아버지의 눈물) (21) 사막여우 09-07
9869 로드러너(땅 뻐꾸기) (13) 정수리헬기장 09-06
9868 최수철 칼럼 (독일과 한국의 처참한 비교) (20) 사막여우 09-01
9867 실패와 쇼크의 30년(헤이세이 일본의 잃어버린 30년) (20) 하얀민들레 08-31
9866 인공지능 험난한 여정(2) (21) 빨간벽돌 08-30
9865 포노사피엔스 (Phono Sapiens) (20) 빨간벽돌 08-25
9864 광고계와 현실세계 휘어잡는 가상인간 (20) 빨간벽돌 08-18
9863 선택할 자유 (20) 하얀민들레 08-16
9862 인공지능 험난한 여정(1) (20) 빨간벽돌 08-09
9861 클라우드 국가가 온다. (22) 하얀민들레 08-04
9860 호모이코노미쿠스 (18) 하얀민들레 08-03
9859 이국종 교수를 떠나게 만든 대한민국 현실 (13) 빨간벽돌 07-25
9858 아! 홍콩 3년만에 모든 것을 무너뜨리다. (19) 빨간벽돌 06-30
9857 마음의 법칙 (19) 하얀민들레 06-17
9856 악인의 탄생 (18) 하얀민들레 06-09
9855 선생님과 아버지 (12) 빨간벽돌 05-02
9854 뻐꾸기 (8) 정수리헬기장 04-29
9853 뱀잡이수리 (6) 정수리헬기장 04-16
9852 한글이긴 한데.. (7) 빨간벽돌 04-08
9851 그러니까 당신도 살아 (20) 하얀민들레 04-08
9850 전쟁은 여자의 얼굴을 하지 않았다. (14) 하얀민들레 03-31
9849 민스크 협정과 우크라이나 침공 (21) FirstStep 03-29
9848 "좋은 의사보다 좋은 상사가 건강에 더 중요" (18) FirstStep 03-20
9847 진인(眞人)이 나와서 포교할 때 (12) 현포 03-13
9846 찰리멍거의 말들 (26) 하얀민들레 03-10
9845 요즘애들 (18) 하얀민들레 02-23
9844 [퍼온글] 긍정적 동료를 통한 긍정적 Spill-over 효과 Vs. 부정적 동료를 통한 부정적 Ripple effect (19) FirstStep 01-29
9843 [선우정 칼럼] 남한 땅 팔면 일본 열도 살 수 있게 해준 文 대통령 (20) 빨간벽돌 01-07
9842 개복치 (10) 정수리헬기장 12-31
9841 한 해를 다시 보내며 (19) FirstStep 12-31
9840 은신처에서 보낸 날들 (20) 하얀민들레 12-28
 1  2  3  4  5  6  7  8  9  10