"인공주능조"의 두 판 사이의 차이

cdc wiki
이동: 둘러보기, 검색
(시장상황에 대한 분석)
(개발 사업비 정산)
 
(같은 사용자의 중간 판 46개는 보이지 않습니다)
60번째 줄: 60번째 줄:
 
◇ Advanced Targeting and Lethality Automated System (ATLAS)<br>
 
◇ Advanced Targeting and Lethality Automated System (ATLAS)<br>
 
지상 전투차량이 데이터를 습득, 인식하고 인간보다 3배 빠르게 목표물에 다가가는 것을 목표로 하는 무기체계이다. 미군에서는 컴퓨터 비전과 인공지능/딥러닝을 발전시켜 향상된 센서와 처리 그리고 화재 제어 능력을 이 무기체계에 통합할 계획이다.<br><br>
 
지상 전투차량이 데이터를 습득, 인식하고 인간보다 3배 빠르게 목표물에 다가가는 것을 목표로 하는 무기체계이다. 미군에서는 컴퓨터 비전과 인공지능/딥러닝을 발전시켜 향상된 센서와 처리 그리고 화재 제어 능력을 이 무기체계에 통합할 계획이다.<br><br>
 
  
 
◇ AlphaGo<br>
 
◇ AlphaGo<br>
75번째 줄: 74번째 줄:
 
   
 
   
 
수중 자동항해 소형 잠수함이 자동 능동형으로써 잠수 및 부상이 자유롭고 주변 환경에 따라 자율적 항해하고 상업적이거나 군사적인 임무를 수행하도록 하여 자동 복귀하는 잠수함의 지능형 무인 수중 자동항해 시스템이다.<br><br>
 
수중 자동항해 소형 잠수함이 자동 능동형으로써 잠수 및 부상이 자유롭고 주변 환경에 따라 자율적 항해하고 상업적이거나 군사적인 임무를 수행하도록 하여 자동 복귀하는 잠수함의 지능형 무인 수중 자동항해 시스템이다.<br><br>
 
 
   
 
   
 
◇ 이동물체의 거리와 이동 방향을 제공하는 인공지능형 영상경비 시스템(KR100492148B1)<br>
 
◇ 이동물체의 거리와 이동 방향을 제공하는 인공지능형 영상경비 시스템(KR100492148B1)<br>
87번째 줄: 85번째 줄:
 
   
 
   
 
프로 바둑 기사를 이긴 최초의 컴퓨터 바둑 프로그램, 알파고에 사용된 특허이다. 바둑에 인공지능을 적용하여 자가학습을 할 수 있도록 만든 알고리즘이다.<br><br>
 
프로 바둑 기사를 이긴 최초의 컴퓨터 바둑 프로그램, 알파고에 사용된 특허이다. 바둑에 인공지능을 적용하여 자가학습을 할 수 있도록 만든 알고리즘이다.<br><br>
 
 
   
 
   
 
◇ 전술 개념을 이용한 알고리즘 아이디어 기술<br>
 
◇ 전술 개념을 이용한 알고리즘 아이디어 기술<br>
 
   
 
   
 
인공지능은 구체적인 기술구현이 없어도 아이디어만으로도 특허 출원이 가능하다. 그러므로 운용 중인 이지스 전투체계를 포함한 국내 개발 전투체계는 일부 기능(무장통제 및 할당 중심의 기술적 영역)에 우선하여 구현된 장비 운용 중심의 접근방식으로, 전술 개념을 추가하여 구체화한다.<br><br>
 
인공지능은 구체적인 기술구현이 없어도 아이디어만으로도 특허 출원이 가능하다. 그러므로 운용 중인 이지스 전투체계를 포함한 국내 개발 전투체계는 일부 기능(무장통제 및 할당 중심의 기술적 영역)에 우선하여 구현된 장비 운용 중심의 접근방식으로, 전술 개념을 추가하여 구체화한다.<br><br>
 
 
   
 
   
 
◇ 종래 기술대비 진보한 부분 특정<br>
 
◇ 종래 기술대비 진보한 부분 특정<br>
 
   
 
   
 
기술 개발 시에 Open source를 활용했다면 수정, 편집, 추가되는 부분을 특정하여 특허로 출원할 수 있으며 응용 방법을 특정하는 방법도 있다.<br><br>
 
기술 개발 시에 Open source를 활용했다면 수정, 편집, 추가되는 부분을 특정하여 특허로 출원할 수 있으며 응용 방법을 특정하는 방법도 있다.<br><br>
 
 
   
 
   
 
◇ Open source로 등록<br>
 
◇ Open source로 등록<br>
 
   
 
   
 
개발한 AI 기술을 Open source로 공개하여 시장 영향력을 확대하고 라이선스 사용을 명시하고 규정을 강화한다.<br><br>
 
개발한 AI 기술을 Open source로 공개하여 시장 영향력을 확대하고 라이선스 사용을 명시하고 규정을 강화한다.<br><br>
 
  
 
'''*기술 로드맵
 
'''*기술 로드맵
110번째 줄: 104번째 줄:
 
====시장상황에 대한 분석====
 
====시장상황에 대한 분석====
 
*경쟁제품 조사 비교
 
*경쟁제품 조사 비교
[[파일:경쟁상품조사비교.JPG|700픽셀|섬네일|가운데|]]
+
[[파일:경쟁상품조사비교.JPG]]
 
*마케팅 전략 제시
 
*마케팅 전략 제시
내용
+
 +
◇ 국내 무기 체제 기술 확보<br>
 +
SIPRI Arms Transfer Database에 따르면 한국은 세계 무기체계 주요 수입국으로 5위를 차지하며 국외 업체에 의존도가 높게 나타났다. 무기체계에 소프트웨어 국산화를 통해 무기체계의 가동률 증가, 운영 유지비 절감, 국제 경쟁력 강화 등 많은 이점을 가질 수 있다. 나아가 무기체계 산업의 기술 연구개발 확대는 국내업계의 글로벌 사업기회 창출 등 방산수출에 긍정적 역할을 수행하고 방위 산업을 수출형 구조로 전환함으로써 국제 경쟁력 강화의 효과를 기대한다.<br><br>
 +
 +
 +
◇ 높은 확장성<br>
 +
 +
기존 소프트웨어와 통합/융합 용이성을 높여 해당 소프트웨어의 높은 확장성을 가지도록 한다.<br><br>
 +
 +
 +
◇ SWOT 분석<br>
 +
 +
Strengths<br>
 +
- AI 기술이 급속도로 발전하고 있음<br>
 +
- AI의 적용 분야가 광범위함<br><br>
 +
Weaknesses<br>
 +
- 보다 많은 국방 예산 필요<br>
 +
- 국방비 지출 비용이 다른 나라에 비해 현저히 낮음<br>
 +
- 국외 무기 업체 수입 의존도가 높음<br><br>
 +
Opportunities<br>
 +
- 국내 무기체계 산업의 시장 규모는 나날이 증가할 것으로 보임<br>
 +
- 국내 무기를 수입하는 주요 국가의 국방 예산 지출이 증가축에 있음<br>
 +
-AI 등을 적용한 첨단 무기 개발 시장 확대 전망<br><br>
 +
Threats<br>
 +
- 적용 분야가 전투 분야이기 때문에 연구 경계가 불분명할 시 대내외적 질타를 받을 가능성 존재<br><br>
  
 
===개발과제의 기대효과===
 
===개발과제의 기대효과===
 
====기술적 기대효과====
 
====기술적 기대효과====
내용
+
 
 +
◇ 군 무기의 정밀 타격 능력 향상<br>
 +
 +
날씨나 지역적 요인의 제한사항을 극복하여 목표물 확보가 가능하고, 인간보다 빠르게 인지하고 분석할 수 있는 알고리즘으로 정확성을 향상할 수 있다. 실제로 인간이 항공 이미지의 20~30%의 정확성을 보이지만, Shark Spotter라는 AI 드론은 90% 이상의 정확성을 보였다.<br><br>
 +
 
 +
◇ 다양한 시나리오 분석 환경 구축<br>
 +
 +
함정 무장 등 사용이 제한 여부, 대응 세력의 종류, 신규 무기체계/미식별 접촉물에 대한 전술 등의 각종 상황에 대한 전술적 대비를 할 수 있어 전투발전에 기여할 수 있다. 특히 정형화된 작전 수행 기념이 아닌 학습 때문에 누적된 경험과 현재 상황을 고려한 다양한 전술 구사가 가능해진다. 인공신경망을 이용하여 방어 지속능력 및 전투결과를 예측한 결과 88.2%의 예측정확도를 보였기에 이를 적용하면 증가할 것으로 보인다.<br><br>
 +
 +
◇ 각종 무기체계의 Infra 구축<br>
 +
 +
전투함정만이 아니라 전투기, 탱크, 무인기 등에도 적용 가능하므로 합동작전 수행능력의 향상이 예상된다.<br><br>
 +
 
 +
 
 
====경제적, 사회적 기대 및 파급효과====
 
====경제적, 사회적 기대 및 파급효과====
내용
+
 +
◇ 경제적 파급효과<br>
 +
- 군전력승수 증가 : 적은 전투원을 이용해 각각의 전투력을 올리면서 임무를 수행할 수 있다. 또한 위험한 임무에서 사상자를 줄이고, 사람이 가지 못하는 지역에서도 수행이 가능하다.<br>
 +
- 장기적 비용 절감 : 아프가니스탄에서 각 군인당 $850,000을 연간 지불했으나 TALON(원격 조종 차량 군사 로봇)을 사용했을 때, $230,000으로 예산을 감소시켰다.<br><br>
 +
 +
◇ 사회적 파급효과<br>
 +
- 감정적 범죄 탈피 : 전투원들의 정신적 부담을 줄여주어 본인의 생명을 지키기 위한 무차별 발사와 같은 추가적인 범죄에서 벗어날 수 있다.<br>
 +
- 민간 피해 최소화 : 민간인 시설이나 민간인을 구분할 수 있기 때문에 궁극적으로 민간인의 피해를 줄일 수 있으며 지리적인 경계, 시간을 선택할수 있어 민간인과 비전투원의 생명을 안전하게 할 가능성이 높다.<br>
 +
 
 +
===구성원 및 추진체계===
 +
가. 구성원
 +
 
 +
[[파일:Member.png]]
  
===기술개발 일정 추진체계===
+
나. 추진 계통도
====개발 일정====
+
 
내용
+
인공주능 팀은 프로젝트를 기획, 실행, 평가 이 3단계로 나누어 추진한다. 각각 계획 정의, 개발, 점검 및 평가로 재서술 할 수 있으며 점검 및 평가 부분에서 나온 feedback을 토대로 다시 프로젝트 계획을 하여 프로그램을 수정한다.
====구성원 및 추진체계====
+
 
내용
+
[[파일:Process.png]]
  
 
==설계==
 
==설계==
===설계사양===
+
===제품의 요구사항===
====제품의 요구사항====
+
◇ 목적 계통도<br>
내용
+
====설계 사양====
+
AI 무기체계인 LAWs를 개발하기 위해선 정확성, 신속성, 실용성, 현실성을 고려해야 한다. 정확성은 아군과 적군의 이동 방향 예측, 미사일 요격 부분으로 나눌 수 있고, 신속성은 아군의 이동과 방어, 상황 판단으로 구분할 수 있다. 실용성은 이 프로그램을 군사 훈련으로 이용할 수 있어야 한다는 것이고, 현실성은 상황가정, 시뮬레이션 결과, 지형이나 날씨와 같은 환경 프로그램에 적용을 생각할 수 있다.<br><br>
내용
 
  
===개념설계안===
+
[[파일:목적계통도_인공주능.JPG|500픽셀|섬네일|가운데|목적계통도]]
내용
+
 
 +
===사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표===
 +
◇ 사용자 요구사항<br>
 +
 
 +
[[파일:Inquirement.png]]
 +
 
 +
◇ QFD (Quality Function Deployment) <br>
 +
 
 +
고객과 기술의 요구사항의 중요성, 사용하는 알고리즘을 표시하였으며 각 개발 단계에서 어느 부분에 중점을 두어야 할지 파악했다. 사용하는 Open source는 AlphaGo-zero이고 Kalman filter, battle rule은 직접 구현해야 하는 부분이다. <br> <br>
 +
 
 +
[[파일:Qfd.png]]
 +
 
 +
◇ 기능별 정량목표 <br>
 +
 
 +
[[파일:기능별_정량목표.png]]
 +
 
 +
===기능 구현을 위한 세부기술 선택사항===
 +
가.문제정의 <br>
 +
 
 +
LAWs을 개발하기 위해 크게 상황 판단과 조치판단 부분을 해결해야 한다. 상황 판단은 상황/목표물 인식과 지리정보 인식으로 구성되며 조치판단은 이동과 조준 및 방어로 구성된다. 상황 및 지리정보는 사용자가 지정할 수 있다. <br> <br>
 +
 
 +
[[파일:소프트웨어_구조.png|500픽셀|섬네일|가운데|소프트웨어_구조]]
 +
 
 +
나. 조준 및 공격에 Extended Kalman Filter 적용 <br>
 +
 
 +
정해진 속력과 방향을 이용하여 Extended Kalman Filter로 다음에 이동할 위치를 예측하고, 미사일의 사격 범위와 방향을 예측한다. <br> <br>
 +
 
 +
다. 이동에 AlphaGo-Zero 알고리즘 적용 <br>
 +
 
 +
Extended Kalman Filter로 예측한 위치 범위 안에서 AlphaGo-Zero 알고리즘을 적용한다. 적군 전함의 예상 이동 위치를 미리 예상해 공격 상황에서 우위를 차지할 수 있도록 그리드에서 위치를 선정한다. <br> <br>
 +
 
 +
===시스템 설계===
 +
◇ 시스템 아키텍처 설계<br>
 +
 
 +
- 프로그램 시작하면 초기 상태가 주어진다. 아군과 적군의 전함 수를 선택하면 위치,속도,방향이 랜덤으로 주어지고 전함을 나타내는 그리드가 완성된다.
 +
- 적이 한 번 이동하는 것을 예측한다.
 +
- Extended Kalman filter를 이용하여 적의 예상 위치를 고려한 다음 이동 위치로 이동할 경로를 계산한 후 이동한다.
 +
- AlphaGo-Zero 알고리즘을 이용해 앞으로 어느 지점으로 적이 움직일지 예측한다. Softmax를 이용해 확률이 높은 곳을 선택한다.
 +
- 적의 예상 위치와 실제 이동 위치의 오차를 줄여 간다.
 +
- 아군이 승리할 때까지 반복하며 자가 학습한다. <br> <br>
 +
 
 +
[[파일:System Architecture.png|700픽셀|섬네일|가운데|AI Weapon System Architecture]]
  
 
===이론적 계산 및 시뮬레이션===
 
===이론적 계산 및 시뮬레이션===
내용
 
  
===상세설계 내용===
+
프로그램 시작 시 선택한 초기값을 배경으로 전투함의 위치 이동속도와 방향이 랜덤으로 주어진다. 현재 위치로부터 Kalman filter와 AlphaGo-Zero를 통해 결정된 최적의 미사일 사격 지점으로 가는 최단 경로를 계산한다. 적의 움직임을 Kalman filter로 분석하고 적의 향후 움직임 예측은 Alpha-Zero 알고리즘과 Softmax를 사용한다. 전반적인 시스템은 아군이 승리할 때까지 실시간 자가학습을 통해 반복된다.<br>
내용
+
 +
 +
가. A* 알고리즘<br><br>
 +
 +
◇ 정의<br>
 +
 +
다익스트라 알고리즘을 차용한 것으로 지정된 시작 노드에서 목적 노드까지 가는 최단 경로를 찾아내는 그래프/트리 탐색 알고리즘이다. 주로 게임 프로그램에서 많이 사용되는 최단 거리 길찾기 알고리즘으로 최소가 되는 지점을 우선 탐색 후 휴리스틱 추정값을 사용하여 경로 결정 후 Open List/ Closed List를 이용하여 노드를 관리한다.<br><br>
 +
 +
 +
◇ 휴리스틱 추정값 : f(x)=h(x)+g(x)<br>
 +
 +
- h(x) : 출발 노드 n으로부터 도착 노드 N까지의 경로 가중치<br>
 +
- g(x) : 노드 n으로부터 목표 노드까지의 추정 경로 가중치 (도착 노드까지의 예상 이동 비용)<br><br>
 +
 +
 +
◇ Open List / Closed List<br>
 +
 +
- Open List : 검색 가능성이 있는 노드의 집합<br>
 +
- Closed List : 이미 검색이 끝난 지점들의 집합<br><br>
 +
 +
 +
◇ 탐색 우선 순위<br>
 +
 +
- Open List 내의 f(x) 가중치 값이 가장 노드부터 탐색<br>
 +
 
 +
나. AlphaGo 알고리즘<br><br>
 +
 +
◇ Supervised learning<br>
 +
 +
서버에 여러 전투전략을 등록시켜 회선신경망(CNN, Convolutional Neural Networks)으로 학습하고 목표물의 위치 정보와 패턴을 파악해 목표물의 다음 위치를 예상하며 최적의 위치를 계산한다.<br><br>
 +
 +
 +
◇ Policy networks and Value networks<br>
 +
 +
AlphaGo는 전문 바둑 기보를 학습하며 AlphaGo LEE는 자가학습을 하여 규칙상 착수 가능한 모든 수에 대해 착수 선호도를 산출한다. 이 값을 MCTS를 이용하여 확장하고, 트리의 폭을 줄여 적의 움직임을 예측한다. 그 후, Tensorflow로 최적화한 Neural Network를 함께 이용하여 예측 정확성을 높인다. 예상할 수 있는 각 단계를 승리를 예상하면 1로, 패를 예상하면 -1로 분류하여 승률을 계산한다.<br><br>
 +
 +
 +
◇ 몬테카를로 트리 탐색 (MCTS, Monte Carlo Tree Search)<br>
 +
 +
알파고의 주된 알고리즘은 몬테카를로 트리 탐색이다. 몬테카를로 트리 탐색은 최소-최대 (Minimax) 알고리즘의 성능을 개선한 것으로 모든 경로를 탐색하기가 불가능한 상황에 효율적이다. 몬테카를로 트리 탐색의 절차는 선택(Selection), 확장(Expansion), 시뮬레이션 (Simulation), 역전파(Backpropagation)라는 과정을 거친다.<br><br>
 +
 +
[[파일:몬테카를로 트리 탐색.png|700픽셀|섬네일|가운데|몬테카를로 트리 탐색(MCTS, Monte Carlo Tree Search)]]
 +
 
 +
다. Alpha Zero 알고리즘 : 최적의 공격 지점 분석을 위해 사용<br>
 +
 
 +
기존의 AlphaGo Lee와 Alpha zero와의 차이점은 supervised learning 단계의 유무라고 볼 수 있다. 수정된 Alpha zero 알고리즘은 self play만으로도 빠르게 학습하고 효과적이기 때문에 기존의 바둑이 아닌 다른 게임 알고리즘에도 수정 없이 그대로 적응 가능하다는 장점이 존재한다. supervised learning의 생략으로 학습 속도가 현저히 느릴 것으로 생각할 수 있으나 alpha zero는 그 예상과는 다른 Elo Rating 상승 추이를 보여준다.<br><br>
 +
 
 +
[[파일:상승추이.png|700픽셀|섬네일|가운데|AlphaGo Zero의 Elo Rating 상승추이]]
 +
 
 +
◇ Reinforcement learning<br>
 +
 +
Random play의 자가학습을 통해 Reinforcement learning을 활용하여 학습한다.<br><br>
 +
 +
◇ Feature map 사용<br>
 +
 +
기존 AlphaGo는 흑돌, 백돌을 포함 한 눈, 활로, 꼬부림 등 48가지 특징을 활용했지만, Alpha Zero는 흑돌과 백돌 두 가지만을 활용하여 더 단순한 접근방법을 취했다.<br><br>
 +
 +
◇ 인공신경망 형태와 구조 변경<br>
 +
 +
Policy networks와 Value networks를 하나로 합친 형태를 활용했다. 인공신경망 구조는 gradient vanishing 현상을 개선한 Residual Network를 활용하는 것으로 변경했다.<br><br>
 +
 
 +
◇ Decision Tree 탐색 기법 개선<br>
 +
 +
기존 AlphaGo의 MCTS는 랜덤 시뮬레이션 단계에서 롤 아웃(rollout) 정책을 활용했다. 롤아웃은 policy network와 유사하지만 빠른 속도로 시뮬레이션하기 위해 고안된 간단한 정책이다. 하지만 바둑을 지나치게 단순화한 경향이 있어 AlphaGo Zero에서는 롤 아웃을 활용하지 않았다. 대신, 랜덤 시뮬레이션의 정책으로 앞서 residual network를 적용했다. 인공신경망 기술 기반의 정책은 롤 아웃보다 훨씬 많은 계산을 요구하지만, 정확도가 향상되는 장점이 있다.<br><br>
 +
 
 +
라. Softmax function : 분석한 확률을 일반화하여 향후 이동 지점을 결정할 때 사용<br><br>
 +
 +
◇ 정의<br>
 +
 +
다중 class 문제에서 각 score를 0과 1 사이의 값으로 노말라이즈하는 함수이다. 이 결과로 확률 범위로 나오며 모든 확률을 더하면 1이 된다. 확률이 가장 큰 class가 target class가 된다.<br>
 +
 
 +
[[파일:Softmax.png|500픽셀|섬네일|가운데|Softmax의 예시]]
 +
 
 +
마. Extended Kalman Filter : 적군 및 아군 함선 움직임 예측<br>
 +
 +
◇ 정의<br>
 +
 +
전투함정의 움직임은 비선형적이기 때문에 자연계의 선형적인 모델에만 적용가능한 Kalman filter에 비선형적인 요소를 확장한 Extended Kalman filter(EKF)를 통해 구현한다. EKF 사용 시, 자연계의 움직임은 어느 정도 예측이 가능하며 일반적 움직임 물성을 가지는 것은 당연하게 예측할 수 있다. EKF는 재귀적으로 동작한다. 누적된 데이터와 현재 얻을 수 있는 최선의 데이터로 현 상태를 추정한다. 각 추정 계산은 예측(Prediction) 단계, 보정(Update) 단계로 이루어진다.<br><br>
 +
 +
◇ 활용<br>
 +
 
 +
프로젝트의 중요한 목표 중 하나는 함선이 환경적인 측면에 맞춰 미션을 수행하는 것이다. 또한, 실제 함선의 움직임과 비슷하게 설계하는 것이 중요하다. 따라서, 비선형적인 함선의 움직임을 예측하고 설계하고자 EKF를 다음 두 미션에 활용했다.<br>
 +
- 상대방 이전 위치 기반 움직임 예측<br>
 +
- 아군 함선 장애물 회피 및 경로 설정<br><br>
 +
 +
◇ EKF Design<br>
 +
 
 +
General Motion Equations<br>
 +
x(tn)=x(t0) + t0tnv(t)*cos(t)dt(1)<br>
 +
y(tn)=y(t0) + t0tnv(t)*sin(t)dt (2)<br>
 +
(t : time, : direction of the ship, v : velocity)<br>
 +
 
 +
(1)과 (2) 식은 함선의 속도에 영향을 받는다. 속도인 v(t)는 초기값인 v0와 t0에 영향을 받고 가속도에도 영향을 받는다. 마찬가지로 로봇이 방향인 (t)는 초기 각도인 (t0)와 초기 회전 속도, 회전 가속도에 영향을 받는다. v(t0), (t0), (t0) 와 가속도인 v(t), (t)를 대입하면 다음과 같은 식을 얻을 수 있다.<br>
 +
x(tn)=x(t0) + t0tn(v(t0) + t0tv(t)dt )*cos((t0)+t0t((t0)+t0t(t)dt)dt )dt(3)<br>
 +
위와 마찬가지로 y(tn)에 대한 식을 구한 뒤, 함선의 최대속도, 최대 회전가속도, 현재상태 등을 고려해 목표지점으로 나아간다. 아래는 이를 적용한 모습이다.<br>
 +
 
 +
Approximate Motion Equations
 +
 
 +
[[파일:경로.png|500픽셀|섬네일|가운데|다른 전함이나 장애물의 위치를 피해 목표 지점으로 가는 경로]]
 +
 
 +
===소프트웨어 설계===
 +
 
 +
가. Class Diagram<br>
 +
 +
◇ 전투 모드 software<br>
 +
 +
<game.py><br>
 +
GridSet(),GameState(),Game()으로 구성되어 있다.<br>
 +
-grid_update: 각 전함의 미사일 발사 가능 범위를 원으로 표시<br>
 +
-grid_update_2: 전함의 이동경로를 보여줌<br>
 +
-movement_update: 다른 함선들을 장애물로 인식하고 피해가며 설정한 목표 지점까지 움직이게 함<br>
 +
_checkForEndGame: 게임이 끝났는지 확인<br>
 +
-_getValue:  현재 플레이어의 상태를 확인<br>
 +
-takeAction: 이동할 위치를 그리드상에 반영<br>
 +
-_checktokill: 미사일 반경안에 상대방 위치가 들어와 있다면 상대방 공격<br><br>
 +
 
 +
<funcs.py><br>
 +
-playMatchesBetweenVersions, playMatches: 두개의 agent가 서로 경기를 진행<br>
 +
 
 +
+)run.py에서 self match가 진행되는데 만약 self match가 아니고, 상대방을 직접 입력하고 싶다면 아래와 같이 입력해주면 됨<br>
 +
 
 +
from game import Game<br>
 +
from funcs import playMatchesBetweenVersions<br>
 +
 
 +
import loggers as lg<br>
 +
env = Game()<br>
 +
playMatchesBetweenVersions(<br>
 +
env<br>
 +
, 1  # the run version number where the computer player is located<br>
 +
, -1 # the version number of the first player (-1 for human)<br>
 +
, 12 # the version number of the second player (-1 for human)<br>
 +
, 10 # how many games to play<br>
 +
, lg.logger_tourney # where to log the game to<br>
 +
, 0  # which player to go first - 0 for random<br>
 +
)<br>
 +
 
 +
[[파일:class diagram.png|700픽셀|섬네일|가운데|Class Diagram]]
 +
 +
◇ Keras를 이용한 residual convolutional network 예시<br>
 +
 
 +
주된 학습 방법은 R-CNN으로 소프트웨어에는 신경망의 인스턴스를 만드는 방법을 정의하는 Residual_CNN 클래스가 포함되어 있다.<br>
 +
 
 +
[[파일:rnn.png|800픽셀|섬네일|가운데|Residual convolutional network]]
 +
 
 +
다. UI 설계<br>
 +
 +
◇ 그리드는 90 X 180을 기본으로 한다.<br>
 +
◇ 처음 실행을 하면 아군은 왼쪽에 파란색으로, 적군은 오른쪽에 빨간색으로 위치가 나타난다.<br>
 +
◇ 사격 범위를 원으로 정하며 사격 당한 전함은 그리드 상에서 사라진다.<br>
 +
 
 +
[[파일:ui.png|600픽셀|섬네일|가운데|UI 화면 예시 - 초기 전함의 위치와 사격 범위]]
 +
 
 +
[[파일:log.png|700픽셀|섬네일|가운데|UI 화면 예시 - log 파일]]
  
 
==결과 및 평가==
 
==결과 및 평가==
 
===완료 작품의 소개===
 
===완료 작품의 소개===
====프로토타입 사진 혹은 작동 장면====
+
가. 프로토타입 사진
내용
 
====포스터====
 
내용
 
  
===관련사업비 내역서===
+
◇ AlphaGo-Zero의 4단계(Selection, Expansion, Simulation, Backpropagation)를 기반으로 하여 시뮬레이션을 표현한 화면이다.
내용
+
[[파일:simulation.png|400픽셀|섬네일|가운데|Selection]]
 +
[[파일:expansion.png|400픽셀|섬네일|가운데|Expansion]]
 +
[[파일:3simulation.png|400픽셀|섬네일|가운데|Simulation]]
 +
[[파일:backpropagation.png|400픽셀|섬네일|가운데|Backpropagation]]
 +
 
 +
나.포스터
 +
 
 +
[[파일:인공주능포스터.jpg|500픽셀]]
 +
 
 +
===설치 (configuration)===
 +
 
 +
◇ 개발 환경 및 라이브러리
 +
 
 +
Keras 2.1.5
 +
python 3.5
 +
tensorflow 1.6.0
 +
absl-py 0.1.12
 +
appnope 0.1.0
 +
astor 0.6.2
 +
bleach 1.5.0
 +
cycler 0.10.0
 +
decorator 4.2.1
 +
gast 0.2.0
 +
graphviz 0.8.2
 +
grpcio 1.10.0
 +
h5py 2.7.1
 +
ipykernel 4.8.2
 +
ipython 6.2.1
 +
ipython-genutils 0.2.0
 +
jedi 0.11.1
 +
jupyter-client 5.2.3
 +
jupyter-core 4.4.0
 +
kiwisolver 1.0.1
 +
Markdown 2.6.11
 +
matplotlib 2.2.2
 +
numpy 1.14.2
 +
parso 0.1.1
 +
pexpect 4.4.0
 +
pickleshare 0.7.4
 +
prompt-toolkit 1.0.15
 +
pydot 1.2.4
 +
pyparsing 2.2.0
 +
python-dateutil 2.7.1
 +
scipy 1.0.1
 +
simplegeneric 0.8.1
 +
tensorboard 1.6.0
 +
tornado 5.0.1
 +
wcwidth 0.1.7
 +
 
 +
===실행 (run)===
 +
 
 +
가. SW 실행 방법 (단계에 따른 화면 포함)
 +
 
 +
◇ 실행 방법<br>
 +
 
 +
main.py를 실행시킨다.<br>
 +
아군과 적군의 전함 개수를 각각 지정한다.<br>
 +
초기 위치가 입력된 화면이 출력된다.<br>
 +
 
 +
[[파일:개수.png|600픽셀|섬네일|가운데|아군과 적군 전함의 개수 지정]]
 +
 
 +
아군과 적군 전함의 개수 지정
 +
 
 +
[[파일:아군적군초기화면.png|600픽셀|섬네일|가운데|아군과 적군 전함의 초기 위치 화면]]
 +
 
 +
출력된 화면을 닫으면 각 전함의 속력과 위치가 바뀌는 log가 출력된다.
 +
 
 +
[[파일:위치변화정보.png|700픽셀|섬네일|가운데|1개의 전함의 속력과 위치 변화 정보 출력]]
 +
 
 +
목표 지점으로 이동이 끝나면 전함의 이동 경로가 출력된다.
 +
 
 +
[[파일:1개의 전함 이동.png|700픽셀|섬네일|가운데|1개의 전함의 이동 경로 출력]]
 +
 
 +
[[파일:예측 방향 출력.png|700픽셀|섬네일|가운데|Turn마다 해당 player의 전함들의 목표 지점과 예측 방향 출력]]
 +
 
 +
이동경로 창을 닫으면 R-CNN와 MCTS를 이용해 그리드상에서의 전함이 이동할 수 있는 위치의 확률을 txt파일로 확인한다.
 +
 
 +
[[파일:예상확률위치.png|700픽셀|섬네일|가운데|logger_mcts.log에서의 예상 확률과 위치 표시1]]
 +
 
 +
[[파일:표시2.png|700픽셀|섬네일|가운데|logger_mcts.log에서의 예상 확률과 위치 표시2]]
 +
 
 +
txt파일 의미
 +
 
 +
matrix : gird를 matrix로 표현. ‘-’는 그 위치에 아무것도 없다는 것을 의미. ‘x’는 아군의 함선을 의미, ‘o’는 적군의 함선을 의미.<br>
 +
PLAYER TURN...1 : 첫번째 경기 진행<br>
 +
action with highest Q + U : action은 도출된 적합 위치. Q + U는 해당 action으로 이동했을 때 경기를 이길 수 있는 확률. 모든 node에 대해 Q+U(이길 수 있는 확률)을 계산한 후 가장 높은 값을 가진 action으로 이동. 그림에서는 16190의 위치로 이동해야 함.<br>
 +
그림에서의 ‘X’ 표시 : 16190의 좌표 위치에 아군이 생긴 것을 의미<br>
 +
PREDICTED VALUE FOR 1 : 상대방 턴까지 끝났을 때 아군이 이길 확률<br>
 +
added node : 노드를 하나하나씩 탐색하며 추가<br>
 +
 
 +
[[파일:mcts.png|700픽셀|섬네일|가운데|logger_main.log 에서 MCTS와 NN을 이용하여 예측한 확률 표시1]]
 +
 
 +
[[파일:mcts2.png|700픽셀|섬네일|가운데|logger_main.log 에서 MCTS와 NN을 이용하여 예측한 확률 표시2]]
 +
 
 +
‘0.02’ : 해당 위치로 움직이면 경기에서 이길 확률<br>
 +
 
 +
MCTS perceived value / NN perceived value : 플레이어가 현재 어느정도 우위에 있는지 나타내주는 값<br>
 +
 
 +
◇ 단계별 설명
 +
 
 +
1단계 : 아군과 적군의 위치, 각 전함의 이동속도와 방향은 랜덤으로 주어진다. <br>
 +
2단계 : 적군의 이동 위치를 예상하여 적군의 위치가 미사일 사격범위에 들어오도록 아군의 위치를 이동한다.<br>
 +
3단계: 사격 범위에 들어오면 미사일을 발사하고, 공격받은 전함은 그리드 상에서 사라진다.<br>
 +
1단계부터 3단계를 계속 반복한다.
  
 
===완료작품의 평가===
 
===완료작품의 평가===
내용
+
가. 평가 기준 및 내용<br>
 +
◇ Open source의 도입이 적절하게 이루어졌는지 여부<br>
 +
◇ 상대방 위치 예측 알고리즘의 정확도가 기대치를 충족하는지 여부<br>
 +
◇ 최적의 공격 위치를 찾기위한 계산 알고리즘의 정확도 여부<br>
 +
◇ 시스템 반응 속도<br>
 +
◇ 사용자의 편의성<br>
 +
◇ 실제 존재하는 무기체계에 도입 가능 여부<br>
 +
 
 +
[[파일:작품평가.jpg]]
 +
 
 +
===향후평가===
 +
 
 +
가.어려웠던 내용들
 +
 +
◇ 그리드 상에서 전투함을 표시할 때 길이를 설정했기 때문에 움직임이 힘들었음<br>
 +
- 전투함의 무게중심만 표시함<br><br>
 +
 +
◇ Kalman Filter 적용 시 전투함정의 조건으로 위치 속도 및 방향 조건을 바꿔주는 과정에서 시간을 오래 소요<br><br>
 +
 +
◇ 아군과 적군의 움직임 예상에 적용할 알고리즘 선택<br>
 +
- 실제 지리적 요건을 고려한 landmark와 적군을 장애물로 설정해 목표 위치까지 이동하는 경로에 고려<br><br>
  
===향후계획===
+
◇ 그리드 상에 전투함 표시 과정에서 에러가 발견돼 디버깅 후 프로그램의 신뢰성 향상<br><br>
내용
 
  
===특허 출원 내용===
+
◇ EKF와 R-CNN 연결<br>
내용
+
-전체 함선이 칼만필터를 통해 이동<br>
 +
-R-CNN이 칼만필터를 통해 적군 위치 경로 예상 후 전략 수립 <br><br>
 +
 
 +
나. 기업연계 요구내용
 +
 +
◇ 추후 요구내용 <br>
 +
장애물이 가시적으로 나타났으면 함 <br>
 +
 
 +
[[파일:장애물 도시 요구.png|600픽셀|섬네일|가운데|장애물 도시 요구]]
 +
 
 +
==개발 사업비 정산==
 +
===자재소요서===
 +
 
 +
[[파일:자재소요서.png]]
 +
 
 +
===관련사업비 내역서===
 +
[[파일:인공주능개발정산비.jpg|700픽셀]]

2019년 6월 23일 (일) 03:21 기준 최신판

프로젝트 개요

기술개발 과제

국문 : AI를 이용한 지능형 해군 전술 시스템 개발

영문 : Development of Navy Tactical System based on AI

과제 팀명

인공주능

지도교수

김성환 교수님

개발기간

2019년 3월 ~ 2019년 6월 (총 4개월)

구성원 소개

서울시립대학교 컴퓨터과학부·과 2014920001 강지연(팀장)

서울시립대학교 컴퓨터과학부·과 2015920026 손진아

서울시립대학교 컴퓨터과학부·과 2015920050 조수연

서울시립대학교 컴퓨터과학부·과 2015920053 채승연

서론

개발 과제의 개요

개발 과제 요약

하드웨어를 중점으로 했던 기존의 무기체계 체계에서 벗어나 AI 기술을 도입한 미래 국방 분야 신기술 및 핵심기술 개발을 목표로 한다. 기존 무기체계에 기계학습, 데이터마이닝, 빅데이터 등의 AI를 중점적으로 결합한 Lethal autonomous weapons (LAWs)에서 목표 대상 인식, 움직임 예상, 최적의 이동 경로 탐색, 공격 최적성 계산 알고리즘을 도입하여 해군 전술 시스템을 개발한다.

개발 과제의 배경

인공지능은 AlphaGo의 출현으로 최소 10년의 기술발전을 했다. 이를 통해 인공지능은 인류의 새로운 지시 영역을 개척하고 진리를 발견할 수 있게 도울 것이며 의료, 무인자율주행차, 스마트폰 등 사회의 여러 방면에서 개발 도입 될 것으로 예상한다.

방위사업청과 국방기술품질원은 2017년 말 4차 산업혁명에 대응하고 첨단 국방을 주도하기 위한 미래 국방기술과 신개념 무기체계를 발표했다. 인공지능, 무인로봇, 사이버보안, 신소재 등의 기술 분야 기반으로, 특히 미래의 전쟁은 인공지능과 딥러닝에 의해 과거와는 다른 양상으로 전개될 것이라고 예상했다. 현재도 간단한 AI 기술을 이용한 유도 무기나 미사일 방어체계가 사용되고 있다. 앞으로 AI를 사용한 무기체계의 발달로 인간보다 정확한 정찰, 공격 및 방어 임무가 수행될 전망이다.

자율능력을 갖춘 인공지능은 인간에게 불가능한 지속적인 감시와 초 단위의 의사결정에서 높은 가치를 지닌다. 이런 국방 영역에서 자율능력 무기체계의 도입은 과거 무기체계 패러다임을 깬 혁신적인 임무 수행 능력의 향상을 가져올 것이다. 우리는 자율능력을 갖춘 무기체계도입의 중요성과 인공지능에 대한 이해를 바탕으로 4차 산업혁명을 이끌어갈 개발자로서 현재 기술의 문제점을 개선한 무기체계를 개발하고자 한다.

개발 과제의 목표 및 내용

◇ 목표
AI 기술을 중점으로 기계학습, 데이터마이닝, 빅데이터를 이용해 기존 무기체계에 대상 인식, 움직임 예상, 최적의 이동 경로 탐색, 공격 최적성 계산 알고리즘을 도입하여 해군 전술 시스템을 개발

◇ 내용
- 학습 성능 모니터링
- 데이터 전처리 및 인덱싱
- 표적 정보처리(방향, 위치)
- 상황 판단 및 조치 알고리즘

그림1.개발과제의 내용


관련 기술의 현황

관련 기술의 현황 및 분석(State of art)

*전 세계적인 기술현황

◇ 세계 동향

미국, 중국, 캐다 등 많은 국가가 AI 원천기술 관련 정책을 발표하며 연구센터 유치 경쟁과 정부의 주도로 기술개발을 시도하고 있다. 간단한 AI 기술은 이미 유도 무기나, 미사일 방어체계 등에 사용되고 있으며, 앞으로도 무인기나 무인잠수정 등이 인간보다 더 정확하게 정찰, 공격 임무 등을 수행하게 될 전망이다. 보스톤 컨설팅은 군사용 로봇 시장이 2015년 69억 달러에서 2025년 150억 달러로 연평균 8% 성장할 것으로 전망하고 있고, 군사용 드론 시장도 2016년 대비 2020년 70억 달러가량 시장이 확대될 것으로 전망된다.

◇ Advanced Targeting and Lethality Automated System (ATLAS)
지상 전투차량이 데이터를 습득, 인식하고 인간보다 3배 빠르게 목표물에 다가가는 것을 목표로 하는 무기체계이다. 미군에서는 컴퓨터 비전과 인공지능/딥러닝을 발전시켜 향상된 센서와 처리 그리고 화재 제어 능력을 이 무기체계에 통합할 계획이다.

◇ AlphaGo

인공지능 바둑 프로그램으로 데이터 학습이 필요 없을 뿐만 아니라, 점점 강해지는 자신과의 게임을 반복하면서 스스로 빅데이터를 구축한다. 심층신경망(DNN, Deep Neural Network)이 몬테카를로 트리 탐색(MCTS, Monte Carlo Tree Search)을 통해 선택지 중 가장 유리한 선택을 하도록 설계되었다. 여러 프로기사와의 대국을 통해 인공지능의 새 장을 열었다는 평가를 받았으며, 기존의 통념을 깨뜨리는 창의적인 수와 대세관으로 패러다임이 바뀔 것으로 전망했다.

◇ M-SAM

레이더를 통해 요격하는 중거리 미사일이다. 발사 명령을 내리면 미사일이 튀어나와 적기의 좌표를 업데이트 받아 지속적으로 자세를 바꾼다. 적기와 충분히 가까워지면 자체레이더를 켜고 능동레이더 유도방식으로 유도된다.

*특허조사 및 특허 전략 분석

◇ 잠수함의 지능형 무인 수중 자동항해 시스템과 잠수함의 무인 수중 자동항해를 제어하는 방법(KR101188630B1)

수중 자동항해 소형 잠수함이 자동 능동형으로써 잠수 및 부상이 자유롭고 주변 환경에 따라 자율적 항해하고 상업적이거나 군사적인 임무를 수행하도록 하여 자동 복귀하는 잠수함의 지능형 무인 수중 자동항해 시스템이다.

◇ 이동물체의 거리와 이동 방향을 제공하는 인공지능형 영상경비 시스템(KR100492148B1)

이동물체의 거리와 이동 방향을 제공하는 인공지능형 영상경비 시스템으로 조건설정에 의하여 자동으로 이동물체를 감지하고 이동물체를 추적하면서 이동물체에 대한 정보를 제공한다.

◇ 멀티 에이전트 기술 기반의 지능형 의사결정 실험 시스템(CN101615265B)
컴퓨터의 교차 영역에 속하는 다중 에이전트 기술을 기반을 둔 의사결정 시뮬레이션 시스템으로 인공지능과 경험적 방법론 개발을 사용한 의사결정을 지원한다.

◇ Mastering the game of Go with deep neural networks and tree search

프로 바둑 기사를 이긴 최초의 컴퓨터 바둑 프로그램, 알파고에 사용된 특허이다. 바둑에 인공지능을 적용하여 자가학습을 할 수 있도록 만든 알고리즘이다.

◇ 전술 개념을 이용한 알고리즘 아이디어 기술

인공지능은 구체적인 기술구현이 없어도 아이디어만으로도 특허 출원이 가능하다. 그러므로 운용 중인 이지스 전투체계를 포함한 국내 개발 전투체계는 일부 기능(무장통제 및 할당 중심의 기술적 영역)에 우선하여 구현된 장비 운용 중심의 접근방식으로, 전술 개념을 추가하여 구체화한다.

◇ 종래 기술대비 진보한 부분 특정

기술 개발 시에 Open source를 활용했다면 수정, 편집, 추가되는 부분을 특정하여 특허로 출원할 수 있으며 응용 방법을 특정하는 방법도 있다.

◇ Open source로 등록

개발한 AI 기술을 Open source로 공개하여 시장 영향력을 확대하고 라이선스 사용을 명시하고 규정을 강화한다.

*기술 로드맵

그림2.기술로드맵

시장상황에 대한 분석

  • 경쟁제품 조사 비교

경쟁상품조사비교.JPG

  • 마케팅 전략 제시

◇ 국내 무기 체제 기술 확보
SIPRI Arms Transfer Database에 따르면 한국은 세계 무기체계 주요 수입국으로 5위를 차지하며 국외 업체에 의존도가 높게 나타났다. 무기체계에 소프트웨어 국산화를 통해 무기체계의 가동률 증가, 운영 유지비 절감, 국제 경쟁력 강화 등 많은 이점을 가질 수 있다. 나아가 무기체계 산업의 기술 연구개발 확대는 국내업계의 글로벌 사업기회 창출 등 방산수출에 긍정적 역할을 수행하고 방위 산업을 수출형 구조로 전환함으로써 국제 경쟁력 강화의 효과를 기대한다.


◇ 높은 확장성

기존 소프트웨어와 통합/융합 용이성을 높여 해당 소프트웨어의 높은 확장성을 가지도록 한다.


◇ SWOT 분석

Strengths
- AI 기술이 급속도로 발전하고 있음
- AI의 적용 분야가 광범위함

Weaknesses
- 보다 많은 국방 예산 필요
- 국방비 지출 비용이 다른 나라에 비해 현저히 낮음
- 국외 무기 업체 수입 의존도가 높음

Opportunities
- 국내 무기체계 산업의 시장 규모는 나날이 증가할 것으로 보임
- 국내 무기를 수입하는 주요 국가의 국방 예산 지출이 증가축에 있음
-AI 등을 적용한 첨단 무기 개발 시장 확대 전망

Threats
- 적용 분야가 전투 분야이기 때문에 연구 경계가 불분명할 시 대내외적 질타를 받을 가능성 존재

개발과제의 기대효과

기술적 기대효과

◇ 군 무기의 정밀 타격 능력 향상

날씨나 지역적 요인의 제한사항을 극복하여 목표물 확보가 가능하고, 인간보다 빠르게 인지하고 분석할 수 있는 알고리즘으로 정확성을 향상할 수 있다. 실제로 인간이 항공 이미지의 20~30%의 정확성을 보이지만, Shark Spotter라는 AI 드론은 90% 이상의 정확성을 보였다.

◇ 다양한 시나리오 분석 환경 구축

함정 무장 등 사용이 제한 여부, 대응 세력의 종류, 신규 무기체계/미식별 접촉물에 대한 전술 등의 각종 상황에 대한 전술적 대비를 할 수 있어 전투발전에 기여할 수 있다. 특히 정형화된 작전 수행 기념이 아닌 학습 때문에 누적된 경험과 현재 상황을 고려한 다양한 전술 구사가 가능해진다. 인공신경망을 이용하여 방어 지속능력 및 전투결과를 예측한 결과 88.2%의 예측정확도를 보였기에 이를 적용하면 증가할 것으로 보인다.

◇ 각종 무기체계의 Infra 구축

전투함정만이 아니라 전투기, 탱크, 무인기 등에도 적용 가능하므로 합동작전 수행능력의 향상이 예상된다.


경제적, 사회적 기대 및 파급효과

◇ 경제적 파급효과
- 군전력승수 증가 : 적은 전투원을 이용해 각각의 전투력을 올리면서 임무를 수행할 수 있다. 또한 위험한 임무에서 사상자를 줄이고, 사람이 가지 못하는 지역에서도 수행이 가능하다.
- 장기적 비용 절감 : 아프가니스탄에서 각 군인당 $850,000을 연간 지불했으나 TALON(원격 조종 차량 군사 로봇)을 사용했을 때, $230,000으로 예산을 감소시켰다.

◇ 사회적 파급효과
- 감정적 범죄 탈피 : 전투원들의 정신적 부담을 줄여주어 본인의 생명을 지키기 위한 무차별 발사와 같은 추가적인 범죄에서 벗어날 수 있다.
- 민간 피해 최소화 : 민간인 시설이나 민간인을 구분할 수 있기 때문에 궁극적으로 민간인의 피해를 줄일 수 있으며 지리적인 경계, 시간을 선택할수 있어 민간인과 비전투원의 생명을 안전하게 할 가능성이 높다.

구성원 및 추진체계

가. 구성원

Member.png

나. 추진 계통도

인공주능 팀은 프로젝트를 기획, 실행, 평가 이 3단계로 나누어 추진한다. 각각 계획 및 정의, 개발, 점검 및 평가로 재서술 할 수 있으며 점검 및 평가 부분에서 나온 feedback을 토대로 다시 프로젝트 계획을 하여 프로그램을 수정한다.

Process.png

설계

제품의 요구사항

◇ 목적 계통도

AI 무기체계인 LAWs를 개발하기 위해선 정확성, 신속성, 실용성, 현실성을 고려해야 한다. 정확성은 아군과 적군의 이동 방향 예측, 미사일 요격 부분으로 나눌 수 있고, 신속성은 아군의 이동과 방어, 상황 판단으로 구분할 수 있다. 실용성은 이 프로그램을 군사 훈련으로 이용할 수 있어야 한다는 것이고, 현실성은 상황가정, 시뮬레이션 결과, 지형이나 날씨와 같은 환경 프로그램에 적용을 생각할 수 있다.

목적계통도

사용자 요구사항 만족을 위한 기능 정의 및 기능별 정량목표

◇ 사용자 요구사항

Inquirement.png

◇ QFD (Quality Function Deployment)

고객과 기술의 요구사항의 중요성, 사용하는 알고리즘을 표시하였으며 각 개발 단계에서 어느 부분에 중점을 두어야 할지 파악했다. 사용하는 Open source는 AlphaGo-zero이고 Kalman filter, battle rule은 직접 구현해야 하는 부분이다.

Qfd.png

◇ 기능별 정량목표

기능별 정량목표.png

기능 구현을 위한 세부기술 선택사항

가.문제정의

LAWs을 개발하기 위해 크게 상황 판단과 조치판단 부분을 해결해야 한다. 상황 판단은 상황/목표물 인식과 지리정보 인식으로 구성되며 조치판단은 이동과 조준 및 방어로 구성된다. 상황 및 지리정보는 사용자가 지정할 수 있다.

소프트웨어_구조

나. 조준 및 공격에 Extended Kalman Filter 적용

정해진 속력과 방향을 이용하여 Extended Kalman Filter로 다음에 이동할 위치를 예측하고, 미사일의 사격 범위와 방향을 예측한다.

다. 이동에 AlphaGo-Zero 알고리즘 적용

Extended Kalman Filter로 예측한 위치 범위 안에서 AlphaGo-Zero 알고리즘을 적용한다. 적군 전함의 예상 이동 위치를 미리 예상해 공격 상황에서 우위를 차지할 수 있도록 그리드에서 위치를 선정한다.

시스템 설계

◇ 시스템 아키텍처 설계

- 프로그램 시작하면 초기 상태가 주어진다. 아군과 적군의 전함 수를 선택하면 위치,속도,방향이 랜덤으로 주어지고 전함을 나타내는 그리드가 완성된다. - 적이 한 번 이동하는 것을 예측한다. - Extended Kalman filter를 이용하여 적의 예상 위치를 고려한 다음 이동 위치로 이동할 경로를 계산한 후 이동한다. - AlphaGo-Zero 알고리즘을 이용해 앞으로 어느 지점으로 적이 움직일지 예측한다. Softmax를 이용해 확률이 높은 곳을 선택한다. - 적의 예상 위치와 실제 이동 위치의 오차를 줄여 간다. - 아군이 승리할 때까지 반복하며 자가 학습한다.

AI Weapon System Architecture

이론적 계산 및 시뮬레이션

프로그램 시작 시 선택한 초기값을 배경으로 전투함의 위치 이동속도와 방향이 랜덤으로 주어진다. 현재 위치로부터 Kalman filter와 AlphaGo-Zero를 통해 결정된 최적의 미사일 사격 지점으로 가는 최단 경로를 계산한다. 적의 움직임을 Kalman filter로 분석하고 적의 향후 움직임 예측은 Alpha-Zero 알고리즘과 Softmax를 사용한다. 전반적인 시스템은 아군이 승리할 때까지 실시간 자가학습을 통해 반복된다.


가. A* 알고리즘

◇ 정의

다익스트라 알고리즘을 차용한 것으로 지정된 시작 노드에서 목적 노드까지 가는 최단 경로를 찾아내는 그래프/트리 탐색 알고리즘이다. 주로 게임 프로그램에서 많이 사용되는 최단 거리 길찾기 알고리즘으로 최소가 되는 지점을 우선 탐색 후 휴리스틱 추정값을 사용하여 경로 결정 후 Open List/ Closed List를 이용하여 노드를 관리한다.


◇ 휴리스틱 추정값 : f(x)=h(x)+g(x)

- h(x) : 출발 노드 n으로부터 도착 노드 N까지의 경로 가중치
- g(x) : 노드 n으로부터 목표 노드까지의 추정 경로 가중치 (도착 노드까지의 예상 이동 비용)


◇ Open List / Closed List

- Open List : 검색 가능성이 있는 노드의 집합
- Closed List : 이미 검색이 끝난 지점들의 집합


◇ 탐색 우선 순위

- Open List 내의 f(x) 가중치 값이 가장 노드부터 탐색

나. AlphaGo 알고리즘

◇ Supervised learning

서버에 여러 전투전략을 등록시켜 회선신경망(CNN, Convolutional Neural Networks)으로 학습하고 목표물의 위치 정보와 패턴을 파악해 목표물의 다음 위치를 예상하며 최적의 위치를 계산한다.


◇ Policy networks and Value networks

AlphaGo는 전문 바둑 기보를 학습하며 AlphaGo LEE는 자가학습을 하여 규칙상 착수 가능한 모든 수에 대해 착수 선호도를 산출한다. 이 값을 MCTS를 이용하여 확장하고, 트리의 폭을 줄여 적의 움직임을 예측한다. 그 후, Tensorflow로 최적화한 Neural Network를 함께 이용하여 예측 정확성을 높인다. 예상할 수 있는 각 단계를 승리를 예상하면 1로, 패를 예상하면 -1로 분류하여 승률을 계산한다.


◇ 몬테카를로 트리 탐색 (MCTS, Monte Carlo Tree Search)

알파고의 주된 알고리즘은 몬테카를로 트리 탐색이다. 몬테카를로 트리 탐색은 최소-최대 (Minimax) 알고리즘의 성능을 개선한 것으로 모든 경로를 탐색하기가 불가능한 상황에 효율적이다. 몬테카를로 트리 탐색의 절차는 선택(Selection), 확장(Expansion), 시뮬레이션 (Simulation), 역전파(Backpropagation)라는 과정을 거친다.

몬테카를로 트리 탐색(MCTS, Monte Carlo Tree Search)

다. Alpha Zero 알고리즘 : 최적의 공격 지점 분석을 위해 사용

기존의 AlphaGo Lee와 Alpha zero와의 차이점은 supervised learning 단계의 유무라고 볼 수 있다. 수정된 Alpha zero 알고리즘은 self play만으로도 빠르게 학습하고 효과적이기 때문에 기존의 바둑이 아닌 다른 게임 알고리즘에도 수정 없이 그대로 적응 가능하다는 장점이 존재한다. supervised learning의 생략으로 학습 속도가 현저히 느릴 것으로 생각할 수 있으나 alpha zero는 그 예상과는 다른 Elo Rating 상승 추이를 보여준다.

AlphaGo Zero의 Elo Rating 상승추이

◇ Reinforcement learning

Random play의 자가학습을 통해 Reinforcement learning을 활용하여 학습한다.

◇ Feature map 사용

기존 AlphaGo는 흑돌, 백돌을 포함 한 눈, 활로, 꼬부림 등 48가지 특징을 활용했지만, Alpha Zero는 흑돌과 백돌 두 가지만을 활용하여 더 단순한 접근방법을 취했다.

◇ 인공신경망 형태와 구조 변경

Policy networks와 Value networks를 하나로 합친 형태를 활용했다. 인공신경망 구조는 gradient vanishing 현상을 개선한 Residual Network를 활용하는 것으로 변경했다.

◇ Decision Tree 탐색 기법 개선

기존 AlphaGo의 MCTS는 랜덤 시뮬레이션 단계에서 롤 아웃(rollout) 정책을 활용했다. 롤아웃은 policy network와 유사하지만 빠른 속도로 시뮬레이션하기 위해 고안된 간단한 정책이다. 하지만 바둑을 지나치게 단순화한 경향이 있어 AlphaGo Zero에서는 롤 아웃을 활용하지 않았다. 대신, 랜덤 시뮬레이션의 정책으로 앞서 residual network를 적용했다. 인공신경망 기술 기반의 정책은 롤 아웃보다 훨씬 많은 계산을 요구하지만, 정확도가 향상되는 장점이 있다.

라. Softmax function : 분석한 확률을 일반화하여 향후 이동 지점을 결정할 때 사용

◇ 정의

다중 class 문제에서 각 score를 0과 1 사이의 값으로 노말라이즈하는 함수이다. 이 결과로 확률 범위로 나오며 모든 확률을 더하면 1이 된다. 확률이 가장 큰 class가 target class가 된다.

Softmax의 예시

마. Extended Kalman Filter : 적군 및 아군 함선 움직임 예측

◇ 정의

전투함정의 움직임은 비선형적이기 때문에 자연계의 선형적인 모델에만 적용가능한 Kalman filter에 비선형적인 요소를 확장한 Extended Kalman filter(EKF)를 통해 구현한다. EKF 사용 시, 자연계의 움직임은 어느 정도 예측이 가능하며 일반적 움직임 물성을 가지는 것은 당연하게 예측할 수 있다. EKF는 재귀적으로 동작한다. 누적된 데이터와 현재 얻을 수 있는 최선의 데이터로 현 상태를 추정한다. 각 추정 계산은 예측(Prediction) 단계, 보정(Update) 단계로 이루어진다.

◇ 활용

프로젝트의 중요한 목표 중 하나는 함선이 환경적인 측면에 맞춰 미션을 수행하는 것이다. 또한, 실제 함선의 움직임과 비슷하게 설계하는 것이 중요하다. 따라서, 비선형적인 함선의 움직임을 예측하고 설계하고자 EKF를 다음 두 미션에 활용했다.
- 상대방 이전 위치 기반 움직임 예측
- 아군 함선 장애물 회피 및 경로 설정

◇ EKF Design

General Motion Equations
x(tn)=x(t0) + t0tnv(t)*cos(t)dt(1)
y(tn)=y(t0) + t0tnv(t)*sin(t)dt (2)
(t : time, : direction of the ship, v : velocity)

(1)과 (2) 식은 함선의 속도에 영향을 받는다. 속도인 v(t)는 초기값인 v0와 t0에 영향을 받고 가속도에도 영향을 받는다. 마찬가지로 로봇이 방향인 (t)는 초기 각도인 (t0)와 초기 회전 속도, 회전 가속도에 영향을 받는다. v(t0), (t0), (t0) 와 가속도인 v(t), (t)를 대입하면 다음과 같은 식을 얻을 수 있다.
x(tn)=x(t0) + t0tn(v(t0) + t0tv(t)dt )*cos((t0)+t0t((t0)+t0t(t)dt)dt )dt(3)
위와 마찬가지로 y(tn)에 대한 식을 구한 뒤, 함선의 최대속도, 최대 회전가속도, 현재상태 등을 고려해 목표지점으로 나아간다. 아래는 이를 적용한 모습이다.

Approximate Motion Equations

다른 전함이나 장애물의 위치를 피해 목표 지점으로 가는 경로

소프트웨어 설계

가. Class Diagram

◇ 전투 모드 software

<game.py>
GridSet(),GameState(),Game()으로 구성되어 있다.
-grid_update: 각 전함의 미사일 발사 가능 범위를 원으로 표시
-grid_update_2: 전함의 이동경로를 보여줌
-movement_update: 다른 함선들을 장애물로 인식하고 피해가며 설정한 목표 지점까지 움직이게 함
_checkForEndGame: 게임이 끝났는지 확인
-_getValue: 현재 플레이어의 상태를 확인
-takeAction: 이동할 위치를 그리드상에 반영
-_checktokill: 미사일 반경안에 상대방 위치가 들어와 있다면 상대방 공격

<funcs.py>
-playMatchesBetweenVersions, playMatches: 두개의 agent가 서로 경기를 진행

+)run.py에서 self match가 진행되는데 만약 self match가 아니고, 상대방을 직접 입력하고 싶다면 아래와 같이 입력해주면 됨

from game import Game
from funcs import playMatchesBetweenVersions

import loggers as lg
env = Game()
playMatchesBetweenVersions(
env
, 1 # the run version number where the computer player is located
, -1 # the version number of the first player (-1 for human)
, 12 # the version number of the second player (-1 for human)
, 10 # how many games to play
, lg.logger_tourney # where to log the game to
, 0 # which player to go first - 0 for random
)

Class Diagram

◇ Keras를 이용한 residual convolutional network 예시

주된 학습 방법은 R-CNN으로 소프트웨어에는 신경망의 인스턴스를 만드는 방법을 정의하는 Residual_CNN 클래스가 포함되어 있다.

Residual convolutional network

다. UI 설계

◇ 그리드는 90 X 180을 기본으로 한다.
◇ 처음 실행을 하면 아군은 왼쪽에 파란색으로, 적군은 오른쪽에 빨간색으로 위치가 나타난다.
◇ 사격 범위를 원으로 정하며 사격 당한 전함은 그리드 상에서 사라진다.

UI 화면 예시 - 초기 전함의 위치와 사격 범위
UI 화면 예시 - log 파일

결과 및 평가

완료 작품의 소개

가. 프로토타입 사진

◇ AlphaGo-Zero의 4단계(Selection, Expansion, Simulation, Backpropagation)를 기반으로 하여 시뮬레이션을 표현한 화면이다.

Selection
Expansion
Simulation
Backpropagation

나.포스터

인공주능포스터.jpg

설치 (configuration)

◇ 개발 환경 및 라이브러리

Keras 2.1.5 python 3.5 tensorflow 1.6.0 absl-py 0.1.12 appnope 0.1.0 astor 0.6.2 bleach 1.5.0 cycler 0.10.0 decorator 4.2.1 gast 0.2.0 graphviz 0.8.2 grpcio 1.10.0 h5py 2.7.1 ipykernel 4.8.2 ipython 6.2.1 ipython-genutils 0.2.0 jedi 0.11.1 jupyter-client 5.2.3 jupyter-core 4.4.0 kiwisolver 1.0.1 Markdown 2.6.11 matplotlib 2.2.2 numpy 1.14.2 parso 0.1.1 pexpect 4.4.0 pickleshare 0.7.4 prompt-toolkit 1.0.15 pydot 1.2.4 pyparsing 2.2.0 python-dateutil 2.7.1 scipy 1.0.1 simplegeneric 0.8.1 tensorboard 1.6.0 tornado 5.0.1 wcwidth 0.1.7

실행 (run)

가. SW 실행 방법 (단계에 따른 화면 포함)

◇ 실행 방법

main.py를 실행시킨다.
아군과 적군의 전함 개수를 각각 지정한다.
초기 위치가 입력된 화면이 출력된다.

아군과 적군 전함의 개수 지정

아군과 적군 전함의 개수 지정

아군과 적군 전함의 초기 위치 화면

출력된 화면을 닫으면 각 전함의 속력과 위치가 바뀌는 log가 출력된다.

1개의 전함의 속력과 위치 변화 정보 출력

목표 지점으로 이동이 끝나면 전함의 이동 경로가 출력된다.

1개의 전함의 이동 경로 출력
Turn마다 해당 player의 전함들의 목표 지점과 예측 방향 출력

이동경로 창을 닫으면 R-CNN와 MCTS를 이용해 그리드상에서의 전함이 이동할 수 있는 위치의 확률을 txt파일로 확인한다.

logger_mcts.log에서의 예상 확률과 위치 표시1
logger_mcts.log에서의 예상 확률과 위치 표시2

txt파일 의미

matrix : gird를 matrix로 표현. ‘-’는 그 위치에 아무것도 없다는 것을 의미. ‘x’는 아군의 함선을 의미, ‘o’는 적군의 함선을 의미.
PLAYER TURN...1 : 첫번째 경기 진행
action with highest Q + U : action은 도출된 적합 위치. Q + U는 해당 action으로 이동했을 때 경기를 이길 수 있는 확률. 모든 node에 대해 Q+U(이길 수 있는 확률)을 계산한 후 가장 높은 값을 가진 action으로 이동. 그림에서는 16190의 위치로 이동해야 함.
그림에서의 ‘X’ 표시 : 16190의 좌표 위치에 아군이 생긴 것을 의미
PREDICTED VALUE FOR 1 : 상대방 턴까지 끝났을 때 아군이 이길 확률
added node : 노드를 하나하나씩 탐색하며 추가

logger_main.log 에서 MCTS와 NN을 이용하여 예측한 확률 표시1
logger_main.log 에서 MCTS와 NN을 이용하여 예측한 확률 표시2

‘0.02’ : 해당 위치로 움직이면 경기에서 이길 확률

MCTS perceived value / NN perceived value : 플레이어가 현재 어느정도 우위에 있는지 나타내주는 값

◇ 단계별 설명

1단계 : 아군과 적군의 위치, 각 전함의 이동속도와 방향은 랜덤으로 주어진다.
2단계 : 적군의 이동 위치를 예상하여 적군의 위치가 미사일 사격범위에 들어오도록 아군의 위치를 이동한다.
3단계: 사격 범위에 들어오면 미사일을 발사하고, 공격받은 전함은 그리드 상에서 사라진다.
1단계부터 3단계를 계속 반복한다.

완료작품의 평가

가. 평가 기준 및 내용
◇ Open source의 도입이 적절하게 이루어졌는지 여부
◇ 상대방 위치 예측 알고리즘의 정확도가 기대치를 충족하는지 여부
◇ 최적의 공격 위치를 찾기위한 계산 알고리즘의 정확도 여부
◇ 시스템 반응 속도
◇ 사용자의 편의성
◇ 실제 존재하는 무기체계에 도입 가능 여부

작품평가.jpg

향후평가

가.어려웠던 내용들

◇ 그리드 상에서 전투함을 표시할 때 길이를 설정했기 때문에 움직임이 힘들었음
- 전투함의 무게중심만 표시함

◇ Kalman Filter 적용 시 전투함정의 조건으로 위치 속도 및 방향 조건을 바꿔주는 과정에서 시간을 오래 소요

◇ 아군과 적군의 움직임 예상에 적용할 알고리즘 선택
- 실제 지리적 요건을 고려한 landmark와 적군을 장애물로 설정해 목표 위치까지 이동하는 경로에 고려

◇ 그리드 상에 전투함 표시 과정에서 에러가 발견돼 디버깅 후 프로그램의 신뢰성 향상

◇ EKF와 R-CNN 연결
-전체 함선이 칼만필터를 통해 이동
-R-CNN이 칼만필터를 통해 적군 위치 경로 예상 후 전략 수립

나. 기업연계 요구내용

◇ 추후 요구내용
장애물이 가시적으로 나타났으면 함

장애물 도시 요구

개발 사업비 정산

자재소요서

자재소요서.png

관련사업비 내역서

인공주능개발정산비.jpg