KR20210028107A - 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들 - Google Patents

항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들 Download PDF

Info

Publication number
KR20210028107A
KR20210028107A KR1020200107778A KR20200107778A KR20210028107A KR 20210028107 A KR20210028107 A KR 20210028107A KR 1020200107778 A KR1020200107778 A KR 1020200107778A KR 20200107778 A KR20200107778 A KR 20200107778A KR 20210028107 A KR20210028107 A KR 20210028107A
Authority
KR
South Korea
Prior art keywords
neural network
control input
control
state data
aircraft
Prior art date
Application number
KR1020200107778A
Other languages
English (en)
Inventor
양 첸
딥팍 코슬라
케빈 마틴
Original Assignee
더 보잉 컴파니
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 더 보잉 컴파니 filed Critical 더 보잉 컴파니
Publication of KR20210028107A publication Critical patent/KR20210028107A/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/082Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • G09B9/02Simulators for teaching or training purposes for teaching control of vehicles or other craft
    • G09B9/08Simulators for teaching or training purposes for teaching control of vehicles or other craft for teaching control of aircraft, e.g. Link trainer
    • G09B9/50Automatically directing the course of the aircraft
    • G06N3/0454
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B13/00Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion
    • G05B13/02Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric
    • G05B13/0265Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion
    • G05B13/027Adaptive control systems, i.e. systems automatically adjusting themselves to have a performance which is optimum according to some preassigned criterion electric the criterion being a learning criterion using neural networks only
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/0088Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot characterized by the autonomous decision making process, e.g. artificial intelligence, predefined behaviours
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/08Control of attitude, i.e. control of roll, pitch, or yaw
    • G05D1/0808Control of attitude, i.e. control of roll, pitch, or yaw specially adapted for aircraft
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05DSYSTEMS FOR CONTROLLING OR REGULATING NON-ELECTRIC VARIABLES
    • G05D1/00Control of position, course or altitude of land, water, air, or space vehicles, e.g. automatic pilot
    • G05D1/10Simultaneous control of position or course in three dimensions
    • G05D1/101Simultaneous control of position or course in three dimensions specially adapted for aircraft
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/004Artificial life, i.e. computing arrangements simulating life
    • G06N3/006Artificial life, i.e. computing arrangements simulating life based on simulated virtual individual or collective life forms, e.g. social simulations or particle swarm optimisation [PSO]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • G09B9/02Simulators for teaching or training purposes for teaching control of vehicles or other craft
    • G09B9/08Simulators for teaching or training purposes for teaching control of vehicles or other craft for teaching control of aircraft, e.g. Link trainer
    • GPHYSICS
    • G09EDUCATION; CRYPTOGRAPHY; DISPLAY; ADVERTISING; SEALS
    • G09BEDUCATIONAL OR DEMONSTRATION APPLIANCES; APPLIANCES FOR TEACHING, OR COMMUNICATING WITH, THE BLIND, DEAF OR MUTE; MODELS; PLANETARIA; GLOBES; MAPS; DIAGRAMS
    • G09B9/00Simulators for teaching or training purposes
    • G09B9/02Simulators for teaching or training purposes for teaching control of vehicles or other craft
    • G09B9/08Simulators for teaching or training purposes for teaching control of vehicles or other craft for teaching control of aircraft, e.g. Link trainer
    • G09B9/42Aircraft, aircraft simulator or means connected thereto, travelling on the ground or water during simulated flight training

Abstract

디바이스는 제어 입력 생성기 및 뉴럴 네트워크 트레이너를 포함한다. 비행 시뮬레이터는, 제어 입력 생성기로부터의 제1 제어 입력에 응답하는 제1 상태 데이터를 생성하도록 그리고 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 제1 상태 데이터를 제공하도록 구성된다. 제어 입력 생성기는 또한, 랜덤 값에 기반하여, 제1 제어 입력에 적용된 랜덤 오프셋에 기반하는 랜덤화된 오프셋 제어 입력과 후보 제2 제어 입력 사이에서 제2 제어 입력을 선택하도록 구성된다. 비행 시뮬레이터는 제어 입력 생성기로부터의 제2 제어 입력에 응답하는 제2 상태 데이터를 생성하도록 구성된다. 뉴럴 네트워크 트레이너는, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하도록 구성된다.

Description

항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들{SYSTEMS AND METHODS FOR TRAINING A NEURAL NETWORK TO CONTROL AN AIRCRAFT}
본 개시내용은 일반적으로, 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 것과 관련된다.
인공 지능 및 머신 러닝의 발전들이 자율 주행 비히클(self-driving vehicle)들이 달성가능한 타겟이 되게 하고 있지만, 항공기는 계속해서 조종사들에 의해 동작된다. 자율 항공기를 트레이닝하기 위해 인간 조종사들로부터 데이터를 수집하는 것은 시간 소모적이고 값비쌀 수 있다. 이전 조종사 경험에 기반하는 수집된 트레이닝 데이터는 항공기가 접할 수 있는 잠재적인 새로운 시나리오들을 커버하지 않을 것이다.
특정 구현에서, 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스는 메모리, 제어 입력 생성기 및 뉴럴 네트워크 트레이너를 포함한다. 메모리는 제1 뉴럴 네트워크를 저장하도록 구성된다. 제어 입력 생성기는 제1 제어 입력을 비행 시뮬레이터에 제공하도록 구성된다. 비행 시뮬레이터는, 제1 제어 입력에 응답하는 제1 상태 데이터를 생성하도록 그리고 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 입력으로서 제1 상태 데이터를 제공하도록 구성된다. 제어 입력 생성기는 또한, 랜덤 값에 기반하여 비행 시뮬레이터에 대한 제2 제어 입력을 선택하도록 구성된다. 제2 제어 입력은 후보 제2 제어 입력과 랜덤화된 오프셋 제어 입력 사이에서 선택된다. 랜덤화된 오프셋 제어 입력은 제1 제어 입력에 적용된 랜덤 오프셋에 기반한다. 제어 입력 생성기는 추가로, 제2 제어 입력을 비행 시뮬레이터에 제공하도록 구성된다. 비행 시뮬레이터는 제2 제어 입력에 응답하는 제2 상태 데이터를 생성하도록 구성된다. 뉴럴 네트워크 트레이너는, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하도록 구성된다.
다른 특정 구현에서, 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법은 제1 제어 입력을 비행 시뮬레이터에 제공하는 단계를 포함한다. 비행 시뮬레이터는, 제1 제어 입력에 응답하는 제1 상태 데이터를 생성하며, 그리고 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 입력으로서 제1 상태 데이터를 제공한다. 방법은 또한, 랜덤 값에 기반하여 비행 시뮬레이터에 대한 제2 제어 입력을 선택하는 단계를 포함한다. 제2 제어 입력은 후보 제2 제어 입력과 랜덤화된 오프셋 제어 입력 사이에서 선택된다. 랜덤화된 오프셋 제어 입력은 제1 제어 입력에 적용된 랜덤 오프셋에 기반한다. 방법은 제2 제어 입력을 비행 시뮬레이터에 제공하는 단계를 더 포함한다. 비행 시뮬레이터는 제2 제어 입력에 응답하는 제2 상태 데이터를 생성한다. 방법은 또한, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하는 단계를 포함한다.
다른 특정 구현에서, 컴퓨터-판독가능 저장 디바이스는, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 동작들을 개시하거나, 수행하거나 또는 제어하게 하는 명령들을 저장한다. 동작들은 제1 제어 입력을 비행 시뮬레이터에 제공하는 동작을 포함한다. 비행 시뮬레이터는, 제1 제어 입력에 응답하는 제1 상태 데이터를 생성하며, 그리고 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 입력으로서 제1 상태 데이터를 제공한다. 동작들은 또한, 랜덤 값에 기반하여 비행 시뮬레이터에 대한 제2 제어 입력을 선택하는 동작을 포함한다. 제2 제어 입력은 후보 제2 제어 입력과 랜덤화된 오프셋 제어 입력 사이에서 선택된다. 랜덤화된 오프셋 제어 입력은 제1 제어 입력에 적용된 랜덤 오프셋에 기반한다. 동작들은 제2 제어 입력을 비행 시뮬레이터에 제공하는 동작을 더 포함한다. 비행 시뮬레이터는 제2 제어 입력에 응답하는 제2 상태 데이터를 생성한다. 동작들은 또한, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하는 동작을 포함한다.
본원에서 설명된 특징들, 기능들 및 장점들은 다양한 구현들에서 독립적으로 달성될 수 있거나, 또는 또 다른 구현들에서 조합될 수 있으며, 이들에 대한 추가적인 세부사항들은 다음의 설명 및 도면들을 참조하여 발견될 수 있다.
도 1은 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하도록 구성된 시스템을 예시하는 다이어그램이다.
도 2는 도 1의 시스템의 뉴럴 네트워크의 예의 다이어그램이다.
도 3은 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법의 예의 흐름도를 예시하는 다이어그램이다.
도 4는 도 1의 뉴럴 네트워크를 포함하는 항공기의 라이프 사이클을 예시하는 흐름도이다.
도 5는 뉴럴 네트워크에 의해 제어되도록 구성된 항공기의 다이어그램이다.
도 6은 본 개시내용에 따른, 컴퓨터-구현 방법들 및 컴퓨터-실행가능 프로그램 명령들(또는 코드)의 양상들을 지원하도록 구성된 컴퓨팅 디바이스를 포함하는 컴퓨팅 환경의 블록 다이어그램이다.
본원에서 개시된 양상들은, 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들을 제시한다. 제어 입력들을 비행 시뮬레이터에 제공하고, 제어 입력들에 응답하는, 비행 시뮬레이터에 의해 생성된 상태 데이터에 기반하여 보상 값들을 결정하며, 보상 값들에 기반하여 뉴럴 네트워크의 가중치들을 업데이트함으로써, 뉴럴 네트워크가 트레이닝된다. 상태 데이터는, 비행 시뮬레이터에서의 특정 항공기 타입의 항공기 시뮬레이션의 상태를 표시한다. 뉴럴 네트워크는, 뉴럴 네트워크의 가중치들에 기반하여, 상태 데이터에 응답하는 제어 입력들을 생성하도록 구성된다. 트레이닝된 뉴럴 네트워크는 특정 항공기 타입의 항공기(예컨대, 실세계 항공기)를 제어하기 위해 사용될 수 있다. 비행 시뮬레이터에 기반하여 뉴럴 네트워크를 트레이닝하는 것은, 조종사 데이터와 비교할 때, 더 적은 자원들(예컨대, 시간 및 비용)을 소모한다. 비행 시뮬레이터를 사용하여 트레이닝된 뉴럴 네트워크는 또한, 비행 시뮬레이터가 조종사들이 대개 접하지 않는 시나리오들을 포함하는 다양한 시나리오들을 시뮬레이팅하도록 설계될 수 있기 때문에, 더욱 견고할 가능성이 높다.
도면들 및 다음의 설명은 특정 예시적인 실시예들을 예시한다. 본원에서 명시적으로 설명되거나 또는 도시되지 않지만, 본원에서 설명된 원리들을 구현하며, 본 설명 다음의 청구항들의 범위 내에 포함되는 다양한 어레인지먼트들을 당업자들이 창안할 수 있을 것임이 인식될 것이다. 더욱이, 본원에서 설명된 임의의 예들은 본 개시내용의 원리들을 이해하는 것을 보조하는 것으로 의도되며, 제한 없이, 있는 그대로 구성되어야 한다. 결과적으로, 본 개시내용은 아래에서 설명된 특정 실시예들 또는 예들로 제한되는 것이 아니라, 청구항들 및 그들의 등가물들에 의해 제한된다.
특정 구현들은 도면들을 참조하여 본원에서 설명된다. 설명에서, 공통 특징들은 도면들 전체에 걸쳐 공통 참조 번호들에 의해 표기된다. 본원에서 사용된 바와 같이, 다양한 용어는 특정 구현들을 설명하려는 목적을 위해서만 사용되며, 제한하는 것으로 의도되지 않는다. 예컨대, 단수형들은, 문맥이 명확하게 달리 표시하지 않는 한, 복수형들도 또한 포함하는 것으로 의도된다. 추가로, 본원에서 설명된 일부 특징들은 일부 구현들에서는 단수이고, 다른 구현들에서는 복수이다. 본원에서 참조의 용이함을 위해, 그러한 특징들은 일반적으로 "하나 이상의" 특징들로서 도입되고, 후속하여, 다수의 특징들과 관련된 양상들이 설명되지 않는 한, 단수로 지칭된다.
"포함하다" 및 "포함하는"이란 용어들은 "포함하다" 또는 "포함하는"과 상호교환가능하게 사용된다. 부가적으로, "여기서"란 용어는 "그 곳에서"라는 용어와 상호교환가능하게 사용된다. 본원에서 사용된 바와 같이, "예시적인" 것은 예, 구현 및/또는 양상을 표시하며, 제한하는 것으로서 해석되거나 또는 선호도 또는 바람직한 구현을 표시하는 것으로서 해석되어서는 안된다. 본원에서 사용된 바와 같이, 엘리먼트, 이를테면, 구조, 컴포넌트, 동작 등을 수정하기 위해 사용되는 서수 용어(예컨대, "제1", "제2", "제3" 등)는 그 자체로 다른 엘리먼트에 대한 이 엘리먼트의 어떤 우선순위 또는 순서도 표시하는 것이 아니라, (단지 서수 용어의 사용을 위해) 동일한 이름을 갖는 다른 엘리먼트와 이 엘리먼트를 구별할 뿐이다. 본원에서 사용된 바와 같이, "세트"란 용어는 하나 이상의 엘리먼트들의 그룹핑을 지칭하고, "복수"란 용어는 다수의 엘리먼트들을 지칭한다.
본원에서 사용된 바와 같이, "생성", "계산", "사용", "선택", "접근" 및 "결정"은 문맥이 달리 표시하지 않는 한 상호교환가능하다. 예컨대, 파라미터(또는 신호)를 "생성", "계산" 또는 "결정"하는 것은 파라미터(또는 신호)를 능동적으로 생성, 계산 또는 결정하는 것을 지칭할 수 있거나, 또는 이를테면 다른 컴포넌트 또는 디바이스에 의해 이미 생성되어 있는 파라미터(또는 신호)를 사용, 선택 또는 이에 접근하는 것을 지칭할 수 있다. 본원에서 사용된 바와 같이, "커플링된" 것은 "통신가능하게 커플링된", "전기적으로 커플링된" 또는 "물리적으로 커플링된" 것을 포함할 수 있고, 또한(또는 대안적으로) 이들의 임의의 조합들을 포함할 수 있다. 2 개의 디바이스들(또는 컴포넌트들)은 하나 이상의 다른 디바이스들, 컴포넌트들, 와이어들, 버스들, 네트워크들(예컨대, 유선 네트워크, 무선 네트워크 또는 또는 이들의 조합) 등을 통해 간접적으로 또는 직접적으로 커플링(예컨대, 통신가능하게 커플링, 전기적으로 커플링 또는 물리적으로 커플링)될 수 있다. 전기적으로 커플링되는 2 개의 디바이스들(또는 컴포넌트들)은 동일한 디바이스에 또는 상이한 디바이스들에 포함될 수 있으며, 예시적인 비-제한적 예들로서 전자장치, 하나 이상의 커넥터들 또는 유도 결합을 통해 연결될 수 있다. 일부 구현들에서, 이를테면 전기 통신에서 통신가능하게 커플링되는 2 개의 디바이스들(또는 컴포넌트들)은 직접적으로 또는 간접적으로, 이를테면, 하나 이상의 와이어들, 버스들, 네트워크들 등을 통해 전기 신호들(디지털 신호들 또는 아날로그 신호들)을 전송 및 수신할 수 있다. 본원에서 사용된 바와 같이, "직접적으로 커플링"된 것은 중간 컴포넌트들 없이 커플링(예컨대, 통신가능하게 커플링, 전기적으로 커플링 또는 물리적으로 커플링)되는 2 개의 디바이스들을 설명하기 위해 사용된다.
도 1은 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하도록 구성되는 시스템(100)의 예를 도시한다. 시스템(100)은 타겟 뉴럴 네트워크(106), 메인 뉴럴 네트워크(104), 메모리(132) 또는 이들의 조합에 통신가능하게 커플링된 비행 시뮬레이터(146)를 포함한다. 예컨대, 비행 시뮬레이터(146)는 타겟 뉴럴 네트워크(106), 메인 뉴럴 네트워크(104), 메모리(132) 또는 이들의 조합과 데이터를 교환하도록 구성된다. 시스템(100)은 비행 시뮬레이터(146), 메모리(132) 또는 둘 모두에 커플링된 보상 계산기(142)를 포함한다. 시스템(100)은 메모리(132), 보상 계산기(142), 타겟 뉴럴 네트워크(106), 메인 뉴럴 네트워크(104) 또는 이들의 조합에 커플링된 뉴럴 네트워크 트레이너(140)를 포함한다. 시스템(100)은 또한, 메모리(132), 메인 뉴럴 네트워크(104), 오프셋 계산기(148), 비행 시뮬레이터(146) 또는 이들의 조합에 커플링된 제어 입력 생성기(144)를 포함한다.
특정 양상에서, 뉴럴 네트워크 트레이너(140)는 DQN(deep Q-Network) 기법들에 기반하여 메인 뉴럴 네트워크(104)를 트레이닝하도록 구성된다. 예컨대, 뉴럴 네트워크 트레이너(140)는 메인 뉴럴 네트워크(104)의 지연된 사본(delayed copy)에 대응하는 타겟 뉴럴 네트워크(106)을 사용하여 메인 뉴럴 네트워크(104)를 트레이닝한다. 예시를 위해, 뉴럴 네트워크 트레이너(140)는, 타겟 뉴럴 네트워크(106)의 가중치들의 이전 업데이트에 후속하여 메인 뉴럴 네트워크(104)의 가중치들에 대해 적어도 임계 수(threshold count)의 업데이트들이 수행되었다고 결정하는 것에 대한 응답으로, 메인 뉴럴 네트워크(104)의 가중치들을 복사함으로써 타겟 뉴럴 네트워크(106)의 가중치들을 업데이트하도록 구성된다.
다음의 설명에서, 도 1의 시스템(100)에 의해 수행되는 다양한 기능들이 특정 컴포넌트들 또는 모듈들에 의해 수행되는 것으로서 설명된다는 것이 주목되어야 한다. 그러나, 컴포넌트들과 모듈들의 이러한 분할은 예시만을 위한 것이다. 대안적인 양상에서, 특정 컴포넌트 또는 모듈에 의해 수행되는, 본원에서 설명된 기능은 다수의 컴포넌트들 또는 모듈들 사이에서 분할될 수 있다. 게다가, 대안적인 양상에서, 도 1의 2 개 이상의 컴포넌트들 또는 모듈들은 단일 컴포넌트 또는 모듈에 통합될 수 있다. 도 1에서 예시된 각각의 컴포넌트 또는 모듈은 하드웨어(예컨대, FPGA(field-programmable gate array) 디바이스, ASIC(application-specific integrated circuit), DSP(digital signal processor), 제어기 등), 소프트웨어(예컨대, 프로세서에 의해 실행가능한 명령들) 또는 이들의 임의의 조합을 사용하여 구현될 수 있다.
특정 양상에서, 뉴럴 네트워크 트레이너(140)는 메인 뉴럴 네트워크(104)를 트레이닝하기 위해 강화 학습 메커니즘을 사용하도록 구성된다. 강화 학습 메커니즘은, (보상 계산기(142)에 의해 계산되는) 보상 값을 증가시키거나 또는 최대화하려고 시도한다. 특정 예에서, 비행 시뮬레이터(146)는 항공기 시뮬레이션의 상태를 표현하는 상태 데이터를 생성한다. 메인 뉴럴 네트워크(104)는 상태 데이터에 기반하여 제어 입력을 생성한다. 예컨대, 메인 뉴럴 네트워크(104)는 상태 데이터를 입력으로서 사용하고, 복수의 출력들에 대한 복수의 예측 메인 보상 값들을 생성한다. 본원에서 사용된 바와 같이, "예측 메인 보상 값"은 복수의 출력들 중 특정 출력이 비행 시뮬레이터(146)에 제어 입력으로서 제공되면 메인 뉴럴 네트워크(104)가 결과일 것으로 예측하는 보상 값을 지칭한다. 복수의 출력들 각각은 상이한 제어 입력에 대응한다. 특정 예에서, 메인 뉴럴 네트워크(104)가 항공기의 엘리베이터 세팅을 제어하도록 트레이닝되면, 복수의 출력들은 비행 시뮬레이터(146)에 입력들로서 제공될 수 있는 다양한 엘리베이터 세팅 값들(예컨대, 엘리베이터 포지션 각도들)에 대응한다. 이 예에서, 특정 엘리베이터 세팅 값에 대한 예측 메인 보상 값은, 특정 엘리베이터 세팅 값이 비행 시뮬레이터(146)에 제어 입력으로서 제공되면 보상 계산기(142)가 생성할 것으로 메인 뉴럴 네트워크(104)가 예측하는 보상 값을 표시한다. 특정 구현에서, 예측 메인 보상 값(117)은 각각의 가능한 제어 입력에 대한 하나의 예측 보상 값을 포함하는 보상 값들의 세트를 포함하는 벡터이다. 예컨대, 제어 입력들이 엘리베이터 세팅 값들에 대응할 때, 예측 메인 보상 값(117)은 각각의 허용된 엘리베이터 세팅 값에 대한 예측 보상 값을 표시할 수 있다. 대안적으로, 예측 메인 보상 값(117)은 벡터의 가장 높은 예측 보상 값에 대응하는 단일 값을 포함할 수 있다.
복수의 메인 보상 값들 중 가장 높은 예측 메인 보상 값과 연관된 제어 입력을 식별하는 정보, 가장 높은 예측 보상 값 또는 예측 메인 보상 값들의 벡터는 후보 제어 입력(107)을 표시하기 위해 제어 입력 생성기(144)에 제공된다. 제어 입력 생성기(144)는 비행 시뮬레이터(146)에 제공되는 제어 입력을 선택하거나 또는 생성한다. 비행 시뮬레이터(146)는 제어 입력 생성기(144)에 의해 제공된 제어 입력에 기반하여 새로운 상태 데이터를 생성한다. 보상 계산기(142)는 상태 데이터에 의해 표시된 항공기 시뮬레이션 상태의 변화에 기반하여(예컨대, 이전 상태 데이터와 새로운 상태 데이터의 비교에 기반하여) 보상 값(예컨대, 실제 보상 값 또는 검출된 보상 값)을 결정한다.
뉴럴 네트워크 트레이너(140)는 보상 값에 적어도 부분적으로 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다. 예컨대, 뉴럴 네트워크 트레이너(140)는 보상 값에 기반하여 가중치들(121)을 결정하고, 가중치들(121)에 기반하여 메인 뉴럴 네트워크(104)의 가중 노드-연결들을 업데이트한다. 따라서, 메인 뉴럴 네트워크(104)는, "우수한" 보상 값들(예컨대, 포지티브 보상 값들)을 야기하는 제어 입력들을 생성하도록 그리고 "불량한" 보상 값들(예컨대, 네거티브 보상 값들)을 야기하는 제어 입력들을 생성하는 것을 억제하도록 트레이닝된다.
특정 양상에서, 뉴럴 네트워크 트레이너(140)는 메인 뉴럴 네트워크(104)의 지연된 사본인 타겟 뉴럴 네트워크(106)에 기반하여 메인 뉴럴 네트워크(104)를 트레이닝하도록 구성된다. 예컨대, 뉴럴 네트워크 트레이너(140)는, 특정 시뮬레이션 시간 단계(t+1)에 대해 타겟 뉴럴 네트워크(106)에 의해 생성된 예측 타겟 보상 값(119) 및 이전 시뮬레이션 시간 단계(t)에 대해 메인 뉴럴 네트워크(104)에 의해 생성된 예측 메인 보상 값(127)에 적어도 부분적으로 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다. 본원에서 사용된 바와 같이, "예측 타겟 보상 값"은 특정 제어 입력이 비행 시뮬레이터(146)에 제공되면 타겟 뉴럴 네트워크(106)가 결과일 것으로 예측하는 보상 값을 지칭한다. 메인 뉴럴 네트워크(104)와 같이, 타겟 뉴럴 네트워크(106)는, 비행 시뮬레이터(146)로부터의 상태 데이터(105)에 기반하여, 가능한 제어 입력에 대응하는 각각의 예측 타겟 보상 값(119)을 갖는 복수의 예측 타겟 보상 값들을 생성한다. 특정 구현에서, 예측 타겟 보상 값(119)은 각각의 가능한 제어 입력에 대한 하나의 예측 보상 값을 포함하는 보상 값들의 세트를 포함하는 벡터이다. 예컨대, 제어 입력들이 엘리베이터 세팅 값들에 대응할 때, 예측 타겟 보상 값(119)은 각각의 허용된 엘리베이터 세팅 값에 대한 예측 보상 값을 표시할 수 있다. 대안적으로, 예측 타겟 보상 값(119)은 벡터의 가장 높은 예측 보상 값에 대응하는 단일 값을 포함할 수 있다.
뉴럴 네트워크 트레이너(140)는 예측 메인 보상 값(127) 및 예측 타겟 보상 값(119)에 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다. 특정 양상에서, 타겟 뉴럴 네트워크(106)는 메인 뉴럴 네트워크(104)보다 더욱 안정적인데, 그 이유는 타겟 뉴럴 네트워크(106)가 덜 자주 업데이트되기 때문이다. 타겟 뉴럴 네트워크(106)(예컨대, 지연된 뉴럴 네트워크)의 예측 타겟 보상 값들에 기반하여 메인 뉴럴 네트워크(104)를 업데이트하는 것은 메인 뉴럴 네트워크(104)가, 불안정하게 만드는 피드백 루프들에 빠질 가능성을 감소시킨다.
특정 양상에서, 제어 입력 생성기(144)는, 메인 뉴럴 네트워크(104)의 출력에 기반한 후보 제어 입력(107)과 랜덤화된 제어 입력 사이에서 랜덤하게 선택하도록 구성된다. 제어 입력 생성기(144)는 선택된 제어 입력을 비행 시뮬레이터(146)에 제공하도록 구성된다. 메인 뉴럴 네트워크(104)에 의해 생성된 제어 입력들에 부가하여, 랜덤화된 제어 입력들을 사용하는 것은, 메인 뉴럴 네트워크(104)의 더욱 견고한 트레이닝을 가능하게 한다. 예컨대, 메인 뉴럴 네트워크(104)의 트레이닝은 메인 뉴럴 네트워크(104)에 의해 생성될 가능성이 적은 제어 입력들(예컨대, 랜덤화된 제어 입력들)에 응답하는 상태 데이터를 포함할 수 있다.
특정 양상에서, 시스템(100)의 하나 이상의 컴포넌트들(예컨대, 메인 뉴럴 네트워크(104), 타겟 뉴럴 네트워크(106), 뉴럴 네트워크 트레이너(140), 보상 계산기(142), 제어 입력 생성기(144), 비행 시뮬레이터(146), 오프셋 계산기(148) 또는 이들의 조합)은 하나 이상의 명령들을 실행하는 하나 이상의 프로세서들에 의해 적어도 부분적으로 구현될 수 있다. 하나 이상의 컴포넌트들은 단일 프로세서로서 구현되거나, 또는 이를테면 다중-코어 구성, 다중-프로세서 구성, 분산 컴퓨팅 구성, 클라우드 컴퓨팅 구성 또는 이들의 임의의 조합에서의 다수의 프로세서들로서 구현될 수 있다. 일부 구현들에서, 시스템(100)의 하나 이상의 컴포넌트들의 하나 이상의 부분들은 전용 하드웨어, 펌웨어 또는 이들의 조합을 사용하여 프로세서에 의해 구현된다.
동작 동안, 비행 시뮬레이터(146)는 항공기 시뮬레이션의 상태를 표시하는 상태 데이터(105)를 생성한다. 특정 예에서, 비행 시뮬레이터(146)는 특정 시뮬레이션 시간 단계들에 상태 데이터(105)를 생성하도록 구성된다. 예컨대, 비행 시뮬레이터(146)는 특정 시뮬레이션 시간 단계(t+1)에 대응하는 상태 데이터(105)를 생성한다. 시뮬레이션 시간 단계는 항공기 시뮬레이션을 위한 특정 시간 간격(예컨대, 5 분)의 경과를 표현한다. 특정 양상에서, 비행 시뮬레이션은 실시간일 수 있다(예컨대, 각각의 5 초의 실세계 클록 시간에 대해 5 초의 시뮬레이팅된 비행이 발생함). 대안적으로, 비행 시뮬레이션은 상이한 레이트로 발생할 수 있다(예컨대, 120 초의 실세계 시간 동안 120 분의 시뮬레이팅된 비행이 발생할 수 있음). 추가로, 시뮬레이팅된 시간 단계들은 균등하게 이격되거나 또는 균등하지 않게 이격될 수 있다. 예컨대, 시뮬레이팅된 비행의 이륙 페이즈(phase) 동안 제1 시간 간격들이 사용될 수 있고, 시뮬레이팅된 비행의 순항 페이즈 동안 제2 시간 간격들이 사용될 수 있다.
상태 데이터(105)는 비행 시뮬레이션의 특정 시뮬레이션 시간 단계(t+1) 동안(예컨대, 이 특정 시뮬레이션 시간 단계(t+1)의 시작 시에, 중간에 또는 종료 시에) 항공기의 상태를 표시하는 값들을 포함하는 벡터이다. 특정 양상에서, 상태 데이터(105)는 특정 시뮬레이션 시간 단계(t+1) 동안 항공기의 고도, 속도, 피치, 엘리베이터 세팅, 고도 변화, 속도 변화, 피치 변화 또는 이들의 조합을 표시한다.
비행 시뮬레이터(146)는 후속 시뮬레이션 시간 단계와 연관된 보상 값 계산을 위해 메모리(132)에 특정 시뮬레이션 시간 단계(t+1)와 연관된 상태 데이터(105)를 저장한다. 비행 시뮬레이터(146)는 보상 계산기(142), 타겟 뉴럴 네트워크(106), 메인 뉴럴 네트워크(104) 또는 이들의 조합에 상태 데이터(105)를 제공한다. 대안적으로, 보상 계산기(142), 타겟 뉴럴 네트워크(106), 메인 뉴럴 네트워크(104) 또는 이들의 조합은 비행 시뮬레이터(146) 또는 메모리(132)로부터 상태 데이터(105)를 리트리브(retrieve)한다.
보상 계산기(142)는, 비행 시뮬레이터(146)로부터 특정 시뮬레이션 시간 단계(t+1)에 대한 상태 데이터(105)를 수신하는 것에 대한 응답으로, 메모리(132)로부터 이전 시뮬레이션 시간 단계(t)에 대한 상태 데이터(115)를 리트리브한다. 보상 계산기(142)는 특정 시뮬레이션 시간 단계(t+1)에 대한 상태 데이터(105)와 이전 시뮬레이션 시간 단계(t)에 대한 상태 데이터(115)의 비교에 기반하여 특정 시뮬레이션 시간 단계(t+1)에 대한 보상 값(111)을 결정한다. 특정 양상에서, 보상 계산기(142)는 보상 함수에 기반하여 보상 값(111)을 결정한다. 보상 함수는 구성 세팅, 디폴트 값, 사용자 입력 또는 이들의 조합에 기반할 수 있다. 특정 양상에서, 보상 계산기(142)는 다음의 보상 함수에 기반하여 이륙 시뮬레이션 동안 보상 값(111)을 결정한다:
Figure pat00001
특정 예에서, 상태 데이터(115)는 항공기 시뮬레이션의 제1 고도 및 제1 피치를 표시하고, 상태 데이터(105)는 항공기 시뮬레이션의 제2 고도 및 제2 피치를 표시한다. 보상 계산기(142)는 제1 고도와 제2 고도의 비교에 기반하여 고도 변화를 결정한다(예컨대, 고도 변화 = 제2 고도 - 제1 고도). 보상 계산기(142)는 제1 피치와 제2 피치의 비교에 기반하여 피치 변화를 결정한다(예컨대, 피치 변화 = 제2 피치 - 제1 피치).
특정 양상에서, 보상 계산기(142)는, 제2 피치가 제1 임계 피치(예컨대, 12도) 미만이고 피치 변화가 포지티브이거나, 또는 제2 피치가 제2 임계 피치(예컨대, 13도)를 초과하고 피치 변화가 네거티브라고 결정하는 것에 대한 응답으로, 피치가 수렴하고 있다고 결정한다. 보상 계산기(142)는, 고도 변화가 제1 임계 고도(예컨대, 1 미터)를 초과하고 제2 피치가 제1 임계 피치(예컨대, 12도) 이상이며 제2 피치가 제2 임계 피치(예컨대, 13도) 이하이거나, 또는 피치가 수렴하고 있다고 결정하는 것에 대한 응답으로, 보상 값(111)을 포지티브 값(예컨대, 1)으로 세팅한다. 이 예에서, 포지티브 값은, 항공기가 제1 임계 고도보다 더 많이 고도를 얻고 있고 피치가 제1 피치 임계치와 제2 피치 임계치 사이로 수렴하고 있거나 또는 그 사이에 이미 있기 때문에, 상태 데이터(105)가 이륙을 위한 "우수한" 상태를 표시한다고 표시한다.
대안적으로, 보상 계산기(142)는, 고도 변화가 제2 임계 고도(예컨대, -1 미터) 미만이라고 결정하는 것에 대한 응답으로, 보상 값(111)을 네거티브 값(예컨대, -1)으로 세팅한다. 이 예에서, 네거티브 값은, 항공기가 제2 임계 고도보다 더 많이 고도를 잃고 있기 때문에, 상태 데이터(105)가 이륙을 위한 "불량한" 상태를 표시한다고 표시한다.
특정 양상에서, 보상 계산기(142)는, 고도 변화가 제2 임계 고도(예컨대, -1 미터) 이상이고 제1 임계 고도(예컨대, 1 미터) 이하라고 결정하는 것에 대한 응답으로, 보상 값(111)을 중립 값(예컨대, 0)으로 세팅한다. 이 예에서, 중립 값은, 항공기가 (예컨대, 제1 고도 임계치과 제2 고도 임계치 사이에서) 고도를 많이 변화시키고 있지 않기 때문에, 이륙을 위한 "중립" 상태를 표시한다. 대안적으로, 보상 계산기(142)는, 고도 변화가 제1 임계 고도(예컨대, 1 미터)를 초과하고 제2 피치가 제1 피치 임계치(예컨대, 12도) 미만이거나 또는 제2 피치 임계치(예컨대, 13도)를 초과하며 피치가 수렴하고 있지 않다고 결정하는 것에 대한 응답으로, 보상 값(111)을 중립 값(예컨대, 0.0)으로 세팅한다. 이 예에서, 중립 값은, 항공기가 고도를 얻고 있지만 피치가 너무 낮거나 또는 너무 높고 수렴하고 있지 않기 때문에, 이륙을 위한 "중립" 상태를 표시한다.
고도 및 피치에 기반한, 이륙을 위한 보상 함수가 예시적인 비-제한적 예로서 제공된다는 것이 이해되어야 한다. 다른 예들에서, 보상 계산기(142)는 다양한 비행 스테이지들(예컨대, 순항, 착륙, 선회, 지상활주, 주차 또는 이들의 조합)과 연관된 보상 함수들에 기반하여 보상 값들을 결정하도록 구성된다. 보상 함수들은 다양한 항공기 상태 데이터(예컨대, 피치, 요, 롤, 헤딩, 고도, 연료 소모, 온도 센서 데이터, 다른 타입들의 센서 데이터 또는 이들의 조합)에 기반할 수 있다.
보상 계산기(142)는 보상 값(111)을 뉴럴 네트워크 트레이너(140)에 제공한다. 대안적으로, 뉴럴 네트워크 트레이너(140)는 보상 계산기(142)로부터 또는 메모리(132)로부터 보상 값(111)을 리트리브한다. 뉴럴 네트워크 트레이너(140)는, 특정 시뮬레이션 시간 단계(t+1)에 대한 보상 값(111)을 수신하는 것에 대한 응답으로, 이전 시뮬레이션 시간 단계(t)에 대한 예측 메인 보상 값(127) 및 이전 시뮬레이팅된 시간 단계(t)에서 비행 시뮬레이터(146)에 제공된 제어 입력(113)을 표시하는 데이터를 메모리(132)로부터 리트리브한다. 예컨대, 상태 데이터(105)는 이전 시뮬레이션 시간 단계(t)의 제어 입력(113)에 기반하여 생성되고, 메인 뉴럴 네트워크(104)는, 제어 입력(113)을 선택하기 위해 사용된 이전 시뮬레이션 시간 단계(t)에 대한 후보 제어 입력에 대해 예측 메인 보상 값(127)을 이전에 생성했다.
특정 양상에서, 뉴럴 네트워크 트레이너(140)는, 제어 입력(113)이 이전 시뮬레이션 시간 단계(t)에 대해 메인 뉴럴 네트워크(104)에 의해 생성된 후보 제어 입력에 대응한다고 결정한 것에 대한 응답으로, 이전 시뮬레이션 시간 단계(t)에 대한 후보 제어 입력의 예측 메인 보상 값(127)에 기반하여 가중치들(121)을 결정한다. 특정 구현에서, 뉴럴 네트워크 트레이너(140)는, 제어 입력(113)이 이전 시뮬레이션 시간 단계(t)에 대해 제어 입력 생성기(144)에 의해 생성된 랜덤화된 오프셋 제어 입력에 대응한다고 결정한 것에 대한 응답으로, 예측 메인 보상 값(127)에 기반하여 가중치들(121)을 결정하는 것을 억제하고, 메인 뉴럴 네트워크(104)를 업데이트하는 것을 억제한다. 대안적인 구현에서, 뉴럴 네트워크 트레이너(140)는, 제어 입력(113)이 이전 시뮬레이션 시간 단계(t)에 대한 랜덤화된 오프셋 제어 입력에 대응한다고 결정하는 것에 대한 응답으로, (후보 제어 입력과 비교할 때) 이전 시뮬레이션 시간 단계(t)에 대한 랜덤화된 오프셋 제어 입력에 대응하는 예측 메인 보상 값(127)을 리트리브한다. 뉴럴 네트워크 트레이너(140)는 본원에서 설명된 바와 같이 예측 메인 보상 값(127)에 기반하여 가중치들(121)을 결정한다.
타겟 뉴럴 네트워크(106)는 특정 시뮬레이션 단계(t+1)에 대한 상태 데이터(105)에 기반하여 예측 타겟 보상 값(119)을 생성한다. 도 2에서 예시된 예에서, 뉴럴 네트워크(220)는 복수의 입력 노드들(202), 복수의 숨겨진 층 노드들(204)을 포함하는 숨겨진 층, 및 복수의 출력 노드들(206)을 포함한다. 특정 양상에서, 입력 노드들(202)은 제1 복수의 가중 노드-연결들을 통해 숨겨진 층에 완전히 연결된다. 특정 양상에서, 숨겨진 층은 제2 복수의 가중 노드-연결들을 통해 출력 노드들(206)에 완전히 연결된다. 특정 양상에서, 숨겨진 층은 제1 수(예컨대, 40 개)의 숨겨진 층 노드들(204)을 포함한다. 더 많은 수의 숨겨진 층 노드들(204)은 뉴럴 네트워크(220)가 더 높은 변동성을 고려(account for)하는 것을 가능하게 한다. 더 적은 수의 숨겨진 층 노드들(204)은 출력 노드들(206)의 값들을 생성하기 위한 더 빠른 프로세싱 시간을 가능하게 한다. 도 2가 단일 숨겨진 층을 갖는 뉴럴 네트워크(220)를 예시하지만, 다른 구현들에서, 뉴럴 네트워크(220)는 다수의 숨겨진 층들을 포함한다.
특정 양상에서, 뉴럴 네트워크(220)는 도 1의 메인 뉴럴 네트워크(104), 타겟 뉴럴 네트워크(106) 또는 둘 모두에 대응한다. 특정 예에서, 입력 노드들(202) 각각은 특정 타입의 데이터(예컨대, 상태 데이터(105)의 특정 값)와 연관된다. 예시를 위해, 제1 입력 노드(202)는 피치와 연관되거나, 제2 입력 노드(202)는 고도와 연관되거나, 제3 입력 노드(202)는 속도와 연관되거나, 제4 입력 노드(202)는 엘리베이터 세팅과 연관되거나, 제5 입력 노드(202)는 피치 변화와 연관되거나, 제6 입력 노드는 고도 변화와 연관되거나, 제7 입력 노드는 속도 변화와 연관되거나, 또는 이들의 조합이 가능하다. 7 개의 입력 노드들이 예시적인 예로서 제공되고, 다른 예들에서, 입력 노드들(202)은 7 개 미만의 입력 노드들 또는 7 개 초과의 입력 노드들을 포함한다는 것이 이해되어야 한다.
특정 양상에서, 정규화된 값들이 입력 노드들(202) 중 하나 이상에 제공된다. 예컨대, 정규화된 피치 값, 정규화된 고도 및 정규화된 속도가 각각 제1 입력 노드(202), 제2 입력 노드(202) 및 제3 입력 노드(202)에 제공된다. 예시를 위해, 유효한 피치 값은 제1 피치 값(예컨대, -60도) 내지 제2 피치 값(예컨대, 60도)의 범위이다. 피치 값(예컨대, 30도)이 (예컨대, 비행 시뮬레이터(146), 뉴럴 네트워크(220), 또는 시스템(100)의 다른 컴포넌트에 의해) 정규화되어, 제1 정규화된 피치 값(예전대, -1) 및 제2 정규화된 피치 값(예전대, 1) 내에 있는 정규화된 피치 값(예컨대, 0.5)이 생성된다. 정규화된 피치 값은 제1 입력 노드(202)에 제공된다.
뉴럴 네트워크(220)(예컨대, 뉴럴 네트워크 엔진)는 입력 노드들(202)에 적용된 값들의 가중 합으로서 숨겨진 층 노드들(204) 각각의 값을 결정한다. 뉴럴 네트워크(220)는 숨겨진 층 노드들(204)의 값들의 가중 합으로서 출력 노드들(206)의 출력 값들을 결정한다. 예컨대, 뉴럴 네트워크(220)는 숨겨진 층 노드들(204)의 값들의 가중 합으로서 출력 노드들(206) 각각의 출력 값(예컨대, 예측 보상 값)을 생성한다.
출력 노드들(206) 각각은 비행 시뮬레이터(146)에 대한 특정 제어 입력에 대응한다. 특정 예에서, 뉴럴 네트워크(220)는 항공기 시뮬레이션의 엘리베이터 세팅을 제어하기 위한 제어 입력을 생성하도록 구성되고, 엘리베이터 세팅은 제1 엘리베이터 세팅(예컨대, -1)과 제2 엘리베이터 세팅(예컨대, 1) 사이의 값들(예컨대, 제어 입력들)의 범위를 갖는다. 이 예에서, 출력 노드들(206) 각각은 이 범위의 특정 값에 대응한다. 예시를 위해, 뉴럴 네트워크(220)는 제1 제어 입력(예컨대, -1), 제2 제어 입력(예컨대, -0.5), 제3 제어 입력(예컨대, 0), 제4 제어 입력(예컨대, 0.5) 및 제5 제어 입력(예컨대, 1)에 각각 대응하는 제1 출력 노드, 제2 출력 노드, 제3 출력 노드, 제4 출력 노드 및 제5 출력 노드를 포함한다. 5 개의 출력 노드들(206)이 도 2에서 예시되지만, 다른 구현들에서, 뉴럴 네트워크(220)는 5 개 미만의 또는 5 개 초과의 출력 노드들(206)을 포함한다. 특정 양상에서, 더 많은 수의 출력 노드들(206)(예컨대, 5 개가 아닌 17 개)은 더 적은 수의 출력 노드들(206)이 가능하게 하는 것보다 더욱 점진적인 변화들 및 더욱 미세한 항공기 제어를 가능하게 하지만; 더 적은 수의 출력 노드들(206)은 출력 노드들(206)의 값들을 결정하기 위한 더 빠른 프로세싱 시간을 가능하게 한다.
특정 양상에서, 뉴럴 네트워크(220)는 뉴럴 네트워크(220)에 의해 생성된 예측 보상 값들 중 가장 높은 예측 보상 값을 갖는 출력 노드(206)를 식별하는 데이터 또는 예측 보상 값들의 벡터를 출력한다. 예컨대, 출력 데이터는 예측 보상 값(219), 출력 노드(206)와 연관된 제어 입력 또는 둘 모두를 식별하거나 또는 포함할 수 있다. 특정 양상에서, 뉴럴 네트워크(220)는 제어 입력들 및 대응하는 예측 보상 값들을 표시하는 데이터(예컨대, 벡터)를 출력한다.
특정 예에서, 타겟 뉴럴 네트워크(106)(예컨대, 타겟 뉴럴 네트워크 엔진)는 상태 데이터(105)에 의해 표시된 피치(예컨대, 정규화된 피치), 고도(예컨대, 정규화된 고도), 속도(예컨대, 정규화된 속도) 및 엘리베이터 세팅을, 각각, 제1 입력 노드(202), 제2 입력 노드(202), 제3 입력 노드(202) 및 제4 입력 노드(202)에 적용한다. 일부 구현들에서, 타겟 뉴럴 네트워크(106)(예컨대, 타겟 뉴럴 네트워크 엔진)는 상태 데이터(115)에 의해 표시된 제1 피치와 상태 데이터(105)에 의해 표시된 피치의 비교에 기반하여 피치 변화를 결정하거나, 상태 데이터(115)에 의해 표시된 제1 고도와 상태 데이터(105)에 의해 표시된 고도의 비교에 기반하여 고도 변화를 결정하거나, 상태 데이터(115)에 의해 표시된 제1 속도와 상태 데이터(105)에 의해 표시된 속도의 비교에 기반하여 속도 변화를 결정하거나, 또는 이들의 조합이 가능하다. 그러한 구현들에서, 타겟 뉴럴 네트워크(106)(예컨대, 타겟 뉴럴 네트워크 엔진)는 피치 변화, 고도 변화 및 속도 변화를 각각 제5 입력 노드(202), 제6 입력 노드(202) 및 제7 입력 노드(202)에 적용한다. 타겟 뉴럴 네트워크(106)는 출력 노드들(206)의 출력 값들(예컨대, 예측 보상 값들)을 생성한다. 특정 양상에서, 예측 보상 값(219)(예컨대, 예측 보상 값들 중 가장 높은 예측 보상 값)은 특정 시뮬레이션 시간 단계(t+1)에 대한 예측 타겟 보상 값(119)에 대응한다.
도 1로 돌아가면, 타겟 뉴럴 네트워크(106)는 특정 시뮬레이션 시간 단계(t+1)에 대한 예측 타겟 보상 값(119)을 뉴럴 네트워크 트레이너(140)에 제공하거나, 또는 뉴럴 네트워크 트레이너(140)는 타겟 뉴럴 네트워크(106) 또는 메모리(132)로부터 예측 타겟 보상 값(119)을 리트리브한다. 뉴럴 네트워크 트레이너(140)는 특정 시뮬레이션 시간 단계(t+1)에 대한 예측 타겟 보상 값(119), 이전 시뮬레이션 시간 단계(t)에 대한 예측 메인 보상 값(127), 특정 시뮬레이션 시간 단계(t+1)에 대한 보상 값(111) 또는 이들의 조합에 기반하여 가중치들(121)을 결정한다. 특정 양상에서, 가중치들(121)은 다음의 손실(또는 비용) 함수를 감소시키도록(예컨대, 최소화하도록) 결정된다:
Figure pat00002
방정식 1
여기서,
Figure pat00003
은 (예컨대, 가중치들
Figure pat00004
에 의해 표현되는) 메인 뉴럴 네트워크(104)를 트레이닝(예컨대, 메인 뉴럴 네트워크(104)에 대한 가중치들(121)을 결정)하기 위한 손실 함수에 대응한다.
Figure pat00005
은 특정 시뮬레이션 시간 단계(t+1)에 대한 보상 값(111)에 대응한다.
Figure pat00006
은,
Figure pat00007
(예컨대, 제어 입력 또는 액션)에 의해 인덱싱되는 뉴럴 네트워크의 출력 값들과 함께 입력 세트
Figure pat00008
(예컨대, 상태 데이터)가 주어지면, 가중치들
Figure pat00009
(메인 뉴럴 네트워크(104) 또는 타겟 뉴럴 네트워크(106))를 갖는 뉴럴 네트워크의 함수를 표현한다.
Figure pat00010
은 최대 값을 갖는 출력
Figure pat00011
을 위해 특정 시뮬레이션 시간 단계(t+1)에 대해 타겟 뉴럴 네트워크(106)에 의해 생성된 (예컨대, 가중치들
Figure pat00012
에 의해 표현되는) 예측 타겟 보상 값(119)에 대응한다.
Figure pat00013
은 이전 시뮬레이션 시간 단계(t)에 대해 메인 뉴럴 네트워크(104)에 의해 생성된 예측 메인 보상 값(127)에 대응한다.
Figure pat00014
는 할인(discount) 값(예컨대, 0.99)에 대응한다. 특정 양상에서, 할인 값은 구성 세팅, 디폴트 값, 사용자 입력 또는 이들의 조합에 기반한다. 특정 양상에서, 손실 함수는 특정 시뮬레이션 시간 단계(t+1)에 대한 예측 타겟 보상 값(119)과 이전 시뮬레이션 시간 단계(t)에 대한 예측 메인 보상 값(127) 사이의 차의 제곱(squared difference)의 예상에 대응한다.
특정 양상에서, 손실(또는 비용) 함수를 감소시키는(예컨대, 최소화하는) 것은 다음의 공식에 의해 표시된 바와 같이 메인 뉴럴 네트워크(104)를 업데이트하게 한다:
Figure pat00015
방정식 2
여기서,
Figure pat00016
은 메인 뉴럴 네트워크(104)에 대응하고,
Figure pat00017
은 가중치들(121)을 적용하는 것에 후속하여 메인 뉴럴 네트워크(104)의 업데이트된 버전에 대응하고,
Figure pat00018
은 학습률에 대응하며,
Figure pat00019
은 이전 시뮬레이션 시간 단계(t)에 대한 예측 메인 보상 값(127)에 대응한다. 특정 양상에서, 학습률은 구성 세팅, 디폴트 값, 사용자 입력 또는 이들의 조합에 기반한다. 특정 양상에서, 뉴럴 네트워크 트레이너(140)는 다음의 공식에 기반하여
Figure pat00020
을 결정한다:
Figure pat00021
방정식 3
여기서,
Figure pat00022
은 특정 시뮬레이션 시간 단계(t+1)에 대한 보상 값(111)에 대응하고,
Figure pat00023
은 특정 시뮬레이션 시간 단계(t+1)에 대한 예측 타겟 보상 값(119)에 대응하며,
Figure pat00024
는 할인 값(예컨대, 0.99)에 대응한다. 뉴럴 네트워크 트레이너(140)는 가중치들(121)에 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다. 예컨대, 메인 뉴럴 네트워크(104)가 도 2의 뉴럴 네트워크(220)에 대응할 때, 뉴럴 네트워크 트레이너(140)는 입력 노드들(202)과 숨겨진 층 노드들(204) 사이의 제1 복수의 가중 연결들, 숨겨진 층 노드들(204)과 출력 노드들(206) 사이의 제2 복수의 가중 연결들, 또는 이들의 조합의 가중치들을 업데이트한다.
특정 양상에서, 시뮬레이션 시간 단계는 액션 사이클에 대응한다. 특정 시뮬레이션 시간 단계(t+1)와 연관된 액션 사이클 데이터는 상태 데이터(115), 상태 데이터(105), 보상 값(111), 제어 입력(113), 이전 시뮬레이션 시간 단계(t)와 연관된 후보 제어 입력, 예측 타겟 보상 값(119), 예측 메인 보상 값(127), 가중치들(121) 또는 이들의 조합을 포함한다.
뉴럴 네트워크 트레이너(140)는 학습 사이클 동안 메인 뉴럴 네트워크(104)를 업데이트한다. 특정 양상에서, 뉴럴 네트워크 트레이너(140)는 단일 액션 사이클의 액션 사이클 데이터에 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다. 예컨대, 뉴럴 네트워크 트레이너(140)는 이전 시뮬레이션 시간 단계(t)의 제1 액션 사이클 데이터에 기반하여 제1 시간에 메인 뉴럴 네트워크(104)를 업데이트하고, 특정 시뮬레이션 시간 단계(t+1)의 제2 액션 사이클 데이터에 기반하여 제2 시간에 메인 뉴럴 네트워크(104)를 업데이트한다. 대안적인 양상에서, 뉴럴 네트워크 트레이너(140)는 다수의 액션 사이클들과 연관된 액션 사이클 데이터에 기반하여 특정 시간에 메인 뉴럴 네트워크(104)를 업데이트한다. 특정 예에서, 메모리(132)는 액션 사이클들의 임계 개수(threshold number)(예컨대, 12000 개)와 연관된 액션 사이클 데이터를 저장하는 FIFO(first-in first-out) 메모리 버퍼를 포함한다. 특정 양상에서, 액션 사이클들의 임계 개수는 리플레이 메모리 사이즈에 대응한다. 뉴럴 네트워크 트레이너(140)는 미니-배치(mini-batch)로서 메모리(132)로부터 액션 사이클들의 배치 사이즈(예컨대, 128)와 연관된 액션 사이클 데이터를 리트리브한다. 특정 양상에서, 미니-배치는 액션 사이클들의 랜덤 세트의 액션 사이클 데이터를 포함한다. 예컨대, 미니-배치는 12000 개의 가장 최근 액션 사이클들로부터의 128 개의 랜덤 액션 사이클들의 액션 사이클 데이터를 포함한다. 뉴럴 네트워크 트레이너(140)는 미니-배치에 기반하여 특정 시간에 메인 뉴럴 네트워크(104)를 업데이트한다. 특정 예에서, 미니-배치는 특정 시뮬레이션 시간 단계(t+1)와 연관된 제1 액션 사이클 데이터 및 제2 시뮬레이션 시간 단계와 연관된 제2 액션 사이클 데이터를 포함한다. 뉴럴 네트워크 트레이너(140)는 제1 액션 사이클 데이터에 기반하여 가중치들(121)을 결정하고, 제2 액션 사이클 데이터에 기반하여 제2 가중치들을 결정한다. 뉴럴 네트워크 트레이너(140)는 가중치들(121), 제2 가중치들 또는 이들의 조합에 기반하여 메인 뉴럴 네트워크(104)를 업데이트한다.
메인 뉴럴 네트워크(104)(예컨대, 메인 뉴럴 네트워크 엔진)는 상태 데이터(105)에 대한 예측 메인 보상 값들을 생성한다. 상태 데이터(105)에 대해 메인 뉴럴 네트워크(104)에 의해 생성된 예측 메인 보상 값들은, 메인 뉴럴 네트워크(104)의 가중치들(예컨대, 가중치들(121))이 타겟 뉴럴 네트워크(106)의 가중치들과 상이할 때 상태 데이터(105)에 대해 타겟 뉴럴 네트워크(106)에 의해 생성된 예측 타겟 보상 값들과 상이할 수 있다.
메인 뉴럴 네트워크(104)(예컨대, 메인 뉴럴 네트워크 엔진)는 예측 메인 보상 값들(117)(또는 예측 메인 보상 값들 중 적어도 가장 높은 예측 메인 보상 값)을 표시하는 출력을 생성한다. 도 1에서, 예측 메인 보상 값(117)은 제어 입력 생성기(144)로의, 특정 시뮬레이션 시간 단계(t+1)에 대한 후보 제어 입력(107)을 표시하거나 또는 이에 대응한다. 메인 뉴럴 네트워크(104)는 특정 시뮬레이션 시간 단계(t+1)에 대한 후보 제어 입력(107)과 연관된 예측 메인 보상 값(117)을 메모리(132)에 저장한다. 특정 양상에서, 메인 뉴럴 네트워크(104)는 예측 메인 보상 값들(117) 및 대응하는 제어 입력들을 메모리(132)에 저장한다.
제어 입력 생성기(144)는, 특정 시뮬레이션 단계(t+1)에 대한 후보 제어 입력(107)을 수신하는 것에 대한 응답으로, 메모리(132)로부터 이전 시뮬레이션 단계(t)에 대한 제어 입력(113)을 리트리브한다. 오프셋 계산기(148)(예컨대 , 난수 생성기)는 제1 오프셋(예컨대, -0.5)과 제2 오프셋(예컨대, 0.5) 사이의 랜덤 오프셋(109)을 생성한다. 제어 입력 생성기(144)는 이전 시뮬레이션 시간 단계(t)에 대한 제어 입력(113) 및 랜덤 오프셋(109)에 기반하여 특정 시뮬레이션 시간 단계(t+1)에 대한 랜덤 오프셋 제어 입력(191)을 생성한다(예컨대, 랜덤 오프셋 제어 입력(191) = 제어 입력(113) + 랜덤 오프셋(109)). 따라서, 제어 입력 생성기(144)는, 제어 입력(113)의 값을 중심으로 하는 범위(예컨대, -0.5 내지 +0.5) 내에서 값을 랜덤하게 선택함으로써, 랜덤 오프셋 제어 입력(191)을 생성한다. 특정 양상에서, 랜덤 오프셋 제어 입력(191)은 제1 엘리베이터 세팅(예컨대, -1)과 제2 엘리베이터 세팅(예컨대, 1) 사이에 있다.
특정 양상에서, 제어 입력 생성기(144)는 제어 입력(113)이 메인 뉴럴 네트워크(104)의 제1 출력 노드(예컨대, 제8 출력 노드)에 대응한다고 결정한다. 제어 입력 생성기(144)는 제1 출력 노드(예컨대, 제8 출력 노드) 및 랜덤 오프셋(109)(예컨대, 2)에 기반하여 제2 출력 노드(예컨대, 제10 출력 노드)를 식별한다. 예컨대, 제2 출력 노드의 제2 식별자는 제1 출력 노드의 제1 식별자와 랜덤 오프셋(109)(예컨대, 제2 식별자 = (제1 식별자 + 랜덤 오프셋(109)) 모듈러스 (출력 노드 수))의 합에 기반한다. 제어 입력 생성기(144)는 제2 출력 노드에 대응하는 특정 제어 입력을 랜덤 오프셋 제어 입력(191)으로서 지정한다. 이 양상에서, 랜덤 오프셋(109)은 제1 값(예컨대, -2)과 제2 값(예컨대, 2) 사이의 랜덤 값을 포함한다. 따라서, 제어 입력 생성기(144)는, 제어 입력(113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써, 랜덤 오프셋 제어 입력(191)을 생성한다. 범위는 제1 출력 노드(예컨대, -2번째 출력 노드)에 대응하는 제1 제어 입력 내지 제2 출력 노드(예컨대, +2번째 출력 노드)에 대응하는 제2 제어 입력이다. 제어 입력(113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써 랜덤 오프셋 제어 입력(191)을 생성하는 것은 "랜덤-워크(random-walk)" 방식을 수행하는 것에 대응한다. 일부 양상들에서, 랜덤-워크 방식은, 확장된 상태와 확장되지 않은 상태 사이에서 변하는 플랩들과 같은 이산적인 상태를 갖는 경향이 있는 항공기 제어들과 비교할 때, 실생활에서 비교적 연속적인 경향이 있는 항공기 제어들(예컨대, 엘리베이터 세팅)에 적절하다.
제어 입력 생성기(144)는 특정 시뮬레이션 시간 단계(t+1)에 대한 제어 입력(103)으로서 랜덤화된 오프셋 제어 입력(191) 또는 후보 제어 입력(107) 중 하나를 선택한다. 예컨대, 제어 입력 생성기(144)는 제1 값(예컨대, 0.0)과 제2 값(예컨대, 1.0) 사이의 특정 랜덤 값을 생성한다. 제어 입력 생성기(144)는 메인 뉴럴 네트워크(104)(예컨대, t+1)를 트레이닝하는 반복 수(count of iterations)에 기반하여 랜덤화 구성 값(193)을 결정한다. 예컨대, 제어 입력 생성기(144)는, 반복 수(예컨대, t+1)가 관찰 임계치(예컨대, 3000회) 미만이라고 결정하는 것에 대한 응답으로, 랜덤화 구성 값(193)을 제1 값(예컨대, 0.0)으로 세팅한다. 랜덤화 구성 값(193)을 제1 값으로 세팅하는 것은, 관찰 임계치보다 더 적은 트레이닝 반복들에 대응하는 관찰 기간 동안 랜덤화된 오프셋 제어 입력(191)이 선택될 가능성을 증가시킨다.
특정 양상에서, 제어 입력 생성기(144)는, 반복 수(예컨대, t+1)가 관찰 임계치(예컨대, 3000회) 이상이라고 결정하는 것에 대한 응답으로, 반복 수(예컨대, t+1)에 기반한 선형 함수를 사용하여 제1 값(예컨대, 0.01)과 제2 값(예컨대, 1.0) 사이로 랜덤화 구성 값(193)을 세팅한다. 예컨대, 선형 함수는 제1 트레이닝 반복(예컨대, 3000회)부터 제2 트레이닝 반복(예컨대, 6000회)까지 제1 값(예컨대, 0.01)으로부터 제2 값(예컨대, 1.0)으로 선형으로 증가하는 랜덤화 구성 값(193)을 생성한다. 랜덤화 구성 값(193)을 선형으로 증가시키는 것은, 관찰 기간에 후속하는 탐사 기간 동안 랜덤 오프셋 제어 입력(191)이 선택될 가능성을 선형으로 감소시킨다.
제어 입력 생성기(144)는, 특정 랜덤 값이 랜덤화 구성 값(193)을 초과한다고 결정하는 것에 대한 응답으로, 랜덤 오프셋 제어 입력(191)을 제어 입력(103)으로서 선택한다. 특정 양상에서, 관찰 기간 동안 시뮬레이션 시간 단계들 중 적어도 일부에 대한 랜덤 오프셋 제어 입력들을 선택하는 것은, 더 많은 항공기 시뮬레이션 상태 및 제어 입력 조합들의 탐색을 가능하게 하고 메인 뉴럴 네트워크(104)의 견고성을 증가시킨다. 대안적으로, 제어 입력 생성기(144)는, 특정 랜덤 값이 랜덤화 구성 값(193) 이하라고 결정하는 것에 대한 응답으로, 후보 제어 입력(107)을 제어 입력(103)으로서 선택한다. 특정 양상에서, 탐색 기간 동안 더 많은 후보 제어 입력들을 선택하는 것은 메인 뉴럴 네트워크(104)의 거동이 수렴하는 것을 가능하게 한다.
특정 양상에서, 제어 입력 생성기(144)는 특정 시뮬레이션 시간 단계(t+1)에 대한 제어 입력(103)을 식별하는 데이터를 메모리(132)에 저장한다. 제어 입력 생성기(144)는 특정 시뮬레이션 시간 단계(t+1)에 대한 제어 입력(103)을 비행 시뮬레이터(146)에 제공한다. 특정 양상에서, 뉴럴 네트워크 트레이너(140)는, 가중치들(121)에 기반하여 메인 뉴럴 네트워크(104)를 업데이트하는 것에 후속하여, 그리고 타겟 뉴럴 네트워크(106)의 이전 업데이트에 후속하여 적어도 임계 횟수만큼 메인 뉴럴 네트워크(104)가 업데이트되었다고 결정하는 것에 대한 응답으로, 메인 뉴럴 네트워크(104)를 복사함으로써 타겟 뉴럴 네트워크(106)를 업데이트한다. 예컨대, 뉴럴 네트워크 트레이너(140)는 메인 뉴럴 네트워크(104)와 동일한 가중치들(예컨대, 가중치들(121))을 갖도록 타겟 뉴럴 네트워크(106)를 업데이트한다.
특정 양상에서, 비행 시뮬레이터(146)는, 특정 시뮬레이션 시간 단계(t+1)가 탐색 임계치(예컨대, 6000회) 미만이라고 결정하는 것에 대한 응답으로, 제어 입력(103)에 기반하여 다음 차례의 시뮬레이션 시간 단계(t+2)에 대한 제2 상태 데이터를 생성한다. 메인 뉴럴 네트워크(104)의 트레이닝은 본원에서 설명된 기법들에 따라 상태 데이터(105) 및 제2 상태 데이터에 기반하여 계속된다. 대안적으로, 비행 시뮬레이터(146)는, 특정 시뮬레이션 시간 단계(t+1)가 탐색 임계치(예컨대, 6000회) 이상이라고 결정하는 것에 대한 응답으로, 메인 뉴럴 네트워크(104)가 트레이닝됨을 표시하는 출력을 생성한다. 특정 양상에서, 메인 뉴럴 네트워크(104)는 항공기를(예컨대, 항공기의 엘리베이터 세팅을) 제어하기 위해 검증되어 항공기에 제공(예컨대, 업로딩)된다. 예컨대, 항공기의 하나 이상의 센서들은 메인 뉴럴 네트워크(104)에 상태 데이터를 제공하고, 항공기의 엘리베이터 세팅은 메인 뉴럴 네트워크(104)로부터 수신된 제어 입력들에 기반하여 업데이트된다.
따라서, 시스템(100)은 항공기를 제어하기 위해 메인 뉴럴 네트워크(104)의 트레이닝을 가능하게 한다. 비행 시뮬레이터(146)에 기반하여 메인 뉴럴 네트워크(104)를 트레이닝하는 것은, 조종사 데이터와 비교할 때, 더 적은 자원들(예컨대, 시간 및 비용)을 소모한다. 비행 시뮬레이터(146)를 사용하여 트레이닝된 메인 뉴럴 네트워크(104)는 또한, 비행 시뮬레이터(146)가 조종사들이 대개 접하지 않는 시나리오들을 포함하는 다양한 시나리오들을 시뮬레이팅하도록 설계될 수 있기 때문에, 더욱 견고할 가능성이 높다.
도 3은 비행기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법(300)을 예시한다. 특정 양상에서, 방법(300)의 하나 이상의 동작들은 제어 입력 생성기(144), 비행 시뮬레이터(146), 뉴럴 네트워크 트레이너(140), 도 1의 시스템(100) 또는 이들의 조합에 의해 수행된다.
방법(300)은, 302에서, 제1 제어 입력을 비행 시뮬레이터에 제공하는 단계를 포함한다. 예컨대, 도 1의 제어 입력 생성기(144)는, 도 1을 참조하여 설명된 바와 같이 제어 입력(113)을 비행 시뮬레이터(146)에 제공한다. 비행 시뮬레이터(146)는 제어 입력(113)에 응답하는 제1 상태 데이터를 생성한다.
방법(300)은 또한, 304에서, 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 입력으로서 제1 상태 데이터를 제공하는 단계를 포함한다. 예컨대, 도 1의 비행 시뮬레이터(146)는 도 1을 참조하여 설명된 바와 같이 후보 제어 입력(107)을 생성하기 위해 제1 상태 데이터를 메인 뉴럴 네트워크(104)에 제공한다.
방법(300)은, 306에서, 랜덤 값에 기반하여 비행 시뮬레이터에 대한 제2 제어 입력을 선택하는 단계를 더 포함한다. 예컨대, 도 1의 제어 입력 생성기(144)는 도 1을 참조하여 설명된 바와 같이 랜덤 값에 기반하여 비행 시뮬레이터(146)에 대한 제어 입력(103)을 선택한다. 제어 입력(103)은 도 1을 참조하여 설명된 바와 같이 후보 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택된다. 랜덤화된 오프셋 제어 입력(191)은 도 1을 참조하여 설명된 바와 같이 제어 입력(113)에 적용된 랜덤 오프셋(109)에 기반한다.
방법(300)은 또한, 308에서, 제2 제어 입력을 비행 시뮬레이터에 제공하는 단계를 포함한다. 예컨대, 제어 입력 생성기(144)는 제어 입력(103)을 비행 시뮬레이터(146)에 제공한다. 비행 시뮬레이터(146)는 도 1을 참조하여 설명된 바와 같이 제어 입력(103)에 응답하는 제2 상태 데이터를 생성한다.
방법(300)은, 310에서, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하는 단계를 더 포함한다. 예컨대, 뉴럴 네트워크 트레이너(140)는 도 1을 참조하여 설명된 바와 같이 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 메인 뉴럴 네트워크(104)의 가중치들을 업데이트한다.
도 4를 참조하면, 뉴럴 네트워크에 의해 제어되도록 구성되는 항공기의 라이프 사이클을 예시하는 흐름도가 도시되고 방법(400)으로서 지정된다. 사전-생산 동안, 예시적인 방법(400)은, 402에서, 항공기, 이를테면, 도 5를 참조하여 설명된 항공기(500)의 규격 및 설계를 포함한다. 항공기의 규격 및 설계 동안, 방법(400)은 뉴럴 네트워크-기반 항공기 제어 시스템의 규격 및 설계를 포함할 수 있다. 뉴럴 네트워크-기반 항공기 제어 시스템은 메인 뉴럴 네트워크(104)를 사용하여 동작하도록 구성되거나 또는 메인 뉴럴 네트워크(104)를 포함한다. 404에서, 방법(400)은 뉴럴 네트워크-기반 항공기 제어 시스템을 위한 재료들을 조달하는 것을 포함할 수 있는 재료 조달을 포함한다.
생산 동안, 방법(400)은, 406에서, 컴포넌트 및 서브어셈블리 제조를 포함하고, 408에서, 항공기의 시스템 통합을 포함한다. 예컨대, 방법(400)은 뉴럴 네트워크-기반 항공기 제어 시스템의 컴포넌트 및 서브어셈블리 제조, 및 뉴럴 네트워크-기반 항공기 제어 시스템의 시스템 통합을 포함할 수 있다. 예컨대, 메인 뉴럴 네트워크(104)는 뉴럴 네트워크-기반 항공기 제어 시스템에 로딩될 수 있다. 방법(400)은, 410에서, 항공기의 인증 및 인도를 포함하고, 412에서, 항공기를 운항중에 배치하는 단계를 포함한다. 인증 및 인도는 뉴럴 네트워크-기반 항공기 제어 시스템을 운항중에 배치하기 위한 뉴럴 네트워크-기반 항공기 제어 시스템의 인증을 포함할 수 있다. 고객에 의해 운항중에 있는 동안, 항공기는 일상적인 유지보수 및 서비스(수정, 재구성, 정비 등을 또한 포함할 수 있음)를 위해 스케줄링될 수 있다. 예컨대, 메인 뉴럴 네트워크(104)의 새로운 버전이 뉴럴 네트워크-기반 항공기 제어 시스템에 로딩될 수 있다. 414에서, 방법(400)은 뉴럴 네트워크-기반 항공기 제어 시스템에 대해 유지보수 및 서비스를 수행하는 것을 포함할 수 있는, 항공기에 대해 유지보수 및 서비스를 수행하는 단계를 포함한다.
방법(400)의 프로세스들 각각은 시스템 통합자, 제3 자 및/또는 운영자(예컨대, 고객)에 의해 수행되거나 또는 실행될 수 있다. 본 설명의 목적들을 위해, 시스템 통합자는 임의의 수의 항공기 제조자들 및 주요-시스템 하도급 업자들을 포함(이에 제한되지 않음)할 수 있고; 제3 자는 임의의 수의 벤더들, 하도급 업자들 및 공급자들을 포함(이에 제한되지 않음)할 수 있으며; 그리고 운영자는 항공사, 임대 회사, 군대, 서비스 조직 등일 수 있다.
본 개시내용의 양상들은 비히클의 예의 맥락에서 설명될 수 있다. 비히클의 특정 예는 도 5에서 도시된 항공기(500)이다.
도 5의 예에서, 항공기(500)는 복수의 시스템들(520) 및 인테리어(522)를 갖는 기체(518)를 포함한다. 복수의 시스템들(520)의 예들은 추진 시스템(524), 전기 시스템(526), 환경 시스템(528), 유압 시스템(530), 그리고 메인 뉴럴 네트워크(104)를 포함하거나 또는 메인 뉴럴 네트워크(104)에 접근하도록 구성되는 뉴럴 네트워크-기반 항공기 제어 시스템(532) 중 하나 이상을 포함한다. 임의의 수의 다른 시스템들이 포함될 수 있다. 뉴럴 네트워크-기반 항공기 제어 시스템(532)은, 하나 이상의 센서들(536)로부터 센서 데이터를 수신하도록 그리고 센서 데이터에 응답하는 메인 뉴럴 네트워크(104)의 출력에 기반하여 하나 이상의 비행 표면들(534)의 포지션과 같은 항공기(500)의 하나 이상의 다른 시스템들(520)의 동작들을 제어하도록 구성된다.
도 6은 본 개시내용에 따른 컴퓨터-구현 방법들 및 컴퓨터-실행가능 프로그램 명령들(또는 코드)의 양상들을 지원하도록 구성된 컴퓨팅 디바이스(610)를 포함하는 컴퓨팅 환경(600)의 블록 다이어그램이다. 예컨대, 컴퓨팅 디바이스(610) 또는 그 부분들은 도 1-도 5를 참조하여 설명된 하나 이상의 동작들을 개시하거나, 수행하거나 또는 제어하기 위한 명령들을 실행하도록 구성된다. 특정 양상에서, 컴퓨팅 디바이스(610)는 도 1의 시스템(100)의 하나 이상의 컴포넌트들, 하나 이상의 서버들, 하나 이상의 가상 디바이스들 또는 이들의 조합을 포함한다.
컴퓨팅 디바이스(610)는 하나 이상의 프로세서들(620)을 포함한다. 프로세서(620)는 시스템 메모리(630), 하나 이상의 저장 디바이스들(640), 하나 이상의 입력/출력 인터페이스들(650), 하나 이상의 통신 인터페이스들(660) 또는 이들의 임의의 조합과 통신하도록 구성된다. 시스템 메모리(630)는 휘발성 메모리 디바이스들(예컨대, RAM(random access memory) 디바이스들), 비휘발성 메모리 디바이스들(예컨대, ROM(read-only memory) 디바이스들, 프로그램가능 판독-전용 메모리 및 플래시 메모리), 또는 둘 모두를 포함한다. 시스템 메모리(630)는 운영체제(632)를 저장하며, 이 운영체제(632)는, 컴퓨팅 디바이스(610)를 부팅하기 위한 기본 입력/출력 시스템 뿐만 아니라 컴퓨팅 디바이스(610)가 사용자들, 다른 프로그램들 및 다른 디바이스들과 상호작용하는 것을 가능하게 하기 위한 전체 운영체제를 포함할 수 있다. 시스템 메모리(630)는 시스템(프로그램) 데이터(636)를 저장한다. 예컨대, 시스템 메모리(630)는 메인 뉴럴 네트워크(104), 타겟 뉴럴 네트워크(106), 제어 입력(103), 제어 입력(113), 랜덤 오프셋(109), 후보 제어 입력(107), 랜덤 오프셋 제어 입력(191), 랜덤화 구성 값(193), 예측 메인 보상 값(117), 예측 메인 보상 값(127), 예측 타겟 보상 값(119), 보상 값(111), 상태 데이터(105), 상태 데이터(115), 가중치들(121) 또는 이들의 조합을 저장한다. 특정 양상에서, 시스템 메모리(630)는 도 1의 메모리(132)를 포함한다.
시스템 메모리(630)는 프로세서(들)(620)에 의해 실행가능한 하나 이상의 애플리케이션들(634)(예컨대, 명령들의 세트)을 포함한다. 예로서, 하나 이상의 애플리케이션들(634)은 도 1-도 5를 참조하여 설명된 하나 이상의 동작들을 개시하거나, 제어하거나 또는 수행하기 위해 프로세서(들)(620)에 의해 실행가능한 하나 이상의 명령들(682)을 포함한다. 예시를 위해, 하나 이상의 애플리케이션들(634)은 메인 뉴럴 네트워크(104), 타겟 뉴럴 네트워크(106), 뉴럴 네트워크 트레이너(140), 보상 계산기(142), 제어 입력 생성기(144), 비행 시뮬레이터(146), 오프셋 계산기(148) 또는 이들의 조합을 참조하여 설명된 하나 이상의 동작들을 개시하거나, 제어하거나 또는 수행하기 위해 프로세서(들)(620)에 의해 실행가능한 명령들(682)을 포함한다.
특정 구현에서, 시스템 메모리(630)는, 프로세서(들)(620)에 의해 실행될 때 프로세서(들)(620)로 하여금 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 동작들을 개시하거나, 수행하거나 또는 제어하게 하는 명령들(682)을 저장하는 비-일시적인 컴퓨터-판독가능 매체(예컨대, 컴퓨터-판독가능 저장 디바이스)를 포함한다. 동작들은 제1 제어 입력을 비행 시뮬레이터에 제공하는 동작을 포함한다. 비행 시뮬레이터는, 제1 제어 입력에 응답하는 제1 상태 데이터를 생성하며, 그리고 후보 제2 제어 입력을 생성하기 위해 제1 뉴럴 네트워크에 입력으로서 제1 상태 데이터를 제공한다. 동작들은 또한, 랜덤 값에 기반하여 비행 시뮬레이터에 대한 제2 제어 입력을 선택하는 동작을 포함한다. 제2 제어 입력은 후보 제2 제어 입력과 랜덤화된 오프셋 제어 입력 사이에서 선택된다. 랜덤화된 오프셋 제어 입력은 제1 제어 입력에 적용된 랜덤 오프셋에 기반한다. 동작들은 제2 제어 입력을 비행 시뮬레이터에 제공하는 동작을 더 포함한다. 비행 시뮬레이터는 제2 제어 입력에 응답하는 제2 상태 데이터를 생성한다. 동작들은 또한, 제1 상태 데이터 및 제2 상태 데이터에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크의 가중치들을 업데이트하는 동작을 포함한다.
하나 이상의 저장 디바이스들(640)은 비휘발성 저장 디바이스들, 이를테면, 자기 디스크들, 광학 디스크들 또는 플래시 메모리 디바이스들을 포함한다. 특정 예에서, 저장 디바이스들(640)은 제거가능한 메모리 디바이스 및 제거가능하지 않은 메모리 디바이스 둘 모두를 포함한다. 저장 디바이스들(640)은 운영체제, 운영체제들의 이미지들, 애플리케이션들(예컨대, 애플리케이션들(634) 중 하나 이상) 및 프로그램 데이터(예컨대, 프로그램 데이터(636))를 저장하도록 구성된다. 특정 양상에서, 시스템 메모리(630), 저장 디바이스들(640) 또는 둘 모두는 유형의 컴퓨터-판독가능 매체를 포함한다. 특정 양상에서, 저장 디바이스들(640) 중 하나 이상은 컴퓨팅 디바이스(610)의 외부에 있다.
하나 이상의 입력/출력 인터페이스들(650)은 사용자 상호작용을 가능하게 하기 위해 컴퓨팅 디바이스(610)가 하나 이상의 입력/출력 디바이스들(670)과 통신하는 것을 가능하게 한다. 예컨대, 하나 이상의 입력/출력 인터페이스들(650)은 디스플레이 인터페이스, 입력 인터페이스 또는 둘 모두를 포함할 수 있다. 예컨대, 입력/출력 인터페이스(650)는 사용자로부터 입력을 수신하거나, 다른 컴퓨팅 디바이스로부터 입력을 수신하거나, 이들의 조합을 수행하도록 적응된다. 일부 구현들에서, 입력/출력 인터페이스(650)는 직렬 인터페이스들(예컨대, USB(universal serial bus) 인터페이스들 또는 IEEE(Institute of Electrical and Electronics Engineers) 인터페이스 표준들), 병렬 인터페이스들, 디스플레이 어댑터들, 오디오 어댑터들 또는 커스텀 인터페이스들("IEEE"는 뉴저지주 피스카타웨이의 전기전자엔지니어협회(Institute of Electrical and Electronics Engineers, Inc)의 등록 상표임)을 포함하는 하나 이상의 표준 인터페이스 프로토콜들을 따른다. 일부 구현들에서, 입력/출력 디바이스(670)는, 버튼들, 키보드들, 포인팅 디바이스들, 디스플레이들, 스피커들, 마이크로폰들, 터치 스크린들 및 다른 디바이스들의 어떤 조합을 포함하여, 하나 이상의 사용자 인터페이스 디바이스들 및 디스플레이들을 포함한다.
프로세서(들)(620)는 하나 이상의 통신 인터페이스들(660)을 통해 디바이스들 또는 제어기들(680)과 통신하도록 구성된다. 예컨대, 하나 이상의 통신 인터페이스들(660)은 네트워크 인터페이스를 포함할 수 있다. 디바이스들 또는 제어기들(680)은 예컨대 도 5의 항공기(500), 하나 이상의 다른 디바이스들 또는 이들의 임의의 조합을 포함할 수 있다. 특정 예에서, 뉴럴 네트워크 트레이너(140)는, 메인 뉴럴 네트워크(104)의 트레이닝이 완료되었다고 결정하는 것, 사용자 입력을 수신하는 것 또는 둘 모두에 대한 응답으로, 통신 인터페이스들(660)을 통해 항공기(500)에 메인 뉴럴 네트워크(104)를 제공한다.
일부 구현들에서, 비-일시적인 컴퓨터-판독가능 매체(예컨대, 컴퓨터-판독가능 저장 디바이스)는, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금, 위에서 설명된 기능성의 일부 또는 전부를 수행하기 위한 동작들을 개시하거나, 수행하거나 또는 제어하게 하는 명령들을 저장한다. 예컨대, 명령들은 도 1-도 5의 동작들 또는 방법들 중 하나 이상을 구현하도록 실행가능할 수 있다. 일부 구현들에서, 도 1-도 5의 동작들 또는 방법들 중 하나 이상의 일부 또는 전부는, 명령들을 실행하는 하나 이상의 프로세서들(예컨대, 하나 이상의 CPU(central processing unit)들, 하나 이상의 GPU(graphics processing unit)들, 하나 이상의 DSP(digital signal processors)들)에 의해, 전용 하드웨어 회로에 의해 또는 이들의 임의의 조합에 의해 구현될 수 있다.
본원에서 설명된 예들의 예시들은 다양한 구현들의 구조의 일반적인 이해를 제공하는 것으로 의도된다. 예시들은, 본원에서 설명된 구조들 또는 방법들을 활용하는 장치 및 시스템들의 엘리먼트들 및 특징들 전부의 완전한 설명으로서의 역할을 하는 것으로 의도되지 않는다. 본 개시내용을 검토할 때, 많은 다른 구현들이 당업자들에게 자명할 수 있다. 본 개시내용으로부터 다른 구현들이 활용 및 도출될 수 있어서, 본 개시내용의 범위로부터 벗어나지 않고 구조적인 그리고 논리적인 치환들 및 변화들이 이루어질 수 있다. 예컨대, 방법 동작들은 도면들에서 도시된 것과 상이한 순서로 수행될 수 있거나, 또는 하나 이상의 방법 동작들이 생략될 수 있다. 이에 따라서, 본 개시내용 및 도면들은 제한적인 것이 아니라 예시적인 것으로서 간주되어야 한다.
게다가, 특정 예들이 본원에서 예시 및 설명되었지만, 동일한 또는 유사한 결과들을 달성하도록 설계된 임의의 후속하는 어레인지먼트가 도시된 특정 구현들을 대신할 수 있다는 것이 인식되어야 한다. 본 개시내용은 다양한 구현들의 임의의 그리고 모든 후속하는 적응들 또는 변형들을 커버하는 것으로 의도된다. 위의 구현들의 조합들, 및 본원에서 구체적으로 설명되지 않은 다른 구현들은, 본 설명을 검토할 때 당업자들에게 자명할 것이다.
추가로, 본 개시내용은 다음의 조항들에 따른 예들을 포함한다:
조항 1. 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스로서,
제1 뉴럴 네트워크(104, 220)를 저장하도록 구성된 메모리(132);
제어 입력 생성기(144); 및
뉴럴 네트워크 트레이너(140)를 포함하며,
제어 입력 생성기(144)는,
제1 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하도록 ―비행 시뮬레이터(146)는, 제1 제어 입력(103, 113)에 응답하는 제1 상태 데이터(105, 115)를 생성하도록 그리고 후보 제2 제어 입력(107)을 생성하기 위해 제1 뉴럴 네트워크(104, 220)에 입력으로서 제1 상태 데이터(105, 115)를 제공하도록 구성됨―,
랜덤 값에 기반하여 비행 시뮬레이터(146)에 대한 제2 제어 입력(103, 113)을 선택하도록 ―제2 제어 입력(103, 113)은 후보 제2 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택되고, 랜덤화된 오프셋 제어 입력(191)은 제1 제어 입력(103, 113)에 적용된 랜덤 오프셋(109)에 기반함―, 그리고
제2 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하도록 구성되며,
비행 시뮬레이터(146)는 제2 제어 입력(103, 113)에 응답하는 제2 상태 데이터(105, 115)를 생성하도록 구성되며,
뉴럴 네트워크 트레이너(140)는, 제1 상태 데이터(105, 115) 및 제2 상태 데이터(105, 115)에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크(104, 220)의 가중치들(121)을 업데이트하도록 구성된다.
조항 2. 조항 1의 디바이스에 있어서, 제어 입력 생성기(144)는, 제1 제어 입력(103, 113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써, 랜덤화된 오프셋 제어 입력(191)을 생성하도록 구성된다.
조항 3. 조항 1의 디바이스에 있어서, 제어 입력 생성기(144)는 제2 상태 데이터(105, 115)에 의해 표시된 고도 변화 및 피치에 기반하여 보상 값(111)을 결정하도록 구성되고, 가중치들(121)은 보상 값(111)에 적어도 부분적으로 기반하여 업데이트된다.
조항 4. 조항 3의 디바이스에 있어서, 제1 뉴럴 네트워크(104, 220)는 복수의 제어 입력들에 대응하는 복수의 출력 노드들(206)을 포함하고, 복수의 출력 노드들 중 제1 출력 노드(206)가 후보 제2 제어 입력(107)에 대응하고, 제1 뉴럴 네트워크(104, 220)는, 제1 상태 데이터(105, 115)를 수신하도록 그리고 복수의 출력 노드들(206)에 대한 출력 값들로서 복수의 예측 보상 값들을 생성하도록 구성되며, 제1 출력 노드(206)에 대한 제1 예측 보상 값(117, 127, 219)은 복수의 예측 보상 값들로부터의 가장 높은 예측 보상 값이다.
조항 5. 조항 4의 디바이스에 있어서, 메모리(132)는 추가로, 제2 뉴럴 네트워크(106, 220)를 저장하도록 구성되며, 뉴럴 네트워크 트레이너(140)는 추가로,
제2 뉴럴 네트워크(106, 220)에 제2 입력으로서 제2 상태 데이터(105, 115)를 제공하도록 ―제2 뉴럴 네트워크(106, 220)는 복수의 제어 입력들에 대응하는 복수의 제2 출력 노드들(206)을 포함하고, 제2 뉴럴 네트워크(106, 220)는, 제2 상태 데이터(105, 115)를 수신하도록 그리고 복수의 제2 출력 노드들(206)에 대한 제2 출력 값들로서 복수의 제2 예측 보상 값들을 생성하도록 구성됨―; 그리고
제2 출력 노드(206)에 대한 제2 예측 보상 값(119, 219)이 복수의 제2 예측 보상 값들로부터의 가장 높은 예측 보상 값이라고 결정하도록 구성되며,
제1 뉴럴 네트워크(104, 220)의 가중치들(121)은 보상 값(111), 제1 예측 보상 값(117, 127, 219) 및 제2 예측 보상 값(119, 219)에 기반하여 업데이트된다.
조항 6. 조항 5의 디바이스에 있어서, 제2 뉴럴 네트워크(106, 220)는 제1 뉴럴 네트워크(104, 220)의 지연된 사본이다.
조항 7. 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법으로서,
제1 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하는 단계 ―비행 시뮬레이터(146)는, 제1 제어 입력(103, 113)에 응답하는 제1 상태 데이터(105, 115)를 생성하며, 그리고 후보 제2 제어 입력(107)을 생성하기 위해 제1 뉴럴 네트워크(104, 220)에 입력으로서 제1 상태 데이터(105, 115)를 제공함―;
랜덤 값에 기반하여 비행 시뮬레이터(146)에 대한 제2 제어 입력(103, 113)을 선택하는 단계 ―제2 제어 입력(103, 113)은 후보 제2 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택되고, 랜덤화된 오프셋 제어 입력(191)은 제1 제어 입력(103, 113)에 적용된 랜덤 오프셋(109)에 기반함―;
제2 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하는 단계 ―비행 시뮬레이터(146)는 제2 제어 입력(103, 113)에 응답하는 제2 상태 데이터(105, 115)를 생성함―; 및
제1 상태 데이터(105, 115) 및 제2 상태 데이터(105, 115)에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크(104, 220)의 가중치들(121)을 업데이트하는 단계를 포함한다.
조항 8. 조항 7의 방법에 있어서, 후보 제2 제어 입력(107)은 랜덤 값이 랜덤화 구성 값(193) 이하라고 결정하는 것에 대한 응답으로 제2 제어 입력(103, 113)으로서 선택된다.
조항 9. 조항 7의 방법에 있어서, 랜덤화된 오프셋 제어 입력(191)은 랜덤 값이 랜덤화 구성 값(193)을 초과한다고 결정하는 것에 대한 응답으로 제2 제어 입력(103, 113)으로서 선택된다.
조항 10. 조항 7의 방법에 있어서, 제1 뉴럴 네트워크(104, 220)를 트레이닝하는 반복 수에 기반하여 랜덤화 구성 값(193)을 업데이트하는 단계를 더 포함하고, 제2 제어 입력(103, 113)은 랜덤화 구성 값(193)에 기반하여 선택된다.
조항 11. 조항 7의 방법에 있어서, 제1 제어 입력(103, 113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써, 랜덤화된 오프셋 제어 입력(191)을 생성하는 단계를 더 포함한다.
조항 12. 조항 7의 방법에 있어서, 제1 상태 데이터(105, 115)는 고도, 속도, 피치, 엘리베이터 세팅, 고도 변화, 속도 변화 또는 피치 변화 중 적어도 하나를 표시한다.
조항 13. 조항 7의 방법에 있어서, 제2 상태 데이터(105, 115)에 의해 표시된 고도 변화 및 피치에 기반하여 보상 값(111)을 결정하는 단계를 더 포함하고, 가중치들(121)은 보상 값(111)에 적어도 부분적으로 기반하여 업데이트된다.
조항 14. 조항 13의 방법에 있어서, 제1 뉴럴 네트워크(104, 220)는 복수의 제어 입력들에 대응하는 복수의 출력 노드들(206)을 포함하고, 제1 출력 노드(206)가 후보 제2 제어 입력(107)에 대응하고, 제1 뉴럴 네트워크(104, 220)는, 제1 상태 데이터(105, 115)를 수신하도록 그리고 복수의 출력 노드들(206)에 대한 출력 값들로서 복수의 예측 보상 값들을 생성하도록 구성되며, 제1 출력 노드(206)에 대한 제1 예측 보상 값(117, 127, 219)은 복수의 예측 보상 값들로부터의 가장 높은 예측 보상 값이다.
조항 15. 조항 14의 방법에 있어서,
제2 뉴럴 네트워크(106, 220)에 제2 입력으로서 제2 상태 데이터(105, 115)를 제공하는 단계 ―제2 뉴럴 네트워크(106, 220)는 복수의 제어 입력들에 대응하는 복수의 제2 출력 노드들(206)을 포함하고, 제2 뉴럴 네트워크(106, 220)는, 제2 상태 데이터(105, 115)를 수신하도록 그리고 복수의 제2 출력 노드들(206)에 대한 제2 출력 값들로서 복수의 제2 예측 보상 값들을 생성하도록 구성됨―; 및
제2 출력 노드(206)에 대한 제2 예측 보상 값(119, 219)이 복수의 제2 예측 보상 값들로부터의 가장 높은 예측 보상 값이라고 결정하는 단계를 더 포함하며,
제1 뉴럴 네트워크(104, 220)의 가중치들(121)은 보상 값(111), 제1 예측 보상 값(117, 127, 219) 및 제2 예측 보상 값(119, 219)에 기반하여 업데이트된다.
조항 16. 조항 15의 방법에 있어서, 제2 뉴럴 네트워크(106, 220)는 제1 뉴럴 네트워크(104, 220)의 지연된 사본이다.
조항 17. 조항 15의 방법에 있어서, 제2 뉴럴 네트워크(106, 220)의 제2 가중치들의 이전 업데이트 이후에 제1 뉴럴 네트워크(104, 220)를 트레이닝하는 반복 수가 임계치를 초과한다고 결정하는 것에 기반하여, 제1 뉴럴 네트워크(104, 220)의 가중치들(121)에 기반하여 제2 뉴럴 네트워크(106, 220)의 제2 가중치들을 업데이트하는 단계를 더 포함한다.
조항 18. 명령들을 저장한 컴퓨터-판독가능 저장 디바이스로서, 명령들은, 하나 이상의 프로세서들에 의해 실행될 때, 하나 이상의 프로세서들로 하여금 동작들을 수행하게 하고,
동작들은,
제1 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하는 동작 ―비행 시뮬레이터(146)는, 제1 제어 입력(103, 113)에 응답하는 제1 상태 데이터(105, 115)를 생성하며, 그리고 후보 제2 제어 입력(107)을 생성하기 위해 제1 뉴럴 네트워크(104, 220)에 입력으로서 제1 상태 데이터(105, 115)를 제공함―;
랜덤 값에 기반하여 비행 시뮬레이터(146)에 대한 제2 제어 입력(103, 113)을 선택하는 동작 ―제2 제어 입력(103, 113)은 후보 제2 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택되고, 랜덤화된 오프셋 제어 입력(191)은 제1 제어 입력(103, 113)에 적용된 랜덤 오프셋(109)에 기반함―;
제2 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하는 동작 ―비행 시뮬레이터(146)는 제2 제어 입력(103, 113)에 응답하는 제2 상태 데이터(105, 115)를 생성함―; 및
제1 상태 데이터(105, 115) 및 제2 상태 데이터(105, 115)에 적어도 부분적으로 기반하여 제1 뉴럴 네트워크(104, 220)의 가중치들(121)을 업데이트하는 동작을 포함한다.
조항 19. 조항 18의 컴퓨터-판독가능 저장 디바이스에 있어서, 제1 상태 데이터(105, 115)는 고도, 속도, 피치, 엘리베이터 세팅, 고도 변화, 속도 변화 또는 피치 변화 중 적어도 하나를 표시한다.
조항 20. 조항 18의 컴퓨터-판독가능 저장 디바이스에 있어서, 동작들은, 제2 상태 데이터(105, 115)에 의해 표시된 고도 변화 및 피치에 기반하여 보상 값(111)을 결정하는 동작을 더 포함하고, 가중치들(121)은 보상 값(111)에 적어도 부분적으로 기반하여 업데이트된다.
본 개시내용의 요약은, 이 요약이 청구항들의 범위 또는 의미를 해석하거나 또는 제한하기 위해 사용되지 않을 것이라는 것을 조건부로 제출된다. 부가하여, 앞선 상세한 설명에서, 본 개시내용을 간소화하는 목적을 위해 다양한 특징들이 단일 구현에서 함께 그룹핑되거나 또는 설명될 수 있다. 위에서 설명된 예들은 본 개시내용을 예시하지만, 본 개시내용을 제한하지 않는다. 또한, 많은 수정들 및 변형들이 본 개시내용의 원리들에 따라 가능하다는 것이 이해되어야 한다. 다음의 청구항들이 반영하는 바와 같이, 청구되는 발명의 요지는 개시된 예들 중 임의의 예의 특징들 전부보다는 더 적은 수의 특징들에 관한 것일 수 있다. 이에 따라서, 본 개시내용의 범위는 다음의 청구항들 및 그들의 등가물들에 의해 정의된다.

Claims (15)

  1. 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스로서,
    제1 뉴럴 네트워크(104, 220)를 저장하도록 구성된 메모리(132);
    제어 입력 생성기(144); 및
    뉴럴 네트워크 트레이너(140)
    를 포함하며,
    상기 제어 입력 생성기(144)는,
    제1 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하도록 ―상기 비행 시뮬레이터(146)는, 상기 제1 제어 입력(103, 113)에 응답하는 제1 상태 데이터(105, 115)를 생성하도록 그리고 후보 제2 제어 입력(107)을 생성하기 위해 상기 제1 뉴럴 네트워크(104, 220)에 입력으로서 상기 제1 상태 데이터(105, 115)를 제공하도록 구성됨―,
    랜덤 값에 기반하여 상기 비행 시뮬레이터(146)에 대한 제2 제어 입력(103, 113)을 선택하도록 ―상기 제2 제어 입력(103, 113)은 상기 후보 제2 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택되고, 상기 랜덤화된 오프셋 제어 입력(191)은 상기 제1 제어 입력(103, 113)에 적용된 랜덤 오프셋(109)에 기반함―, 그리고
    상기 제2 제어 입력(103, 113)을 상기 비행 시뮬레이터(146)에 제공하도록
    구성되며,
    상기 비행 시뮬레이터(146)는 상기 제2 제어 입력(103, 113)에 응답하는 제2 상태 데이터(105, 115)를 생성하도록 구성되며,
    상기 뉴럴 네트워크 트레이너(140)는, 상기 제1 상태 데이터(105, 115) 및 상기 제2 상태 데이터(105, 115)에 적어도 부분적으로 기반하여 상기 제1 뉴럴 네트워크(104, 220)의 가중치들(121)을 업데이트하도록 구성된,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  2. 제1 항에 있어서,
    상기 제어 입력 생성기(144)는, 상기 제1 제어 입력(103, 113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써, 상기 랜덤화된 오프셋 제어 입력(191)을 생성하도록 구성되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  3. 제1 항에 있어서,
    상기 제어 입력 생성기(144)는 상기 제2 상태 데이터(105, 115)에 의해 표시된 고도 변화 및 피치에 기반하여 보상 값(111)을 결정하도록 구성되고, 상기 가중치들(121)은 상기 보상 값(111)에 적어도 부분적으로 기반하여 업데이트되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  4. 제3 항에 있어서,
    상기 제1 뉴럴 네트워크(104, 220)는 복수의 제어 입력들에 대응하는 복수의 출력 노드들(206)을 포함하고, 상기 복수의 출력 노드들 중 제1 출력 노드(206)가 상기 후보 제2 제어 입력(107)에 대응하고, 상기 제1 뉴럴 네트워크(104, 220)는, 상기 제1 상태 데이터(105, 115)를 수신하도록 그리고 상기 복수의 출력 노드들(206)에 대한 출력 값들로서 복수의 예측 보상 값들을 생성하도록 구성되며, 상기 제1 출력 노드(206)에 대한 제1 예측 보상 값(117, 127, 219)은 상기 복수의 예측 보상 값들로부터의 가장 높은 예측 보상 값인,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  5. 제4 항에 있어서,
    상기 메모리(132)는 추가로, 제2 뉴럴 네트워크(106, 220)를 저장하도록 구성되며,
    상기 뉴럴 네트워크 트레이너(140)는 추가로,
    상기 제2 뉴럴 네트워크(106, 220)에 제2 입력으로서 상기 제2 상태 데이터(105, 115)를 제공하도록 ―상기 제2 뉴럴 네트워크(106, 220)는 상기 복수의 제어 입력들에 대응하는 복수의 제2 출력 노드들(206)을 포함하고, 상기 제2 뉴럴 네트워크(106, 220)는, 상기 제2 상태 데이터(105, 115)를 수신하도록 그리고 상기 복수의 제2 출력 노드들(206)에 대한 제2 출력 값들로서 복수의 제2 예측 보상 값들을 생성하도록 구성됨―; 그리고
    제2 출력 노드(206)에 대한 제2 예측 보상 값(119, 219)이 상기 복수의 제2 예측 보상 값들로부터의 가장 높은 예측 보상 값이라고 결정하도록
    구성되며,
    상기 제1 뉴럴 네트워크(104, 220)의 상기 가중치들(121)은 상기 보상 값(111), 상기 제1 예측 보상 값(117, 127, 219) 및 상기 제2 예측 보상 값(119, 219)에 기반하여 업데이트되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  6. 제5 항에 있어서,
    상기 제2 뉴럴 네트워크(106, 220)는 상기 제1 뉴럴 네트워크(104, 220)의 지연된 사본(delayed copy)인,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 디바이스.
  7. 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법으로서,
    제1 제어 입력(103, 113)을 비행 시뮬레이터(146)에 제공하는 단계 ―상기 비행 시뮬레이터(146)는, 상기 제1 제어 입력(103, 113)에 응답하는 제1 상태 데이터(105, 115)를 생성하며, 그리고 후보 제2 제어 입력(107)을 생성하기 위해 제1 뉴럴 네트워크(104, 220)에 입력으로서 상기 제1 상태 데이터(105, 115)를 제공함―;
    랜덤 값에 기반하여 상기 비행 시뮬레이터(146)에 대한 제2 제어 입력(103, 113)을 선택하는 단계 ―상기 제2 제어 입력(103, 113)은 상기 후보 제2 제어 입력(107)과 랜덤화된 오프셋 제어 입력(191) 사이에서 선택되고, 상기 랜덤화된 오프셋 제어 입력(191)은 상기 제1 제어 입력(103, 113)에 적용된 랜덤 오프셋(109)에 기반함―;
    상기 제2 제어 입력(103, 113)을 상기 비행 시뮬레이터(146)에 제공하는 단계 ―상기 비행 시뮬레이터(146)는 상기 제2 제어 입력(103, 113)에 응답하는 제2 상태 데이터(105, 115)를 생성함―; 및
    상기 제1 상태 데이터(105, 115) 및 상기 제2 상태 데이터(105, 115)에 적어도 부분적으로 기반하여 상기 제1 뉴럴 네트워크(104, 220)의 가중치들(121)을 업데이트하는 단계
    를 포함하는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  8. 제7 항에 있어서,
    상기 후보 제2 제어 입력(107)은 상기 랜덤 값이 랜덤화 구성 값(193) 이하라고 결정하는 것에 대한 응답으로 상기 제2 제어 입력(103, 113)으로서 선택되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  9. 제7 항에 있어서,
    상기 랜덤화된 오프셋 제어 입력(191)은 상기 랜덤 값이 랜덤화 구성 값(193)을 초과한다고 결정하는 것에 대한 응답으로 상기 제2 제어 입력(103, 113)으로서 선택되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  10. 제7 항에 있어서,
    상기 제1 뉴럴 네트워크(104, 220)를 트레이닝하는 반복 수(count of iterations)에 기반하여 랜덤화 구성 값(193)을 업데이트하는 단계
    를 더 포함하고,
    상기 제2 제어 입력(103, 113)은 상기 랜덤화 구성 값(193)에 기반하여 선택되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  11. 제7 항에 있어서,
    상기 제1 제어 입력(103, 113)의 값을 중심으로 하는 범위 내에서 값을 랜덤하게 선택함으로써, 상기 랜덤화된 오프셋 제어 입력(191)을 생성하는 단계
    를 더 포함하는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  12. 제7 항에 있어서,
    상기 제1 상태 데이터(105, 115)는 고도, 속도(speed), 피치, 엘리베이터(elevator) 세팅, 고도 변화, 속도 변화 또는 피치 변화 중 적어도 하나를 표시하는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  13. 제7 항에 있어서,
    상기 제2 상태 데이터(105, 115)에 의해 표시된 고도 변화 및 피치에 기반하여 보상 값(111)을 결정하는 단계
    를 더 포함하고,
    상기 가중치들(121)은 상기 보상 값(111)에 적어도 부분적으로 기반하여 업데이트되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  14. 제13 항에 있어서,
    상기 제1 뉴럴 네트워크(104, 220)는 복수의 제어 입력들에 대응하는 복수의 출력 노드들(206)을 포함하고, 제1 출력 노드(206)가 상기 후보 제2 제어 입력(107)에 대응하고, 상기 제1 뉴럴 네트워크(104, 220)는, 상기 제1 상태 데이터(105, 115)를 수신하도록 그리고 상기 복수의 출력 노드들(206)에 대한 출력 값들로서 복수의 예측 보상 값들을 생성하도록 구성되며, 상기 제1 출력 노드(206)에 대한 제1 예측 보상 값(117, 127, 219)은 상기 복수의 예측 보상 값들로부터의 가장 높은 예측 보상 값인,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
  15. 제14 항에 있어서,
    제2 뉴럴 네트워크(106, 220)에 제2 입력으로서 상기 제2 상태 데이터(105, 115)를 제공하는 단계 ―상기 제2 뉴럴 네트워크(106, 220)는 상기 복수의 제어 입력들에 대응하는 복수의 제2 출력 노드들(206)을 포함하고, 상기 제2 뉴럴 네트워크(106, 220)는, 상기 제2 상태 데이터(105, 115)를 수신하도록 그리고 상기 복수의 제2 출력 노드들(206)에 대한 제2 출력 값들로서 복수의 제2 예측 보상 값들을 생성하도록 구성됨―; 및
    제2 출력 노드(206)에 대한 제2 예측 보상 값(119, 219)이 상기 복수의 제2 예측 보상 값들로부터의 가장 높은 예측 보상 값이라고 결정하는 단계
    를 더 포함하며,
    상기 제1 뉴럴 네트워크(104, 220)의 상기 가중치들(121)은 상기 보상 값(111), 상기 제1 예측 보상 값(117, 127, 219) 및 상기 제2 예측 보상 값(119, 219)에 기반하여 업데이트되는,
    항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하는 방법.
KR1020200107778A 2019-08-29 2020-08-26 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들 KR20210028107A (ko)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US16/554,838 US11481634B2 (en) 2019-08-29 2019-08-29 Systems and methods for training a neural network to control an aircraft
US16/554,838 2019-08-29

Publications (1)

Publication Number Publication Date
KR20210028107A true KR20210028107A (ko) 2021-03-11

Family

ID=72147928

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020200107778A KR20210028107A (ko) 2019-08-29 2020-08-26 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들

Country Status (6)

Country Link
US (1) US11481634B2 (ko)
EP (1) EP3786925A1 (ko)
JP (1) JP2021057024A (ko)
KR (1) KR20210028107A (ko)
CN (1) CN112445129A (ko)
CA (1) CA3091273A1 (ko)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11586200B2 (en) * 2020-06-22 2023-02-21 The Boeing Company Method and system for vehicle engagement control
CN113110547B (zh) * 2021-04-21 2022-06-07 吉林大学 一种微型航空飞行器的飞行控制方法、装置及设备
US20220343770A1 (en) * 2021-04-27 2022-10-27 Rockwell Collins, Inc. Machine-learned operating system and processor
CN113379047B (zh) * 2021-05-25 2024-04-05 北京微芯智通科技合伙企业(有限合伙) 一种实现卷积神经网络处理的系统及方法
CN114333493B (zh) * 2021-12-31 2022-10-14 江苏普旭科技股份有限公司 驾驶模拟器的人感仿真系统与方法
CN114037193A (zh) * 2022-01-11 2022-02-11 成都飞机工业(集团)有限责任公司 飞机的装配周期预测方法、装置、终端设备以及存储介质

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6114976A (en) * 1999-02-05 2000-09-05 The Boeing Company Vehicle emergency warning and control system
US6332105B1 (en) * 1999-05-21 2001-12-18 Georgia Tech Research Corporation Neural network based automatic limit prediction and avoidance system and method
US6735500B2 (en) * 2002-06-10 2004-05-11 The Boeing Company Method, system, and computer program product for tactile cueing flight control
US8489528B2 (en) * 2009-07-28 2013-07-16 Georgia Tech Research Corporation Systems and methods for training neural networks based on concurrent use of current and recorded data
WO2018117872A1 (en) * 2016-12-25 2018-06-28 Baomar Haitham The intelligent autopilot system
CN107479368B (zh) * 2017-06-30 2021-09-21 北京百度网讯科技有限公司 一种基于人工智能的训练无人机控制模型的方法及系统
US20210123741A1 (en) * 2019-10-29 2021-04-29 Loon Llc Systems and Methods for Navigating Aerial Vehicles Using Deep Reinforcement Learning

Also Published As

Publication number Publication date
US20210065003A1 (en) 2021-03-04
US11481634B2 (en) 2022-10-25
CA3091273A1 (en) 2021-02-28
EP3786925A1 (en) 2021-03-03
JP2021057024A (ja) 2021-04-08
CN112445129A (zh) 2021-03-05

Similar Documents

Publication Publication Date Title
KR20210028107A (ko) 항공기를 제어하기 위해 뉴럴 네트워크를 트레이닝하기 위한 시스템들 및 방법들
US11568327B2 (en) Method for generating universal learned model
WO2019018375A1 (en) NEURONAL ARCHITECTURE RESEARCH FOR CONVOLUTION NEURAL NETWORKS
KR102527878B1 (ko) 키 포인트 학습 모델 구축 방법, 장치, 전자 기기 및 판독 가능한 저장 매체 그리고 프로그램
TW201947464A (zh) 用於離散化深度神經網路的量化的連續鬆弛
CN110956202B (zh) 基于分布式学习的图像训练方法、系统、介质及智能设备
CN110481536B (zh) 一种应用于混合动力汽车的控制方法及设备
US11150670B2 (en) Autonomous behavior generation for aircraft
US20160098505A1 (en) Efficient emulation and logic analysis
CN111966361B (zh) 用于确定待部署模型的方法、装置、设备及其存储介质
US20240067361A1 (en) Aircraft system operational testing
CN116627157B (zh) 一种运载火箭的运行控制方法、装置及设备
CN109115446A (zh) 基于跨声速风洞风速精度控制方法及系统
CN111125829A (zh) 一种优化全动平尾静气动弹性和颤振的方法
US20210357692A1 (en) Multi-fidelity simulated data for machine learning
TWI824198B (zh) 預測無人機的耗電量的方法及使用所述方法的無人機
EP3822949A1 (en) Systems and methods for predicting flight data
WO2021086486A1 (en) Neural network instruction streaming
CN111506959A (zh) 一种用于飞行模拟训练通用型飞控系统及方法
US11475183B1 (en) Simulation environment with dynamic optimization of fidelity
US20240105062A1 (en) Aircraft performance model based on historical flight data
US20230281277A1 (en) Remote agent implementation of reinforcement learning policies
CN115576205B (zh) 反馈控制方法、通用反馈控制器、训练方法、可读存储介质、计算机程序产品及系统
CN108596964B (zh) 深度数据获取方法、装置及可读存储介质
CN117744732A (zh) 深度学习模型的训练方法、推理方法、装置、设备和介质

Legal Events

Date Code Title Description
A201 Request for examination