-
[HandsOn] 18. 강화 학습- 내용 정리1[도서완독]Hands On Machine Learning 2022. 9. 19. 20:21
인생이... 갈수록 힘들어지고 있다^_ㅜ
이럴 때일수록 열심히 하려 하지 말고 꾸준히 조금이라도 해야 하는 시기인 것 같다.
후.... 힘내자.... ㅠㅠ 흐엉엉
2013년에 딥마인드의 연구원들이 게임 '아타리'를 아무 정보 없이! 그냥 플레이하면서 학습하는 시스템을 시연하며 강화학습의 혁명을 일으킴! 화면 픽셀에 대한 데이터만 입력으로 받고 게임 규칙에 대한 어떤 사전 정보도 없이 사람들 능가하는 성과를 냈다고 한다.
18.1 보상을 최적화하기 위한 학습
강화 학습에서 소프트웨어 에이전트는 관측을 하고, 주어진 환경에서 행동을 함. 그리고 그 결과로 보상을 받음.
에이전트의 목적: 보상의 장기간 기대치를 최대로 만드는 행동을 학습하는 것
양의 보상은 기쁨, 음의 보상은 아픔...?
-> 간단히 에이전트는 환경 안에서 행동하고 시행착오를 겪으며 기쁨이 최대가 되고 아픔이 최소가 되도록 학습
몇가지 사례를 든다면:
- 에이전트는 로봇을 제어하는 프로그램이고, 에이전트는 여러 센서를 통해 환경을 관찰. 에이전트는 목적지에 도착할 때 양의 보상, 시간을 낭비하거나 잘못된 방향으로 향할 때 음의 보상을 받도록 프로그래밍됨.
- 혹은 미스 팩맨을 제어하는 프로그램일수도? 환경은 게임 시뮬레이션, 행동은 가능한 조이스틱 위치. 관측은 스크린샷, 보상은 게임의 점수.
- 꼭 에이전트가 무언가를 움직여야 하는 건 아님. 에이전트는 목표 온도를 맞추어 에너지를 절약하면 보상, 사람이 온도를 조작할 필요가 생기면 음의 보상을 받는 스마트 온도조절기일수도 있음! 그러므로 에이전트는 사람의 요구를 예측하도록 학습되어야 함.
- 등등....
자율주행 자동차나 추천 시스템, 웹 페이지에 광고 배치, 이미지 분류 시스템이 주의를 집중할 곳을 제어하기 등(벌써 신기하다...)
18.2 정책 탐색
소프트웨어 에이전트가 행동을 결정하기 위해 사용하는 알고리즘을 정책(policy)라고 함.
예를 들어, 관측을 입력으로 받고, 수행할 행동하는 출력하는 신경망이 정책이 될 수 있음
한 예로, 30분 동안 수집한 먼지의 양을 보상으로 받는 로봇 진공청소기를 생각해보자.
이 청소기의 정책은 매 초마다 확률 p만큼 전진하거나, 1-p의 확률로 왼쪽 또는 오른쪽으로 랜덤하게 회전하는 것일 수도 있음. 회전 각도는 -r과 +r 사이의 랜덤한 각도일 수 있음. 이 정책에는 무작위성이 포함되어 있기 때문에 확률적 정책(stochastic policy) 이라고 함.
로봇이 도달할 수 있는 어떤 장소라도 모두 찾아서 먼지를 수집하려고 이상한 궤적을 만들어 낼 텐데, 궁금한 것은 '30분 동안 얼마나 많은 먼지를 수집할 것인가' 임.
어떻게 로봇을 훈련할 수 있을까?
여기에 변경이 가능한 두 개의 정책 파라미터가 있음. 확률 p, 각도 r 임.
이 파라미터에 많은 다른 값을 시도해보고, 가장 성능이 좋은 조합을 고르는 학습 알고리즘을 생각해볼 수 있음.
이것은 정책 탐색의 한 예인데 여기서는 무식한 방법을 사용했음. 정책 공간이 매우 크면, 이런식으로 좋은 파라미터 조합을 찾는 것은 거의 불가능...
정책 공간을 탐색하는 다른 방법으로 유전 알고리즘(genetic algorithm)이 있음.
예를 들어 1세대 정책 100개를 랜덤하게 생성해서 시도해보고, 성능이 낮은 정책 80개를 버리고 20개를 살려 각각 자식 정책 4개를 생산...( 왜 4개지...? 그럼 20x4=80개를 생산하는건가?)
이 자식 정책은 부모를 복사한 것에 약간의 무작위성을 더한 것. 살아남은 정책과 그 자식은 2세대를 구성하고, 이런 식으로 좋은 정책을 찾을 때까지 여러 세대에 걸쳐 반복.
(아니 정말 무슨 소리냔 말임... ㅠ 부모자식이 왜 나오냔 말임...ㅠ)
또 다른 방법은, 정책 파라미터에 대한 보상의 그레이디언트를 평가해서 높은 보상의 방향을 따르는 그레이디언트로 파라미터를 수정하는 최적화 기법을 사용(경사 상승법이라 하며, 강사 하강법의 반대.)
이 방법을 정책 그레이디언트(policy gradient,PG) 라 하며, 뒤에서 자세히 다룸.
로봇 진공청소기를 다시 생각해보면, p를 조금 증가시키고 30분 동안 로봇이 수집한 먼지 양이 증가했는지 평가해볼 수 있음.
만약 먼지 양이 많아졌다면 p를 조금 증가시키고, 그렇지 않다면 p 를 감소시켜야 함.
여기에서는 널리 알려진 PG 알고리즘을 텐서플로를 사용해 구현할 것임...
그 전에 에이전트가 활동할 환경을 만들어야 하는데, OpenAI 짐을 소개한다고 함.
(너무 어렵다...^^)
18.3 OpenAI 짐
에이전트를 훈련하기 위해 먼저 작업 환경을 마련해야 함.
OpenAI짐 은 다양한 종류의 시뮬레이션 환경을 제공하는 툴킷. 이를 사용해 에이전트를 훈련하고 이들을 비교하거나 새로운 RL 알고리즘 개발 가능.
환경을 만든 후 reset()메서드로 꼭 초기화해야 한다.
18.4 신경망 정책
이 신경망은 관측을 입력으로 받고 실행할 행동을 출력. (정확히는 각 행동에 대한 확률을 추정)
CartPole 예제에서는 action이 0 또는 1이므로 0을 선택할 확률을 출력하는 신경망을 만들 수 있음.
그런데 정확하게 말하면, 0.7을 출력한다면 1로 분류되는 것이 아니라, 행동 1이 0.7 확률로 선택될 것이고, 행동 0은 0.3 확률로 선택되는 것.
왜 가장 높은 점수의 행동을 그냥 선택하지 않고, 신경망이 만든 확률을 기반으로 랜덤하게 행동할까?
->이는 에이전트가 새로운 행동을 탐험하는 것과 잘 할 수 있는 행동을 활용하는 것 사이에 균형을 맞추는 것.
이러한 특별한 환경에서는 과거의 행동과 관측은 무시해도 괜찮다. 각 관측이 환경에 대한 완전한 상태를 담고 있기 때문이다.
만약 어떤 상태가 숨겨져 있다면, 과거의 행동과 관측도 고려해야 함.
예를 들어 CartPole 모델에서 카트의 속도는 빼고 위치만 우리가 알고 있다면, 현재의 속도를 추정하기 위해 과거의 관측도 고려해야 한다. 또한 관측에 잡음이 있을 경우에는 가장 가능성 있는 현재의 상태를 추정하기 위해 지난 관측을 사용해야 한다.
인생이 너무 힘들어서....다음 부분은 정리는 하지 못하고 해당 링크의 페이지를 보며 공부하였다^_ㅜ
https://velog.io/@wlsn404/Hands-On-Machine-Learning-Chapter-18-강화학습
'[도서완독]Hands On Machine Learning' 카테고리의 다른 글
[HandsOn] 17. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습- 내용 정리2 (0) 2022.08.26 [HandsOn] 17. 오토인코더와 GAN을 사용한 표현 학습과 생성적 학습- 내용 정리1 (0) 2022.08.23 [HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리3 (0) 2022.08.19 [HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리2 (0) 2022.08.18 [HandsOn] 16. RNN과 어텐션을 사용한 자연어 처리 - 내용 정리1 (0) 2022.08.16