본문 바로가기

강화 학습

강화 학습 개요

https://wikibook.co.kr/reinforcement-learning/

 

파이썬과 케라스로 배우는 강화학습: 내 손으로 직접 구현하는 게임 인공지능

“강화학습을 쉽게 이해하고 코드로 구현하기” 강화학습의 기초부터 최근 알고리즘까지 친절하게 설명한다! ‘알파고’로부터 받은 신선한 충격으로 많은 사람들이 강화학습에 관심을 가지

wikibook.co.kr

해당 포스팅은 위의 책을 보고 정리한 내용입니다.

 

많은 강화학습 포스팅을 훑어 보면서,

위의 책을 본 사람들이 많은거 같아서 직접 읽어보기로 하였습니다.

 

우선, 1장은 강화학습을 가르쳐 준다기 보다는 소개에 가까운 장입니다.

그래서 기본 줄거리와 제가 읽으면서 중요하다고 생각하는 점, 그리고 생각한 점을 짧게 언급하려고 합니다.


 

먼저 "강화"라는 개념은 행동심리학에서 온 말입니다. 이 개념은 스키너 라는 행동심리학자가 처음 제안하였습니다.

실험 환경에서 페달을 누르면 먹이가 나온다는 것을 쥐가 처음에는 우연히 눌러서 먹이가 나오지만,

시간이 지나면서 페달과 먹이의 상관 관계를 알고 페달을 누르는 행동을 더 많이(강화)합니다.

스키너의 쥐 실험 (출처: https://ko.wikipedia.org/wiki/%EC%8A%A4%ED%82%A4%EB%84%88_%EC%83%81%EC%9E%90)

이와 비슷하게 여러 경우에서 적용이 가능한데, 이 "강화"의 개념을 컴퓨터가 학습할 수 있게 한 것이 "강화학습"이라고 할 수 있습니다.

단, 컴퓨터가 학습할 수 있게 문제를 잘 정의하고 수학적으로 풀어나가는 것이 중요한 부분일 것입니다.

 

또한, 강화학습은 현재 "인공지능"이라 하는 기술에 많은 부분을 차지하고있는 Deep learning 기반 기술과 구분되는 기술입니다. Deep learning은 지도학습, 비지도학습 기반으로 데이터에 관련해 학습합니다.

하지만, 강화학습은 정답도, 데이터도 아닌 "보상(reward)"에 의해 학습하고, 그 보상은 학습하는 컴퓨터(Agent)의 행동(Action)의해 주어집니다. 이 과정으로 컴퓨터는 더 보상을 많이 얻는 쪽으로 행동하도록 학습합니다.

 

저는 이 지점에서 지도학습의 정답(label)과 강화학습의 보상(reward)이 헷갈렸는데,

책에서는 보상은 직접적인 답은 아니지만 컴퓨터에게는 간접적인 정답의 역할을 하는 것이라고 구분합니다. 

 

 

  • 예시: 아타리 게임 브레이크 아웃

간단한 게임을 예시를 드는데, 그 게임은 바로 아타리 게임에서 브레이크아웃 이라는 게임입니다.

밑에 그림과 같이 바로 공을 쳐내 위의 블록을 부수는 게임인데요.

구글 딥마인드에서는 강화학습을 통해 보상을 공을 놓치면 -1. 벽돌을 깨면 +1(높이 있을 수록 고득점) 설정하고 행동을 좌, 우 그리고 정지로 그리고 4장의 연속된 화면을 입력으로하여, 이 게임을 잘 하는 컴퓨터(Agent)를 학습 할 수 있었습니다.

브레이크 아웃 게임의 한 장면 (출처: DQN 논문)

여기서 주목해야할 점은 컴퓨터는 이 게임에 대한 정확한 목표의식(모든 블록을 잘 깨야한다. 공이 있는쪽으로 움직여야한다.)을 주지 않았음에도 단지 위에 설정한대로 학습한 결과 공을 떨어뜨리지 않게 움직(행동)이고, 심지어는 한 쪽을 파서 천장에 보내는 전략(최적의 경우)까지 학습하게 된다는 것입니다.

 

여기서 드는 궁금증은 위의 사진같이 움직여 공을 쳐내기 늦은 상황에서 Agent는 어떤 행동을 취할까인데, 가만히 있으면 반이라도 가지만, 이런 outlier같은 상황에 오작동을 할 여지가 있지 않나도 생각하게 되었습니다.

단순 게임에서야 문제 없지만, 자율주행같은 상황에서의 강화학습에서 문제가 될거같은데 더 공부 해봐야겠습니다.

 


여기까지 강화학습의 개념과 예시를 포스팅 해봤습니다.

 

요약하자면, 컴퓨터가 어떤 문제를 대할때 잘 풀어나갈 수 있도록 그 환경과 행동 그리고 보상을 수학적으로 잘 설정해 준다.

그리고 그 보상을 최대화 하도록 학습(=보상을 얻기위한 특정 행동이 강화)하는 것이 강화 학습이다! 가 될거같습니다.

 

감사합니다.