학습 목표
핵심 키워드
학습 내용
랜덤탐색은
밀도 높은 보상 구조를 가진 연속 운동 문제에서
딥러닝 알고리즘보다 더 좋은 성과를 보이면서 15배나 빠른 학습시간을 보였다.
ARS라고 불리는 증강 랜덤 탐색은 얕은 학습 알고리즘이다.
이 방법에서는 무작위 노이즈와 유전 알고리즘을 이용해 운동문제에서 최첨단의 성능을 뽑는다.
이 알고리즘은 인공신경망의 가장 기본 단위인 퍼셉트론부터 시작하는데 완전연결층이라고도 한다.
입력레이어와 출력레이어만 가지고 있다고 했을때
이 알고리즘으로 로봇에게 걷는 방법을 학습시킨다고 해보자.
로봇의 다리에 있는 모터와 작동기를 출력레이어의 결과값들이 조작하는데
이는 연속적인 조작이 필요하기 때문에 연속적인 값을 가지고 모터의 힘을 조절하게 된다.
이 값이 -1이면 최대한 뒤쪽으로 힘을 가하고
0이면 힘을 가하지 않고 1이면 최대한 앞으로 힘을 가한다.
각각의 입력값은 가중치를 통해서 하나의 출력값을 만들어낸다.
가중치 개수는 입력값 개수 x 출력값 개수이다.
이를 행렬로 표현할 수 있는데 다음과 같다.
모든 출력값은 입력값의 합에 각각에 해당하는 가중치를 곱한 값으로 계산한다.
모든 출력값을 한번에 계산하려면 내적을 하면 된다.
딥러닝에서는 손실함수를 계산해서 예측값이 얼마나 틀렸는지 측정하고
가중치 수정하고 손실을 최소화하기 위해서 복잡한 미분계산을 하였는데
증강 랜덤 탐색에서는 간단한 방법을 사용할 것이다.
이 방법의 핵심은 각 단계마다 가중치(세타)에 랜덤노이즈(델타)를 추가하는 것이다.
다음으로 이 노이즈의 영향을 보기 위해 테스트를 하고
만약 보상이 늘어났다면 이를 유지하고 아니라면 버리게 된다.
다음은 어떻게 위 방법을 실행시키는지에 대한 세부적인 내용(알고리즘)이다.
가중치를 업데이트하기 위해 경사하강법 대신 유한차분법을 사용한다.
1) 가중치와 똑같은 크기의 가우시안 노이즈 행렬을 만든다. (정규분포 랜덤 숫자)
2) 현재 가중치의 두 개의 복사본을 만든다.
3) 세타+는 노이즈를 더하고 세타-에는 노이즈를 빼준다.
4) 두버전을 가지고 하나의 에피소드에서 테스트하여 전체 보상을 가져와서 reward+와 reward-를 계산한다.
5) 이 식을 가지고 가중치를 업데이트한다. 세타+는 학습률, 즉 알파에 reward+와 reward-를 뺀 값을 곱하고 델타를 곱해서 계산한다.
6) 위 단계를 원하는 성능에 도달할 때까지 반복한다.
이 알고리즘은 모든 입력값들이 0~1사이의 숫자, 즉 정규화된 숫자일 때 가장 잘 작동한다.
이제 가장 중요한 학습 루프가 어떻게 작동하는지 살펴보도록 하자.
1) 먼저 num_deltas와 deltas라는 두 수를 생성한다.
이 둘을 동시에 테스트한다.
만약 num_deltas가 16이면 16개의 세타+와 16개의 세타-를 테스트한다.
이 예로 들면 총 32번 테스트를 하게되는 셈이다.
2) num_deltas만큼의 에피소드를 양의 분산과 음의 분산에 대해서 실행한다.
3) 이 결과를 모아서 reward+, reward-, 델타로 이루어진 튜플을 만든다.
4) 그리고 모든 보상에 대해서 표준편차를 계산한다. (sigma_rewards)
5) 테스트 결과를 최대 보상에 대해서 정렬하고 가장 좋은 num_deltas만큼의 결과를 뽑는다.
6. 최종 식은 다음과 같다.
step = sum ( (r[+] - r[-]) * delta )
먼저 step이라는 변수를 계산하는데
step은 가장 좋은 결과에 대해서 계속 반복하고 (reward+ - reward-)에 델타를 곱한 값을 계산해서 이를 모두 더한다.
7) 이제 세타+는 학습률을 가장 좋은 델타값과 reward(보상)의 표준편차를 곱한 값으로 나누고 앞서 계산한 step을 곱하여 계산한다.
8) 다음은 평가단계이다. 새로운 가중치를 가지고 에피소드를 실행하고 어떻게 작동하는지 보고 점수를 출력한다.
9) 원하는 성능에 도달하거나 reward(보상)이 더 이상 증가하지 않을 때까지 이를 반복한다.
실습은 강의를 참고해서 하길 바란다.
[강의URL] https://www.youtube.com/watch?v=2P2Dj5PX5cg
학습 목표
핵심 키워드
칼만 필터는
간접적이고 불확실한 측정치로 시스템의 상태를 추정할 때 사용할 수 있는 최적의 추정 알고리즘입니다.
다음은 칼만 필터를 사용하는 예시입니다.
(ex1) 우주선 엔진의 연소 상태를 측정하는 방법
우주선은 우주에 진입하기 위해 추진력을 필요로 함
연료가 이 추진력을 제공하는데 충분한 추진력을 만들기 위해 연소실에서 연료를 특정 온도로 태워줘야 함
그리고 엔진이 앞으로 나갈 때 필요한 추진력을 유지하기 위해 연소 온도를 계속 모니터링 해줘야 함
위 그림은 우주선 엔진을 확대한 그림임
주황색 부분이 연소실인데 여기서 연료를 태워 추진력을 냄
이 속에 센서를 둘 수는 없지만 최대한 가까이 둘 수는 있음
T_in은 우리가 도달하기 원하지만 측정할 수 없는 내부온도임
T_ext는 측정 가능한 외부온도임
이 때 우리는 칼만 필터를 통해 측정 가능한 값을 사용하여 측정 불가능한 내부 온도를 추정할 수 있음
(ex2) 자율주행차
자율주행차에는 많은 센서가 장착되어 있음
중앙 컴퓨터가 이 모든걸 통제함
그런데 만약 차의 위치를 알려면 GPS를 사용하면 되는데
터널 속에 있거나 아주 높고 큰 타워 사이에 있다면 GPS 오류가 계속 날 것이고 위치를 모를 것임
이런 문제를 피하기 위해 라이더라는 것이 있음
이 광파 탐지 및 거리 측정기는 현재 위치를 알게 해줌
또한 레이더는 주변 다른 차량의 위치를 모니터링 해줌
이 정보를 통해서 우리가 갈 곳에 대한 지식을 쌓고
칼만필터를 사용하여 이 세 가지 센서의 정보를 종합하여 자동차의 정확한 위치를 알 수 있게 해줌
그렇다면 라이더와 레이더 센서를 사용하여 칼만 필터가 자동차 위치를 추정할 때 어떻게 사용되는지 살펴보겠습니다.
움직이는 자동차의 위치를 추적하기 위해 다음 두 절차를 반복합니다.
1. 예측: 다음 단계를 추정하기 위해 동적 모델을 적용합니다. 간단한 구현은 다음과 같습니다.
칼만 필터 알고리즘을 자세히 들여다보기 전에,
칼만 필터를 사용하여 예측 결과와 측정 결과를 바탕으로 차의 위치를 추정하는 예시를 고려해봅시다.
칼만 필터의 작동 원리는 다음과 같은 확률 밀도 함수로 설명할 수 있습니다.
위와 같이 예측값과 센서측정값의 사이에서 Optimal state estimate를 구할 수 있다.
이제 움직임을 예측할 때 사용하는 동적 모델을 자세히 살펴봅시다.
(예시를 단순화하기 위해, 우리는 차가 x축으로만 움직인다고 가정합니다.)
센서 융합:
라이다(LiDAR)는 주변 환경에 대한 3차원 지도를 만들기 위해 아주 빠른 속도의 레이저 빛(초당 200K)을 발사합니다. 이 짧은 파장을 통해 우리는 작은 물체를 높은 해상도로 감지할 수 있습니다. 하지만 비나 눈 혹은 스모그가 오면 측정치에 잡음이 낄 수 있습니다. 레이더는 더 긴 범위를 볼 수 있고 더 믿을만한 정보를 주지만 해상도가 낮습니다. 센서 융합은 칼만 필터를 사용해 여러 센서에서 얻은 측정치를 종합하여 정확도를 높입니다. 많은 센서들의 측정 오차는 서로 연관되어 있지 않습니다. 즉, 한 센서의 측정 오차가 다른 센서에 의한 것은 아닙니다. 따라서, 각 측정치에 대해 칼만 필터를 적용하여 예측을 향상할 수 있습니다.
[강화학습 스터디] Introduction to Reinforcement Learning (0) | 2022.04.04 |
---|---|
[강화학습 스터디] Q-learning on Nondeterministic Worlds (0) | 2022.03.31 |
[강화학습 스터디] Q-network (0) | 2022.03.31 |
[강화학습 스터디] Monte Carlo Methods (0) | 2022.03.24 |
[강화학습 스터디] Q-learning(table) (0) | 2022.03.24 |
댓글 영역