tek4

Học Tăng Cường Ngược – Học Tăng Cường

by - September. 21, 2021
Kiến thức
<p><img class="aligncenter wp-image-6672 size-full" src="../../../wp-content/uploads/2020/12/a-5.jpg" alt="anh-minh-hoa" width="1000" height="766" /></p> <p style="text-align: center;">Ảnh chụp bởi&nbsp;<a href="https://unsplash.com/@possessedphotography">Possessed Photography</a></p> <p>Sẽ l&agrave; một th&aacute;ch thức lớn đối với học tăng cường để xử l&yacute; t&igrave;nh trạng phần thưởng c&oacute; số lượng &iacute;t v&agrave; &iacute;t khi xảy ra. Sẽ rất kh&oacute; để loại bỏ c&aacute;c th&ocirc;ng tin kh&ocirc;ng li&ecirc;n quan v&agrave; c&oacute; thể tin v&agrave;o được những h&agrave;nh động đ&uacute;ng. Trong cuộc sống hiện tại, ch&uacute;ng ta thường sẽ thiết lập c&aacute;c mục ti&ecirc;u ở mức trung gian cho c&aacute;c vấn đề phức tạp v&agrave; đưa ra đ&aacute;nh gi&aacute; tốt hơn. Tuy nhi&ecirc;n, c&aacute;c mục ti&ecirc;u mức trung gian như vậy l&agrave; rất kh&oacute; thiết lập đối với nhiều vấn đề trong học tăng cường.</p> <p>Điều n&agrave;y dẫn đến sự cần thiết cho một h&agrave;m phần thưởng hoạt động một c&aacute;ch trơn tru để c&oacute; thể theo d&otilde;i hiệu quả của c&aacute;c h&agrave;nh động. Ch&uacute;ng ta muốn loại bỏ h&agrave;m phần thưởng m&agrave; c&oacute; gi&aacute; trị Gradient bị đột ngột biến mất hoặc tăng giảm bất thường. H&agrave;m chi ph&iacute; ở b&ecirc;n tr&aacute;i kh&ocirc;ng đưa ra được hướng t&igrave;m kiếm trừ khi n&oacute; nằm ở gần điểm tối ưu. Đối với loại h&agrave;m chi ph&iacute; n&agrave;y, kh&ocirc;ng c&oacute; phương ph&aacute;p tối ưu h&oacute;a n&agrave;o c&oacute; thể l&agrave;m tốt hơn l&agrave; phương ph&aacute;p sử dụng t&igrave;m kiếm ngẫu nhi&ecirc;n. H&agrave;m chi ph&iacute; ở b&ecirc;n phải hoạt động tốt hơn v&agrave; đưa ra được th&ocirc;ng tin tốt hơn về vị tr&iacute; cần t&igrave;m kiếm tiếp theo.</p> <p><img class="aligncenter wp-image-6666 size-full" src="../../../wp-content/uploads/2020/12/a-19.png" alt="chi-phi" width="770" height="156" /></p> <p style="text-align: center;"><a href="https://jonathan-hui.medium.com/rl-inverse-reinforcement-learning-56c739acfb5a">Nguồn</a></p> <h1>Học tăng cường ngược</h1> <p>Học tăng cường ngược l&agrave; phương ph&aacute;p xem x&eacute;t về vấn đề tr&iacute;ch xuất một h&agrave;m phần thưởng từ c&aacute;c thao t&aacute;c biểu diễn tối ưu từ con người h&agrave;nh&nbsp;m&agrave; c&oacute; thể quan s&aacute;t được trong một m&ocirc;i trường nhất định. Nhiều phương ph&aacute;p học tăng cường tập trung v&agrave;o m&ocirc; h&igrave;nh hoặc chiến thuật. M&ocirc; h&igrave;nh h&oacute;a một h&agrave;m phần thưởng tốt hơn l&agrave; điều m&agrave; việc học tăng cường ngược sẽ giải quyết.</p> <p>[latexpage]\[p_{\theta}(s_{1},a_{1},...,s_{T},a_{T})=p(s_{1})\prod_{t=1}^{T}\pi_{\theta}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t}\]</p> <p>[latexpage]\[\theta *=argmax_{\theta}\;\;E_{\tau\sim p_{\theta}(\tau)}\left [ \sum_{t}r(s_{t},a_{t}) \right ]\]</p> <p>Trong c&aacute;c phương ph&aacute;p Policy Gradient, phần thưởng sẽ được quan s&aacute;t để điều chỉnh lại chiến thuật. Tuy nhi&ecirc;n, c&aacute;c phần thưởng quan s&aacute;t được sử dụng thường c&oacute; số lượng rất &iacute;t c&ugrave;ng với độ trễ k&eacute;o d&agrave;i. Trong học tăng cường sử dụng m&ocirc; h&igrave;nh, một sai số nhỏ trong m&ocirc; h&igrave;nh sẽ dẫn ch&uacute;ng ta đến những phần thưởng rất kh&aacute;c nhau.</p> <p>Về mặt &yacute; tưởng, mục ti&ecirc;u của ch&uacute;ng ta l&agrave; t&igrave;m ra c&aacute;c &yacute; định c&oacute; thể đưa ra được c&aacute;c chỉ dẫn tốt hơn trong qu&aacute; tr&igrave;nh học. Tuy nhi&ecirc;n, giống như c&aacute;c b&agrave;i to&aacute;n học s&acirc;u hoặc m&aacute;y học kh&aacute;c, rất kh&oacute; để c&oacute; thể m&ocirc; h&igrave;nh h&oacute;a một c&aacute;ch r&otilde; r&agrave;ng. Ch&uacute;ng ta c&oacute; thể tối ưu h&agrave;m phần thưởng bằng c&aacute;ch sử dụng c&aacute;c dữ liệu chứa c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật. Sau khi một h&agrave;m phần thưởng được tối ưu, ch&uacute;ng ta c&oacute; thể sử dụng Policy Gradient, RL dựa tr&ecirc;n m&ocirc; h&igrave;nh hoặc RL kh&aacute;c để t&igrave;m chiến thuật tối ưu. V&iacute; dụ: ch&uacute;ng ta c&oacute; thể t&iacute;nh to&aacute;n Policy Gradient bằng c&aacute;ch sử dụng h&agrave;m phần thưởng thay v&igrave; c&aacute;c phần thưởng đ&atilde; được lấy mẫu. Với Policy Gradient đ&atilde; được t&iacute;nh to&aacute;n, ch&uacute;ng ta sẽ tối ưu h&oacute;a chiến thuật để đạt được phần thưởng lớn nhất.</p> <p>Trong học tập tăng cường ngược, th&aacute;ch thức đặt ra l&agrave; ch&uacute;ng ta c&oacute; thể m&ocirc; h&igrave;nh h&oacute;a phần thưởng tốt hơn để đưa ra quyết định tốt hơn hay l&agrave; kh&ocirc;ng.</p> <p>T&oacute;m lại, với dữ liệu chứa c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật từ con người, ch&uacute;ng ta sẽ lập m&ocirc; h&igrave;nh cho một h&agrave;m phần thưởng. Sau đ&oacute;, ch&uacute;ng ta tận dụng điều đ&oacute; để đưa ra một chiến thuật tốt hơn.</p> <table style="height: 435px;" width="898"> <tbody> <tr> <td width="312">C&aacute;c hệ số đ&atilde; c&oacute;</td> <td width="312">C&aacute;c hệ số cần t&iacute;nh</td> </tr> <tr> <td width="312">Tập hợp c&aacute;c trạng th&aacute;i [latexpage]$S$</td> <td width="312">Tập hợp c&aacute;c trạng th&aacute;i [latexpage]$S$</td> </tr> <tr> <td width="312">Tập hợp c&aacute;c h&agrave;nh động [latexpage]$A$</td> <td width="312">Tập hợp c&aacute;c h&agrave;nh động [latexpage]$A$</td> </tr> <tr> <td width="312">H&agrave;m biến đổi [latexpage]$P(s'|s,a)$</td> <td width="312">H&agrave;m biến đổi [latexpage]$P(s'|s,a)$</td> </tr> <tr> <td width="312">H&agrave;m phần thưởng [latexpage]$R(s,a,s')$</td> <td width="312">H&agrave;m phần thưởng [latexpage]$R(s,a,s')$</td> </tr> <tr> <td width="312">Trạng th&aacute;i ban đầu [latexpage]$s_{0}$</td> <td width="312">Trạng th&aacute;i ban đầu [latexpage]$s_{0}$</td> </tr> <tr> <td width="312">C&aacute;c qu&aacute; tr&igrave;nh m&ocirc; phỏng của con người&nbsp;[latexpage]$(\pi ^{*})$</td> <td width="312">Chiến thuật [latexpage]$\pi(a|s)$</td> </tr> </tbody> </table> <p>Tuy nhi&ecirc;n, trong nhiều vấn đề học tăng cường, việc t&igrave;m kiếm nh&atilde;n cho việc học c&oacute; gi&aacute;m s&aacute;t l&agrave; kh&ocirc;ng khả thi. V&igrave; vậy, một trong những mục ti&ecirc;u của học tăng cường ngược l&agrave; tối ưu c&aacute;c m&ocirc; h&igrave;nh với một &iacute;t dữ liệu chứa c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật.</p> <p>V&iacute; dụ, trong video <a href="https://www.youtube.com/watch?v=hXxaepw0zAw&amp;feature=emb_title">n&agrave;y</a>, người chuy&ecirc;n gia đang cầm một c&aacute;nh tay robot để đặt c&aacute;c m&oacute;n ăn l&ecirc;n gi&aacute; đựng b&aacute;t đĩa. Sau 20 lần biểu diễn, r&ocirc; bốt PR2 c&oacute; thể tự đặt đĩa v&agrave;o đ&uacute;ng mục ti&ecirc;u. Trong qu&aacute; tr&igrave;nh n&agrave;y, PR2 học h&agrave;m phần thưởng v&agrave; thực hiện tối ưu h&oacute;a Chiến thuật th&ocirc;ng qua h&agrave;m phần thưởng đ&atilde; học.</p> <h1>Học tăng cường ngược sử dụng Maximum Entropy</h1> <p>Vậy l&agrave;m thế n&agrave;o ch&uacute;ng ta c&oacute; thể lập m&ocirc; h&igrave;nh cho một h&agrave;m phần thưởng r? Ch&uacute;ng ta sẽ bắt đầu bằng c&aacute;ch tạo một m&ocirc; h&igrave;nh phần thưởng được tham số h&oacute;a bởi [latexpage]$\psi$.</p> <p>V&igrave; sẽ rất kh&oacute; để c&oacute; thể gắn nh&atilde;n cho phần thưởng, ch&uacute;ng ta sẽ lập m&ocirc; h&igrave;nh cho gi&aacute; trị x&aacute;c suất của đường quỹ đạo. Trong Policy Gradient, ch&uacute;ng ta sẽ x&aacute;c định một h&agrave;m mục ti&ecirc;u trong việc tối đa h&oacute;a x&aacute;c suất của đường quỹ đạo dựa tr&ecirc;n chiến thuật. Trong học tăng cường ngược, ch&uacute;ng ta sẽ tối đa h&oacute;a x&aacute;c suất tương tự dựa tr&ecirc;n phần thưởng. X&aacute;c suất của c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật tỷ lệ thuận với cấp số nh&acirc;n của phần thưởng. Sau đ&oacute;, ch&uacute;ng ta sẽ chuẩn h&oacute;a điểm số n&agrave;y với điểm số của tất cả c&aacute;c khả năng để t&iacute;nh x&aacute;c suất.</p> <p>[latexpage]\[p(\tau)=\frac{exp(R_{\psi }(\tau))}{\int exp(R_{\psi}(\tau))d\tau}\]</p> <p>Trong đ&oacute;:</p> <ul> <li>[latexpage]$exp(R_{\psi }(\tau))$ l&agrave; x&aacute;c suất của một đường quỹ đạo</li> <li>[latexpage]$\int exp(R_{\psi}(\tau))d\tau$ l&agrave; x&aacute;c suất của tất cả c&aacute;c đường quỹ đạo</li> </ul> <p>Phần thưởng c&agrave;ng cao, quỹ đạo c&agrave;ng c&oacute; nhiều khả năng xảy ra. Tương tự như Policy Gradient, ch&uacute;ng ta c&oacute; thể t&iacute;nh to&aacute;n Gradient của n&oacute; (c&ograve;n gọi l&agrave; Gradient phần thưởng) so với c&aacute;c tham số phần thưởng [latexpage]$\psi$ để thực hiện việc học m&ocirc; h&igrave;nh phần thưởng. Nhưng v&igrave; c&oacute; v&ocirc; số quỹ đạo kh&aacute;c, n&ecirc;n kh&oacute; c&oacute; thể t&iacute;nh gi&aacute; trị ch&iacute;nh x&aacute;c cho mẫu số. Thay v&agrave;o đ&oacute;, ch&uacute;ng ta sẽ t&iacute;nh t&iacute;ch ph&acirc;n với gi&aacute; trị kỳ vọng, tức l&agrave; 𝔼 (exp (phần thưởng)).</p> <p>Ngo&agrave;i ra, ch&uacute;ng ta c&oacute; thể c&oacute; định khoảng gi&aacute; trị kỳ vọng giống với tần suất m&agrave; ch&uacute;ng ta đạt được trong một trạng th&aacute;i v&agrave; nh&acirc;n với phần thưởng kỳ vọng của n&oacute;. Để tối ưu m&ocirc; h&igrave;nh phần thưởng, ch&uacute;ng ta sẽ tối đa h&oacute;a khả năng xảy ra c&aacute;c thao t&aacute;c đ&uacute;ng kỹ thuật ở tr&ecirc;n với Gradient phần thưởng tương ứng như sau:</p> <p>[latexpage]\[\triangledown _{\psi}\mathcal{L}=-\frac{1}{|\mathcal{D}|}\sum_{\tau_{d}\in\mathcal{D}}\frac{dr_{\psi}}{d\psi}(\tau_{d})-\sum_{s}p(s|\psi)\frac{dr_{\psi}}{d\psi}(s)\]</p> <p>[latexpage]\[\mathcal{L} = log p(\tau)\]</p> <p>Vậy l&agrave;m thế n&agrave;o ch&uacute;ng ta c&oacute; thể t&igrave;m ra tần suất truy cập [latexpage]$p(s|\psi)$? Một chiến thuật tối ưu:</p> <p>[latexpage]\[\pi_{\theta}(u|s)\]</p> <p>C&oacute; thể được t&iacute;nh to&aacute;n từ h&agrave;m phần thưởng, chẳng hạn như sử dụng Policy Gradient.</p> <p>[latexpage]\[\triangledown _{\theta}J(\theta)\approx\frac{1}{N}\sum_{i=1}^{N}\left ( \sum_{t=1}^{T}\triangledown _{\theta}log\;\pi_{\theta}(a_{i,t}|s_{i,t}) \right )R_{\psi}(\tau)\]</p> <p>Sau khi t&iacute;nh được chiến thuật, ch&uacute;ng ta c&oacute; thể t&iacute;nh tần suất truy cập của một trạng th&aacute;i với điều kiện l&agrave; ch&uacute;ng ta đ&atilde; biết m&ocirc; h&igrave;nh h&oacute;a tổng qu&aacute;t.</p> <p>[latexpage]\[p(s_{1})\prod_{t=1}^{T}\pi_{\theta}(a_{t}|s_{t})p(s_{t+1}|s_{t},a_{t})\]</p> <p>Ch&uacute;ng ta khởi tạo một m&ocirc; h&igrave;nh phần thưởng [latexpage]$\psi$ một c&aacute;ch ngẫu nhi&ecirc;n hoặc với một dự đo&aacute;n c&oacute; logic. Ch&uacute;ng ta nhờ c&aacute;c chuy&ecirc;n gia thực hiện c&aacute;c nhiệm vụ để l&agrave;m c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật D. Dựa tr&ecirc;n m&ocirc; h&igrave;nh phần thưởng giả định, ch&uacute;ng ta sẽ giải quyết đ&acirc;u l&agrave; chiến thuật tối ưu (giả sử bằng c&aacute;ch sử dụng Policy Gradient). Sau đ&oacute;, ch&uacute;ng ta t&iacute;nh to&aacute;n c&aacute;c tần số truy cập v&agrave;o c&aacute;c trạng th&aacute;i. B&acirc;y giờ ch&uacute;ng ta đ&atilde; sẵn s&agrave;ng để c&oacute; thể t&iacute;nh to&aacute;n Gradient phần thưởng v&agrave; sử dụng n&oacute; để điều chỉnh m&ocirc; h&igrave;nh phần thưởng được giả định. Ch&uacute;ng ta sẽ tiếp tục thực hiện qu&aacute; tr&igrave;nh v&ograve;ng lặp v&igrave; cả chiến thuật v&agrave; m&ocirc; h&igrave;nh phần thưởng sẽ tiếp tục cải tiến v&agrave; hội tụ.</p> <p><em>Giải thuật:</em></p> <ul> <li>Khởi tạo [latexpage]$\psi$, nh&oacute;m lại c&aacute;c thao t&aacute;c biểu diễn&nbsp;[latexpage]$\mathcal{D}$</li> <li>T&igrave;m ra chiến thuật tối ưu&nbsp;[latexpage]$\pi(a|s)$, v&agrave; phần thưởng&nbsp;[latexpage]$r_{\psi}$</li> <li>T&igrave;m ra t&acirc;n số truy cập trạng th&aacute;i&nbsp;[latexpage]$p(s|\psi)$</li> <li>T&iacute;nh Gradient&nbsp;[latexpage]$\triangledown _{\psi}\mathcal{L}=-\frac{1}{|\mathcal{D}|}\sum_{\tau_{d}\in\mathcal{D}}\frac{d\tau_{\psi}}{d\psi}(\tau_{d})-\sum_{i}p(s|\psi)\frac{d\tau_{\psi}}{d\psi}(s)$</li> <li>Cập nhật&nbsp;[latexpage]$\psi$ sử dụng một bước t&iacute;nh Gradient với&nbsp;[latexpage]$\triangledown _{\psi}\mathcal{L}$</li> </ul> <h1>Chứng minh cho hệ số Gradient phần thưởng</h1> <p>Ta sẽ chứng minh cho hệ số Gradient phần thưởng. Sau đ&acirc;y l&agrave; k&yacute; hiệu được sử dụng trong phần n&agrave;y.</p> <p>[latexpage]$\tau=\left \{ s_{1},a_{1},..,s_{t},a_{t},...,s_{T} \right \}$ l&agrave; đường quỹ đạo</p> <p>[latexpage]$R_{\psi}(\tau)=\sum_{t}r_{\psi}(s_{t},a_{t})$ l&agrave; hệ số phần thưởng được học</p> <p>[latexpage]$\mathcal{D}:\left \{ \tau_{i} \right \}\sim\pi *$ l&agrave; c&aacute;c thao t&aacute;c biểu diễn</p> <p>X&aacute;c suất của một đường quỹ đạo được định nghĩa như sau:</p> <p>[latexpage]\[p(\tau)=\frac{1}{Z}exp(R_{\psi}(\tau))\]<br />Trong đ&oacute; [latexpage]$Z=\int exp(R_{\psi}(\tau))d\tau$ l&agrave; h&agrave;m ph&acirc;n v&ugrave;ng</p> <p>Trọng t&acirc;m ch&iacute;nh của ch&uacute;ng ta l&agrave; l&agrave;m thế n&agrave;o để t&iacute;nh to&aacute;n h&agrave;m ph&acirc;n v&ugrave;ng. Ch&uacute;ng ta sẽ x&aacute;c định mục ti&ecirc;u l&agrave; việc tối đa h&oacute;a h&agrave;m log cho x&aacute;c suất của quỹ đạo:</p> <p>[latexpage]\[max_{\psi}\;\sum_{\tau\in\mathcal{D}}log\;p_{\tau_{\psi}}(\tau)\]</p> <p>C&ocirc;ng thức sẽ c&oacute; dạng như sau:</p> <p>[latexpage]$max_{\psi}\mathcal{L}(\psi)$</p> <p>[latexpage]$=\sum_{\tau\in\mathcal{D}}log\;p_{\tau_{\psi}}(\tau)$</p> <p>[latexpage]$=\sum_{\tau\in\mathcal{D}}log\;\frac{1}{Z}exp(R_{\psi}(\tau))$</p> <p>[latexpage]$=\sum_{\tau\in\mathcal{D}}R_{\psi}(\tau)-M\;log\;Z$</p> <p>[latexpage]$=\sum_{\tau\in\mathcal{D}}R_{\psi}(\tau)-M\;log\;\sum_{\tau}exp(R_{\psi}(\tau))$</p> <p>Với M l&agrave; số lượng đường quỹ đạo chứa c&aacute;c thao t&aacute;c biểu diễn. Sau khi t&iacute;nh đạo h&agrave;m, Gradient c&oacute; thể được biểu diễn theo tần suất truy cập cho trạng th&aacute;i p:</p> <p>[latexpage]$\triangledown _{\psi}\mathcal{L}(\psi)=\sum_{\tau\in\mathcal{D}}\frac{dR_{\psi}(\tau)}{d\psi}-M\frac{1}{\sum_{\tau}exp(R_{\psi}(\tau))}\sum_{\tau}exp(R_{\psi}\(\tau))\frac{R_{\psi}(\tau)}{d\psi}$</p> <p>[latexpage]$=\sum_{\tau\in\mathcal{D}}\frac{dR_{\psi}(\tau)}{d\psi}-M\sum_{\tau}\frac{exp(R_{\psi}(\tau))}{\sum_{\tau}exp(R_{\psi}(\tau))}\frac{dR_{\psi}(\tau)}{d\psi}$<br />[latexpage]$=\sum_{\tau\in\mathcal{D}}\frac{dR_{\psi}(\tau)}{d\psi}-M\sum_{\tau}p(\tau|\psi)\frac{dR_{\psi}(\tau)}{d\psi}$<br />[latexpage]$=\sum_{\tau\in\mathcal{D}}\frac{dR_{\psi}(\tau)}{d\psi}-M\sum_{s}p(s|\psi)\frac{dr_{\psi}(s)}{d\psi}$</p> <p>Tần suất truy cập c&oacute; thể được t&iacute;nh từ m&ocirc; h&igrave;nh tổng qu&aacute;t v&agrave; chiến thuật:</p> <ul> <li>[latexpage]$\mu_{t}(s)$ l&agrave; x&aacute;c suất truy cập s tại khoảng thời gian t</li> <li>[latexpage]$\mu_{t}(s)=p(s_{1}=s)$</li> <li>Thực hiện v&ograve;ng lặp t=1 tới T</li> <li>[latexpage]$\mu_{t+1}(s)=\sum_{a}\sum_{s}\mu_{t}(S)\pi(a|s)p(s'|s,a)$</li> <li>[latexpage]$p(s|\psi)=\frac{1}{T}\mu_{t}(s)$</li> </ul> <p>Sau khi tần suất truy cập được t&iacute;nh, ch&uacute;ng ta c&oacute; thể sử dụng Gradient Ascent để tối ưu h&oacute;a h&agrave;m mục ti&ecirc;u.</p> <p>Maximum Entropy Inverse RL đưa ra một số giả định chắc chắn. Đầu ti&ecirc;n, m&ocirc; h&igrave;nh tổng qu&aacute;t đ&atilde; được biết v&agrave; ch&uacute;ng ta đ&atilde; giới hạn số lượng c&aacute;c trạng th&aacute;i n&ecirc;n sẽ kh&ocirc;ng qu&aacute; kh&oacute; để t&iacute;nh to&aacute;n tần suất truy cập của trạng th&aacute;i. Tuy nhi&ecirc;n th&igrave; điều n&agrave;y kh&ocirc;ng hẳn đ&uacute;ng với một số b&agrave;i to&aacute;n.</p> <h1>Guided Cost Learning</h1> <p>L&agrave;m thế n&agrave;o ch&uacute;ng ta c&oacute; thể xử l&yacute; c&aacute;c m&ocirc; h&igrave;nh tổng qu&aacute;t chưa được biết? Nếu c&aacute;c m&ocirc; h&igrave;nh kh&ocirc;ng được biết, ch&uacute;ng ta kh&ocirc;ng thể t&iacute;nh to&aacute;n tần số truy cập trạng th&aacute;i p.</p> <p>[latexpage]\[\triangledown _{\psi}\mathcal{L}(\psi)=\sum_{\tau\in\mathcal{D}}\frac{dR_{\psi}(\tau)}{d\psi}-M\sum_{s}p(s|\psi)\frac{dr_{\psi}(s)}{d\psi}\]</p> <p>Phương ph&aacute;p Guided Cost Learning, viết tắt l&agrave; GCL, lập c&ocirc;ng thức t&iacute;nh ước lượng dựa tr&ecirc;n mẫu cho MaxEnt IOC để ước t&iacute;nh h&agrave;m ph&acirc;n v&ugrave;ng Z.</p> <p>[latexpage]\[\mathcal{L}_{IOC}(\theta)=\frac{1}{N}\sum_{\tau_{i}\in\mathcal{D}_{demo}}c_{\theta}(\tau_{i})+log\;Z<br />\approx \frac{1}{N}\sum_{\tau_{i}\in\mathcal{D}_{demo}}c_{\theta}(\tau_{i})+log\;\frac{1}{M}\sum_{\tau_{i}\in\mathcal{D}_{samp}}\frac{exp(-c_{\theta}(\tau_{j}))}{q(\tau_{j})}\]</p> <p>Trong phần n&agrave;y, ch&uacute;ng ta sẽ thay đổi một số k&yacute; hiệu. Ch&uacute;ng ta sẽ sử dụng h&agrave;m chi ph&iacute; thay v&igrave; h&agrave;m phần thưởng v&agrave; chia chi ph&iacute; cho số lượng mẫu. H&agrave;m chi ph&iacute; sẽ được tham số h&oacute;a l&agrave; [latexpage]$\theta$. Hệ số đầu ti&ecirc;n trong h&agrave;m mục ti&ecirc;u được t&iacute;nh to&aacute;n từ c&aacute;c đường quỹ đạo trong phần thao t&aacute;c biểu diễn của chuy&ecirc;n gia. Đối với hệ số thứ hai, ch&uacute;ng ta sẽ &aacute;p dụng Importance Sampling để t&iacute;nh.</p> <p>[latexpage]\[\int exp(-c_{\theta}(\tau))d\tau\]</p> <p>Importance Sampling sẽ lấy mẫu c&aacute;c đường quỹ đạo &tau; v&agrave; quan s&aacute;t đầu ra [latexpage]$f(\tau)$ để t&iacute;nh to&aacute;n c&aacute;c gi&aacute; trị kỳ vọng.</p> <p>[latexpage]\[E_{p}[f(\tau)]\]</p> <p>Giả sử ph&acirc;n phối lấy mẫu để ước t&iacute;nh 𝔼 cho&nbsp;[latexpage]$\tau$ sẽ l&agrave; [latexpage]$q(\tau)$. Vậy q sẽ c&oacute; dạng như thế n&agrave;o để t&iacute;nh 𝔼 tốt hơn?</p> <p><img class="aligncenter wp-image-6667 size-full" src="../../../wp-content/uploads/2020/12/a-20.png" alt="Hoc-tang-cuong-nguoc" width="770" height="283" /></p> <p style="text-align: center;"><a href="https://jonathan-hui.medium.com/rl-inverse-reinforcement-learning-56c739acfb5a">Nguồn</a></p> <p>Ở h&igrave;nh ảnh tr&ecirc;n, q sẽ cải thiện tốt hơn với tỷ lệ:</p> <p>[latexpage]\[q(\tau)\propto exp(-c_{\theta}(\tau))\]</p> <p>Ch&uacute;ng ta c&oacute; thể tập trung v&agrave;o c&aacute;c đường quỹ đạo c&oacute; khả năng xảy ra v&agrave; bỏ qua những đường quỹ đạo kh&ocirc;ng chắc chắn để t&iacute;nh gi&aacute; trị chi ph&iacute; - kỳ vọng.</p> <p>Hệ số thứ hai sẽ c&oacute; dạng:</p> <p>[latexpage]\[\mathcal{L}_{IOC}(\theta)\approx \frac{1}{N}\sum_{\tau_{i}\in\mathcal{D}_{demo}}c_{\theta}(\tau_{i})+log\;\frac{1}{M}\sum_{\tau_{i}\in\mathcal{D}_{samp}} \frac{exp(-c_{\theta}(\tau_{j}))}{q(\tau_{j})}\]</p> <p>T&oacute;m lại, nếu ch&uacute;ng ta lấy mẫu đường quỹ đạo c&oacute; tỷ lệ với phần thưởng, th&igrave; kết quả t&iacute;nh to&aacute;n của ch&uacute;ng ta sẽ c&agrave;ng tốt. Sử dụng c&ocirc;ng thức tr&ecirc;n, h&agrave;m ph&acirc;n v&ugrave;ng sẽ được t&iacute;nh m&agrave; kh&ocirc;ng cần biết m&ocirc; h&igrave;nh tổng qu&aacute;t.</p> <p>B&acirc;y giờ ch&uacute;ng ta đ&atilde; sẵn s&agrave;ng để kết hợp mọi thứ lại với nhau. B&ecirc;n cạnh m&ocirc; h&igrave;nh phần thưởng, ch&uacute;ng ta cũng sẽ tối ưu một m&ocirc; h&igrave;nh chiến thuật.</p> <p>&Yacute; tưởng ch&iacute;nh l&agrave; ch&uacute;ng ta sẽ sử dụng c&aacute;c thao t&aacute;c biểu diễn của chuy&ecirc;n gia để t&iacute;nh to&aacute;n x&aacute;c suất của c&aacute;c thao t&aacute;c biểu diễn của chuy&ecirc;n gia v&agrave; sử dụng c&aacute;c mẫu cho đường quỹ đạo từ chiến thuật (c&ograve;n gọi l&agrave; q) để t&iacute;nh x&aacute;c suất xảy ra của tất cả c&aacute;c khả năng (h&agrave;m ph&acirc;n v&ugrave;ng).</p> <p><img class="aligncenter wp-image-6668 size-full" src="../../../wp-content/uploads/2020/12/a-40.jpeg" alt="Hoc-tang-cuong-nguoc" width="770" height="476" /></p> <p style="text-align: center;"><a href="https://drive.google.com/file/d/0BxXI_RttTZAhNjN4SnNYYldqTjQ/view">Nguồn</a></p> <ol> <li>Ch&uacute;ng ta sẽ thu thập một tập hợp c&aacute;c thao t&aacute;c biểu diễn đ&uacute;ng kỹ thuật của con người.</li> <li>Ch&uacute;ng ta khởi tạo một bộ điều khiển&nbsp;[latexpage]$\pi(a|s)$ (a.k. một chiến thuật).</li> <li>Ch&uacute;ng ta thực hiện bộ điều khiển n&agrave;y tr&ecirc;n robot v&agrave; quan s&aacute;t c&aacute;c đường quỹ đạo đ&atilde; được lấy mẫu.</li> </ol> <p>[latexpage]\[\tau={s_{1},a_{1},...,s_{t},a_{t},...,s_{T}}\]</p> <ol start="4"> <li>Sử dụng c&aacute;c mẫu n&agrave;y v&agrave; c&aacute;c thao t&aacute;c biểu diễn của con người, ch&uacute;ng ta sẽ t&iacute;nh to&aacute;n Gradient phần thưởng để cập nhật m&ocirc; h&igrave;nh phần thưởng.</li> </ol> <p>[latexpage]\[\mathcal{L}_{IOC}(\theta)\approx \frac{1}{N}\sum_{\tau_{i}\in\mathcal{D}_{demo}}c_{\theta}(\tau_{i})+log\;\frac{1}{M}\sum_{\tau_{j}\in\mathcal{D}_{samp}}\frac{exp(-c_{\theta}(\tau_{j}))}{q(\tau_{j})}\]</p> <ol start="5"> <li>Tương tự, bằng c&aacute;ch sử dụng phương ph&aacute;p Policy Gradient, ch&uacute;ng ta tinh chỉnh m&ocirc; h&igrave;nh chiến thuật bằng c&aacute;ch sử dụng h&agrave;m phần thưởng đ&atilde; được cập nhật.</li> <li>Khi chiến thuật được cập nhật, chiến thuật sẽ tốt hơn trong việc lấy mẫu đường quỹ đạo c&ugrave;ng với gi&aacute; trị phần thưởng cao hơn.</li> <li>Một chiến thuật tốt hơn đưa ra kết quả ph&eacute;p t&iacute;nh tốt hơn cho bước (4) v&agrave; do đ&oacute; h&agrave;m phần thưởng cũng sẽ tốt hơn.</li> </ol> <p>Khi ch&uacute;ng ta thực hiện lặp đi lặp lại, ch&uacute;ng ta sẽ cải thiện h&agrave;m phần thưởng v&agrave; chiến thuật trong một bước thay thế. Chiến thuật được cải thiện sẽ tạo ra được đường quỹ đạo với phần thưởng cao hơn v&agrave; do đ&oacute; Gradient phần thưởng của ch&uacute;ng ta sẽ ch&iacute;nh x&aacute;c hơn để điều chỉnh m&ocirc; h&igrave;nh phần thưởng.</p> <p>Ngược lại với học tăng cường ngược sử dụng gi&aacute; trị Maximum Entropy, ch&uacute;ng ta kh&ocirc;ng cần tối ưu h&oacute;a ho&agrave;n to&agrave;n chiến thuật trong bước (5). Ch&uacute;ng ta c&oacute; thể thực hiện một bước t&iacute;nh Policy Gradient.</p> <p><img class="aligncenter wp-image-6669 size-full" src="../../../wp-content/uploads/2020/12/a-21.png" alt="Hoc-tang-cuong-nguoc" width="770" height="311" /></p> <p style="text-align: center;"><a href="https://arxiv.org/pdf/1603.00448.pdf">Nguồn</a></p> <p>Sau đ&acirc;y l&agrave; giải thuật:</p> <p><em>Giải thuật 1:</em></p> <ul> <li>Khởi tạo&nbsp;[latexpage]$q_{k}(\tau)$ để l&agrave;m một bộ điều khiển ngẫu nhi&ecirc;n hoặc lấy từ c&aacute;c thao t&aacute;c biểu diễn của con người</li> <li>V&ograve;ng lặp i=1 tới I thực hiện c&aacute;c bước sau <ul> <li>Sinh ra c&aacute;c mẫu&nbsp;[latexpage]$\mathcal{D}_{traj} từ&nbsp;q_{k}(\tau)$</li> <li>Th&ecirc;m c&aacute;c mẫu:&nbsp;[latexpage]$\mathcal{D}_{samp}\leftarrow \mathcal{D}_{samp}\cup \mathcal{D}_{traj}$</li> <li>Sử dụng&nbsp;[latexpage]$\mathcal{D}_{samp}$ để cập nhật gi&aacute; trị mất m&aacute;t [latexpage]$c_{\theta}$ sử dụng giải thuật thứ 2</li> <li>Cập nhật&nbsp;[latexpage]$q_{k}(\tau)$ sử dụng&nbsp;[latexpage]$\mathcal{D}_{traj}$ v&agrave; phương ph&aacute;p từ b&agrave;i b&aacute;o Levine, S. and Abbeel, P. Learning neural network policies with guided policy search under unknown dynamics. In Advances in Neural Information Processing Systems (NIPS), 2014, 2014 để t&iacute;nh được&nbsp;[latexpage]$q_{k+1}(\tau)$</li> </ul> </li> <li>Kết th&uacute;c v&ograve;ng lặp</li> <li>Trả về c&aacute;c tham số mất m&aacute;t đ&atilde; được tối ưu&nbsp;\theta v&agrave; ph&acirc;n phối cho đường quỹ đạo&nbsp;[latexpage]$q(\tau)$</li> </ul> <p><em>Giải thuật 2:</em></p> <ul> <li>V&ograve;ng lặp từ k=1 tới K thực hiện c&aacute;c bước sau <ul> <li>Tập hợp c&aacute;c thao t&aacute;c biểu diễn lấy mẫu&nbsp;[latexpage]$\widehat{\mathcal{D}}_{demo}\subset \mathcal{D}_{demo}$</li> <li>Tập hợp c&aacute;c mẫu cơ bản&nbsp;[latexpage]$\widehat{\mathcal{D}}_{samp}\subset \mathcal{D}_{samp}$</li> <li>Th&ecirc;m tập hợp c&aacute;c thao t&aacute;c biểu diễn v&agrave;o tập hợp cơ bản&nbsp;[latexpage]$\widehat{\mathcal{D}}_{samp}\leftarrow \widehat{\mathcal{D}}_{demo}\cup \widehat{\mathcal{D}}_{samp}$</li> <li>T&iacute;nh&nbsp;[latexpage]$\frac{d\mathcal{L}_{IOC}}{d\theta}(\theta)$ sử dụng&nbsp;[latexpage]$\widehat{\mathcal{D}}_{demo}$ v&agrave;&nbsp;[latexpage]$\widehat{\mathcal{D}}_{samp}$</li> <li>Cập nhật c&aacute;c tham số&nbsp;[latexpage]$\theta$ sử dụng Gradient&nbsp;[latexpage]$\frac{d\mathcal{L}_{IOC}}{d\theta}(\theta)$</li> </ul> </li> <li>Kết th&uacute;c v&ograve;ng lặp</li> <li>Trả về gi&aacute; trị c&aacute;c tham số đ&atilde; được tối ưu [latexpage]$\theta$</li> </ul> <h1>GAN</h1> <p>GAN (Generative Adversarial Networks) sử dụng tr&igrave;nh khởi tạo để tạo dữ liệu ban đầu. Tr&igrave;nh ph&acirc;n biệt được đ&agrave;o tạo để ph&acirc;n biệt giữa dữ liệu thực v&agrave; dữ liệu được tạo. Ch&uacute;ng ta cũng truyền ngược lại th&ocirc;ng tin cho tr&igrave;nh khởi tạo để cho n&oacute; biết những g&igrave; cần được cải thiện. Ch&uacute;ng ta đưa tr&igrave;nh khởi tạo v&agrave; tr&igrave;nh ph&acirc;n biệt v&agrave;o một qu&aacute; tr&igrave;nh cạnh tranh để tr&igrave;nh ph&acirc;n biệt c&oacute; thể ph&acirc;n biệt sự kh&aacute;c biệt nhỏ nhất trong khi tr&igrave;nh khởi tạo c&oacute; thể tạo ra dữ liệu kh&ocirc;ng thể ph&aacute;t hiện được.</p> <p><img class="aligncenter wp-image-6670 size-full" src="../../../wp-content/uploads/2020/12/a-41.jpeg" alt="Hoc-tang-cuong-nguoc" width="770" height="217" /></p> <p style="text-align: center;"><a href="https://jonathan-hui.medium.com/rl-inverse-reinforcement-learning-56c739acfb5a">Nguồn</a></p> <p>Phương ph&aacute;p Guided cost search gần giống với GAN. Tr&ecirc;n thực tế, c&oacute; thể chỉ ra rằng h&agrave;m mục ti&ecirc;u của n&oacute; trong việc đ&agrave;o tạo m&ocirc; h&igrave;nh l&agrave; giống hoặc tương tự với GAN. T&oacute;m lại, chiến thuật &pi; cố gắng tạo ra c&aacute;c h&agrave;nh động tương tự như c&aacute;c h&agrave;nh động thao t&aacute;c biểu diễn của chuy&ecirc;n gia trong khi m&ocirc; h&igrave;nh phần thưởng cố gắng ph&acirc;n biệt giữa c&aacute;c h&agrave;nh động của con người v&agrave; h&agrave;nh động của m&aacute;y t&iacute;nh.</p> <p>Đến đ&acirc;y l&agrave; kết th&uacute;c của b&agrave;i n&agrave;y, hy vọng rằng mọi người đ&atilde; nắm được cơ bản về học tăng cường ngược. Mọi người h&atilde;y lu&ocirc;n theo d&otilde;i tr&ecirc;n <a href="http://tek4.vn">tek4</a> để c&oacute; thể đọc th&ecirc;m những b&agrave;i kh&aacute;c mới nhất.</p> <p>P/s: Cảm ơn mọi người!.</p> <hr /> <p style="text-align: center;"><em><strong>Fanpage Facebook:</strong>&nbsp;<a href="https://www.facebook.com/tek4.vn/">TEK4.VN</a></em>&nbsp;</p> <p style="text-align: center;"><em><strong>Tham gia cộng đồng để chia sẻ, trao đổi v&agrave; thảo luận:</strong>&nbsp;<a href="https://www.facebook.com/groups/tek4.vn/">TEK4.VN - Học Lập Tr&igrave;nh Miễn Ph&iacute;</a></em></p>