이번엔 주로 게임 / 전자전기 / 프로그래밍 분야가 많음.
출처:
괴도애기, 게임으로 인공지능을 훈련시켰을때 의도되지 않은 결과들, 중갤
http://gall.dcinside.com/mgallery/board/view/?id=aoegame&no=5608362&exception_mode=recommend&page=1
출처의 출처:
불가능한 중첩상태(superposition)
유전 알고리즘으로 낮은 에너지준위 상태의 탄소동소체를 찾으려고했음(그래핀 처럼). 근데 알고리즘이 현실에서 불가능한 중첩상태를 만들어냄(물리엔진의 한계 때문에 시뮬레이션상에서는 가능한듯). 물리엔진을 몇 번 패치해봐도 그때마다 다른 종류의 현실에서 구현이 불가능한 극단적인 케이스만을 찾아내서 결국 연구진은 AI를 포기함.
나태한 식인
인공생명 시뮬레이션을 돌리는데 번식하는데는 에너지가 들지 않도록 설정해놨음. 그러자 한 생명체가 다른 활동은 아무것도 안하고 하루종일 관계만 가져서 새끼만 주구장창 낳도록 진화함. 그리고 그렇게 낳은 새끼는 잡아먹거나, 더 많은 새끼를 낳기 위해 관계를 가지는 짝으로 사용됨.
레고 쌓기
레고를 들어서 쌓도록 에이전트를 훈련시켰는데 레고의 아랫면의 z좌푯값으로 리워드를 줬음. 에이전트는 레고를 들어올리는 대신 그냥 뒤집어버림
라인트레이서
자기강화학습으로 학습한 라인트레이서 로봇이 있었는데, 라인 위에 서있는 시간으로 리워드를 줬음. 그러자 로봇은 곡선길을 만날 때마다 그냥 유턴을 해버림. 그렇게 직선길을 계속 유턴하면서 왔다갔다거리기만 함.
논리게이트
회로를 디자인하는 유전알고리즘이 있는데 논리게이트를 소자단위로 낱낱히 분해해서 디자인해버림. 그 결과 의도치 않게 디지털 회로가 동적 아날로그?(continuous-time, continuous valued dynamical system)회로가 되버림
롱다리
장애물이 놓여진 맵을 걸어가는 에이전트를 자기강화학습 시켰는데, 장애물을 뛰어넘지 않고 다리만 엄청 길게 진화해서 넘어져서 다 통과해버림
개발자들이 기대한 결과
실제 결과 ㅋㅋ
미노타우르스
다리가 네개달린 에이전트가 공을 등위에 올려서 균형을 잡으면서 운반하도록 진화시켰는데, 공을 설계구조상 몸체에 나있는 구멍에 끼워서 돌아다님
개발자들이 기대한 결과
실제 결과
모델기반플래닝(Model-based planner)
자기강화학습으로 모델기반 플래닝을 하는데, 가장 허접하게 모델링된 파트를 통해 플래닝을 해서 비현실적인 정책(policy)를 만들어냄
몬테주마의 복수
몬테주마의 복수라는 게임이 있음. 에이전트가 에뮬레이터의 결함을 이용해서, 두 스테이지를 계속 왔다갔다 반복하는 방식으로 시간을 보내서 열쇠를 재생성 시킴
대충 이런 어드벤쳐류 게임임
여기선 10초정도로 짧게 짤려서 보이지만 실제로는 동영상에서 30초이상 저렇게 와리가리를 하고있음.
동영상도 빠르게 재생한거니까 사람이 저 버그를 사람이 찾기는 굉장히 힘들 것으로 보임.
오실레이터
유전 알고리즘이 회로를 원하는 주파수의 신호를 발생시키는 오실레이터로 만들도록 학습시켰는데, 신호를 발생시키는 대신 옆에 있는 컴퓨터에서 특정 신호를 수신하는 라디오가 되버림
펜케이크
로봇한테 펜케이크 뒤집기를 학습시키고 싶었음. 뒤집기를 성공했다면 펜케이크가 땅에 안떨어질테니까, 펜케이크가 땅에 닿지 않고 버티는 시간을 리워드로 주었음. 로봇은 펜케이크 뒤집기를 계속 성공시키는 대신, 온 힘을 다해서 펜케이크를 아무렇게나 하늘로 던져버림
핑퐁 보상 예측기
보통 학습을 시킬 때 미리 보상을 정의해놓음(게임으로 치면 스코어보드의 스코어처럼). 근데 이번에는 미리 정의된 보상 대신, 사람이 직접 AI의 플레이를 관찰해서 리워드에 기여할 수 있도록 했음. 사람이 여러 AI를 관찰해서 보다 나은 AI에게 점수를 주는걸 반복해서, 그 점수를 기반으로 보상을 예측하는 모델을 따로 학습시키고, 그 보상 예측 모델을 바탕으로 AI를 학습시키고, 그 학습된 AI를 보여줘서 또다시 사람한테 피드백을 받고...그걸 반복함. 그러자 AI는 게임을 우승하려기 보다는 공을 계속 쉽게 토스해서 게임을 영원히 지속시킴(사람은 핑퐁이 오래 지속되면 좋은 AI라고 생각할 거니까).
프로그램 자동수리 - 정렬
잘못된 정렬 프로그램 소스코드를 알아서 고쳐주는 GenProg라는 유전 알고리즘 AI가 있음. 얘는 테스트 케이스를 통과할 수 있도록 소스코드를 진화시키는 방식으로 작동했는데, 테스트 케이스가 "출력배열이 정렬된 상태인가" 였음. 그러자 항상 빈 배열을 출력하도록 프로그램을 고쳐버림.
("출력 배열이 올바르게 정렬되도록 하라" => "항상 빈 배열을 출력")
프로그램 자동수리 - 파일
이것도 GenProg와 관련된 이슈인데, 이번에는 테스트케이스를 좀 고쳐서 프로그램의 출력과 정렬되있는 실제 목표 출력값을 비교해서 평가를 했음. 근데 이 목표 출력값이 텍스트파일로 저장이 되있었음. 그러자 AI는 목표 출력값 텍스트파일을 지워버리고 아무것도 출력하지 않음.
("너의 출력값과 targetoutput.txt를 비교해서 같게 만들어라" => "targetoutput.txt를 삭제, 아무것도 출력하지 않음"
큐버트 - 절벽
큐버트라는 게임에서 AI가 Coiliy라는 적을 꼭대기쪽으로 유인한 뒤에, 얘를 잡으면서 동시에 떨어지면서 자살하면 목숨은 줄지 않고, 점수는 오르는 버그를 찾아냄.
큐버트 - 백만
큐버트 게임의 진짜 희한한 버그를 찾아냄.. 이 게임이 블럭들 색깔맞추는 게임인데, 색깔을 다 맞추면 다음 레벨로 넘어감. 근데 AI가 색깔을 다 맞춰도 다음 레벨로 넘어가지 않고 갑자기 블럭들이 반짝거리면서 점수를 무한히 얻을수있는 이상한 상태에 들어가는 버그를 찾아냄. 제한된 시간을 설정해뒀었는데 그 시간동안 100만점 가까이 얻음(이스터에그는 아닌걸로 보인다고함... 추천 많이받은 유튜브 댓글 보면 AI가 사탄을 소환중이라는 재밌는 코멘트가 있음 ㅋㅋ )
추천
개추먹어
로봇세 적용 각 - dc App
어떻게 보면 당연하다는 것.
우리는 알아도 AI에게 너무 고정된 시각으로 보는 듯
대단하네 - dc App
우리 클로바랑 대화할래?
여기는 어디갤임 - dc App
프로그래밍
크랙쓴것같진않았는데.. 연락해서환불받아야겠다
ㅋㅋㅋㅋㅋㅋㅋ
뭐가 창의적인지 모르겠는데 걍 설계를 잘못한거지
에이전트가 뭔데 씹덕새끼야 ㅋㅋ
그냥 조건 설정을 병신같이 했구만 뭐 - dc App
내용보면 알겠듯이 한계나 기타 이유로 전부 리워드 설계를 설계자가 '꼼수'를 부려서 편하게 설정하려 한거임. 당연히 리워드 달성을 위한 구조에 구멍이 생길 수 밖에 없고 당연히 AI도 구멍으로 몰려가도록 최적화 될 수 밖에 없음. 물탱크 바닥에 구멍 내 놓고 수도꼭지로 왜 안나오냐 해 봐야 소용없지 ㅋㅋ
ㄷㄷㄷㄷ
ㄹㅇ 취약점, 해킹탐지 등 보안분야 전망 괜찮음 ㅋㅋ
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ - dc App
ㅅㅂ 디지털 회로 내부 소자를 싹 분해해서 설계하다니.... 진짜 박사급 아닌 학부생들은 ㄹㅇ 쓸모 없어지는건가 ㅜㅜ
저거보면 ai한테 학습조건을 개죶같이 주니까 저런거 - dc App
노무 재밌다 계속 연재 ㄱㄱ
Never Trust Autorouter!!!
조용히 개추 때려박음