Þ ¥bonds€¬cell_resultsÞ§Ù$4f96be72-ef3e-4e08-ac4c-be4271dcd14cЦqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ”ô•�Z°persist_js_state·has_pluto_hook_features§cell_idÙ$4f96be72-ef3e-4e08-ac4c-be4271dcd14c¹depends_on_disabled_cells§runtimeÎ @Uµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$19dfabda-7049-4050-8662-0385529c0c5aЦqueued¤logs�§running¦output†¤bodyÚ"W
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ• ûžV°persist_js_state·has_pluto_hook_features§cell_idÙ$19dfabda-7049-4050-8662-0385529c0c5a¹depends_on_disabled_cells§runtimeÎ KÞµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$b71145a4-2614-4f62-bfd2-7d5d1fecec56Цqueued¤logs�§running¦output†¤bodyÙGactor_critic_with_eligibility_traces! (generic function with 3 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•+
)o°persist_js_state·has_pluto_hook_features§cell_idÙ$b71145a4-2614-4f62-bfd2-7d5d1fecec56¹depends_on_disabled_cells§runtimeÎ ‰Xþµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$c0876a48-ea18-494d-8bfc-e2bceb73b417Цqueued¤logs�§running¦output†¤bodyÛ F%
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•@µ!ÿ°persist_js_state·has_pluto_hook_features§cell_idÙ$c0876a48-ea18-494d-8bfc-e2bceb73b417¹depends_on_disabled_cells§runtimeÎ|÷¸µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$1d36ae81-d3da-45c0-bbcf-0b6e0e80b091Цqueued¤logs�§running¦output†¤bodyÙDreinforce_monte_carlo_control_fcann (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•$0Šç°persist_js_state·has_pluto_hook_features§cell_idÙ$1d36ae81-d3da-45c0-bbcf-0b6e0e80b091¹depends_on_disabled_cells§runtimeÎ =‡xµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f4b6f10b-4cd0-4be6-98ec-4d4ffb696392Цqueued¤logs�§running¦output†¤bodyÙS
One-step Actor-Critic Implementation
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô‹ï°persist_js_state·has_pluto_hook_features§cell_idÙ$f4b6f10b-4cd0-4be6-98ec-4d4ffb696392¹depends_on_disabled_cells§runtimeÎ mȵpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$9db9ff71-bee9-4bea-a45b-748f8517fed1Цqueued¤logs�§running¦output†¤bodyƒ¨elements’’´action_probabilities’…¦prefix§Float32¨elements’’’©0.0033094ªtext/plain’’¨0.996691ªtext/plain¤type¥Array¬prefix_short ¨objectid°b337585f8106efc9Ù!application/vnd.pluto.tree+object’´state_value_estimate’¨-243.183ªtext/plain¤typeªNamedTuple¨objectid¯1ff9b53824d3895¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚ•*í6¤°persist_js_state·has_pluto_hook_features§cell_idÙ$9db9ff71-bee9-4bea-a45b-748f8517fed1¹depends_on_disabled_cells§runtime΅ǵµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$4634267b-5dea-4164-8bb2-1eb2fd4d7954Цqueued¤logs�§running¦output†¤bodyÙBupdate_linear_eligibility_vector! (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•´�ذpersist_js_state·has_pluto_hook_features§cell_idÙ$4634267b-5dea-4164-8bb2-1eb2fd4d7954¹depends_on_disabled_cells§runtimeÎ "¥¥µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$6c5f51bb-a6be-447e-b73d-4f9c2885e809Цqueued¤logs�§running¦output†¤bodyÀ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampË °persist_js_state·has_pluto_hook_features§cell_idÙ$6c5f51bb-a6be-447e-b73d-4f9c2885e809¹depends_on_disabled_cellsçruntimeÀµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$cc45091e-b889-4d5a-9eef-84d80f792046Цqueued¤logs�§running¦output†¤bodyÚý13.4 REINFORCE with Baseline
The policy gradient theorem (13.5) can be generalized to include a comparison of the action value to an arbitrary baseline b(s):
$$\nabla J(\boldsymbol{\theta}) \propto \sum_s \mu(s)\sum_a\left( q_\pi(s,a)-b(s) \right ) \nabla\pi(a|s,\boldsymbol{\theta}) \tag{13.10}$$
The baseline can be any function, even a random variable, as long as it does not vary with $a$ ; the euation remains valid because the subtracted quantity is zero:
$$\sum_ab(s)\nabla\pi(a|s,\boldsymbol{\theta})=b(s)\nabla\sum_a\pi(a|s,\boldsymbol{\theta})=b(s)\nabla1=0$$
The policy gradient theorem with baseline (13.10) can be used to derive an update rule using similar steps as in the previous section. The update rule that we end up with is a new version of REINFORCE that includes a general baseline:
$$\boldsymbol{\theta}_{t+1} \doteq \boldsymbol{\theta}_t+\alpha(G_t-b(S_t))\frac{\nabla\pi(A_t|S_t,\boldsymbol{\theta}_t)}{\pi(A_t|S_t,\boldsymbol{\theta}_t)} \tag{13.11}$$
Since the baseline could be uniformly zero, this is a strict generalization of REINFORCE. To have an effective baseline that depends on state we can use a state value estimate that is also updated with gradient steps: $\hat v(S_t, \mathbf{w})$ . Using such an estimate we can revise the previous REINFORCE algorithm.
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô‰¨ø°persist_js_state·has_pluto_hook_features§cell_idÙ$cc45091e-b889-4d5a-9eef-84d80f792046¹depends_on_disabled_cells§runtimeÎ ]Aµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$5b15d91e-7119-4f85-a54a-7d4f1fdaf097Цqueued¤logs�§running¦output†¤bodyÙIcreate_actor_critic_continuing_params_UI (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ• ró�°persist_js_state·has_pluto_hook_features§cell_idÙ$5b15d91e-7119-4f85-a54a-7d4f1fdaf097¹depends_on_disabled_cells§runtimeÎ >¶õµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$ba41f521-4ee2-42a6-bf18-078bfa4b875eЦqueued¤logs�§running¦output†¤bodyÙAmake_n_param_dist_policy_params (generic function with 2 methods)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•' ¶ °persist_js_state·has_pluto_hook_features§cell_idÙ$ba41f521-4ee2-42a6-bf18-078bfa4b875e¹depends_on_disabled_cells§runtimeÎ x®µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$d41f0dc4-15ac-4f8f-acb5-a7ccd8d48f03Цqueued¤logs�§running¦output†¤bodyÙNcartpole_tilecoding_reinforce_parameter_study (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•1<×°persist_js_state·has_pluto_hook_features§cell_idÙ$d41f0dc4-15ac-4f8f-acb5-a7ccd8d48f03¹depends_on_disabled_cells§runtimeÎ Y?µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$3c695d54-c30f-4f04-bd40-f5da53be2a95Цqueued¤logs�§running¦output†¤bodyÙN
Cart Pole Continuous Action MDP
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô”—°persist_js_state·has_pluto_hook_features§cell_idÙ$3c695d54-c30f-4f04-bd40-f5da53be2a95¹depends_on_disabled_cells§runtimeÎ ^Hµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$0d45ae72-572f-4d17-83cf-9814f2854131Цqueued¤logs�§running¦output†¤bodyÚcY
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•@/ܰpersist_js_state·has_pluto_hook_features§cell_idÙ$0d45ae72-572f-4d17-83cf-9814f2854131¹depends_on_disabled_cells§runtimeÎ &Lµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$cd9c9eeb-c90d-4499-9503-7773d5250f47Цqueued¤logs�§running¦output†¤bodyÚ‹¤Total Reward: -68.0
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•AtK°persist_js_state·has_pluto_hook_features§cell_idÙ$cd9c9eeb-c90d-4499-9503-7773d5250f47¹depends_on_disabled_cells§runtimeÎ -œµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$fd58402f-da65-44cf-b81a-e21192fd0e63Цqueued¤logs�§running¦output†¤bodyÛ yú
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•@`‚à°persist_js_state·has_pluto_hook_features§cell_idÙ$fd58402f-da65-44cf-b81a-e21192fd0e63¹depends_on_disabled_cells§runtimeÎ\9µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$8e39bd15-862e-4941-88f9-2794b861a523Цqueued¤logs�§running¦output†¤bodyÙNreinforce_monte_carlo_control_linear_features (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•$9?°persist_js_state·has_pluto_hook_features§cell_idÙ$8e39bd15-862e-4941-88f9-2794b861a523¹depends_on_disabled_cells§runtimeÎ ;çhµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$64900586-ef92-48e4-839e-ff952a46671bЦqueued¤logs�§running¦output†¤bodyÀ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampË °persist_js_state·has_pluto_hook_features§cell_idÙ$64900586-ef92-48e4-839e-ff952a46671b¹depends_on_disabled_cellsçruntimeÀµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$fddef10c-7695-4596-9e16-987fd45a57e6Цqueued¤logs�§running¦output†¤bodyÙBsetup_cartpole_continuous_problem (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•0“uê°persist_js_state·has_pluto_hook_features§cell_idÙ$fddef10c-7695-4596-9e16-987fd45a57e6¹depends_on_disabled_cells§runtimeÎ Nãvµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e2b09af1-0f22-4f7f-b806-54fa522adb20Цqueued¤logs�§running¦output†¤body ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ”ô‹š°persist_js_state·has_pluto_hook_features§cell_idÙ$e2b09af1-0f22-4f7f-b806-54fa522adb20¹depends_on_disabled_cells§runtimeÍ'Kµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$2be8a812-4f21-4fe8-a2de-50497db0345aЦqueued¤logs�§running¦output†¤bodyÙg
Actor-Critic Implementation for Continuous Action Spaces
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô“æ°persist_js_state·has_pluto_hook_features§cell_idÙ$2be8a812-4f21-4fe8-a2de-50497db0345a¹depends_on_disabled_cells§runtimeÎ ¿uµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$68806899-9972-460a-9f11-daa708a9d610Цqueued¤logs�§running¦output†¤bodyÙUactor_critic_with_eligibility_traces_linear_features (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•+¾NY°persist_js_state·has_pluto_hook_features§cell_idÙ$68806899-9972-460a-9f11-daa708a9d610¹depends_on_disabled_cells§runtimeÎ KMµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$189798b3-ec6b-48b9-918c-ee0f65935ab3Цqueued¤logs�§running¦output†¤bodyÚ�
Exercise 13.3
In Section 13.1 we considered policy parameterizations using the soft-max in action preferences (13.2) with linear action preferences (13.3). For this parameterization, prove that the eligibility vector is $\begin{flalign} \nabla \ln \pi(a|s, \boldsymbol{\theta}) = \mathbf{x}(s, a) - \sum_b \pi(b|s, \boldsymbol{\theta}) \mathbf{x}(s, b) \tag{13.9} \end{flalign}$ using the definitions and elementary calculus.
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ôˆEé°persist_js_state·has_pluto_hook_features§cell_idÙ$189798b3-ec6b-48b9-918c-ee0f65935ab3¹depends_on_disabled_cells§runtimeÎ -µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$00152954-dc98-4120-b94b-2ea4d987832bЦqueued¤logs�§running¦output†¤bodyÙBcreate_mountaincar_continuing_mdp (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•!'r°persist_js_state·has_pluto_hook_features§cell_idÙ$00152954-dc98-4120-b94b-2ea4d987832b¹depends_on_disabled_cells§runtimeÎ ’¾µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$42d4600a-bf3c-45ac-b7f5-d23917713ff5Цqueued¤logs�§running¦output†¤bodyÚ‚
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•!@°persist_js_state·has_pluto_hook_features§cell_idÙ$42d4600a-bf3c-45ac-b7f5-d23917713ff5¹depends_on_disabled_cells§runtimeÎÍ�̵published_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$4e29c621-223e-4859-8e96-db04b967815aЦqueued¤logs�§running¦output†¤bodyÙPsetup_binary_squashed_gaussian_policy_arguments (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•'4Qø°persist_js_state·has_pluto_hook_features§cell_idÙ$4e29c621-223e-4859-8e96-db04b967815a¹depends_on_disabled_cells§runtimeÎ éÓµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$5981f52b-d829-4c7d-b47b-33310f7d64a2Цqueued¤logs�§running¦output†¤body…¦prefix§Float32¨elements’’’£0.5ªtext/plain’’£0.5ªtext/plain¤type¥Array¬prefix_short ¨objectid°540650b0f89a7c43¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚ•>°persist_js_state·has_pluto_hook_features§cell_idÙ$5981f52b-d829-4c7d-b47b-33310f7d64a2¹depends_on_disabled_cells§runtimeÍiµµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$0e9de19e-bcd4-40ac-9831-afb6cad38422Цqueued¤logs�§running¦output†¤bodyÙ=setup_fcann_policy_arguments (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•Ý…n°persist_js_state·has_pluto_hook_features§cell_idÙ$0e9de19e-bcd4-40ac-9831-afb6cad38422¹depends_on_disabled_cells§runtimeÎ Käåµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$ff3009eb-23f9-44fe-8e56-85dbc7b463d0Цqueued¤logs�§running¦output†¤bodyÙ5show_squashed_policy (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•>^Œ°persist_js_state·has_pluto_hook_features§cell_idÙ$ff3009eb-23f9-44fe-8e56-85dbc7b463d0¹depends_on_disabled_cells§runtimeÎ î>µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$4fb83451-b6f8-4e6e-a131-1accc8e10b08Цqueued¤logs�§running¦output†¤bodyÙMreinforce_with_baseline_monte_carlo_control! (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•#]R;°persist_js_state·has_pluto_hook_features§cell_idÙ$4fb83451-b6f8-4e6e-a131-1accc8e10b08¹depends_on_disabled_cells§runtimeÎa:›µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$406638af-1e08-44d2-9ee4-97aa9294a94bЦqueued¤logs�§running¦output†¤bodyÙF
13.2 The Policy Gradient Theorem
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô…vu°persist_js_state·has_pluto_hook_features§cell_idÙ$406638af-1e08-44d2-9ee4-97aa9294a94b¹depends_on_disabled_cells§runtimeÎ Ûõpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$57e5e12a-b722-4ea3-ab3b-e5711029e640Цqueued¤logs�§running¦output†¤bodyÙFone_step_actor_critic_linear_features (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•*âí»°persist_js_state·has_pluto_hook_features§cell_idÙ$57e5e12a-b722-4ea3-ab3b-e5711029e640¹depends_on_disabled_cells§runtimeÎ :蘆published_object_keys�¸depends_on_skipped_cells§erroredÂÙ$374af774-3a97-49b5-a3bb-bc3f7f63a3faЦqueued¤logs�§running¦output†¤bodyÚÔ¾
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•@šá"°persist_js_state·has_pluto_hook_features§cell_idÙ$374af774-3a97-49b5-a3bb-bc3f7f63a3fa¹depends_on_disabled_cells§runtimeÎ Ö·µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$7bf209c8-ef0a-46d1-937e-b1a6e45dc62eЦqueued¤logs�§running¦output†¤bodyÚV( ¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•!hHw°persist_js_state·has_pluto_hook_features§cell_idÙ$7bf209c8-ef0a-46d1-937e-b1a6e45dc62e¹depends_on_disabled_cells§runtimeΊ2–µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$dd8e8cd2-7b41-46c4-8530-adefb7aea684Цqueued¤logs�§running¦output†¤bodyÙRactor_critic_binary_episodic_beta_parameter_study (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•/å�¼°persist_js_state·has_pluto_hook_features§cell_idÙ$dd8e8cd2-7b41-46c4-8530-adefb7aea684¹depends_on_disabled_cells§runtimeÎ �þ;µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$4fea7232-f286-4a8b-93f8-a0702818ab31Цqueued¤logs�§running¦output†¤bodyÙO
Test Actor-Critic with Eligibility Traces
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô‹Òª°persist_js_state·has_pluto_hook_features§cell_idÙ$4fea7232-f286-4a8b-93f8-a0702818ab31¹depends_on_disabled_cells§runtimeÎ ß®µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$26880577-d267-4950-8725-7afe0d0402b6Цqueued¤logs�§running¦output†¤bodyƒ¨elements•’¤mdps’ƒ¨elements’’¨episodic’ƒ¨elements’’¨discrete’…¦prefixÚÏStateMDP{Float32, CartPoleState{Float32}, Float32, StateMDPTransitionSampler{Float32, CartPoleState{Float32}, var"#1515#1531"{var"#episodic_step#1529"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}}, Vector{Float32}}}, var"#initialize_state#1525"{var"#initialize_state#1514#1526"{var"#1521#1537", var"#init_θ#1551", var"#1523#1539", var"#1524#1540"}}, var"#failure#1527"{Float32, Float32, Float32, Float32}, var"#164#169"}¨elements–’§actions’…¦prefix§Float32¨elements‘¤more¤type¥Array¬prefix_short ¨objectid°94c2589b374bb4e8Ù!application/vnd.pluto.tree+object’£ptf’…¦prefixÙÎStateMDPTransitionSampler{Float32, CartPoleState{Float32}, var"#1515#1531"{var"#episodic_step#1529"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}}, Vector{Float32}}}¨elements‘’¤step’¥#1515ªtext/plain¤type¦struct¬prefix_short¹StateMDPTransitionSampler¨objectid°fe79d9d3300a131aÙ!application/vnd.pluto.tree+object’°initialize_state’°initialize_stateªtext/plain’¦isterm’§failureªtext/plain’¯is_valid_action’¤#164ªtext/plain’¬action_index’…¦prefix´Dict{Float32, Int64}¨elements‘¤more¤type¤Dict¬prefix_short¤Dict¨objectid°604cc680086d6fbcÙ!application/vnd.pluto.tree+object¤type¦struct¬prefix_short¨StateMDP¨objectid°93f5ea03ec017b99Ù!application/vnd.pluto.tree+object’ªcontinuous’…¦prefixÚÀContinuousMDP{Float32, CartPoleState{Float32}, Float32, ContinuousMDPTransitionSampler{Float32, CartPoleState{Float32}, Float32, var"#episodic_step#1529"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}}}, var"#initialize_state#1525"{var"#initialize_state#1514#1526"{var"#1521#1537", var"#init_θ#1551", var"#1523#1539", var"#1524#1540"}}, var"#failure#1527"{Float32, Float32, Float32, Float32}, Returns{Bool}}¨elements”’£ptf’…¦prefixÙºContinuousMDPTransitionSampler{Float32, CartPoleState{Float32}, Float32, var"#episodic_step#1529"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}}}¨elements‘’¤step’episodic_stepªtext/plain¤type¦struct¬prefix_short¾ContinuousMDPTransitionSampler¨objectid°7c8829407e8c2ed7Ù!application/vnd.pluto.tree+object’°initialize_state’°initialize_stateªtext/plain’¦isterm’§failureªtext/plain’¯is_valid_action’³Returns{Bool}(true)ªtext/plain¤type¦struct¬prefix_shortContinuousMDP¨objectid°677d0c961fd63ccaÙ!application/vnd.pluto.tree+object¤typeªNamedTuple¨objectid°6ef1486dd0419d46Ù!application/vnd.pluto.tree+object’ªcontinuing’ƒ¨elements’’¨discrete’…¦prefixÚàStateMDP{Float32, CartPoleState{Float32}, Float32, StateMDPTransitionSampler{Float32, CartPoleState{Float32}, var"#1516#1532"{var"#continuing_step#1530"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}, var"#failure#1527"{Float32, Float32, Float32, Float32}}, Vector{Float32}}}, var"#initialize_state#1525"{var"#initialize_state#1514#1526"{var"#1521#1537", var"#init_θ#1551", var"#1523#1539", var"#1524#1540"}}, Returns{Bool}, var"#164#169"}¨elements–’§actions’…¦prefix§Float32¨elements‘¤more¤type¥Array¬prefix_short ¨objectid°98ad56d5f22ee7f4Ù!application/vnd.pluto.tree+object’£ptf’…¦prefixÚStateMDPTransitionSampler{Float32, CartPoleState{Float32}, var"#1516#1532"{var"#continuing_step#1530"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}, var"#failure#1527"{Float32, Float32, Float32, Float32}}, Vector{Float32}}}¨elements‘’¤step’¥#1516ªtext/plain¤type¦struct¬prefix_short¹StateMDPTransitionSampler¨objectid°1a36bcae07eee980Ù!application/vnd.pluto.tree+object’°initialize_state’°initialize_stateªtext/plain’¦isterm’´Returns{Bool}(false)ªtext/plain’¯is_valid_action’¤#164ªtext/plain’¬action_index’…¦prefix´Dict{Float32, Int64}¨elements‘¤more¤type¤Dict¬prefix_short¤Dict¨objectid°c3e528862580ef49Ù!application/vnd.pluto.tree+object¤type¦struct¬prefix_short¨StateMDP¨objectid°45fb03e2144b629bÙ!application/vnd.pluto.tree+object’ªcontinuous’…¦prefixÚÑContinuousMDP{Float32, CartPoleState{Float32}, Float32, ContinuousMDPTransitionSampler{Float32, CartPoleState{Float32}, Float32, var"#continuing_step#1530"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}, var"#failure#1527"{Float32, Float32, Float32, Float32}}}, var"#initialize_state#1525"{var"#initialize_state#1514#1526"{var"#1521#1537", var"#init_θ#1551", var"#1523#1539", var"#1524#1540"}}, Returns{Bool}, Returns{Bool}}¨elements”’£ptf’…¦prefixÙôContinuousMDPTransitionSampler{Float32, CartPoleState{Float32}, Float32, var"#continuing_step#1530"{Float32, var"#step#1528"{Float32, Float32, Float32, Float32, CartPoleVehicle{Float32}}, var"#failure#1527"{Float32, Float32, Float32, Float32}}}¨elements‘’¤step’¯continuing_stepªtext/plain¤type¦struct¬prefix_short¾ContinuousMDPTransitionSampler¨objectid°5a3a5ccaebd85094Ù!application/vnd.pluto.tree+object’°initialize_state’°initialize_stateªtext/plain’¦isterm’´Returns{Bool}(false)ªtext/plain’¯is_valid_action’³Returns{Bool}(true)ªtext/plain¤type¦struct¬prefix_shortContinuousMDP¨objectid°8a16015925357c5aÙ!application/vnd.pluto.tree+object¤typeªNamedTuple¨objectid°db92a2c629c9c65aÙ!application/vnd.pluto.tree+object¤typeªNamedTuple¨objectid¯2f01e5bd9066e7bÙ!application/vnd.pluto.tree+object’³get_active_features’¥#1549ªtext/plain’¬num_features’¥52488ªtext/plain’¨min_vals’ƒ¨elements”’’¥-50.0ªtext/plain’’¨-1.22173ªtext/plain’’¥-50.0ªtext/plain’’¥-10.0ªtext/plain¤type¥Tuple¨objectid°e43d54ac3f2f06edÙ!application/vnd.pluto.tree+object’¨max_vals’ƒ¨elements”’’¤50.0ªtext/plain’’§1.22173ªtext/plain’’¤50.0ªtext/plain’’¤10.0ªtext/plain¤type¥Tuple¨objectid°670383347ca2d0caÙ!application/vnd.pluto.tree+object¤typeªNamedTuple¨objectid°a4287526702b37b9¤mimeÙ!application/vnd.pluto.tree+object¬rootassignee´const cartpole_setup²last_run_timestampËAÚ•0˵=°persist_js_state·has_pluto_hook_features§cell_idÙ$26880577-d267-4950-8725-7afe0d0402b6¹depends_on_disabled_cells§runtimeÎ[nµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$a7891c63-18d6-4c1f-ba67-adf7c547d334Цqueued¤logs�§running¦output†¤bodyÀ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampË °persist_js_state·has_pluto_hook_features§cell_idÙ$a7891c63-18d6-4c1f-ba67-adf7c547d334¹depends_on_disabled_cellsçruntimeÀµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$44f14d4f-7414-4c6f-883a-042ca261a403Цqueued¤logs�§running¦output†¤bodyÀ¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampË °persist_js_state·has_pluto_hook_features§cell_idÙ$44f14d4f-7414-4c6f-883a-042ca261a403¹depends_on_disabled_cellsçruntimeÀµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$94354552-9920-4b90-98d9-f75286d1f53eЦqueued¤logs�§running¦output†¤bodyÚ.R
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•)øp °persist_js_state·has_pluto_hook_features§cell_idÙ$94354552-9920-4b90-98d9-f75286d1f53e¹depends_on_disabled_cells§runtimeÏ eup=µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$e5faaa1b-88cb-43e2-8d04-8972b58b4bdaЦqueued¤logs�§running¦output†¤bodyÛ k9
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ•Yî»°persist_js_state·has_pluto_hook_features§cell_idÙ$e5faaa1b-88cb-43e2-8d04-8972b58b4bda¹depends_on_disabled_cells§runtimeÎ$Ø.Cµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$70096b14-beab-4f71-9886-6355c749bb8aЦqueued¤logs�§running¦output†¤bodyÚWe previously derived an expression for the gradient of the policy itself in the case of linear action preferences:
$$\begin{flalign}
h_a &= \boldsymbol{\theta}^\top \mathbf{x}(s, a) \\
\pi_a &= \frac{e^{h_a}}{\sum_k e^{h_k}} \\
\nabla(\pi_a)_i &= \pi_a \left ( \mathbf{x}(s, a)_i - \sum_k \pi_k \mathbf{x}(s, k)_i \right)
\end{flalign}$$
Applying the chain rule to the natural logarithm produces:
$$\nabla \left ( \ln f(\theta) \right) = \frac{\nabla f(\theta)}{f(\theta)} \implies \nabla \left ( \ln f(\theta) \right )_i = \frac{\nabla \left ( f(\theta) \right )_i}{f(\theta)}$$
Applying this to the above expression yields:
$$\begin{flalign}
\nabla \left ( \ln \pi_a \right )_i &= \frac{\nabla \left ( \pi_a \right )_i}{\pi_a} \\
&= \frac{\pi_a \left ( \mathbf{x}(s, a)_i - \sum_k \pi_k \mathbf{x}(s, k)_i \right)}{\pi_a} \\
&= \mathbf{x}(s, a)_i - \sum_k \pi_k \mathbf{x}(s, k)_i
\end{flalign}$$
which is the per component version of the desired vector expression.
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ôˆiŒ°persist_js_state·has_pluto_hook_features§cell_idÙ$70096b14-beab-4f71-9886-6355c749bb8a¹depends_on_disabled_cells§runtimeÎ xÕµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$90d3b96b-ad2b-405c-951b-f48ec7ccf24aЦqueued¤logs�§running¦output†¤bodyÙ÷The final expected value expression (13.5) can be sampled on a step by step basis during an episode since we would have access to both the step count and some unbiased sample of the state-action value.
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô‡&x°persist_js_state·has_pluto_hook_features§cell_idÙ$90d3b96b-ad2b-405c-951b-f48ec7ccf24a¹depends_on_disabled_cells§runtimeÎ µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$700dcbc4-c94c-4287-8cf0-0b2c7a320a3aЦqueued¤logs�§running¦output†¤bodyƒ¨elements’’´action_probabilities’…¦prefix§Float32¨elements“’’¦0.6152ªtext/plain’’¨0.107868ªtext/plain’’¨0.276932ªtext/plain¤type¥Array¬prefix_short ¨objectid°77c56ee0c0a77e30Ù!application/vnd.pluto.tree+object’´state_value_estimate’¨0.920919ªtext/plain¤typeªNamedTuple¨objectid°8b86b57a11e05d5b¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚ•:™J°persist_js_state·has_pluto_hook_features§cell_idÙ$700dcbc4-c94c-4287-8cf0-0b2c7a320a3a¹depends_on_disabled_cells§runtimeÍl†µpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$f59a5dcd-9f4a-4336-a391-e64af35ef799Цqueued¤logs�§running¦output†¤bodyÙ´
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô—t°persist_js_state·has_pluto_hook_features§cell_idÙ$f59a5dcd-9f4a-4336-a391-e64af35ef799¹depends_on_disabled_cells§runtimeÎ <üµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$5864a5a3-a5a5-43c2-9cb4-7d13b2d20bedЦqueued¤logs�§running¦output†¤bodyÚ~Normal Distribution: $f(x) = \frac{1}{\sqrt{2 \pi \sigma^2}} e^{- \frac{(x - \mu)^2}{2 \sigma^2}}$
Consider a new random variable $Y \sim \tanh(X)$ where $X \sim N(0, 1)$ . Using the change of variables theorem from probability theory we can compute the density function of $Y$ :
$$f_Y(y) = f_X (g^{-1}(y)) \cdot \left \vert \frac{d}{dy} g^{-1}(y) \right \vert$$
where $g(x) = \tanh(x) = \frac{e^x - e^{-x}}{e^x + e^{-x}}$ so $f_Y(y) = \frac{1}{\sqrt{2 \pi \sigma^2}} e^{- \frac{\left (\tanh^{-1}(y) - \mu \right )^2}{2 \sigma^2}} \left \vert \frac{1}{1 - y^2} \right \vert$
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ô“mΰpersist_js_state·has_pluto_hook_features§cell_idÙ$5864a5a3-a5a5-43c2-9cb4-7d13b2d20bed¹depends_on_disabled_cells§runtimeÎ Iµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e3a2fb12-37ce-4c23-ad93-5fc89991aabbЦqueued¤logs�§running¦output†¤bodyÙf
Eligibility Vector for General Soft-Max and State Feature Vector
¤mime©text/html¬rootassigneeÀ²last_run_timestampËAÚ”ôˆ¦¤°persist_js_state·has_pluto_hook_features§cell_idÙ$e3a2fb12-37ce-4c23-ad93-5fc89991aabb¹depends_on_disabled_cells§runtimeÎ Ýqµpublished_object_keys�¸depends_on_skipped_cells§erroredÂÙ$e5c1aca8-7575-4835-8273-e69ca0a55fe8Цqueued¤logs�§running¦output†¤bodyÙ;corridor_parameter_studies (generic function with 1 method)¤mimeªtext/plain¬rootassigneeÀ²last_run_timestampËAÚ•&Œ‚°persist_js_state·has_pluto_hook_features§cell_idÙ$e5c1aca8-7575-4835-8273-e69ca0a55fe8¹depends_on_disabled_cells§runtimeÎ ˆû¥µpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$44b32cc0-36a8-41fd-89bc-ce894536926cЦqueued¤logs�§running¦output†¤bodyƒ¨elements’’´action_probabilities’…¦prefix§Float32¨elements’’’¨0.401392ªtext/plain’’¨0.598608ªtext/plain¤type¥Array¬prefix_short ¨objectid°bf6dd01b0c41893fÙ!application/vnd.pluto.tree+object’´state_value_estimate’¨-9.63535ªtext/plain¤typeªNamedTuple¨objectid°d3a6d0a62b65b7a5¤mimeÙ!application/vnd.pluto.tree+object¬rootassigneeÀ²last_run_timestampËAÚ•&»Yæ°persist_js_state·has_pluto_hook_features§cell_idÙ$44b32cc0-36a8-41fd-89bc-ce894536926c¹depends_on_disabled_cells§runtimeÍFÖµpublished_object_keys�¸depends_on_skipped_cellsçerroredÂÙ$646bc853-b7fc-49fa-a201-ff98e8f952d4Цqueued¤logs�§running¦output†¤bodyÙ