рдЖрдЬ рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рдКрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рдореИрдВрдиреЗ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реБрджреГрдвреАрдХрд░рдг рдХреЗ рдЧрд╣рди рд╢рд┐рдХреНрд╖рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрддрд╛рддрд╛ рд╣реВрдБ рдХрд┐ "рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдХреЗ рд╕рд╛рде рдмреНрд▓реИрдХ рдмреЙрдХреНрд╕" рдХреИрд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рдП, рдЬреЛ рдЗрдирдкреБрдЯ рдкрд░ рд░реЛрдмреЛрдЯ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред
рд╕рдорд╛рдзрд╛рди рдХрд╛ рдореВрд▓ рд╣реИ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдПрдХреНрдЯрд░ рдХреНрд░рд┐рдЯрд┐рдХ (рдП 2 рд╕реА) рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо, рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдПрд╕реНрдЯреАрдореЗрд╢рди (рдЬреАрдПрдИ) рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдХреЛрд░ред
рдХрдЯ рдХреЗ рддрд╣рдд, рдЧрдгрд┐рдд, рдПрдХ TensorFlow рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдФрд░ рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд┐рд╕ рдкреНрд░рдХрд╛рд░ рдХреЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдбреЗрдореЛ рдиреАрдЪреЗ рдЖрдПред
рд╕рд╛рдордЧреНрд░реА:
-
рдЪреБрдиреМрддреА-
рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ рдХреНрдпреЛрдВ?-
рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг-
рдиреАрддрд┐ рдврд╛рд▓-
рд╡рд┐рдХрд░реНрдг рдЧреМрд╕рд┐рдпрди рдиреАрддрд┐рдпрд╛рдБ-
рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░реЗрдВ-
рдиреБрдХрд╕рд╛рди- рдирд┐рд╖реНрдХрд░реНрд╖
рдХрд╛рд░реНрдп
рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ, рд╣рдо рд░реЛрдмреЛрдЯ рдХреЛ рдореНрдпреВрдЬреЛрдХреЛ рд╕рд┐рдореБрд▓реЗрд╢рди рдореЗрдВ рдЪрд▓рдирд╛ рд╕рд┐рдЦрд╛рдПрдВрдЧреЗред рд╣рдо рд░реЛрдмреЛрдЯ рдореЙрдбрд▓ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдХрджрдо рдХрд╛ рд╡рд░реНрдгрди рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИред рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП, рдХреЗрд╡рд▓ рдореНрдпреВрдЬрд┐рдХреЛ рдореЗрдВ рдбреЗрдореЛ рдФрд░ рдЬрд┐рдо рдУрдкрдирдПрдЖрдИ рдореЗрдВ рдореНрдпреВрдЬрд┐рдХреЛ рдХреЗ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ ред
рдЗрдирдкреБрдЯ рдкрд░, рдПрдЬреЗрдВрдЯ рдХреЗ рдкрд╛рд╕ рдореНрдпреВрдЬреЛрдХреЛ рд╕реЗ рдХрдИ рдирдВрдмрд░ рд╣реЛрдВрдЧреЗ: рд░рд┐рд╢реНрддреЗрджрд╛рд░ рд╕реНрдерд┐рддрд┐, рд░реЛрдЯреЗрд╢рди рдХреЗ рдХреЛрдг, рдЧрддрд┐, рд░реЛрдмреЛрдЯ рдХреЗ рд╢рд░реАрд░ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХрд╛ рддреНрд╡рд░рдг, рдЖрджрд┐ред рдХреБрд▓ рдореЗрдВ, ~ 800 рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдХреНрд░рдоред рд╣рдо рдбреАрдк рд▓рд░реНрдирд┐рдВрдЧ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рд╕рдордЭ рдирд╣реАрдВ рдкрд╛рдПрдВрдЧреЗ рдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЙрдирдХрд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЗрд╕ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕реЗрдЯ рдореЗрдВ рдкрд░реНрдпрд╛рдкреНрдд рдЬрд╛рдирдХрд╛рд░реА рд╣реЛрдЧреА рддрд╛рдХрд┐ рдПрдЬреЗрдВрдЯ рд╕рдордЭ рд╕рдХреЗ рдХрд┐ рдЙрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред
рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╣рдо 18 рдирдВрдмрд░реЛрдВ рдХреА рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗ - рд░реЛрдмреЛрдЯ рдХреА рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреА рд╕рдВрдЦреНрдпрд╛, рдЬрд┐рд╕рдХрд╛ рдЕрд░реНрде рд╣реИ рдЯрд┐рдХрд╛ рдХрд╛ рд░реЛрдЯреЗрд╢рди рдХреЛрдг рдЬрд┐рд╕ рдкрд░ рдЕрдВрдЧ рддрдп рд╣реЛ рдЧрдП рд╣реИрдВред
рдЕрдВрдд рдореЗрдВ, рдПрдЬреЗрдВрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рдПрдкрд┐рд╕реЛрдб рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдЗрдирд╛рдо рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдирд╛ рд╣реИред рдпрджрд┐ рд░реЛрдмреЛрдЯ рдХреНрд░реИрд╢ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдпрд╛ 3000 рдХрджрдо (15 рд╕реЗрдХрдВрдб) рдмреАрдд рдЪреБрдХреЗ рд╣реИрдВ рддреЛ рд╣рдо рдПрдкрд┐рд╕реЛрдб рдХреЛ рд╕рдорд╛рдкреНрдд рдХрд░ рджреЗрдВрдЧреЗред рдкреНрд░рддреНрдпреЗрдХ рдЪрд░рдг рдирд┐рдореНрди рд╕реВрддреНрд░ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдПрдЬреЗрдВрдЯ рдХреЛ рдкреБрд░рд╕реНрдХреГрдд рдХрд░реЗрдЧрд╛:
n рдИ рдбрдмреНрд▓реНрдпреВ рд╕реА рдУ рдореАрдЯрд░ рдореАрдЯрд░ рдПрдХ рдПрди рдбреА рдИ рдПрдо рдПрдХ рдЯреА рдПрдЪ рдУ рдкреА рдПрдо рдПрдХ рдЯреА рдПрдЪ рдмреА рдмреА рдИ рдПрди рдИ рдбрдмреНрд▓реНрдпреВ рд╕реА рдУ рдореАрдЯрд░ рдореАрдЯрд░ рдПрдХ рдПрди рдбреА рдЖрд░ рдПрдо рдПрдХ рдЯреА рдПрдЪ рдУ рдкреА рдПрдо рдПрдХ рдЯреА рдПрдЪ рдмреА рдмреА рдЖрд░ рдЖрд░ рдЯреА = рдбреА рдИ рдПрд▓ рдЯреА рдПрдХ рдПрдХреНрд╕ * 1000 + 0.5
рдпрд╛рдиреА рдПрдЬреЗрдВрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рдЙрд╕рдХреЗ рд╕рдордиреНрд╡рдп рдХреЛ рдмрдврд╝рд╛рдПрдЧрд╛ рдПрдХреНрд╕ рдФрд░ рдкреНрд░рдХрд░рдг рдХреЗ рдЕрдВрдд рддрдХ рдЧрд┐рд░ рдирд╣реАрдВ рд╣реИред
рддреЛ, рдХрд╛рд░реНрдп рд╕реЗрдЯ рд╣реИ: рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП pi: R800 to R18 рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдПрдкрд┐рд╕реЛрдб рдХреЗ рд▓рд┐рдП рдЗрдирд╛рдо рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд╣реЛрдЧрд╛ ред рдпрд╣ рдмрд╣реБрдд рд╕рд╣реА рдирд╣реАрдВ рд╣реИ? :) рдЖрдЗрдП рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рджреАрдк рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ рдЗрд╕ рдХрд╛рд░реНрдп рдХреЛ рдХреИрд╕реЗ рд╕рдВрднрд╛рд▓рддрд╛ рд╣реИ ред
рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ рдХреНрдпреЛрдВ?
рдЪрд▓рдиреЗ рд╡рд╛рд▓реЗ рд░реЛрдмреЛрдЯреЛрдВ рдХреА рдЧрддрд┐ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдзреБрдирд┐рдХ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╢рд╛рд╕реНрддреНрд░реАрдп рд░реЛрдмреЛрдЯрд┐рдХреНрд╕ рдкреНрд░рдерд╛рдУрдВ рд╕реЗ рдорд┐рд▓рдХрд░ рдмрдирддрд╛ рд╣реИ рдЬреЛ рдЗрд╖реНрдЯрддрдо рдирд┐рдпрдВрддреНрд░рдг рдФрд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдЕрдиреБрдХреВрд▓рди : LQR, QP, рдЙрддреНрддрд▓ рдЕрдиреБрдХреВрд▓рди рд╣реИред рдФрд░ рдкрдврд╝реЗрдВ: рдПрдЯрд▓рд╕ рдкрд░ рдмреЛрд╕реНрдЯрди рдбрд╛рдпрдиреЗрдорд┐рдХреНрд╕ рдЯреАрдо рдкреЛрд╕реНрдЯ
рдпреЗ рддрдХрдиреАрдХ рдПрдХ рддрд░рд╣ рдХреА "рд╣рд╛рд░реНрдбрдХреЛрдбрд┐рдВрдЧ" рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдЙрдиреНрд╣реЗрдВ рдирд┐рдпрдВрддреНрд░рдг рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдореЗрдВ рд╕реАрдзреЗ рдХрд╛рд░реНрдп рдХреЗ рдХрдИ рд╡рд┐рд╡рд░рдгреЛрдВ рдХреА рд╢реБрд░реВрдЖрдд рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдЙрдирдореЗрдВ рдХреЛрдИ рд╕реАрдЦрдиреЗ рдХреА рдкреНрд░рдгрд╛рд▓реА рдирд╣реАрдВ рд╣реИ - рдЕрдиреБрдХреВрд▓рди "рдореМрдХреЗ рдкрд░" рд╣реЛрддрд╛ рд╣реИред
рджреВрд╕рд░реА рдУрд░, рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдирд╛ (рдЗрд╕рдХреЗ рдмрд╛рдж рдЖрд░рдПрд▓) рдХреЛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдкрд░рд┐рдХрд▓реНрдкрдирд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕рд╕реЗ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдЕрдзрд┐рдХ рд╕рд╛рдорд╛рдиреНрдп рдФрд░ рдорд╛рдкрдиреАрдп рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рд╕реБрджреГрдвреАрдХрд░рдг рд╕реАрдЦрдиреЗ рдХрд╛ рд╡рд┐рд╡рд░рдг

рд╕реНрд░реЛрдд
рдЖрд░рдПрд▓ рд╕рдорд╕реНрдпрд╛ рдореЗрдВ, рд╣рдо рдПрдЬреЗрдВрдЯ рдФрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдХреА рдмрд╛рддрдЪреАрдд рдХреЛ рдЬреЛрдбрд╝реЗ рдХреЗ рдПрдХ рдЕрдиреБрдХреНрд░рдо (рд░рд╛рдЬреНрдп, рдЗрдирд╛рдо) рдФрд░ рдЙрдирдХреЗ рдмреАрдЪ рдХреЗ рдмрджрд▓рд╛рд╡реЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирддреЗ рд╣реИрдВ - рдХрд╛рд░реНрд░рд╡рд╛рдИ ред
(s0) xrightarrowa0(s1,r1) xrightarrowa1... xrightarrowanтИТ1(sn,rn)
рд╢рдмреНрджрд╛рд╡рд▓реА рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ:
- pi(atредst) - рдиреАрддрд┐ , рдПрдЬреЗрдВрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рд░рдгрдиреАрддрд┐, рд╕рд╢рд░реНрдд рд╕рдВрднрд╛рд╡реНрдпрддрд╛,
- at sim pi( cdot|st) - рд╡рд┐рддрд░рдг рд╕реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ pi ред
рд╣рдо рдиреАрддрд┐ рдХреЛ рдПрдХ рдХрд╛рд░реНрдп рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рди рд╕рдХрддреЗ рд╣реИрдВ pi:рд╕реНрдЯреЗрдЯреНрд╕рдЯреВрдПрдХреНрдЯреНрд╕ , рд▓реЗрдХрд┐рди рд╣рдо рдПрдЬреЗрдВрдЯ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рд╕реНрдЯреЛрдЪрд╕реНрдЯрд┐рдХ рдмрдирд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдиреНрд╡реЗрд╖рдг рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ ред рдпрд╛рдиреА рдХреБрдЫ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд╕рд╛рде рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдПрдЬреЗрдВрдЯ рдЪреБрдирддрд╛ рд╣реИред - рддрд╛рдК - рдПрдЬреЗрдВрдЯ, рдЕрдиреБрдХреНрд░рдо рджреНрд╡рд╛рд░рд╛ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХрд╛ рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ (s1,s2,...,sn) ред
рдПрдЬреЗрдВрдЯ рдХрд╛ рдХрд╛рд░реНрдп рдЕрдкреЗрдХреНрд╖рд┐рдд рд░рд┐рдЯрд░реНрди рдХреЛ рдЕрдзрд┐рдХрддрдо рдХрд░рдирд╛ рд╣реИ :
J (\ pi) = \ E _ {\ _ tau \ sim \ pi} [R (\ tau)] = \ E _ {\ _ tau \ sim \ pi} \ рдмрд╛рдПрдБ [\ sum_ {t = 0} ^ n_t \ right ]
рдЕрдм рд╣рдо RL рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЦреЛрдЬреЗрдВ:
piтИЧ=arg mathopmax piJ( pi)
рдЬрд╣рд╛рдБ piтИЧ рдЗрд╖реНрдЯрддрдо рдиреАрддрд┐ рд╣реИред
OpenAI рд╕реЗ рд╕рд╛рдордЧреНрд░реА рдореЗрдВ рдФрд░ рдкрдврд╝реЗрдВ: OpenAI Spinning Up
рдиреАрддрд┐ рдврд╛рд▓
рдпрд╣ рдЙрд▓реНрд▓реЗрдЦрдиреАрдп рд╣реИ рдХрд┐ рдЕрдиреБрдХреВрд▓рди рд╕рдорд╕реНрдпрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрд░рдПрд▓ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдПрдХ рдХрдареЛрд░ рдмрдпрд╛рди рд╣рдореЗрдВ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЬреНрдЮрд╛рдд рдЕрдиреБрдХреВрд▓рди рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рджреЗрддрд╛ рд╣реИред рдЬрд░рд╛ рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдпрджрд┐ рд╣рдо рдореЙрдбрд▓ рдорд╛рдкрджрдВрдбреЛрдВ рджреНрд╡рд╛рд░рд╛ рдЕрдкреЗрдХреНрд╖рд┐рдд рд░рд┐рдЯрд░реНрди рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдХрд┐рддрдирд╛ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛: nabla thetaJ( pi theta) ред рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рддрд░рд╛рдЬреВ рдХреЛ рдЕрджреНрдпрддрди рдХрд░рдиреЗ рдХрд╛ рдирд┐рдпрдо рд╕рд░рд▓ рд╣реЛрдЧрд╛:
theta= thetaрдкреБрд░рд╛рдирд╛+ Alpha nabla thetaJ( pi theta)
рдпрд╣ рд╕рднреА рдиреАрддрд┐рдЧрдд рдврд╛рд▓ рд╡рд┐рдзрд┐рдпреЛрдВ рдХрд╛ рдареАрдХ-рдареАрдХ рд╡рд┐рдЪрд╛рд░ рд╣реИред рдЗрд╕ рдврд╛рд▓ рдХрд╛ рд╕рдЦреНрдд рдирд┐рд╖реНрдХрд░реНрд╖ рдХреБрдЫ рд╣рдж рддрдХ рдХрдЯреНрдЯрд░ рд╣реИред рд╣рдо рдЗрд╕реЗ рдпрд╣рд╛рдВ рдирд╣реАрдВ рд▓рд┐рдЦреЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди OpenAI рд╕реЗ рдЕрджреНрднреБрдд рд╕рд╛рдордЧреНрд░реА рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗ ред рдврд╛рд▓ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
\ nabla_ \ theta J (\ pi_ \ theta) = \ E _ {\ _ tau \ sim \ pi_ \ theta} \ left [\ sum_ {t = 0} ^ T \ nabla_ \ theta \ log \ pi_ \ theta (a_t_) | s_t) R (\ tau) \ right]
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХрд╛ рдиреБрдХрд╕рд╛рди рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
рд╣рд╛рдирд┐=тИТ log( pi theta(at|st))R( tou)
рдЙрд╕рдХреЛ рдпрд╛рдж рдХрд░реЛ R( tau)= sumTt=0rt , рдФрд░ pi theta(at|st) - рдпрд╣ рдЙрд╕ рд╕рдордп рд╣рдорд╛рд░реЗ рдореЙрдбрд▓ рдХрд╛ рдЖрдЙрдЯрдкреБрдЯ рд╣реИ рдЬрдм рд╡рд╣ рдЕрдВрджрд░ рдереА st ред рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдорд╛рдЗрдирд╕ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ рдХрд┐ рд╣рдо рдЕрдзрд┐рдХрддрдо рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдЬреЗ ред рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рд╣рдо рдмреИрдЪреЛрдВ рдкрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗ рдФрд░ рдЙрдиреНрд╣реЗрдВ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬреЛрдбрд╝реЗрдВрдЧреЗ (рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рдХрд╛рд░рдг рдбреЗрдЯрд╛ рд╢реЛрд░)ред
рдпрд╣ рдПрдХ рдХрд╛рд░реНрдпрд╢реАрд▓ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ рдЬрд┐рд╕реЗ REINFORCE рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рд╡рд╣ рдЬрд╛рдирддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рд╕рд░рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреИрд╕реЗ рдЦреЛрдЬрдирд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, "рдХрд╛рд░реНрдЯрдкреЛрд▓-рд╡реА 2" ред
рдПрдЬреЗрдВрдЯ рдХреЛрдб рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
class ActorNetworkDiscrete: def __init__(self): self.state_ph = tf.placeholder(tf.float32, shape=[None, observation_space]) l1 = tf.layers.dense(self.state_ph, units=20, activation=tf.nn.relu) output_linear = tf.layers.dense(l1, units=action_space) output = tf.nn.softmax(output_linear) self.action_op = tf.squeeze(tf.multinomial(logits=output_linear,num_samples=1), axis=1)
рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЗрд╕ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХрд╛ рдПрдХ рдЫреЛрдЯрд╛ рдмреЛрдзрдХ рд╣реИ: (рдЕрд╡рд▓реЛрдХрди_рдХреНрд╖реЗрддреНрд░, 10, рдХреНрд░рд┐рдпрд╛_рдХреНрд╖реЗрддреНрд░) [рдХрд╛рд░реНрдЯрдкреЛрд▓ рдХреЗ рд▓рд┐рдП рдпрд╣ рд╣реИ (4, 10, 2)]ред tf.multinomial рдЖрдк рдмреЗрддрд░рддреАрдм рдврдВрдЧ рд╕реЗ рднрд╛рд░рд┐рдд рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдПрдХ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
action = sess.run(actor.action_op, feed_dict={actor.state_ph: observation})
рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрд╕реЗ рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░реЗрдВрдЧреЗ:
batch_generator = generate_batch(environments, batch_size=batch_size) for epoch in tqdm_notebook(range(epochs_number)): batch = next(batch_generator)
рдмреИрдЪ рдЬрдирд░реЗрдЯрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдПрдЬреЗрдВрдЯ рдЪрд▓рд╛рддрд╛ рд╣реИ рдФрд░ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реИред рдмреИрдЪ рдХреЗ рддрддреНрд╡ рдЗрд╕ рддрд░рд╣ рдХреЗ рд╣реЛрддреЗ рд╣реИрдВ: (st,at,R( tau)) ред
рдПрдХ рдЕрдЪреНрдЫрд╛ рдЬрдирд░реЗрдЯрд░ рд▓рд┐рдЦрдирд╛ рдПрдХ рдЕрд▓рдЧ рдХрд╛рд░реНрдп рд╣реИ, рдЬрд╣рд╛рдВ рдореБрдЦреНрдп рдХрдард┐рдирд╛рдИ рдПрдХрд▓ рд╕рд┐рдореБрд▓реЗрд╢рди рдЪрд░рдг (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдореНрдпреВрдЬреЛ) рдХреА рддреБрд▓рдирд╛ рдореЗрдВ sess.run () рдХреЙрд▓ рдХрд░рдиреЗ рдХреА рд╕рд╛рдкреЗрдХреНрд╖ рдЙрдЪреНрдЪ рд▓рд╛рдЧрдд рд╣реИред рдХрд╛рдо рдХреЛ рдЧрддрд┐ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрд╕ рддрдереНрдп рдХрд╛ рдлрд╛рдпрджрд╛ рдЙрдард╛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдмреИрдЪреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВ, рдФрд░ рдХрдИ рд╕рдорд╛рдирд╛рдВрддрд░ рд╡рд╛рддрд╛рд╡рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдЙрдиреНрд╣реЗрдВ рдПрдХ рдзрд╛рдЧреЗ рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд░рдиреЗ рд╕реЗ рдПрдХрд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдорд╣рддреНрд╡рдкреВрд░реНрдг рддреНрд╡рд░рдг рд╣реЛрдЧрд╛ред
OpenAI рдмреЗрд╕рд▓рд╛рдЗрди рд╕реЗ DummyVecEnv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рдЬреЗрдирд░реЗрдЯрд░ рдХреЛрдб рдкрд░рд┐рдгрд╛рдореА рдПрдЬреЗрдВрдЯ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рдХреНрд░рд┐рдпрд╛рдУрдВ рдХреЗ рд╕реАрдорд┐рдд рд╕реНрдерд╛рди рдХреЗ рд╕рд╛рде рдЦреЗрд▓ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдкреНрд░рд╛рд░реВрдк рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдЙрдкрдпреБрдХреНрдд рдирд╣реАрдВ рд╣реИред рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдПрдЬреЗрдВрдЯ рдХреЛ рдПрдХ рд╡реЗрдХреНрдЯрд░ рдЬрд╛рд░реА рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП Rn рдЬрд╣рд╛рдБ рдПрди - рд╕реНрд╡рддрдВрддреНрд░рддрд╛ рдХреА рдбрд┐рдЧреНрд░реА рдХреА рд╕рдВрдЦреНрдпрд╛ред ( рдпрд╛ рдЖрдк рдПрдХреНрд╢рди рд╕реНрдкреЗрд╕ рдХреЛ рдЕрдВрддрд░рд╛рд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЕрд╕рддрдд рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рдХрд╛рд░реНрдп рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ )
рд╡рд┐рдХрд░реНрдг рдЧреМрд╕рд┐рдпрди рдиреАрддрд┐рдпрд╛рдБ
рдбрд╛рдпрдЧреЛрдирд▓ рдЧреЙрд╕рд┐рдпрди рдиреАрддрд┐рдпреЛрдВ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХрд╛ рд╕рд╛рд░ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП n-рдЖрдпрд╛рдореА рд╕рд╛рдорд╛рдиреНрдп рд╡рд┐рддрд░рдг рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реИ, рдЕрд░реНрдерд╛рддреН рдореБ рдереАрдЯрд╛ - рдЪрдЯрд╛рдИред рдкреНрд░рддреАрдХреНрд╖рд╛ рдФрд░ рд╕рд┐рдЧреНрдорд╛ рдереАрдЯрд╛ - рдорд╛рдирдХ рд╡рд┐рдЪрд▓рдиред рдЬреИрд╕реЗ рд╣реА рдПрдЬреЗрдВрдЯ рдХреЛ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд╣рдо рдЗрди рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдореЙрдбрд▓ рд╕реЗ рдкреВрдЫреЗрдВрдЧреЗ рдФрд░ рдЗрд╕ рд╡рд┐рддрд░рдг рд╕реЗ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЪрд░ рд▓реЗрдВрдЧреЗред рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдПрдЬреЗрдВрдЯ рдХреЛ рдмрд╛рд╣рд░ рдХрд░ рджрд┐рдпрд╛ Rn рдФрд░ рдЗрд╕реЗ рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рдмрдирд╛ рджрд┐рдпрд╛ред рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдкрд░ рд╡рд┐рддрд░рдг рд╡рд░реНрдЧ рдХреЛ рддрдп рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рд╣рдо рдЧрдгрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ log( pi theta(at|st)) рдФрд░ рдЗрд╕рд▓рд┐рдП рдиреАрддрд┐ рдврд╛рд▓ред
рдиреЛрдЯ: рддрдп рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рд╕рд┐рдЧреНрдорд╛ рдереАрдЯрд╛ рд╣рд╛рдЗрдкрд░рдкрд░рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдЙрдЯрдкреБрдЯ рдЖрдпрд╛рдо рдХрдо рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмрд╣реБрдд рдиреБрдХрд╕рд╛рди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕реАрдЦрдиреЗ рдХреЛ рд╕реНрдерд┐рд░ рдХрд░рддрд╛ рд╣реИред
рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рдиреАрддрд┐ рдкрд░ рдЕрдзрд┐рдХ рдкрдврд╝реЗрдВ ред
рдПрдЬреЗрдВрдЯ рдХреЛрдб:
epsilon = 1e-8 def gaussian_loglikelihood(x, mu, log_std): pre_sum = -0.5 * (((x - mu) / (tf.exp(log_std) + epsilon))**2 + 2 * log_std + np.log(2 * np.pi)) return tf.reduce_sum(pre_sum, axis=1) class ActorNetworkContinuous: def __init__(self): self.state_ph = tf.placeholder(tf.float32, shape=[None, observation_space]) l1 = tf.layers.dense(self.state_ph, units=100, activation=tf.nn.tanh) l2 = tf.layers.dense(l1, units=50, activation=tf.nn.tanh) l3 = tf.layers.dense(l2, units=25, activation=tf.nn.tanh) mu = tf.layers.dense(l3, units=action_space) log_std = tf.get_variable(name='log_std', initializer=-0.5 * np.ones(action_space, std = tf.exp(log_std) self.action_op = mu + tf.random.normal(shape=tf.shape(mu)) * std
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рднрд╛рдЧ рдЕрд▓рдЧ рдирд╣реАрдВ рд╣реИред
рдЕрдм рд╣рдо рдЕрдВрдд рдореЗрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреИрд╕реЗ REINFORCE рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд╕рд╛рде рд╕рд╛рдордирд╛ рдХрд░реЗрдЧрд╛ред рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдЬреЗрдВрдЯ рдХрд╛ рд▓рдХреНрд╖реНрдп рджрд╛рдИрдВ рдУрд░ рдмрдврд╝рдирд╛ рд╣реИред
рдзреАрд░реЗ-рдзреАрд░реЗ рд▓реЗрдХрд┐рди рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреА рдУрд░ рдмрдврд╝ рд░рд╣рд╛ рд╣реИред
рдкреБрд░рд╕реНрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд╛рдиреЗ
рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдореЗрдВ рдЕрддрд┐рд░рд┐рдХреНрдд рд╕рджрд╕реНрдп рд╣реИрдВред рд╣рд░ рдХрджрдо рдкрд░ рдирдорд╕реНрдХрд╛рд░ рдЯреА рдЬрдм рд▓рдШреБрдЧрдгрдХ рдХреЗ рд╡рдЬрди рдХреЛ рдХрдо рдХрд░рддреЗ рд╣реБрдП, рд╣рдо рдкреВрд░реЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рд▓рд┐рдП рдХреБрд▓ рдЗрдирд╛рдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЕрддреАрдд рд╕реЗ рдЕрдкрдиреА рдЙрдкрд▓рдмреНрдзрд┐рдпреЛрдВ рдХреЗ рджреНрд╡рд╛рд░рд╛ рдПрдЬреЗрдВрдЯ рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдирд╛ред рдЧрд▓рдд рд▓рдЧрддрд╛ рд╣реИ, рд╣реИ рдирд╛? рдЗрд╕рд▓рд┐рдП рдпрд╣
\ nabla_ \ theta J (\ pi_ \ theta) = \ E _ {\ _ tau \ sim \ pi_ \ theta} \ left [\ sum_ {t = 0} ^ T \ nabla_ \ theta \ log \ pi_ \ theta (a_t_) | s_t) \ sum_ {t '= 0} ^ T r_ {t'} \ right]
рдпрд╣ рдмрди рдЬрд╛рдПрдЧрд╛
\ nabla_ \ theta J (\ pi_ \ theta) = \ E _ {\ _ tau \ sim \ pi_ \ theta} \ left [\ sum_ {t = 0} ^ T \ nabla_ \ theta \ log \ pi_ \ theta (a_t_) | s_t) \ sum_ {t '= t} ^ T r_ {t'} \ right]
10 рдЕрдВрддрд░ рдЦреЛрдЬреЗрдВ :)
рдЬрдмрдХрд┐ рдЗрди рд╕рджрд╕реНрдпреЛрдВ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдЧрдгрд┐рддреАрдп рд░реВрдк рд╕реЗ рдХреБрдЫ рднреА рдирд╣реАрдВ рдмрд┐рдЧрд╛рдбрд╝рддреА рд╣реИ, рдпрд╣ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рд╢реЛрд░ рдХрд░рддрд╛ рд╣реИред рдЕрдм, рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рджреМрд░рд╛рди, рдПрдЬреЗрдВрдЯ рдХреЗрд╡рд▓ рдЙрди рдкреБрд░рд╕реНрдХрд╛рд░реЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдЧрд╛ рдЬреЛ рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЗ рдмрд╛рдж рдорд┐рд▓реЗ рдереЗред
рдЗрд╕ рд╕реБрдзрд╛рд░ рдХреЗ рдХрд╛рд░рдг, рдФрд╕рдд рдЗрдирд╛рдо рдмрдврд╝рд╛ рд╣реИред рдкреНрд░рд╛рдкреНрдд рдПрдЬреЗрдВрдЯреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рдиреЗ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП forelimbs рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦрд╛:
рдЖрд▓реЛрдЪрдирд╛ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░реЗрдВ
рдЖрдЧреЗ рдХреЗ рд╕реБрдзрд╛рд░реЛрдВ рдХрд╛ рд╕рд╛рд░ рдорд╛рдзреНрдпрдо рдХреЗ рд░рд╛рдЬреНрдпреЛрдВ рдХреЗ рдмреАрдЪ рд╕реНрдЯреЛрдХреЗрд╕реНрдЯрд┐рдХ рд╕рдВрдХреНрд░рдордг рдХреЗ рдХрд╛рд░рдг рдЙрддреНрдкрдиреНрди рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рд╢реЛрд░ (рд╡рд┐рдЪрд░рдг) рдореЗрдВ рдХрдореА рд╣реИред
рдпрд╣ рд╣рдореЗрдВ рдПрдХ рдореЙрдбрд▓ рдЬреЛрдбрд╝рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдЬреЛ рд░рд╛рдЬреНрдп рд╕реЗ рд╢реБрд░реВ рд╣реЛрдиреЗ рд╡рд╛рд▓реЗ рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд рдкреБрд░рд╕реНрдХрд╛рд░реЛрдВ рдХреА рдФрд╕рдд рд░рд╛рд╢рд┐ рдХреА рднрд╡рд┐рд╖реНрдпрд╡рд╛рдгреА рдХрд░реЗрдЧрд╛ рдПрд╕ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЗ рдЕрдВрдд рддрдХ, рдЕрд░реНрдерд╛рддреНред рдорд╛рди рд╕рдорд╛рд░реЛрд╣ред
V pi(s)= E tau sim pi left[R( tau)|s0=s right] textтИТрдорд╛рдирдлрд╝рдВрдХреНрд╢рди
Q pi(s)= E tau sim pi left[R( tau)|s0=s,a0=a right] textтИТActionтИТValue=
A pi(s),Q pi(s,a)тИТV pi(s) textтИТрд▓рд╛рднрдлрд╝рдВрдХреНрд╢рди
рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡рд╛рдкрд╕реА рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдпрджрд┐ рд╣рдорд╛рд░реА рдиреАрддрд┐ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд░рд╛рдЬреНрдп рд╕реЗ рдЦреЗрд▓ рд╢реБрд░реВ рдХрд░рддреА рд╣реИред рдХреНрдпреВ-рдлрд╝рдВрдХреНрд╢рди рдХреЗ рд╕рд╛рде рднреА рдРрд╕рд╛ рд╣реА рд╣реИ, рдмрд╕ рдмрд╣реБрдд рдкрд╣рд▓реЗ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХреЛ рдареАрдХ рдХрд░реЗрдВред
рдЖрд▓реЛрдЪрдирд╛ рдЬреЛрдбрд╝реЗрдВ
рдЗрдирд╛рдо-рджрд░-рдЧреЛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рдпрд╣ рдврд╛рд▓ рдХреИрд╕реА рджрд┐рдЦрддреА рд╣реИ:
nabla theta log pi theta(at|st) sumTtтА▓=trtтА▓
рдЕрдм рд▓рдШреБрдЧрдгрдХ рдХреЗ рдврд╛рд▓ рдХреЗ рд▓рд┐рдП рдЧреБрдгрд╛рдВрдХ рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдирдореВрдиреЗ рд╕реЗ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред
sumTtтА▓=trtтА▓ simV pi(st)
рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рд╕реЗ рдПрдХ рдирдореВрдиреЗ рдХреЗ рд╕рд╛рде рд▓рдШреБрдЧрдгрдХ рдврд╛рд▓ рдХрд╛ рд╡рдЬрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИред рд╣рдо рдХреБрдЫ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдорд╛рди-рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдЕрдиреБрдорд╛рдирд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ, рдФрд░ рдЗрд╕рд╕реЗ рдЖрд╡рд╢реНрдпрдХ рдореВрд▓реНрдп рдкреВрдЫрддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рдо рдЗрд╕ рдореЙрдбрд▓ рдХреЛ рдЖрд▓реЛрдЪрдХ (рдХреНрд░рд┐рдЯрд┐рдХ) рдХрд╣реЗрдВрдЧреЗ рдФрд░ рд╣рдо рдЗрд╕реЗ рдиреАрддрд┐ рдХреЗ рд╕рдорд╛рдирд╛рдВрддрд░ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдврд╛рд▓ рд╕реВрддреНрд░ рдХреЗ рд░реВрдк рдореЗрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
nabla theta log pi theta(atредst) sumTtтА▓=trtтА▓ рд▓рдЧрднрдЧ nabla thetaтА▓slog pi theta(atредst)V| pi( tau)
рд╣рдордиреЗ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд┐рдпрд╛, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА, рд╣рдордиреЗ рдЕрдкрдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдкреЗрд╢ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рддрдВрддреНрд░рд┐рдХрд╛ рдиреЗрдЯрд╡рд░реНрдХ рд╕рдиреНрдирд┐рдХрдЯрди рддреНрд░реБрдЯрд┐рдпрд╛рдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рд╕рдордЭреМрддрд╛ рдЕрдЪреНрдЫрд╛ рд╣реИред рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рдореЗрдВ рдРрд╕реА рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣-рдкрд░рд┐рд╡рд░реНрддрди рд╡реНрдпрд╛рдкрд╛рд░ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрд▓реЛрдЪрдХ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдПрдХрддреНрд░ рдХрд┐рдП рдЧрдП рдЗрдирд╛рдо-рдЯреВ-рдЧреЛ рдирдореВрдиреЛрдВ рдкрд░ рдореВрд▓реНрдп-рдлрд╝рдВрдХреНрд╢рди рдкреНрд░рддрд┐рдЧрдорди рд╕рд┐рдЦрд╛рдПрдЧрд╛ред рдПрдХ рддреНрд░реБрдЯрд┐ рд╕рдорд╛рд░реЛрд╣ рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдПрдордПрд╕рдИ рд▓реЗрддреЗ рд╣реИрдВред рдпрд╛рдиреА рдиреБрдХрд╕рд╛рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
рд╣рд╛рдирд┐=(V pi psi(st)тИТ sumTtтА▓=trtтА▓)$
рдЖрд▓реЛрдЪрдирд╛ рдХреЛрдб:
class CriticNetwork: def __init__(self): self.state_ph = tf.placeholder(tf.float32, shape=[None, observation_space]) l1 = tf.layers.dense(self.state_ph, units=100, activation=tf.nn.tanh) l2 = tf.layers.dense(l1, units=50, activation=tf.nn.tanh) l3 = tf.layers.dense(l2, units=25, activation=tf.nn.tanh) output = tf.layers.dense(l3, units=1) self.value_op = tf.squeeze(output, axis=-1)
рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдЪрдХреНрд░ рдЕрдм рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддрд╛ рд╣реИ:
batch_generator = generate_batch(envs, batch_size=batch_size) for epoch in tqdm_notebook(range(epochs_number)): batch = next(batch_generator)
рдЕрдм рдмреИрдЪ рдореЗрдВ рдПрдХ рдФрд░ рдореВрд▓реНрдп, рдореВрд▓реНрдп, рдЬрдирд░реЗрдЯрд░ рдореЗрдВ рдЖрд▓реЛрдЪрдХ рджреНрд╡рд╛рд░рд╛ рдЧрдгрдирд╛ рдХреА рдЬрд╛рддреА рд╣реИред
рдпрд╛рдиреА рдмреИрдЪ рдХрд╛ рдкреНрд░рдХрд╛рд░ рдпрд╣ рд╣реИ: (st,at,V pi psi(st), sumTtтА▓=trtтА▓) ред
рдЪрдХреНрд░ рдореЗрдВ, рдЖрд▓реЛрдЪрдХ рдХреЛ рдЕрднрд┐рд╕рд░рдг рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рд╕реЗ рдХреБрдЫ рднреА рд╕реАрдорд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд╡рдВрд╢ рдХреЗ рдХрдИ рдХрджрдо рдЙрдард╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдореВрд▓реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдЕрдиреБрдорд╛рди рдореЗрдВ рд╕реБрдзрд╛рд░ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реНрд╡рд╛рдЧреНрд░рд╣ рдХрдо рд╣реЛрддреЗ рд╣реИрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдкреБрдирдГ рдкреНрд░рдпрд╛рд╕ рд╕реЗ рдмрдЪрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрдбрд╝реЗ рдмреИрдЪ рдЖрдХрд╛рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╕реАрдЦрдиреЗ рдХреА рдиреАрддрд┐ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рд╕рдорд╛рди рдХрдерди рд╕рддреНрдп рдирд╣реАрдВ рд╣реИред рдЗрд╕реЗ рд╕реАрдЦрдиреЗ рдХреЗ рдорд╛рд╣реМрд▓ рд╕реЗ рддреБрд░рдВрдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓рдиреА рдЪрд╛рд╣рд┐рдП, рдЕрдиреНрдпрдерд╛ рд╣рдо рдЦреБрдж рдХреЛ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рд╣рдо рдЙрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдиреАрддрд┐ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдирд╣реАрдВ рдХрд┐рдП рдЧрдП рдереЗред рдЗрд╕ рд╕рдВрдкрддреНрддрд┐ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдСрди-рдкреЙрд▓рд┐рд╕реА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдкреЙрд▓рд┐рд╕реА рдЧреНрд░реЗрдЬреБрдПрдЯреНрд╕ рдореЗрдВ рдмреЗрд╕рд▓рд╛рдЗрди
рдпрд╣ рджрд┐рдЦрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рдореЗрдВ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧреА рдХрд╛рд░реНрдпреЛрдВ рдХреА рдПрдХ рд╡рд┐рд╕реНрддреГрдд рдХрдХреНрд╖рд╛ рд▓рдЧрд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рд╣реИ рдЯреА ред рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред ( рдЗрд╕ рддрдереНрдп рдХрд╛ рдирд┐рд╖реНрдХрд░реНрд╖ ) рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХрд╛рд░реНрдп рдЖрдзрд╛рд░рднреВрдд рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВ:

рд╕реНрд░реЛрдд: рдЬреАрдПрдИ рдкреЗрдкрд░
рд╡рд┐рднрд┐рдиреНрди рдЖрдзрд╛рд░рднреВрдд рдХрд╛рд░реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдкрд░рд┐рдгрд╛рдо рджреЗрддреЗ рд╣реИрдВред рдПрдХ рдирд┐рдпрдо рдХреЗ рд░реВрдк рдореЗрдВ, рд╕рдмрд╕реЗ рдмрдбрд╝рд╛ рд▓рд╛рдн рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдФрд░ рдЗрд╕рдХреЗ рдЕрдиреБрдорд╛рдиреЛрдВ рджреНрд╡рд╛рд░рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЗрд╕рдХреЗ рдкреАрдЫреЗ рдереЛрдбрд╝рд╛ рдЕрдВрддрд░реНрдЬреНрдЮрд╛рди рднреА рд╣реИред рдЬрдм рд╣рдо рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рд╣рдо рдЙрд╕ рдЕрдиреБрдкрд╛рдд рдореЗрдВ рдПрдЬреЗрдВрдЯ рдХреЛ рдареАрдХ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдПрдЬреЗрдВрдЯ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдХрд╛рд░реНрд░рд╡рд╛рдИ рд╕реЗ рдФрд╕рдд рд╕реЗ рдЬреНрдпрд╛рджрд╛ рдмреЗрд╣рддрд░ рдпрд╛ рдЦрд░рд╛рдм рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдПрдЬреЗрдВрдЯ рдЬрд┐рддрдирд╛ рдмреЗрд╣рддрд░ рдкрд░реНрдпрд╛рд╡рд░рдг рдореЗрдВ рдЦреЗрд▓рддрд╛ рд╣реИ, рдЙрд╕рдХреЗ рдорд╛рдирдХ рдЙрддрдиреЗ рд╣реА рдКрдВрдЪреЗ рд╣реЛрддреЗ рдЬрд╛рддреЗ рд╣реИрдВ ред рдЖрджрд░реНрд╢ рдПрдЬреЗрдВрдЯ рдЕрдЪреНрдЫрд╛ рдЦреЗрд▓реЗрдЧрд╛ рдФрд░ рдЕрдкрдиреЗ рд╕рднреА рдХрд╛рд░реНрдпреЛрдВ рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░реЗрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ 0 рдХреЗ рдмрд░рд╛рдмрд░ рд╣реИ рдФрд░ рдЗрд╕рд▓рд┐рдП, 0 рдХреЗ рдмрд░рд╛рдмрд░ рдЧреНрд░реЗрдбрд┐рдПрдВрдЯ рд╣реИред
рд╡реИрд▓реНрдпреВ рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд╛рдн рдореВрд▓реНрдпрд╛рдВрдХрди
рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдпрд╛рдж рдХрд░реЗрдВ:
A pi(s),Q pi(s,a)тИТV pi(s) textтИТрд▓рд╛рднрдлрд╝рдВрдХреНрд╢рди
рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рд╕реАрдЦрд╛ рдЬрд╛рдПред рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдПрдХ рдЯреНрд░рд┐рдХ рдЖрдПрдЧреА, рдЬреЛ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдХреЛ рд╡реИрд▓реНрдпреВ рдлрд╝рдВрдХреНрд╢рди рдХреА рдЧрдгрдирд╛ рдореЗрдВ рдХрдо рдХрд░ рджреЗрдЧреАред
рдкрд░рд┐рднрд╛рд╖рд┐рдд deltaVt=rt+V(st+1)тИТV(st) - рдЕрд╕реНрдерд╛рдпреА рдЕрдВрддрд░ рдЕрд╡рд╢рд┐рд╖реНрдЯ ( рдЯреАрдбреА-рдЕрд╡рд╢рд┐рд╖реНрдЯ )ред рдпрд╣ рдХрд╣рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рдорд╛рд░реЛрд╣ рдХрд╛ рдлрд╛рдпрджрд╛ рд╣реЛрддрд╛ рд╣реИ:
E left[ deltaVt right]= E left[rt+V(st+1)тИТV(st) right]= E left[Q(st,at)тИТV(st) right]=A(st,at)
рдЗрд╕ рддрд░рд╣ рдХрд╛ рдПрдХ рд╡реИрдЪрд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЬрдЯрд┐рд▓ рдмрджрд▓рд╛рд╡ рдХреЛрдб рдореЗрдВ рдЗрддрдирд╛ рдмрдбрд╝рд╛ рдмрджрд▓рд╛рд╡ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдХрд╕рд╛рддрд╛ рд╣реИред рдЕрдм, рдорд╛рди рдлрд╝рдВрдХреНрд╢рди рдХрд╛ рдореВрд▓реНрдпрд╛рдВрдХрди рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп, рдЖрд▓реЛрдЪрдХ рдиреАрддрд┐ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд╛рдн рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рд╕реНрддреБрдд рдХрд░реЗрдЧрд╛ред
рдкрд░рд┐рдгрд╛рдореА рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдПрдХреНрдЯрд░-рдХреНрд░рд┐рдЯрд┐рдХ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
def estimate_advantage(states, rewards): values = sess.run(critic.value_op, feed_dict={critic.state_ph: states}) deltas = rewards - values deltas = deltas + np.append(values[1:], np.array([0])) return deltas, values
рдкреНрд░рд╛рдкреНрдд рдПрдЬреЗрдВрдЯреЛрдВ рдХреЛ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдФрд░ рдЕрдВрдЧреЛрдВ рдХреЗ рд╕рдордХрд╛рд▓рд┐рдХ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд▓рд╛рдн рдЕрдиреБрдорд╛рди
рдПрдХ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рд╣рд╛рд▓рд┐рдпрд╛ рд▓реЗрдЦ (2018), " рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рд▓рд╛рдн рдЖрдХрд▓рди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЙрдЪреНрдЪ-рдЖрдпрд╛рдореА рдирд┐рд░рдВрддрд░ рдирд┐рдпрдВрддреНрд░рдг ", рдореВрд▓реНрдп рдлрд╝рдВрдХреНрд╢рди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдбрд╡рд╛рдВрдЯреЗрдЬ рдХрд╛ рдФрд░ рднреА рдЕрдзрд┐рдХ рдХреБрд╢рд▓ рдореВрд▓реНрдпрд╛рдВрдХрди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрдзрд┐рдХ рд╡рд┐рдЪрд░рдг рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИ:
AGAE( gamma, lambda)t= sum l=0infty( gamma lambda)l рдбреЗрд▓реНрдЯрд╛Vt+l
рдЬрд╣рд╛рдВ:
- deltaVt=rt+V(st+1)тИТV(st) - рдЯреАрдбреА-рдЕрд╡рд╢рд┐рд╖реНрдЯ,
- рдЧрд╛рдорд╛ - рдбрд┐рд╕реНрдХрд╛рдЙрдВрдЯ рдлреИрдХреНрдЯрд░ (рд╣рд╛рдЗрдкрд░рдкрд░рдореАрдЯрд░),
- lambda - рд╣рд╛рдЗрдкрд░рдкрд░рдореАрдЯрд░ред
рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреЛ рдкреНрд░рдХрд╛рд╢рди рдореЗрдВ рд╣реА рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди:
def discount_cumsum(x, coef):
рдПрдХ рдЫреЛрдЯреЗ рдмреИрдЪ рдЖрдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреБрдЫ рд╕реНрдерд╛рдиреАрдп рдСрдкреНрдЯрд┐рдорд╛ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣рд╛рдБ, рдПрдЬреЗрдВрдЯ рдПрдХ рдкрдВрдЬрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрдВрдЬрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдХреА рдХреЛ рдзрдХреНрдХрд╛ рджреЗрддрд╛ рд╣реИ:
рдпрд╣рд╛рдВ, рдПрдЬреЗрдВрдЯ рдЬрдВрдк рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдЖрдпрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдмрд╕ рдЕрдВрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд▓реНрджреА рд╕реЗ рдКрдБрдЧрд▓реА рдХрд░ рд░рд╣рд╛ рдерд╛ред рдФрд░ рдЖрдк рдпрд╣ рднреА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╡рд╣ рдХреИрд╕рд╛ рдмрд░реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реИ, рдЕрдЧрд░ рд╡рд╣ рд╣рд┐рдЪрдХрд┐рдЪрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд╣ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдореЗрдЧрд╛ рдФрд░ рджреМрдбрд╝рддрд╛ рд░рд╣реЗрдЧрд╛:
рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрдЬреЗрдВрдЯ, рд╡рд╣ рд▓реЗрдЦ рдХреЗ рдмрд╣реБрдд рд╢реБрд░реБрдЖрдд рдореЗрдВ рд╣реИред рд╕реНрдерд┐рд░ рдХреВрдж, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рд╕рднреА рдЕрдВрдЧ рд╕рддрд╣ рд╕реЗ рдмрд╛рд╣рд░ рдЖрддреЗ рд╣реИрдВред рд╕рдВрддреБрд▓рди рдХреА рд╡рд┐рдХрд╕рд┐рдд рдХреНрд╖рдорддрд╛ рдПрдЬреЗрдВрдЯ рдХреЛ рддреНрд░реБрдЯрд┐ рд╣реЛрдиреЗ рдкрд░ рдкреВрд░реНрдг рдЧрддрд┐ рд╕реЗ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ рдХреЛ рд╕рд╣реА рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреА рд╣реИ:
рдиреБрдХрд╕рд╛рди
рдорд╢реАрди рд▓рд░реНрдирд┐рдВрдЧ рддреНрд░реБрдЯрд┐рдпреЛрдВ рдХреЗ рд╕реНрдерд╛рди рдХреЗ рдЖрдпрд╛рдо рдХреЗ рд▓рд┐рдП рдкреНрд░рд╕рд┐рджреНрдз рд╣реИ рдЬрд┐рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдФрд░ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдЖрд░рдПрд▓ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдПрдХ рдирдП рд╕реНрддрд░ рдкрд░ рд▓реЗ рдЬрд╛рддрд╛ рд╣реИред

рд╕реНрд░реЛрдд
рдпрд╣рд╛рдВ рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдЖрдиреЗ рд╡рд╛рд▓реА рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
- рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣рд╛рдЗрдкрд░рдкрд░рдореЗрдЯрд░реНрд╕ рдХреЗ рд▓рд┐рдП рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд╕рдВрд╡реЗрджрдирд╢реАрд▓ рд╣реИред 3e-4 рд╕реЗ 1e-4 рдореЗрдВ рд╕реАрдЦрдиреЗ рдХреА рджрд░ рдХреЛ рдмрджрд▓рддреЗ рд╕рдордп рд╕реАрдЦрдиреЗ рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдЖрдпрд╛ред рдФрд░ рддрд╕реНрд╡реАрд░ рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓ рдЧрдИ - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЧреИрд░-рдЕрднрд┐рд╕рд░рдг рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реЗ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдЬреЛ рд╡реАрдбрд┐рдпреЛ рдореЗрдВ рд╣реИред
- рдмреИрдЪ рдХрд╛ рдЖрдХрд╛рд░ рдбреАрдПрд▓ рдХреЗ рдЕрдиреНрдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИред рдпрджрд┐ рдЫрд╡рд┐ рд╡рд░реНрдЧреАрдХрд░рдг рдореЗрдВ рдЖрдк рдЕрдкрдиреЗ рдЖрдк рдХреЛ 32-256 рдмреИрдЪ рдХреЗ рдЖрдХрд╛рд░ рдХрд╛ рдЪрдпрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдкрд░рд┐рдгрд╛рдо рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдЗрд╕реЗ рдмрдврд╝рд╛рдиреЗ рд╕реЗ рдирд╣реАрдВ рдмрджрд▓реЗрдЧрд╛, рддреЛ рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╣рдЬрд╛рд░, 3000 рдХрд╛рдо рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред рдФрд░ рдлрд┐рд░ рд╕реЗ рдПрдХ рдЕрдЪреНрдЫрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдореЗрдВ рдЕрднрд┐рд╕рд░рдг рдХреА рдХрдореА рд╕реЗред
- рд╕реАрдЦрдирд╛ рдХрдИ рдмрд╛рд░ рдЪрд▓рд╛рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдХрднреА-рдХрднреА рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдмреАрдЬ рднрд╛рдЧреНрдпрд╢рд╛рд▓реА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред
- рдРрд╕реЗ рдЬрдЯрд┐рд▓ рд╡рд╛рддрд╛рд╡рд░рдг рдореЗрдВ рд╕реАрдЦрдирд╛ рдмрд╣реБрдд рд╕рдордп рд▓реЗрддрд╛ рд╣реИ, рдФрд░ рдкреНрд░рдЧрддрд┐ рдПрдХ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, 8 рдШрдВрдЯреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕реАрдЦрд╛, рдЬрд┐рдирдореЗрдВ рд╕реЗ 3 рдиреЗ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдЖрдзрд╛рд░ рд░реЗрдЦрд╛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЦрд░рд╛рдм рдкрд░рд┐рдгрд╛рдо рджрд┐рдЦрд╛рдпрд╛ред рдЗрд╕рд▓рд┐рдП, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╕рдордп, рдПрдХ рдЫреЛрдЯреЗ рд╕реЗ рд╢реБрд░реВ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬреИрд╕реЗ рдЬрд┐рдо рд╕реЗ рдЦрд┐рд▓реМрдирд╛ рд╡рд╛рддрд╛рд╡рд░рдгред

- рд╣рд╛рдЗрдкрд░рдкрд░рдореЗрдЯрд░реНрд╕ рдФрд░ рдореЙрдбрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ рдЦреЛрдЬрдиреЗ рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рддрд░реАрдХрд╛ рд╕рдВрдмрдВрдзрд┐рдд рд▓реЗрдЦреЛрдВ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдЭрд╛рдВрдХрдирд╛ рд╣реЛрдЧрд╛ред (рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдкреАрдЫреЗ рд╣рдЯрдирд╛ рдирд╣реАрдВ рд╣реИ)
рдЖрдк рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдбреАрдк рдЖрд░рдПрд▓ рдХреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ: рдбреАрдк рд░рд┐рдирдлреЛрд░реНрд╕ рд▓рд░реНрдирд┐рдВрдЧ рдЗрдЬрд╝ рдиреЙрдЯ рд╡рд░реНрдХ ред
рдирд┐рд╖реНрдХрд░реНрд╖
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИред рдлрдВрдХреНрд╢рди рдорд┐рд▓рд╛ pi: R800 to R18 , рд╕рдВрдпрдд рдФрд░ рдЖрддреНрдорд╡рд┐рд╢реНрд╡рд╛рд╕ рд╕реЗ рд░реЛрдмреЛрдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИред
рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд┐рд░рдВрддрд░рддрд╛ A2C, PPO рдФрд░ TRPO рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдХрд░реАрдмреА рд░рд┐рд╢реНрддреЗрджрд╛рд░реЛрдВ рдХрд╛ рдЕрдзреНрдпрдпрди рд╣реЛрдЧрд╛ред рд╡реЗ рдирдореВрдирд╛ рджрдХреНрд╖рддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рдЕрднрд┐рд╕рд░рдг рд╕рдордп, рдФрд░ рд╡реЗ рдЕрдзрд┐рдХ рдЬрдЯрд┐рд▓ рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред рдпрд╣ рдкреАрдкреАрдУ + рдСрдЯреЛрдореИрдЯрд┐рдХ рдбреЛрдореЗрди рд░реЗрдВрдбрдорд╛рдЗрдЬреЗрд╢рди рдерд╛ рдЬрд┐рд╕рдиреЗ рд╣рд╛рд▓ рд╣реА рдореЗрдВ рдПрдХ рд░реЛрдмреЛрдЯ рдкрд░ рд░реВрдмрд┐рдХ рдХреНрдпреВрдм рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд┐рдпрд╛ ред
рдпрд╣рд╛рдВ рдЖрдк рд▓реЗрдЦ рд╕реЗ рдХреЛрдб рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВ: рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЖрдкрдХреЛ рдпрд╣ рд▓реЗрдЦ рдЕрдЪреНрдЫрд╛ рд▓рдЧрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдереЗ рдХрд┐ рдЖрдЬ рдбреАрдк рд░реЗрдирдлреЛрд░реНрд╕ рд▓рд░реНрдирд┐рдВрдЧ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддрд╛ рд╣реИ
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдЙрдкрдпреЛрдЧреА рд▓рд┐рдВрдХ:
рдЗрд╕ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдорджрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд┐рдВрдХреЛрдЯреНрдЯрд░ , рд╡рд╛рдордмрд╛рд▓рд╛ , рдПрдВрдбреНрд░реА_рдкреНрд░реЛрдмреЛрдЪреНрдХрд┐рди , рдкреЙрд▓реАрдлреЙрдо рдФрд░ рд╕реБрд░рд┐рдХрдирд┐рдХ рдХреЛ рдзрдиреНрдпрд╡рд╛рджред
рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, рд╡рдореНрдмрд╛рд▓рд╛ рдФрд░ andrey_probochkin рдХреЗ рд▓рд┐рдП рдПрдХ рд╢рд╛рдВрдд MuJoCo рд╡рд╛рддрд╛рд╡рд░рдг рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдПред