From 138ced23ba57efd34237b816a25b83fb9f04417d Mon Sep 17 00:00:00 2001 From: Gal Leibovich Date: Sun, 8 Sep 2019 12:53:49 +0300 Subject: [PATCH] RL in Large Discrete Action Spaces - Wolpertinger Agent (#394) * Currently this is specific to the case of discretizing a continuous action space. Can easily be adapted to other case by feeding the kNN otherwise, and removing the usage of a discretizing output action filter --- docs/_images/algorithms.png | Bin 60878 -> 64957 bytes docs/_images/wolpertinger.png | Bin 0 -> 50456 bytes docs/_modules/index.html | 1 + docs/_modules/rl_coach/agents/agent.html | 15 +- .../rl_coach/agents/clipped_ppo_agent.html | 12 +- .../rl_coach/agents/wolpertinger_agent.html | 356 ++++++++++++++++++ docs/_modules/rl_coach/base_parameters.html | 8 + docs/_modules/rl_coach/core_types.html | 6 + .../rl_coach/data_stores/nfs_data_store.html | 8 +- .../rl_coach/data_stores/s3_data_store.html | 5 +- .../exploration_policies/additive_noise.html | 4 +- .../exploration_policy.html | 5 +- .../truncated_normal.html | 3 - .../partial_discrete_action_space_map.html | 3 +- .../rl_coach/memories/backend/redis.html | 11 +- .../differentiable_neural_dictionary.html | 4 +- .../kubernetes_orchestrator.html | 70 +++- docs/_modules/rl_coach/spaces.html | 6 +- docs/_sources/components/agents/index.rst.txt | 6 +- .../policy_optimization/wolpertinger.rst.txt | 56 +++ docs/components/agents/index.html | 14 +- .../policy_optimization/wolpertinger.html | 276 ++++++++++++++ docs/components/spaces.html | 2 +- docs/features/benchmarks.html | 5 +- docs/features/environments.html | 1 - docs/genindex.html | 9 + docs/objects.inv | Bin 3694 -> 3726 bytes docs/searchindex.js | 2 +- docs/test.html | 2 +- docs_raw/source/_static/img/algorithms.png | Bin 60878 -> 64957 bytes .../_static/img/design_imgs/wolpertinger.png | Bin 0 -> 50456 bytes docs_raw/source/algorithms.xml | 2 +- docs_raw/source/components/agents/index.rst | 6 +- .../policy_optimization/wolpertinger.rst | 56 +++ docs_raw/source/diagrams.xml | 2 +- rl_coach/agents/agent.py | 2 +- rl_coach/agents/wolpertinger_agent.py | 131 +++++++ rl_coach/architectures/head_parameters.py | 11 + .../tensorflow_components/heads/__init__.py | 6 +- .../heads/wolpertinger_actor_head.py | 59 +++ .../exploration_policies/additive_noise.py | 4 +- .../exploration_policy.py | 5 +- .../partial_discrete_action_space_map.py | 3 +- .../differentiable_neural_dictionary.py | 4 +- rl_coach/presets/Mujoco_Wolpertinger.py | 57 +++ rl_coach/spaces.py | 6 +- 46 files changed, 1193 insertions(+), 51 deletions(-) create mode 100644 docs/_images/wolpertinger.png create mode 100644 docs/_modules/rl_coach/agents/wolpertinger_agent.html create mode 100644 docs/_sources/components/agents/policy_optimization/wolpertinger.rst.txt create mode 100644 docs/components/agents/policy_optimization/wolpertinger.html create mode 100644 docs_raw/source/_static/img/design_imgs/wolpertinger.png create mode 100644 docs_raw/source/components/agents/policy_optimization/wolpertinger.rst create mode 100644 rl_coach/agents/wolpertinger_agent.py create mode 100644 rl_coach/architectures/tensorflow_components/heads/wolpertinger_actor_head.py create mode 100644 rl_coach/presets/Mujoco_Wolpertinger.py diff --git a/docs/_images/algorithms.png b/docs/_images/algorithms.png index 6c00f21a226c5b91c86a38287167e46323c12d5e..0849ad7ac6cf375d427194c71a0e951f59d5e182 100644 GIT binary patch literal 64957 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�(j5y~ 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®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 jCv8S~wiH zLRp`YLz|+8FT>a2kHOIytvDfP`&~oq5c^3U6a=4x&-YLxb|d2|%QzOmMHT1w9qtQ} z4)vaQPn>B4n47)sPDr*jI0Drs^>IeTnq73Rr`K!xxm>O&X#}9u6LM?qfm9JA)ll;b zpF?St5n>E)Vu>mtQ-_sp9uwyQCjA#hDpRO&X6(}2Z!IxlF?ybXuxZETo(X)5u|m8u zu_H+fi_lG%i#e}cxioSujvwT0Pdvph4YzJAjWyb!_m)x|0a9h3`O9_a5=w-P4u1VM zCKBc=@A>1V=J0n89TiE~6qBRdZH0q#5lq_fX=P;E<5#kOkMs@txW)m+^mNtRkBf z@i>xbKkKfNRW(%17%jdlon%vWF8Y*1B;ii}2$5GF!GO7+xv&T8^tAn!anZLsZIuHNnCPQH{6Q=D|i@HWzt9#gijnB4l5@ zh*2th0_4%80BfP;hnRnp80^nGkq~k>ii&+^D_i-u7GCkuKY{u@`@{=4nBTZZNtXgm~U@526&*&8kr5p2yX2_I*H^RtHA zRqLHEY20h=a@hkcgvN_NC_q~1+%CoLt`lqaiExf8={T>7xk%CMR~OC@G8ZhKu=QoC zkqbLy8q&=U;uZD#)1v4l;%+ait5y%Pthbp7$^957ix0VymT(M%ta5+QO;|<#Eq++} zUzB)=rxdu~)ES1pu`|DBXU}n^qj`cspK+f3gT&26-2G#aEsYsu*6dwya7|ztlfW1O5`*GXxAH?0c?jAk{N!T58kChm@v zo3YimW+yqr#$SDt6Ch2EhP5-dNmvWIrbWLv&=abbvC<47`+)QCeWY=l8?#oS`exdA z58h>EL5S%Kd|X-ZSgr)fRe-MLCbT_M#s73P?>%JP$n?KookSo{rc$BTa{+YTU+pPB zDzv$~QrV^J%I5WmXGHMT9{LwJcOL6XwQ7-&`m^Bf)$ez z@#z)h&KdWQBB}}RebE5{2=!RY*U09ME8Yr=08$ih+60rJd146am3$kd`xCDDA=52o zJqx9CMr6eVj}y4WRnmG*FpX7wjRuQI;((iUh)`2P23Q8uCj`k2KjDd=C8lUif%VpO zzVYGr2VN%gC%O_yacshOZK<~eC^o1!BCSExZ0&eS>Hs$Q zxc2>YDF9Ug)sPv&IW4Fu@f@&CM!G4W5T`UTkLK%=5gy>`iOXha0oV-Ie7igaAv7dI z5i-7!{+UcZ97y&?8Tf~FDt@r5B0L={6We#Jhw^K$AtuN#2^iJUxhof?qmd!41OFLC ze-|DcEnfq0U;B1VM5rUhdENtaiN{xbZRhoM58g{Bz!I+LPlt>QEQC|ep@44<3SaL$ zjlpl=vqM#1BU<`X(zBXaBO6S^$0$O>a2}NXKv8HqE!#73;LD?kFkO*w0!WlHFKQ&} zSHgB46y^KdHf9t^gTRnCr7r5dPXSAhi!~Lx| z?YwRIhlF^pEkl&GyC~jUV=*j4BHxX^q*f8L-|$3Pn!lUf`-beYKGV#rED~*nw5TvF zICcAnRf7JUH!wkL<4?dgHISsDF`x*b7GghpTRU{)cJr{i%58z3yq!YNWhd<&A;j%e zC~NrqxDOW(OIdQN87S2aC2CVlbVl&8ZwN`R`kV>@q&rA=1D6K|O_V#NrA4tukx<5W zi2DFcTk0nhN)>RV9!W7M`K1#S4W@d3ED-3_7P1+f=kA=DW3bS@k3mVoUMh45(HOEI zfUI?CFD7%tPBj#!Z@;6t;EVy;5tc+*Hy3br3;=mxxp&_KJ2h>vW%s0RdMg`?OEuUxo}v2AHEw0)IxH_J91(a@rfgz0tp6rKR#ZAW%GpA=}}UwSEttZi{=(QYydQ z5kCZB{XKHtWOAjTy)HB~6iH4_t~EC|hqh`iw_`s4L?YF7X1O1%BGKMx+MgJvmaicA z6y>%TJL5~^(&h2S!O4l#U`jL6^qn$xjW%uWr=t8n4dJ%7whp3)K}PHj*@f<>+tMLv z`Y0;#J*+C3DBNZPIP&uHVIgM6U(|e;c9xb<*x1;9i2Kle=QQXU$$B4@N=zs6sG);> zndK2Vd9cg=LfF*ZtZjWm!>GZ8gCzm7zA(R+w>VwYgG04Q{T7%|*xr0o1ihwhpL(WV zle4{xi|k^nmnsazMI+`(sidStDfs23e?Y+U>S~UH5$OeNvDqzPqC~56aWTV8sDE%U z>h33^j_V;1hVQB?HOF{6g9*VZ$XELBkb7%uK`Y%63@=`wJ%9cjUROtPUvS?OLr+XW z@jZ~wG<~=YPi1FgFlV>$u=Byt%zrn8hPXUhd%wTX{5dgwhVj=Pt*~s&*ff_8S9@`Yi8-5qrDAip>VzZI-gq_PgS5)^X@`cKB)ItV*fKxs zVPoBS3OsXI>7wMfr715a`%39?zSq4qR$!SQ0BjgJQVG@(MBy0X^E zFZUS55`QOn%Zndde9cKFpU)Ba5~#HC(}bVD?xXwA52Mlo!z*WV5V9l*?Fynfc~Xr6 zn0|ENQ}7F(=mMic97V_cZidV^)__beFE5h^u<54ifm9e(QrDXEiWEVzZSQ%r9_3D{b<)f`J=A(|aOx}X_5%%qQj-F<271TF~HFmnc3owa8hK-ywNMBmI9lW4B z(pZQ!+8>bdGYQ*OX*2XN`Iy{m?HN6!8eG%dS-=8XJQ0d`tbB&TO2$29>ZkW@{DVn{ zomHQ(^cqsnRf@9p?jrKszyRHf*Xplj@JcdU|Ku`A1PtmIb_(~a@%hS$(EWkRCJ#{` zoFu5_EBZ@Ibv9)EUf;&eRy|B)0auAqjSamnmNn;mTre4{ zCZuYsG1q9x&W3iLxNbQT^NT2Fs`PLd#kVn)VZd}YxV;SK>zs-7HysHvr?wn)x;7g~q&%=Z1=rx3`0Yv?=~wM=Gmw1p0RiOIgz0SfL+*tqaxYUMJ{9-Z zlI5XvrWmoC{sg{I|8B!3hZ@Y=sofW74w5h8nAMC2Zc@Mu?l3&@lU{8p3vhn`W*(;- zvF9~f>!<=7513&R`Tqz0-z@c^%H&1>aWPpb$7|Sh3zjKcVps_8E$8X&-w13My7oRH zhe)uG>p3cK_+;d$YvteH_G{Cox7gSRN7M3eVdEck<@tUkX3azs3cqpddh&!*jVATX zE)ub`iXAfwlW{zp&SR!9f|x@Jmsd?ffc=eDTiJ9a>C~3Z%0`|Y-pZCRzLyq_Xuq!8SFMsNU3}Vhf0uq2fbM#CA^4+&FA*bA z2VvcD!o{PK`2lrDq>(}Uo^HV_l)OeKe3(N-i1_-+nL|oQ7Kbqqbc6}=qtgKKdavgg z0KH$n{mS4H&B9arAs(lO`i5?u>th!@x|je6I9lQ#UGA?sg*3yA_YT-#_+)H>%RZ5h zD6047o_f^XM)jW4=e(=Iv-s198y?T{Ldhc&wTwp+hagVMu4&xiBzxOpa@jF^gs+rS1kt=O7z@xA|%6c;`|@!1B`O zqweKjY)HjDYSm_^Lkni7tsO>~P6gexqbWt}O%;+pFgQ3{HA2ST3PgRJKhQa!>Js~V z6t$C?=>6T#%N!WYylLp?o!*}7?FtzlIeVZa80)z_pDdTA#RnDyhe1T=HBl$BhCe*< zwZGYJN|yeryS9M{k(=R|LF&QGF=2QDD^|#BB2bGHG(G`PL5ATL>&B{Azf&04tR~7| zX)eZUAu`0hdcIA|J8TU|1Czkiuoy)*K)Du)U^E(Qoyuu5IWXmshTfaYWO5bZpxdrh5^E=>#d-&7~~+mp3x?PgEdKdZ+FzVM;T zNVzQsKV+A~_K&dd+%Rwg%Q{h80I%Pu>5U4F_@>`;(O?{gl!Q_&L^Y{Fqc^U;h({O~ zdJj&hdf8_xHa^Z6GDHO8wf}P~1jnl0NU6aj3tYd&k?fDTLd=k2W2gbE;PKzCZ_o&b z>nj`fk@NH`YI0V5c9`(#cIX|$)#^}`@aAZ7LDK%n;d|BAFM`!hR*bFs4W^iVTI?}o z_?pJkbEYf7e=o5&Mw&J8MSPBQ+nu&=Ug6;4jv}&o;pw7>%GRI;N!=>L3ADdM-|@X> zPCHhyl>=?Aq(8LHnMGwVUe#yJ6AOC?6YK~*qEIq;(zf)0hY(god|UY|fuDkfC>VgG z!8Om1SeU2@kgkQ-!k~SDN?Oba@+WzL#?j*P#3`v?pMr)zbIHbY7P4PDzS0~p$ZGja zIol`10k<8?G;b2s>!VBjz4!zs-ax(%}K@uGI^ zZ!!(Y?P~`1j5-?mje0AiUERD2keAE;BJKO$+Z*|{qf53;L~|-RA}&Ok#FrWLy;S{7 z96V}(4eW$2H~J8J+A7KIy?!5X<5IuP^5*J+M~5^X20@eY@+zE%wQq24{Px&ALb=f; z%?8URlEk56noVUS!&K$7Rpi?^HMP2#mvQ>&$i)dghDF2NBbnH5;&xwTY%%72obMUr zXc~W}*!F$a(SaD17K!^DT?Q5hmEazu%Mw1}e{5+xZb7EV7*c1quyV77zv3~({xs`L z7Hc-sLM2#UAxV_3L$V_?;qCm*SiIz0HXGL8UuhxKkb$S-)Tvr_h@b9b#e*|PeOtl> zUte01W^Dl;8rj)l7sx1SgJku)dl@jZb^rOr`aQb}&;%d+;w4mk<9@o5aE7(u-?oll zSik?Jx9~0}$i?aSO>7>cNQOsvIWIiAxiVK{Cv!9a!<4PD0N4 z?QWMM@!^hRiBM_x`R}?vWOA!r%a4s)Cw>%nKs!I}vTE~aEe;!0yIUC2x|N;uztY%_ zpE<(PljVho8;FmWk4O+GPYRkrpRn0jF)+nEQl7BTL=YhFneLW5Lmd8wjzB6?Q)gd_ z`n=UfCxD3Zj+F>^YI8PZJ4X{hv}@LXXUM`xi)dRtKeVs7m_G8~>*o1hZJ3>4Q7$Q( z^{J?9)t2Ep>d#LmogwRAT5mF3i?f|OXF&B!UWB7v->P=yr^nta2DBPQts*sE>m;7O<}B%Ce)X_z{?m+RpS<-9_CxlVP_NS=Z!= z0G(*VJE*l{iFOHIKF1H%KC$X=>0)L=&UVu|E$Nzb>PKNWp9X57vo(xl+fywD{D+g+ zH4!nKq153gI4`2|iqyu;)gAZ6v*}?lm`a_s-r?uJr0OD{p7rH5R|0|fpAAd=G*4*_ zv3>JLjsC=`t7N16>u;{Oi>lj68Mcw~I|FG^0o81&QSDqZQ&*{aP`9?Wc8Z~lcu4LS zqFc0n1s`0gRW`4)<#}0?p%vfwBDK3-5VE^L~8p}J$wR!F64K+u3O*S-``|r zL%b#3+s??_FsjxE!gD|7?3-I;JwV6z8|o$=4?uJR6_LXHQeg>;*wXMHs6;PNf8zKL zqJmN-^u`E({{yXF55I}(;G2luQic{!&b+MP^1~L%eexgR`8T15>HmkG{~PG}e+=bg z{&Yt{Nr+DYCo@Y4MD${j46@N*_v7a0=9snw!w`T%s62SGT}BBi zZ+t^|Cz&yt338bNF^wlTAErW75=0NUBvAOLowwoS1k4sJztmxx9ZUcb0iAB#*0f~nurj91BR%?0xo{|yF6c} z*R-^^7k!GH?C*Sj_U;RCgucnsl%rB24!?0O>kq({>MNow%^rB;4<^es=@~Q0KvT_wJpcogL?$@_iJ&I2{KE$Nz)*rCVX=olsGaGpXdf zs3<})pSvIJ=0jr-OdcChFr#BeTgG5z=;-L(Q(=#pd+HrlT{Ub@K2Z8d1lJt$PMS+S zz~EQ8cK?J9GE%1nsPdVg8K_@Os>em8s*wmEe^sOAaE*UDw7HTm`9z3t0FL;`v<9^T zbPWOCuHj*2w>YiM$Oj3adBt#-`U17wGvfeDsp2nVY4MggYk>WA3mTv1$Jhk~3DMc~ zpf>COBv8aDpT8@O{_3JWC0wQc3{u=|p$d!ne5IuHpb!Xkw_kyM`T6vdBc#YRf29b~ z!%DyX66W4Xn`U`LbA?_mCjQPh3OYW z>_6jbOMSl4bY=i(%5OR2Z^HBh{Q9tlUI=JR@ za8z1i>OV1HTo90WwT)`aasK7)qQ`(}S@YA{faE_pnOUe)+bU?f^~HZw2qmZBnsK}; zFKM7W1gH>cn}C>4W_BI^Ak@PXg#Z!s6WhQU8KC3?Dg-neP$4vvcG=$jQz5pc02QM2 z&8$}7e+CW%B30W6cPAt`F#Np@d+F;~7S$KHGKO(iKuOsQgiPhRI{T+w`CW_GAEU6R zXE58t|<;LZ_)S2QcAwx=iyqkq1zUil&pF>cyQ72I5JI;e7CVS3XwzNCA-p| zj=srLO^g+}NpF)uOYLlU6#9xqKVN`vcQN$1fFn~YRsTa86YtQRu+363lQnQ*0q#*f z%xf96v)JNBY_omqBOH{D?qPh8B)L-j{+h@Lw7;y4@2EK-dCPR_!s_3v;^)d7U_zQ;Tbu>*wB?EXpax}Uf&Sz^#1>ChoJV5Z&{B&=h;ewboyR8LL zr%xK$fZ6*P)S0p>yEc?FvOa%SrsdT*fs8fqT8)=Jk6zTS^Q4WgrJyxa@ zBVk+n#RiFaPd9Zk$<%!28DN|j-tjyFU6WJqb~fR(vx&IEDVl9>p&nnyLnppWx*K%A}WJol1xF_bZasN!I0QBU^5k+6j0~g8Q zE1L=2h{<5kNKyY8Bg6hQ`$O1^l}4_Bo|Um)WsAiYS|u8>SL@0p-YNJ0H(pF}L@{Ky zf^$cc{x7IV9)b#n4NI-D2^ZD5?@2^Yjpb2RiXYS?A}i5)V(4*y)=Av zY3@)dWTTD!K0;JA{FOn&k6JP1JaVf=^wx;`j20J}_9nA1ZR4^OnOmiK!7!PGA32@| z$AXp`)h4QsWn+y9-@x*e-aVWSBr389Ki}}?D=wOo8~(a<-TM3+`*DepsP-ho-SJGm zV)7y;8Owz-Dy&EvU$tH(@E>>vn=TkUbG4n9yRQ^zg|JSdNste~oorK{c&>IQ5 z!aA8%vaH-*Yd7I6wt2}0gcD*KZmpY@y7Q{GfC!Di!(sCR@N1L@_F*t-sg6BHt|+}l zW7;+8p?n)vLQ!rsJ7dG5(fYDSfj)pg-EIW_iQ(`vWgenZYfQxs!~Fx!kC7>BZm>Vz zW(OFA{P>^w;k}Tw7FsN4+EDxg&TP%w6i~HUY*@~(hhv}NPXO8Cz1zi!wR^KC+(Hpm z!Y8>KT%!vAfcpAJ1rEfyv?s|A3=ZV&fI+Itj3aZjV%j@KQM0nL3X|Ht`LcF2-iO|? zq}K#)@<6r}-dY_#{`%gdaVhjVmeNQsPenu3J2SzlR##kkuhro)7%nfyp<5%NQ=I(P zh4gH9Dnyyy(-2}8LTo2)cxP}t(qKtp@+%&djz2mA$(h#j@|nkZ5A9sru|!j)e$6Up zeEBDRfVt}4NdO8~7jLyYP){%Sg@#p%Z!BN#iG$xO>#8nF8F;O7aMpbJ%*c91On~LypvHC+b$*D&H-uod&G~d4|jE|ceBB$20 zeZ+P0>S?IecKxVmqgJu*$G4>m3MZ4Wlts6; z_od%zy3gO5J|cA0akdV_t?FeEU;&||*)DZsAc=-(9gh1H)g6nmCJE((T5|4b0@^af zzpM?0t>i_lPRbG&#mBw=%x$xqQuevdytJOHsHo;YgqjdlbmC8$q=(U@O)52@-eu~2 zmc7GohwgEsLj6zwi-?dpzjK7nH9eM5qRYYr zIl*mb^P&oE3>xe;@Lkd1`Id&IpQXpni(t#wml3rXB#&XlH(rkz?kJxtkidN~?%LNJ z#WUI#02u@i5Frl^?Bj=ZBq0%2V;E|K{UR7s$Hc=OeSLU2*pWSVX?wqPo)KH|7e@J< z(fDpS0tC5xeXUTp>Pt1;`*ekDTgxIdEd#76tJ<2yXMBX?v^W2|OV#8-jaQZgmiy_w zGlu&o|Ma9x=i4=25sw>%>zehb?!{8r7GV$ZzL=rmq~uBwzSYUgFfgC&;jbTNWb$lV zTj2bNN(^5ALdOW1sYcsbJNo&tW`Ue!3_X5_A*r_(+6KbqxbK;9nog#>dnvlu4pQ9f z9Q$RG8vdGZ1<;|>`~ip7A`~*_8yvJyn)K?NDTToV+li%YVi~(a_=Kta z0FA^J#X6C=C%Nt7L{sDUc8bZsiWS0s$fnjWudQmXn1791p;{%#k?sC+>O80#Ha8hg z&@=yqd5iP20KDM;C|3A?38avrBUAOw9aetRnaIUHUUR&k>xiOeGi1T!5V^(PztPWhZq;P@ zR@9s|@N{D6KeEHrp#6jHFq{+YWLJv%7W2SSi`y1UOM(l2cIFdiGwEadNx8jNIb~+a zxKh%Tb%|m#z{Q(0_Sa9+`MxN>G)1|pC;k9{gTKN;JPB4)K3~2{RXd6fRcQA3vdgPK zcP2Bxx85N4wlbM)xX*$9y#qYDNxiS}%Ve1z zP&@6tIz=Y%I$#bb0@GP~fUxv&ZoO~-H8W8s8QE}eL7yfWmBuObA-mw3`u})@V5j!N zAy=}?1J$sr^rJ#B#pxFSKZJhgHY)*j_U;EtlJx%-Q}=x*qJP;Iyu2_od|gyZ7@SBs zpS!F?{m7R2?mQu%D#E}$V=4{MI9%?N2MVS!3MY!e=`aSsoo^Ig`#C4tGn>;9F-)3_q z!gDPRA!%qTKrNCttl8uAgpk{G5Css$1$<8M%6>G5J?HU=7^RzY^+#ho`tY{$X0Uid zLgIkp!s}d80-j+%wZO!?O>P}Ba3=Uy9F?rY#C0tX(=9Ae8aapUfzdmBByUC6emW) z!h*$m*P7%hY53QXM+B6k^gvSi>cU4oD%@D^fSj;wK4@UGnwsyA@zZz#VQ@FR0Fn`KqdG+G2d#(HN;q2FUOD?>y&f)ZS{Bj=pBlXe5=%&C|+AveSVV#MjRchLWi3L z@&`g5#GNRecC+rK`5IVb%OVy~NH8`~AyI{^F#4-46MZnV;oRR$Y8M{dzLH%c<`SAH zzb4-AE!n0tmSl_tyVOZU;SiMZ^}_4~xM7M1=mouB!~Ja$t*(9sN|6LK_X3WU~5zqQCi{tr`_LW?U&b# z{tl~SVbb*d7UpI;vz7SnC*XKPVCyl@UBP@rf9E$TE#m1y1`sys%N^+7eR~2r?gvgO z-H{@p*dEOZ)5s{7Bs-wlHZ*wV*SbqdN*bK`)qaYRf1jDg`+BvY5{0xNaE62bYq7}> zpHK9z20uINv@i;Br`Bg4ST#+jcFaZLyEe2*S&21ArI?cX5@I5AV@HokUemO>Qx{LGHtJSwD_E*`b$}qIp^Y1 z&%EsBVhvfM0)18v9&R1=1C}}80f;MQRv-q_*W4WFY$uIOuXs|GSQfA!@L0fW3(Ksj zthZOWHAw`Rs39*mu=DT?cD@A;RZb zSxL3_ytTW+;YW=4;M3;A4{3ePXV~Td5P?eh{chxfLF2`q|Gdfon~xSAKbjM0#MMYW z?TKG*Ib>j=1e-Ok%$Iil0>L;~zq3boh|Xra#gI%@JF)5mBraQH7VfsCzGE*QZFX9+ zx{$L0YMQ6*H;;NZ`8;lUN1Y6xiFiWwvzrqb7;P;!jLV|~j^KKSOM-yZ?!9;UUL;UE zNLDj@5@2&=@-E5_b5uXTa;Yhas{{{y00(i-$KSHn1JvxSE~3wyz@VuZYja|>JgRX zchgX5R4{9u`%8=P8Zq?#>@|^q>xzhbja|4prj_C9w^!LOv;ClQ9>N!%cmCmd5!tKl zxc0@`L|bF|J(4lU0u2z%+I?ZxR$G;lZ*z{~;XV(rdG2wd7D7md<#~rT&)SSeUwA^* z`yQukXHoE>_TlJP{avYf?S!InA49!j3)E^PzY+|_V=fo7+i(61eD&61-khLpp^>wX zNj{%YcGQ0zTF>!tEEw<<5I{>=&Iv9mqC)YsH|E(W<44lesm7JtUgck3Ikwr(4Q^Ur znBp~o$`ioY4{aLJZdB8NgcnWn2@TlM7n08Z);xWR07A>q1;ii=&u$MuzxqX?z^Rc5 z{ciyc2rnMn+%Rb5qlX58f$IMR;+ruRX_^d0Ujz{}#I4`Je&C zvoP&ExbCTE)N+3C>PLg;V=W?>EGadF9mdAH7wveh88KR1w;2`Jq#3TaOT(SpJ?IfL zS|N@8Xa|3-KTKLpH@n&X-PbF}X)K`dZZx;FSE$p1=3T>IZ!Y|HYukUQ^l7&B;X487 zVdIoxk;0*W62H-#Uz{`7Ii@+SVPAuR)B#1$8g5m46hRy4?IAGro`AtSctaAHk|4Lba@tg=o}Z+dC0$ax(l>ZL1$X5RR{Z?Z_xAVXzPNMSg%6qY zy}l@gM#`yFQ$BRG!4&;(*^~nExV-Y5nupr4hxjM;{`sbW{R@u9a+2fxTR98ncBt^2 zYRMO>T?4eY_jUZl(j|mj?!DmD3;Y~~fT4O9<7=OFS&tN{f3Y3S^5!!?5dD9U=t!!Z zYd=kwYM>$B%{H4L+YbT)QPRkbQ;byhtC8KsC@&*gdXrjR37v0GnG?&VIYhP>OKUE~ zX&*_H{1h$O2rakdZT0F_h%cM`I2CHm$qn10z$!H!)@#75Q}j@I>0`^TZvI+7V1Q~2 zVx(yL2<>8pcNWtZH>KL=v^>gCk!?|*HpOVIXFhvDvBYbT6E#ZDpEpfvtQ^Aj7AZy( zr|X{e!EesE)ga?Xw5G#TpT*d*4=G((3;SMO=`YpR?}J((8>%?F?c$!GYXxEo8LD3RcNXU1_Ui(ADy^D+h)`;7p2rJNU_&u zP`8mtSaXOJu8B^0zzMr;!wQ|)8q7(>q=^u&>CNG3GR&x(@!63M<}Ho>O^mjKO>bZ# zmw}aKWVAV%N0xF*8Lb&*1u+uMwqvFda*(tRYBZbm)@^klR(C0=*xmgm`}s4oa-uqH zh!?J8VsuE~gaJ_$_vf|2(-80}qcqyR-D8j&-$E%zVmn-|KnYUb5O189%5?Y4JM@A} z1SW!`8FB&$-|{;9AH+F&WKS^3Zw0S#QV_!I=od+MZ(L1jc`q*sWN3{Hvuz#xYqS*w zE`1{Q2*mZSzGCWKt1i~rEr#FI(9*_=dAYYR#<@qR7YnLU1wQ*|b0orVJ?$aYo}w8x zdrlt^1vU1(xsh&v$qh4aD5GFAo2(HIWJ*ckolb5vOehp&mW#(hZ>l5LNt7{<;kzTo z$CusPiMH3Pdz{RZ|6XE=*wxw~c;8Q4%FXXiIqEE*Ll2fY)$86Ho=nNpuknNK{TgX8 z``Dh_Z%2*btKAw(BU;j@SOu)6_u$D%PFC2KO2E5I<6x+iR3M6DkCWvia=Pg2m<(_P z(n-~2(Q7FXkfa8MG~_&%_lFXyM(RrNh<#ZfcqNv?1;)x( z&Y;Unjf;Dn!V3v@-kre}P!)FBqiKX9vFz;ZY!j*`T|~EJ+6OOBI-|9+PcB97>efhCDZDXG~2f1(zN*U z$Bu=zy*&;L_PTr3o72FflS}Q21-!WeadHMXM%Svg93Om+kHO#Q5998}4-3HGL_v3# z8ver_dl0bxA&+8kH8l2if-+1gb+hMw{zhyrBZ4!1Hj_gLcl$NFQ*v$XF#5i{>%|#f zpLuxz-ZXL>TKYrixKCSY^rD>8AsE`|w53vKtA~M&z1o++=6ZR=SZO}YaYy^)Np29d zKq*Z^d_Xx}gd{_?$$l9voSdB%fZanG;^K1OIoO}w4~yT2iUBpVZhD^^zsJl0R2>8*N3 zooGbe-}XdN7sP2E2Gy87n%ID}*O^QFqL84?8k<^2Y;CQYyI!6!{&KVpt-jPd#2{Ii3_CKqBLWIF%;j)SID zW*L@_8JaC@jkLZ$5ZLrl8l5tK0dn5uBxsQ${{1$m;K*4wLxR&n^-SJCnTdZN6m-R$&~GH zw5y_RpYHALS&Xf35SqEqB9!i_?Sqe1(*HA}N&W($bE%C+NiveStH&(tjWw(1lymA<-L)8RD5du<(FJ7r z;{n3LcRmr9W5%qve@|yj<9xo zI~lvv%E&-^ahK)9!78)Wie0eb&C++*0a^Qtq1_*X1L$bs*Il5VYa z^3Vc}u(N{oAE~D8Jf$@44dlv9tWjyxmq|{8-l%^55l2JidCpH3%KzLfqPGK$tt(cO z#O0GT$1&gEZ@p+s#n_Edyaq#R6%yQku46$G&QX^xu?j8dzl9nWt;NQ8;X?{-98m>@ zC3i<8#JszgaQ_|5mr?vM`2ZIdnt)I)|%=$1}9(XX(t>ksmC)APQJkOv5^clPdjz>45P~A97F}2K~Et*c$J=9@S z0&Q?Msxj1539jj88?TkqoRIU(c{!v!UX(uX>s8XJ7Y~ zt}wJ8)wpAR=;Fg|$A^cK%RhrKziv&O0QXv`4>7IKlh2hVBzAB9Kvsb!3kup5Eugd@Qqj@2ke!Ex|&!6>Oboo@LMy0Wx z>mW?8z~P*=gLCH)Avcb~lKq6!AOB+ir3Emba`!Pjx0!0o6{!78d)Q0>Ht|;KjZpuUasx6F$m%z|1us0O~I?CRXiF|JN(X|IQ|!Fgm# zJo8AdDhB5^^=iy2^_dd2(AMk#E`oe7sO#j2_u}5K=4xni?pj<(MNZ*)_NeG*<)DXc zkn!)KLipU@)(Ma?HOf3{^EfXPNQ~&C075w7jp(H$n}hbNvCHsSBgI~qJh=q9q#Pms z(v&Sv>0*a5BA@-mw#hOWFPohgCO{iYk}R(Q4@$)8lOVb+r?l)taNC7uL6-XJ@O*~) z!XTiF+j_dvxJEH%Z8TQ5dL>`x)*^MB$9%{_Yr%=(TlCfTVq4oqjBl&kv6(7*0S{%J z_4Esra=(^*f}d~%|G@fmhLO!&J=cF;w{+tos{1B(JY{Q4v|mAE z&x$7p9%vR*6VHC?Xgm+4x>&g<6P}M@P#%J@Xg}j`tZ|T;-zIZ9;xoVOv6zOFn?=z+ zQ`)VtXNdxc;Bw3myHlfn2B7?VjfeXf1Ve9l9B$zx}Qv0gOb5lVD)qT_bO?Zk@tf%IW>sb8gtA^*nZr zqt7dDty9kG5_a;}BZ7w9eE(I;W>Ui_jI? zfkCpw$Pi_N?BmRju4|`6^x~J{8jjoXXGxWYWB}_9htAHALVuYQF6uvqI|JHN4z?3n z#gJw`Njc2TR57d@j-dG9eilOkvxKP6Fvjp1JQZ<0@G*RV4FP**U zWgEa#Rp<$PPr%T>5NxL_A|22B7M{M=s1M8c3F4iE<>b?~*>ap1f{=#GJ=^gos*#Ij0RWxwQ;5Z-Iku{J8iRj}Y0fHD@pihL#oUd8t;On(ri zM97d{EgDfGdM0!hM+wl7Nmz^^HPKXG`4Us155CTWIahqN0up(Vgw%YYpKwvVW@~MX zF_kh#hul-@D2CI7nTeP-|K#C2@6G)Nj%}aW%)_y5|F2^Uc+ghzdCZa{2agUH~-WAQD(gsA)Cg8@>a2=z605b21gbfMTe4 zWN5~um7_=e8moEe6GW}8tq=C*g)05P zf1^^n_`z!N&Y5~Ypx&ot=Or6QgQ#X?oyfEVYI*$tnpKBYV-wMYZcmg%G(wZPO{Kit z7n_;g6ba6L29~dgnqG$)EM>_kQMYI0D+v#Z_k4gBxcSul`n#ULWOn zy!+zqq`Wc^K><5GjH;D9Jvn(YoBM~b`&U#t+H(oWkYVHvm8jmk*^)oJhw~g0u=FbL z8rpgu4f?Rh02ztJRWZN4Oe)ZQkTPu|=iWYrMR6rh^}JyQjp?c{+@lQhzdPNfdPG7q zdqO(2;q;-*hU1wzb0O{1U*7uvaM-u_e@M+f66o0KSk1&d{fC68fP!am zpP2wwr}lZ~LzSS>Tz<|2NR4HB{;l7PNJ#%-jC-O~2!~0I4!z5Z4zS5^GHqDt z<5ew?L6a+CUf*{)dq=*mz<+(ve^ssdC=nH}ax;gqUFZp7-ZPJ6$$C8WfEC1~$>cpv zINazGCn2Trhj5m&ejuDLcxb&xrn5Wj{|3sl&bWJhE(`l3g_S%nelm2W=GQvc;t=9W zf3Uy-TGwLe(A{6w3sM^c+U>s=Bz(XNlBp-3rZ(PtG%WqPV^B4-u>nT`?Ovo=z4zK{t-aI#u`8KwCaRNkR^{JH~DzWN}|El)yZX(T?G&W_0FfVLEJ_E6J{0vmtu)K^!Mhk z<6K>UDonTKlcmxBozr@gNXWGSg^vbuj%s)g_)?W8^*WS;U!7huJX{JZZc+-txbko7 z9zpo5iUj+asi=;vtew1KnS@zVROXc{?!gths}EBCK~rLVg?wbl$ynw` zYYeBUP>ziF!x=arj)<`V?nWNV$V)ZDJp`9riB%uN?aT_B4vP>#`ovm_7N8_n! zUWu>XBP8%_#;_UsOz@BXm@RWUe@o$4WE-`xoK25`b%jykMg47uBhLrfeKsP+@E=&N z-3wog93&EtPZ0AtZG4R=>15T(ljQoOXqd10Jcyre;q60O@i#n>t+pM-;#rlaO+(6r z9qOb1!mm9JXhdcyc87A{JwktZ5Yqzc4h1Py_A`C0ws}q`l)1U|kfOQZZ;I)Jc{RvZ zSlbuV+_YH#I5PlJV8<&62MHkM_ts|~Rfo_$e?SWf91B9McyF-vqON8FU9@4wU%<;L zua^Z@1bt`awZtz1_l*Z04R3w~zVXS%5TEnT6U9_M{N3iNl|B$oQm(L4M?pbpYHvpc z9^iPltb`Ls73UKiZd-v~6(^HN&{)$~XFVxK#%AWvMsx%hGYt=qXWnw`+KjtT2Vn8t)fB;$scoQ#N4~)ufrip;Gx+9!~({7~;A3Pm7iPKzqy+18R z*u&X+q8Jew4Z8`b*4rC%6;guQJ`Czq|DSGIMGW4#^U|<*);h zl`N^SrSB0m#tH>ngr}JgPW(-@HRmDlTx*Cx4+r z`Hw4Q{!nXwrkW7M+$6SPh4veR)H~BvN@58OGRzwyURMhs`d~4d7jsebI))}sy@2TE z=4N4IBc#Nnvt@dkj8Q55QIqq>k1fFSDDk>>{=x*LefetQRUc-H&3cKT`n4KO!VnnL zeLGuHtH6^@%;_hw_1j0%m7$PRnEX7J(15ep;JA$PSBC%r8&ofL-d{bt)dP8`L!w8@DQd6GK#XlN_;F6?WOvo0y))(#jBY!Hs89Cn&H}Qd0WD zqD_F}jl@})�LCj7r3~1w};!gcoSH#*5g!@xRL_y|wjvgtTpj?OoR+~07JD1^!74Q zPciwt+*K*N1IZqP`Zsq`YaWMh>+oN3d{k zBub`sqlf2+a-EAl{rK^t__8xEX~N-vE_cP^knp>s#MZShRA5K3E9H-&0xKQG&RVn89RKG#zH5>cKDSOpH25WS9Td09W1E(35Sl*YP&A)}XRh-$<=VDt)c1!hMkX-Ba&Sj3uUx8fo8}>+qpO+{tcy4bX%w-) zX~7o3Y9ESu9NRMWgfK*?W4y?)JzqHIY-QO-=&%|m_zQmwzxoH0TE=cy<4ofxoOUcU zG&JRBm{Y3-37vH%kByJ*nBJN}q8w3!H-toP-$7w@y#0pt5kmZBOKU@YAUPtvzAgH1 zFqntJsG86+be>j<8p-f zU~Ip@nMHtCg(9bq%%6T!Z^%mbO0L-XtzO?Y*s&AtQHqc`1;0j1wf_ z(jpog1y(m~8=WpPjqnlFWQ2-3LHz8)e6VG9t{?7i`qv{~0S#%sMOxy-dkw@mV5I0?!mXbi zS4TzI_+YI*<;~0TC@tChDYXXPZvykO)`7_dYlvxeS`}vO?zkyIwTzXS$_;w1S4-SS zYF0s_oj7d=4QY<0hdZvqpHQ!h^u5&gxSm7DrQb5nl4FJjWIDCWz^$My zh56^~o&sCHoKjawCP!CT}AE&&E zf3C`4ko*iE7J}gyD5FocLCf)oBG3|@+VR-S!=i6y6NT2zXvA$#JZF3Pjm z>Rs0vHe&M-|0#k~ceS#4mIFon&|lPKTGMQ-;Ndse?+TourHUgE_d;a13z7Dj%lVHlt2jw<<$mBGL z>*jbNmL}kIur5)FCbMnl8{U~I)?Upv zc#%;EIEH*>2n}*_eP~z7sy3hA!lo*0%EUAI;uPY3r(PQ$zW^NDM}Otr$sPNQ6u(`*V0ho+Il%QkMMl;a|Et-1q&k|GH*uVeWhZ#pdEF-%w*eU z@-1wG6G_Nu_al%X`V6mvpRnlHs0j(b%I$nuj5!QM+}jye`FV67P59LIl|qX)OB%jR zPPOoOJ*F#Fe4M>v+??_7;11hUxGJ>sIPdfNPq}_n7AOu0Q(0;I-}@SyAwx{$6O1X; z%@DU`!lWp4M>fz*mrRplp4nT`y|E5Hh%Umwy9|%sH^7J-joKRNnpSGk+58J0ItD-) zFo4S4vAGWp$<++deb1i)bQ?0M+qh=v|DU8ayA3jiry;QTmfIF2F z$KfvZNo>^v3*)f;7P5Z0)-610Gxy+i>Z=((wOpnLgXxqrS$~yFU^jUM2!0nw7St-Y7LQc6Ew|ZPJH>Rwx374aT;ZUp8G#*PXxZJ z+Uf1xQ%1@i-yeaG(bTV1tHMmD!i-r*nr^levWyfQL@rlsXAT4cR$$K;)P5tYF|~^H zvhLe$?@_c0I2Uewy({rZ!GE|C92=>w!s-$?!5(Xm7gP}*ATeNYx-}-J;Ndb_SP-s1 z+|nXZe0F3Fq?l6uj)5vHa@=AJ*ET@b{RGw+6{JJqr(2}B7&st2G5K9`yfoV=>Dis_ zWHJYk{pF~Mo|QaChs3t^-lJ9;-n)g$_I%$|W-!;MtCGd9)p@YhTpY~R!bRZScso=K`?Mxw zfzW_*)xbqqAcgq+WOC7q3H|YzG zpiZ6Ocetpt({v6b_~cU0%Divg<1U+!$uvR9GyBs!N)K~Him{>g!}|_Y0)kW{Ot9td zDQ0S6vPwO8WRdwgQ`rLRQSbs=`}2o0)M7(M&HjQY@7m4-66Z8?@J(+We_V(2=94E3gYr4GLhuQ$0R%J>%0mBpNGi!H!qlT zwK`twE3oykvdx6IPo7ZAaRRB&KWT!R=hKef-rlySbYi72!o-F??s|{&^q)f(SJkz( z#{l68S zgW^j7H37My7?72jn4H`s44%??;s??)%fKc+5lY-Et1KR6P+(+Z!v)NMW>7}VNmP)S zkWkfZbNGh}+Mgs-8w4(|8VjvuK%3xqb#=u?KfppLnU9dpm{grs!<=dGO4&Dr{gfy& zD)%=dC>*o$sdYPE`wo)i?Ie7Lu@!y`-<_9BVHBW}nUj;VGh5M^Rj&mXX|KoU1U05n zT=V|a=SK_80j~;mtLDV`SQ5k%H41K(vWHR+kB?1kV`m|Jn=5Cc^=K%j%fBb=u>7k`%yb2xLZOnx;-vbgg)Ljp>$h1b#$ z7TH{}KpYYlA?MpsxdLtGMvAaE5a?tqa;2wxKuD#{jIBnzcl{i_aoplXf!LnBg>tp; z8}rQK=lBPrPd|~Jrq9K6XBO>MYFyOktCuLRY>Q+Rl_8!_D?jsiIrHv+G_Qt4CPl%d6DFq-7B@Of-K z2~Bubu!W4$tyAH+MVM$>h{uXN6${1jW%v;mTWTQW!bC&UV!wNYntIQUFt*LrmN$PF zR2IfO#rrd~fA-pFDD`JznIrAe^3sd5T<_nWo8+EHL~SAVKAG~DOdC@*xQc0f;r@YP zCYx8Y7;d*5?aq_~yFEV~5_wGs?y&fR-qH8ARLv`YDb$MKJ)UpCA7O}iwK2_WF_R@6 z6p{SNR)AMlAZotH=E+PIb56guAIoH^$^G7LB8M?ux{$Z;8+C~BNgK({I^^s1;^auD ztE=b}kbRUIBKYyr?TWzleb+P8Q%0M-QXY(y8AUosHA>@PhG`*z5xtr4`-^j}GHVg( zdl6(2w+BX}gZl@kytfDHQ4P;hXEA?S4rh(K1PuMur7X`ke2V(uu~Y`4sQn?U?hE8= zB!9czBdL>}35+sgTd^NjPJ_RtOCC-C7>M3ProqX7Bz@V#J$P4OFj3+p9JzDe8QDr~ z&$;m+8OHKih44c5*ANGX966w-AlcC?z_KxQiAq=e3 zCTF9V7+79mW4d_8Ylh1&AU&?wPXy51j)^;pM9(`lg&QOqsk5urO;%3}gYB%CPnVcc6iI)D&i9!KTVBzW?+xO};O?x&?^f$lzm8*Iwbf-R zLhrceCsv2Rl%~)yYe*BVYI6z&ykF2d{~~oFMI^;JyS8l|^qzg_%A4AIx|2kxRliDQ z>$BA5E#&P;=|oofS|BP#SD?YX&$Qltmm^ic8)Msre0kS)zAjRFEOcqm$EDb~j{t>S z^vfeiPn+Sv#iFo$Qd!Hll^7^a3quuQw+@>)_$E*y=pc;d#5Y1`O5T-N=ExUkG7I$> zk9t=_^<|J^7=5VO4py(EHKY$6hNYZzot7SerGZ919eS32|Q9jX%z z>pg)W-1A^zj)L7GW&B?*0NeH=vU?M!1Veawmk8p{z08sD_DboU$FPNI|5jjz&utiQ zr29E;d;Q3}kv&zu;&nqIZ`Tabjp9~Y80Bx*J+6D^rsx1u8w~DAuh+0rd~Xp1n}9qN zt<9cf8(R6qtxlO*?=c$rYp+K>rP1oJ+DHTGbWc?KwH5peXB)qJe}fhnj7X=D=*O|! zyP;$X&wHJ7l;zt6-Jg}r`oBIB#DKE&*&o`G5`|1KNkKXJ1wr1yI%i9^ZPc>+wy~z; z#Ii5-{FHW^Hzc6^HpVKGx>8B$T(y(%Fa7F}B&_k{Gx2exA*jZ4y$0gu^EPe6*&ARd zSl>9c#zMzdv0^LU_{JxkRz?&Y?l)rW8J{;EjxYI49p?ytRifyDwHt!Za17?hrE*k@>7VHL6w?I!9#?!{_viF=-`eC#v@jiu=<6;FHni1$ ztduJC8X;BtWq|I}uM>nH;BGQfV|L?GvCZ4=*jQob`0>x*XQTM>86Dk9isujFd;$9p_6y} z=K(&=+nVgrtRDRXk;$`f&QH1}R=PHiyKnn!=RY+Gr=joPS37qr9jpu?|MqZgX>Wf# zq@ofM8R?(mAuva`a?0GWnsse3&VK0@+xf0)qXZqFVSh!vF4hv5Bw5vuEU^`)YC+s| z+GHKOVfCZYr_nKl4Xy@O2+>f5(g$F=O@M7i(UR4soZBC$B4*O~`E%HUm6@e`itZ9@ z4B-Hy5G;7B;(22keMsLS8T{@}9pC@TSe52rKc?XK@xkL-Ue6||IJY?geKs6wgeSo- zu+63TW0N~(fX)@^R+=kw<@k#!?Q;tQ;{gpFd2^J(F{NdB9+$)GLIfJqM*vyIzXbLR z<&P*U+C_>;fQnSt&p?>feIobwGdsf6NgXBGQVsrN&- zNMcGCxiN;C&Q|_3k0~*eC1!c~A$04k(!T=6thi}0>ANoCw*fjrzR%L+0swGKz;A;^ zo^Hze7ruc#4Zykd1K2@twxw3-wEUs< z2rH=3h`vBW#X?_qd)<>{-;2J0=_`zoLzhCO@0k#5v-~Fjz~oe^_)|Uv)_J*PFM%yq zgmDDdyg$8fTSU(pMZ|B8(^T`~1&8 zT{-}Xn-?bWTF;dmU@tRNe|=s0-v513&NdpA-VyfC%uJMxCC)FYPG{MtSs&-5Vz>+P zrjabNIq)9b`ye?U4p|KbBNP&QS&$5BJkkzE?0WOK0+EEL4olxNsI06bz1%>pzXqf9 zy%NJ5da<$@(W5&Fq(a0|^aEBuY9s;xFzLl&Mqo#?^-PDB0?q8Pm+`c4HwzZlnN35xe?erQlG;YR|JItBSZtI zNXSEI^CXbdT;j3q*(6eiDDGTMkS=>h^GN$+o6xVVe!7~6bSF5Wru~tz2KoCBS7NrC$eg(eb$pq^ZVa#`ek$JzhR(car zc@2xJexWt6>7qtDpZ&f(BEg+~XM2w`VZo)>zw<1e8~vA%N1Iu1I^LfoHsQItF!?F8 zlClcaX$IrqJ#pXL`Dsqttu=Q4K*ZooRKofopRtPToOcSb6(z*}hXXPI!1KfRj}F`c zQwq{k+-*reD%Q;?MBRYsl5mH=g z6xa})|CzJ&Zg-_Yvl%S6ZmG?+75{_8X9lc-latwyNhU3~GnBdZj&EW)(7Zj>g#c>r zI`gzx=xl0gHT2%&Vfb;>-r;W&y^*EG>2X;+gc8g{E%&Qu-BS}-O^)ld+68}r5#%s3 z2{tb^a9(>-^j%dzAR#}*i}%-pndFoCH4wdflK9Q=Q*hSngdNwXPp{g0l6PgQ?q9>C z%HFRZ!Gx($MBGArJ*wc-gODQ#pPsXSrst-txN55K>%ieiLf;||nZnYpyE!GwF(cOG z-A5u`m(;pm$$W9NaV}T<<~cTU3vDR&FCn+C^YUG5YZV5W4|+alD{;cxUrc9z$eXbU zIVE-)D``o0(u-&f@`RLV`gZq&Ng)ybXHpuMw@`PptElx74ZoUY_$RnpS9=n%x3tE3 z|C)XjnhBcjJFwMT5sta;xaTJ_xx=Dpi>?5h2l@r!=p zI&^an569=Kftnjth9b*KtXrQHN_oy6yqLTMCOR8#UBK!;bwgc_8?17DdPn5OX}VT5 zM=v_zjN!5LqA)w|`}5*kt4f@f5BSiyA`Hd(#(-WW%9dtWK>oGf^!xobB!R&T%_Ewz!Xz2w2ZL08rpNKu#=o%KGvk@9&!x zL<1@5re+w?F|Cv#k|FvGR z)S>%EpPSrWESY3nKW6=J0T%y2L)32%ediF4kStKY5&O;~av>^{Ht9C6Nw#w1!Yz90 zUyIJ-iHtyoaEG|6gwTf6)hQB>)g+40KwvGxrMC?1LcyP8_{1Q#8X_uRWZO3)FCZ`c z^gYg`CJP1_$*ljc8Gn+lJ`O=BzJ<(|BrxTK-Kju@SCmXF$>bqI$)NfqLyFsq844~UDn5z;1u zo=$|Pr>CqK-}n)T7a5AyeF04*iBm{ONM>)QI%<1TeRM4bp%T={*C%#DVtC36)*;Fh zI`$u?6cof^E+r*)PL7}IBX-SmuXvaUcu2{s3q#FeA5J6=+KPwbzyIOrer z+v5g#pT+VEzHwibcgjD+#MJVjMo@G>u$3`oY7`^x~{Nt4|ujHIC7n2j%j|l#@8(_k^C0m zqhX^)w8uQ$(5Pgp)DsETj9Jv%k>9%HcrU#=b9t~ohUH3hMij{D(L4tu`ubE&K#zdGM-v$1#o&Dq)HPa4vrDAV>PWxy(viiBEI(1 zr44DA1hi<^J-k>!yeElcogOxl*$?H8@g!^OhY^VnOfshu8cst!&_;lf%wKrUQvDVtCG$3mjVS%Xbk^-D!< z9Ou+ms4w?A^24VTf#jRRwBjkgGPV-YbM!bm#Oz@>#7eX)`gBner5bMBm~ekW(2Wi< ziJ?FRsWiXsyJke%53FmuOVM;|Pq}%m0Q;cWuLrvq#^|_|IlmBb3V!?e?H8xJaBXE; zC2?z9q24Ni31pOly?J0)wO~7WiOlSZbM@_%RABorqHAuAgPJi$n}PzH@NMnN0%mqH)(+0z556=DHeB=L%e#9h6w887)@{R5M+;nR!;;a>muEFWtfveR^ub>-LCon(Cw3Zkz~V z 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 F{0GtY&cXly literal 0 HcmV?d00001 diff --git a/docs/_modules/index.html b/docs/_modules/index.html index b774d7e53..5654895fd 100644 --- a/docs/_modules/index.html +++ b/docs/_modules/index.html @@ -202,6 +202,7 @@

All modules for which code is available

  • rl_coach.agents.soft_actor_critic_agent
  • rl_coach.agents.td3_agent
  • rl_coach.agents.value_optimization_agent
  • +
  • rl_coach.agents.wolpertinger_agent
  • rl_coach.architectures.architecture
  • rl_coach.architectures.network_wrapper
  • rl_coach.base_parameters
  • diff --git a/docs/_modules/rl_coach/agents/agent.html b/docs/_modules/rl_coach/agents/agent.html index 49d4a8a71..0f566aa18 100644 --- a/docs/_modules/rl_coach/agents/agent.html +++ b/docs/_modules/rl_coach/agents/agent.html @@ -756,6 +756,9 @@

    Source code for rl_coach.agents.agent

     
             if self.phase != RunPhase.TEST:
                 if isinstance(self.memory, EpisodicExperienceReplay):
    +                if self.ap.algorithm.override_episode_rewards_with_the_last_transition_reward:
    +                    for t in self.current_episode_buffer.transitions:
    +                        t.reward = self.current_episode_buffer.transitions[-1].reward
                     self.call_memory('store_episode', self.current_episode_buffer)
                 elif self.ap.algorithm.store_transitions_only_when_episodes_are_terminated:
                     for transition in self.current_episode_buffer.transitions:
    @@ -910,7 +913,8 @@ 

    Source code for rl_coach.agents.agent

                     # update counters
                     self.training_iteration += 1
                     if self.pre_network_filter is not None:
    -                    batch = self.pre_network_filter.filter(batch, update_internal_state=False, deep_copy=False)
    +                    update_internal_state = self.ap.algorithm.update_pre_network_filters_state_on_train
    +                    batch = self.pre_network_filter.filter(batch, update_internal_state=update_internal_state, deep_copy=False)
     
                     # if the batch returned empty then there are not enough samples in the replay buffer -> skip
                     # training step
    @@ -1020,7 +1024,8 @@ 

    Source code for rl_coach.agents.agent

                     # informed action
                     if self.pre_network_filter is not None:
                         # before choosing an action, first use the pre_network_filter to filter out the current state
    -                    update_filter_internal_state = self.phase is not RunPhase.TEST
    +                    update_filter_internal_state = self.ap.algorithm.update_pre_network_filters_state_on_inference and \
    +                                                   self.phase is not RunPhase.TEST
                         curr_state = self.run_pre_network_filter_for_inference(self.curr_state, update_filter_internal_state)
     
                     else:
    @@ -1048,6 +1053,10 @@ 

    Source code for rl_coach.agents.agent

             :return: The filtered state
             """
             dummy_env_response = EnvResponse(next_state=state, reward=0, game_over=False)
    +
    +        # TODO actually we only want to run the observation filters. No point in running the reward filters as the
    +        #  filtered reward is being ignored anyway (and it might unncecessarily affect the reward filters' internal
    +        #  state).
             return self.pre_network_filter.filter(dummy_env_response,
                                                   update_internal_state=update_filter_internal_state)[0].next_state
    @@ -1177,7 +1186,7 @@

    Source code for rl_coach.agents.agent

             """
             Allows setting a directive for the agent to follow. This is useful in hierarchy structures, where the agent
             has another master agent that is controlling it. In such cases, the master agent can define the goals for the
    -        slave agent, define it's observation, possible actions, etc. The directive type is defined by the agent
    +        slave agent, define its observation, possible actions, etc. The directive type is defined by the agent
             in-action-space.
     
             :param action: The action that should be set as the directive
    diff --git a/docs/_modules/rl_coach/agents/clipped_ppo_agent.html b/docs/_modules/rl_coach/agents/clipped_ppo_agent.html
    index 9a3f3b14d..ba808c25d 100644
    --- a/docs/_modules/rl_coach/agents/clipped_ppo_agent.html
    +++ b/docs/_modules/rl_coach/agents/clipped_ppo_agent.html
    @@ -295,7 +295,9 @@ 

    Source code for rl_coach.agents.clipped_ppo_agent

    self.optimization_epochs = 10 self.normalization_stats = None self.clipping_decay_schedule = ConstantSchedule(1) - self.act_for_full_episodes = True
    + self.act_for_full_episodes = True + self.update_pre_network_filters_state_on_train = True + self.update_pre_network_filters_state_on_inference = False
    class ClippedPPOAgentParameters(AgentParameters): @@ -486,7 +488,9 @@

    Source code for rl_coach.agents.clipped_ppo_agent

    network.set_is_training(True) dataset = self.memory.transitions - dataset = self.pre_network_filter.filter(dataset, deep_copy=False) + update_internal_state = self.ap.algorithm.update_pre_network_filters_state_on_train + dataset = self.pre_network_filter.filter(dataset, deep_copy=False, + update_internal_state=update_internal_state) batch = Batch(dataset) for training_step in range(self.ap.algorithm.num_consecutive_training_steps): @@ -512,7 +516,9 @@

    Source code for rl_coach.agents.clipped_ppo_agent

    def run_pre_network_filter_for_inference(self, state: StateType, update_internal_state: bool=False): dummy_env_response = EnvResponse(next_state=state, reward=0, game_over=False) - return self.pre_network_filter.filter(dummy_env_response, update_internal_state=False)[0].next_state + update_internal_state = self.ap.algorithm.update_pre_network_filters_state_on_inference + return self.pre_network_filter.filter( + dummy_env_response, update_internal_state=update_internal_state)[0].next_state def choose_action(self, curr_state): self.ap.algorithm.clipping_decay_schedule.step() diff --git a/docs/_modules/rl_coach/agents/wolpertinger_agent.html b/docs/_modules/rl_coach/agents/wolpertinger_agent.html new file mode 100644 index 000000000..67dd6cdef --- /dev/null +++ b/docs/_modules/rl_coach/agents/wolpertinger_agent.html @@ -0,0 +1,356 @@ + + + + + + + + + + + rl_coach.agents.wolpertinger_agent — Reinforcement Learning Coach 0.12.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + +
      + +
    • Docs »
    • + +
    • Module code »
    • + +
    • rl_coach.agents.wolpertinger_agent
    • + + +
    • + +
    • + +
    + + +
    +
    +
    +
    + +

    Source code for rl_coach.agents.wolpertinger_agent

    +#
    +# Copyright (c) 2019 Intel Corporation 
    +#
    +# Licensed under the Apache License, Version 2.0 (the "License");
    +# you may not use this file except in compliance with the License.
    +# You may obtain a copy of the License at
    +#
    +#      http://www.apache.org/licenses/LICENSE-2.0
    +#
    +# Unless required by applicable law or agreed to in writing, software
    +# distributed under the License is distributed on an "AS IS" BASIS,
    +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    +# See the License for the specific language governing permissions and
    +# limitations under the License.
    +#
    +
    +import copy
    +from typing import Union
    +from collections import OrderedDict
    +import numpy as np
    +
    +from rl_coach.agents.ddpg_agent import DDPGAlgorithmParameters, DDPGActorNetworkParameters, \
    +    DDPGCriticNetworkParameters, DDPGAgent
    +from rl_coach.base_parameters import AgentParameters
    +from rl_coach.core_types import ActionInfo
    +from rl_coach.exploration_policies.additive_noise import AdditiveNoiseParameters
    +from rl_coach.memories.episodic.episodic_experience_replay import EpisodicExperienceReplayParameters
    +from rl_coach.memories.non_episodic.differentiable_neural_dictionary import AnnoyDictionary
    +from rl_coach.spaces import DiscreteActionSpace, BoxActionSpace
    +from rl_coach.architectures.head_parameters import WolpertingerActorHeadParameters
    +
    +
    +class WolpertingerCriticNetworkParameters(DDPGCriticNetworkParameters):
    +    def __init__(self, use_batchnorm=False):
    +        super().__init__(use_batchnorm=use_batchnorm)
    +
    +
    +class WolpertingerActorNetworkParameters(DDPGActorNetworkParameters):
    +    def __init__(self, use_batchnorm=False):
    +        super().__init__()
    +        self.heads_parameters = [WolpertingerActorHeadParameters(batchnorm=use_batchnorm)]
    +
    +
    +
    [docs]class WolpertingerAlgorithmParameters(DDPGAlgorithmParameters): + def __init__(self): + super().__init__() + self.action_embedding_width = 1 + self.k = 1
    + + +class WolpertingerAgentParameters(AgentParameters): + def __init__(self, use_batchnorm=False): + exploration_params = AdditiveNoiseParameters() + exploration_params.noise_as_percentage_from_action_space = False + + super().__init__(algorithm=WolpertingerAlgorithmParameters(), + exploration=exploration_params, + memory=EpisodicExperienceReplayParameters(), + networks=OrderedDict( + [("actor", WolpertingerActorNetworkParameters(use_batchnorm=use_batchnorm)), + ("critic", WolpertingerCriticNetworkParameters(use_batchnorm=use_batchnorm))])) + + @property + def path(self): + return 'rl_coach.agents.wolpertinger_agent:WolpertingerAgent' + + +# Deep Reinforcement Learning in Large Discrete Action Spaces - https://arxiv.org/pdf/1512.07679.pdf +class WolpertingerAgent(DDPGAgent): + def __init__(self, agent_parameters, parent: Union['LevelManager', 'CompositeAgent'] = None): + super().__init__(agent_parameters, parent) + + def learn_from_batch(self, batch): + # replay buffer holds the actions in the discrete manner, as the agent is expected to act with discrete actions + # with the BoxDiscretization output filter. But DDPG needs to work on continuous actions, thus converting to + # continuous actions. This is actually a duplicate since this filtering is also done before applying actions on + # the environment. So might want to somehow reuse that conversion. Maybe can hold this information in the info + # dictionary of the transition. + + output_action_filter = \ + list(self.output_filter.action_filters.values())[0] + continuous_actions = [] + for action in batch.actions(): + continuous_actions.append(output_action_filter.filter(action)) + batch._actions = np.array(continuous_actions).squeeze() + + return super().learn_from_batch(batch) + + def train(self): + return super().train() + + def choose_action(self, curr_state): + if not isinstance(self.spaces.action, DiscreteActionSpace): + raise ValueError("WolpertingerAgent works only for discrete control problems") + + # convert to batch so we can run it through the network + tf_input_state = self.prepare_batch_for_inference(curr_state, 'actor') + actor_network = self.networks['actor'].online_network + critic_network = self.networks['critic'].online_network + proto_action = actor_network.predict(tf_input_state) + proto_action = np.expand_dims(self.exploration_policy.get_action(proto_action), 0) + + nn_action_embeddings, indices, _, _ = self.knn_tree.query(keys=proto_action, k=self.ap.algorithm.k) + + # now move the actions through the critic and choose the one with the highest q value + critic_inputs = copy.copy(tf_input_state) + critic_inputs['observation'] = np.tile(critic_inputs['observation'], (self.ap.algorithm.k, 1)) + critic_inputs['action'] = nn_action_embeddings[0] + q_values = critic_network.predict(critic_inputs)[0] + action = int(indices[0][np.argmax(q_values)]) + self.action_signal.add_sample(action) + return ActionInfo(action=action, action_value=0) + + def init_environment_dependent_modules(self): + super().init_environment_dependent_modules() + self.knn_tree = self.get_initialized_knn() + + # TODO - ideally the knn should not be defined here, but somehow be defined by the user in the preset + def get_initialized_knn(self): + num_actions = len(self.spaces.action.actions) + action_max_abs_range = self.spaces.action.filtered_action_space.max_abs_range if \ + (hasattr(self.spaces.action, 'filtered_action_space') and + isinstance(self.spaces.action.filtered_action_space, BoxActionSpace)) \ + else 1.0 + keys = np.expand_dims((np.arange(num_actions) / (num_actions - 1) - 0.5) * 2, 1) * action_max_abs_range + values = np.expand_dims(np.arange(num_actions), 1) + knn_tree = AnnoyDictionary(dict_size=num_actions, key_width=self.ap.algorithm.action_embedding_width) + knn_tree.add(keys, values, force_rebuild_tree=True) + + return knn_tree + +
    + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018-2019, Intel AI Lab + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/_modules/rl_coach/base_parameters.html b/docs/_modules/rl_coach/base_parameters.html index 60aac7f0a..045363d11 100644 --- a/docs/_modules/rl_coach/base_parameters.html +++ b/docs/_modules/rl_coach/base_parameters.html @@ -396,6 +396,14 @@

    Source code for rl_coach.base_parameters

             # Support for parameter noise
             self.supports_parameter_noise = False
     
    +        # Override, in retrospective, all the episode rewards with the last reward in the episode
    +        # (sometimes useful for sparse, end of the episode, rewards problems)
    +        self.override_episode_rewards_with_the_last_transition_reward = False
    +
    +        # Filters - TODO consider creating a FilterParameters class and initialize the filters with it
    +        self.update_pre_network_filters_state_on_train = False
    +        self.update_pre_network_filters_state_on_inference = True
    +        
     
     
    [docs]class PresetValidationParameters(Parameters): def __init__(self, diff --git a/docs/_modules/rl_coach/core_types.html b/docs/_modules/rl_coach/core_types.html index 78d96603f..abf47114b 100644 --- a/docs/_modules/rl_coach/core_types.html +++ b/docs/_modules/rl_coach/core_types.html @@ -298,6 +298,12 @@

    Source code for rl_coach.core_types

         def __init__(self, num_steps):
             super().__init__(num_steps)
     
    +    def __truediv__(self, other):
    +        if isinstance(other, EnvironmentSteps):
    +            return math.ceil(self.num_steps / other.num_steps)
    +        else:
    +            super().__truediv__(self, other)
    +
     
     class Time(StepMethod):
         def __init__(self, num_steps):
    diff --git a/docs/_modules/rl_coach/data_stores/nfs_data_store.html b/docs/_modules/rl_coach/data_stores/nfs_data_store.html
    index a67fe7a24..25785f7ae 100644
    --- a/docs/_modules/rl_coach/data_stores/nfs_data_store.html
    +++ b/docs/_modules/rl_coach/data_stores/nfs_data_store.html
    @@ -200,15 +200,17 @@ 

    Source code for rl_coach.data_stores.nfs_data_store

    import uuid -from rl_coach.data_stores.data_store import DataStore, DataStoreParameters +from rl_coach.data_stores.data_store import DataStoreParameters +from rl_coach.data_stores.checkpoint_data_store import CheckpointDataStore class NFSDataStoreParameters(DataStoreParameters): - def __init__(self, ds_params, deployed=False, server=None, path=None): + def __init__(self, ds_params, deployed=False, server=None, path=None, checkpoint_dir: str=""): super().__init__(ds_params.store_type, ds_params.orchestrator_type, ds_params.orchestrator_params) self.namespace = "default" if "namespace" in ds_params.orchestrator_params: self.namespace = ds_params.orchestrator_params["namespace"] + self.checkpoint_dir = checkpoint_dir self.name = None self.pvc_name = None self.pv_name = None @@ -221,7 +223,7 @@

    Source code for rl_coach.data_stores.nfs_data_store

    self.path = path -
    [docs]class NFSDataStore(DataStore): +
    [docs]class NFSDataStore(CheckpointDataStore): """ An implementation of data store which uses NFS for storing policy checkpoints when using Coach in distributed mode. The policy checkpoints are written by the trainer and read by the rollout worker. diff --git a/docs/_modules/rl_coach/data_stores/s3_data_store.html b/docs/_modules/rl_coach/data_stores/s3_data_store.html index 64fc0b96d..c2e4b9bba 100644 --- a/docs/_modules/rl_coach/data_stores/s3_data_store.html +++ b/docs/_modules/rl_coach/data_stores/s3_data_store.html @@ -198,7 +198,8 @@

    Source code for rl_coach.data_stores.s3_data_store

    # -from rl_coach.data_stores.data_store import DataStore, DataStoreParameters +from rl_coach.data_stores.data_store import DataStoreParameters +from rl_coach.data_stores.checkpoint_data_store import CheckpointDataStore from minio import Minio from minio.error import ResponseError from configparser import ConfigParser, Error @@ -222,7 +223,7 @@

    Source code for rl_coach.data_stores.s3_data_store

    self.expt_dir = expt_dir -
    [docs]class S3DataStore(DataStore): +
    [docs]class S3DataStore(CheckpointDataStore): """ An implementation of the data store using S3 for storing policy checkpoints when using Coach in distributed mode. The policy checkpoints are written by the trainer and read by the rollout worker. diff --git a/docs/_modules/rl_coach/exploration_policies/additive_noise.html b/docs/_modules/rl_coach/exploration_policies/additive_noise.html index 44e2dc344..92eb352af 100644 --- a/docs/_modules/rl_coach/exploration_policies/additive_noise.html +++ b/docs/_modules/rl_coach/exploration_policies/additive_noise.html @@ -245,7 +245,9 @@

    Source code for rl_coach.exploration_policies.additive_noise

    self.evaluation_noise = evaluation_noise self.noise_as_percentage_from_action_space = noise_as_percentage_from_action_space - if not isinstance(action_space, BoxActionSpace): + if not isinstance(action_space, BoxActionSpace) and \ + (hasattr(action_space, 'filtered_action_space') and not + isinstance(action_space.filtered_action_space, BoxActionSpace)): raise ValueError("Additive noise exploration works only for continuous controls." "The given action space is of type: {}".format(action_space.__class__.__name__)) diff --git a/docs/_modules/rl_coach/exploration_policies/exploration_policy.html b/docs/_modules/rl_coach/exploration_policies/exploration_policy.html index f5ffd7d6c..faa458365 100644 --- a/docs/_modules/rl_coach/exploration_policies/exploration_policy.html +++ b/docs/_modules/rl_coach/exploration_policies/exploration_policy.html @@ -298,7 +298,10 @@

    Source code for rl_coach.exploration_policies.exploration_policy

    """ :param action_space: the action space used by the environment """ - assert isinstance(action_space, BoxActionSpace) or isinstance(action_space, GoalsSpace) + assert isinstance(action_space, BoxActionSpace) or \ + (hasattr(action_space, 'filtered_action_space') and + isinstance(action_space.filtered_action_space, BoxActionSpace)) or \ + isinstance(action_space, GoalsSpace) super().__init__(action_space)
    diff --git a/docs/_modules/rl_coach/exploration_policies/truncated_normal.html b/docs/_modules/rl_coach/exploration_policies/truncated_normal.html index 7d331988b..56d84e766 100644 --- a/docs/_modules/rl_coach/exploration_policies/truncated_normal.html +++ b/docs/_modules/rl_coach/exploration_policies/truncated_normal.html @@ -271,9 +271,6 @@

    Source code for rl_coach.exploration_policies.truncated_normal

    else: action_values_std = current_noise - # scale the noise to the action space range - action_values_std = current_noise * (self.action_space.high - self.action_space.low) - # extract the mean values if isinstance(action_values, list): # the action values are expected to be a list with the action mean and optionally the action stdev diff --git a/docs/_modules/rl_coach/filters/action/partial_discrete_action_space_map.html b/docs/_modules/rl_coach/filters/action/partial_discrete_action_space_map.html index 0fae9ce5c..4e4837b56 100644 --- a/docs/_modules/rl_coach/filters/action/partial_discrete_action_space_map.html +++ b/docs/_modules/rl_coach/filters/action/partial_discrete_action_space_map.html @@ -231,7 +231,8 @@

    Source code for rl_coach.filters.action.partial_discrete_action_space_mapdef get_unfiltered_action_space(self, output_action_space: ActionSpace) -> DiscreteActionSpace: self.output_action_space = output_action_space - self.input_action_space = DiscreteActionSpace(len(self.target_actions), self.descriptions) + self.input_action_space = DiscreteActionSpace(len(self.target_actions), self.descriptions, + filtered_action_space=output_action_space) return self.input_action_space def filter(self, action: ActionType) -> ActionType: diff --git a/docs/_modules/rl_coach/memories/backend/redis.html b/docs/_modules/rl_coach/memories/backend/redis.html index c904f4dd3..7567160f6 100644 --- a/docs/_modules/rl_coach/memories/backend/redis.html +++ b/docs/_modules/rl_coach/memories/backend/redis.html @@ -261,11 +261,18 @@

    Source code for rl_coach.memories.backend.redis

    < """ if 'namespace' not in self.params.orchestrator_params: self.params.orchestrator_params['namespace'] = "default" - from kubernetes import client + from kubernetes import client, config container = client.V1Container( name=self.redis_server_name, image='redis:4-alpine', + resources=client.V1ResourceRequirements( + limits={ + "cpu": "8", + "memory": "4Gi" + # "nvidia.com/gpu": "0", + } + ), ) template = client.V1PodTemplateSpec( metadata=client.V1ObjectMeta(labels={'app': self.redis_server_name}), @@ -288,8 +295,10 @@

    Source code for rl_coach.memories.backend.redis

    < spec=deployment_spec ) + config.load_kube_config() api_client = client.AppsV1Api() try: + print(self.params.orchestrator_params) api_client.create_namespaced_deployment(self.params.orchestrator_params['namespace'], deployment) except client.rest.ApiException as e: print("Got exception: %s\n while creating redis-server", e) diff --git a/docs/_modules/rl_coach/memories/non_episodic/differentiable_neural_dictionary.html b/docs/_modules/rl_coach/memories/non_episodic/differentiable_neural_dictionary.html index 2a5d1f9d1..063e0e480 100644 --- a/docs/_modules/rl_coach/memories/non_episodic/differentiable_neural_dictionary.html +++ b/docs/_modules/rl_coach/memories/non_episodic/differentiable_neural_dictionary.html @@ -240,7 +240,7 @@

    Source code for rl_coach.memories.non_episodic.differentiable_neural_diction self.built_capacity = 0 - def add(self, keys, values, additional_data=None): + def add(self, keys, values, additional_data=None, force_rebuild_tree=False): if not additional_data: additional_data = [None] * len(keys) @@ -279,7 +279,7 @@

    Source code for rl_coach.memories.non_episodic.differentiable_neural_diction if len(self.buffered_indices) >= self.min_update_size: self.min_update_size = max(self.initial_update_size, int(self.curr_size * 0.02)) self._rebuild_index() - elif self.rebuild_on_every_update: + elif force_rebuild_tree or self.rebuild_on_every_update: self._rebuild_index() self.current_timestamp += 1 diff --git a/docs/_modules/rl_coach/orchestrators/kubernetes_orchestrator.html b/docs/_modules/rl_coach/orchestrators/kubernetes_orchestrator.html index b8c99db50..71d144feb 100644 --- a/docs/_modules/rl_coach/orchestrators/kubernetes_orchestrator.html +++ b/docs/_modules/rl_coach/orchestrators/kubernetes_orchestrator.html @@ -307,6 +307,11 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    """ self.memory_backend.deploy() + + if self.params.data_store_params.store_type == "redis": + self.data_store.params.redis_address = self.memory_backend.params.redis_address + self.data_store.params.redis_port = self.memory_backend.params.redis_port + if not self.data_store.deploy(): return False if self.params.data_store_params.store_type == "nfs": @@ -329,6 +334,8 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    trainer_params.command += ['--data_store_params', json.dumps(self.params.data_store_params.__dict__)] name = "{}-{}".format(trainer_params.run_type, uuid.uuid4()) + # TODO: instead of defining each container and template spec from scratch, loaded default + # configuration and modify them as necessary depending on the store type if self.params.data_store_params.store_type == "nfs": container = k8sclient.V1Container( name=name, @@ -354,7 +361,7 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    restart_policy='Never' ), ) - else: + elif self.params.data_store_params.store_type == "s3": container = k8sclient.V1Container( name=name, image=trainer_params.image, @@ -373,6 +380,34 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    restart_policy='Never' ), ) + elif self.params.data_store_params.store_type == "redis": + container = k8sclient.V1Container( + name=name, + image=trainer_params.image, + command=trainer_params.command, + args=trainer_params.arguments, + image_pull_policy='Always', + stdin=True, + tty=True, + resources=k8sclient.V1ResourceRequirements( + limits={ + "cpu": "40", + "memory": "4Gi", + "nvidia.com/gpu": "1", + } + ), + ) + template = k8sclient.V1PodTemplateSpec( + metadata=k8sclient.V1ObjectMeta(labels={'app': name}), + spec=k8sclient.V1PodSpec( + containers=[container], + restart_policy='Never' + ), + ) + else: + raise ValueError("unexpected store_type {}. expected 's3', 'nfs', 'redis'".format( + self.params.data_store_params.store_type + )) job_spec = k8sclient.V1JobSpec( completions=1, @@ -404,12 +439,17 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    if not worker_params: return False + # At this point, the memory backend and data store have been deployed and in the process, + # these parameters have been updated to include things like the hostname and port the + # service can be found at. worker_params.command += ['--memory_backend_params', json.dumps(self.params.memory_backend_parameters.__dict__)] worker_params.command += ['--data_store_params', json.dumps(self.params.data_store_params.__dict__)] worker_params.command += ['--num_workers', '{}'.format(worker_params.num_replicas)] name = "{}-{}".format(worker_params.run_type, uuid.uuid4()) + # TODO: instead of defining each container and template spec from scratch, loaded default + # configuration and modify them as necessary depending on the store type if self.params.data_store_params.store_type == "nfs": container = k8sclient.V1Container( name=name, @@ -435,7 +475,7 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    restart_policy='Never' ), ) - else: + elif self.params.data_store_params.store_type == "s3": container = k8sclient.V1Container( name=name, image=worker_params.image, @@ -454,6 +494,32 @@

    Source code for rl_coach.orchestrators.kubernetes_orchestrator

    restart_policy='Never' ) ) + elif self.params.data_store_params.store_type == "redis": + container = k8sclient.V1Container( + name=name, + image=worker_params.image, + command=worker_params.command, + args=worker_params.arguments, + image_pull_policy='Always', + stdin=True, + tty=True, + resources=k8sclient.V1ResourceRequirements( + limits={ + "cpu": "8", + "memory": "4Gi", + # "nvidia.com/gpu": "0", + } + ), + ) + template = k8sclient.V1PodTemplateSpec( + metadata=k8sclient.V1ObjectMeta(labels={'app': name}), + spec=k8sclient.V1PodSpec( + containers=[container], + restart_policy='Never' + ) + ) + else: + raise ValueError('unexpected store type {}'.format(self.params.data_store_params.store_type)) job_spec = k8sclient.V1JobSpec( completions=worker_params.num_replicas, diff --git a/docs/_modules/rl_coach/spaces.html b/docs/_modules/rl_coach/spaces.html index 2e890d9af..30472c33d 100644 --- a/docs/_modules/rl_coach/spaces.html +++ b/docs/_modules/rl_coach/spaces.html @@ -568,7 +568,8 @@

    Source code for rl_coach.spaces

         """
         A discrete action space with action indices as actions
         """
    -    def __init__(self, num_actions: int, descriptions: Union[None, List, Dict]=None, default_action: np.ndarray=None):
    +    def __init__(self, num_actions: int, descriptions: Union[None, List, Dict]=None, default_action: np.ndarray=None,
    +                 filtered_action_space=None):
             super().__init__(1, low=0, high=num_actions-1, descriptions=descriptions)
             # the number of actions is mapped to high
     
    @@ -578,6 +579,9 @@ 

    Source code for rl_coach.spaces

             else:
                 self.default_action = default_action
     
    +        if filtered_action_space is not None:
    +            self.filtered_action_space = filtered_action_space
    +
         @property
         def actions(self) -> List[ActionType]:
             return list(range(0, int(self.high[0]) + 1))
    diff --git a/docs/_sources/components/agents/index.rst.txt b/docs/_sources/components/agents/index.rst.txt
    index ca21713b4..c958768bf 100644
    --- a/docs/_sources/components/agents/index.rst.txt
    +++ b/docs/_sources/components/agents/index.rst.txt
    @@ -21,8 +21,6 @@ A detailed description of those algorithms can be found by navigating to each of
        imitation/cil
        policy_optimization/cppo
        policy_optimization/ddpg
    -   policy_optimization/td3
    -   policy_optimization/sac
        other/dfp
        value_optimization/double_dqn
        value_optimization/dqn
    @@ -36,6 +34,10 @@ A detailed description of those algorithms can be found by navigating to each of
        policy_optimization/ppo
        value_optimization/rainbow
        value_optimization/qr_dqn
    +   policy_optimization/sac
    +   policy_optimization/td3
    +   policy_optimization/wolpertinger
    +
     
     
     .. autoclass:: rl_coach.base_parameters.AgentParameters
    diff --git a/docs/_sources/components/agents/policy_optimization/wolpertinger.rst.txt b/docs/_sources/components/agents/policy_optimization/wolpertinger.rst.txt
    new file mode 100644
    index 000000000..5aa57d2a8
    --- /dev/null
    +++ b/docs/_sources/components/agents/policy_optimization/wolpertinger.rst.txt
    @@ -0,0 +1,56 @@
    +Wolpertinger
    +=============
    +
    +**Actions space:** Discrete
    +
    +**References:** `Deep Reinforcement Learning in Large Discrete Action Spaces `_
    +
    +Network Structure
    +-----------------
    +
    +.. image:: /_static/img/design_imgs/wolpertinger.png
    +   :align: center
    +
    +Algorithm Description
    +---------------------
    +Choosing an action
    +++++++++++++++++++
    +
    +Pass the current states through the actor network, and get a proto action :math:`\mu`.
    +While in training phase, use a continuous exploration policy, such as the a gaussian noise,
    +to add exploration noise to the proto action. Then, pass the proto action to a k-NN tree to find actual valid
    +action candidates, which are in the surrounding neighborhood of the proto action. Those actions are then passed to the
    +critic to evaluate their goodness, and eventually the discrete index of the action with the highest Q value is chosen.
    +When testing, the same flow is used, but no exploration noise is added.
    +
    +Training the network
    +++++++++++++++++++++
    +
    +Training the network is exactly the same as in DDPG. Unlike when choosing the action, the proto action is not passed
    +through the k-NN tree. It is being passed directly to the critic.
    +
    +Start by sampling a batch of transitions from the experience replay.
    +
    +* To train the **critic network**, use the following targets:
    +
    +  :math:`y_t=r(s_t,a_t )+\gamma \cdot Q(s_{t+1},\mu(s_{t+1} ))`
    +
    +  First run the actor target network, using the next states as the inputs, and get :math:`\mu (s_{t+1} )`.
    +  Next, run the critic target network using the next states and :math:`\mu (s_{t+1} )`, and use the output to
    +  calculate :math:`y_t` according to the equation above. To train the network, use the current states and actions
    +  as the inputs, and :math:`y_t` as the targets.
    +
    +* To train the **actor network**, use the following equation:
    +
    +  :math:`\nabla_{\theta^\mu } J \approx E_{s_t \tilde{} \rho^\beta } [\nabla_a Q(s,a)|_{s=s_t,a=\mu (s_t ) } \cdot \nabla_{\theta^\mu} \mu(s)|_{s=s_t} ]`
    +
    +  Use the actor's online network to get the action mean values using the current states as the inputs.
    +  Then, use the critic online network in order to get the gradients of the critic output with respect to the
    +  action mean values :math:`\nabla _a Q(s,a)|_{s=s_t,a=\mu(s_t ) }`.
    +  Using the chain rule, calculate the gradients of the actor's output, with respect to the actor weights,
    +  given :math:`\nabla_a Q(s,a)`. Finally, apply those gradients to the actor network.
    +
    +After every training step, do a soft update of the critic and actor target networks' weights from the online networks.
    +
    +
    +.. autoclass:: rl_coach.agents.wolpertinger_agent.WolpertingerAlgorithmParameters
    \ No newline at end of file
    diff --git a/docs/components/agents/index.html b/docs/components/agents/index.html
    index 357caadf7..7c90e3f78 100644
    --- a/docs/components/agents/index.html
    +++ b/docs/components/agents/index.html
    @@ -117,8 +117,6 @@
     
  • Conditional Imitation Learning
  • Clipped Proximal Policy Optimization
  • Deep Deterministic Policy Gradient
  • -
  • Twin Delayed Deep Deterministic Policy Gradient
  • -
  • Soft Actor-Critic
  • Direct Future Prediction
  • Double DQN
  • Deep Q Networks
  • @@ -132,6 +130,9 @@
  • Proximal Policy Optimization
  • Rainbow
  • Quantile Regression DQN
  • +
  • Soft Actor-Critic
  • +
  • Twin Delayed Deep Deterministic Policy Gradient
  • +
  • Wolpertinger
  • Architectures
  • @@ -226,8 +227,6 @@

    AgentsConditional Imitation Learning
  • Clipped Proximal Policy Optimization
  • Deep Deterministic Policy Gradient
  • -
  • Twin Delayed Deep Deterministic Policy Gradient
  • -
  • Soft Actor-Critic
  • Direct Future Prediction
  • Double DQN
  • Deep Q Networks
  • @@ -241,6 +240,9 @@

    AgentsProximal Policy Optimization
  • Rainbow
  • Quantile Regression DQN
  • +
  • Soft Actor-Critic
  • +
  • Twin Delayed Deep Deterministic Policy Gradient
  • +
  • Wolpertinger
  • @@ -512,7 +514,7 @@

    Agents
    -prepare_batch_for_inference(states: Union[Dict[str, numpy.ndarray], List[Dict[str, numpy.ndarray]]], network_name: str) → Dict[str, numpy.array][source]¶
    +prepare_batch_for_inference(states: Union[Dict[str, numpy.ndarray], List[Dict[str, numpy.ndarray]]], network_name: str) → Dict[str, numpy.core.multiarray.array][source]¶

    Convert curr_state into input tensors tensorflow is expecting. i.e. if we have several inputs states, stack all observations together, measurements together, etc.

    @@ -652,7 +654,7 @@

    Agentsset_incoming_directive(action: Union[int, float, numpy.ndarray, List]) → None[source]¶

    Allows setting a directive for the agent to follow. This is useful in hierarchy structures, where the agent has another master agent that is controlling it. In such cases, the master agent can define the goals for the -slave agent, define it’s observation, possible actions, etc. The directive type is defined by the agent +slave agent, define its observation, possible actions, etc. The directive type is defined by the agent in-action-space.

    Parameters
    diff --git a/docs/components/agents/policy_optimization/wolpertinger.html b/docs/components/agents/policy_optimization/wolpertinger.html new file mode 100644 index 000000000..cda2378bb --- /dev/null +++ b/docs/components/agents/policy_optimization/wolpertinger.html @@ -0,0 +1,276 @@ + + + + + + + + + + + Wolpertinger — Reinforcement Learning Coach 0.12.0 documentation + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + + + +
    + + + + + +
    + +
    + + + + + + + + + + + + + + + + + +
    + + + + +
    +
    +
    +
    + +
    +

    Wolpertinger¶

    +

    Actions space: Discrete

    +

    References: Deep Reinforcement Learning in Large Discrete Action Spaces

    +
    +

    Network Structure¶

    +../../../_images/wolpertinger.png +
    +
    +

    Algorithm Description¶

    +
    +

    Choosing an action¶

    +

    Pass the current states through the actor network, and get a proto action \(\mu\). +While in training phase, use a continuous exploration policy, such as the a gaussian noise, +to add exploration noise to the proto action. Then, pass the proto action to a k-NN tree to find actual valid +action candidates, which are in the surrounding neighborhood of the proto action. Those actions are then passed to the +critic to evaluate their goodness, and eventually the discrete index of the action with the highest Q value is chosen. +When testing, the same flow is used, but no exploration noise is added.

    +
    +
    +

    Training the network¶

    +

    Training the network is exactly the same as in DDPG. Unlike when choosing the action, the proto action is not passed +through the k-NN tree. It is being passed directly to the critic.

    +

    Start by sampling a batch of transitions from the experience replay.

    +
      +
    • To train the critic network, use the following targets:

      +

      \(y_t=r(s_t,a_t )+\gamma \cdot Q(s_{t+1},\mu(s_{t+1} ))\)

      +

      First run the actor target network, using the next states as the inputs, and get \(\mu (s_{t+1} )\). +Next, run the critic target network using the next states and \(\mu (s_{t+1} )\), and use the output to +calculate \(y_t\) according to the equation above. To train the network, use the current states and actions +as the inputs, and \(y_t\) as the targets.

      +
    • +
    • To train the actor network, use the following equation:

      +

      \(\nabla_{\theta^\mu } J \approx E_{s_t \tilde{} \rho^\beta } [\nabla_a Q(s,a)|_{s=s_t,a=\mu (s_t ) } \cdot \nabla_{\theta^\mu} \mu(s)|_{s=s_t} ]\)

      +

      Use the actor’s online network to get the action mean values using the current states as the inputs. +Then, use the critic online network in order to get the gradients of the critic output with respect to the +action mean values \(\nabla _a Q(s,a)|_{s=s_t,a=\mu(s_t ) }\). +Using the chain rule, calculate the gradients of the actor’s output, with respect to the actor weights, +given \(\nabla_a Q(s,a)\). Finally, apply those gradients to the actor network.

      +
    • +
    +

    After every training step, do a soft update of the critic and actor target networks’ weights from the online networks.

    +
    +
    +class rl_coach.agents.wolpertinger_agent.WolpertingerAlgorithmParameters[source]¶
    +
    + +
    +
    +
    + + +
    + +
    +
    + + +
    + +
    +

    + © Copyright 2018-2019, Intel AI Lab + +

    +
    + Built with Sphinx using a theme provided by Read the Docs. + +
    + +
    +
    + +
    + +
    + + + + + + + + + + + + \ No newline at end of file diff --git a/docs/components/spaces.html b/docs/components/spaces.html index a62653c56..753e3342a 100644 --- a/docs/components/spaces.html +++ b/docs/components/spaces.html @@ -442,7 +442,7 @@

    BoxActionSpace¶

    -class rl_coach.spaces.DiscreteActionSpace(num_actions: int, descriptions: Union[None, List, Dict] = None, default_action: numpy.ndarray = None)[source]¶
    +class rl_coach.spaces.DiscreteActionSpace(num_actions: int, descriptions: Union[None, List, Dict] = None, default_action: numpy.ndarray = None, filtered_action_space=None)[source]¶

    A discrete action space with action indices as actions

    diff --git a/docs/features/benchmarks.html b/docs/features/benchmarks.html index 073faab6e..845d42c1e 100644 --- a/docs/features/benchmarks.html +++ b/docs/features/benchmarks.html @@ -37,7 +37,7 @@ - + @@ -95,7 +95,6 @@
  • Algorithms
  • Environments
  • Benchmarks
  • -
  • Batch Reinforcement Learning
  • Selecting an Algorithm
  • @@ -221,7 +220,7 @@

    Benchmarks - + diff --git a/docs/features/environments.html b/docs/features/environments.html index 9d4622c9c..7b3a89a9a 100644 --- a/docs/features/environments.html +++ b/docs/features/environments.html @@ -95,7 +95,6 @@
  • Algorithms
  • Environments
  • Benchmarks
  • -
  • Batch Reinforcement Learning
  • Selecting an Algorithm
  • diff --git a/docs/genindex.html b/docs/genindex.html index 28d3d71e2..bd8eb34cf 100644 --- a/docs/genindex.html +++ b/docs/genindex.html @@ -206,6 +206,7 @@

    Index

    | T | U | V + | W

    A

    @@ -956,6 +957,14 @@

    V

    +

    W

    + + +
    +
    diff --git a/docs/objects.inv b/docs/objects.inv index b2a5dbc17ad41c3036f18db4f4468a41fdf0cace..a793fa39a37b25e1a3293d9b7e4e1b895d20370e 100644 GIT binary patch delta 3603 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 diff --git a/docs/searchindex.js b/docs/searchindex.js index dfcf9defc..760e6661f 100644 --- a/docs/searchindex.js +++ b/docs/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["components/additional_parameters","components/agents/imitation/bc","components/agents/imitation/cil","components/agents/index","components/agents/other/dfp","components/agents/policy_optimization/ac","components/agents/policy_optimization/acer","components/agents/policy_optimization/cppo","components/agents/policy_optimization/ddpg","components/agents/policy_optimization/hac","components/agents/policy_optimization/pg","components/agents/policy_optimization/ppo","components/agents/policy_optimization/sac","components/agents/policy_optimization/td3","components/agents/value_optimization/bs_dqn","components/agents/value_optimization/categorical_dqn","components/agents/value_optimization/double_dqn","components/agents/value_optimization/dqn","components/agents/value_optimization/dueling_dqn","components/agents/value_optimization/mmc","components/agents/value_optimization/n_step","components/agents/value_optimization/naf","components/agents/value_optimization/nec","components/agents/value_optimization/pal","components/agents/value_optimization/qr_dqn","components/agents/value_optimization/rainbow","components/architectures/index","components/core_types","components/data_stores/index","components/environments/index","components/exploration_policies/index","components/filters/index","components/filters/input_filters","components/filters/output_filters","components/memories/index","components/memory_backends/index","components/orchestrators/index","components/spaces","contributing/add_agent","contributing/add_env","dashboard","design/control_flow","design/horizontal_scaling","design/network","dist_usage","features/algorithms","features/batch_rl","features/benchmarks","features/environments","features/index","index","selecting_an_algorithm","test","usage"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["components/additional_parameters.rst","components/agents/imitation/bc.rst","components/agents/imitation/cil.rst","components/agents/index.rst","components/agents/other/dfp.rst","components/agents/policy_optimization/ac.rst","components/agents/policy_optimization/acer.rst","components/agents/policy_optimization/cppo.rst","components/agents/policy_optimization/ddpg.rst","components/agents/policy_optimization/hac.rst","components/agents/policy_optimization/pg.rst","components/agents/policy_optimization/ppo.rst","components/agents/policy_optimization/sac.rst","components/agents/policy_optimization/td3.rst","components/agents/value_optimization/bs_dqn.rst","components/agents/value_optimization/categorical_dqn.rst","components/agents/value_optimization/double_dqn.rst","components/agents/value_optimization/dqn.rst","components/agents/value_optimization/dueling_dqn.rst","components/agents/value_optimization/mmc.rst","components/agents/value_optimization/n_step.rst","components/agents/value_optimization/naf.rst","components/agents/value_optimization/nec.rst","components/agents/value_optimization/pal.rst","components/agents/value_optimization/qr_dqn.rst","components/agents/value_optimization/rainbow.rst","components/architectures/index.rst","components/core_types.rst","components/data_stores/index.rst","components/environments/index.rst","components/exploration_policies/index.rst","components/filters/index.rst","components/filters/input_filters.rst","components/filters/output_filters.rst","components/memories/index.rst","components/memory_backends/index.rst","components/orchestrators/index.rst","components/spaces.rst","contributing/add_agent.rst","contributing/add_env.rst","dashboard.rst","design/control_flow.rst","design/horizontal_scaling.rst","design/network.rst","dist_usage.rst","features/algorithms.rst","features/batch_rl.rst","features/benchmarks.rst","features/environments.rst","features/index.rst","index.rst","selecting_an_algorithm.rst","test.rst","usage.rst"],objects:{"rl_coach.agents.acer_agent":{ACERAlgorithmParameters:[6,0,1,""]},"rl_coach.agents.actor_critic_agent":{ActorCriticAlgorithmParameters:[5,0,1,""]},"rl_coach.agents.agent":{Agent:[3,0,1,""]},"rl_coach.agents.agent.Agent":{act:[3,1,1,""],call_memory:[3,1,1,""],choose_action:[3,1,1,""],collect_savers:[3,1,1,""],create_networks:[3,1,1,""],freeze_memory:[3,1,1,""],get_predictions:[3,1,1,""],get_state_embedding:[3,1,1,""],handle_episode_ended:[3,1,1,""],init_environment_dependent_modules:[3,1,1,""],initialize_session_dependent_components:[3,1,1,""],learn_from_batch:[3,1,1,""],load_memory_from_file:[3,1,1,""],log_to_screen:[3,1,1,""],observe:[3,1,1,""],parent:[3,1,1,""],phase:[3,1,1,""],post_training_commands:[3,1,1,""],prepare_batch_for_inference:[3,1,1,""],register_signal:[3,1,1,""],reset_evaluation_state:[3,1,1,""],reset_internal_state:[3,1,1,""],restore_checkpoint:[3,1,1,""],run_off_policy_evaluation:[3,1,1,""],run_pre_network_filter_for_inference:[3,1,1,""],save_checkpoint:[3,1,1,""],set_environment_parameters:[3,1,1,""],set_incoming_directive:[3,1,1,""],set_session:[3,1,1,""],setup_logger:[3,1,1,""],sync:[3,1,1,""],train:[3,1,1,""],update_log:[3,1,1,""],update_step_in_episode_log:[3,1,1,""],update_transition_before_adding_to_replay_buffer:[3,1,1,""]},"rl_coach.agents.bc_agent":{BCAlgorithmParameters:[1,0,1,""]},"rl_coach.agents.categorical_dqn_agent":{CategoricalDQNAlgorithmParameters:[15,0,1,""]},"rl_coach.agents.cil_agent":{CILAlgorithmParameters:[2,0,1,""]},"rl_coach.agents.clipped_ppo_agent":{ClippedPPOAlgorithmParameters:[7,0,1,""]},"rl_coach.agents.ddpg_agent":{DDPGAlgorithmParameters:[8,0,1,""]},"rl_coach.agents.dfp_agent":{DFPAlgorithmParameters:[4,0,1,""]},"rl_coach.agents.dqn_agent":{DQNAgent:[52,0,1,""],DQNAlgorithmParameters:[17,0,1,""]},"rl_coach.agents.dqn_agent.DQNAgent":{act:[52,1,1,""],call_memory:[52,1,1,""],choose_action:[52,1,1,""],collect_savers:[52,1,1,""],create_networks:[52,1,1,""],freeze_memory:[52,1,1,""],get_predictions:[52,1,1,""],get_state_embedding:[52,1,1,""],handle_episode_ended:[52,1,1,""],improve_reward_model:[52,1,1,""],init_environment_dependent_modules:[52,1,1,""],initialize_session_dependent_components:[52,1,1,""],learn_from_batch:[52,1,1,""],load_memory_from_file:[52,1,1,""],log_to_screen:[52,1,1,""],observe:[52,1,1,""],parent:[52,1,1,""],phase:[52,1,1,""],post_training_commands:[52,1,1,""],prepare_batch_for_inference:[52,1,1,""],register_signal:[52,1,1,""],reset_evaluation_state:[52,1,1,""],reset_internal_state:[52,1,1,""],restore_checkpoint:[52,1,1,""],run_off_policy_evaluation:[52,1,1,""],run_pre_network_filter_for_inference:[52,1,1,""],save_checkpoint:[52,1,1,""],set_environment_parameters:[52,1,1,""],set_incoming_directive:[52,1,1,""],set_session:[52,1,1,""],setup_logger:[52,1,1,""],sync:[52,1,1,""],train:[52,1,1,""],update_log:[52,1,1,""],update_step_in_episode_log:[52,1,1,""],update_transition_before_adding_to_replay_buffer:[52,1,1,""]},"rl_coach.agents.mmc_agent":{MixedMonteCarloAlgorithmParameters:[19,0,1,""]},"rl_coach.agents.n_step_q_agent":{NStepQAlgorithmParameters:[20,0,1,""]},"rl_coach.agents.naf_agent":{NAFAlgorithmParameters:[21,0,1,""]},"rl_coach.agents.nec_agent":{NECAlgorithmParameters:[22,0,1,""]},"rl_coach.agents.pal_agent":{PALAlgorithmParameters:[23,0,1,""]},"rl_coach.agents.policy_gradients_agent":{PolicyGradientAlgorithmParameters:[10,0,1,""]},"rl_coach.agents.ppo_agent":{PPOAlgorithmParameters:[11,0,1,""]},"rl_coach.agents.qr_dqn_agent":{QuantileRegressionDQNAlgorithmParameters:[24,0,1,""]},"rl_coach.agents.rainbow_dqn_agent":{RainbowDQNAlgorithmParameters:[25,0,1,""]},"rl_coach.agents.soft_actor_critic_agent":{SoftActorCriticAlgorithmParameters:[12,0,1,""]},"rl_coach.agents.td3_agent":{TD3AlgorithmParameters:[13,0,1,""]},"rl_coach.architectures.architecture":{Architecture:[26,0,1,""]},"rl_coach.architectures.architecture.Architecture":{accumulate_gradients:[26,1,1,""],apply_and_reset_gradients:[26,1,1,""],apply_gradients:[26,1,1,""],collect_savers:[26,1,1,""],construct:[26,1,1,""],get_variable_value:[26,1,1,""],get_weights:[26,1,1,""],parallel_predict:[26,1,1,""],predict:[26,1,1,""],reset_accumulated_gradients:[26,1,1,""],set_variable_value:[26,1,1,""],set_weights:[26,1,1,""],train_on_batch:[26,1,1,""]},"rl_coach.architectures.network_wrapper":{NetworkWrapper:[26,0,1,""]},"rl_coach.architectures.network_wrapper.NetworkWrapper":{apply_gradients_and_sync_networks:[26,1,1,""],apply_gradients_to_global_network:[26,1,1,""],apply_gradients_to_online_network:[26,1,1,""],collect_savers:[26,1,1,""],parallel_prediction:[26,1,1,""],set_is_training:[26,1,1,""],sync:[26,1,1,""],train_and_sync_networks:[26,1,1,""],update_online_network:[26,1,1,""],update_target_network:[26,1,1,""]},"rl_coach.base_parameters":{AgentParameters:[3,0,1,""],DistributedTaskParameters:[0,0,1,""],NetworkParameters:[26,0,1,""],PresetValidationParameters:[0,0,1,""],TaskParameters:[0,0,1,""],VisualizationParameters:[0,0,1,""]},"rl_coach.core_types":{ActionInfo:[27,0,1,""],Batch:[27,0,1,""],EnvResponse:[27,0,1,""],Episode:[27,0,1,""],Transition:[27,0,1,""]},"rl_coach.core_types.Batch":{actions:[27,1,1,""],game_overs:[27,1,1,""],goals:[27,1,1,""],info:[27,1,1,""],info_as_list:[27,1,1,""],n_step_discounted_rewards:[27,1,1,""],next_states:[27,1,1,""],rewards:[27,1,1,""],shuffle:[27,1,1,""],size:[27,1,1,""],slice:[27,1,1,""],states:[27,1,1,""]},"rl_coach.core_types.Episode":{get_first_transition:[27,1,1,""],get_last_transition:[27,1,1,""],get_transition:[27,1,1,""],get_transitions_attribute:[27,1,1,""],insert:[27,1,1,""],is_empty:[27,1,1,""],length:[27,1,1,""],update_discounted_rewards:[27,1,1,""]},"rl_coach.data_stores.nfs_data_store":{NFSDataStore:[28,0,1,""]},"rl_coach.data_stores.s3_data_store":{S3DataStore:[28,0,1,""]},"rl_coach.environments.carla_environment":{CarlaEnvironment:[29,0,1,""]},"rl_coach.environments.control_suite_environment":{ControlSuiteEnvironment:[29,0,1,""]},"rl_coach.environments.doom_environment":{DoomEnvironment:[29,0,1,""]},"rl_coach.environments.environment":{Environment:[29,0,1,""]},"rl_coach.environments.environment.Environment":{action_space:[29,1,1,""],close:[29,1,1,""],get_action_from_user:[29,1,1,""],get_available_keys:[29,1,1,""],get_goal:[29,1,1,""],get_random_action:[29,1,1,""],get_rendered_image:[29,1,1,""],goal_space:[29,1,1,""],handle_episode_ended:[29,1,1,""],last_env_response:[29,1,1,""],phase:[29,1,1,""],render:[29,1,1,""],reset_internal_state:[29,1,1,""],set_goal:[29,1,1,""],state_space:[29,1,1,""],step:[29,1,1,""]},"rl_coach.environments.gym_environment":{GymEnvironment:[29,0,1,""]},"rl_coach.environments.starcraft2_environment":{StarCraft2Environment:[29,0,1,""]},"rl_coach.exploration_policies.additive_noise":{AdditiveNoise:[30,0,1,""]},"rl_coach.exploration_policies.boltzmann":{Boltzmann:[30,0,1,""]},"rl_coach.exploration_policies.bootstrapped":{Bootstrapped:[30,0,1,""]},"rl_coach.exploration_policies.categorical":{Categorical:[30,0,1,""]},"rl_coach.exploration_policies.continuous_entropy":{ContinuousEntropy:[30,0,1,""]},"rl_coach.exploration_policies.e_greedy":{EGreedy:[30,0,1,""]},"rl_coach.exploration_policies.exploration_policy":{ExplorationPolicy:[30,0,1,""]},"rl_coach.exploration_policies.exploration_policy.ExplorationPolicy":{change_phase:[30,1,1,""],get_action:[30,1,1,""],requires_action_values:[30,1,1,""],reset:[30,1,1,""]},"rl_coach.exploration_policies.greedy":{Greedy:[30,0,1,""]},"rl_coach.exploration_policies.ou_process":{OUProcess:[30,0,1,""]},"rl_coach.exploration_policies.parameter_noise":{ParameterNoise:[30,0,1,""]},"rl_coach.exploration_policies.truncated_normal":{TruncatedNormal:[30,0,1,""]},"rl_coach.exploration_policies.ucb":{UCB:[30,0,1,""]},"rl_coach.filters.action":{AttentionDiscretization:[33,0,1,""],BoxDiscretization:[33,0,1,""],BoxMasking:[33,0,1,""],FullDiscreteActionSpaceMap:[33,0,1,""],LinearBoxToBoxMap:[33,0,1,""],PartialDiscreteActionSpaceMap:[33,0,1,""]},"rl_coach.filters.observation":{ObservationClippingFilter:[32,0,1,""],ObservationCropFilter:[32,0,1,""],ObservationMoveAxisFilter:[32,0,1,""],ObservationNormalizationFilter:[32,0,1,""],ObservationRGBToYFilter:[32,0,1,""],ObservationReductionBySubPartsNameFilter:[32,0,1,""],ObservationRescaleSizeByFactorFilter:[32,0,1,""],ObservationRescaleToSizeFilter:[32,0,1,""],ObservationSqueezeFilter:[32,0,1,""],ObservationStackingFilter:[32,0,1,""],ObservationToUInt8Filter:[32,0,1,""]},"rl_coach.filters.reward":{RewardClippingFilter:[32,0,1,""],RewardNormalizationFilter:[32,0,1,""],RewardRescaleFilter:[32,0,1,""]},"rl_coach.memories.backend.redis":{RedisPubSubBackend:[35,0,1,""]},"rl_coach.memories.episodic":{EpisodicExperienceReplay:[34,0,1,""],EpisodicHRLHindsightExperienceReplay:[34,0,1,""],EpisodicHindsightExperienceReplay:[34,0,1,""],SingleEpisodeBuffer:[34,0,1,""]},"rl_coach.memories.non_episodic":{BalancedExperienceReplay:[34,0,1,""],ExperienceReplay:[34,0,1,""],PrioritizedExperienceReplay:[34,0,1,""],QDND:[34,0,1,""],TransitionCollection:[34,0,1,""]},"rl_coach.orchestrators.kubernetes_orchestrator":{Kubernetes:[36,0,1,""]},"rl_coach.spaces":{ActionSpace:[37,0,1,""],AttentionActionSpace:[37,0,1,""],BoxActionSpace:[37,0,1,""],CompoundActionSpace:[37,0,1,""],DiscreteActionSpace:[37,0,1,""],GoalsSpace:[37,0,1,""],ImageObservationSpace:[37,0,1,""],MultiSelectActionSpace:[37,0,1,""],ObservationSpace:[37,0,1,""],PlanarMapsObservationSpace:[37,0,1,""],Space:[37,0,1,""],VectorObservationSpace:[37,0,1,""]},"rl_coach.spaces.ActionSpace":{clip_action_to_space:[37,1,1,""],contains:[37,1,1,""],is_valid_index:[37,1,1,""],sample:[37,1,1,""],sample_with_info:[37,1,1,""]},"rl_coach.spaces.GoalsSpace":{DistanceMetric:[37,0,1,""],clip_action_to_space:[37,1,1,""],contains:[37,1,1,""],distance_from_goal:[37,1,1,""],get_reward_for_goal_and_state:[37,1,1,""],goal_from_state:[37,1,1,""],is_valid_index:[37,1,1,""],sample:[37,1,1,""],sample_with_info:[37,1,1,""]},"rl_coach.spaces.ObservationSpace":{contains:[37,1,1,""],is_valid_index:[37,1,1,""],sample:[37,1,1,""]},"rl_coach.spaces.Space":{contains:[37,1,1,""],is_valid_index:[37,1,1,""],sample:[37,1,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"]},objtypes:{"0":"py:class","1":"py:method"},terms:{"100x100":33,"160x160":32,"1_0":[15,25],"1st":30,"20x20":33,"210x160":32,"2nd":30,"50k":41,"9_amd64":44,"abstract":[38,42],"boolean":[3,27,37,52],"break":40,"case":[0,3,5,22,26,27,30,37,46,51,52,53],"class":[0,1,2,3,4,5,6,7,8,10,11,12,13,15,17,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,41,45,52],"default":[0,30,53],"enum":[26,29,37],"export":[0,26,44],"final":[8,13,16,17,19,23,41],"float":[3,4,5,6,7,8,10,11,12,13,15,19,22,23,24,26,27,29,30,32,33,34,37,38,52],"function":[0,1,3,6,7,8,11,13,26,29,30,37,38,39,41,43,52],"import":[6,18,30,34,39,51,53],"int":[0,3,4,5,6,7,10,15,20,22,24,25,27,29,30,32,33,34,37,52],"long":43,"new":[0,3,7,8,11,12,13,22,23,26,27,33,41,42,46,50,51,52],"return":[0,3,8,10,11,13,14,19,22,23,25,26,27,29,30,32,34,37,38,39,41,51,52],"short":[0,41],"static":26,"super":[38,39],"switch":[0,40],"true":[0,3,4,5,6,7,8,11,12,13,22,23,25,26,27,29,30,33,34,37,52],"try":[4,47,51],"while":[0,5,6,8,9,10,11,12,13,26,29,40,43,51,53],AWS:44,Adding:[18,50],And:[39,51],But:[40,51],Doing:51,For:[0,1,2,3,4,7,10,14,15,16,17,20,22,23,26,27,29,30,31,32,33,37,38,39,41,42,43,44,47,52,53],Has:26,Its:52,NFS:[28,44],One:[24,51,53],That:40,The:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,40,41,42,43,44,47,48,50,51,52,53],Then:[4,7,8,13,14,21,23],There:[7,11,26,30,31,38,39,43,46,53],These:[1,2,3,24,29,36,42,43,44],Use:[1,2,8,13,21,22],Used:30,Uses:51,Using:[8,13,14,16,17,44],Will:26,With:[30,50],__init__:[29,38,39],_index:[5,20],_nois:13,_render:39,_restart_environment_episod:39,_take_act:39,_update_st:39,a2c:51,a3c:[10,20,40,51],a_i:22,a_t:[4,5,6,8,12,13,14,15,16,17,19,20,21,23,25],a_valu:5,abl:[33,51],about:[3,27,41,52,53],abov:[8,12,13,26,41],abs:[20,34],absolut:30,acceler:21,accept:29,access:[26,38,44],accord:[0,3,4,5,6,8,12,13,14,20,26,27,30,37,40,41,43,52],accordingli:[22,37,41,53],account:[4,7,11,22,23,30],accumul:[3,4,5,6,10,20,22,25,26,32,51,52],accumulate_gradi:26,accumulated_gradi:26,accur:51,acer:[3,51],acer_ag:6,aceralgorithmparamet:6,achiev:[0,4,7,29,32,34,37,47,51,53],acquir:12,across:[10,19,40],act:[3,4,8,13,14,24,37,38,41,52],action:[1,2,3,15,16,17,18,19,20,23,24,25,26,27,29,30,31,34,38,39,41,43,52],action_idx:39,action_penalti:[8,13],action_spac:[29,30],action_space_s:26,action_valu:[27,30],actioninfo:[3,37,41,52],actionspac:[30,37],actiontyp:39,activ:[8,13,26],actor:[3,6,7,8,11,13,30,43,51],actor_critic_ag:5,actorcriticag:38,actorcriticalgorithmparamet:5,actual:[4,5,15,16,17,24,25,30,33,34],adam:[7,26],adam_optimizer_beta1:26,adam_optimizer_beta2:26,adapt:[7,11],add:[8,9,13,21,26,27,30,32,39,41,44,51],add_rendered_image_to_env_respons:0,added:[0,4,6,7,10,11,22,30,34,38],adding:[3,11,30,38,52],addit:[3,26,27,29,30,32,34,37,39,40,41,43,50,51,52],addition:[26,29,32,38,39,41,47,48,53],additional_fetch:26,additional_input:26,additional_simulator_paramet:[29,39],additionali:40,additive_nois:30,additivenoiseparamet:30,address:13,advanc:[25,50],advantag:[3,5,7,11,18,30],affect:[0,14,26],aforement:[16,17,23],after:[0,3,8,10,11,12,20,21,23,25,26,27,29,32,37,52,53],again:30,against:3,agent:[0,1,2,4,5,6,7,8,10,11,12,13,15,17,19,20,21,22,23,24,25,26,27,29,30,31,32,33,37,39,40,43,45,47,50,51,52],agent_param:42,agent_paramet:[3,26,52],agentparamet:[3,26,38],aggreg:41,ahead:[4,51],aim:30,algorithm:[3,27,30,38,40,41,42,46,47,49,50,52],algorithmparamet:[3,38],all:[0,3,10,14,22,23,26,27,29,30,32,33,37,38,39,40,41,42,43,44,46,48,52,53],all_action_prob:27,allow:[0,3,4,13,18,26,27,29,30,31,32,33,34,40,41,42,43,50,51,52,53],allow_brak:29,allow_duplicates_in_batch_sampl:34,allow_no_action_to_be_select:37,almost:46,along:[22,29,30,48],alpha:[6,19,23,34],alreadi:[22,27,39,51],also:[5,6,7,22,23,26,29,37,38,40,46,47,51,53],altern:[29,39,48],alwai:[26,30,33],amazon:44,amazonaw:44,amount:[8,10,13,19,23,30,41,51],analysi:40,analyz:40,ani:[3,26,27,29,33,34,38,41,42,43,44,46,52],anoth:[3,18,26,31,52],answer:51,anymor:[3,52],api:[29,43,48,50],appear:[3,52],appli:[0,3,5,8,10,13,20,26,27,30,32,51,52],applic:51,apply_and_reset_gradi:26,apply_gradi:26,apply_gradients_and_sync_network:26,apply_gradients_every_x_episod:[5,10,20],apply_gradients_to_global_network:26,apply_gradients_to_online_network:26,apply_stop_condit:0,appropri:44,approx:[8,12,13],approxim:[12,13,43,51],apt:44,arbitrari:32,architectur:[3,18,38,50,52],architecture_num_q_head:30,area:33,arg:[3,26,44,52],argmax_a:[16,19,23],argument:[3,15,25,26,29,37,41,52],around:[26,27,43],arrai:[3,26,27,29,32,37,39,52],art:[3,45],artifact:44,artifici:34,arxiv:[20,34],aspect:[30,32,40],assign:[0,2,5,6,26,30],assign_kl_coeffici:26,assign_op:26,assum:[27,30,32,34,51],async:[26,42],async_train:26,asynchron:[5,20,26],atari:[17,29,32,44,53],atari_a3c:53,atari_dqn:53,ath:18,atom:[15,24,25],attach:29,attempt:0,attend:33,attent:33,attentionactionspac:33,attentiondiscret:33,attribut:27,attribute_nam:27,author:[29,47,48],auto_select_all_armi:29,autoclean:44,automat:[26,53],autonom:[29,48,50],autoremov:44,auxiliari:[29,48],avail:[4,26,27,29,30,40,42,44,50,51,53],averag:[6,7,11,26,40,41],avg:6,aws:44,axes:[32,40],axi:[32,40],axis_origin:32,axis_target:32,back:[7,42],backend:[26,42,44,50,53],background:53,backpropag:22,backward:26,balanc:2,band:40,bar:6,base1:44,base64:44,base:[7,11,12,19,21,23,29,34,38,41,44,46,48,51,52],base_paramet:[0,3,26,29,30],baselin:51,basic:[10,27,42,53],batch:[1,2,3,4,5,6,8,10,11,12,13,14,15,16,17,18,20,23,24,25,26,34,38,41,49,50,52],batch_siz:26,batchnorm:26,bc_agent:1,bcalgorithmparamet:1,becaus:41,becom:[8,13,42],been:[18,27,32,47,51],befor:[0,3,5,11,13,25,26,27,32,41,42,43,44,51,52],begin:[0,4,41],behav:37,behavior:[3,32,34,38,47,51,52,53],being:[3,38,50,51,52],bellman:[15,24,25],benchmark:[40,49,50,51],benefici:46,best:[51,53],beta1:26,beta2:26,beta:[6,8,10,13,34],beta_entropi:[5,6,7,10,11],better:[13,18,46,51],between:[0,1,2,3,6,7,8,10,11,12,13,15,19,20,22,24,25,26,27,29,30,33,34,37,38,40,41,43,50,51],bfg:[7,11],bia:[6,51],big:[11,15,25],bin:[33,44],binari:14,bind:26,binomi:14,bit:32,blizzard:48,blob:[29,32],block:50,blog:50,boilerpl:41,bolling:40,bool:[0,3,4,5,6,7,8,11,12,13,22,23,25,26,27,29,30,34,37,52],boost:[44,51],bootstrap:[3,5,6,7,8,11,13,19,20,22,23,25,27,51],bootstrap_total_return_from_old_polici:[22,27],both:[3,7,26,29,30,33,51,52],bound:[6,7,11,15,25,30,37,51],box2d:44,box:[30,33,37],boxactionspac:33,boxdiscret:33,boxmask:33,breakout:53,breakoutdeterminist:[29,53],bring:11,bucket:44,buffer:[1,2,3,6,12,14,15,16,17,20,22,23,24,25,34,41,51,52,53],build:[31,50,51],builder:44,built:[38,41],bullet:6,button:[40,53],c51:15,cach:44,cadenc:13,calcul:[3,4,5,6,7,8,10,11,13,14,15,16,17,19,20,22,23,24,25,26,27,30,34,38,52],call:[0,3,10,20,26,27,29,41,52],call_memori:[3,52],callabl:37,camera:[29,39],camera_height:29,camera_width:29,cameratyp:[29,39],can:[0,2,3,5,6,7,8,11,12,13,23,26,27,29,30,31,32,33,37,38,39,40,41,43,46,48,50,52,53],cannot:[3,46,52],carla:[32,48],carla_environ:29,carlaenviron:29,carlaenvironmentparamet:29,carlo:[3,23],cartpol:[29,39],cartpole_a3c:53,cartpole_clippedppo:[44,53],cartpole_dqn:53,categor:[3,5,6,51],categori:[31,32],categorical_dqn_ag:15,categoricaldqnalgorithmparamet:15,caus:[32,40],cdot:[5,7,8,10,12,13,14,15,16,17,19,21,23,25],central:[26,40],certainti:30,chain:[8,13],challeng:41,chang:[0,3,6,7,8,11,13,14,18,20,23,30,41,44,52],change_phas:30,channel:[29,32],channels_axi:37,check:[0,3,27,37,52],checkpoint:[0,3,26,28,42,44,52,53],checkpoint_dir:[3,52],checkpoint_prefix:[3,52],checkpoint_restore_dir:[0,53],checkpoint_restore_path:0,checkpoint_save_dir:0,checkpoint_save_sec:0,child:26,chmod:44,choic:[38,44],choos:[3,18,23,30,31,33,37,38,41,43,51,52,53],choose_act:[3,38,41,52],chosen:[3,12,23,30,33,38,52],chunk:11,cil:51,cil_ag:2,cilalgorithmparamet:2,classic_control:44,clean:[29,38,44],cli:44,clip:[3,6,8,11,13,26,32,37,51],clip_action_to_spac:37,clip_critic_target:[8,13],clip_gradi:26,clip_high:30,clip_likelihood_ratio_using_epsilon:[7,11],clip_low:30,clip_max:32,clip_min:32,clipbyglobalnorm:26,clipped_ppo_ag:7,clippedppoalgorithmparamet:7,clipping_high:32,clipping_low:32,clone:[3,51],close:29,cmake:44,coach:[0,3,26,28,29,30,31,35,36,38,41,45,46,47,48,51,53],code:[39,41,51],coeffici:[7,11,26,30,34],collect:[3,7,10,11,20,26,27,34,41,46,47,50,52,53],collect_sav:[3,26,52],color:32,com:44,combin:[25,43,50,51],comma:0,command:[41,44,53],common:[38,40,44,53],commun:42,compar:[0,11,18,51],complet:[27,30,41],complex:[26,31,41,43,51,53],compon:[3,15,25,26,30,36,38,41,50,52,53],composit:[3,52],compositeag:[3,52],comput:[26,30],concat:26,concentr:41,condit:[0,3],confid:30,config:[29,53],configur:[3,5,10,38,44,52],confus:41,connect:[12,26],connectionist:10,consecut:[8,13,22],consequ:[20,30],consid:[5,6,30,33,40],consist:[8,13,29,32,33,37,41,48],constant:6,constantli:53,constantschedul:34,constrain:33,construct:[12,26,34],consumpt:32,contain:[0,1,2,3,14,26,27,29,37,39,41,52,53],content:44,contin:42,continu:[1,2,5,8,9,10,13,21,30,31,33,37,47],continuous_entropi:30,continuous_exploration_policy_paramet:30,contribut:[4,50],control:[2,3,5,6,7,8,11,26,30,32,40,48,50,51,52],control_suite_environ:29,controlsuiteenviron:29,conveni:[40,53],converg:10,convers:31,convert:[3,27,30,32,37,41,43,52],convolut:[26,43],coordin:33,copi:[8,12,13,14,15,16,17,19,20,21,23,24,25,26,44],core:50,core_typ:[3,27,29,37,52,53],correct:[3,6,51],correctli:26,correl:30,correpond:27,correspond:[2,3,4,15,16,26,27,30,32,37,39,52],could:[3,26,37,44,46,52],count:19,countabl:33,counter:[3,52],counterpart:43,cpu:[0,26],crd:53,creat:[3,20,26,32,39,52,53],create_network:[3,52],create_target_network:26,creation:[3,52],credenti:44,critic:[3,6,7,8,11,13,30,43,51],crop:[32,33],crop_high:32,crop_low:32,cross:[1,15,25],csv:0,ctrl:40,cuda:44,cudnn7:44,curl:44,curr_stat:[3,38,52],current:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,16,17,19,21,22,23,24,26,27,29,30,32,33,37,38,41,50,51,52],custom:[29,30,37,38,41],custom_reward_threshold:29,cycl:41,dai:53,dashboard:[0,3,44,50,52],data:[0,3,10,20,26,34,41,42,44,46,47,50,51,52,53],data_stor:[28,44],dataset:[3,7,11,46,51,52,53],date:[22,43,51,53],dcp:[44,53],ddpg:51,ddpg_agent:8,ddpgalgorithmparamet:8,ddqn:[19,23,51],deal:51,debug:[0,40,50],decai:[5,7,11,26],decid:[0,3,4,29,30,38,52],decis:[3,52],declar:0,decod:44,dedic:26,deep:[0,3,5,12,14,16,18,20,21,25,52],deepmind:48,def:[38,39],default_act:37,default_input_filt:39,default_output_filt:39,defin:[0,3,5,6,7,10,11,12,20,22,23,26,27,29,30,32,33,34,37,38,39,41,42,43,47,48,52,53],definit:[3,26,29,37,39,41,52],delai:[3,51],delta:[6,15,22,25],demonstr:[1,2,53],dens:30,densiti:19,depecr:0,depend:[0,3,6,26,32,34,37,39,44,47,51,52],deploi:[36,42,46],depth:29,descend:51,describ:[3,15,24,32,34,38,41,44,52],descript:[3,33,37,45,53],design:[41,44,50],desir:[33,38],destabil:10,detail:[3,27,45,46,48,50,53],determin:[2,3,22,27,34,52],determinist:[3,12,51],dev:44,develop:[41,47],deviat:[10,11,30,32,40],devic:26,dfp:51,dfp_agent:4,dfpalgorithmparamet:4,dict:[3,4,26,27,29,30,37,52],dict_siz:34,dictat:4,dictionari:[2,3,26,27,29,34,37,38,52],did:29,differ:[0,1,2,3,4,5,6,7,10,11,14,18,26,29,30,32,37,38,39,40,42,43,50,51,52],differenti:18,difficult:[40,47],difficulti:53,dimens:[27,29,32,33],dimension:[11,33],dir:[0,3,52,53],direct:[3,29,52],directli:[3,5,41,43,52],directori:[0,26,38,40,44,53],disabl:53,disable_fog:29,disappear:29,disassembl:51,discard:[27,32],discount:[8,10,11,13,19,22,23,25,26,27,51],discret:[1,2,4,7,11,14,15,16,17,18,19,20,22,23,24,25,30,31,32,33,37,41],disentangl:41,disk:0,displai:[0,40],distanc:37,distance_from_go:37,distance_metr:37,distancemetr:37,distil:[3,52],distribut:[5,6,10,11,12,15,24,25,26,28,30,35,36,37,43,50,51,53],distributed_coach:42,distributed_coach_synchronization_typ:42,distributedcoachsynchronizationtyp:42,divereg:[7,11],diverg:[6,7,11,25],dnd:[0,22,51],dnd_key_error_threshold:22,dnd_size:22,do_action_hindsight:34,doc:44,docker:44,dockerfil:44,document:48,doe:[14,26,32],doesn:42,doing:[7,11,31],domain:43,don:[4,30,40,51],done:[0,3,7,10,11,13,29,32,39,52,53],doom:[29,39,44,48],doom_basic_bc:53,doom_basic_dqn:53,doom_environ:[29,39,53],doomenviron:[29,39],doomenvironmentparamet:[39,53],doominputfilt:39,doomlevel:29,doomoutputfilt:39,doubl:[3,19,25],doubli:52,down:[26,29,51],download:44,dpkg:44,dqn:[3,19,20,25,29,30,32,33,41,43,51],dqn_agent:[17,52],dqnagent:52,dqnalgorithmparamet:17,drive:[2,29,48,50],driving_benchmark:29,due:32,duel:[3,25],dump:[0,3,52],dump_csv:0,dump_gif:0,dump_in_episode_sign:0,dump_mp4:0,dump_one_value_per_episod:[3,52],dump_one_value_per_step:[3,52],dump_parameters_document:0,dump_signals_to_csv_every_x_episod:0,dure:[3,6,7,10,11,12,14,22,30,40,41,52,53],dynam:[40,47,51],e_greedi:30,each:[0,1,2,3,4,5,6,7,10,11,12,14,16,17,18,20,22,23,24,26,27,29,30,31,32,33,34,37,38,40,41,42,43,44,47,51,52],eas:40,easi:[39,40,50],easier:43,easili:[30,46,53],echo:44,effect:[0,3,6,7,20,32,41,52],effici:[6,41,51],either:[0,3,5,20,26,30,37,40,43,53],element:[3,14,26,32,37],elf:44,embbed:26,embed:[3,22,26,52],embedd:[26,43],embedding_merger_typ:26,embeddingmergertyp:26,emploi:51,empti:27,emul:6,enabl:[26,43,53],encod:[32,37],encourag:[21,23,41],end:[2,3,10,25,27,29,32,52,53],enforc:33,engin:[29,48],enough:[4,6,22],ensembl:[30,51],ensur:[6,26],enter:[3,52,53],entir:[11,19,22,25,30,33,41],entri:[22,41],entropi:[1,5,6,7,10,11,12,15,25,30,51],enumer:37,env:[27,44],env_param:39,env_respons:[3,52],enviorn:29,environ:[0,3,4,6,18,26,27,30,31,32,33,37,38,41,44,47,49,50,52],environmentparamet:[29,39],envrespons:[0,3,29,52],episod:[0,3,4,5,10,11,14,19,20,25,29,30,38,39,40,41,42,52,53],episode_max_tim:29,episodic_hindsight_experience_replai:34,epoch:[7,52],epsilon:[7,30,34],epsilon_schedul:30,equal:2,equat:[8,12,13,16,17,20,24],error:[13,26,51],escap:53,especi:18,essenti:[20,26,33,39,41,44],estim:[3,5,7,11,14,19,23,30,52],estimate_state_value_using_ga:[5,7,11],eta:[7,11],etc:[0,3,26,29,31,37,38,48,52],evalu:[0,3,12,26,27,30,41,46,52],evaluate_onli:0,evaluation_epsilon:30,evaluation_nois:30,even:[18,26,29,39,40,41,46,51],everi:[0,5,6,8,10,12,13,14,15,16,17,19,20,21,23,24,25,53],exact:[22,30,47],exactli:26,exampl:[2,3,4,26,27,29,30,31,32,33,37,38,39,41,43,46,52,53],except:[20,27],execut:[27,40,41],exercis:13,exhibit:[3,38,52],exist:[22,26],exit:[3,52],expand_dim:27,expect:[0,3,30,47,52],experi:[0,6,8,11,12,13,25,29,34,35,40,41,42,44,46,50,51,53],experiment_path:[0,29],experiment_suit:29,experimentsuit:29,expert:[1,2,27,51],exploit:[30,41],explor:[3,4,5,6,7,8,9,11,13,14,19,21,22,38,41,46,50,51],exploration_polici:30,explorationparamet:[3,30,38],exponenti:[6,7,11,25,26],expor:3,export_onnx_graph:0,expos:[40,43,50],extend:[29,30,48],extens:[29,48],extent:53,extern:0,extra:[3,26,27,43,52],extract:[3,21,22,27,32,37,40,41,52],factor:[8,10,11,13,23,25,26,27,30,32],failur:0,faithfulli:40,fake:37,fals:[0,3,8,13,26,27,29,30,33,34,37,39,52],far:[11,32,41,47],faster:[18,51],featur:[8,13,29,43,50,51],feature_minimap_maps_to_us:29,feature_screen_maps_to_us:29,fetch:[26,27],fetched_tensor:26,few:[10,14,15,16,17,19,23,24,25,30,39],field:[47,50],file:[0,3,38,41,52,53],fill:[27,39],filter:[0,3,50,52],find:[16,40,48,50],finish:[22,53],finit:33,first:[0,8,11,13,14,22,24,25,26,27,32,41,43],fit:[13,37],fix:46,flag:[0,3,26,27,29,52],flexibl:42,flicker:29,flow:[31,50],follow:[2,3,5,6,8,10,12,13,15,16,17,20,21,22,24,25,26,27,29,30,34,38,39,44,47,51,52],footprint:32,forc:[26,29,33,39],force_cpu:26,force_environment_reset:[29,39],force_int_bin:33,forced_attention_s:37,form:[4,20,37,51],format:38,formul:[5,6],forward:[26,30],found:[3,45,46,53],frac:[6,7,12,15,25],fraction:[7,11],frame:[0,29],frame_skip:29,framework:[0,3,26,38,50,52],framework_typ:0,free:[29,48],freeglut3:44,freez:[3,52],freeze_memori:[3,52],frequenc:13,from:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,29,30,31,32,33,35,37,38,39,40,41,42,43,44,46,47,48,50,52,53],full:[3,10,19,33,52],fulldiscreteactionspacemap:33,fulli:26,func:[3,52],further:46,futur:[0,3,10,27,51],future_measurements_weight:4,gae:[5,7,11],gae_lambda:[5,7,11],game:[3,27,29,48,50,52,53],game_ov:27,gamma:[5,6,8,12,13,14,15,16,17,19,20,21,22,23,25],gap:[23,51],gather:42,gaussian:[11,12,13,30],gener:[0,5,7,11,14,26,29,30,34,37,38,44,53],general_network:38,get:[3,4,7,8,9,10,11,13,14,16,17,19,21,23,26,27,29,30,37,41,43,44,47,52],get_act:30,get_action_from_us:29,get_available_kei:29,get_first_transit:27,get_goal:29,get_last_env_respons:29,get_last_transit:27,get_output_head:38,get_predict:[3,52],get_random_act:29,get_rendered_imag:[29,39],get_reward_for_goal_and_st:37,get_state_embed:[3,52],get_transit:27,get_transitions_attribut:27,get_variable_valu:26,get_weight:26,gfortran:44,gif:0,git:44,github:[39,44,47,50],given:[0,1,2,3,4,5,8,10,11,13,26,27,29,30,32,33,34,37,38,41,46,52],given_weight:26,global:[3,26,43,52],global_network:26,glx:44,goal:[1,2,3,4,6,26,27,29,34,41,43,51,52],goal_from_st:37,goal_nam:37,goal_spac:29,goal_vector:4,goals_spac:34,goalsspac:[34,37],goaltorewardconvers:37,going:31,good:[39,40],gpu:[0,26],gracefulli:53,gradient:[3,5,6,7,11,20,22,26,38,51,52],gradientclippingmethod:26,gradients_clipping_method:26,granular:34,graph:0,graphmanag:41,grayscal:[32,37],greedili:41,group:40,grow:25,guidelin:51,gym:[44,48],gym_environ:[29,53],gymenviron:29,gymenvironmentparamet:39,hac:51,had:47,hand:[18,32,41,51],handl:4,handle_episode_end:[3,29,52],handling_targets_after_episode_end:4,handlingtargetsafterepisodeend:4,hard:[40,51],harder:[40,46],has:[0,3,18,22,23,27,30,32,41,43,47,51,52],has_glob:26,has_target:26,hat:[6,7,15,25],have:[0,3,4,6,26,29,30,32,33,34,41,43,46,47,52],head:[1,2,3,5,6,10,14,18,21,22,26,30,38,43,52],headparamet:26,heads_paramet:26,health_gath:29,heat:6,heatup:[30,41],help:[23,27,40,41,51],here:[39,41],heurist:[11,30],hide:43,hierarch:[37,41],hierarchi:[3,41,51,52],high:[8,11,13,32,33,37,40],high_i:37,high_kl_penalty_coeffici:11,high_x:37,higher:11,highest:[5,6,10,23,30,32,33,37],highli:[0,39,51],hindsight:[9,34,51],hindsight_goal_selection_method:34,hindsight_transitions_per_regular_transit:34,hindsightgoalselectionmethod:34,hold:[14,26,27,34,40,41,43],horizont:[44,50,53],host:44,hostnam:0,hot:37,how:[4,7,11,30,42,44,51,53],hrl:34,html:44,http:[20,34,44],hub:44,huber:24,huber_loss_interv:24,human:[0,29],human_control:29,hyper:[38,47],hyperparamet:38,ident:26,identifi:[26,37],ies:52,ignor:29,imag:[0,26,29,32,33,37,39,43,53],image1:44,imit:[3,27,45,51],impact:26,implement:[3,7,11,26,28,29,30,34,38,39,42,47,51,53],impli:53,implment:36,importance_weight:26,importance_weight_trunc:6,importantli:41,improv:[5,18,25,29,41,51],improve_reward_model:52,includ:[0,3,4,29,31,32,36,43,48,52,53],incorpor:26,increas:[11,23,32,51],increment:[3,52],index:[0,2,27,29,32,33,34,37],indic:37,inf:[32,37],infer:[3,26,29,46,52],infinit:[0,51],info:[3,14,27,37,39,52],info_as_list:27,inform:[3,4,20,27,29,31,40,41,44,48,52],inherit:[3,38,39],init_environment_dependent_modul:[3,52],initi:[3,4,11,23,26,27,38,41,50,52],initial_feed_dict:26,initial_kl_coeffici:11,initialize_session_dependent_compon:[3,52],innov:51,input:[1,2,3,4,8,13,14,16,17,19,21,22,23,26,31,37,41,43,52],input_embedders_paramet:26,input_high:32,input_low:32,input_space_high:33,input_space_low:33,inputembedderparamet:26,inputfilt:41,insert:[22,27],inspect:0,instal:[44,53],instanc:[3,35,37,43],instanti:[3,29,41],instead:[0,3,7,20,23,26,32,33,41,51,52],instruct:53,intact:[14,47],integ:[0,32,33],integr:[39,41,42,46,50],intel:50,intend:[10,26,30,41],interact:[27,41,42,46,50,53],interest:[26,40],interfac:[29,40,42,48],intermedi:22,intern:[3,10,20,26,27,31,41,52,53],intersect:51,interv:24,intro:50,introduc:51,invers:[29,48],invok:41,involv:38,is_empti:27,is_valid_index:37,item:27,iter:[3,5,6,8,11,13,18,26,52],its:[0,3,15,25,26,27,30,37,41,44,51,52,53],itself:[26,37,53],job:0,job_typ:0,joint:29,json:0,jump:[4,33],jupyt:38,just:[3,11,23,25,39,41,43,46,52,53],kapa:24,keep:[17,27,32,53],kei:[2,22,26,27,29,34,38,40,44,51,53],key_error_threshold:34,key_width:34,keyboard:[29,53],keyword:26,kl_coeffici:26,kl_coefficient_ph:26,know:[3,51,52,53],knowledg:[3,41,52],known:[27,40,47,51],kubeconfig:36,kubernet:44,kubernetes_orchestr:36,kubernetesparamet:36,kwarg:[26,29],l2_norm_added_delta:22,l2_regular:26,lack:40,lamb:30,lambda:[5,7,11,30],lane:2,larg:[30,32,48],larger:26,last:[4,6,11,22,27,29,32],last_env_respons:29,lastli:41,later:[0,3,26,52,53],latest:[20,22,41,44],layer:[26,30,34,41,43],lazi:[27,32],lazystack:32,lbfg:26,ld_library_path:44,lead:30,learn:[0,3,4,5,6,8,9,10,12,14,15,16,17,18,21,24,25,26,27,29,30,32,40,41,43,45,47,48,49,51,52],learn_from_batch:[3,38,41,52],learner:26,learning_r:[26,34],learning_rate_decay_r:26,learning_rate_decay_step:26,least:[43,51],leav:[11,14],left:[2,6,12,51],length:[4,5,7,11,20,22,26,27],less:[18,51],level:[0,3,26,29,39,52,53],levelmanag:[3,41,52],levelselect:29,libatla:44,libav:44,libavformat:44,libbla:44,libboost:44,libbz2:44,libfluidsynth:44,libgl1:44,libglew:44,libgm:44,libgstream:44,libgtk2:44,libgtk:44,libjpeg:44,liblapack:44,libnotifi:44,libopen:44,libosmesa6:44,libportmidi:44,librari:[29,44,48],libsdl1:44,libsdl2:44,libsdl:44,libsm:44,libsmpeg:44,libswscal:44,libtiff:44,libwebkitgtk:44,libwildmidi:44,like:[12,29,37,41,43,44,46,51],likelihood:[7,11],line:[3,41,52,53],linear:33,linearboxtoboxmap:33,linearli:33,list:[0,3,4,26,27,29,30,32,33,37,38,52,53],load:[0,3,40,42,52,53],load_memory_from_fil:[3,52],load_memory_from_file_path:53,local:[3,43,44,52],locat:[24,27,32,51],log:[0,3,5,6,10,12,52],log_to_screen:[3,52],logger:[0,3,52],look:[39,44],loop:41,loss:[1,2,3,6,7,10,11,15,16,17,24,25,26,30,38,43,52],lot:[30,40,46,47,51],low:[8,11,13,32,33,37],low_i:37,low_x:37,lower:[0,34,41],lowest:[32,33,37],lstm:43,lumin:32,lvert:[6,15,25],lvl:53,mai:[0,26,45,53],main:[3,38,41,43,45,52,53],mainli:42,major:30,make:[0,3,26,29,38,40,44,46,47,51,52],manag:[3,26,42,44,52],mandatori:[37,39,43],mani:[3,18,45,47],manner:[11,19,20,23,32,41],manual:44,map:[3,26,29,31,32,33,37,38,52],mark:27,markdown:52,mask:[14,33],masked_target_space_high:33,masked_target_space_low:33,master:[3,41,44,52],match:[2,22,26,37],mathbb:[5,6],mathcal:13,mathop:5,max:[5,6,13,15,20,25,32],max_a:[14,17,22,23],max_action_valu:27,max_episodes_to_achieve_reward:0,max_fps_for_human_control:0,max_kl_diverg:6,max_over_num_fram:29,max_simultaneous_selected_act:37,max_siz:34,max_spe:29,maxim:[4,16],maximum:[0,12,15,17,22,23,27,29,30,32,34,51],mdp:46,mean:[0,2,7,8,9,10,11,12,13,21,26,30,32,33,37,40,46,51],meant:43,measur:[3,4,26,29,32,37,39,51,52],measurements_nam:37,mechan:[31,42,47,53],memor:51,memori:[3,25,27,32,38,41,42,44,50,51,52],memory_backend:44,memorygranular:34,memoryparamet:[3,38],merg:[26,29],mesa:44,method:[0,5,7,11,13,20,26,32,34],metric:[0,37,40],mid:6,middlewar:[22,26,43],middleware_paramet:26,middlewareparamet:26,midpoint:24,might:[3,10,29,38,43,52],min:[6,7,13,15,23,25],min_:[12,13],min_reward_threshold:0,mind:53,minim:[2,4,15],minimap_s:29,minimum:[0,7,13,32],mitig:51,mix:[3,7,11,22,23,51],mixedmontecarloalgorithmparamet:19,mixer1:44,mixtur:[19,26],mjkei:44,mjpro150:44,mjpro150_linux:44,mkdir:44,mmc:[19,51],mmc_agent:19,mode:[23,26,28,35,36,41,42,44,53],model:[0,19,21,26,50,52,53],modif:51,modifi:6,modul:[3,38,41,42,52],modular:[38,41,43,50],monitor:42,mont:[3,23],monte_carlo_mixing_r:[19,23],more:[3,8,13,20,26,32,38,40,41,43,44,46,50,52,53],moreov:40,most:[3,10,22,26,27,30,43,47,51,52,53],mostli:[32,41],motiv:41,move:[6,7,11,32,40,47],mp4:0,mse:[2,6,16,17,24],much:[7,11,41,51],mujoco:[29,33,39,44,48],mujoco_kei:44,mujoco_pi:44,multi:[11,26,37,43],multidimension:37,multipl:[4,7,11,20,26,29,30,32,33,34,37,40,41,47,50,53],multipli:[4,10,26,32],multiselect:33,multitask:[29,48],must:[26,32,37,47],mxnet:53,n_step:[22,25,27,34],n_step_discounted_reward:27,n_step_q_ag:20,nabla:[6,8,13],nabla_:[8,12,13],nabla_a:[8,13],naf:51,naf_ag:21,nafalgorithmparamet:21,name:[3,26,27,29,32,37,38,44,52,53],namespac:36,nasm:44,nativ:[0,29,39,48],native_rend:0,navig:3,ndarrai:[3,26,27,29,30,32,33,37,39,52],nearest:22,neat:40,nec:[0,51],nec_ag:22,necalgorithmparamet:22,necessari:[3,22,26,52],necessarili:32,need:[0,3,6,25,26,29,30,37,38,41,47,51,52,53],neg:[4,32],neighbor:22,neon_compon:38,nervanasystem:44,network:[0,3,26,30,38,41,47,50,51,52,53],network_input_tupl:26,network_nam:[3,52],network_param:30,network_paramet:26,network_wrapp:[3,26,52],networkparamet:[3,26,30,38],networkwrapp:[3,52],neural:[3,19,26,43,47],never:26,new_value_shift_coeffici:[22,34],new_weight:26,newli:[23,39,46,51],next:[0,3,8,13,16,17,21,23,24,27,29,41,52,53],next_stat:27,nfs_data_stor:28,nfsdatastoreparamet:28,nice:53,no_accumul:26,node:[26,43],nois:[8,9,13,21,30,41,51],noise_as_percentage_from_action_spac:30,noise_schedul:30,noisi:[10,25,30],non_episod:34,none:[0,3,7,8,11,13,26,27,29,30,32,33,37,39,52],norm:26,norm_unclipped_grad:26,norm_unclippsed_grad:26,normal:[3,4,10,30,31,32,37],note:[22,26,30,52],notebook:38,notic:[26,51],notori:[40,47,51],now:[7,39],nstepqalgorithmparamet:20,nth:25,num_act:[22,34,37],num_bins_per_dimens:33,num_class:34,num_consecutive_playing_step:[3,8,13,52],num_consecutive_training_step:[3,52],num_gpu:0,num_neighbor:34,num_predicted_steps_ahead:4,num_speedup_step:29,num_steps_between_copying_online_weights_to_target:[8,12,13,20],num_steps_between_gradient_upd:[5,6,10,20],num_task:0,num_training_task:0,num_transitions_to_start_replai:6,num_work:0,number:[0,2,4,5,6,8,10,12,13,14,15,20,22,24,25,26,27,29,30,32,33,34,40,48,52,53],number_of_knn:22,numpi:[3,26,27,29,30,32,33,37,39,52],nvidia:44,object:[0,3,25,26,29,30,32,34,41,52],observ:[0,3,4,11,26,27,29,31,39,41,52],observation_reduction_by_sub_parts_name_filt:32,observation_space_s:26,observation_space_typ:29,observation_stat:32,observation_typ:29,observationspac:37,observationspacetyp:29,observationtyp:29,off:[3,6,12,42,46,51,52],offer:[29,48],often:[40,41,43,46],old:[7,11,26,51],old_weight:26,onc:[0,7,10,11,14,15,16,17,19,20,23,24,25,26,37,53],one:[0,3,6,18,22,23,26,27,29,30,31,34,37,39,40,43,46,51,52],ones:[39,51],onli:[0,3,4,5,6,7,10,11,14,15,17,18,20,22,24,25,26,27,29,30,32,33,39,41,51,52,53],onlin:[8,12,13,14,15,16,17,19,20,21,22,23,24,25,26,41,43,46],online_network:26,onnx:[0,26],onto:31,open:[0,29,48],openai:[44,48],opencv:44,oper:[23,26,32],ops:26,optim:[3,4,6,26,45,51],optimization_epoch:7,optimizer_epsilon:26,optimizer_typ:26,option:[6,10,26,29,33,37,38,40,42,43,53],orchestr:[42,44,50],order:[0,3,5,6,7,8,10,11,12,13,16,17,18,20,21,22,23,24,26,27,31,32,33,40,41,43,46,47,51,52],org:[20,34],origin:[20,32,33,47],ornstein:[8,9,30],other:[0,2,10,18,23,26,29,31,32,34,40,41,51],otherwis:[11,14,26,29,30,37],ou_process:30,our:7,out:[2,16,17,30,31,33,40,44,50,51,53],outcom:[30,41],output:[0,4,6,8,13,14,15,21,22,26,30,31,32,37,38,43],output_0_0:26,output_observation_spac:32,outputfilt:41,outsid:[4,30],over:[3,7,10,11,20,22,25,26,27,30,32,33,40,41,51,52],overestim:[8,13,51],overfit:11,overhead:0,overlai:40,overrid:[3,52],override_existing_kei:34,overriden:38,overview:41,overwhelm:41,overwritten:26,own:[26,38],p_j:[15,25],page:[3,47],pair:[0,37],pal:[23,51],pal_ag:23,pal_alpha:23,palalgorithmparamet:23,paper:[5,10,12,15,20,22,24,29,34,47],parallel:[6,26,40,43],parallel_predict:26,param:[3,26,27,28,29,30,35,36,38,39,52],paramet:[2,3,4,5,6,7,8,10,11,12,13,15,19,20,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,38,39,47,50,52,53],parameter_nois:30,parameters_server_host:0,parent:[3,26,52],parent_path_suffix:[3,26,52],parmet:3,pars:41,part:[0,3,14,26,27,30,32,33,42,43,47,51,52],part_nam:32,partial:33,partialdiscreteactionspacemap:33,particular:4,particularli:[29,30,37,47,51],pass:[0,4,8,9,13,21,22,26,29,30,31,39,40,41,43,53],patamet:22,patchelf:44,patchelf_0:44,path:[0,3,26,38,39,44,52,53],pattern:41,pdf:34,penal:[7,8,11,13],penalti:11,pendulum_hac:39,pendulum_with_go:39,pendulumwithgo:39,per:[0,3,4,37,38,41,52],percentag:30,percentil:30,perceptron:43,perform:[0,3,6,26,27,32,34,39,40,41,51,52],period:[43,53],persist:3,persistent_advantage_learn:23,perspect:15,phase:[3,6,7,8,9,11,12,13,26,29,30,41,52],phi:[15,25],physic:[29,48],pi_:[6,7,12],pick:[12,29],pickl:53,pickledreplaybuff:53,pip3:44,pip:44,pixel:29,place:[33,40,41],placehold:[26,30],plai:[0,3,10,14,16,17,20,30,38,40,52],plain:43,planarmap:29,planarmapsobservationspac:32,platform:[29,48],pleas:[20,47],plu:26,plugin:44,point:[32,37,41,42],polici:[1,3,4,5,6,9,12,14,20,21,22,28,38,41,42,43,44,45,46,50,51,52],policy_gradient_rescal:[5,7,10,11],policy_gradients_ag:10,policygradientalgorithmparamet:10,policygradientrescal:[5,7,10,11],policyoptimizationag:38,popul:41,popular:[29,48],port:0,posit:[4,32],possibl:[2,3,4,22,30,33,37,40,43,50,51,52,53],post:[31,50],post_training_command:[3,52],power:[29,48],ppo:[7,11,51],ppo_ag:11,ppoalgorithmparamet:11,pre:[8,13,30,31],predefin:[14,23,30,53],predict:[1,2,3,5,6,7,8,11,12,13,14,15,16,17,23,24,25,26,30,43,51,52],prediction_typ:[3,52],predictiontyp:[3,52],prefect:51,prefer:26,prefix:[3,52],prep:44,prepar:[3,52],prepare_batch_for_infer:[3,52],present:[18,22,26,29,32,51],preset:[0,5,38,39,41,42,44,53],press:[40,53],prevent:[8,11,13,41],previou:32,previous:[11,26],print:[0,3,53],print_networks_summari:0,priorit:[25,34],prioriti:[25,34],privat:37,probabilit:[5,6],probabl:[3,5,6,10,14,15,25,27,30,38,51,52],problem:51,procedur:6,process:[0,3,8,9,26,30,31,32,33,38,40,41,43,46,47,50,52],produc:26,progress:26,project:[15,25],propag:7,propagate_updates_to_dnd:22,properti:[3,26,27,29,34,38,39,44,52],proport:34,provid:[26,42],proxi:41,proxim:3,pub:[35,36,44],publish:47,purpos:[0,3,10],pursuit:2,push:[3,52],pybullet:[29,48],pygam:[0,44],pytest:44,python3:44,python:[29,34,38,44,48,50],q_i:12,qr_dqn_agent:24,quad:6,qualiti:29,quantil:[3,51],quantileregressiondqnalgorithmparamet:24,queri:[22,26,41,51],question:51,quit:[40,46],r_i:[5,20],r_t:[4,6,7,25],rainbow:[3,38,51],rainbow_ag:38,rainbow_dqn_ag:25,rainbowag:38,rainbowagentparamet:38,rainbowalgorithmparamet:38,rainbowdqnalgorithmparamet:25,rainbowexplorationparamet:38,rainbowmemoryparamet:38,rainbownetworkparamet:38,rais:[3,27,52],ramp:[38,41],random:[0,20,29,30,37,41,47],random_initialization_step:29,randomli:[27,41],rang:[4,7,8,11,13,15,25,29,32,33,37,51],rare:22,rate:[0,6,19,22,26,29,43],rate_for_copying_weights_to_target:[6,8,12,13],rather:[4,12,40],ratio:[6,7,11,19,32],ratio_of_replai:6,raw:[29,48],reach:[0,11,37],read:[0,28],read_csv_tri:0,readabl:41,readm:44,real:3,reason:[32,47],rebuild_on_every_upd:34,receiv:[26,27],recent:[3,25,26,51,52],recommend:39,redi:[35,36,44],redispubsub:44,redispubsubmemorybackendparamet:35,reduc:[1,2,10,11,23,26,32,41,51],reduct:32,reduction_method:32,reductionmethod:32,redund:32,refer:[2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,42,44],referenc:3,regard:[3,52],region:[6,51],regist:[3,52],register_sign:[3,52],registri:44,regress:[2,3,51],regula:[6,7,11],regular:[5,7,10,11,20,22,26,30,33,34,51],regularli:26,reinforc:[3,5,8,9,10,12,15,16,17,18,20,23,24,25,29,30,40,41,43,45,47,48,49,51],relat:[26,44],relationship:51,releas:[0,50,51],relev:[3,14,30,32,52],remov:[0,32],render:[0,3,29,39],reorder:32,repeat:[29,41],replac:[30,32,34,44],replace_mse_with_huber_loss:26,replai:[1,2,3,6,8,12,13,14,15,16,17,20,22,23,24,25,34,41,51,52,53],replay_buff:53,replicated_devic:26,repo:39,repositori:50,repres:[0,7,11,15,25,26,27,29,30,33,37,53],represent:43,reproduc:[41,47],request:[3,26,52],requir:[3,26,28,30,32,40,43,44,51,52],requires_action_valu:30,rescal:[4,5,7,10,11,26,31,32],rescale_factor:32,research:[29,47,48],reset:[3,22,26,29,30,39,52],reset_accumulated_gradi:26,reset_evaluation_st:[3,52],reset_gradi:26,reset_internal_st:[3,29,52],resourc:[42,44],respect:[8,13,27,29],respons:[3,27,29,41,52],rest:[26,27,33,44],restart:39,restor:[0,3,52],restore_checkpoint:[3,52],result:[3,4,13,15,16,17,18,24,25,26,32,33,47,51,52,53],ret:6,retrac:6,retri:0,retriev:[22,34],return_additional_data:34,reus:41,reusabl:43,reward:[0,1,2,3,4,8,10,13,19,20,25,26,27,29,31,37,39,40,41,51,52],reward_test_level:0,reward_typ:37,rgb:[29,32,37],rho:[6,8,13],rho_t:6,right:[2,3,6,12,30,33,40,51,52],rl_coach:[0,1,2,3,4,5,6,7,8,10,11,12,13,15,17,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,39,44,52,53],rms_prop_optimizer_decai:26,rmsprop:26,roboschool:[29,48],robot:[29,37,48,50],roboti:44,robust:52,rollout:[28,35,36,42,44,53],root:[40,44],rule:[8,13,14],run:[0,3,4,8,10,11,12,13,14,16,17,22,23,26,29,30,32,52,53],run_off_policy_evalu:[3,52],run_pre_network_filter_for_infer:[3,52],runphas:[3,52],runtim:44,rvert:[15,25],rvert_2:6,s3_bucket_nam:44,s3_creds_fil:44,s3_data_stor:28,s3_end_point:44,s3datastoreparamet:28,s_t:[4,5,6,8,12,13,14,15,16,17,19,20,21,23,25],sac:51,sai:51,same:[3,4,7,10,13,19,20,23,26,29,33,34,40,43,47,51,52],sampl:[1,2,3,5,6,8,10,11,12,13,14,15,16,17,19,20,23,24,25,26,30,34,37,41,44,52],sample_with_info:37,satur:[8,13],save:[0,3,25,26,30,44,52,53],save_checkpoint:[3,52],saver:[3,26,52],savercollect:[3,26,52],scale:[4,10,26,32,40,44,50,53],scale_down_gradients_by_number_of_workers_for_sync_train:26,scale_measurements_target:4,scaler:26,schedul:[7,30,34,41,42,44,53],scheme:[5,30,41,51],schulman:11,sci:44,scienc:47,scipi:[32,44],scope:26,scratch:51,scratchpad:0,screen:[3,29,39,53],screen_siz:29,script:41,second:[0,26,40,51,53],section:[44,45,48],see:[3,29,32,44,47,48,51,52,53],seed:[0,29,47],seen:[4,22,23,29,32,41,47,51],segment:[29,37],select:[5,14,22,26,27,30,32,33,37,39,40,41,50,53],self:[3,26,38,39,52],send:[39,43],separ:[0,3,18,32,33,43,45,46,51],separate_actions_for_throttle_and_brak:29,seper:10,sequenti:[4,27,34],serv:[7,10,43],server:0,server_height:29,server_width:29,sess:[3,26,52],session:[3,26,52],set:[0,2,3,4,5,6,7,8,11,13,15,16,17,19,22,23,25,26,27,29,30,32,33,37,38,42,47,48,50,51,52,53],set_environment_paramet:[3,52],set_goal:29,set_incoming_direct:[3,52],set_is_train:26,set_sess:[3,52],set_variable_valu:26,set_weight:26,setup:[3,44,46,52],setup_logg:[3,52],setuptool:44,sever:[0,3,7,10,11,14,26,29,30,32,38,39,40,41,43,48,51,52,53],shape:[26,32,37],share:[0,3,26,34,43,52],shared_memory_scratchpad:0,shared_optim:26,shift:[33,41],shine:40,should:[0,3,4,7,11,14,20,23,26,27,29,32,34,37,38,39,42,52,53],should_dump:0,shouldn:14,show:47,shown:47,shuffl:[3,27,52],side:[3,52],sigma:[13,30],signal:[3,41,52],signal_nam:[3,52],significantli:18,sim:[6,12],similar:[7,18,20,27,29,33,51],simpl:[10,34,38,39,43,50,51,53],simplest:51,simplif:51,simplifi:[7,40,43],simul:[29,39,46,48,53],simultan:7,sinc:[3,7,8,10,13,20,22,23,25,26,30,32,46,52],singl:[3,4,5,6,7,11,14,18,19,20,26,27,29,30,33,37,40,41,43,52],size:[26,27,30,32,33,34,37],skill:51,skip:[29,41],slave:[3,52],slice:27,slow:[26,51,53],slower:[0,13,18,26],slowli:[8,13],small:[7,13,22,34],smaller:30,smooth:[40,51],soft:[3,8,11,13,21,51],soft_actor_critic_ag:12,softactorcriticalgorithmparamet:12,softmax:[26,30],softmax_temperatur:26,softwar:44,sole:46,solut:51,solv:[32,39,48,50],some:[0,3,11,26,27,30,32,38,39,40,43,46,47,51,52,53],sort:24,sourc:[0,1,2,3,4,5,6,7,8,10,11,12,13,15,17,19,20,21,22,23,24,25,26,27,28,29,30,32,33,34,35,36,37,39,44,48,52],space:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,29,30,31,32,33,34,41,50,52],spacesdefinit:[3,26,52],spatial:51,spawn:[42,44],special:18,specif:[0,3,14,18,22,26,27,38,41,53],specifi:[0,26,29,30,32,39,42,53],speed:[26,32,51],speedup:53,spread:[32,33],squar:32,squeeze_list:26,squeeze_output:26,src:44,stabil:[6,20,26,51],stabl:[43,51],stack:[3,31,32,37,52],stack_siz:[26,32],stacking_axi:32,stage:43,stai:47,standard:[7,10,11,14,30,32,40,46],starcraft2_environ:29,starcraft2environ:29,starcraft:[37,48],starcraftobservationtyp:29,start:[3,6,8,11,12,13,18,23,27,32,33,39,44,52],state:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,16,17,18,19,20,21,22,23,24,25,26,27,29,32,34,37,38,39,41,43,45,51,52],state_key_with_the_class_index:[2,34],state_spac:29,state_valu:27,statist:[3,10,32,50,52],std:12,stdev:30,steep:30,step:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,19,21,22,23,24,25,26,27,29,30,32,38,39,40,41,51,52,53],stepmethod:[8,12,13,20],stochast:[12,41,51],stop:[0,29],store:[0,3,22,25,27,29,32,34,40,41,42,44,50,52,53],store_transitions_only_when_episodes_are_termin:25,str:[0,2,3,4,20,26,27,29,30,32,33,37,52],strategi:[29,48],stream:[18,42],strict:47,string:[0,26,29],structur:[0,3,27,34,38,41,52],stuff:26,style:30,sub:[33,34,35,36,37,38,41,44,53],sub_spac:37,subset:[40,47,51],subtract:23,succeed:29,success:[0,29,51],suffer:40,suffici:27,suffix:[3,26,52],suggest:38,suit:[0,48],suitabl:[42,53],sum:[4,7,10,19,26,27],sum_:[5,12,15,19,20,22,25],summari:[0,3,52],supervis:51,suppli:[3,52],support:[0,3,26,29,30,40,43,44,45,46,48,50,53],sure:[0,3,44,47,52],surrog:7,swig:44,swingup:29,symbol:26,sync:[3,26,41,42,52],synchron:[0,26,41,43],system:46,t_max:[10,20],tag:44,take:[0,3,10,11,18,22,23,26,29,30,31,39,40,41,52],taken:[1,2,4,5,6,7,8,11,12,13,15,18,22,23,24,25,26,27,29,30],tanh:[8,13],tar:44,target:[0,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,29,32,33,37,38,41,43,52],target_act:33,target_kl_diverg:11,target_network:26,target_success_r:29,targets_horizon:20,task:[0,1,2,29,32,38,40,48],task_index:0,tau:12,td3:51,td3_agent:13,td3algorithmparamet:13,techniqu:[7,11,50,51],technolog:42,teh:26,temperatur:[26,30],temperature_schedul:30,tensor:[3,26,52],tensorboard:0,tensorflow:[0,3,26,52,53],tensorflow_support:26,term:[6,7,11],termin:[3,8,13,27,41,52],test:[0,3,5,6,8,9,10,11,12,13,26,38,47,50,53],test_using_a_trace_test:0,text:6,textrm:41,than:[0,3,11,13,26,30,40,43,46,52],thei:[3,22,23,26,30,40,41,42,51,52,53],them:[4,5,10,20,26,27,29,32,37,39,40,43],therefor:[0,8,13,26,31,51],theta:[6,7,8,12,13,15,25,30],theta_:[6,7],thi:[0,3,4,5,6,7,8,10,11,13,14,18,20,22,25,26,27,29,30,31,32,33,34,35,37,38,39,40,41,42,43,44,46,47,51,52,53],thing:[40,46],those:[0,3,8,13,14,16,17,18,22,27,30,33,41,43,45,51,52],thousand:[11,14,15,16,17,19,23,24,25],thread:26,three:[3,42,43,44,45],threshold:[11,22,32],through:[0,3,4,8,9,10,11,13,14,22,23,26,38,39,41,43,52],tild:[8,12,13],time:[0,4,23,26,30,33,34,40,43,51],time_limit:39,timestep:[4,10],timid:44,tmp:0,togeth:[3,20,27,41,52],toggl:40,too:11,tool:[40,44,51],top:[26,29,31,32,34,39,40,51],torqu:29,total:[0,3,10,11,19,22,23,27,34,38,40,51,52],total_loss:26,total_return:27,trace:0,trace_max_env_step:0,trace_test_level:0,tradeoff:30,train:[0,3,18,26,30,35,36,38,39,40,41,42,43,46,47,50,51,52],train_and_sync_network:26,train_on_batch:26,train_to_eval_ratio:34,trainer:[28,42],transfer:[29,35,48],transit:[1,2,3,4,5,6,8,10,11,12,13,15,16,17,20,22,23,24,25,34,38,41,42,52],transition_idx:27,tri:51,trick:47,tricki:40,trigger:[29,44],truncat:6,truncated_norm:30,trust:[6,51],ttf2:44,tune:30,tupl:[1,2,3,8,13,26,27,29,34,37,38],turn:[2,51],tutori:[38,39,46],tweak:[3,52],twin:3,two:[8,10,13,20,26,29,30,31,32,33,37,39,42,43,51,53],txt:44,type:[0,3,10,18,26,29,32,37,38,41,43,50,51,52,53],typic:[7,11,26,51,53],ubuntu16:44,uhlenbeck:[8,9,30],uint8:32,unbound:37,uncertain:30,uncertainti:30,unchang:11,unclip:[3,38,52],uncorrel:20,undeploi:42,under:[3,26,38,53],underbrac:5,understand:53,unifi:7,uniformli:[29,30,33,37],union:[3,27,29,30,33,37,52],uniqu:26,unit:40,unlik:11,unmask:33,unnecessari:0,unshar:[3,52],unsign:32,unspecifi:26,unstabl:[40,47],until:[0,6,10,11,22,25,30],unus:26,unzip:44,updat:[3,6,7,8,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,30,38,39,40,41,43,44,51,52],update_discounted_reward:27,update_filter_internal_st:[3,52],update_log:[3,52],update_online_network:26,update_step_in_episode_log:[3,52],update_target_network:26,update_transition_before_adding_to_replay_buff:[3,52],upgrad:44,upon:[3,5,38,52],upper:[6,30],usag:[33,46,50],use:[0,1,2,3,4,5,6,8,9,10,12,13,14,16,17,21,26,27,28,29,30,32,33,34,37,38,39,41,43,44,46,50,51,52,53],use_accumulated_reward_as_measur:4,use_cpu:0,use_deterministic_for_evalu:12,use_full_action_spac:29,use_inputs_for_apply_gradi:26,use_kl_regular:[7,11],use_non_zero_discount_for_terminal_st:[8,13],use_separate_networks_per_head:26,use_target_network_for_evalu:[8,13],use_trust_region_optim:6,used:[0,2,3,5,6,7,8,10,11,12,13,14,15,19,20,21,22,23,24,26,29,30,32,33,34,35,36,38,39,41,42,43,46,47,52,53],useful:[0,3,4,25,26,30,32,37,47,51,52,53],user:[26,29,30,40,41,44],userguid:44,uses:[0,1,7,11,18,27,28,30,36,41,42,44,47,51,53],using:[0,3,5,6,7,8,10,11,12,13,16,17,19,20,21,22,23,25,26,28,29,30,32,35,38,39,40,42,46,48,51,52,53],usr:44,usual:[32,41],util:[3,40,52],v_max:15,v_min:15,val:[3,37,52],valid:[0,37],valu:[0,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,20,21,22,23,25,26,27,29,30,32,33,34,37,38,41,43,44,45,51,52],valuabl:40,value_targets_mix_fract:[7,11],valueexcept:[3,52],valueoptimizationag:38,van:4,vari:43,variabl:[26,29,44],variable_scop:26,varianc:[10,30,40,51],variant:[30,34,51],variou:[3,27,34,50],vector:[3,4,8,9,11,13,14,26,29,32,37,39,43,51,52],vectorobservationspac:32,verbos:29,veri:[0,7,8,10,13,18,22,40,51,53],version:[7,11,27],versu:26,vert:12,vertic:26,via:[2,14],video:[0,3,29],video_dump_method:0,view:40,viewabl:[3,52],visit:47,visual:[0,3,29,48,50],visualization_paramet:29,visualizationparamet:[3,29],vizdoom:[44,48],vote:30,wai:[3,7,11,30,33,39,41,43,50,51,52,53],wait:[5,26,42],walk:39,want:[3,4,25,26,32,33,34,46,52],warn:[30,32,33],wasn:27,weather_id:29,websit:[29,50],weight:[4,5,6,7,8,11,12,13,14,15,16,17,19,20,21,22,23,24,25,26,30,41,43,51],well:[22,26,30,37,51],went:11,were:[4,15,16,17,18,22,24,25,26,27,33,47],west:44,wget:44,what:[11,46,51],whatev:[3,52],when:[0,3,4,5,6,7,8,9,10,11,12,13,22,26,27,28,29,30,32,35,36,38,39,40,52,53],whenev:42,where:[2,3,4,5,6,7,11,14,15,18,20,22,23,25,26,27,29,30,32,33,37,40,46,51,52],whether:30,which:[0,1,2,3,5,6,7,8,10,11,12,13,14,18,20,21,22,23,24,26,27,28,29,30,32,34,35,36,37,38,39,40,41,42,43,45,46,47,48,50,51,52,53],who:41,why:[40,41],window:[32,33],wise:32,within:[0,7,11,21,30,37,40],without:[5,11,33,34,40,51,53],won:[4,26],wont:26,work:[3,20,26,30,32,33,40,41,51,52,53],workaround:0,workdir:44,worker:[0,20,26,28,32,34,35,36,40,42,43,44,51,53],worker_devic:26,worker_host:0,wors:51,would:[26,44,46,51],wrap:[29,32,41,48],wrapper:[3,26,27,29,37,43,52],write:[0,3,52],written:[3,25,28,52],www:44,xdist:44,y_t:[8,12,13,14,16,17,19,21,22,23],year:51,yet:[18,39],you:[4,32,34,38,39,44,50,53],your:[38,39,44,53],yuv:32,z_i:[15,25],z_j:[15,25],zero:[2,13,16,17],zip:44,zlib1g:44},titles:["Additional Parameters","Behavioral Cloning","Conditional Imitation Learning","Agents","Direct Future Prediction","Actor-Critic","ACER","Clipped Proximal Policy Optimization","Deep Deterministic Policy Gradient","Hierarchical Actor Critic","Policy Gradient","Proximal Policy Optimization","Soft Actor-Critic","Twin Delayed Deep Deterministic Policy Gradient","Bootstrapped DQN","Categorical DQN","Double DQN","Deep Q Networks","Dueling DQN","Mixed Monte Carlo","N-Step Q Learning","Normalized Advantage Functions","Neural Episodic Control","Persistent Advantage Learning","Quantile Regression DQN","Rainbow","Architectures","Core Types","Data Stores","Environments","Exploration Policies","Filters","Input Filters","Output Filters","Memories","Memory Backends","Orchestrators","Spaces","Adding a New Agent","Adding a New Environment","Coach Dashboard","Control Flow","Distributed Coach - Horizontal Scale-Out","Network Design","Usage - Distributed Coach","Algorithms","Batch Reinforcement Learning","Benchmarks","Environments","Features","Reinforcement Learning Coach","Selecting an Algorithm","test","Usage"],titleterms:{"final":22,"function":21,"new":[38,39],"switch":53,Adding:[38,39],Using:39,acer:6,across:51,action:[4,5,6,7,8,9,10,11,12,13,14,21,22,33,37,51],actioninfo:27,actor:[5,9,12],addit:[0,53],additivenois:30,advantag:[21,23],agent:[3,38,41,53],algorithm:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,45,51,53],api:39,architectur:26,attentionactionspac:37,backend:35,balancedexperiencereplai:34,batch:[27,46],behavior:1,benchmark:47,between:53,blizzard:29,boltzmann:30,bootstrap:[14,30],boxactionspac:37,build:44,can:51,carla:29,carlo:19,categor:[15,30],choos:[4,5,6,7,8,9,10,11,12,13,14,21,22],clip:7,clone:[1,44],coach:[39,40,42,44,50],collect:51,compar:40,compoundactionspac:37,condit:2,config:44,contain:44,continu:[7,11,12,51],continuousentropi:30,control:[22,29,41],copi:43,core:27,creat:44,critic:[5,9,12],dashboard:40,data:28,deep:[8,13,17,53],deepmind:29,delai:13,demonstr:51,descript:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],design:43,determinist:[8,13],direct:4,discret:[5,6,10,51],discreteactionspac:37,distribut:[42,44],distributedtaskparamet:0,doe:51,doubl:16,dqn:[14,15,16,18,24],duel:18,dump:53,egreedi:30,environ:[29,39,48,51,53],envrespons:27,episod:[22,27,34],episodicexperiencereplai:34,episodichindsightexperiencereplai:34,episodichrlhindsightexperiencereplai:34,evalu:53,experiencereplai:34,explor:30,explorationpolici:30,featur:49,file:44,filter:[31,32,33],flag:53,flow:41,framework:53,from:51,futur:4,gener:18,gif:53,goal:37,gradient:[8,10,13],graph:41,greedi:30,gym:[29,39],have:51,hierarch:9,horizont:42,human:[51,53],imag:44,imageobservationspac:37,imit:[2,53],implement:44,input:32,interfac:44,keep:43,kubernet:36,learn:[2,20,23,46,50,53],level:41,manag:41,memori:[34,35],mix:19,mont:19,more:51,multi:53,multipl:51,multiselectactionspac:37,network:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,43],networkwrapp:26,neural:22,nfsdatastor:28,node:[51,53],non:34,normal:21,observ:[32,37],observationclippingfilt:32,observationcropfilt:32,observationmoveaxisfilt:32,observationnormalizationfilt:32,observationreductionbysubpartsnamefilt:32,observationrescalesizebyfactorfilt:32,observationrescaletosizefilt:32,observationrgbtoyfilt:32,observationsqueezefilt:32,observationstackingfilt:32,observationtouint8filt:32,openai:[29,39],optim:[7,11],orchestr:36,ouprocess:30,out:42,output:33,pain:51,parallel:51,paramet:0,parameternois:30,persist:23,plai:53,planarmapsobservationspac:37,polici:[7,8,10,11,13,30],predict:4,prerequisit:44,presetvalidationparamet:0,prioritizedexperiencereplai:34,process:51,proxim:[7,11],push:44,qdnd:34,quantil:24,rainbow:25,redispubsubbackend:35,regress:24,reinforc:[46,50],render:53,repositori:44,reward:32,rewardclippingfilt:32,rewardnormalizationfilt:32,rewardrescalefilt:32,run:[40,44],s3datastor:28,sampl:51,scale:42,select:51,signal:40,simul:51,singl:53,singleepisodebuff:34,soft:12,solv:51,space:[37,51],starcraft:29,statist:40,step:20,store:[14,28],structur:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25],suit:29,support:42,sync:43,synchron:42,task:51,taskparamet:0,test:52,thread:53,through:53,track:40,train:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,19,20,21,22,23,24,25,53],transit:[14,27],transitioncollect:34,truncatednorm:30,twin:13,type:[27,42],ucb:30,usag:[44,53],vectorobservationspac:37,visual:[40,53],visualizationparamet:0,vizdoom:29,you:51,your:51}}) \ No newline at end of file +Search.setIndex({docnames:["components/additional_parameters","components/agents/imitation/bc","components/agents/imitation/cil","components/agents/index","components/agents/other/dfp","components/agents/policy_optimization/ac","components/agents/policy_optimization/acer","components/agents/policy_optimization/cppo","components/agents/policy_optimization/ddpg","components/agents/policy_optimization/hac","components/agents/policy_optimization/pg","components/agents/policy_optimization/ppo","components/agents/policy_optimization/sac","components/agents/policy_optimization/td3","components/agents/policy_optimization/wolpertinger","components/agents/value_optimization/bs_dqn","components/agents/value_optimization/categorical_dqn","components/agents/value_optimization/double_dqn","components/agents/value_optimization/dqn","components/agents/value_optimization/dueling_dqn","components/agents/value_optimization/mmc","components/agents/value_optimization/n_step","components/agents/value_optimization/naf","components/agents/value_optimization/nec","components/agents/value_optimization/pal","components/agents/value_optimization/qr_dqn","components/agents/value_optimization/rainbow","components/architectures/index","components/core_types","components/data_stores/index","components/environments/index","components/exploration_policies/index","components/filters/index","components/filters/input_filters","components/filters/output_filters","components/memories/index","components/memory_backends/index","components/orchestrators/index","components/spaces","contributing/add_agent","contributing/add_env","dashboard","design/control_flow","design/horizontal_scaling","design/network","dist_usage","features/algorithms","features/batch_rl","features/benchmarks","features/environments","features/index","index","selecting_an_algorithm","test","usage"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,"sphinx.ext.todo":1,"sphinx.ext.viewcode":1,sphinx:56},filenames:["components/additional_parameters.rst","components/agents/imitation/bc.rst","components/agents/imitation/cil.rst","components/agents/index.rst","components/agents/other/dfp.rst","components/agents/policy_optimization/ac.rst","components/agents/policy_optimization/acer.rst","components/agents/policy_optimization/cppo.rst","components/agents/policy_optimization/ddpg.rst","components/agents/policy_optimization/hac.rst","components/agents/policy_optimization/pg.rst","components/agents/policy_optimization/ppo.rst","components/agents/policy_optimization/sac.rst","components/agents/policy_optimization/td3.rst","components/agents/policy_optimization/wolpertinger.rst","components/agents/value_optimization/bs_dqn.rst","components/agents/value_optimization/categorical_dqn.rst","components/agents/value_optimization/double_dqn.rst","components/agents/value_optimization/dqn.rst","components/agents/value_optimization/dueling_dqn.rst","components/agents/value_optimization/mmc.rst","components/agents/value_optimization/n_step.rst","components/agents/value_optimization/naf.rst","components/agents/value_optimization/nec.rst","components/agents/value_optimization/pal.rst","components/agents/value_optimization/qr_dqn.rst","components/agents/value_optimization/rainbow.rst","components/architectures/index.rst","components/core_types.rst","components/data_stores/index.rst","components/environments/index.rst","components/exploration_policies/index.rst","components/filters/index.rst","components/filters/input_filters.rst","components/filters/output_filters.rst","components/memories/index.rst","components/memory_backends/index.rst","components/orchestrators/index.rst","components/spaces.rst","contributing/add_agent.rst","contributing/add_env.rst","dashboard.rst","design/control_flow.rst","design/horizontal_scaling.rst","design/network.rst","dist_usage.rst","features/algorithms.rst","features/batch_rl.rst","features/benchmarks.rst","features/environments.rst","features/index.rst","index.rst","selecting_an_algorithm.rst","test.rst","usage.rst"],objects:{"rl_coach.agents.acer_agent":{ACERAlgorithmParameters:[6,0,1,""]},"rl_coach.agents.actor_critic_agent":{ActorCriticAlgorithmParameters:[5,0,1,""]},"rl_coach.agents.agent":{Agent:[3,0,1,""]},"rl_coach.agents.agent.Agent":{act:[3,1,1,""],call_memory:[3,1,1,""],choose_action:[3,1,1,""],collect_savers:[3,1,1,""],create_networks:[3,1,1,""],freeze_memory:[3,1,1,""],get_predictions:[3,1,1,""],get_state_embedding:[3,1,1,""],handle_episode_ended:[3,1,1,""],init_environment_dependent_modules:[3,1,1,""],initialize_session_dependent_components:[3,1,1,""],learn_from_batch:[3,1,1,""],load_memory_from_file:[3,1,1,""],log_to_screen:[3,1,1,""],observe:[3,1,1,""],parent:[3,1,1,""],phase:[3,1,1,""],post_training_commands:[3,1,1,""],prepare_batch_for_inference:[3,1,1,""],register_signal:[3,1,1,""],reset_evaluation_state:[3,1,1,""],reset_internal_state:[3,1,1,""],restore_checkpoint:[3,1,1,""],run_off_policy_evaluation:[3,1,1,""],run_pre_network_filter_for_inference:[3,1,1,""],save_checkpoint:[3,1,1,""],set_environment_parameters:[3,1,1,""],set_incoming_directive:[3,1,1,""],set_session:[3,1,1,""],setup_logger:[3,1,1,""],sync:[3,1,1,""],train:[3,1,1,""],update_log:[3,1,1,""],update_step_in_episode_log:[3,1,1,""],update_transition_before_adding_to_replay_buffer:[3,1,1,""]},"rl_coach.agents.bc_agent":{BCAlgorithmParameters:[1,0,1,""]},"rl_coach.agents.categorical_dqn_agent":{CategoricalDQNAlgorithmParameters:[16,0,1,""]},"rl_coach.agents.cil_agent":{CILAlgorithmParameters:[2,0,1,""]},"rl_coach.agents.clipped_ppo_agent":{ClippedPPOAlgorithmParameters:[7,0,1,""]},"rl_coach.agents.ddpg_agent":{DDPGAlgorithmParameters:[8,0,1,""]},"rl_coach.agents.dfp_agent":{DFPAlgorithmParameters:[4,0,1,""]},"rl_coach.agents.dqn_agent":{DQNAgent:[53,0,1,""],DQNAlgorithmParameters:[18,0,1,""]},"rl_coach.agents.dqn_agent.DQNAgent":{act:[53,1,1,""],call_memory:[53,1,1,""],choose_action:[53,1,1,""],collect_savers:[53,1,1,""],create_networks:[53,1,1,""],freeze_memory:[53,1,1,""],get_predictions:[53,1,1,""],get_state_embedding:[53,1,1,""],handle_episode_ended:[53,1,1,""],improve_reward_model:[53,1,1,""],init_environment_dependent_modules:[53,1,1,""],initialize_session_dependent_components:[53,1,1,""],learn_from_batch:[53,1,1,""],load_memory_from_file:[53,1,1,""],log_to_screen:[53,1,1,""],observe:[53,1,1,""],parent:[53,1,1,""],phase:[53,1,1,""],post_training_commands:[53,1,1,""],prepare_batch_for_inference:[53,1,1,""],register_signal:[53,1,1,""],reset_evaluation_state:[53,1,1,""],reset_internal_state:[53,1,1,""],restore_checkpoint:[53,1,1,""],run_off_policy_evaluation:[53,1,1,""],run_pre_network_filter_for_inference:[53,1,1,""],save_checkpoint:[53,1,1,""],set_environment_parameters:[53,1,1,""],set_incoming_directive:[53,1,1,""],set_session:[53,1,1,""],setup_logger:[53,1,1,""],sync:[53,1,1,""],train:[53,1,1,""],update_log:[53,1,1,""],update_step_in_episode_log:[53,1,1,""],update_transition_before_adding_to_replay_buffer:[53,1,1,""]},"rl_coach.agents.mmc_agent":{MixedMonteCarloAlgorithmParameters:[20,0,1,""]},"rl_coach.agents.n_step_q_agent":{NStepQAlgorithmParameters:[21,0,1,""]},"rl_coach.agents.naf_agent":{NAFAlgorithmParameters:[22,0,1,""]},"rl_coach.agents.nec_agent":{NECAlgorithmParameters:[23,0,1,""]},"rl_coach.agents.pal_agent":{PALAlgorithmParameters:[24,0,1,""]},"rl_coach.agents.policy_gradients_agent":{PolicyGradientAlgorithmParameters:[10,0,1,""]},"rl_coach.agents.ppo_agent":{PPOAlgorithmParameters:[11,0,1,""]},"rl_coach.agents.qr_dqn_agent":{QuantileRegressionDQNAlgorithmParameters:[25,0,1,""]},"rl_coach.agents.rainbow_dqn_agent":{RainbowDQNAlgorithmParameters:[26,0,1,""]},"rl_coach.agents.soft_actor_critic_agent":{SoftActorCriticAlgorithmParameters:[12,0,1,""]},"rl_coach.agents.td3_agent":{TD3AlgorithmParameters:[13,0,1,""]},"rl_coach.agents.wolpertinger_agent":{WolpertingerAlgorithmParameters:[14,0,1,""]},"rl_coach.architectures.architecture":{Architecture:[27,0,1,""]},"rl_coach.architectures.architecture.Architecture":{accumulate_gradients:[27,1,1,""],apply_and_reset_gradients:[27,1,1,""],apply_gradients:[27,1,1,""],collect_savers:[27,1,1,""],construct:[27,1,1,""],get_variable_value:[27,1,1,""],get_weights:[27,1,1,""],parallel_predict:[27,1,1,""],predict:[27,1,1,""],reset_accumulated_gradients:[27,1,1,""],set_variable_value:[27,1,1,""],set_weights:[27,1,1,""],train_on_batch:[27,1,1,""]},"rl_coach.architectures.network_wrapper":{NetworkWrapper:[27,0,1,""]},"rl_coach.architectures.network_wrapper.NetworkWrapper":{apply_gradients_and_sync_networks:[27,1,1,""],apply_gradients_to_global_network:[27,1,1,""],apply_gradients_to_online_network:[27,1,1,""],collect_savers:[27,1,1,""],parallel_prediction:[27,1,1,""],set_is_training:[27,1,1,""],sync:[27,1,1,""],train_and_sync_networks:[27,1,1,""],update_online_network:[27,1,1,""],update_target_network:[27,1,1,""]},"rl_coach.base_parameters":{AgentParameters:[3,0,1,""],DistributedTaskParameters:[0,0,1,""],NetworkParameters:[27,0,1,""],PresetValidationParameters:[0,0,1,""],TaskParameters:[0,0,1,""],VisualizationParameters:[0,0,1,""]},"rl_coach.core_types":{ActionInfo:[28,0,1,""],Batch:[28,0,1,""],EnvResponse:[28,0,1,""],Episode:[28,0,1,""],Transition:[28,0,1,""]},"rl_coach.core_types.Batch":{actions:[28,1,1,""],game_overs:[28,1,1,""],goals:[28,1,1,""],info:[28,1,1,""],info_as_list:[28,1,1,""],n_step_discounted_rewards:[28,1,1,""],next_states:[28,1,1,""],rewards:[28,1,1,""],shuffle:[28,1,1,""],size:[28,1,1,""],slice:[28,1,1,""],states:[28,1,1,""]},"rl_coach.core_types.Episode":{get_first_transition:[28,1,1,""],get_last_transition:[28,1,1,""],get_transition:[28,1,1,""],get_transitions_attribute:[28,1,1,""],insert:[28,1,1,""],is_empty:[28,1,1,""],length:[28,1,1,""],update_discounted_rewards:[28,1,1,""]},"rl_coach.data_stores.nfs_data_store":{NFSDataStore:[29,0,1,""]},"rl_coach.data_stores.s3_data_store":{S3DataStore:[29,0,1,""]},"rl_coach.environments.carla_environment":{CarlaEnvironment:[30,0,1,""]},"rl_coach.environments.control_suite_environment":{ControlSuiteEnvironment:[30,0,1,""]},"rl_coach.environments.doom_environment":{DoomEnvironment:[30,0,1,""]},"rl_coach.environments.environment":{Environment:[30,0,1,""]},"rl_coach.environments.environment.Environment":{action_space:[30,1,1,""],close:[30,1,1,""],get_action_from_user:[30,1,1,""],get_available_keys:[30,1,1,""],get_goal:[30,1,1,""],get_random_action:[30,1,1,""],get_rendered_image:[30,1,1,""],goal_space:[30,1,1,""],handle_episode_ended:[30,1,1,""],last_env_response:[30,1,1,""],phase:[30,1,1,""],render:[30,1,1,""],reset_internal_state:[30,1,1,""],set_goal:[30,1,1,""],state_space:[30,1,1,""],step:[30,1,1,""]},"rl_coach.environments.gym_environment":{GymEnvironment:[30,0,1,""]},"rl_coach.environments.starcraft2_environment":{StarCraft2Environment:[30,0,1,""]},"rl_coach.exploration_policies.additive_noise":{AdditiveNoise:[31,0,1,""]},"rl_coach.exploration_policies.boltzmann":{Boltzmann:[31,0,1,""]},"rl_coach.exploration_policies.bootstrapped":{Bootstrapped:[31,0,1,""]},"rl_coach.exploration_policies.categorical":{Categorical:[31,0,1,""]},"rl_coach.exploration_policies.continuous_entropy":{ContinuousEntropy:[31,0,1,""]},"rl_coach.exploration_policies.e_greedy":{EGreedy:[31,0,1,""]},"rl_coach.exploration_policies.exploration_policy":{ExplorationPolicy:[31,0,1,""]},"rl_coach.exploration_policies.exploration_policy.ExplorationPolicy":{change_phase:[31,1,1,""],get_action:[31,1,1,""],requires_action_values:[31,1,1,""],reset:[31,1,1,""]},"rl_coach.exploration_policies.greedy":{Greedy:[31,0,1,""]},"rl_coach.exploration_policies.ou_process":{OUProcess:[31,0,1,""]},"rl_coach.exploration_policies.parameter_noise":{ParameterNoise:[31,0,1,""]},"rl_coach.exploration_policies.truncated_normal":{TruncatedNormal:[31,0,1,""]},"rl_coach.exploration_policies.ucb":{UCB:[31,0,1,""]},"rl_coach.filters.action":{AttentionDiscretization:[34,0,1,""],BoxDiscretization:[34,0,1,""],BoxMasking:[34,0,1,""],FullDiscreteActionSpaceMap:[34,0,1,""],LinearBoxToBoxMap:[34,0,1,""],PartialDiscreteActionSpaceMap:[34,0,1,""]},"rl_coach.filters.observation":{ObservationClippingFilter:[33,0,1,""],ObservationCropFilter:[33,0,1,""],ObservationMoveAxisFilter:[33,0,1,""],ObservationNormalizationFilter:[33,0,1,""],ObservationRGBToYFilter:[33,0,1,""],ObservationReductionBySubPartsNameFilter:[33,0,1,""],ObservationRescaleSizeByFactorFilter:[33,0,1,""],ObservationRescaleToSizeFilter:[33,0,1,""],ObservationSqueezeFilter:[33,0,1,""],ObservationStackingFilter:[33,0,1,""],ObservationToUInt8Filter:[33,0,1,""]},"rl_coach.filters.reward":{RewardClippingFilter:[33,0,1,""],RewardNormalizationFilter:[33,0,1,""],RewardRescaleFilter:[33,0,1,""]},"rl_coach.memories.backend.redis":{RedisPubSubBackend:[36,0,1,""]},"rl_coach.memories.episodic":{EpisodicExperienceReplay:[35,0,1,""],EpisodicHRLHindsightExperienceReplay:[35,0,1,""],EpisodicHindsightExperienceReplay:[35,0,1,""],SingleEpisodeBuffer:[35,0,1,""]},"rl_coach.memories.non_episodic":{BalancedExperienceReplay:[35,0,1,""],ExperienceReplay:[35,0,1,""],PrioritizedExperienceReplay:[35,0,1,""],QDND:[35,0,1,""],TransitionCollection:[35,0,1,""]},"rl_coach.orchestrators.kubernetes_orchestrator":{Kubernetes:[37,0,1,""]},"rl_coach.spaces":{ActionSpace:[38,0,1,""],AttentionActionSpace:[38,0,1,""],BoxActionSpace:[38,0,1,""],CompoundActionSpace:[38,0,1,""],DiscreteActionSpace:[38,0,1,""],GoalsSpace:[38,0,1,""],ImageObservationSpace:[38,0,1,""],MultiSelectActionSpace:[38,0,1,""],ObservationSpace:[38,0,1,""],PlanarMapsObservationSpace:[38,0,1,""],Space:[38,0,1,""],VectorObservationSpace:[38,0,1,""]},"rl_coach.spaces.ActionSpace":{clip_action_to_space:[38,1,1,""],contains:[38,1,1,""],is_valid_index:[38,1,1,""],sample:[38,1,1,""],sample_with_info:[38,1,1,""]},"rl_coach.spaces.GoalsSpace":{DistanceMetric:[38,0,1,""],clip_action_to_space:[38,1,1,""],contains:[38,1,1,""],distance_from_goal:[38,1,1,""],get_reward_for_goal_and_state:[38,1,1,""],goal_from_state:[38,1,1,""],is_valid_index:[38,1,1,""],sample:[38,1,1,""],sample_with_info:[38,1,1,""]},"rl_coach.spaces.ObservationSpace":{contains:[38,1,1,""],is_valid_index:[38,1,1,""],sample:[38,1,1,""]},"rl_coach.spaces.Space":{contains:[38,1,1,""],is_valid_index:[38,1,1,""],sample:[38,1,1,""]}},objnames:{"0":["py","class","Python class"],"1":["py","method","Python method"]},objtypes:{"0":"py:class","1":"py:method"},terms:{"100x100":34,"160x160":33,"1_0":[16,26],"1st":31,"20x20":34,"210x160":33,"2nd":31,"50k":42,"9_amd64":45,"abstract":[39,43],"boolean":[3,28,38,53],"break":41,"case":[0,3,5,23,27,28,31,38,47,52,53,54],"class":[0,1,2,3,4,5,6,7,8,10,11,12,13,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,42,46,53],"default":[0,31,54],"enum":[27,30,38],"export":[0,27,45],"final":[8,13,14,17,18,20,24,42],"float":[3,4,5,6,7,8,10,11,12,13,16,20,23,24,25,27,28,30,31,33,34,35,38,39,53],"function":[0,1,3,6,7,8,11,13,27,30,31,38,39,40,42,44,53],"import":[6,19,31,35,40,52,54],"int":[0,3,4,5,6,7,10,16,21,23,25,26,28,30,31,33,34,35,38,53],"long":44,"new":[0,3,7,8,11,12,13,23,24,27,28,34,42,43,47,51,52,53],"return":[0,3,8,10,11,13,15,20,23,24,26,27,28,30,31,33,35,38,39,40,42,52,53],"short":[0,42],"static":27,"super":[39,40],"switch":[0,41],"true":[0,3,4,5,6,7,8,11,12,13,23,24,26,27,28,30,31,34,35,38,53],"try":[4,48,52],"while":[0,5,6,8,9,10,11,12,13,14,27,30,41,44,52,54],AWS:45,Adding:[19,51],And:[40,52],But:[41,52],Doing:52,For:[0,1,2,3,4,7,10,15,16,17,18,21,23,24,27,28,30,31,32,33,34,38,39,40,42,43,44,45,48,53,54],Has:27,Its:53,NFS:[29,45],Not:[],One:[25,52,54],That:41,The:[0,1,2,3,4,5,6,7,8,10,11,12,13,15,16,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,41,42,43,44,45,48,49,51,52,53,54],Then:[4,7,8,13,14,15,22,24],There:[7,11,27,31,32,39,40,44,47,54],These:[1,2,3,25,30,37,43,44,45],Use:[1,2,8,13,14,22,23],Used:31,Uses:52,Using:[8,13,14,15,17,18,45],Will:27,With:[31,51],__init__:[30,39,40],_index:[5,21],_nois:13,_render:40,_restart_environment_episod:40,_take_act:40,_update_st:40,a2c:52,a3c:[10,21,41,52],a_i:23,a_t:[4,5,6,8,12,13,14,15,16,17,18,20,21,22,24,26],a_valu:5,abl:[34,52],about:[3,28,42,53,54],abov:[8,12,13,14,27,42],abs:[21,35],absolut:31,acceler:22,accept:30,access:[27,39,45],accord:[0,3,4,5,6,8,12,13,14,15,21,27,28,31,38,41,42,44,53],accordingli:[23,38,42,54],account:[4,7,11,23,24,31],accumul:[3,4,5,6,10,21,23,26,27,33,52,53],accumulate_gradi:27,accumulated_gradi:27,accur:52,acer:[3,52],acer_ag:6,aceralgorithmparamet:6,achiev:[0,4,7,30,33,35,38,48,52,54],acquir:12,across:[10,20,41],act:[3,4,8,13,15,25,38,39,42,53],action:[1,2,3,16,17,18,19,20,21,24,25,26,27,28,30,31,32,35,39,40,42,44,53],action_idx:40,action_penalti:[8,13],action_spac:[30,31],action_space_s:27,action_valu:[28,31],actioninfo:[3,38,42,53],actionspac:[31,38],actiontyp:40,activ:[8,13,27],actor:[3,6,7,8,11,13,14,31,44,52],actor_critic_ag:5,actorcriticag:39,actorcriticalgorithmparamet:5,actual:[4,5,14,16,17,18,25,26,31,34,35],adam:[7,27],adam_optimizer_beta1:27,adam_optimizer_beta2:27,adapt:[7,11],add:[8,9,13,14,22,27,28,31,33,40,42,45,52],add_rendered_image_to_env_respons:0,added:[0,4,6,7,10,11,14,23,31,35,39],adding:[3,11,31,39,53],addit:[3,27,28,30,31,33,35,38,40,41,42,44,51,52,53],addition:[27,30,33,39,40,42,48,49,54],additional_fetch:27,additional_input:27,additional_simulator_paramet:[30,40],additionali:41,additive_nois:31,additivenoiseparamet:31,address:13,advanc:[26,51],advantag:[3,5,7,11,19,31],affect:[0,15,27],aforement:[17,18,24],after:[0,3,8,10,11,12,14,21,22,24,26,27,28,30,33,38,53,54],again:31,against:3,agent:[0,1,2,4,5,6,7,8,10,11,12,13,14,16,18,20,21,22,23,24,25,26,27,28,30,31,32,33,34,38,40,41,44,46,48,51,52,53],agent_param:43,agent_paramet:[3,27,53],agentparamet:[3,27,39],aggreg:42,ahead:[4,52],aim:31,algorithm:[3,28,31,39,41,42,43,47,48,50,51,53],algorithmparamet:[3,39],all:[0,3,10,15,23,24,27,28,30,31,33,34,38,39,40,41,42,43,44,45,47,49,53,54],all_action_prob:28,allow:[0,3,4,13,19,27,28,30,31,32,33,34,35,41,42,43,44,51,52,53,54],allow_brak:30,allow_duplicates_in_batch_sampl:35,allow_no_action_to_be_select:38,almost:47,along:[23,30,31,49],alpha:[6,20,24,35],alreadi:[23,28,40,52],also:[5,6,7,23,24,27,30,38,39,41,47,48,52,54],altern:[30,40,49],alwai:[27,31,34],amazon:45,amazonaw:45,amount:[8,10,13,20,24,31,42,52],analysi:41,analyz:41,ani:[3,27,28,30,34,35,39,42,43,44,45,47,53],anoth:[3,19,27,32,53],answer:52,anymor:[3,53],api:[30,44,49,51],appear:[3,53],appli:[0,3,5,8,10,13,14,21,27,28,31,33,52,53],applic:52,apply_and_reset_gradi:27,apply_gradi:27,apply_gradients_and_sync_network:27,apply_gradients_every_x_episod:[5,10,21],apply_gradients_to_global_network:27,apply_gradients_to_online_network:27,apply_stop_condit:0,appropri:45,approx:[8,12,13,14],approxim:[12,13,44,52],apt:45,arbitrari:33,architectur:[3,19,39,51,53],architecture_num_q_head:31,area:34,arg:[3,27,45,53],argmax_a:[17,20,24],argument:[3,16,26,27,30,38,42,53],around:[27,28,44],arrai:[3,27,28,30,33,38,40,53],art:[3,46],artifact:45,artifici:35,arxiv:[21,35],aspect:[31,33,41],assign:[0,2,5,6,27,31],assign_kl_coeffici:27,assign_op:27,assum:[28,31,33,35,52],async:[27,43],async_train:27,asynchron:[5,21,27],atari:[18,30,33,45,54],atari_a3c:54,atari_dqn:54,ath:19,atom:[16,25,26],attach:30,attempt:0,attend:34,attent:34,attentionactionspac:34,attentiondiscret:34,attribut:28,attribute_nam:28,author:[30,48,49],auto_select_all_armi:30,autoclean:45,automat:[27,54],autonom:[30,49,51],autoremov:45,auxiliari:[30,49],avail:[4,27,28,30,31,41,43,45,51,52,54],averag:[6,7,11,27,41,42],avg:6,aws:45,axes:[33,41],axi:[33,41],axis_origin:33,axis_target:33,back:[7,43],backend:[27,43,45,51,54],background:54,backpropag:23,backward:27,balanc:2,band:41,bar:6,base1:45,base64:45,base:[7,11,12,20,22,24,30,35,39,42,45,47,49,52,53],base_paramet:[0,3,27,30,31],baselin:52,basic:[10,28,43,54],batch:[1,2,3,4,5,6,8,10,11,12,13,14,15,16,17,18,19,21,24,25,26,27,35,39,42,50,51,53],batch_siz:27,batchnorm:27,bc_agent:1,bcalgorithmparamet:1,becaus:42,becom:[8,13,43],been:[19,28,33,48,52],befor:[0,3,5,11,13,26,27,28,33,42,43,44,45,52,53],begin:[0,4,42],behav:38,behavior:[3,33,35,39,48,52,53,54],being:[3,14,39,51,52,53],bellman:[16,25,26],benchmark:[41,50,51,52],benefici:47,best:[52,54],beta1:27,beta2:27,beta:[6,8,10,13,14,35],beta_entropi:[5,6,7,10,11],better:[13,19,47,52],between:[0,1,2,3,6,7,8,10,11,12,13,16,20,21,23,25,26,27,28,30,31,34,35,38,39,41,42,44,51,52],bfg:[7,11],bia:[6,52],big:[11,16,26],bin:[34,45],binari:15,bind:27,binomi:15,bit:33,blizzard:49,blob:[30,33],block:51,blog:51,boilerpl:42,bolling:41,bool:[0,3,4,5,6,7,8,11,12,13,23,24,26,27,28,30,31,35,38,53],boost:[45,52],bootstrap:[3,5,6,7,8,11,13,20,21,23,24,26,28,52],bootstrap_total_return_from_old_polici:[23,28],both:[3,7,27,30,31,34,52,53],bound:[6,7,11,16,26,31,38,52],box2d:45,box:[31,34,38],boxactionspac:34,boxdiscret:34,boxmask:34,breakout:54,breakoutdeterminist:[30,54],bring:11,bucket:45,buffer:[1,2,3,6,12,15,16,17,18,21,23,24,25,26,35,42,52,53,54],build:[32,51,52],builder:45,built:[39,42],bullet:6,button:[41,54],c51:16,cach:45,cadenc:13,calcul:[3,4,5,6,7,8,10,11,13,14,15,16,17,18,20,21,23,24,25,26,27,28,31,35,39,53],call:[0,3,10,21,27,28,30,42,53],call_memori:[3,53],callabl:38,camera:[30,40],camera_height:30,camera_width:30,cameratyp:[30,40],can:[0,2,3,5,6,7,8,11,12,13,24,27,28,30,31,32,33,34,38,39,40,41,42,44,47,49,51,53,54],candid:14,cannot:[3,47,53],carla:[33,49],carla_environ:30,carlaenviron:30,carlaenvironmentparamet:30,carlo:[3,24],cartpol:[30,40],cartpole_a3c:54,cartpole_clippedppo:[45,54],cartpole_dqn:54,categor:[3,5,6,52],categori:[32,33],categorical_dqn_ag:16,categoricaldqnalgorithmparamet:16,caus:[33,41],cdot:[5,7,8,10,12,13,14,15,16,17,18,20,22,24,26],central:[27,41],certainti:31,chain:[8,13,14],challeng:42,chang:[0,3,6,7,8,11,13,15,19,21,24,31,42,45,53],change_phas:31,channel:[30,33],channels_axi:38,check:[0,3,28,38,53],checkpoint:[0,3,27,29,43,45,53,54],checkpoint_dir:[3,53],checkpoint_prefix:[3,53],checkpoint_restore_dir:[0,54],checkpoint_restore_path:0,checkpoint_save_dir:0,checkpoint_save_sec:0,child:27,chmod:45,choic:[39,45],choos:[3,19,24,31,32,34,38,39,42,44,52,53,54],choose_act:[3,39,42,53],chosen:[3,12,14,24,31,34,39,53],chunk:11,cil:52,cil_ag:2,cilalgorithmparamet:2,classic_control:45,clean:[30,39,45],cli:45,clip:[3,6,8,11,13,27,33,38,52],clip_action_to_spac:38,clip_critic_target:[8,13],clip_gradi:27,clip_high:31,clip_likelihood_ratio_using_epsilon:[7,11],clip_low:31,clip_max:33,clip_min:33,clipbyglobalnorm:27,clipped_ppo_ag:7,clippedppoalgorithmparamet:7,clipping_high:33,clipping_low:33,clone:[3,52],close:30,cmake:45,coach:[0,3,27,29,30,31,32,36,37,39,42,46,47,48,49,52,54],code:[40,42,52],coeffici:[7,11,27,31,35],collect:[3,7,10,11,21,27,28,35,42,47,48,51,53,54],collect_sav:[3,27,53],color:33,com:45,combin:[26,44,51,52],comma:0,command:[42,45,54],common:[39,41,45,54],commun:43,compar:[0,11,19,52],complet:[28,31,42],complex:[27,32,42,44,52,54],compon:[3,16,26,27,31,37,39,42,51,53,54],composit:[3,53],compositeag:[3,53],comput:[27,31],concat:27,concentr:42,condit:[0,3],confid:31,config:[30,54],configur:[3,5,10,39,45,53],confus:42,connect:[12,27],connectionist:10,consecut:[8,13,23],consequ:[21,31],consid:[5,6,31,34,41],consist:[8,13,30,33,34,38,42,49],constant:6,constantli:54,constantschedul:35,constrain:34,construct:[12,27,35],consumpt:33,contain:[0,1,2,3,15,27,28,30,38,40,42,53,54],content:45,contin:43,continu:[1,2,5,8,9,10,13,14,22,31,32,34,38,48],continuous_entropi:31,continuous_exploration_policy_paramet:31,contribut:[4,51],control:[2,3,5,6,7,8,11,27,31,33,41,49,51,52,53],control_suite_environ:30,controlsuiteenviron:30,conveni:[41,54],converg:10,convers:32,convert:[3,28,31,33,38,42,44,53],convolut:[27,44],coordin:34,copi:[8,12,13,15,16,17,18,20,21,22,24,25,26,27,45],core:[3,51,53],core_typ:[3,28,30,38,53,54],correct:[3,6,52],correctli:27,correl:31,correpond:28,correspond:[2,3,4,16,17,27,28,31,33,38,40,53],could:[3,27,38,45,47,53],count:20,countabl:34,counter:[3,53],counterpart:44,cpu:[0,27],crd:54,creat:[3,21,27,33,40,53,54],create_network:[3,53],create_target_network:27,creation:[3,53],credenti:45,critic:[3,6,7,8,11,13,14,31,44,52],crop:[33,34],crop_high:33,crop_low:33,cross:[1,16,26],csv:0,ctrl:41,cuda:45,cudnn7:45,curl:45,curr_stat:[3,39,53],current:[0,1,2,3,4,6,7,8,9,10,11,12,13,14,15,17,18,20,22,23,24,25,27,28,30,31,33,34,38,39,42,51,52,53],custom:[30,31,38,39,42],custom_reward_threshold:30,cycl:42,dai:54,dashboard:[0,3,45,51,53],data:[0,3,10,21,27,35,42,43,45,47,48,51,52,53,54],data_stor:[29,45],dataset:[3,7,11,47,52,53,54],date:[23,44,52,54],dcp:[45,54],ddpg:[14,52],ddpg_agent:8,ddpgalgorithmparamet:8,ddqn:[20,24,52],deal:52,debug:[0,41,51],decai:[5,7,11,27],decid:[0,3,4,30,31,39,53],decis:[3,53],declar:0,decod:45,dedic:27,deep:[0,3,5,12,14,15,17,19,21,22,26,53],deepmind:49,def:[39,40],default_act:38,default_input_filt:40,default_output_filt:40,defin:[0,3,5,6,7,10,11,12,21,23,24,27,28,30,31,33,34,35,38,39,40,42,43,44,48,49,53,54],definit:[3,27,30,38,40,42,53],delai:[3,52],delta:[6,16,23,26],demonstr:[1,2,54],dens:31,densiti:20,depecr:0,depend:[0,3,6,27,33,35,38,40,45,48,52,53],deploi:[37,43,47],depth:30,descend:52,describ:[3,16,25,33,35,39,42,45,53],descript:[3,34,38,46,54],design:[42,45,51],desir:[34,39],destabil:10,detail:[3,28,46,47,49,51,54],determin:[2,3,23,28,35,53],determinist:[3,12,52],dev:45,develop:[42,48],deviat:[10,11,31,33,41],devic:27,dfp:52,dfp_agent:4,dfpalgorithmparamet:4,dict:[3,4,27,28,30,31,38,53],dict_siz:35,dictat:4,dictionari:[2,3,27,28,30,35,38,39,53],did:30,differ:[0,1,2,3,4,5,6,7,10,11,15,19,27,30,31,33,38,39,40,41,43,44,51,52,53],differenti:19,difficult:[41,48],difficulti:54,dimens:[28,30,33,34],dimension:[11,34],dir:[0,3,53,54],direct:[3,30,53],directli:[3,5,14,42,44,53],directori:[0,27,39,41,45,54],disabl:54,disable_fog:30,disappear:30,disassembl:52,discard:[28,33],discount:[8,10,11,13,20,23,24,26,27,28,52],discret:[1,2,4,7,11,14,15,16,17,18,19,20,21,23,24,25,26,31,32,33,34,38,42],disentangl:42,disk:0,displai:[0,41],distanc:38,distance_from_go:38,distance_metr:38,distancemetr:38,distil:[3,53],distribut:[5,6,10,11,12,16,25,26,27,29,31,36,37,38,44,51,52,54],distributed_coach:43,distributed_coach_synchronization_typ:43,distributedcoachsynchronizationtyp:43,divereg:[7,11],diverg:[6,7,11,26],dnd:[0,23,52],dnd_key_error_threshold:23,dnd_size:23,do_action_hindsight:35,doc:45,docker:45,dockerfil:45,document:49,doe:[15,27,33],doesn:43,doing:[7,11,32],domain:44,don:[4,31,41,52],done:[0,3,7,10,11,13,30,33,40,53,54],doom:[30,40,45,49],doom_basic_bc:54,doom_basic_dqn:54,doom_environ:[30,40,54],doomenviron:[30,40],doomenvironmentparamet:[40,54],doominputfilt:40,doomlevel:30,doomoutputfilt:40,doubl:[3,20,26],doubli:53,down:[27,30,52],download:45,dpkg:45,dqn:[3,20,21,26,30,31,33,34,42,44,52],dqn_agent:[18,53],dqnagent:53,dqnalgorithmparamet:18,drive:[2,30,49,51],driving_benchmark:30,due:33,duel:[3,26],dump:[0,3,53],dump_csv:0,dump_gif:0,dump_in_episode_sign:0,dump_mp4:0,dump_one_value_per_episod:[3,53],dump_one_value_per_step:[3,53],dump_parameters_document:0,dump_signals_to_csv_every_x_episod:0,dure:[3,6,7,10,11,12,15,23,31,41,42,53,54],dynam:[41,48,52],e_greedi:31,each:[0,1,2,3,4,5,6,7,10,11,12,15,17,18,19,21,23,24,25,27,28,30,31,32,33,34,35,38,39,41,42,43,44,45,48,52,53],eas:41,easi:[40,41,51],easier:44,easili:[31,47,54],echo:45,effect:[0,3,6,7,21,33,42,53],effici:[6,42,52],either:[0,3,5,21,27,31,38,41,44,54],element:[3,15,27,33,38],elf:45,embbed:27,embed:[3,23,27,53],embedd:[27,44],embedding_merger_typ:27,embeddingmergertyp:27,emploi:52,empti:28,emul:6,enabl:[27,44,54],encod:[33,38],encourag:[22,24,42],end:[2,3,10,26,28,30,33,53,54],enforc:34,engin:[30,49],enough:[4,6,23],ensembl:[31,52],ensur:[6,27],enter:[3,53,54],entir:[11,20,23,26,31,34,42],entri:[23,42],entropi:[1,5,6,7,10,11,12,16,26,31,52],enumer:38,env:[28,45],env_param:40,env_respons:[3,53],enviorn:30,environ:[0,3,4,6,19,27,28,31,32,33,34,38,39,42,45,48,50,51,53],environmentparamet:[30,40],envrespons:[0,3,30,53],episod:[0,3,4,5,10,11,15,20,21,26,30,31,39,40,41,42,43,53,54],episode_max_tim:30,episodic_hindsight_experience_replai:35,epoch:[7,53],epsilon:[7,31,35],epsilon_schedul:31,equal:2,equat:[8,12,13,14,17,18,21,25],error:[13,27,52],escap:54,especi:19,essenti:[21,27,34,40,42,45],estim:[3,5,7,11,15,20,24,31,53],estimate_state_value_using_ga:[5,7,11],eta:[7,11],etc:[0,3,27,30,32,38,39,49,53],evalu:[0,3,12,14,27,28,31,42,47,53],evaluate_onli:0,evaluation_epsilon:31,evaluation_nois:31,even:[19,27,30,40,41,42,47,52],eventu:14,everi:[0,5,6,8,10,12,13,14,15,16,17,18,20,21,22,24,25,26,54],exact:[23,31,48],exactli:[14,27],exampl:[2,3,4,27,28,30,31,32,33,34,38,39,40,42,44,47,53,54],except:[21,28],execut:[28,41,42],exercis:13,exhibit:[3,39,53],exist:[23,27],exit:[3,53],expand_dim:28,expect:[0,3,31,48,53],experi:[0,6,8,11,12,13,14,26,30,35,36,41,42,43,45,47,51,52,54],experiment_path:[0,30],experiment_suit:30,experimentsuit:30,expert:[1,2,28,52],exploit:[31,42],explor:[3,4,5,6,7,8,9,11,13,14,15,20,22,23,39,42,47,51,52],exploration_polici:31,explorationparamet:[3,31,39],exponenti:[6,7,11,26,27],expor:3,export_onnx_graph:0,expos:[41,44,51],extend:[30,31,49],extens:[30,49],extent:54,extern:0,extra:[3,27,28,44,53],extract:[3,22,23,28,33,38,41,42,53],factor:[8,10,11,13,24,26,27,28,31,33],failur:0,faithfulli:41,fake:38,fals:[0,3,8,13,27,28,30,31,34,35,38,40,53],far:[11,33,42,48],faster:[19,52],featur:[8,13,30,44,51,52],feature_minimap_maps_to_us:30,feature_screen_maps_to_us:30,fetch:[27,28],fetched_tensor:27,few:[10,15,16,17,18,20,24,25,26,31,40],field:[48,51],file:[0,3,39,42,53,54],fill:[28,40],filter:[0,3,51,53],filtered_action_spac:38,find:[14,17,41,49,51],finish:[23,54],finit:34,first:[0,8,11,13,14,15,23,25,26,27,28,33,42,44],fit:[13,38],fix:47,flag:[0,3,27,28,30,53],flexibl:43,flicker:30,flow:[14,32,51],follow:[2,3,5,6,8,10,12,13,14,16,17,18,21,22,23,25,26,27,28,30,31,35,39,40,45,48,52,53],footprint:33,forc:[27,30,34,40],force_cpu:27,force_environment_reset:[30,40],force_int_bin:34,forced_attention_s:38,form:[4,21,38,52],format:39,formul:[5,6],forward:[27,31],found:[3,46,47,54],frac:[6,7,12,16,26],fraction:[7,11],frame:[0,30],frame_skip:30,framework:[0,3,27,39,51,53],framework_typ:0,free:[30,49],freeglut3:45,freez:[3,53],freeze_memori:[3,53],frequenc:13,from:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,30,31,32,33,34,36,38,39,40,41,42,43,44,45,47,48,49,51,53,54],full:[3,10,20,34,53],fulldiscreteactionspacemap:34,fulli:27,func:[3,53],further:47,futur:[0,3,10,28,52],future_measurements_weight:4,gae:[5,7,11],gae_lambda:[5,7,11],game:[3,28,30,49,51,53,54],game_ov:28,gamma:[5,6,8,12,13,14,15,16,17,18,20,21,22,23,24,26],gap:[24,52],gather:43,gaussian:[11,12,13,14,31],gener:[0,5,7,11,15,27,30,31,35,38,39,45,54],general_network:39,get:[3,4,7,8,9,10,11,13,14,15,17,18,20,22,24,27,28,30,31,38,42,44,45,48,53],get_act:31,get_action_from_us:30,get_available_kei:30,get_first_transit:28,get_goal:30,get_last_env_respons:30,get_last_transit:28,get_output_head:39,get_predict:[3,53],get_random_act:30,get_rendered_imag:[30,40],get_reward_for_goal_and_st:38,get_state_embed:[3,53],get_transit:28,get_transitions_attribut:28,get_variable_valu:27,get_weight:27,gfortran:45,gif:0,git:45,github:[40,45,48,51],given:[0,1,2,3,4,5,8,10,11,13,14,27,28,30,31,33,34,35,38,39,42,47,53],given_weight:27,global:[3,27,44,53],global_network:27,glx:45,goal:[1,2,3,4,6,27,28,30,35,42,44,52,53],goal_from_st:38,goal_nam:38,goal_spac:30,goal_vector:4,goals_spac:35,goalsspac:[35,38],goaltorewardconvers:38,going:32,good:[14,40,41],gpu:[0,27],gracefulli:54,gradient:[3,5,6,7,11,14,21,23,27,39,52,53],gradientclippingmethod:27,gradients_clipping_method:27,granular:35,graph:0,graphmanag:42,grayscal:[33,38],greedili:42,group:41,grow:26,guidelin:52,gym:[45,49],gym_environ:[30,54],gymenviron:30,gymenvironmentparamet:40,hac:52,had:48,hand:[19,33,42,52],handl:4,handle_episode_end:[3,30,53],handling_targets_after_episode_end:4,handlingtargetsafterepisodeend:4,hard:[41,52],harder:[41,47],has:[0,3,19,23,24,28,31,33,42,44,48,52,53],has_glob:27,has_target:27,hat:[6,7,16,26],have:[0,3,4,6,27,30,31,33,34,35,42,44,47,48,53],head:[1,2,3,5,6,10,15,19,22,23,27,31,39,44,53],headparamet:27,heads_paramet:27,health_gath:30,heat:6,heatup:[31,42],help:[24,28,41,42,52],here:[40,42],heurist:[11,31],hide:44,hierarch:[38,42],hierarchi:[3,42,52,53],high:[8,11,13,33,34,38,41],high_i:38,high_kl_penalty_coeffici:11,high_x:38,higher:11,highest:[5,6,10,14,24,31,33,34,38],highli:[0,40,52],hindsight:[9,35,52],hindsight_goal_selection_method:35,hindsight_transitions_per_regular_transit:35,hindsightgoalselectionmethod:35,hold:[15,27,28,35,41,42,44],horizont:[45,51,54],host:45,hostnam:0,hot:38,how:[4,7,11,31,43,45,52,54],hrl:35,html:45,http:[21,35,45],hub:45,huber:25,huber_loss_interv:25,human:[0,30],human_control:30,hyper:[39,48],hyperparamet:39,ident:27,identifi:[27,38],ies:53,ignor:30,imag:[0,27,30,33,34,38,40,44,54],image1:45,imit:[3,28,46,52],impact:27,implement:[3,7,11,27,29,30,31,35,39,40,43,48,52,54],impli:54,implment:37,importance_weight:27,importance_weight_trunc:6,importantli:42,improv:[5,19,26,30,42,52],improve_reward_model:53,includ:[0,3,4,30,32,33,37,44,49,53,54],incorpor:27,increas:[11,24,33,52],increment:[3,53],index:[0,2,14,28,30,33,34,35,38],indic:38,inf:[33,38],infer:[3,27,30,47,53],infinit:[0,52],info:[3,15,28,38,40,53],info_as_list:28,inform:[3,4,21,28,30,32,41,42,45,49,53],inherit:[3,39,40],init_environment_dependent_modul:[3,53],initi:[3,4,11,24,27,28,39,42,51,53],initial_feed_dict:27,initial_kl_coeffici:11,initialize_session_dependent_compon:[3,53],innov:52,input:[1,2,3,4,8,13,14,15,17,18,20,22,23,24,27,32,38,42,44,53],input_embedders_paramet:27,input_high:33,input_low:33,input_space_high:34,input_space_low:34,inputembedderparamet:27,inputfilt:42,insert:[23,28],inspect:0,instal:[45,54],instanc:[3,36,38,44],instanti:[3,30,42],instead:[0,3,7,21,24,27,33,34,42,52,53],instruct:54,intact:[15,48],integ:[0,33,34],integr:[40,42,43,47,51],intel:51,intend:[10,27,31,42],interact:[28,42,43,47,51,54],interest:[27,41],interfac:[30,41,43,49],intermedi:23,intern:[3,10,21,27,28,32,42,53,54],intersect:52,interv:25,intro:51,introduc:52,invers:[30,49],invok:42,involv:39,is_empti:28,is_valid_index:38,item:28,iter:[3,5,6,8,11,13,19,27,53],its:[0,3,16,26,27,28,31,38,42,45,52,53,54],itself:[27,38,54],job:0,job_typ:0,joint:30,json:0,jump:[4,34],jupyt:39,just:[3,11,24,26,40,42,44,47,53,54],kapa:25,keep:[18,28,33,54],kei:[2,23,27,28,30,35,39,41,45,52,54],key_error_threshold:35,key_width:35,keyboard:[30,54],keyword:27,kl_coeffici:27,kl_coefficient_ph:27,know:[3,52,53,54],knowledg:[3,42,53],known:[28,41,48,52],kubeconfig:37,kubernet:45,kubernetes_orchestr:37,kubernetesparamet:37,kwarg:[27,30],l2_norm_added_delta:23,l2_regular:27,lack:41,lamb:31,lambda:[5,7,11,31],lane:2,larg:[14,31,33,49],larger:27,last:[4,6,11,23,28,30,33],last_env_respons:30,lastli:42,later:[0,3,27,53,54],latest:[21,23,42,45],layer:[27,31,35,42,44],lazi:[28,33],lazystack:33,lbfg:27,ld_library_path:45,lead:31,learn:[0,3,4,5,6,8,9,10,12,14,15,16,17,18,19,22,25,26,27,28,30,31,33,41,42,44,46,48,49,50,52,53],learn_from_batch:[3,39,42,53],learner:27,learning_r:[27,35],learning_rate_decay_r:27,learning_rate_decay_step:27,least:[44,52],leav:[11,15],left:[2,6,12,52],length:[4,5,7,11,21,23,27,28],less:[19,52],level:[0,3,27,30,40,53,54],levelmanag:[3,42,53],levelselect:30,libatla:45,libav:45,libavformat:45,libbla:45,libboost:45,libbz2:45,libfluidsynth:45,libgl1:45,libglew:45,libgm:45,libgstream:45,libgtk2:45,libgtk:45,libjpeg:45,liblapack:45,libnotifi:45,libopen:45,libosmesa6:45,libportmidi:45,librari:[30,45,49],libsdl1:45,libsdl2:45,libsdl:45,libsm:45,libsmpeg:45,libswscal:45,libtiff:45,libwebkitgtk:45,libwildmidi:45,like:[12,30,38,42,44,45,47,52],likelihood:[7,11],line:[3,42,53,54],linear:34,linearboxtoboxmap:34,linearli:34,list:[0,3,4,27,28,30,31,33,34,38,39,53,54],load:[0,3,41,43,53,54],load_memory_from_fil:[3,53],load_memory_from_file_path:54,local:[3,44,45,53],locat:[25,28,33,52],log:[0,3,5,6,10,12,53],log_to_screen:[3,53],logger:[0,3,53],look:[40,45],loop:42,loss:[1,2,3,6,7,10,11,16,17,18,25,26,27,31,39,44,53],lot:[31,41,47,48,52],low:[8,11,13,33,34,38],low_i:38,low_x:38,lower:[0,35,42],lowest:[33,34,38],lstm:44,lumin:33,lvert:[6,16,26],lvl:54,mai:[0,27,46,54],main:[3,39,42,44,46,53,54],mainli:43,major:31,make:[0,3,27,30,39,41,45,47,48,52,53],manag:[3,27,43,45,53],mandatori:[38,40,44],mani:[3,19,46,48],manner:[11,20,21,24,33,42],manual:45,map:[3,27,30,32,33,34,38,39,53],mark:28,markdown:53,mask:[15,34],masked_target_space_high:34,masked_target_space_low:34,master:[3,42,45,53],match:[2,23,27,38],mathbb:[5,6],mathcal:13,mathop:5,max:[5,6,13,16,21,26,33],max_a:[15,18,23,24],max_action_valu:28,max_episodes_to_achieve_reward:0,max_fps_for_human_control:0,max_kl_diverg:6,max_over_num_fram:30,max_simultaneous_selected_act:38,max_siz:35,max_spe:30,maxim:[4,17],maximum:[0,12,16,18,23,24,28,30,31,33,35,52],mdp:47,mean:[0,2,7,8,9,10,11,12,13,14,22,27,31,33,34,38,41,47,52],meant:44,measur:[3,4,27,30,33,38,40,52,53],measurements_nam:38,mechan:[32,43,48,54],memor:52,memori:[3,26,28,33,39,42,43,45,51,52,53],memory_backend:45,memorygranular:35,memoryparamet:[3,39],merg:[27,30],mesa:45,method:[0,5,7,11,13,21,27,33,35],metric:[0,38,41],mid:6,middlewar:[23,27,44],middleware_paramet:27,middlewareparamet:27,midpoint:25,might:[3,10,30,39,44,53],min:[6,7,13,16,24,26],min_:[12,13],min_reward_threshold:0,mind:54,minim:[2,4,16],minimap_s:30,minimum:[0,7,13,33],mitig:52,mix:[3,7,11,23,24,52],mixedmontecarloalgorithmparamet:20,mixer1:45,mixtur:[20,27],mjkei:45,mjpro150:45,mjpro150_linux:45,mkdir:45,mmc:[20,52],mmc_agent:20,mode:[24,27,29,36,37,42,43,45,54],model:[0,20,22,27,51,53,54],modif:52,modifi:6,modul:[3,39,42,43,53],modular:[39,42,44,51],monitor:43,mont:[3,24],monte_carlo_mixing_r:[20,24],more:[3,8,13,21,27,33,39,41,42,44,45,47,51,53,54],moreov:41,most:[3,10,23,27,28,31,44,48,52,53,54],mostli:[33,42],motiv:42,move:[6,7,11,33,41,48],mp4:0,mse:[2,6,17,18,25],much:[7,11,42,52],mujoco:[30,34,40,45,49],mujoco_kei:45,mujoco_pi:45,multi:[11,27,38,44],multiarrai:[3,53],multidimension:38,multipl:[4,7,11,21,27,30,31,33,34,35,38,41,42,48,51,54],multipli:[4,10,27,33],multiselect:34,multitask:[30,49],must:[27,33,38,48],mxnet:54,n_step:[23,26,28,35],n_step_discounted_reward:28,n_step_q_ag:21,nabla:[6,8,13,14],nabla_:[8,12,13,14],nabla_a:[8,13,14],naf:52,naf_ag:22,nafalgorithmparamet:22,name:[3,27,28,30,33,38,39,45,53,54],namespac:37,nasm:45,nativ:[0,30,40,49],native_rend:0,navig:3,ndarrai:[3,27,28,30,31,33,34,38,40,53],nearest:23,neat:41,nec:[0,52],nec_ag:23,necalgorithmparamet:23,necessari:[3,23,27,53],necessarili:33,need:[0,3,6,26,27,30,31,38,39,42,48,52,53,54],neg:[4,33],neighbor:23,neighborhood:14,neon_compon:39,nervanasystem:45,network:[0,3,27,31,39,42,48,51,52,53,54],network_input_tupl:27,network_nam:[3,53],network_param:31,network_paramet:27,network_wrapp:[3,27,53],networkparamet:[3,27,31,39],networkwrapp:[3,53],neural:[3,20,27,44,48],never:27,new_value_shift_coeffici:[23,35],new_weight:27,newli:[24,40,47,52],next:[0,3,8,13,14,17,18,22,24,25,28,30,42,53,54],next_stat:28,nfs_data_stor:29,nfsdatastoreparamet:29,nice:54,no_accumul:27,node:[27,44],nois:[8,9,13,14,22,31,42,52],noise_as_percentage_from_action_spac:31,noise_schedul:31,noisi:[10,26,31],non_episod:35,none:[0,3,7,8,11,13,27,28,30,31,33,34,38,40,53],nor:[],norm:27,norm_unclipped_grad:27,norm_unclippsed_grad:27,normal:[3,4,10,31,32,33,38],note:[23,27,31,53],notebook:39,notic:[27,52],notori:[41,48,52],now:[7,40],nstepqalgorithmparamet:21,nth:26,num_act:[23,35,38],num_bins_per_dimens:34,num_class:35,num_consecutive_playing_step:[3,8,13,53],num_consecutive_training_step:[3,53],num_gpu:0,num_neighbor:35,num_predicted_steps_ahead:4,num_speedup_step:30,num_steps_between_copying_online_weights_to_target:[8,12,13,21],num_steps_between_gradient_upd:[5,6,10,21],num_task:0,num_training_task:0,num_transitions_to_start_replai:6,num_work:0,number:[0,2,4,5,6,8,10,12,13,15,16,21,23,25,26,27,28,30,31,33,34,35,41,49,53,54],number_of_knn:23,numpi:[3,27,28,30,31,33,34,38,40,53],nvidia:45,object:[0,3,26,27,30,31,33,35,42,53],observ:[0,3,4,11,27,28,30,32,40,42,53],observation_reduction_by_sub_parts_name_filt:33,observation_space_s:27,observation_space_typ:30,observation_stat:33,observation_typ:30,observationspac:38,observationspacetyp:30,observationtyp:30,off:[3,6,12,43,47,52,53],offer:[30,49],often:[41,42,44,47],old:[7,11,27,52],old_weight:27,onc:[0,7,10,11,15,16,17,18,20,21,24,25,26,27,38,54],one:[0,3,6,19,23,24,27,28,30,31,32,35,38,40,41,44,47,52,53],ones:[40,52],onli:[0,3,4,5,6,7,10,11,15,16,18,19,21,23,25,26,27,28,30,31,33,34,40,42,52,53,54],onlin:[8,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,42,44,47],online_network:27,onnx:[0,27],onto:32,open:[0,30,49],openai:[45,49],opencv:45,oper:[24,27,33],ops:27,optim:[3,4,6,27,46,52],optimization_epoch:7,optimizer_epsilon:27,optimizer_typ:27,option:[6,10,27,30,34,38,39,41,43,44,54],orchestr:[43,45,51],order:[0,3,5,6,7,8,10,11,12,13,14,17,18,19,21,22,23,24,25,27,28,32,33,34,41,42,44,47,48,52,53],org:[21,35],origin:[21,33,34,48],ornstein:[8,9,31],other:[0,2,10,19,24,27,30,32,33,35,41,42,52],otherwis:[11,15,27,30,31,38],ou_process:31,our:7,out:[2,17,18,31,32,34,41,45,51,52,54],outcom:[31,42],output:[0,4,6,8,13,14,15,16,22,23,27,31,32,33,38,39,44],output_0_0:27,output_observation_spac:33,outputfilt:42,outsid:[4,31],over:[3,7,10,11,21,23,26,27,28,31,33,34,41,42,52,53],overestim:[8,13,52],overfit:11,overhead:0,overlai:41,overrid:[3,53],override_existing_kei:35,overriden:39,overview:42,overwhelm:42,overwritten:27,own:[27,39],p_j:[16,26],page:[3,48],pair:[0,38],pal:[24,52],pal_ag:24,pal_alpha:24,palalgorithmparamet:24,paper:[5,10,12,16,21,23,25,30,35,48],parallel:[6,27,41,44],parallel_predict:27,param:[3,27,28,29,30,31,36,37,39,40,53],paramet:[2,3,4,5,6,7,8,10,11,12,13,16,20,21,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,39,40,48,51,53,54],parameter_nois:31,parameters_server_host:0,parent:[3,27,53],parent_path_suffix:[3,27,53],parmet:3,pars:42,part:[0,3,15,27,28,31,33,34,43,44,48,52,53],part_nam:33,partial:34,partialdiscreteactionspacemap:34,particular:4,particularli:[30,31,38,48,52],pass:[0,4,8,9,13,14,22,23,27,30,31,32,40,41,42,44,54],patamet:23,patchelf:45,patchelf_0:45,path:[0,3,27,39,40,45,53,54],pattern:42,pdf:35,penal:[7,8,11,13],penalti:11,pendulum_hac:40,pendulum_with_go:40,pendulumwithgo:40,per:[0,3,4,38,39,42,53],percentag:31,percentil:31,perceptron:44,perform:[0,3,6,27,28,33,35,40,41,42,52,53],period:[44,54],persist:3,persistent_advantage_learn:24,perspect:16,phase:[3,6,7,8,9,11,12,13,14,27,30,31,42,53],phi:[16,26],physic:[30,49],pi_:[6,7,12],pick:[12,30],pickl:54,pickledreplaybuff:54,pip3:45,pip:45,pixel:30,place:[34,41,42],placehold:[27,31],plai:[0,3,10,15,17,18,21,31,39,41,53],plain:44,planarmap:30,planarmapsobservationspac:33,platform:[30,49],pleas:[21,48],plu:27,plugin:45,point:[33,38,42,43],polici:[1,3,4,5,6,9,12,14,15,21,22,23,29,39,42,43,44,45,46,47,51,52,53],policy_gradient_rescal:[5,7,10,11],policy_gradients_ag:10,policygradientalgorithmparamet:10,policygradientrescal:[5,7,10,11],policyoptimizationag:39,popul:42,popular:[30,49],port:0,posit:[4,33],possibl:[2,3,4,23,31,34,38,41,44,51,52,53,54],post:[32,51],post_training_command:[3,53],power:[30,49],ppo:[7,11,52],ppo_ag:11,ppoalgorithmparamet:11,pre:[8,13,31,32],predefin:[15,24,31,54],predict:[1,2,3,5,6,7,8,11,12,13,15,16,17,18,24,25,26,27,31,44,52,53],prediction_typ:[3,53],predictiontyp:[3,53],prefect:52,prefer:27,prefix:[3,53],prep:45,prepar:[3,53],prepare_batch_for_infer:[3,53],present:[19,23,27,30,33,52],preset:[0,5,39,40,42,43,45,54],press:[41,54],prevent:[8,11,13,42],previou:33,previous:[11,27],print:[0,3,54],print_networks_summari:0,priorit:[26,35],prioriti:[26,35],privat:38,probabilit:[5,6],probabl:[3,5,6,10,15,16,26,28,31,39,52,53],problem:52,procedur:6,process:[0,3,8,9,27,31,32,33,34,39,41,42,44,47,48,51,53],produc:27,progress:27,project:[16,26],propag:7,propagate_updates_to_dnd:23,properti:[3,27,28,30,35,39,40,45,53],proport:35,proto:14,provid:[27,43],proxi:42,proxim:3,pub:[36,37,45],publish:48,purpos:[0,3,10],pursuit:2,push:[3,53],pybullet:[30,49],pygam:[0,45],pytest:45,python3:45,python:[30,35,39,45,49,51],q_i:12,qr_dqn_agent:25,quad:6,qualiti:30,quantil:[3,52],quantileregressiondqnalgorithmparamet:25,queri:[23,27,42,52],question:52,quit:[41,47],r_i:[5,21],r_t:[4,6,7,26],rainbow:[3,39,52],rainbow_ag:39,rainbow_dqn_ag:26,rainbowag:39,rainbowagentparamet:39,rainbowalgorithmparamet:39,rainbowdqnalgorithmparamet:26,rainbowexplorationparamet:39,rainbowmemoryparamet:39,rainbownetworkparamet:39,rais:[3,28,53],ramp:[39,42],random:[0,21,30,31,38,42,48],random_initialization_step:30,randomli:[28,42],rang:[4,7,8,11,13,16,26,30,33,34,38,52],rare:23,rate:[0,6,20,23,27,30,44],rate_for_copying_weights_to_target:[6,8,12,13],rather:[4,12,41],ratio:[6,7,11,20,33],ratio_of_replai:6,raw:[30,49],reach:[0,11,38],read:[0,29],read_csv_tri:0,readabl:42,readm:45,real:3,reason:[33,48],rebuild_on_every_upd:35,receiv:[27,28],recent:[3,26,27,52,53],recommend:40,redi:[36,37,45],redispubsub:45,redispubsubmemorybackendparamet:36,reduc:[1,2,10,11,24,27,33,42,52],reduct:33,reduction_method:33,reductionmethod:33,redund:33,refer:[2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,43,45],referenc:3,regard:[3,53],region:[6,52],regist:[3,53],register_sign:[3,53],registri:45,regress:[2,3,52],regula:[6,7,11],regular:[5,7,10,11,21,23,27,31,34,35,52],regularli:27,reinforc:[3,5,8,9,10,12,14,16,17,18,19,21,24,25,26,30,31,41,42,44,46,48,49,50,52],relat:[27,45],relationship:52,releas:[0,51,52],relev:[3,15,31,33,53],remov:[0,33],render:[0,3,30,40],reorder:33,repeat:[30,42],replac:[31,33,35,45],replace_mse_with_huber_loss:27,replai:[1,2,3,6,8,12,13,14,15,16,17,18,21,23,24,25,26,35,42,52,53,54],replay_buff:54,replicated_devic:27,repo:40,repositori:51,repres:[0,7,11,16,26,27,28,30,31,34,38,54],represent:44,reproduc:[42,48],request:[3,27,53],requir:[3,27,29,31,33,41,44,45,52,53],requires_action_valu:31,rescal:[4,5,7,10,11,27,32,33],rescale_factor:33,research:[30,48,49],reset:[3,23,27,30,31,40,53],reset_accumulated_gradi:27,reset_evaluation_st:[3,53],reset_gradi:27,reset_internal_st:[3,30,53],resourc:[43,45],respect:[8,13,14,28,30],respons:[3,28,30,42,53],rest:[27,28,34,45],restart:40,restor:[0,3,53],restore_checkpoint:[3,53],result:[3,4,13,16,17,18,19,25,26,27,33,34,48,52,53,54],ret:6,retrac:6,retri:0,retriev:[23,35],return_additional_data:35,reus:42,reusabl:44,reward:[0,1,2,3,4,8,10,13,20,21,26,27,28,30,32,38,40,41,42,52,53],reward_test_level:0,reward_typ:38,rgb:[30,33,38],rho:[6,8,13,14],rho_t:6,right:[2,3,6,12,31,34,41,52,53],rl_coach:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,40,45,53,54],rms_prop_optimizer_decai:27,rmsprop:27,roboschool:[30,49],robot:[30,38,49,51],roboti:45,robust:53,rollout:[29,36,37,43,45,54],root:[41,45],rule:[8,13,14,15],run:[0,3,4,8,10,11,12,13,14,15,17,18,23,24,27,30,31,33,53,54],run_off_policy_evalu:[3,53],run_pre_network_filter_for_infer:[3,53],runphas:[3,53],runtim:45,rvert:[16,26],rvert_2:6,s3_bucket_nam:45,s3_creds_fil:45,s3_data_stor:29,s3_end_point:45,s3datastoreparamet:29,s_t:[4,5,6,8,12,13,14,15,16,17,18,20,21,22,24,26],sac:52,sai:52,same:[3,4,7,10,13,14,20,21,24,27,30,34,35,41,44,48,52,53],sampl:[1,2,3,5,6,8,10,11,12,13,14,15,16,17,18,20,21,24,25,26,27,31,35,38,42,45,53],sample_with_info:38,satur:[8,13],save:[0,3,26,27,31,45,53,54],save_checkpoint:[3,53],saver:[3,27,53],savercollect:[3,27,53],scale:[4,10,27,33,41,45,51,54],scale_down_gradients_by_number_of_workers_for_sync_train:27,scale_measurements_target:4,scaler:27,schedul:[7,31,35,42,43,45,54],scheme:[5,31,42,52],schulman:11,sci:45,scienc:48,scipi:[33,45],scope:27,scratch:52,scratchpad:0,screen:[3,30,40,54],screen_siz:30,script:42,second:[0,27,41,52,54],section:[45,46,49],see:[3,30,33,45,48,49,52,53,54],seed:[0,30,48],seen:[4,23,24,30,33,42,48,52],segment:[30,38],select:[5,15,23,27,28,31,33,34,38,40,41,42,51,54],self:[3,27,39,40,53],send:[40,44],separ:[0,3,19,33,34,44,46,47,52],separate_actions_for_throttle_and_brak:30,seper:10,sequenti:[4,28,35],serv:[7,10,44],server:0,server_height:30,server_width:30,sess:[3,27,53],session:[3,27,53],set:[0,2,3,4,5,6,7,8,11,13,16,17,18,20,23,24,26,27,28,30,31,33,34,38,39,43,48,49,51,52,53,54],set_environment_paramet:[3,53],set_goal:30,set_incoming_direct:[3,53],set_is_train:27,set_sess:[3,53],set_variable_valu:27,set_weight:27,setup:[3,45,47,53],setup_logg:[3,53],setuptool:45,sever:[0,3,7,10,11,15,27,30,31,33,39,40,41,42,44,49,52,53,54],shape:[27,33,38],share:[0,3,27,35,44,53],shared_memory_scratchpad:0,shared_optim:27,shift:[34,42],shine:41,should:[0,3,4,7,11,15,21,24,27,28,30,33,35,38,39,40,43,53,54],should_dump:0,shouldn:15,show:48,shown:48,shuffl:[3,28,53],side:[3,53],sigma:[13,31],signal:[3,42,53],signal_nam:[3,53],significantli:19,sim:[6,12],similar:[7,19,21,28,30,34,52],simpl:[10,35,39,40,44,51,52,54],simplest:52,simplif:52,simplifi:[7,41,44],simul:[30,40,47,49,54],simultan:7,sinc:[3,7,8,10,13,21,23,24,26,27,31,33,47,53],singl:[3,4,5,6,7,11,15,19,20,21,27,28,30,31,34,38,41,42,44,53],size:[27,28,31,33,34,35,38],skill:52,skip:[30,42],slave:[3,53],slice:28,slow:[27,52,54],slower:[0,13,19,27],slowli:[8,13],small:[7,13,23,35],smaller:31,smooth:[41,52],soft:[3,8,11,13,14,22,52],soft_actor_critic_ag:12,softactorcriticalgorithmparamet:12,softmax:[27,31],softmax_temperatur:27,softwar:45,sole:47,solut:52,solv:[33,40,49,51],some:[0,3,11,27,28,31,33,39,40,41,44,47,48,52,53,54],sort:25,sourc:[0,1,2,3,4,5,6,7,8,10,11,12,13,14,16,18,20,21,22,23,24,25,26,27,28,29,30,31,33,34,35,36,37,38,40,45,49,53],space:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,30,31,32,33,34,35,42,51,53],spacesdefinit:[3,27,53],spatial:52,spawn:[43,45],special:19,specif:[0,3,15,19,23,27,28,39,42,54],specifi:[0,27,30,31,33,40,43,54],speed:[27,33,52],speedup:54,spread:[33,34],squar:33,squeeze_list:27,squeeze_output:27,src:45,stabil:[6,21,27,52],stabl:[44,52],stack:[3,32,33,38,53],stack_siz:[27,33],stacking_axi:33,stage:44,stai:48,standard:[7,10,11,15,31,33,41,47],starcraft2_environ:30,starcraft2environ:30,starcraft:[38,49],starcraftobservationtyp:30,start:[3,6,8,11,12,13,14,19,24,28,33,34,40,45,53],state:[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,17,18,19,20,21,22,23,24,25,26,27,28,30,33,35,38,39,40,42,44,46,52,53],state_key_with_the_class_index:[2,35],state_spac:30,state_valu:28,statist:[3,10,33,51,53],std:12,stdev:31,steep:31,step:[0,3,4,5,6,7,8,10,11,12,13,14,15,16,17,18,20,22,23,24,25,26,27,28,30,31,33,39,40,41,42,52,53,54],stepmethod:[8,12,13,21],stochast:[12,42,52],stop:[0,30],store:[0,3,23,26,28,30,33,35,41,42,43,45,51,53,54],store_transitions_only_when_episodes_are_termin:26,str:[0,2,3,4,21,27,28,30,31,33,34,38,53],strategi:[30,49],stream:[19,43],strict:48,string:[0,27,30],structur:[0,3,28,35,39,42,53],stuff:27,style:31,sub:[34,35,36,37,38,39,42,45,54],sub_spac:38,subset:[41,48,52],subtract:24,succeed:30,success:[0,30,52],suffer:41,suffici:28,suffix:[3,27,53],suggest:39,suit:[0,49],suitabl:[43,54],sum:[4,7,10,20,27,28],sum_:[5,12,16,20,21,23,26],summari:[0,3,53],supervis:52,suppli:[3,53],support:[0,3,27,30,31,41,44,45,46,47,49,51,54],sure:[0,3,45,48,53],surrog:7,surround:14,swig:45,swingup:30,symbol:27,sync:[3,27,42,43,53],synchron:[0,27,42,44],system:47,t_max:[10,21],tag:45,take:[0,3,10,11,19,23,24,27,30,31,32,40,41,42,53],taken:[1,2,4,5,6,7,8,11,12,13,16,19,23,24,25,26,27,28,30,31],tanh:[8,13],tar:45,target:[0,1,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,30,33,34,38,39,42,44,53],target_act:34,target_kl_diverg:11,target_network:27,target_success_r:30,targets_horizon:21,task:[0,1,2,30,33,39,41,49],task_index:0,tau:12,td3:52,td3_agent:13,td3algorithmparamet:13,techniqu:[7,11,51,52],technolog:43,teh:27,temperatur:[27,31],temperature_schedul:31,tensor:[3,27,53],tensorboard:0,tensorflow:[0,3,27,53,54],tensorflow_support:27,term:[6,7,11],termin:[3,8,13,28,42,53],test:[0,3,5,6,8,9,10,11,12,13,14,27,39,48,51,54],test_using_a_trace_test:0,text:6,textrm:42,than:[0,3,11,13,27,31,41,44,47,53],thei:[3,23,24,27,31,41,42,43,52,53,54],them:[4,5,10,21,27,28,30,33,38,40,41,44],therefor:[0,8,13,27,32,52],theta:[6,7,8,12,13,14,16,26,31],theta_:[6,7],thi:[0,3,4,5,6,7,8,10,11,13,15,19,21,23,26,27,28,30,31,32,33,34,35,36,38,39,40,41,42,43,44,45,47,48,52,53,54],thing:[41,47],those:[0,3,8,13,14,15,17,18,19,23,28,31,34,42,44,46,52,53],thousand:[11,15,16,17,18,20,24,25,26],thread:27,three:[3,43,44,45,46],threshold:[11,23,33],through:[0,3,4,8,9,10,11,13,14,15,23,24,27,39,40,42,44,53],tild:[8,12,13,14],time:[0,4,24,27,31,34,35,41,44,52],time_limit:40,timestep:[4,10],timid:45,tmp:0,togeth:[3,21,28,42,53],toggl:41,too:11,tool:[41,45,52],top:[27,30,32,33,35,40,41,52],torqu:30,total:[0,3,10,11,20,23,24,28,35,39,41,52,53],total_loss:27,total_return:28,trace:0,trace_max_env_step:0,trace_test_level:0,tradeoff:31,train:[0,3,19,27,31,36,37,39,40,41,42,43,44,47,48,51,52,53],train_and_sync_network:27,train_on_batch:27,train_to_eval_ratio:35,trainer:[29,43],transfer:[30,36,49],transit:[1,2,3,4,5,6,8,10,11,12,13,14,16,17,18,21,23,24,25,26,35,39,42,43,53],transition_idx:28,tree:14,tri:52,trick:48,tricki:41,trigger:[30,45],truncat:6,truncated_norm:31,trust:[6,52],ttf2:45,tune:31,tupl:[1,2,3,8,13,27,28,30,35,38,39],turn:[2,52],tutori:[39,40,47],tweak:[3,53],twin:3,two:[8,10,13,21,27,30,31,32,33,34,38,40,43,44,52,54],txt:45,type:[0,3,10,19,27,30,33,38,39,42,44,51,52,53,54],typic:[7,11,27,52,54],ubuntu16:45,uhlenbeck:[8,9,31],uint8:33,unbound:38,uncertain:31,uncertainti:31,unchang:11,unclip:[3,39,53],uncorrel:21,undeploi:43,under:[3,27,39,54],underbrac:5,understand:54,unifi:7,uniformli:[30,31,34,38],union:[3,28,30,31,34,38,53],uniqu:27,unit:41,unlik:[11,14],unmask:34,unnecessari:0,unshar:[3,53],unsign:33,unspecifi:27,unstabl:[41,48],until:[0,6,10,11,23,26,31],unus:27,unzip:45,updat:[3,6,7,8,10,11,12,13,14,15,16,17,18,19,21,22,23,24,25,26,27,28,31,39,40,41,42,44,45,52,53],update_discounted_reward:28,update_filter_internal_st:[3,53],update_log:[3,53],update_online_network:27,update_step_in_episode_log:[3,53],update_target_network:27,update_transition_before_adding_to_replay_buff:[3,53],upgrad:45,upon:[3,5,39,53],upper:[6,31],usag:[34,47,51],use:[0,1,2,3,4,5,6,8,9,10,12,13,14,15,17,18,22,27,28,29,30,31,33,34,35,38,39,40,42,44,45,47,51,52,53,54],use_accumulated_reward_as_measur:4,use_cpu:0,use_deterministic_for_evalu:12,use_full_action_spac:30,use_inputs_for_apply_gradi:27,use_kl_regular:[7,11],use_non_zero_discount_for_terminal_st:[8,13],use_separate_networks_per_head:27,use_target_network_for_evalu:[8,13],use_trust_region_optim:6,used:[0,2,3,5,6,7,8,10,11,12,13,14,15,16,20,21,22,23,24,25,27,30,31,33,34,35,36,37,39,40,42,43,44,47,48,53,54],useful:[0,3,4,26,27,31,33,38,48,52,53,54],user:[27,30,31,41,42,45],userguid:45,uses:[0,1,7,11,19,28,29,31,37,42,43,45,48,52,54],using:[0,3,5,6,7,8,10,11,12,13,14,17,18,20,21,22,23,24,26,27,29,30,31,33,36,39,40,41,43,47,49,52,53,54],usr:45,usual:[33,42],util:[3,41,53],v_max:16,v_min:16,val:[3,38,53],valid:[0,14,38],valu:[0,2,3,4,5,6,7,8,11,12,13,14,15,16,17,18,19,21,22,23,24,26,27,28,30,31,33,34,35,38,39,42,44,45,46,52,53],valuabl:41,value_targets_mix_fract:[7,11],valueexcept:[3,53],valueoptimizationag:39,van:4,vari:44,variabl:[27,30,45],variable_scop:27,varianc:[10,31,41,52],variant:[31,35,52],variou:[3,28,35,51],vector:[3,4,8,9,11,13,15,27,30,33,38,40,44,52,53],vectorobservationspac:33,verbos:30,veri:[0,7,8,10,13,19,23,41,52,54],version:[7,11,28],versu:27,vert:12,vertic:27,via:[2,15],video:[0,3,30],video_dump_method:0,view:41,viewabl:[3,53],visit:48,visual:[0,3,30,49,51],visualization_paramet:30,visualizationparamet:[3,30],vizdoom:[45,49],vote:31,wai:[3,7,11,31,34,40,42,44,51,52,53,54],wait:[5,27,43],walk:40,want:[3,4,26,27,33,34,35,47,53],warn:[31,33,34],wasn:28,weather_id:30,websit:[30,51],weight:[4,5,6,7,8,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,27,31,42,44,52],well:[23,27,31,38,52],went:11,were:[4,16,17,18,19,23,25,26,27,28,34,48],west:45,wget:45,what:[11,47,52],whatev:[3,53],when:[0,3,4,5,6,7,8,9,10,11,12,13,14,23,27,28,29,30,31,33,36,37,39,40,41,53,54],whenev:43,where:[2,3,4,5,6,7,11,15,16,19,21,23,24,26,27,28,30,31,33,34,38,41,47,52,53],whether:31,which:[0,1,2,3,5,6,7,8,10,11,12,13,14,15,19,21,22,23,24,25,27,28,29,30,31,33,35,36,37,38,39,40,41,42,43,44,46,47,48,49,51,52,53,54],who:42,why:[41,42],window:[33,34],wise:33,within:[0,7,11,22,31,38,41],without:[5,11,34,35,41,52,54],wolperting:3,wolpertinger_ag:14,wolpertingeralgorithmparamet:14,won:[4,27],wont:27,work:[3,21,27,31,33,34,41,42,52,53,54],workaround:0,workdir:45,worker:[0,21,27,29,33,35,36,37,41,43,44,45,52,54],worker_devic:27,worker_host:0,wors:52,would:[27,45,47,52],wrap:[30,33,42,49],wrapper:[3,27,28,30,38,44,53],write:[0,3,53],written:[3,26,29,53],www:45,xdist:45,y_t:[8,12,13,14,15,17,18,20,22,23,24],year:52,yet:[19,40],you:[4,33,35,39,40,45,51,54],your:[39,40,45,54],yuv:33,z_i:[16,26],z_j:[16,26],zero:[2,13,17,18],zip:45,zlib1g:45},titles:["Additional Parameters","Behavioral Cloning","Conditional Imitation Learning","Agents","Direct Future Prediction","Actor-Critic","ACER","Clipped Proximal Policy Optimization","Deep Deterministic Policy Gradient","Hierarchical Actor Critic","Policy Gradient","Proximal Policy Optimization","Soft Actor-Critic","Twin Delayed Deep Deterministic Policy Gradient","Wolpertinger","Bootstrapped DQN","Categorical DQN","Double DQN","Deep Q Networks","Dueling DQN","Mixed Monte Carlo","N-Step Q Learning","Normalized Advantage Functions","Neural Episodic Control","Persistent Advantage Learning","Quantile Regression DQN","Rainbow","Architectures","Core Types","Data Stores","Environments","Exploration Policies","Filters","Input Filters","Output Filters","Memories","Memory Backends","Orchestrators","Spaces","Adding a New Agent","Adding a New Environment","Coach Dashboard","Control Flow","Distributed Coach - Horizontal Scale-Out","Network Design","Usage - Distributed Coach","Algorithms","Batch Reinforcement Learning","Benchmarks","Environments","Features","Reinforcement Learning Coach","Selecting an Algorithm","test","Usage"],titleterms:{"final":23,"function":22,"new":[39,40],"switch":54,Adding:[39,40],Using:40,acer:6,across:52,action:[4,5,6,7,8,9,10,11,12,13,14,15,22,23,34,38,52],actioninfo:28,actor:[5,9,12],addit:[0,54],additivenois:31,advantag:[22,24],agent:[3,39,42,54],algorithm:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,46,52,54],api:40,architectur:27,attentionactionspac:38,backend:36,balancedexperiencereplai:35,batch:[28,47],behavior:1,benchmark:48,between:54,blizzard:30,boltzmann:31,bootstrap:[15,31],boxactionspac:38,build:45,can:52,carla:30,carlo:20,categor:[16,31],choos:[4,5,6,7,8,9,10,11,12,13,14,15,22,23],clip:7,clone:[1,45],coach:[40,41,43,45,51],collect:52,compar:41,compoundactionspac:38,condit:2,config:45,contain:45,continu:[7,11,12,52],continuousentropi:31,control:[23,30,42],copi:44,core:28,creat:45,critic:[5,9,12],dashboard:41,data:29,deep:[8,13,18,54],deepmind:30,delai:13,demonstr:52,descript:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],design:44,determinist:[8,13],direct:4,discret:[5,6,10,52],discreteactionspac:38,distribut:[43,45],distributedtaskparamet:0,doe:52,doubl:17,dqn:[15,16,17,19,25],duel:19,dump:54,egreedi:31,environ:[30,40,49,52,54],envrespons:28,episod:[23,28,35],episodicexperiencereplai:35,episodichindsightexperiencereplai:35,episodichrlhindsightexperiencereplai:35,evalu:54,experiencereplai:35,explor:31,explorationpolici:31,featur:50,file:45,filter:[32,33,34],flag:54,flow:42,framework:54,from:52,futur:4,gener:19,gif:54,goal:38,gradient:[8,10,13],graph:42,greedi:31,gym:[30,40],have:52,hierarch:9,horizont:43,human:[52,54],imag:45,imageobservationspac:38,imit:[2,54],implement:45,input:33,interfac:45,keep:44,kubernet:37,learn:[2,21,24,47,51,54],level:42,manag:42,memori:[35,36],mix:20,mont:20,more:52,multi:54,multipl:52,multiselectactionspac:38,network:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,44],networkwrapp:27,neural:23,nfsdatastor:29,node:[52,54],non:35,normal:22,observ:[33,38],observationclippingfilt:33,observationcropfilt:33,observationmoveaxisfilt:33,observationnormalizationfilt:33,observationreductionbysubpartsnamefilt:33,observationrescalesizebyfactorfilt:33,observationrescaletosizefilt:33,observationrgbtoyfilt:33,observationsqueezefilt:33,observationstackingfilt:33,observationtouint8filt:33,openai:[30,40],optim:[7,11],orchestr:37,ouprocess:31,out:43,output:34,pain:52,parallel:52,paramet:0,parameternois:31,persist:24,plai:54,planarmapsobservationspac:38,polici:[7,8,10,11,13,31],predict:4,prerequisit:45,presetvalidationparamet:0,prioritizedexperiencereplai:35,process:52,proxim:[7,11],push:45,qdnd:35,quantil:25,rainbow:26,redispubsubbackend:36,regress:25,reinforc:[47,51],render:54,repositori:45,reward:33,rewardclippingfilt:33,rewardnormalizationfilt:33,rewardrescalefilt:33,run:[41,45],s3datastor:29,sampl:52,scale:43,select:52,signal:41,simul:52,singl:54,singleepisodebuff:35,soft:12,solv:52,space:[38,52],starcraft:30,statist:41,step:21,store:[15,29],structur:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],suit:30,support:43,sync:44,synchron:43,task:52,taskparamet:0,test:53,thread:54,through:54,track:41,train:[1,2,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,20,21,22,23,24,25,26,54],transit:[15,28],transitioncollect:35,truncatednorm:31,twin:13,type:[28,43],ucb:31,usag:[45,54],vectorobservationspac:38,visual:[41,54],visualizationparamet:0,vizdoom:30,wolperting:14,you:52,your:52}}) \ No newline at end of file diff --git a/docs/test.html b/docs/test.html index f95618feb..079823669 100644 --- a/docs/test.html +++ b/docs/test.html @@ -439,7 +439,7 @@

    test¶
    -prepare_batch_for_inference(states: Union[Dict[str, numpy.ndarray], List[Dict[str, numpy.ndarray]]], network_name: str) → Dict[str, numpy.array]¶
    +prepare_batch_for_inference(states: Union[Dict[str, numpy.ndarray], List[Dict[str, numpy.ndarray]]], network_name: str) → Dict[str, numpy.core.multiarray.array]¶

    Convert curr_state into input tensors tensorflow is expecting. i.e. if we have several inputs states, stack all observations together, measurements together, etc.

    diff --git a/docs_raw/source/_static/img/algorithms.png b/docs_raw/source/_static/img/algorithms.png index 6c00f21a226c5b91c86a38287167e46323c12d5e..0849ad7ac6cf375d427194c71a0e951f59d5e182 100644 GIT binary patch literal 64957 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�(j5y~ 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®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 jCv8S~wiH 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�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 z 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 F{0GtY&cXly literal 0 HcmV?d00001 diff --git a/docs_raw/source/algorithms.xml b/docs_raw/source/algorithms.xml index e6f68c9e8..377709c38 100644 --- a/docs_raw/source/algorithms.xml +++ b/docs_raw/source/algorithms.xml @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/docs_raw/source/components/agents/index.rst b/docs_raw/source/components/agents/index.rst index ca21713b4..c958768bf 100644 --- a/docs_raw/source/components/agents/index.rst +++ b/docs_raw/source/components/agents/index.rst @@ -21,8 +21,6 @@ A detailed description of those algorithms can be found by navigating to each of imitation/cil policy_optimization/cppo policy_optimization/ddpg - policy_optimization/td3 - policy_optimization/sac other/dfp value_optimization/double_dqn value_optimization/dqn @@ -36,6 +34,10 @@ A detailed description of those algorithms can be found by navigating to each of policy_optimization/ppo value_optimization/rainbow value_optimization/qr_dqn + policy_optimization/sac + policy_optimization/td3 + policy_optimization/wolpertinger + .. autoclass:: rl_coach.base_parameters.AgentParameters diff --git a/docs_raw/source/components/agents/policy_optimization/wolpertinger.rst b/docs_raw/source/components/agents/policy_optimization/wolpertinger.rst new file mode 100644 index 000000000..5aa57d2a8 --- /dev/null +++ b/docs_raw/source/components/agents/policy_optimization/wolpertinger.rst @@ -0,0 +1,56 @@ +Wolpertinger +============= + +**Actions space:** Discrete + +**References:** `Deep Reinforcement Learning in Large Discrete Action Spaces `_ + +Network Structure +----------------- + +.. image:: /_static/img/design_imgs/wolpertinger.png + :align: center + +Algorithm Description +--------------------- +Choosing an action +++++++++++++++++++ + +Pass the current states through the actor network, and get a proto action :math:`\mu`. +While in training phase, use a continuous exploration policy, such as the a gaussian noise, +to add exploration noise to the proto action. Then, pass the proto action to a k-NN tree to find actual valid +action candidates, which are in the surrounding neighborhood of the proto action. Those actions are then passed to the +critic to evaluate their goodness, and eventually the discrete index of the action with the highest Q value is chosen. +When testing, the same flow is used, but no exploration noise is added. + +Training the network +++++++++++++++++++++ + +Training the network is exactly the same as in DDPG. Unlike when choosing the action, the proto action is not passed +through the k-NN tree. It is being passed directly to the critic. + +Start by sampling a batch of transitions from the experience replay. + +* To train the **critic network**, use the following targets: + + :math:`y_t=r(s_t,a_t )+\gamma \cdot Q(s_{t+1},\mu(s_{t+1} ))` + + First run the actor target network, using the next states as the inputs, and get :math:`\mu (s_{t+1} )`. + Next, run the critic target network using the next states and :math:`\mu (s_{t+1} )`, and use the output to + calculate :math:`y_t` according to the equation above. To train the network, use the current states and actions + as the inputs, and :math:`y_t` as the targets. + +* To train the **actor network**, use the following equation: + + :math:`\nabla_{\theta^\mu } J \approx E_{s_t \tilde{} \rho^\beta } [\nabla_a Q(s,a)|_{s=s_t,a=\mu (s_t ) } \cdot \nabla_{\theta^\mu} \mu(s)|_{s=s_t} ]` + + Use the actor's online network to get the action mean values using the current states as the inputs. + Then, use the critic online network in order to get the gradients of the critic output with respect to the + action mean values :math:`\nabla _a Q(s,a)|_{s=s_t,a=\mu(s_t ) }`. + Using the chain rule, calculate the gradients of the actor's output, with respect to the actor weights, + given :math:`\nabla_a Q(s,a)`. Finally, apply those gradients to the actor network. + +After every training step, do a soft update of the critic and actor target networks' weights from the online networks. + + +.. autoclass:: rl_coach.agents.wolpertinger_agent.WolpertingerAlgorithmParameters \ No newline at end of file diff --git a/docs_raw/source/diagrams.xml b/docs_raw/source/diagrams.xml index 15f067f58..9b5e64a9d 100644 --- a/docs_raw/source/diagrams.xml +++ b/docs_raw/source/diagrams.xml @@ -1 +1 @@ -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 \ No newline at end of file +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 \ No newline at end of file diff --git a/rl_coach/agents/agent.py b/rl_coach/agents/agent.py index 3db0aaf4e..5d12e0b5e 100644 --- a/rl_coach/agents/agent.py +++ b/rl_coach/agents/agent.py @@ -1003,7 +1003,7 @@ def set_incoming_directive(self, action: ActionType) -> None: """ Allows setting a directive for the agent to follow. This is useful in hierarchy structures, where the agent has another master agent that is controlling it. In such cases, the master agent can define the goals for the - slave agent, define it's observation, possible actions, etc. The directive type is defined by the agent + slave agent, define its observation, possible actions, etc. The directive type is defined by the agent in-action-space. :param action: The action that should be set as the directive diff --git a/rl_coach/agents/wolpertinger_agent.py b/rl_coach/agents/wolpertinger_agent.py new file mode 100644 index 000000000..a16b9e973 --- /dev/null +++ b/rl_coach/agents/wolpertinger_agent.py @@ -0,0 +1,131 @@ +# +# Copyright (c) 2019 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# + +import copy +from typing import Union +from collections import OrderedDict +import numpy as np + +from rl_coach.agents.ddpg_agent import DDPGAlgorithmParameters, DDPGActorNetworkParameters, \ + DDPGCriticNetworkParameters, DDPGAgent +from rl_coach.base_parameters import AgentParameters +from rl_coach.core_types import ActionInfo +from rl_coach.exploration_policies.additive_noise import AdditiveNoiseParameters +from rl_coach.memories.episodic.episodic_experience_replay import EpisodicExperienceReplayParameters +from rl_coach.memories.non_episodic.differentiable_neural_dictionary import AnnoyDictionary +from rl_coach.spaces import DiscreteActionSpace, BoxActionSpace +from rl_coach.architectures.head_parameters import WolpertingerActorHeadParameters + + +class WolpertingerCriticNetworkParameters(DDPGCriticNetworkParameters): + def __init__(self, use_batchnorm=False): + super().__init__(use_batchnorm=use_batchnorm) + + +class WolpertingerActorNetworkParameters(DDPGActorNetworkParameters): + def __init__(self, use_batchnorm=False): + super().__init__() + self.heads_parameters = [WolpertingerActorHeadParameters(batchnorm=use_batchnorm)] + + +class WolpertingerAlgorithmParameters(DDPGAlgorithmParameters): + def __init__(self): + super().__init__() + self.action_embedding_width = 1 + self.k = 1 + + +class WolpertingerAgentParameters(AgentParameters): + def __init__(self, use_batchnorm=False): + exploration_params = AdditiveNoiseParameters() + exploration_params.noise_as_percentage_from_action_space = False + + super().__init__(algorithm=WolpertingerAlgorithmParameters(), + exploration=exploration_params, + memory=EpisodicExperienceReplayParameters(), + networks=OrderedDict( + [("actor", WolpertingerActorNetworkParameters(use_batchnorm=use_batchnorm)), + ("critic", WolpertingerCriticNetworkParameters(use_batchnorm=use_batchnorm))])) + + @property + def path(self): + return 'rl_coach.agents.wolpertinger_agent:WolpertingerAgent' + + +# Deep Reinforcement Learning in Large Discrete Action Spaces - https://arxiv.org/pdf/1512.07679.pdf +class WolpertingerAgent(DDPGAgent): + def __init__(self, agent_parameters, parent: Union['LevelManager', 'CompositeAgent'] = None): + super().__init__(agent_parameters, parent) + + def learn_from_batch(self, batch): + # replay buffer holds the actions in the discrete manner, as the agent is expected to act with discrete actions + # with the BoxDiscretization output filter. But DDPG needs to work on continuous actions, thus converting to + # continuous actions. This is actually a duplicate since this filtering is also done before applying actions on + # the environment. So might want to somehow reuse that conversion. Maybe can hold this information in the info + # dictionary of the transition. + + output_action_filter = \ + list(self.output_filter.action_filters.values())[0] + continuous_actions = [] + for action in batch.actions(): + continuous_actions.append(output_action_filter.filter(action)) + batch._actions = np.array(continuous_actions).squeeze() + + return super().learn_from_batch(batch) + + def train(self): + return super().train() + + def choose_action(self, curr_state): + if not isinstance(self.spaces.action, DiscreteActionSpace): + raise ValueError("WolpertingerAgent works only for discrete control problems") + + # convert to batch so we can run it through the network + tf_input_state = self.prepare_batch_for_inference(curr_state, 'actor') + actor_network = self.networks['actor'].online_network + critic_network = self.networks['critic'].online_network + proto_action = actor_network.predict(tf_input_state) + proto_action = np.expand_dims(self.exploration_policy.get_action(proto_action), 0) + + nn_action_embeddings, indices, _, _ = self.knn_tree.query(keys=proto_action, k=self.ap.algorithm.k) + + # now move the actions through the critic and choose the one with the highest q value + critic_inputs = copy.copy(tf_input_state) + critic_inputs['observation'] = np.tile(critic_inputs['observation'], (self.ap.algorithm.k, 1)) + critic_inputs['action'] = nn_action_embeddings[0] + q_values = critic_network.predict(critic_inputs)[0] + action = int(indices[0][np.argmax(q_values)]) + self.action_signal.add_sample(action) + return ActionInfo(action=action, action_value=0) + + def init_environment_dependent_modules(self): + super().init_environment_dependent_modules() + self.knn_tree = self.get_initialized_knn() + + # TODO - ideally the knn should not be defined here, but somehow be defined by the user in the preset + def get_initialized_knn(self): + num_actions = len(self.spaces.action.actions) + action_max_abs_range = self.spaces.action.filtered_action_space.max_abs_range if \ + (hasattr(self.spaces.action, 'filtered_action_space') and + isinstance(self.spaces.action.filtered_action_space, BoxActionSpace)) \ + else 1.0 + keys = np.expand_dims((np.arange(num_actions) / (num_actions - 1) - 0.5) * 2, 1) * action_max_abs_range + values = np.expand_dims(np.arange(num_actions), 1) + knn_tree = AnnoyDictionary(dict_size=num_actions, key_width=self.ap.algorithm.action_embedding_width) + knn_tree.add(keys, values, force_rebuild_tree=True) + + return knn_tree + diff --git a/rl_coach/architectures/head_parameters.py b/rl_coach/architectures/head_parameters.py index ee607dd42..207ea3e63 100644 --- a/rl_coach/architectures/head_parameters.py +++ b/rl_coach/architectures/head_parameters.py @@ -108,6 +108,17 @@ def __init__(self, activation_function: str ='tanh', name: str='policy_head_para self.batchnorm = batchnorm +class WolpertingerActorHeadParameters(HeadParameters): + def __init__(self, activation_function: str ='tanh', name: str='policy_head_params', batchnorm: bool=True, + num_output_head_copies: int = 1, rescale_gradient_from_head_by_factor: float = 1.0, + loss_weight: float = 1.0, dense_layer=None): + super().__init__(parameterized_class_name="WolpertingerActorHead", activation_function=activation_function, name=name, + dense_layer=dense_layer, num_output_head_copies=num_output_head_copies, + rescale_gradient_from_head_by_factor=rescale_gradient_from_head_by_factor, + loss_weight=loss_weight) + self.batchnorm = batchnorm + + class DNDQHeadParameters(HeadParameters): def __init__(self, activation_function: str ='relu', name: str='dnd_q_head_params', num_output_head_copies: int = 1, rescale_gradient_from_head_by_factor: float = 1.0, diff --git a/rl_coach/architectures/tensorflow_components/heads/__init__.py b/rl_coach/architectures/tensorflow_components/heads/__init__.py index 03c237a84..0a83399d3 100644 --- a/rl_coach/architectures/tensorflow_components/heads/__init__.py +++ b/rl_coach/architectures/tensorflow_components/heads/__init__.py @@ -18,6 +18,7 @@ from .cil_head import RegressionHead from .td3_v_head import TD3VHead from .ddpg_v_head import DDPGVHead +from .wolpertinger_actor_head import WolpertingerActorHead __all__ = [ 'CategoricalQHead', @@ -38,6 +39,7 @@ 'SACQHead', 'ClassificationHead', 'RegressionHead', - 'TD3VHead' - 'DDPGVHead' + 'TD3VHead', + 'DDPGVHead', + 'WolpertingerActorHead' ] diff --git a/rl_coach/architectures/tensorflow_components/heads/wolpertinger_actor_head.py b/rl_coach/architectures/tensorflow_components/heads/wolpertinger_actor_head.py new file mode 100644 index 000000000..3521a95e6 --- /dev/null +++ b/rl_coach/architectures/tensorflow_components/heads/wolpertinger_actor_head.py @@ -0,0 +1,59 @@ +# +# Copyright (c) 2019 Intel Corporation +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +import tensorflow as tf + +from rl_coach.architectures.tensorflow_components.layers import batchnorm_activation_dropout, Dense +from rl_coach.architectures.tensorflow_components.heads.head import Head +from rl_coach.base_parameters import AgentParameters +from rl_coach.core_types import Embedding +from rl_coach.spaces import SpacesDefinition, BoxActionSpace + + +class WolpertingerActorHead(Head): + def __init__(self, agent_parameters: AgentParameters, spaces: SpacesDefinition, network_name: str, + head_idx: int = 0, loss_weight: float = 1., is_local: bool = True, activation_function: str='tanh', + batchnorm: bool=True, dense_layer=Dense, is_training=False): + super().__init__(agent_parameters, spaces, network_name, head_idx, loss_weight, is_local, activation_function, + dense_layer=dense_layer, is_training=is_training) + self.name = 'wolpertinger_actor_head' + self.return_type = Embedding + self.action_embedding_width = agent_parameters.algorithm.action_embedding_width + self.batchnorm = batchnorm + self.output_scale = self.spaces.action.filtered_action_space.max_abs_range if \ + (hasattr(self.spaces.action, 'filtered_action_space') and + isinstance(self.spaces.action.filtered_action_space, BoxActionSpace)) \ + else None + + def _build_module(self, input_layer): + # mean + pre_activation_policy_value = self.dense_layer(self.action_embedding_width)(input_layer, + name='actor_action_embedding') + self.proto_action = batchnorm_activation_dropout(input_layer=pre_activation_policy_value, + batchnorm=self.batchnorm, + activation_function=self.activation_function, + dropout_rate=0, + is_training=self.is_training, + name="BatchnormActivationDropout_0")[-1] + if self.output_scale is not None: + self.proto_action = tf.multiply(self.proto_action, self.output_scale, name='proto_action') + + self.output = [self.proto_action] + + def __str__(self): + result = [ + 'Dense (num outputs = {})'.format(self.action_embedding_width) + ] + return '\n'.join(result) diff --git a/rl_coach/exploration_policies/additive_noise.py b/rl_coach/exploration_policies/additive_noise.py index 8194718b4..8b67c7d3e 100644 --- a/rl_coach/exploration_policies/additive_noise.py +++ b/rl_coach/exploration_policies/additive_noise.py @@ -62,7 +62,9 @@ def __init__(self, action_space: ActionSpace, noise_schedule: Schedule, self.evaluation_noise = evaluation_noise self.noise_as_percentage_from_action_space = noise_as_percentage_from_action_space - if not isinstance(action_space, BoxActionSpace): + if not isinstance(action_space, BoxActionSpace) and \ + (hasattr(action_space, 'filtered_action_space') and not + isinstance(action_space.filtered_action_space, BoxActionSpace)): raise ValueError("Additive noise exploration works only for continuous controls." "The given action space is of type: {}".format(action_space.__class__.__name__)) diff --git a/rl_coach/exploration_policies/exploration_policy.py b/rl_coach/exploration_policies/exploration_policy.py index a34589579..688fcce5f 100644 --- a/rl_coach/exploration_policies/exploration_policy.py +++ b/rl_coach/exploration_policies/exploration_policy.py @@ -115,5 +115,8 @@ def __init__(self, action_space: ActionSpace): """ :param action_space: the action space used by the environment """ - assert isinstance(action_space, BoxActionSpace) or isinstance(action_space, GoalsSpace) + assert isinstance(action_space, BoxActionSpace) or \ + (hasattr(action_space, 'filtered_action_space') and + isinstance(action_space.filtered_action_space, BoxActionSpace)) or \ + isinstance(action_space, GoalsSpace) super().__init__(action_space) diff --git a/rl_coach/filters/action/partial_discrete_action_space_map.py b/rl_coach/filters/action/partial_discrete_action_space_map.py index 2322698ca..ad6e10530 100644 --- a/rl_coach/filters/action/partial_discrete_action_space_map.py +++ b/rl_coach/filters/action/partial_discrete_action_space_map.py @@ -48,7 +48,8 @@ def validate_output_action_space(self, output_action_space: ActionSpace): def get_unfiltered_action_space(self, output_action_space: ActionSpace) -> DiscreteActionSpace: self.output_action_space = output_action_space - self.input_action_space = DiscreteActionSpace(len(self.target_actions), self.descriptions) + self.input_action_space = DiscreteActionSpace(len(self.target_actions), self.descriptions, + filtered_action_space=output_action_space) return self.input_action_space def filter(self, action: ActionType) -> ActionType: diff --git a/rl_coach/memories/non_episodic/differentiable_neural_dictionary.py b/rl_coach/memories/non_episodic/differentiable_neural_dictionary.py index 3368ee8b9..8633118ce 100644 --- a/rl_coach/memories/non_episodic/differentiable_neural_dictionary.py +++ b/rl_coach/memories/non_episodic/differentiable_neural_dictionary.py @@ -57,7 +57,7 @@ def __init__(self, dict_size, key_width, new_value_shift_coefficient=0.1, batch_ self.built_capacity = 0 - def add(self, keys, values, additional_data=None): + def add(self, keys, values, additional_data=None, force_rebuild_tree=False): if not additional_data: additional_data = [None] * len(keys) @@ -96,7 +96,7 @@ def add(self, keys, values, additional_data=None): if len(self.buffered_indices) >= self.min_update_size: self.min_update_size = max(self.initial_update_size, int(self.curr_size * 0.02)) self._rebuild_index() - elif self.rebuild_on_every_update: + elif force_rebuild_tree or self.rebuild_on_every_update: self._rebuild_index() self.current_timestamp += 1 diff --git a/rl_coach/presets/Mujoco_Wolpertinger.py b/rl_coach/presets/Mujoco_Wolpertinger.py new file mode 100644 index 000000000..f12e41cb3 --- /dev/null +++ b/rl_coach/presets/Mujoco_Wolpertinger.py @@ -0,0 +1,57 @@ +from collections import OrderedDict + +from rl_coach.architectures.layers import Dense +from rl_coach.base_parameters import VisualizationParameters, PresetValidationParameters, EmbedderScheme +from rl_coach.core_types import EnvironmentEpisodes, EnvironmentSteps +from rl_coach.environments.environment import SingleLevelSelection +from rl_coach.environments.gym_environment import GymVectorEnvironment, mujoco_v2 +from rl_coach.filters.action import BoxDiscretization +from rl_coach.filters.filter import OutputFilter +from rl_coach.graph_managers.basic_rl_graph_manager import BasicRLGraphManager +from rl_coach.graph_managers.graph_manager import ScheduleParameters +from rl_coach.agents.wolpertinger_agent import WolpertingerAgentParameters + +#################### +# Graph Scheduling # +#################### +schedule_params = ScheduleParameters() +schedule_params.improve_steps = EnvironmentSteps(2000000) +schedule_params.steps_between_evaluation_periods = EnvironmentEpisodes(20) +schedule_params.evaluation_steps = EnvironmentEpisodes(1) +schedule_params.heatup_steps = EnvironmentSteps(3000) + +######### +# Agent # +######### +agent_params = WolpertingerAgentParameters() +agent_params.network_wrappers['actor'].input_embedders_parameters['observation'].scheme = [Dense(400)] +agent_params.network_wrappers['actor'].middleware_parameters.scheme = [Dense(300)] +agent_params.network_wrappers['critic'].input_embedders_parameters['observation'].scheme = [Dense(400)] +agent_params.network_wrappers['critic'].middleware_parameters.scheme = [Dense(300)] +agent_params.network_wrappers['critic'].input_embedders_parameters['action'].scheme = EmbedderScheme.Empty +agent_params.output_filter = \ + OutputFilter( + action_filters=OrderedDict([ + ('discretization', BoxDiscretization(num_bins_per_dimension=int(1e6))) + ]), + is_a_reference_filter=False + ) + +############### +# Environment # +############### +env_params = GymVectorEnvironment(level=SingleLevelSelection(mujoco_v2)) + +######## +# Test # +######## +preset_validation_params = PresetValidationParameters() +preset_validation_params.test = True +preset_validation_params.min_reward_threshold = 500 +preset_validation_params.max_episodes_to_achieve_reward = 1000 +preset_validation_params.reward_test_level = 'inverted_pendulum' +preset_validation_params.trace_test_levels = ['inverted_pendulum'] + +graph_manager = BasicRLGraphManager(agent_params=agent_params, env_params=env_params, + schedule_params=schedule_params, vis_params=VisualizationParameters(), + preset_validation_params=preset_validation_params) diff --git a/rl_coach/spaces.py b/rl_coach/spaces.py index 503598c08..5dcaa2bb1 100644 --- a/rl_coach/spaces.py +++ b/rl_coach/spaces.py @@ -385,7 +385,8 @@ class DiscreteActionSpace(ActionSpace): """ A discrete action space with action indices as actions """ - def __init__(self, num_actions: int, descriptions: Union[None, List, Dict]=None, default_action: np.ndarray=None): + def __init__(self, num_actions: int, descriptions: Union[None, List, Dict]=None, default_action: np.ndarray=None, + filtered_action_space=None): super().__init__(1, low=0, high=num_actions-1, descriptions=descriptions) # the number of actions is mapped to high @@ -395,6 +396,9 @@ def __init__(self, num_actions: int, descriptions: Union[None, List, Dict]=None, else: self.default_action = default_action + if filtered_action_space is not None: + self.filtered_action_space = filtered_action_space + @property def actions(self) -> List[ActionType]: return list(range(0, int(self.high[0]) + 1))