중갤에서 인공지능과 관련된 재밌는 글을 봤음.


괴도애기, 게임으로 인공지능을 훈련시켰을때 의도되지 않은 결과들

http://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=5608362&exception_mode=recommend&page=1


위 글의 출처는 바로 여기인데, 꽤 많은 리스트 중에 재밌는것 몇개만 뽑아온거 같음

https://docs.google.com/spreadsheets/u/1/d/e/2PACX-1vRPiprOaC3HsCf5Tuum8bRfzYUiKLRqJmbOoC-32JorNdfyTiRRsR7Ea5eWtvsWzuxo8bjOxCG84dAg/pubhtml


근데 중겔에서 뽑은것 말고도 내가보기에 흥미로운게 많은거 같아서 여기다 정리를 하기로 했음.


본인은 아직 아마추어라 틀린정보가 있을수도있음... 혹시 찾으면 정정해주길 바람.



비행기 착륙

비행기 착륙 알고리즘이 물리엔진 상에서 엄청 큰 힘을 발생시켜서 오버플로 에러를 일으키도록 진화함. 그 결과 측정값이 0으로 평가되서 완벽한 점수를 받음.


자전거

에이전트가 자전거를 조종해서 넘어뜨리지 않고 목표지점을 향해 나아가면 보상을 주도록 했음(하지만 목표지점에서 멀어지는걸 처벌하지는 않았음). 그러자 에이전트는 목표지점 주위에서 물리적으로 안정된 원을 그리며 영원히 빙긍빙글 돔.


블럭 옮기기

로봇팔이 테이블 위의 블럭을 목표지점으로 옮기도록 학습을 시켰는데, 아얘 테이블자체를 옮김


보트 경주

보트 경주 게임이 있는데, 레이스를 빨리 끝낼수록, 중간중간 리스폰되는 아이템을 먹을수록 점수를 얻을 수 있었음. 에이전트를 학습시키자 경주를 끝낼생각을 하지 않고 계속 리스폰되는 아이템을 빙글빙글 원을 그리면서 먹기만함




천장에 붙이기

어떤 생명체가 천장에 붙어있게 만들기 위해 실행하는 동안 생명체의 평균 높이를 리워드로 주고 유전 알고리즘으로 학습시켰음. 알고리즘은 천장에 붙는 대신 물리엔진의 버그를 찾아내서 천장 밖으로 빠져나감.




스테가노그래피(Steganography)

이미지의 장르를 변환시키는(초상화<->카툰렌더링 처럼) CycleGAN 모델이 있었는데, Cycle GAN은 두개의 뉴럴넷 A와 B가 있고, 둘이 경쟁적으로 뉴럴넷 A는 장르 X를 장르 Y로, 뉴럴넷 B는 장르 Y를 장르 X로 변형시키는 방식으로 학습함. 여기서 리워드는 뉴럴넷 A가 X를 Y로 변환하고, 뉴럴넷 B가 다시 Y를 X'로 변환했을 때, X와 X'이 얼마나 정확하게 재구성됬는지에 대해 리워드를 줬음. 근데 모델이 장르를 변환시키기 위해 이미지의 의미(시멘틱)을 학습하는 대신, 이미지를 변환시킬 때 평가에 영향을 거의 주지않는 정보를 끼워넣어서(steganographically) 서로한테 전달했음(스누라이프에서 게시글 배경에 투명한 문자를 넣어서 퍼가면 출처를 알수있게 조작했었잖아. 그거랑 비슷함)



데이타 순서 패턴

뉴럴넷에 식용 버섯과 독버섯 이미지를 교대로 보여주면서 둘을 구분하도록 학습시켰는데, 버섯 이미지는 학습안하고 교대로 보여주는 패턴을 학습함


Eurisko - 이름써넣기

Eurisko라는 유전 알고리즘 해상전투 게임 AI가 있는데, 휴리스틱을 자연선택시켜서 점점 진화시킴. 근데 휴리스틱이 게임을 어떻게 이길지를 배우지 않고, 휴리스틱 평가방식의 맹점을 이용해서 학습하는 경우가 생김(설명하기 좀 복잡함.. 굳이 설명하자면.. 휴리스틱 자연선택 방식이 어떻냐면 일단 여러 게임 컨셉들(ex 무기 A는 가벼운 무기다, 무기 A 공격력은 X다)이 있으면 휴리스틱은 그걸 어떻게 조합할지 결정하고(ex 장소 P에 가벼운 무기를 둔다 등등), 그래서 휴리스틱끼리 붙여서 승리한 휴리스틱이 썼던 컨셉들(ex 가벼운 무기들)의 가치점수를 높임. 그래서 휴리스틱이 조합했던 컨셉들의 가치의 총 합이 높으면 대체로 괜찮은 휴리스틱인거임. 근데 휴리스틱이 어떤 컨셉을 조합했다는걸 표시하기위해 컨셉의 MyCreator 란에 자기 이름(휴리스틱마다 이름이 있음)을 써넣는데, 어떤 야비한 휴리스틱이 컨셉들을 어떻게 조합할지를 배우지 않고, 그냥 가장 높은 가치를 가지는 컨셉에 자기 이름을 써넣기만 하는 방법을 배운거임)


Eurisko - 함대

Eurisko 해전 게임 AI가 대회에서 사람을 상대로 2년연속 이겼는데, 게임 규칙의 맹점을 이용해서 이겨왔음(예를들면 제한된 자원을 가지고 배를 구성해서 만들어야되는데, AI는 무기만 달려있고 움직이지도 않고 방어장갑도 없는(그래서 엄청 싼) 조그만 배를 엄청 많이 만들어서 편법적으로 이김. 17년도에 세종대 스타AI대회에서 AI가 보여준 수십마리 뮤탈컨트롤 생각하면 될듯)


생물체진화 - 파닥거리기

가상생물 진화 프로그램에서 어떤 가상생물이 충돌판별함수의 버그를 이용해서 자기 몸 부위들을 파닥거리면서 부딪혀서 여분의 에너지를 얻음


생물체진화 - 넘어지기

가상생물이 빠른 속도로 움직이는 방법을 배우도록 진화시켰는데, 아예 움직이지 않고 엄청 길게 자라난 뒤에 그냥 넘어지는 방식으로 최고속도를 냈음




생물체진화 - 바닥 충돌

가상생물이 물리 엔진 충돌감지를 피해서 타임스텝 중간에 바닥을 통과하려고함. 그 결과 바닥에서 반발력을 받아서 여분의 에너지를 얻음




생물체진화 - 장대높이뛰기

가상생물을 높이 점프시키기 위해 (가장 땅에 가까이 있던 부위의 최대 높이, 사람으로 치면 점프했을 때 발의 높이)로 리워드를 줬음. 그러자 길고 얇은 장대모양 다리를 만들어서 빙글 돌아버림




생물체진화 - 찡긋거리기

가상생물이 자꾸 몸을 찡긋거려서 물리엔진의 시뮬레이션 에러를 누적시켜서 비현실적인 속도로 움직임



붙잡기

로봇팔을 집게부위를 쓰지 않고 상자를 움직이게 학습하려고 했음. 근데 로봇팔이 교묘하게 박스를 쳐서 집게를 강제로 열리게 만든 뒤 박스를 붙잡음.








흠좀무..


인공지능한테 인류를 행복하게 해라고 명령을 내리면


타노스가 되버리는 시나리오 있잖아.. 그렇게 허무맹랑한 시나리오는 아닌가봐..