일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 | 31 |
- pytorch hook
- metric learning
- pytorch forward
- document parsing
- OCR
- 알파고
- 환급기원
- feature vector
- permutations
- 강화학습
- 파이썬
- 딥러닝
- 문서 파싱
- 티스토리챌린지
- 순열
- AlphaGo
- text embedding
- Python
- document layout analysis
- 스페인어학습지
- TensorFlow
- pytorch forward 디버깅
- pytorch forward 연산
- MTBE
- pytorch
- MCTS
- 대조학습
- 오블완
- Monte Carlo
- 스터디미니
- Today
- Total
Learn And Earn
TF-agents 본문
이번 포스팅에서는 tensorflow에서 개발한 tf-agents에 대해서 알아보겠습니다.
tf-agnets는 이름에서 알 수 있듯이 강화학습을 아주 빠르게 구현할 수 있게 도와줄 수 있는 라이브러리입니다.
이번 포스팅에서는 세부적으로 모든 모듈을 뜯어보기 보다는, tf-agents를 이용하여 강화학습 문제를 해결 할 때, 어떠한 구성 요소를 조립하여 하나의 모델을 완성하는지에 초점을 두고 설명하겠습니다.
개요
tf-agents 모델을 구성하는 데에 크게 6개의 구성요소가 있습니다.
- environment
- agent
- policy
- network
- policy
- driver
- replay buffer
- checkpointSaver, policySaver
이제 이 조각들이 각각 어떠한 역할을 하는지에 대해서 간략하게 설명해보겠습니다.
level 1 : agent 와 environment
강화학습을 바라볼 때 가장 먼저 보이는 두 요소가 있습니다. 바로 agent와 environment입니다.
(강화학습과 관련한 기본적인 배경지식은 이 게시물을 참고하시면 되겠습니다.)
강화학습은 결국 agent가 주어진 환경에 대해서 마주한 어떠한 상황에 대해서도 최선의 선택을 하게끔 학습을 하는 것이 목표입니다. 이 agent는 가장 직접적으로 policy를 기준으로 하여 선택을 내립니다.
그래서 이 최적의 결정을 하게끔 하는 문제는 최적의 policy를 선택하는 하는 문제로 환원됩니다. 이 policy는 직접적으로 policy를 학습해나가는 policy-based, 또 간접적으로 Value function을 기준으로 하여 policy를 도출해나가는 value-based 방법이 있습니다.
level 2 : network - function approximator
policy, value function을 학습해 나가는 방법, 즉 function approximator로써 neural network를 선택하면 기존의 tesorflow , keras에 구현된 딥러닝 모듈을 잘 활용할 수 있겠습니다.
이 network 클래스는 tf.keras.layers의 subclass입니다.
기존의 tf.keras.layers과 차별점이 있다면, 여러 알고리즘에 대응되는 agent에서 보통 쓰이는 network를 사전에 구현이 되어있다는 것입니다.
- DQN agent는 입력받은 state s에 대해서 각 action에 대해서 action value function Q(s, a)값들을 계산해 벡터로써 출력합니다. 여기서 이 Q 값을 계산해내는 Q-network를 Network 클래스에 이미 구현된 상태입니다.
- policy, value 를 모두 섞어 사용하는 actor-critic 방법에 대해서는 policy를 표현해 낼 수 있는 policy-network, actor-network와 그 variance를 줄여주는 baseline 역할을 하는 critic network도 있는데요, 이를 이제 actornetwork, actordistributionnetwork, criticnetwork로 구현이 되어있습니다.
- 뿐만 아니라 보다 더 세부적으로 입력 데이터를 전처리하는 함수까지 _encoding_network라는 이름으로 구현이 되어있습니다.
level 3 : drivers, replaybuffer
driver 클래스는 policy.action(), env.step()를 통틀어서 environment과 agent 사이의 상호작용을 관장하는 클래스입니다.
이 driver는 episode-step과 episode num을 기준으로 하여 driver의 호출과 종결을 결정합니다. 이는 각각
tf_driver.dynamicStepDriver, EpisodeDriver에 해당합니다. 이 driver라는 것을 쓰는 이유는 간단합니다. 순수 python loop과 달리 tf.loop, tf.while등을 통하여 환경에 .step()로써 action을 가해주고, policy.action()를 통해서 현재 상황을 기반으로 하여 action을 결정하는 것은 여러가지 고려할 것들이 많습니다. 이런 이유로하여 driver 을 통해서 보다 쉽고 서로간의 dependency를 해치지 않는 선에서 이러한 workflow를 진행할 수 있게 해주는 것입니다.
replayBuffer은 말 그대로 경험한 데이터들을 모아두는 저장소의 역할을 하는 메모리공간입니다. 직관적으로 당연히 필요할 것 같은 것이, 왜냐면 RL은 dynmaics, reward model을 주어지는 것이 아니기 때문에, 데이터들을 통해서 estimation과 approximation을 반복적으로 해나가며 학습을 해야합니다. 따라서 env와 상호작용을 통해 얻은 데이터를 저장하는 곳도 필요하겠죠?
level 0 : checkPointSaver, policySaver
사실상 사용자와 가장 가까운 요소는 checkPointSaver, policySaver입니다. 바로 우리가 학습한 모델의 파라미터를 저장하거나 학습시킨 결과를 다시 불러오는 식입니다. 그렇기 때문에 level 1~3의 요소들을 모두 조립한 결과, 또는 조립한 것을 학습시킨 결과를 바로 쓰는 사용자 입장에서는 checkPointSaver, policySaver의 역할이 큽니다.
이번 포스팅에서는 tensorflow에서 개발한 tf-agents의 구성에 대해서 알아보았습니다. 이제 tensorflow에서와 같이, 어떻게 이 미리 구현해놓은 것을 잘 써먹을 수 있는지, 각 요소들을 하나하나 떼놓고 살펴보겠습니다.
다음 포스팅에서는 이 tf-agents를 이용한 workflow에서 등장하는 데이터들을 기준으로 살펴보겠습니다. 감사합니다.
'Manual > tf-agents' 카테고리의 다른 글
tf-agents - 데이터들(1) (0) | 2021.07.26 |
---|