위상 증대의 신경진화
Neuroevolution of augmenting topologiesNEAT(NeuroEvolution of Augmenting Topology)는 켄 스탠리가 오스틴의 텍사스 대학에 재학 중이던 2002년 개발한 진화하는 인공신경망(신경진화 기술)의 생성을 위한 유전자 알고리즘(GA)이다.그것은 진화된 해결책의 적합성과 그것의 다양성 사이의 균형을 찾으려고 시도하면서 네트워크의 가중 매개변수와 구조를 변경한다.위상간 교차할 수 있도록 이력표지기로 유전자를 추적하는 것, 혁신을 보존하기 위해 특정화(종의 진화)를 적용하는 것, 단순한 초기 구조로부터 위상들을 증분적으로 개발하는 것("복잡화") 등 3가지 핵심 기법을 적용하는 것에 기초한다.
퍼포먼스
간단한 제어 작업에서 NEAT 알고리즘은 종종 현대의 다른 신경-진화 기술 및 강화 학습 방법보다 효과적인 네트워크에 더 빨리 도착한다.[1][2]
알고리즘.
전통적으로 신경망 위상은 인간 실험자에 의해 선택되며, 효과적인 연결 무게 값은 훈련 절차를 통해 학습된다.이는 적절한 위상을 결정하기 위해 시행착오 과정이 필요할 수 있는 상황을 산출한다.NEAT은 무게 값과 신경 네트워크의 적절한 위상을 동시에 학습하려고 시도하는 위상 및 무게 진화를 위한 인공신경망(TWEANN)의 예다.
네트워크를 GA에 대한 표현형으로 인코딩하기 위해 NEAT는 모든 연결과 뉴런이 명시적으로 표현되는 직접 인코딩 방식을 사용한다.이는 모든 연결을 명시적으로 나타내지 않고 네트워크를 구성할 수 있는 규칙과 뉴런을 정의하여 보다 콤팩트한 표현을 허용하는 간접 인코딩 방식과는 대조적이다.
NEAT 접근은 오직 입력 뉴런과 출력 뉴런의 지각자 같은 피드-포워드 네트워크로 시작한다.별개의 단계를 통해 진화가 진행됨에 따라, 새로운 뉴런을 연결 경로에 삽입하거나 (이전의 연결되지 않은) 뉴런들 사이에 새로운 연결을 만들어냄으로써 네트워크 위상의 복잡성이 커질 수 있다.
경쟁 규약
경쟁적인 관습 문제는 정보를 표현형식으로 표현하는 방법이 하나 이상 있을 때 발생한다.예를 들어, 게놈에 뉴런 A, B, C가 포함되어 있고 [A B C]로 대표되는 경우, 이 게놈을 동일한 게놈(기능성 측면에서)과 교차시키지만 명령된 [C B A] 교차가 누락된 정보([A B A] 또는 [C B C])가 생성된다면, 사실 이 예에서 정보의 1/3이 손실되었다.NEAT은 새로운 유전자가 추가될수록 증가하는 글로벌 혁신 번호를 사용하여 유전자의 역사를 추적함으로써 이 문제를 해결한다.새로운 유전자를 추가하면 글로벌 혁신 번호가 증가하여 해당 유전자에 할당된다.따라서 숫자가 높을수록 최근에 유전자가 추가되었다.둘 이상의 게놈에서 동일한 돌연변이가 발생할 경우 특정 세대에 대해서는 둘 다 동일한 숫자가 부여되지만, 그 이상의 돌연변이 수는 무한정 변하지 않는다.
NEAT는 이러한 혁신 번호를 통해 서로 교차할 수 있는 유전자를 일치시킬 수 있다.[1]
실행
Ken Stanley에 의한 원래 실행은 GPL에 의해 출판된다.그것은 GNU 계획 통역사 Guile과 통합된다.NEAT의 이 구현은 NEAT 알고리즘의 구현을 위한 전통적인 기본 출발점으로 간주된다.
확장
rtNEAT
2003년 스탠리는 대부분의 유전 알고리즘이 사용하는 세대 반복을 통해서가 아니라 실시간으로 진화가 이루어질 수 있도록 NEAT에 대한 확장을 고안했다.기본적인 생각은 인구의 각 개인에게 "평생" 타이머로 인구를 지속적으로 평가하는 것이다.네트워크의 타이머가 만료되면 현재의 피트니스 조치가 인구 하단에 가까운지 여부를 검사하고, 만약 그렇다면 그것은 폐기되고 두 명의 높은 피트니스 부모로부터 길러진 새로운 네트워크로 대체된다.새로운 네트워크에 타이머가 설정되고 그것은 진행 중인 평가에 참여하기 위해 모집단에 배치된다.
rtNEAT의 첫 응용은 Neuro-Evolving Robotic Operates, 즉 NERO라는 비디오 게임이다.경기 1단계에서는 개인 플레이어가 '샌드박스'에 로봇을 배치해 원하는 전술 독트린으로 훈련한다.일단 로봇 컬렉션이 훈련되면, 2단계 플레이를 통해 플레이어는 다른 플레이어가 훈련한 로봇과의 전투에서 자신의 로봇을 피팅할 수 있으며, 이를 통해 훈련 요법이 얼마나 잘 로봇을 전투에 대비시킬 수 있는지 알 수 있다.
단계적 가지치기
콜린 그린이 개발한 켄 스탠리의 NEAT의 확장에는 진화 과정에서 후보 솔루션의 네트워크 토폴로지를 주기적으로 다듬는 작업이 추가된다.이 추가는 무한 자동 성장이 불필요한 구조를 발생시킬 것이라는 우려를 다루었다.
하이퍼NEAT
하이퍼NEAT는 대규모 구조 진화에 특화되어 있다.원래 CPPN 이론을 바탕으로 한 것으로, 활발한 연구 분야다.
cgNEAT
콘텐츠 생성 NEAT(content-Generation NEAT)는 사용자 선호도에 따라 맞춤형 비디오 게임 콘텐츠를 진화시킨다.cgNEAT를 최초로 구현한 비디오 게임은 플레이어 사용 통계를 바탕으로 독특한 입자 시스템 무기를 진화시키는 우주 촬영 게임인 은하계 암스 레이스다.[3]게임 내 각 입자 시스템 무기는 NEAT 입자 인터랙티브 아트 프로그램의 진화 기법과 유사하게 진화된 CPPN에 의해 제어된다.
오드나트
odNEAT는 멀티 로봇 시스템을 위해 고안된 NEAT의 온라인 및 분산형 버전이다.[4]odNEAT는 인공신경망 기반 제어기의 매개변수와 위상을 지속적으로 최적화하기 위해 작업 수행 중에 온보드 로봇 자체로 실행된다.이런 식으로 odNEAT를 실행하는 로봇은 변화하는 환경에 적응하고 과제를 수행하면서 새로운 행동을 배울 수 있는 잠재력을 가지고 있다.온라인 진화 과정은 물리적으로 분산된 섬 모델에 따라 구현된다.각 로봇은 후보 솔루션의 내부 모집단(섬 내 변동)을 최적화하고, 두 개 이상의 로봇이 후보 솔루션을 만날 때(섬 간 마이그레이션) 후보 솔루션을 교환한다.이러한 방식으로 각 로봇은 잠재적으로 자급자족하며 진화 과정은 여러 로봇들 간의 컨트롤러 교환을 통해 효율적 컨트롤러의 보다 빠른 합성을 가능하게 한다.
참고 항목
참조
- ^ a b 케네스 O.스탠리와 리스토 미익쿨라넨(2002년)."위상 증대를 통한 신경망 진화"진화 연산 10(2): 99-127
- ^ 매튜 E.테일러, 시몬 화이트슨, 피터 스톤(2006년)."강화학습영역의 진화적 및 일시적 차이의 비교".GECCO 2006: 유전자 및 진화 연산 회의의 진행.
- ^ 에린 J. 헤이스팅스, 라탄 K.구하, 그리고 케네스 O.스탠리(2009년)."갤럭틱 암스 레이스 비디오 게임의 자동 콘텐츠 생성 ". IEEE 게임 내 컴퓨터 인텔리전스와 AI에 관한 거래, 4, 1, 2,45,263, 뉴욕: IEEE 프레스, 2009.
- ^ Silva, Fernando; Urbano, Paulo; Correia, Luís; Christensen, Anders Lyhne (2015-09-15). "odNEAT: An Algorithm for Decentralised Online Evolution of Robotic Controllers". Evolutionary Computation. 23 (3): 421–449. doi:10.1162/evco_a_00141. hdl:10071/10504. PMID 25478664. S2CID 20815070.
참고 문헌 목록
- Kenneth O. Stanley & Risto Miikkulainen (2002). "Evolving Neural Networks Through Augmenting Topologies" (PDF). Evolutionary Computation. 10 (2): 99–127. CiteSeerX 10.1.1.638.3910. doi:10.1162/106365602320169811. PMID 12180173. S2CID 498161.
- Kenneth O. Stanley & Risto Miikkulainen (2002). "Efficient Reinforcement Learning Through Evolving Neural Network Topologies" (PDF). Proceedings of the Genetic and Evolutionary Computation Conference (GECCO-2002).
- Kenneth O. Stanley; Bobby D. Bryant & Risto Miikkulainen (2003). "Evolving Adaptive Neural Networks with and without Adaptive Synapses" (PDF). Proceedings of the 2003 IEEE Congress on Evolutionary Computation (CEC-2003).
- Colin Green (2004). "Phased Searching with NEAT: Alternating Between Complexification And Simplification".
{{cite journal}}:Cite 저널은 필요로 한다.journal=(도움말) - Kenneth O. Stanley; Ryan Cornelius; Risto Miikkulainen; Thomas D’Silva & Aliza Gold (2005). "Real-Time Learning in the NERO Video Game" (PDF). Proceedings of the Artificial Intelligence and Interactive Digital Entertainment Conference (AIIDE 2005) Demo Papers.
- Matthew E. Taylor; Shimon Whiteson & Peter Stone (2006). "Comparing Evolutionary and Temporal Difference Methods in a Reinforcement Learning Domain" (PDF). GECCO 2006: Proceedings of the Genetic and Evolutionary Computation Conference.
- Shimon Whiteson & Daniel Whiteson (2007). "Stochastic Optimization for Collision Selection in High Energy Physics" (PDF). IAAI 2007: Proceedings of the Nineteenth Annual Innovative Applications of Artificial Intelligence Conference. arXiv:hep-ex/0607012. Bibcode:2006hep.ex....7012W. Archived from the original (PDF) on 2015-10-28.
구현
- 스탠리 오리지널, mtNEAT 및 c++용 rtNEAT
- ECJ, JNEAT, NEAT 4J, Java용 ANJI
- C#용 SharpNEAT
- C++ 및 Python용 MultiNEAT 및 mtNEAT
- 파이톤을 위한 깔끔한 피톤
- Python용 깔끔한 피톤 포크
- Java 및 C#용 인코그
- 파이톤용 완두콩
- 루비를 위한 루비NEAT
- Javascript를 위한 깔끔한 JJ들
- 정확한 구현은 아니지만 Javascript를 위한 Neataptic
- 자바스크립트용 시냅틱
- 일렉시르를 위한 깔끔한 엑스
- C++용 EvolutionNet
외부 링크
- NEAT 홈페이지
- "UCF의 진화 복잡성 연구 그룹" - 켄 스탠리 현 연구 그룹
- NERO: Neuro-Evolving Robotic Operators - rtNEAT의 예
- GAR: 은하 군비 레이스 - cgNE의 예AT
- "PicBreeder.org" - CPPN에 의해 생성된 온라인 협업 예술은 NEAT과 함께 진화했다.
- "EndlessForms.com" - CPPN으로 인코딩되고 NEAT로 진화한 3D 개체를 대화식으로 진화시키는 Picbreather의 3D 버전.
- 비콘 블로그:신경진화란 무엇인가?
- MarI/O - Machine Learning for Video Games, Super Mario World를 재생하기 위한 NEATE 학습의 구현을 보여주는 유튜브 동영상
- "GekkoQuant.com" - NEAT in R에서 NEAT를 사용하여 고전적인 폴 밸런싱 문제 해결을 포함한 NEAT에 대한 시각적 튜토리얼 시리즈
- "인공지능은 마리오 레벨을 34번의 시도만으로 학습한다. NEAT은 Mario 레벨을 Mari/O 프로그램을 통해 설명했다.
