인공지능/강화학습

Matlab 강화학습 - 실질적인 문제 극복하기

이게될까 2024. 5. 8. 16:50
728x90
728x90

https://kr.mathworks.com/videos/reinforcement-learning-part-5-overcoming-the-practical-challenges-of-reinforcement-learning-1558604830037.html

 

Reinforcement Learning, Part 5: Overcoming the Practical Challenges of Reinforcement Learning

There are a few challenges that occur when using reinforcement learning for production systems and there are some ways to mitigate them. This video covers the difficulties of verifying the learned solution and what you can do about it.

kr.mathworks.com

1. 학습된 정책이 있지만 완벽하지 않은 경우 어떻게 할까?

두발 로봇을 만들었고, 배포를 해본다고 생각해보자

엄청 복잡한 뉴럴넷 함수로 되어있다. 블랙박스로 되어있는 것이다.

운영 환경이 변화하면 이 정책을 어떻게 변화해야 할까?
-> 블랙박스라서 이해하기 힘들다. == 수동적으로 바꿀 수 없다. -> 왜 이렇게 판단하는지 설명할 수 없다.

기계적으로 제어된 상황에서는 설명할 수 있다. 

이 블랙박스에서 잘못되면 재학습을 시켜야 한다. -> 시간이 오래걸린다.
더 심각한 문제는 환경 모델의 정확성이다. 교란과 노이즈까지 가지고 있는 현실적인 모델이 힘들다.
완벽한 모델을 만들 수 없을 수도 있다.

RL 에이전트의 역할을 줄여버릴 수 있다. - 특화된 문제만 풀도록 하는 것이다.
복잡성을 줄여 좀 더 많은 일을 할 수 있게 해준다.

 

2. 이 솔루션이 완벽한지 어떻게 알 수 있을까?

일반적인 테스트를 진행해본다. - 시뮬과 실제 상황 둘 다

환경이 변화하면 테스트도 전부 진행해봐야 한다.

우린 모든 테스트를 진행할 수 없다. 코드 검사 또한 어렵다.
강건성이나 위험성 검사 또한...

검증이 어렵다
고장이 나도 원인을 알기 어렵다
원인을 알아도 수정하기 어렵다.

그래도 강화 학습은 유용하다!

 

강건하게 만드는 법!

매게변수를 능동적으로 변동한다.

공정의 오차를 허용해준다! -> 학습이 진행되면서 적응해간다.

더 넓은 범위의 오차를 하드웨어가 버티면서 진행할 것이다.

https://ntrs.nasa.gov/citations/20170007190

 

Challenges in the Verification of Reinforcement Learning Algorithms - NASA Technical Reports Server (NTRS)

Acquisition Source Langley Research Center Document Type Technical Memorandum (TM) Authors Van Wesel, Perry (Eindhoven Univ. of Technology Eindhoven, Netherlands) Goodloe, Alwyn E. (NASA Langley Research Center Hampton, VA, United States) Date Acquired Aug

ntrs.nasa.gov

https://www.youtube.com/playlist?list=PLn8PRpmsu08oOLBVYYIwwN_nvuyUqEjrj

 

Drone Simulation and Control

See a workflow for developing a control system that takes you from the basics of drone mechanics and to the test flight.You’ll learn about the sensors and ac...

www.youtube.com

https://www.youtube.com/watch?v=2pWv7GOvuf0

 

이 시리즈의 처음 4개 비디오에서는 강화 학습이 얼마나 훌륭한지, 그리고 강화 학습을 사용하여 정말 어려운 제어 문제를 해결하는 방법을 다루었습니다. 따라서 기본적으로 환경을 설정하고 그 안에 RL 에이전트를 배치한 다음, 나가서 커피를 마시는 동안 컴퓨터가 문제를 해결하도록 할 수 있다는 아이디어를 가질 수 있습니다. 불행하게도 완벽한 에이전트와 완벽한 환경을 설정하고 학습 알고리즘이 솔루션에 수렴하더라도 우리가 이야기해야 할 이 방법에는 여전히 단점이 있습니다. 따라서 이 비디오에서는 RL과 관련된 몇 가지 분명하지 않은 문제를 해결하고 이를 완화할 수 있는 몇 가지 방법을 제공하려고 합니다. 직면하게 될 일부 과제를 해결하는 간단한 방법이 없더라도 최소한 이에 대해 생각하게 될 것입니다. 그럼 시작해 보겠습니다. 저는 Brian입니다. MATLAB Tech Talk에 오신 것을 환영합니다.

이 비디오에서 다룰 문제는 두 가지 주요 질문으로 귀결됩니다. 첫 번째는 학습된 정책이 완벽하지 않은 경우 수동으로 조정할 수 있는 방법이 있습니까? 두 번째는 애초에 솔루션이 작동할 것인지 어떻게 알 수 있는가입니다.

첫 번째 질문부터 시작하겠습니다. 이에 답하기 위해 로봇이 두 발로 걸을 수 있는 정책을 배웠고 이 정적 정책을 대상 하드웨어에 배포하려고 한다고 가정해 보겠습니다. 이 정책이 수학적으로 무엇인지 생각해 보세요. 이는 수십만 개의 가중치와 편향, 비선형 활성화 함수를 갖춘 신경망으로 구성됩니다. 이러한 값과 네트워크 구조의 조합은 높은 수준의 관찰을 낮은 수준의 작업에 매핑하는 복잡한 기능을 만듭니다.

이 기능은 본질적으로 디자이너에게 블랙박스입니다. 우리는 이 기능이 어떻게 작동하는지 직관적으로 이해할 수 있습니다. 당신은 관찰을 행동으로 변환하는 수학을 알고 있습니다. 우리는 이 네트워크가 식별한 숨겨진 기능 중 일부를 이해할 수도 있습니다. 그러나 우리는 주어진 가중치나 편향의 가치 뒤에 숨은 이유를 모릅니다. 그렇다면 정책이 사양을 충족하지 않거나 공장이나 운영 환경의 나머지 부분이 변경된 경우 이를 해결하기 위해 정책을 어떻게 조정합니까? 어떤 가중치나 편향을 변경하나요? 문제는 문제 해결을 더 쉽게 만든 바로 그 것, 즉 모든 어려운 로직을 하나의 블랙박스 기능으로 압축함으로써 우리의 최종 솔루션을 이해할 수 없게 만들었다는 것입니다. 이 기능은 사람이 만든 것이 아니고 모든 부분을 알지 못하기 때문에 문제 영역을 수동으로 타겟팅하고 수정하기가 어렵습니다.

현재 설명 가능한 인공지능이라는 개념을 추진하려는 연구가 활발히 진행되고 있다. 이는 사람이 쉽게 이해하고 감사할 수 있도록 네트워크를 설정할 수 있다는 아이디어입니다. 그러나 현재로서는 대부분의 RL 생성 정책이 여전히 블랙박스로 분류되어 디자이너가 출력이 왜 그런 것인지 설명할 수 없습니다. 그러므로 적어도 당분간은 이 상황에 대처하는 방법을 배워야 합니다.

이는 일반적으로 시스템의 매우 특정한 동적 품질을 제어하도록 설계된 루프 및 계단식 컨트롤러로 구성된 계층 구조가 있는 전통적으로 설계된 제어 시스템과 대조됩니다. 부속물 길이나 모터 상수와 같은 물리적 특성에서 이득이 어떻게 파생될 수 있는지 생각해 보세요. 그리고 물리적 시스템이 변경되면 이러한 이득을 변경하는 것이 얼마나 간단한가요? 

또한 시스템이 예상한 대로 작동하지 않는 경우 기존 설계를 사용하면 특정 컨트롤러나 루프에 대한 문제를 정확히 찾아내고 거기에 분석을 집중할 수 있습니다. 컨트롤러를 분리하고 독립형으로 테스트 및 수정하여 지정된 조건에서 작동하는지 확인한 다음 해당 컨트롤러를 더 큰 시스템으로 다시 가져올 수 있습니다.

솔루션이 뉴런과 가중치 및 편향의 모놀리식 모음인 경우에는 이를 수행하기가 정말 어렵습니다. 따라서 우리가 완전히 옳지 않은 정책으로 끝난다면, 정책의 문제가 되는 부분을 고칠 수 있기보다는 에이전트나 환경 모델을 재설계한 다음 다시 훈련시켜야 합니다. 재설계, 훈련, 테스트, 그리고 재설계, 훈련, 테스트의 주기에는 시간이 많이 걸릴 수 있습니다.

그러나 에이전트를 훈련시키는 데 걸리는 시간을 넘어서는 더 큰 문제가 여기에 다가오고 있습니다. 이는 환경 모델의 필요한 정확성에 달려 있습니다.

문제는 시스템의 모든 중요한 역학과 교란 및 소음을 ​​고려하는 충분히 현실적인 모델을 개발하는 것이 정말 어렵다는 것입니다. 어떤 시점에서는 현실을 완벽하게 반영하지 못할 수도 있습니다. 이것이 우리가 모델로 모든 것을 검증하기보다는 여전히 물리적 테스트를 수행해야 하는 이유입니다.

이제 이 불완전한 모델을 사용하여 기존 제어 시스템을 설계하면 설계가 실제 하드웨어에서 완벽하게 작동하지 않을 가능성이 있으므로 변경해야 합니다. 우리가 만든 기능을 이해할 수 있으므로 컨트롤러를 조정하고 시스템에 필요한 조정을 할 수 있습니다.

그러나 신경망 정책으로는 그런 여유가 없습니다. 그리고 실제로 완벽한 모델을 구축할 수는 없기 때문에 이를 사용하여 수행하는 모든 교육은 정확하지 않습니다. 따라서 유일한 옵션은 물리적 하드웨어에서 에이전트 교육을 완료하는 것입니다. 이전 동영상에서 논의한 것처럼 그 자체로 어려울 수 있습니다.

이 문제의 규모를 줄이는 좋은 방법은 단순히 RL 에이전트의 범위를 좁히는 것입니다. 지난 비디오에서 보여준 것처럼 최고 수준의 관찰을 취하고 최저 수준의 작업을 명령하는 정책을 배우는 대신 RL 에이전트를 중심으로 기존 컨트롤러를 래핑하여 매우 전문적인 문제만 해결할 수 있습니다. RL 에이전트를 사용하여 더 작은 문제를 목표로 삼아 설명할 수 없는 블랙박스를 기존 방법으로 해결하기 너무 어려운 시스템 부분으로 축소합니다.

에이전트를 축소한다고 해서 문제가 해결되는 것은 아니며 단지 복잡성이 감소할 뿐입니다. 정책은 더 집중적이므로 수행 중인 작업을 더 쉽게 이해할 수 있고, 훈련 시간이 단축되며, 환경에 역학을 많이 포함할 필요가 없습니다. 그러나 이것에도 불구하고 여전히 두 번째 질문이 남아 있습니다. RL 에이전트가 크기에 관계없이 작동하는지 어떻게 알 수 있습니까? 예를 들어, 불확실성에 견고합니까? 안정성이 보장되나요? 그리고 시스템이 사양을 충족하는지 확인할 수 있습니까?

이에 답하기 위해 기존 제어 시스템을 검증하는 방법부터 다시 시작하겠습니다. 가장 일반적인 방법 중 하나는 테스트를 통해서입니다. 아까 말씀드린 것처럼 물리적인 하드웨어뿐만 아니라 시뮬레이션과 모델을 활용하여 테스트하는 것이며, 시스템이 전체 상태 공간과 현장에서 사양을 충족하는지, 즉 올바르게 작동하는지 확인합니다. 장애 및 하드웨어 오류.

그리고 RL 생성 정책을 사용하여 동일한 수준의 검증 테스트를 수행할 수 있습니다. 다시 말하지만, 문제를 발견하면 문제를 해결하기 위해 정책을 재교육해야 하지만 정책을 테스트하는 것은 비슷한 것으로 보입니다. 그러나 신경망 정책 테스트를 어렵게 만드는 몇 가지 중요한 차이점이 있습니다.

첫째, 학습된 정책을 사용하면 시스템이 다른 상태의 동작을 기반으로 한 상태에서 어떻게 동작할지 예측하기 어렵습니다. 예를 들어 에이전트가 0에서 100RPM까지의 단계 입력을 따르는 방법을 학습하여 전기 모터의 속도를 제어하도록 에이전트를 훈련시키는 경우 테스트 없이는 동일한 정책이 유사한 단계를 따를지 확신할 수 없습니다. 0~150RPM까지 입력합니다. 이는 모터가 선형적으로 동작하는 경우에도 마찬가지입니다. 이러한 약간의 변화로 인해 완전히 다른 뉴런 세트가 활성화되어 원하지 않는 결과를 초래할 수 있습니다. 테스트하지 않으면 알 수 없습니다. 

전통적인 방법을 사용하면 모터가 선형적으로 동작하면 선형 범위 내의 모든 단계 입력이 유사하게 동작한다는 것을 어느 정도 보장할 수 있습니다. 각 테스트를 독립적으로 실행할 필요는 없습니다. 따라서 RL 정책으로 실행해야 하는 테스트 수는 일반적으로 기존 방법보다 많습니다.

신경망 정책에서 테스트를 통한 검증이 어려운 두 번째 이유는 입력 공간이 매우 크고 정의하기 어려울 가능성이 있기 때문입니다. 심층 신경망의 이점 중 하나는 카메라의 이미지와 같은 풍부한 센서를 처리할 수 있다는 점을 기억하세요. 예를 들어, 시스템이 이미지를 사용하여 장애물을 감지할 수 있는지 확인하려는 경우 장애물이 얼마나 다양한 방식으로 나타날 수 있는지 생각해 보세요. 이미지에 수천 개의 픽셀이 있고 각 픽셀의 범위가 0에서 255까지인 경우, 작동하는 숫자의 순열 수와 이를 모두 테스트하는 것이 얼마나 불가능한지 생각해 보십시오. 단계 입력 예와 마찬가지로 네트워크가 특정 조명 조건, 방향 및 규모에 따라 이미지의 한 부분에서 장애물을 인식하는 방법을 학습했다고 해서 다른 부분에서도 작동한다는 보장은 없습니다. 이미지의 방법입니다. 

제가 언급하고 싶은 마지막 어려움은 공식적인 검증에 관한 것입니다. 이러한 방법에는 테스트를 사용하는 대신 형식적인 증명을 제공하여 일부 조건이 충족되도록 보장하는 작업이 포함됩니다.

실제로 공식 검증을 통해 테스트를 통해 사양을 충족할 수 없더라도 사양이 충족될 것이라고 주장할 수 있습니다. 예를 들어 모터 속도 컨트롤러를 사용하여 0~100RPM 및 0~150RPM의 단계 입력을 테스트했습니다. 하지만 50~300 또는 75~80과 같은 다른 모든 입력은 어떻습니까? 10,000개의 속도 조합을 샘플링하더라도 모든 조합을 테스트할 수 없기 때문에 모든 조합이 작동한다고 보장할 수는 없습니다. 위험을 줄일 뿐입니다. 그러나 코드를 검사하거나 전체 범위를 포괄하는 수학적 검증을 수행할 수 있는 방법이 있다면 모든 조합을 테스트할 수 없다는 것은 문제가 되지 않습니다. 우리는 여전히 그들이 효과가 있을 것이라는 확신을 갖고 있습니다.

예를 들어, 해당 신호의 절대값이 소프트웨어에서 수행되는 경우 신호가 항상 양수인지 확인하기 위해 테스트할 필요가 없습니다. 코드를 검사하고 조건이 항상 충족된다는 것을 보여줌으로써 간단히 확인할 수 있습니다. 다른 유형의 공식 검증에는 이득 및 위상 여유와 같은 견고성 및 안정성 요소 계산이 포함됩니다. 

그러나 신경망의 경우 이러한 유형의 공식 검증은 더 어렵거나 경우에 따라 불가능할 수도 있습니다. 앞서 설명한 이유로 인해 코드를 검사하고 코드가 어떻게 작동할지 보장하기가 어렵습니다. 또한 견고성이나 안정성을 판단할 방법이 없으며 센서나 액추에이터가 고장날 경우 어떤 일이 발생할지 추론할 수도 없습니다. 이 모든 것은 함수가 내부적으로 무엇을 하는지 설명할 수 없다는 사실로 돌아옵니다.

좋아요, 학습된 신경망이 설계를 어렵게 만드는 몇 가지 방법은 다음과 같습니다. 다양한 사양에 대한 성능을 검증하는 것은 어렵습니다. 시스템이 실패하면 실패의 원인을 찾아내기 어렵고, 원인을 찾아낸다고 해도 매개변수나 구조를 수동으로 조정하기 어렵기 때문에 다시 설계하고 훈련을 시작하는 방법밖에 없습니다. 다시 과정을 반복하세요.

그러나 저는 생산 시스템을 위한 유용한 도구로서 강화 학습에 대한 여러분의 신뢰를 파괴하고 싶지 않습니다. 왜냐하면, 결국, 불확실성이 있을 때 결과 정책이 더욱 강력해지도록 학습을 설정하는 방법이 있기 때문입니다. 안전성을 높이고 강화 학습을 생산 시스템에 대한 실행 가능한 옵션으로 만드는 방법도 있습니다. 그리고 강화 학습을 사용하여 약간 다른 문제, 즉 애초에 이러한 많은 문제를 방지하는 문제를 해결할 수도 있습니다. 그럼 이번 영상을 긍정적으로 마무리하고 이 세 가지 모두에 대해 이야기해 보도록 하겠습니다. 정책을 더욱 강력하게 만드는 것부터 시작하겠습니다.

견고성을 정량화할 수는 없지만 에이전트가 학습하는 동안 환경의 매개변수를 적극적으로 조정하여 시스템을 더욱 강력하게 만들 수 있습니다.

예를 들어, 보행 로봇의 경우 제조 공차로 인해 관절 모터의 최대 토크가 2~2.1Nm 사이로 떨어진다고 가정해 보겠습니다. 우리는 이러한 로봇을 수십 대 만들 예정이며 이러한 변형에 견고한 모든 로봇에 대한 단일 정책을 배우고 싶습니다. 시뮬레이션이 실행될 때마다 모터 토크 값이 조정되는 환경에서 에이전트를 훈련함으로써 이를 수행할 수 있습니다. 각 에피소드가 시작될 때 해당 범위에서 다른 최대 토크 값을 균일하게 선택할 수 있으므로 시간이 지남에 따라 정책이 이러한 제조 허용 오차에 견고한 값으로 수렴됩니다. 이런 방식으로 모든 중요한 매개변수(부속물 길이, 시스템 지연, 장애물, 참조 신호 등)를 조정하면 전반적으로 견고한 디자인을 얻을 수 있습니다. 특정 이득이나 위상 여유를 주장할 수는 없지만 결과가 작동 상태 공간 내에서 더 넓은 범위를 처리할 수 있다는 확신을 갖게 됩니다.

이는 견고성을 해결하지만 여전히 정책이 하드웨어에서 올바른 작업을 수행한다는 보장을 제공하지 않습니다. 그리고 우리가 원하지 않는 것 중 하나는 하드웨어가 손상되거나 예측할 수 없는 정책으로 인해 누군가가 다치는 것입니다. 따라서 시스템의 전반적인 안전성도 높여야 합니다. 그리고 안전성을 높일 수 있는 한 가지 방법은 시스템이 무슨 일이 있어도 피하길 원하는 상황을 결정한 다음 해당 상황을 모니터링하는 정책 외부에 소프트웨어를 구축하는 것입니다. 해당 모니터가 트리거되면 시스템을 제한하거나 인계받아 손상이 발생하기 전에 일종의 안전 모드로 전환하십시오. 이는 위험한 정책을 배포하는 것을 막지는 못하지만 시스템을 보호하여 시스템이 어떻게 실패하는지 학습하고 해당 실패를 해결하기 위해 보상 및 교육 환경을 조정할 수 있게 해줍니다.

견고성과 안전성을 높이기 위한 수정 사항은 모두 학습된 신경망 정책의 한계에 대한 일종의 해결 방법입니다. 그러나 강화 학습을 사용하면서도 전통적으로 설계된 제어 시스템만큼 강력하고 안전하며 변경 가능하고 검증 가능한 결과를 활용할 수 있는 방법이 있습니다. 이는 단순히 전통적으로 설계된 제어 시스템을 위한 최적화 도구로 사용하는 것입니다. 이렇게 설명하겠습니다. 각각 여러 가지 이점을 제공하는 수십 개의 중첩 루프와 컨트롤러가 포함된 아키텍처를 설계한다고 상상해 보십시오. 조정할 개별 게인 값이 100개 이상인 상황이 발생할 수 있습니다. 이러한 각 이득을 수동으로 조정하는 대신 RL 에이전트를 설정하여 모든 이득에 대한 최상의 값을 한 번에 학습할 수 있습니다.

에이전트는 시스템이 얼마나 잘 수행되고 해당 성능을 얻기 위해 얼마나 많은 노력이 필요한지에 대해 보상을 받게 되며, 그런 다음 작업은 시스템에서 100개 정도의 이득을 얻게 됩니다. 따라서 처음 훈련을 시작할 때 에이전트에서 무작위로 초기화된 신경망은 무작위 값을 생성한 다음 제어 이득을 위해 이를 사용하여 시뮬레이션을 실행합니다. 이제 첫 번째 에피소드에서는 약간의 쓰레기 결과가 나올 가능성이 높지만, 각 에피소드 후에 학습 알고리즘은 이득이 보상을 높이는 방향으로 이동하는 방식으로 신경망을 조정합니다. 즉, 성능은 향상되고 노력은 줄어듭니다.

이러한 방식으로 강화 학습을 사용할 때 좋은 점은 일단 최적의 제어 이득 세트를 학습하면 작업이 끝난다는 것입니다. 다른 것은 필요하지 않습니다. 신경망을 배포하거나 검증할 필요가 없으며 변경해야 하는 것에 대해 걱정할 필요도 없습니다. 최종 정적 이득 값을 시스템에 코딩하기만 하면 됩니다. 이러한 방식으로 여전히 전통적으로 설계된 시스템(예전처럼 하드웨어에서 확인하고 수동으로 조정할 수 있는 시스템)을 갖게 되지만 강화 학습을 사용하여 최적으로 선택된 이득 값으로 시스템을 채웁니다. 일종의 양 세계 최고의 접근 방식입니다.

따라서 강화 학습은 어려운 문제를 해결하는 데 정말 강력하며, 최종 제품에 대해 편안함을 느낄 수 있는 방식으로 강화 학습을 전통적인 접근 방식과 결합하는 방법을 배우고 알아내는 것이 확실히 가치가 있다는 것을 알 수 있기를 바랍니다. 솔루션을 이해하고 그것이 작동하는지 확인하는 것과 관련하여 몇 가지 과제가 존재하지만, 조금 다루었듯이 현재 이러한 과제를 해결할 수 있는 몇 가지 방법이 있습니다.

제가 여러분에게 남기고 싶은 생각은 다음과 같습니다. 학습 알고리즘, MATLAB과 같은 RL 설계 도구 및 검증 방법은 항상 발전하고 있습니다. 우리는 강화 학습의 잠재력을 최대한 활용하지 못했습니다. 아마도 머지않아 모든 복잡한 제어 시스템에 대해 최초로 선택되는 설계 방법이 될 것입니다. 이 영상을 시청해 주셔서 감사합니다.

향후 Tech Talk 동영상을 놓치고 싶지 않다면 이 채널을 구독하는 것을 잊지 마세요. 또한 내 채널인 Control System Lectures를 확인하고 싶으시다면 거기에서 더 많은 제어 주제도 다루고 있습니다. 다음에 뵙겠습니다.

728x90