From 42a1fa18eb12fbf1eaba2281482689712c922c5f Mon Sep 17 00:00:00 2001 From: Abdelrahman Ogail Date: Thu, 18 Apr 2019 19:05:18 -0700 Subject: [PATCH] Solution to problem #5 --- hw2/README.md | 39 ++++++++++++++++++++++++-------- hw2/fig/InvertedPendulum-v2.png | Bin 0 -> 53519 bytes hw2/train_pg_f18.py | 23 ++++++++++--------- 3 files changed, 42 insertions(+), 20 deletions(-) create mode 100644 hw2/fig/InvertedPendulum-v2.png diff --git a/hw2/README.md b/hw2/README.md index 6761fd6df..1d6400c80 100644 --- a/hw2/README.md +++ b/hw2/README.md @@ -1,13 +1,14 @@ # CS294-112 HW 2: Policy Gradient Dependencies: - * Python **3.5** - * Numpy version **1.14.5** - * TensorFlow version **1.10.5** - * MuJoCo version **1.50** and mujoco-py **1.50.1.56** - * OpenAI Gym version **0.10.5** - * seaborn - * Box2D==**2.3.2** + +- Python **3.5** +- Numpy version **1.14.5** +- TensorFlow version **1.10.5** +- MuJoCo version **1.50** and mujoco-py **1.50.1.56** +- OpenAI Gym version **0.10.5** +- seaborn +- Box2D==**2.3.2** Before doing anything, first replace `gym/envs/box2d/lunar_lander.py` with the provided `lunar_lander.py` file. @@ -16,11 +17,15 @@ The only file that you need to look at is `train_pg_f18.py`, which you will impl See the [HW2 PDF](http://rail.eecs.berkeley.edu/deeprlcourse/static/homeworks/hw2.pdf) for further instructions. # Answers to Homework Experiments + ## Problem 4 (CartPole) + ### Summary + The benchmark included running multiple experiments with tuning parameters like using [rewards to go, monte carlo rewards], [advantage normalization, no advantage normalization], [large batch size, small batch size]. Then number of iterations were 100 per experiment and each configuration were experimented 3 times to understand variance as well. Below are general observations: -- Convergence: using reward to go resulted into faster convergence than monte carlo reward -- Variance: the following parameters helped reducing the variance: increasing batch size and advantage normalization + +- Convergence: using reward to go resulted into faster convergence than monte carlo reward +- Variance: the following parameters helped reducing the variance: increasing batch size and advantage normalization ### Plots @@ -29,11 +34,27 @@ The benchmark included running multiple experiments with tuning parameters like ![](fig/sb_CartPole-v0.png) ### Answers + Q1- Which gradient estimator has better performance without advantage-centering—the trajectory-centric one, or the one using reward-to-go? + > The reward to go is better because it has lower variance. Q2- Did advantage centering help? + > Yes it did help reduce the variance and speed up convergence a bit Q3- Did the batch size make an impact? + > Yes it did, larger batch sizes result in lower variance and low bias + +## Problem 5 + +### Summary + +The command below is used to get the fig + +```bash +python3 train_pg_f18.py InvertedPendulum-v2 -n 100 -b 5000 -e 5 -rtg --exp_name hc_b5000_r0.0111 --learning_rate 1e-2 --n_layers 2 --size 16 +``` + +![](fig/InvertedPendulum-v2.png) diff --git a/hw2/fig/InvertedPendulum-v2.png b/hw2/fig/InvertedPendulum-v2.png new file mode 100644 index 0000000000000000000000000000000000000000..722ac1260c6d5d40b6d082279d6944a460a51046 GIT binary patch literal 53519 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 self.max_path_length: @@ -564,7 +565,7 @@ def update_parameters(self, ob_no, ac_na, q_n, adv_n): # YOUR_CODE_HERE _, loss, summary = self.sess.run([self.update_op, self.loss, self.merged], feed_dict={self.sy_ob_no: ob_no, - self.sy_ac_na: ac_na.squeeze(), + self.sy_ac_na: ac_na, self.sy_adv_n: adv_n}) # write logs at every iteration