월간 보관물: 2017 11월

**Complete Draft** Reinforcement Learning: An Introduction

리차드 서튼Richard Sutton 교수의 강화학습 책 “Reinforcement Learning: An Introduction”의 2판의 드래프트가 끝났다는 소식입니다. 이 책은 온라인에서 무료로 읽을 수 있습니다. 이 책은 총 449페이지이고 파일 사이즈는 16M 정도로 아주 크지 않지만 혹시 네트워크가 느릴 경우를 대비해 블로그에 다운로드 링크(bookdraft2017nov5)를 추가했습니다.

다음은 전체 책의 목차입니다.

  1. Introduction
  2. Multi-armed Bandits
  3. Finite Markov Decision Processes
  4. Dynamic Programming
  5. Monte Carlo Methods
  6. Temporal-Difference Learning
  7. n-step Bootstrapping
  8. Planning and Learning with Tabular Methods
  9. On-policy Prediction with Approximation
  10. On-policy Control with Approximation
  11. *Off-policy Methods with Approximation
  12. Eligibility Traces
  13. Policy Gradient Methods
  14. Psychology
  15. Neuroscience
  16. Applications and Case Studies
  17. Frontiers

TensorFlow 1.4.0 Release

텐서플로 1.4.0 버전이 정식 릴리즈되었습니다. 이번 버전에서 tf.keras와 tf.data가 코어 API로 들어왔습니다. 이제 대기하고 있던 케라스 책들이 슬슬 나오기 시작할 것 같네요. 🙂

1.4.0 버전에 관한 좀 더 자세한 내용은 릴리즈 노트를 참고해 주세요. 텐서플로는 다음과 같이 pip 명령으로 간단히 설치할 수 있습니다.

$ pip install --upgrade tensorflow
$ pip install --upgrade tensorflow-gpu

TensorFlow Eager Execution

오늘 다이나믹 그래프를 지원하는 텐서플로의 Eager Execution 기능이 소개되었습니다. 올해 초에 명령형imperative 스타일의 기능이 텐서플로에 추가되었습니다(TensorFlow 1.1.0 RC2 and Imperative Style). 다음 버전인 1.5.0에서 이 기능이 빠지고 새롭게 Eager Execution으로 추가되는 것 같습니다.

텐서플로의 텐서는 연산 노드를 가리키는 핸들과 같았습니다(TF의 텐서와 상수, 변수, 플레이스홀더). Eager Execution에서 텐서는 데이터를 직접 포인팅합니다. 그래서 tf.Session을 시작하지 않고 직접 값을 얻을 수 있습니다.

>>> import tensorflow.contrib.eager as tfe
>>> tfe.enable_eager_execution()
>>> c = tf.constant(1)
>>> c
<tf.Tensor: id=0, shape=(), dtype=int32, numpy=1>

텐서 c를 확인해 보면 numpy 속성이 생긴 것을 알 수 있습니다.

>>> c.numpy()
1
>>> type(c)
EagerTensor
>>> type(c.numpy())
numpy.int32

Eager Execution은 NumPy와 호환성을 크게 높인 것 같습니다. 계산 그래프의 생성과 실행 단계가 구분되지 않으므로 파이썬의 조건문으로 계산 그래프를 동적으로 조직할 수 있습니다. 이외에도 그래디언트 계산과 동적 모델에 관한 기능들이 많이 추가되었습니다.

Eager Execution은 한번 설정하면 취소할 수 없어서 파이썬 세션을 새로 시작해야 합니다. 또 tf.data와 tf.layers 밑의 클래스를 사용해야 합니다. 아직 파이토치PyTorch 만큼은 자유도가 높아 보이지는 않지만 점점 다른 프레임워크의 장점을 흡수하는 모습은 기대가 됩니다. 텐서플로에 비하면 파이토치 사용자가 극히 적을 텐데도 상당히 의식하는 것 같습니다. 🙂

… we’re looking for feedback from the community to guide our direction.

텐서플로의 종전 API가 그랬듯이 Eager Execution도 향후에 상당히 변화가 많이 있을 것으로 예상됩니다. 좀 더 자세한 내용은 깃허브의 가이드 문서예제를 참고하세요.

Eager Execution을 사용해 보려면 다음 명령으로 텐서플로의 Nightly 빌드를 설치하면 됩니다.

$ pip install tf-nightly
$ pip install tf-nightly-gpu