안녕하십니까? 얼마전에 가입한 사지방컴입니다. 사지방 '현역' 개발자로써 활동하고 있습니다. 본 카테고리가 정보'공유'라고 되어 있길레 '공유'하기 위하여 글 올려봅니다.
(프로그램 다운로드 링크 N드라이브)
개요
본 인공지능 프로그램은 인공지능 객체(Agent)가 모기를 피하며 보급품을 찾아 떠나는 내용의 프로그램입니다.
환경
파랑색 캡슐은 모기인 빨강색 캡슐을 피하여 보급품인 분홍색 상자를 찾아 먹어야 합니다. 보급품을 취식하면 보상값 1을 받고 모기한테 물리면 보상값 -1을 받는 환경입니다. 아무 보상도 받지 않다면 보상망에 의하여 보상값이 부여됩니다.
상태
전방좌우로 최대 16개의 레이저를 발사합니다. 측정된 거리의 역수에다 피격된 물체의 가중치를 곱한 값들의 배열로 정의된 상태가 입력됩니다. 모기는 -1, 보급품은 1, 다른 객체는 0.5, 빈 공간은 0.25로 했습니다.
행동
행동은 총 4가지입니다. 위,아래,왼쪽,오른쪽으로 가는 행동(Action)입니다.
학습방법
살아있을 때에는 현 정책망과 보상망을 학습하지 않고 행동을 취합니다. 그리고 경험 메모리에 상황을 저장합니다. 벽에 충돌하거나 모기한테 물리면 사망하게 됩니다. 사망하게 되면 살아 생전에 경험했던 것을 되세기며 신경망을 학습시켜 새로운 정책을 만들어내게 됩니다.
보상값을 받았다면 정책망에서는 오차신호가되고 보상망에서는 목표값이됩니다.
정책망 오차 신호 = (1 - 출력값2) * 보상값
보상망 오차 신호 = (1 - 출력값2) * (보상값 - 출력값)
개발환경
구름IDE를 이용하였으며 언어는 C#으로 라이브러리 없이 순수 깡코딩하여 개발하였습니다. 사용한 게임엔진은 유니티 5.6입니다. 개발기간은 혼자서 한달 걸렸습니다. 물론 이것만 만드는데 한달입니다. 여기에 사용한 기반기술들 및 코딩스킬 그리고 저만의 경험은 제외하고서 입니다.
맺음말
앞으로도 다른 인공지능 프로그램으로 자주 찾아뵙겠습니다. 이상 현역으로 복무하고 있는 사지방컴이었습니다.
와우~ 멋지네요 ㅎㅎ
신경망 강화학습인 것 같은데 아래 표시되는 숫자는 학습률인가요?
좋은 프로그램 잘 보았습니다~