From e8201331b6d71bcb069eb8be6b2e23e9a52b4006 Mon Sep 17 00:00:00 2001 From: Mao Lin Date: Wed, 12 Oct 2016 11:54:37 +0800 Subject: [PATCH 1/7] Q1-Q4 finish --- HW2_Policy_Graident.ipynb | 131 ++++++++++++++++++++++++++++++++++---- Untitled.ipynb | 99 ++++++++++++++++++++++++++++ policy_gradient/policy.py | 8 +++ policy_gradient/util.py | 8 ++- 4 files changed, 234 insertions(+), 12 deletions(-) create mode 100644 Untitled.ipynb diff --git a/HW2_Policy_Graident.ipynb b/HW2_Policy_Graident.ipynb index 3b51aa3..30bbac6 100644 --- a/HW2_Policy_Graident.ipynb +++ b/HW2_Policy_Graident.ipynb @@ -2,11 +2,20 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 15, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "The autoreload extension is already loaded. To reload it, use:\n", + " %reload_ext autoreload\n" + ] + } + ], "source": [ "# Automatically reload changes to external code\n", "%load_ext autoreload\n", @@ -26,11 +35,19 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 16, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "[2016-10-08 01:10:27,725] Making new env: CartPole-v0\n" + ] + } + ], "source": [ "import gym\n", "import tensorflow as tf\n", @@ -95,7 +112,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 125, "metadata": { "collapsed": false }, @@ -151,7 +168,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 126, "metadata": { "collapsed": true }, @@ -210,12 +227,14 @@ " Sample solution should be only 1 line.\n", " \"\"\"\n", " # YOUR CODE HERE >>>>>>\n", + " a = r - b\n", " # a = ???\n", " # <<<<<<<<\n", "\n", " p[\"returns\"] = r\n", " p[\"baselines\"] = b\n", - " p[\"advantages\"] = (a - a.mean()) / (a.std() + 1e-8) # normalize\n", + " # p[\"advantages\"] = (a - a.mean()) / (a.std() + 1e-8) # normalize\n", + " p[\"advantages\"] = a\n", "\n", " obs = np.concatenate([ p[\"observations\"] for p in paths ])\n", " actions = np.concatenate([ p[\"actions\"] for p in paths ])\n", @@ -250,23 +269,104 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 127, "metadata": { "collapsed": false }, - "outputs": [], + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Iteration 1: Average Return = 14.93\n", + "Iteration 2: Average Return = 14.86\n", + "Iteration 3: Average Return = 17.23\n", + "Iteration 4: Average Return = 17.25\n", + "Iteration 5: Average Return = 17.67\n", + "Iteration 6: Average Return = 19.76\n", + "Iteration 7: Average Return = 23.05\n", + "Iteration 8: Average Return = 23.82\n", + "Iteration 9: Average Return = 23.8\n", + "Iteration 10: Average Return = 28.29\n", + "Iteration 11: Average Return = 27.4\n", + "Iteration 12: Average Return = 34.0\n", + "Iteration 13: Average Return = 36.82\n", + "Iteration 14: Average Return = 38.68\n", + "Iteration 15: Average Return = 40.13\n", + "Iteration 16: Average Return = 49.41\n", + "Iteration 17: Average Return = 43.39\n", + "Iteration 18: Average Return = 45.71\n", + "Iteration 19: Average Return = 45.93\n", + "Iteration 20: Average Return = 49.56\n", + "Iteration 21: Average Return = 53.42\n", + "Iteration 22: Average Return = 55.32\n", + "Iteration 23: Average Return = 54.51\n", + "Iteration 24: Average Return = 53.18\n", + "Iteration 25: Average Return = 67.09\n", + "Iteration 26: Average Return = 63.37\n", + "Iteration 27: Average Return = 64.72\n", + "Iteration 28: Average Return = 61.77\n", + "Iteration 29: Average Return = 75.14\n", + "Iteration 30: Average Return = 69.76\n", + "Iteration 31: Average Return = 68.13\n", + "Iteration 32: Average Return = 74.82\n", + "Iteration 33: Average Return = 72.22\n", + "Iteration 34: Average Return = 78.73\n", + "Iteration 35: Average Return = 76.48\n", + "Iteration 36: Average Return = 80.88\n", + "Iteration 37: Average Return = 93.15\n", + "Iteration 38: Average Return = 87.53\n", + "Iteration 39: Average Return = 100.09\n", + "Iteration 40: Average Return = 93.73\n", + "Iteration 41: Average Return = 106.68\n", + "Iteration 42: Average Return = 109.8\n", + "Iteration 43: Average Return = 118.82\n", + "Iteration 44: Average Return = 130.64\n", + "Iteration 45: Average Return = 140.82\n", + "Iteration 46: Average Return = 146.44\n", + "Iteration 47: Average Return = 142.08\n", + "Iteration 48: Average Return = 158.68\n", + "Iteration 49: Average Return = 156.67\n", + "Iteration 50: Average Return = 158.33\n", + "Iteration 51: Average Return = 163.78\n", + "Iteration 52: Average Return = 172.12\n", + "Iteration 53: Average Return = 169.73\n", + "Iteration 54: Average Return = 173.06\n", + "Iteration 55: Average Return = 170.45\n", + "Iteration 56: Average Return = 182.6\n", + "Iteration 57: Average Return = 178.12\n", + "Iteration 58: Average Return = 188.06\n", + "Iteration 59: Average Return = 188.39\n", + "Iteration 60: Average Return = 189.94\n", + "Iteration 61: Average Return = 191.31\n", + "Iteration 62: Average Return = 194.09\n", + "Iteration 63: Average Return = 193.21\n", + "Iteration 64: Average Return = 186.86\n", + "Iteration 65: Average Return = 194.54\n", + "Iteration 66: Average Return = 192.87\n", + "Iteration 67: Average Return = 193.04\n", + "Iteration 68: Average Return = 193.49\n", + "Iteration 69: Average Return = 193.54\n", + "Iteration 70: Average Return = 193.76\n", + "Iteration 71: Average Return = 197.12\n", + "Solve at 71 iterations, which equals 7100 episodes.\n" + ] + } + ], "source": [ "n_iter = 200\n", "n_episode = 100\n", "path_length = 200\n", "discount_rate = 0.99\n", "baseline = LinearFeatureBaseline(env.spec)\n", + "# baseline = None\n", "\n", "po = PolicyOptimizer(env, policy, baseline, n_iter, n_episode, path_length,\n", " discount_rate)\n", "\n", "# Train the policy optimizer\n", - "po.train()" + "po.train()\n", + "sess.close()" ] }, { @@ -309,6 +409,15 @@ "\n", "Include the answer in your report." ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] } ], "metadata": { @@ -327,7 +436,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython2", - "version": "2.7.11" + "version": "2.7.12" } }, "nbformat": 4, diff --git a/Untitled.ipynb b/Untitled.ipynb new file mode 100644 index 0000000..84eb014 --- /dev/null +++ b/Untitled.ipynb @@ -0,0 +1,99 @@ +{ + "cells": [ + { + "cell_type": "code", + "execution_count": 29, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "(2.9701, )\n", + "(1.99, )\n", + "(1.0, )\n" + ] + } + ], + "source": [ + "from gym.spaces import Box, Discrete\n", + "import numpy as np\n", + "from scipy.signal import lfilter\n", + "\n", + "def flatten_space(space):\n", + "\tif isinstance(space, Box):\n", + "\t\treturn np.prod(space.shape)\n", + "\telif isinstance(space, Discrete):\n", + "\t\treturn space.n\n", + "\telse:\n", + "\t\traise ValueError(\"Env must be either Box or Discrete.\")\n", + " \n", + "x = np.array([1, 1, 1])\n", + "y = np.zeros(len(x))\n", + "r = 0.99\n", + "# print(len(x))\n", + "for i in range(len(x)):\n", + " for j in range(i, len(x)):\n", + " y[i] = y[i] + (x[j]*(r**(j-i)))\n", + " print(y[i], type(y[i]))" + ] + }, + { + "cell_type": "code", + "execution_count": 32, + "metadata": { + "collapsed": false + }, + "outputs": [ + { + "ename": "ImportError", + "evalue": "No module named base", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", + "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mbase\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBaseline\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mnumpy\u001b[0m \u001b[0;32mas\u001b[0m \u001b[0mnp\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m \u001b[0;32mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mpath\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m\"rewards\"\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", + "\u001b[0;31mImportError\u001b[0m: No module named base" + ] + } + ], + "source": [ + "from base import Baseline\n", + "import numpy as np\n", + "print(path[\"rewards\"])" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": { + "collapsed": true + }, + "outputs": [], + "source": [] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 2", + "language": "python", + "name": "python2" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 2 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython2", + "version": "2.7.12" + } + }, + "nbformat": 4, + "nbformat_minor": 1 +} diff --git a/policy_gradient/policy.py b/policy_gradient/policy.py index 70b8cdc..0218f1e 100644 --- a/policy_gradient/policy.py +++ b/policy_gradient/policy.py @@ -27,7 +27,14 @@ def __init__(self, in_dim, out_dim, hidden_dim, optimizer, session): Sample solution is about 2~4 lines. """ # YOUR CODE HERE >>>>>> + # W = tf.Variable(tf.random_normal([in_dim, hidden_dim], stddev=0.01), name='W') + # b = tf.Variable(tf.zeros([hidden_dim]), name='b' ) + # probs = tf.nn.softmax(tf.tanh(tf.matmul(self._observations, W) + b), name=None) + with tf.device('/cpu:0'): + h1 = tf.contrib.layers.fully_connected(self._observations, hidden_dim, activation_fn=tf.tanh) + probs = tf.contrib.layers.fully_connected(h1, out_dim, activation_fn=tf.nn.softmax) # probs = ??? + # <<<<<<<< # -------------------------------------------------- @@ -69,6 +76,7 @@ def __init__(self, in_dim, out_dim, hidden_dim, optimizer, session): Sample solution is about 1~3 lines. """ # YOUR CODE HERE >>>>>> + surr_loss = -tf.reduce_mean(tf.mul(log_prob, self._advantages)) # surr_loss = ??? # <<<<<<<< diff --git a/policy_gradient/util.py b/policy_gradient/util.py index 4c57674..2256bf8 100644 --- a/policy_gradient/util.py +++ b/policy_gradient/util.py @@ -19,7 +19,13 @@ def flatten_space(space): Sample solution is about 1~7 lines. """ -# def discount_cumsum(x, discount_rate): +def discount_cumsum(x, discount_rate): # YOUR CODE HERE >>>>>> + # print(x) + y = np.zeros(len(x)) + for i in range(len(x)): + for j in range(i, len(x)): + y[i] = y[i] + (x[j]*(discount_rate**(j-i))) + return y # return ??? # <<<<<<<< \ No newline at end of file From 3f4ca8685a953a723dcd65b9f6d62a2eef344038 Mon Sep 17 00:00:00 2001 From: maolin23 Date: Sun, 16 Oct 2016 23:07:07 +0800 Subject: [PATCH 2/7] Add files via upload --- reward(b).png | Bin 0 -> 40721 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 reward(b).png diff --git a/reward(b).png b/reward(b).png new file mode 100644 index 0000000000000000000000000000000000000000..0fba95c18ec87c75e10feaa5325e6cb9a4f095e0 GIT binary patch literal 40721 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 M{1afa{$%X`0njew8~^|S literal 0 HcmV?d00001 From 387c57f4707a0a2f63df1640d2d8c77204c66129 Mon Sep 17 00:00:00 2001 From: maolin23 Date: Sun, 16 Oct 2016 23:30:17 +0800 Subject: [PATCH 3/7] Create Report.md --- Report.md | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 Report.md diff --git a/Report.md b/Report.md new file mode 100644 index 0000000..bfe027f --- /dev/null +++ b/Report.md @@ -0,0 +1,42 @@ +## Homework2 - Policy Gradient +Please complete each homework for each team, and
+mention who contributed which parts in your report. + +## Member +* captain - 林姿伶: 104062546 +* member - 汪叔慧: 104062526 +* member - 嚴敏誠: 104062595 + +` Contribution ` +``` +姿伶 and 叔慧 discussed the homework. +Finally, 姿伶 typed the final report on github. +``` + +## Problem 5 +``` +Replacing line +baseline = LinearFeatureBaseline(env.spec) +with +baseline = None +can remove the baseline. +Modify the code to compare the variance and performance before and after adding baseline. +Then, write a report about your findings. (with figures is better) +``` +理論上,利用減掉baseline這個動作,可以降低variance,於是可以得到比較好的predict結果
+但可能因為這個task太簡單,所以在 return 上,有沒有baseline對結果差異沒有那麼大
+不過從圖中我們還是可以看出來,雖然一開始有baseline(紅)的return比較小,但是他還是可以花比較少的iteration收斂
+![Fig. 1](https://github.com/CEDL739/homework2/blob/master/reward(b).png)
+                      **Fig .1** With/without baseline + +## Problem 6 +``` +In function process_paths of class PolicyOptimizer, why we need to normalize the advantages? +i.e., what's the usage of this line: +p["advantages"] = (a - a.mean()) / (a.std() + 1e-8) +Include the answer in your report. +``` +因為在前面為了降低varience,減掉了baseline,這個動作使得整個model的distribution偏移
+所以在這邊要對a做normalize將model拉回來
+ + From c6f674a38ea28eab94878c1113af6fcacda1827c Mon Sep 17 00:00:00 2001 From: maolin23 Date: Mon, 17 Oct 2016 00:16:54 +0800 Subject: [PATCH 4/7] Update Report.md --- Report.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Report.md b/Report.md index bfe027f..4a13a7e 100644 --- a/Report.md +++ b/Report.md @@ -25,9 +25,10 @@ Then, write a report about your findings. (with figures is better) ``` 理論上,利用減掉baseline這個動作,可以降低variance,於是可以得到比較好的predict結果
但可能因為這個task太簡單,所以在 return 上,有沒有baseline對結果差異沒有那麼大
-不過從圖中我們還是可以看出來,雖然一開始有baseline(紅)的return比較小,但是他還是可以花比較少的iteration收斂
+不過從圖中(Fig 1)我們還是可以看出來,雖然一開始有baseline(紅)的return比較小,但是他還是可以花比較少的iteration收斂
![Fig. 1](https://github.com/CEDL739/homework2/blob/master/reward(b).png)
-                      **Fig .1** With/without baseline +                      **Fig .1** With/without baseline
+但是我們覺得最重要的是最一開始的return,如果一開始的return很高的話,就可以在很少的iteration內收斂
## Problem 6 ``` @@ -36,7 +37,9 @@ i.e., what's the usage of this line: p["advantages"] = (a - a.mean()) / (a.std() + 1e-8) Include the answer in your report. ``` -因為在前面為了降低varience,減掉了baseline,這個動作使得整個model的distribution偏移
-所以在這邊要對a做normalize將model拉回來
+對 advantage function 進行normalize是因為,當我們計算accumulated reward時,是進行discounted reward計算。
+每個當下的reward都會乘上一個discounted factor,並且這個factor是隨著stage的進行呈現exponentially discounted。
+因此,比較後面的stage的action會因為乘上這個discounted factor,而使得學習上比較沒有效率。
+所以如果對整個時間點的advantage進行normalize,就可以使得整段時間點的每個stage影響比較平均。
From d47abf785ec927ed164b6ce63773cde4efb5dfc3 Mon Sep 17 00:00:00 2001 From: maolin23 Date: Mon, 17 Oct 2016 00:20:13 +0800 Subject: [PATCH 5/7] Update Report.md --- Report.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Report.md b/Report.md index 4a13a7e..a2ebb19 100644 --- a/Report.md +++ b/Report.md @@ -28,7 +28,7 @@ Then, write a report about your findings. (with figures is better) 不過從圖中(Fig 1)我們還是可以看出來,雖然一開始有baseline(紅)的return比較小,但是他還是可以花比較少的iteration收斂
![Fig. 1](https://github.com/CEDL739/homework2/blob/master/reward(b).png)
                      **Fig .1** With/without baseline
-但是我們覺得最重要的是最一開始的return,如果一開始的return很高的話,就可以在很少的iteration內收斂
+但是我們覺得最重要的是最一開始的initial weight,如果一開始的return很高的話,就可以在很少的iteration內收斂
## Problem 6 ``` From 0c2760aac68ea6f061f89c5c1f13b0ffc83459fd Mon Sep 17 00:00:00 2001 From: maolin23 Date: Mon, 17 Oct 2016 12:47:05 +0800 Subject: [PATCH 6/7] Add files via upload --- reward_with.png | Bin 0 -> 29855 bytes reward_without.png | Bin 0 -> 28834 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 reward_with.png create mode 100644 reward_without.png diff --git a/reward_with.png b/reward_with.png new file mode 100644 index 0000000000000000000000000000000000000000..bb9c734a2111317279b93c2e8d4d8ddbfc00c03e GIT binary patch literal 29855 zcmd431zc2H+c&&tsG(=*)S*K_Qd;RoS`+~R0RcrC36YQ%5RmRpNf8j~Fi^S_kWy(B zrIdX45FYgCxzGJQ&-Z)Zjn3Y)*IL)Q@_$`x&CK3=vo`_2mE;uV00gA zTi7_-I9S-&BKf$u0U;?xRdjR!bzGx?vH~V@QmQiCJlx#e#>Qv3`M@)`upqZF>MUr^ zBZxW+T;(xEorQRLc~R#x=KT9-V?F@^)O%Ai0U^}c{Hnm!{WC}ibqJda@}thc-V~HZ zQCj+nx~7_(qKYg40Xc)>-MDJ)0EGj9^-V{6O?fHg#Y=iftWl6_N&pRD1B8vQI@n68 ztE=qu`rDWFL6nRD(8r0Q_1i9gzKLUM=5Q5k-Uk00UbVG%1XZRFUgO?!v_)N8fY&4@ z*Y~e)qps~i2EqH`sOxJ7*IE004z8>B`)F%QgMD6u*Amx`U7H-cKAacq0-#;xMVkbeM>lL7#gP7kR6rK`X0p^0k#ZOsw+xo9 z+qz){l_lJMXxZS=*D}Ywx3@O}NCOyX=;-KZ7~l&A1_mY;9t;aS2yt<-@eqVWL=ByB6B#VvZ-A9~FNzym{0F_I|{5@ne`O9TB7@ zaP2hbD5o~l-~VRT1IXpmY48ohU9H4nU*2(j`|8o@6|Mf8zYCaN0C1z7k{{g>i*10W zIL{4y|I>ko*Qolm_>q;gm8yr6dFW*mA%+wHIAeyF02KkISJV_HZgr{uGy(v;&8nJW z#BbHaot~=3r~1AXN!wkLEbepu7Ob;6!z`la9)(4dLWVp3^jBI_T-K?B>)kNA4T8h=Q8_`W; zC|`Wy+LP#Oc}F@z*5h(EV6VkC-H=_eRFixcdz=)F&e{BpE4k;FX1(6~zq@=r*XL9o zfM%}#GM%(GZ$bX@>&-?$T;h-v6|+{X1@Y4 zI+mkh4PrZl5ktaX2VSu+xz;~flGvw+tUSeu%T3|Jrvdo!(#&3AwfBp^jD=SK2hyQkcq6*VSxbDIyvcyhEaUvs zBI4qrAWNoeV&fRgT1lXo|3K;5qwPIl71A~9($cdkc0XNw---~7CuqsM&dxc<>Kh6Ecv>=*$j(oo_l3^u3|d#QvlyU|?!64=6Pii81&T&9If z0Dp)8r(9b?8h7%DRhGvf4d(b9C5BIp<&(aTnhlcQmYA`E`qzls7wRusm>njdbLZi| zdz<}8{}t!Rw_^MXwdXX5E&!nB^;d<^0yC>v=h9GYL2((%C(4_dVg|BRBVJp}MqHm(H3mg-_2+a&;~a-4Ptp27vZr*I4Q=GxtMAFMu%m*MV&nHQ}`%GieNI zSgiBab(uw+mlocUElmhb-U(gPAQQ}SGD{3@2B$cFC~N0}HPN9$CO5DW7luXM*>0I8 z3TALWw-SbV9q){~{%HV&35;+|N-w}T4rqK0fT#)aH$p?>2DteSZ$tGmgg_bxcm#-5 zIdJjJ0q7ULk4;viMQPY1u6n@=R#@^KHUU^h)T$S8LebZ=ArE0iU#~s17ny+NPNuX1 zvNjJElGO<)J?gLadC?EFi;E`q{!lrnDFDh@0T5jP6$a^;gB1b76wY2V$*}A(s{)*` zyNRx;gw?`zNGPkQ7bfL>(cW2r#<2UNlLWq4%0zJY58i$ViqI2#yp#T6leVd?5^Vl) zV7_huv)d^+06~XBA?RoT6bj}u0046$p8x~{AR&Sib4wtQ>bypz{Pc`Gd&2+>Oq~!6 zXxAR#*%Q5c#dWCsWk`(XUDGz!cN+1?Td!YXiJYf)%CLQ(b>kfJVJrWPldv)u-C+HE z!>i9U?6{UD>2l>%3Ac^KQ^=_Ai(Gh07!$s7H=#ehY%_K1^mU?I-jFjx@2-5m^OSiH zz~2KtE(U${A7!c#9db{;_2mEZOR!mM?ng&ij+DsTZ?QQ~>00lo@o)JxtqM4gztZas zal@H5Abp(uY}kQ-iNM&(*h(v})WF-;1K*(PYo~86Z+GpG?m}Ucucd!H8Ez>TVN}4o z8}%#6-a&L12Sz;UoY7yK+sB*_xO%0-=}t{8gT@JZngp-*Ix`4&_F1fU&Pf z*CFoVUj#Dn=A*^#UcCOjxMWE8F02oqmqWbuw5k3{X7QgP%B+>HHe9^2DV3MCRA0@#(s6c%+_+i)mG!UU9Mk(`b{$a)` zp2gC38a7pd===r)gQ`K}E+?S*kA~S-&LZEG@Pccjo>}FSzZ8mM3h~XML|#2L0m?PCvduupXQIcV9w@PQj61v77MJCIi&-4k}b8nn4HuyDwA`joh7xuJ!KC zj0GdpT!c9N&CrU$6)=tvIaH<>xf-j_^7{`z+O%4#4+1@QUom%K+@UC||JC1+I?hIq zN>PhW&^P>#wt`N4OSZ1Mj3LFeE2dVdYuEK+T4)9Y8W}L&w@?n-lRdyViP53|eOjgOnb2dP z^lOwI2Jn|K$+w=X10%N=9AFxJv|xb$YLt^L52Ly!>wZR~-#QpM*0VSFXCO@dp$mnT z-(SYXqawYmWEuoUNngvl)%Ql_M42(q$n2nHpMQmiOp%8C@!W@0WRkTtPGt1Yj9%kg^5-Ra!I@nJ z;`nb>b_^trgY$cmA^lq@JqGDL1^>l6EKBl%h>3Ej`A(v6Ua6+RTx^=3&HrzhWgwBd zgxj{0ItOYLVFbE2G0(o0EGifblgvK;-KYKyQ9)|!t|49PFQt#!`Y(d9hyGe+gee;> z^|J`}-STcR6lDJz0Dsv8)!mUr8fDjp!=&=e{S}xSym>zi#tCGX~ zeqLHWQ&If}1xCma)(=9PVJ%legN{rHX6v6+!V}GFMKW=lw6@}ug|c<&c!mGvcAC{? zwI^+K>|M|H$!$hW>yZrPmxA`dM5IbvhYhE=?knRbnl9~^%xcqH(+#@Nx9*irbw|Hn zh{bv>$+ZW(3|`o!k70dkBd@=Fx!8pxmUmxyZjXGkFltMsDNkL~^F`W$U=QMyO6zM! zCc#+QbCl|0v<;@t)awzOcX&RoE8m?qe3BF;bW^ayppxd9;j2_1Y*bXDoX34vB0H%_ z53DctQw9fl$VO1Sf>L<}lgln8ssJiS5q>V@KgOdb@-l?3bU(%KYk?6d%^q-n)?xlLUy@mgW|9Y{d&xJql2>hJ=R#fBn-kVp z#?4GnT?%LQdMDM4oA~^A=8YM#pY05uUlZ*Rlf38Znd|6R!=L51J~9*rRN4xaVQC1s}U zbiH-TH5V2|We)K-s3A(&V!~+zY*i=J<`uE8v51~dRo99 z@W>Nf+6W=Q{c|WL3>^bp((EsLAOIB29>F7J*VIEq$IB-v-MoyX*DwZ`IqE)e2F)^b zZZx2 za0>Hxzp7KuT&?>mbLWlVMCRp0{+;T&FW7_GwCv2UZnl1-1xcu8e(Y7TrhE5A)rc^2 z1bu`zN&AHUTZS6)B$De6=BZWW^>iZrnb|ULt>2`g6{;4_0gTH&L_@+Z4-JQYCV(vCJ1c_48V zHxB1cME$~PAXgBaV9j?1bIxK&qDdyd%H%dd(V3Do>P(lm+ahzTFC~Zf0QpUJYO%%K zFe`A@@ORYD*uh!PKW3fN?|Pnn=5;P9R_qyNnHp+|H6hlA_1`%K-a zTvYQO$Qf9f<=4yrx|hWrP(xK8v9(3>~WcUX)`_X$^D9`6!qL;7J^en)sH~iVtey^{I_k7O+EJ zBIi@$2`9_Px8G0?j-`E_eu>{xYl8BC1a@;G-fBhJY+tP*xhfCj6Zuif+r%SI zF(AH@`)A|)(1Vf9Ww&3X*1FMdr!wLQb4nFZy#-@`|;oVGwjOSFADh4RKDl~gEK%#s?I@!hSlM+4jRfONII$wzM!1+5AO00 zQrxsy(dSkHH0%!i!;9^kgQ*{UGF4BGT{w42H31bMU<9!JD&>ESjw1tnbyOwE5!A~6 zd=aI-17}k)x;{B~t4J#FwwD#j2mjeI9*v@oe>D~Mn-kyn!~SZ~`*HsF${C2U(o~`v zaZK#aEXdrxFD0=0Pk6|&?K^L}Xop%_6O>xwWb0IX6>dF~BZ{0CivB`S@x0q9 z&0_E@DoQ82sT|#nm5dlG2&IF48{grd)_;(p0ka4e_zT#?8?|hkVA1;W>lOF=z#yze zmYyx9JvAldC8Tbr?&@F~bP^AD`Fv2e+LLT@V#Uo^5XpR7`TO2!pAK|FPO)!32XE{H z@l`O?Kv>QhSQos2+P~sPfjk-}Iwl(U(asN$w`)T1NJ{lA6Y=tSBk4ehZw4VA9#O`y z5ANV6Lgye(dq9iz%OP;1sfy*wmhK+l(@T!6Po9elET8$Xum_k*KasM@&;5v)#d2Yd zpDDP-uR0aROQQDVY3ny?dvJ77%SS7V3KHt855HwlC=5uy6i3X3t!nUfX@9avY@;z{ zO?9{xbU;fT_jYt#9!R9TlMRPsr#{b^L5GlWRX#_wN2W_$>q&+UiCuVxN5>dTjgn6ZkZu|WOv53xg!b!BHbAJXlFC7rR0zH2nGwi(2ya+9BJU20HxT? z5_`}?5Wl2DEVd?3`S&R_$m%9+I*6#PQ<{S|1YJ_mZk}&g#R6xTs2?EM12*;mV#;}& z&Vmz)v%j176t)rCbTEU&`>Blq@#!~rZ-HD9f4ceQEaqsk=ggz_{x3$hCpN*G@MgLE z+U|{DkXO1s@dA+7y!UjnsZ|4lUH)*L*itDo4A0d;7@FFuw2AtlhU%PO~WOw?md#((5mX$BY5?w@pg zcKS2%zJ@Ov$f0JVi<_0Z-9suKiei7P60w=n8Af7T-&qZNw()#q-%^~p%mJ>c^$Gm5Q4 zQ@YC+-W%6maXHcadu4Ww%=;4wsDD+Hal2YaqOvj|n!x-8bRm|}cT>0VpNQ-M&m>mD zGc3wq9!N_DdPsV}V{QGF0no+4p{mmXwc7veeSeewjH_OPSn|#7o@Y`)^|yHiR4oXu zk!|;#@IbmB^S?hj6G{oD2TI6|yFH&gJ@c7lX3HIiMWkD7pXC+@ytVVwLA4tGw?D9Y zLmS0IwOrFblY$}l8{ZOp)Ppw5;F4Q=;`D<8hn+e<@{Tj)+R{is?zD5QmGkUizswrf{JHB#i_B$yCqr{#$?G&IwbZ<1KJ~V^A~Rq6W@56^v*PhI3+MqYb?>-=s9jDS)z^!aE+Pb`BzW?w5b$UtKy`pob0hdTk)#ES7_(e%&tVOPs)bJ0hZEWgk?EzgF=PuIT zh{qPn&%REv@`|i|$;_;Zo&*$|RyL2G1H7XTmQ(9L!9M9Tye}67LLra+S z|Hx%vfNq%XGwb!iI1L0eFeNy|<53NVn=08up~8FRPo0+hxB0U0Jsw>(O z%{9TZYjO*n+B#}8mAJ3X7x@xXowZ|vwADOMosVWW@~!Z;CCgCM4pB6Wy#K_K07p0O zqVDLu&6e51JpByMVCliTeE!xaj4`J9oGClHo?M=1}} zq!mA@FB7=sWn%RiXgOl-eRc<%TvBVpl;Y-dhn^yWROPJJ>Kd0h|CEk0*1o`A!Bahq zOgd++!rHAyhRgWg@xHF}^Dmu);3SN0#WyLf;NomWcwTJLE-^jx&b8nz`_}Ufl*mL? zE;y*^(VXg5gYL=3GS;QHGc6IQ>*|kR1ZCv`*)U#^jBf!M_F18PiZ?wo8eC9N58sH5 zJjNZ~uvjzG&1Dk&!HwR3Bg}!Gt3Mu20=R^7vlW>XqWempYkzm1zgu=C)a(usogp+kq65LBvwXzJOcW$IC+Gns&P#&GIb z3o5KdBi41nJW)ZJ#AmSrGw+#3oVw+ecC)HJT=4R^LR`fqd(cD~f9QUimN}0-?=*W! zW>b>!iTO`qb2>8V7Tu)nB_C%CHm`0v)`#{BTUlBSXE0G~jFdT*XsgUlkHu!5$+cbMZ1B%BkJD&22j}U(A5Ep9-aH@V`(bAp$uNf-M0N5y&v+s>qKi{2K@RlRsWkYB1-|(9zZA!lzcu zIvZ(X7`at%$15XqEh~q94^TMnL%7fB^D^>^w0d9#tOcjES0zP8@X`Ew8A)U>CYE;I zbZr9t&UjU)pG)Ih8yy(@E9{~O=vJ9Agj@=jzQ?-VGKr>xC$C4jjlMc zYb8m4(mM*7BiQ^eLF9OM#D$t98|Yh3kx3=elH*g77Pk%20Y6C97f1m z{YRnY=V#xwO0h@hK+iYmQ?Kwcqp!ROrA)j%X2mi!lJ9)$5h~G~u^!fua*us=V(SHhO&}7J31Ex^)h3$F$7#gdny7d`tPDzHl3dTrp}1(#eEgzU*8dVw(1;?Yvu>` zyu7y>S_3EuLJ5KLv;P6&<0CkUWn6ug#irDw+mX8@jaP*JEh@H6+L3DxkdkU>4Ts}| zd1{x#ujTl|TlZ&9f`{xD-`9AY9WT8s{hjiW68ABzIbk`X4>Xq{<1 zl>&Hq@N`8>;DZElrySdPF_}H!E4QTXw6CSfzwW6}uYyX2XkoB;}K$U@|hjrLd z%_)6YIHJlmRGJ2r(#~(<`#xwVePCg6y@fPZnwFvuvha2;OS#6e*biMpA58@sk0>^?auT06s2R5%3IZQxE%zUjW!Ak{K_afoOchxN#R0t0xE27=~hLBoQAhg4Bj zCRg~%J>7QhGpzK<3K4(C;r}vaA#2T{efh?1I^Ly^DkG zlg`djser=Le-Z5Ih~QLTLhSP<4iCl`z3f_82$ja(1$C(gZD0Hkh2)>|{GaMhiV;)d z7gOZoZ3zZc>wAEc<=e#)eH?Lp9fLw0nc}P~s%&GZWs+Dkh#^Nc9?E%+>POW2=EzUP z@-R(8eb``w39rT%{VR0%dJ>G@pNg$tx*PK9Szz4l$H>kVw$y2Rq!)SGuuF~WKEk@?9(1zAoHHd*0?O$@s;*76 z#?=;tLby0oZG4nBK^6ZEG+wEm_SMxa{H6s1p|yu3!{T7&cRca`iv`So*&X9O29fUO zotPq`Gx+pEq&fv|&oy^PYtGItCl48ZDDZ46W_PS~sNBxnybLut|45aUe&ucx(e?91 zZW-5}q?k1TgPaUXPJ=VkYTTe~8i(rVX!Us;t z9;Q{EV+H8LZZ(htQHn`Zv;hJr%QE5DGp{ePL4|4mrIe4-7Ir>lS30OIe_OoN?L z&}Ph-!}s`r+6OZ3Epqg`H;_-f`k_sxs>gc4oZ0yYCdL=G~SN9pEpWu{<%>SvJQ;d1}rN_TC z`%J7=OErbM0fk3KPLbJLya)cpCqjk{TL(o^3HU$duiq@~=@1CrX3VeB9X{GYk7YLO z50y;T#7ZBfpi$)7YPj}LO!>U)l-d`W9bt`jhX_*Q?~5NuwFggWfAQPjuIl_gBo_^6 zDz$V%yZs((Z=kk;_Di(%hxZje0!}5Wp3y@iC z$=R&g@)PYY0lF6N1?28aZnPn@Us{!c&&7b*m~r zbX%9HjOs?{&sOb5f*%HdP_}5o(0O-#u(o+*#oNyItd45H$~jJm;rI+pqn{MDyPw=|*S*3Yuzbhj@ALlDog(IwqGrz- zx_dRc2E@Oc_kbaIf0w<|3N?4jyHh1Z_djfx{hh(Xj@woCN@3CEcm};S1*wOU{xsup z&gqRiKSUew#cgLhImmcoeLPUiZ@T;1JYkXxgM3%o11#z85dNf@->3{{++HbKpYLn* z?v&>CiMT)NAh!2aX*d70fQGB08)K@U=VvlZGZ z{Jj&4CAl^()d-UOd{RqDXm20QOM%eJ!hF2K!Yk{+>&-nIhC?L^LW<%f8Mk~sJ4UdH z(1#kU@at^MD;1CBMcf`|_*5Lu&Wy-ovl=igUV(`eT_02kEL`!8`4li47VC#u7J-AK zYgFJEoG6l}bArW_hlzY-48brxmlhdbJxI2Rqd$;SXOU1)QwTJvP&ZpgICMK{$d?g+ zxfSTqy(L*5@;LPRTz{Fac}lG04IT?UDLkdPXgg!=oQj3d=G>7CN)IznsX8)fXzpme zC3uzCIuC=S6EQjEJA3BVnpLvt*z(_dgJY4hR`SxgjV(W>Mb!&S`t?9T@I|-5I*<1` zIC+lEI6-PZtOnT#7UZx=t4uEm)~TnG$q@0Twl zC;81>ukmU_3X02H3=CJj;c-UVPV@{k?QUgv%I=ae6-1U~Unop<&5Vzewua~X)iOQQ zb}F(g(=9-J50H2vD`P7dV0~(^E@(_Appht{d!%hM>lTFyi-X0gmG3*HsGRJQxiQuv zi+ojO1tzl=lICG38v;4Oq4?PO#x4hSmk{%01|dIpHc@@_lHnKq*4czS9gXHUr}Q+- ze5WxkJqu7hDXKXjFjUpEwGkYe0-e{pAexp+Fe|IV9=akx$K1Z_w6GWe>%f1Gi(qFW zHev3%_72agfU|>*!6&=H^yuW9aKu-}8f$>R49k+GM~R!~Hb#^1<&MAzvkE zh6)FHwmw)3;@2j%^RG~%{|@EqaEUmz^HiMMV#Mdy3Z&FLb#_tPd!W-^NJ z*^NY2WAG;$v)@r^km~6+O^giS3n__2j4CAOSg5yPsi;=cSFEyZcY$98V21-x@Yncg z7^vU8AAB(i0nqViEW;(!k;Y}*65!|m>P9`2O-H}$J4aWtvP<}4V**Gkw#d^Sw^u&oVydUX180g{wdq#N(3aLek+4ponoeA;fG zF+z#%r42w|G&JYMv`*4VVbSc6xj(%`cTH#km171PgAh5?qtnC;OK!tp*H6h z(2(phF-_-S%e8xeBSm5x!3W?&sB9WGtErF#Ad<&_*Vc)91#peD&aw{%C!;rp7n=2x$pv3yE0#W(JM!E=i!p3u1Sk%w4Ie^sMyJL?89L zNtA2Xp85)lIK}sCTd8(n7nO1IyBx9?&2Mu~h@23;z^I1X^-x+O_7mHkXS~n^S*!2P zzFFA9IQ>jFo0G5BQNip@v`;=G#TTl>>Xs0OrV;f4eNEfm&{xK^u%2%N!PWIJVqRN*ITqtxTo>3xv@-D%X9!p?L%#aHfY9z!b4xm&$UcfCX8?XrPuCO z@LMYbEdjXBahDkm$S>`ipc|8m2vcc-K;=L6rnp~GB9Z@eeHgS`57u!)f9F$5B;Qyw z3v;H_zlq-m@-kVf@|%QFITVltd5_A&7NA$(MBkB$hA?L-os>w;GuC(zFB=@R6>ff= zL^J{`+zo~k!Bnc&l1V_e#9b*z*1`Ry`^!5#g`bS%H)uJ3jbOTwn5e%M$Yt3T8$!u* z_OVPBgB<+PgBk)K%F5AY<#0Vw{0v7-M>QjC=Fc`xzHm08%Vf1R^k_uPR;@xJKeZk`8f3Qe<8#d%z2igq4m;2_(xaiB@Ec9X>7NQpVxam5WaWuz2nWlTQxA;@p--1V_12Z1U^Cq0|n_?LqXJ?s&nb$_KKMe=Ylb9{E>2i6& zXM`UnB?7G;b6<14m=}?N0nv<5#k=7YSJ+U&5fdmw)`x3eZTmOhI0#^bYG|wlo#pgH0b+9@=$Z1iefpqfAJxKi8rJ{i}(q(**I%S&`<7e2lN- z=#WYq0uA!`e3UZCoZfu#m-)=+EQK3oAoTQCFL%AYOYD+9>O~WQ5!nOt=|PE@Fxm3l zk%wMp=CSSMafp&bDzN9rUQ*5|a8g&qM?Un8dUcLTK>_~$caeEE?KMQmD8aN+?y|d= zi*1!0Di*E>5Yqk{%4(yHP(%fK*S0s^J$DSG<{L;YmKa_{r2+%cgx{d%@V~_ykS||Z`8s3|;O2obB{(-iR+;Z++5H-kKVWmNPufQ_dN`N+PsF6woYfe-)K2epSVfK*=Z$jAP%>)#FwSu)E`XdAw<9VBI;1 zfbEpwt9Fwj2v{U{<}-{!wX5`q#}@t@eoSyb+0yQrPCU#8eJBkGf<$g z{3v+bNINOb8K0D0x#fh5pZ0PsZOlO`KIB;P`11_tzR^7Gq zO5usfX(nP{KR~`e;O!6V&XasNFWeF#8l*x00{`ac*K1O@q#qWtIudr6yJQLzH9D>% zzt6fZfoUrfm2CuCd|R9I8nz2Zoh7o*2pUYCpQ$ec)%&yF{%FbciApLoUHcd6=?{2v zH?_|YoN}jE++4Gsz7b4C%3c@9hZAA;s#t}AdDOsH8jmKgb~Yy%UL4m#%XGHbKl>?!9Nxbto}W@5@nwkCCh9z zXHSCP)&@1wz0#eACIN}h!cdfWA<2WzP?Hwqe&MPyTp*qvEzW$d~a88a3Wup6V%(c>`du|BvMdbmGb5${j#FBIvdMf-9o#iCsT zsUxoLV*6#djGnEmdASn1y#62(nc;Gxr>CI;!5bls5X1_%o91zG~ae7(|AH;|s^{Q*A{Cc1)< znqF-_B2x_x3FzW_{*$DaVQwef<$nWB9Bz;oG+$tF+WtsAYAIgzMs+VhP=bv*s5;tl z8k-)QtYC{%5htFdOsz%!Y{9I?3G6knI2xs>pkuA%;VX$Pqk9%2NHVJ%E8$JP9JE*ErYQU~QW5V-; zM0Vpv4m;nMvS8Vlb|xzcTU|oY>-xkU_Y&N$;&_G=&w?=I`l<224D$k+1ZEg33p_YJ zLpkz<#tMFv@ugv56g-Ja^ie1fENiIwN?<2aY@^}bpATCp>3M@`xSs>Sx}5_ZOX-?uvpT@`!V-AbsbEmFspFaCE+NWt~Jmw{nhB}Sr zg}T_NwjA`Q?QH3xo#nKGUN0Oa85L|Iwtxr={I?We!4UF*ZbwiDu|8!)A7sCUlt)UI zqG2fb?GWO2eG@u&_)>aU#jl~^^Fq}ryuLGfZ}jUiGM4fnzQPz5vIPW?c~M;IEVFBb z8z%$PvFv)~EY24}cpnn4I;L)rd*!nj_a`L8Y2%z>y}K?Vt>P7hi9D-_^jISc!sft} zx$OhnoKsC8!Z$_H*n%qptn_k=U8{3)p;RJc#qSb7vW#o;Tl8cW&Ck89C-QL2lnbTl zGPo=fb8~YZ?8EP_Rbz^#t(8p$cA~D2xY@-O1@<0G?&GE^s8i_4lnawD&W~2E@>m5& z(%R_W?D+cNb3Ur~;F{y&IQH2ZjZC?a6veoCZP%ynn9-C^VlL$;onT`(eAO)VfZ1TC zmk)kRk*q;S);vy$h=SyTl1FwonmBgK<*`evnInaZOI$u^WlT_KGt%#{Yy3u$ zAhGaPGKD{oTV^!t zmhxq$#L9p1W}8Z4mw%<~<;90SjM|gVuP?$n(@1%cj98^?mmh~q3Nf?s_Rm40eD{Fx zK+!5m#Ye0%HG$|S<#uscz-O$ioh-|Fr)a12XpTW&R|J;xESn&Q38}dU5eIm&>h&pNM)Vw}*%Y+XM5R^ADFoLo3=fd(C$+>p$ zm&L+Qyti{Bl{y8LAI^htrJ+v%enx2>wed04gP$u?pQ0sv7ztpkMFk} zYd%hSXnglaGx#VvaALe4qd#|UZ~bV__S|n3`_Z~S{^_vwY0e>EazB_B_WZmD>^G<0 z_%Sm!`r+UP5Aa87`|V%G|Kb~VG#Yge)%=ch<(ORfFrm8#a_!#)JM00ve=)zW80aC1 zs{Jlq9xFfCKjaXAAJ9N4Y|QhJ#r@8Q9S$j+^W62gbtJ;^b{IMu$VA

BK`O4`vYm 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 literal 0 HcmV?d00001 diff --git a/reward_without.png b/reward_without.png new file mode 100644 index 0000000000000000000000000000000000000000..4a9c0ed2543b5bd8354da9f6064cb810e1c8bbe2 GIT binary patch literal 28834 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

1U&p~jL*U(7 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 Date: Mon, 17 Oct 2016 12:58:57 +0800 Subject: [PATCH 7/7] Update Report.md --- Report.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/Report.md b/Report.md index a2ebb19..e6de5a3 100644 --- a/Report.md +++ b/Report.md @@ -24,10 +24,13 @@ Modify the code to compare the variance and performance before and after adding Then, write a report about your findings. (with figures is better) ``` 理論上,利用減掉baseline這個動作,可以降低variance,於是可以得到比較好的predict結果
-但可能因為這個task太簡單,所以在 return 上,有沒有baseline對結果差異沒有那麼大
-不過從圖中(Fig 1)我們還是可以看出來,雖然一開始有baseline(紅)的return比較小,但是他還是可以花比較少的iteration收斂
-![Fig. 1](https://github.com/CEDL739/homework2/blob/master/reward(b).png)
-                      **Fig .1** With/without baseline
+下面這兩張圖,是分別在有或沒有baseline的情況下各跑10次的結果
+中間的曲線代表的是十次平均的結果,上及下的值分別代表的是在這10次當中,該iteration的最大最小值
+從這兩個結果看起來,我們覺得或許是因為這個task太簡單,所以不管有沒有baseline,對於學習的影響不大
+![Fig. 1](https://github.com/CEDL739/homework2/blob/master/reward_with.png)
+             **Fig .1** With baseline
+![Fig. 2](https://github.com/CEDL739/homework2/blob/master/reward_without.png)
+             **Fig .2** Without baseline
但是我們覺得最重要的是最一開始的initial weight,如果一開始的return很高的話,就可以在很少的iteration內收斂
## Problem 6