[[Tableofcontents]]
= machine learning =
 1. Supervised learning
 1. Unsupervised learning
 1. Reinforcement learning
== supervised learning ==
 * 학습을 시킬 때 input으로 value와 label을 함께 전달
 * Learning from difference between prediction and target
 * e.g. mnist, classification
== unsupervised learning ==
 * input: value만 입력, projection등으로 전처리한 값들로 계산
 * Cluster by distance between inputs
 * Human can't predict the outcome
 * e.g. clustering
== reinforcement learning ==
 * 일종의 unsupervised learning
 * input : environment, reward, output : action
 * Learn from try
 * Model free
 * e.g. game play, stock trading
== reinforcement learning ==
 * Q learning
 * Q learning + Neural Network
 * DQN : Deep Q Learning
  * hidden layer를 늘리는게 다가 아니다!
== Basic knowledge ==
 * MDP : Markov Decision Process
 * Bellman equation
 * Dynamic programming
 * Value, Polish
 * Value function, Polish function
 * Value iteration, Polish iteration

== 실습 ==
 * [https://gym.openai.com gym]: Reinforcement learning을 위한 고전 게임들을 python으로 포팅한 toolkit. 직접 구현한 것도 있고 atari는 포팅함. [https://github.com/openai/gym in github]에 코드가 공개되어 있다.
  * 오늘 실습할 [https://gym.openai.com/envs/CartPole-v0 cartpole]
 * 필요한 라이브러리: numpy, gym, tensorflow 필요
 {{{
  $ pip install gym
  $ pip install tensorflow 
}}}
=== 순서 ===
 1. 일단 cartpole 실행을 해보자! - [https://github.com/Rabierre/cartpole/blob/master/cartpole_init.py cartpole_init.py]
 1. random action(왼쪽, 오른쪽)을 하는 cartpole - [https://github.com/Rabierre/cartpole/blob/master/cartpole_random.py cartpole_random.py]
 1. q-network(q-learning의 NN버전) - [https://github.com/Rabierre/cartpole/blob/master/cartpole_qnetwork.py cartpole_qnetwork.py] 
 1. DQN - [https://github.com/Rabierre/cartpole/blob/master/cartpole_dqn.py cartpole_dqn.py]
 1. 2015에 Deep Mind에서 발표한 DQN - [https://github.com/Rabierre/cartpole/blob/master/cartpole_dqn2015.py cartpole_dqn2015.py]
== Reference ==
 * 발표 슬라이드: [https://slides.com/rabierre/playing_a_game_with_rl slide]
 * 실습코드: [https://github.com/Rabierre/cartpole github]
 * DeepMind의 DQN 논문: [https://arxiv.org/abs/1312.5602 Playing Atari with Deep Reinforcement Learning]
 * Tensorflow tutorial: [https://github.com/golbin/TensorFlow-Tutorials/tree/master/10%20-%20DQN DQN]
== Furthermore ==
 * [https://en.wikipedia.org/wiki/David_Silver_(programmer) David Silver]의 강의 
  * [http://www0.cs.ucl.ac.uk/staff/d.silver/web/Teaching.html 강의노트]
  * [https://www.youtube.com/watch?v=2pWv7GOvuf0 강의 영상]
 * Gitbook: [https://www.gitbook.com/book/dnddnjs/rl/details Fundamental of Reinforcement Learning]. 한글로 되어 있다!
 * 레퍼런스 모음: [Machine%20Learning]
== 후기 및 기타의견 ==