강화학습 교육 들은걸 정리하고자 한다,,

정리안하면 까먹으니까 ^^,,

기억나는데 까지 해보쟈...ㅁ7ㅁ8

 


1. 기계학습의 분류

지도학습 label 된 Data를 이용하여 학습
input data에 결과값이 있음.
정답을 신경망에 학습시킴
비지도학습 label이 없는 data를 이용하여 학습

강화학습 보상을 최대화 하는 Decision Making 학습
학습해서 나온 값을 가지고 모델링 
보상을 학습 시키기 위해 지도학습을 한다 -> 최종 보상값을 학습한다.
인공지능이 서택을 함
정답이 없는 상태 score만 보고 학습을 시킴

 

2. 지도학습

- 정답을 신경망에 학습 시킴

- Gradient Descent

  •  신경망을 만들고 LOSS를 정의한후, 사용하면 신경망이 수정됨 -> LOSS값이 낮아짐
  • 신경망 F ( input -> output)
  • LOSS : 신경망의 성능지표 
optimizer = torch.optim.Adam(F.parameters())

optimizer.zero_grad()
LOSS.backward() //미분 : 기울기를 구한다 
optimizer.step() // 적당히 작은 값을 곱해서 minimum cost에 가까워지게 한다 Back propagation

반복 적용하여 LOSS값을 낮춘다.

 

- 지도학습이 유용한 이유? 학습시키지 않은 값들도 output을 구할 수 있다. ( 추론 가능 )

 

3. 강화학습

score를 최대화 하는 output을 선택

에이전트가 현재의 상태를 인식하여 선택 가능한 행동들 중 보상을 최대화 하는 행동을 선택

 

- Challenge 1 : 학습을 위해 탐험 필요

  • Exploration (탐험) vs Exploitation (활용) 의 균형이 필요

- Challenge 2 : 장기적 보상 추구 

 

 

3.1 가치기반 강화 학습 ( Value Based )

- 모든 state에 대해서 기대 할 수 있는 최종 보상값을 계산하고, 그 값을 이용하여 action을 선택

- 탐험을 제외 하고, 각 state 마다 action 결정되어 있음

 

1) Monte-Carlo Method

- Episode를 한번 완전히 진행해야 한번 학습하는 것이다.

- History에서 배운다.

- 보상을 학습시키기 위해 지도학습을 한다 -> 최종 보상 값을 학습한다.

- 좋은 학습을 위해 가끔 활용( Exploitation) 대신 탐험(Exploration)이 필요

- Episode 진행 중간에 잘못된 action하나가 그전 action을 모두 나쁜 것으로 만듦

2) SARSA Method

- 한번의 state - action step 단위로 학습함

- Boot-strapping 통한 지도학습

- 한 에피소드당 N개의 loss 확보

- F(s1)[a1] : state1 에서 action1 했을 받을 있는 reward

- F(s1)[a1] = reward1+ F(s2)[a2] 되도록 학습을 시키기 위해서 둘의 차이 = loss

- 중간에 엉터리 답을 내지 않는 논리적인 network 만들 있게 해준다.

3) Q-Larning Method & More

- Sate-Action-Reward-State

- DQN 알고리즘 (유명함) :Replay Memory ? 경험들을 따로 메모리에 저장해두고 경험들을 random하게 뽑아서 연관성 없이 학습하는 것이 제대로 학습을 있다.

 

 

3.2 정책 기반 강화 학습 ( Policy Based )

- 언제나 확률적으로 action 선택

- 신경망의 output action 대한 확률로 정의

 

1) Gradient Ascent

- Gradient Descent의 반대

- LOSS대신 -SCORE , SCORE를 높이도록 학습

- SCORE : 강화학습을 위한 신경망의 성능 지표

              Agent가 정책에 따라 에피소드를 진행 했을 때 얻을 최종 보상의 기댓값

optimizer = torch.optim.Adam(F.parameters())

optimizer.zero_grad()
(-SCORE).backward() 
optimizer.step() 

 

2) Vanilla Policy Gradient

- 최종 보상 기대 값을 SCORE로 사용할 수 없는 이유 ? tree가 너무 큼, 

 환경이 일반적으로 확률성을 포함하고 있어서, 같은 state에서 같은 action을 했더라도 이후 state가 일정하지 않음

- 너무 많으니깐 sampling 된걸 쓰고싶어~ 그런데 , SCORE대신 J simpe을 쓰면 고르게 sampling 되지 않고 

확률이 높은 tragectory가 더 많이 sample됨 

  -> J sampling = logP(trag.) * R(traj.)을 사용하면 sampling을 사용하면서도 기존과 똑같이 Gradient Ascent 적용가능

3) Policy Gradient with Baseline

-평균이 60 나온 시험에서 50 받는것과, 평균이 30 나온 시험에서 50점받는 것중 평균 30점인게 더좋은것이기 때문에 +쪽으로 더많이 가도록 학습해야한다. 아니면 - 쪽으로 ( cartpole..)

- Baseline 기준점 역할인데 처음부터 너무 높으면 모델이 잇는 최대치보다 높으면 baseline 설정 의미가 없어지기 때문에 평균값을 하면 의미 있는 값이다.

 

정책기반에서는 모델이 항상 확률적으로 action 선택하는 선택한 결과의 점수가 reward이고,

평균으로 baseline 잡아주면 현재수준에서 잘하는지 못하는지 알기 쉽기 때문에 학습을 효율적으로 있게 해준다.

 

+ Recent posts