5. Học tăng cường
(Reinforcement Learning)
Thăm dò và khai thác. Qui trình ra quyết định
Markov. Học theo mô hình Q, học theo qui tắc, và học sâu tăng cường.
“Tôi chỉ ăn một
ít sôcôla để hoàn thành phần cuối này.”
Trong học có
giám sát, dữ liệu đào tạo đi theo một từ khóa trả lời từ đối tượng giống như “người
giám sát”. Giá mà cuộc sống chỉ làm việc theo cách đó!
Trong học tăng
cường (reinforcement learning – RL), không có từ khóa trả lời, nhưng agent học
tăng cường của bạn vẫn phải quyết định cách vận hành tác vụ của nó. Khi vắng mặt
dữ liệu đào tạo, agent sẽ học từ kinh nghiệm. Nó tập hợp các ví dụ đào tạo (“hành
vi này tốt, hành vi kia xấu”) thông qua thử và sai khi cố gắng hoàn thành nhiệm
vụ, với mục tiêu tối đa hóa lợi ích trong dài hạn.
Trong phần cuối
này, chúng ta sẽ khám phá:
-
Đánh đổi thăm dò/khai thác
-
Qui trình ra quyết định Markov (Markov Decision
Processes – MDP), cách xây dựng cổ điển các tác vụ RL
-
Học theo mô hình Q, theo qui tắc và học sâu tăng
cường
-
Cuối cùng, bài toán học giá trị
Cuối cùng, luôn
luôn vậy, chúng tôi sẽ tập hợp vài tài nguyên thú vị để khám phá sâu hơn.
Hãy đặt con chuột robot vào trong mê cung
Tình huống đơn
giản nhất để nghĩ về học tăng cường là trong các trò chơi có mục tiêu rõ ràng
và một hệ thống tính điểm.
Có thể nói chúng
ta đang chơi một trò chơi trong đó con chuột của chúng ta đang tìm kiếm phần
thưởng tối đa là miếng pho-mat ở cuối mê cung (+1000 điểm), hoặc phần thưởng nhỏ
hơn là các giọt nước trên đường (+10 điểm). Đồng thời, con chuột robot muốn
tránh các vị trí có điện giật (-100 điểm).
Phần thưởng là miếng pho-mat.
Sau một lúc thăm
dò, con chuột có lẽ sẽ tìm thấy thiên đường mini với 3 giọt nước gần lối vào, rồi
dùng toàn bộ thời gian để khai thác phát hiện này bằng cách tiếp tục tận thu những
phần thưởng nhỏ là các giọt nước mà không bao giờ có thể tiến sâu hơn vào mê
cung để theo đuổi phần thưởng lớn hơn.
Như bạn có thể
thấy, con chuột có thể lỡ mất cơ hội tốt hơn để tiến sâu vào mê cung, với phần
thưởng tuyệt đối là miếng pho-mat ở cuối đường.
Điều này gọi là
sự đánh đổi thăm dò/thăm dò. Một chiến lược đơn giản là “thăm dò” - con chuột
đã sử dụng trong hầu hết thời gian (80% thời gian), nhưng thường là thăm dò một
hướng đi mới, ngẫu nhiên, dù có thể càng lúc càng xa phần thưởng lớn.
Chiến lược này
còn được gọi là “epsilon tham lam”, trong đó epsilon là phần trăm thời gian
agent sử dụng cho một hành động ngẫu nhiên chứ không phải là hành động để tối
đa hóa lợi ích đã biết (trong trường hợp này, là 20%). Chúng ta thường bắt đầu
với nhiều thăm dò (ví dụ, giá trị cao hơn cho epsilon). Theo thời gian, khi con
chuột học được ngày càng nhiều về mê cung và hành động nào được phần thưởng dài
hạn nhất, nó sẽ muốn giảm dần epsilon xuống 10% hoặc thậm chí thấp hơn khi nó
đi vào khai thác những gì nó biết.
Quan trọng phải
ghi nhớ rằng, phần thưởng không phải lúc nào cũng có tức thì: trong ví dụ con
chuột robot, có một diện tích rộng của mê cung bạn phải thăm dò và vài điểm cần
ra quyết định trước khi bạn tìm được miếng pho-mat.
Agent quan sát môi trường, hành động để
tương tác với môi trường, và nhận được kết quả tích cực hay tiêu cực. Sơ đồ
trích trong tài liệu CS 294: Deep Reinforcement Learning từ Berkeley, của John
Schulman & Pieter Abbeel
Qui trình ra quyết định Markov (MDP)
Suy nghĩ của con
chuột trong mê cung có thể mô hình hóa theo Qui trình ra quyết định Markov, là
một qui trình xác định xác suất khi chuyển từ trạng thái này sang trạng thái
kia. Chúng ta sẽ giải thích bằng ví dụ về con chuột robot. MDP gồm:
1.
Một tập trạng thái xác định. Đó là những vị trí con chuột có thể ở trong
mê cung.
2.
Một tập hành động sẵn có cho mỗi trạng thái. Đó là tập {tiến, lùi} trên hành lang và
{tiến, lùi, trái, phải} tại giao lộ.
3.
Chuyển trạng thái. Ví dụ, nếu bạn rẽ trái tại giao lộ, bạn sẽ
kết thúc ở vị trí mới. Đó có thể là tập các xác suất gắn với nhiều hơn một trạng
thái có thể xảy ra (ví dụ, khi bạn dùng một cú đấm trong trò Pokémon, bạn cũng
có thể gây ra vài thiệt hại khác, hoặc có thể đủ để hạ knock out đối thủ).
4.
Phần thưởng đi kèm mỗi khi chuyển trạng thái. Trong ví dụ con chuột robot, hầu hết phần
thưởng là 0, nhưng chúng sẽ là dương nếu bạn tới điểm có nước hay có phomat, và
âm nếu bạn tới điểm bị điện giật.
5.
Hệ số chiết khấu y giữa 0 và 1. Con số này lượng hóa sự khác biệt về tầm
quan trọng giữa phần thưởng tức thời và phần thưởng lâu dài trong tương lai. Ví
dụ, y là 0,9 và có một phần thưởng 5 điểm sau 3 bước, giá trị hiện tại của phần
thưởng là 0,93*5.
6. Không
có trí nhớ. Một khi trạng thái hiện
tại được ghi nhận, lịch sử di chuyển của con chuột trong mê cung có thể bị xóa
đi vì trạng thái Markov hiện tại đã chứa đựng mọi thông tin hữu ích trong lịch
sử. Nói cách khác, “tương lai độc lập với quá khứ, trong khi hiện tại được cho
đã biết.”
Giờ chúng ta đã
biết MDP là gì, chúng ta có thể công thức hóa mục đích của con chuột. Chúng ta
đang cố gắn tối đa hóa tổng số phần thưởng trong dài hạn:
Hãy nhìn từng
thành phần của biểu thức trên. Đầu tiên, chúng ta đang tính tổng toàn bộ thời
gian của các bước t. Hãy đặt y bằng 1 từ bây giờ và quên nó đi. Hàm r(x,a) là
hàm phần thưởng. Với trạng thái x và hành động a (ví dụ rẽ trái tại giao lộ),
nó cho bạn phần thưởng đi kèm. Trở lại biểu thức, chúng ta đang cố gắng tối đa
hóa tổng các phần thưởng trong tương lai bằng cách hành động hợp lý nhất (tốt
nhất) trong mỗi trạng thái.
Nào, chúng ta vừa
xây dựng bài toán học tăng cường và công thức hóa mục tiêu, giờ hãy khám phá
các giải pháp có thể xảy ra.
Q-learning: học hàm hành động – giá trị
Q-learning là kỹ
thuật đánh giá hành động nào nên làm theo dựa trên một hàm hành động – giá trị.
Hàm này xác định giá trị khi ở trong một trạng thái nhất định và làm theo một
hành động nhất định trong trạng thái đó.
Chúng ta có hàm
Q lấy đầu vào là một trạng thái và một hành động, rồi trả về phần thưởng kỳ vọng
cho hành động đó (và toàn bộ các hành động kế sau đó) tại trạng thái này. Trước
khi thăm dò môi trường, Q sẽ cho cùng một giá trị cố định (tùy ý). Nhưng sau
đó, khi thăm dò được môi trường càng nhiều, Q sẽ cho chúng ta một xấp xỉ càng
lúc càng tốt hơn về giá trị của hành động a tại trạng thái s. Chúng ta cập nhất
hàm Q khi chúng ta di chuyển.
Biểu thức trên
Wikipedia giải thích điều này rất rõ ràng. Nó cho thấy cách chúng ta cập nhật
giá trị của Q dựa trên phần thưởng nhận được từ môi trường:
Hãy bỏ qua hệ số
chiết khấu bằng cách lại đặt nó bằng 1. Đầu tiên, nhớ rằng đang giả thiết Q thể
hiện tổng số phần thưởng khi lựa chọn hành động Q và các hành động này là tối
ưu.
Giờ hãy tìm hiểu
biểu thức từ trái sang phải. Khi chúng ta sử dụng hành động at ở trạng thái st,
chúng ta cập nhật giá trị của Q(st,at) bằng cách thêm một biểu thức vào đó. Biểu
thức này gồm:
-
Tỷ lệ học
alpha: thể hiện bạn muốn tích cực thế nào khi cập nhật giá trị. Khi alpha gần tới
0, chúng ta sẽ không cập nhật tích cực. Khi alpha gần tới 1, chúng ta đơn giản
chỉ thay giá trị cũ bằng giá trị mới cập nhật.
-
Phần thường:
chính là phần thưởng chúng ta thu được khi hành động at tại trạng thái st. Vì
thế chúng ta cộng cả phần thưởng này vào ước lượng cũ của mình.
-
Chúng ta
cũng cộng thêm phần thưởng dự đoán trong tương lai, nó là phần thưởng tối đa có
thể đạt được Q trước mọi hành động có thể làm tại xt+1.
-
Cuối cùng,
chúng ta trừ đi giá trị của của Q để đảm bảo chênh lệch trong dự đoán chỉ có
tăng hoặc giảm (tất nhiên chênh lệch này được nhân với alpha).
Giờ chúng ta đã
có một ước lượng giá trị cho mỗi cặp trạng thái – hành động, chúng ta có thể chọn
hành động nào để làm dựa theo chiến lược lựa chọn hành động của chúng ta (không
cần chỉ chọn hành động có phần thưởng kỳ vọng lớn nhất mỗi lần, ví dụ với chiến
lược thăm dò kiểu epsilon tham lam, chúng ta nên hành động ngẫu nhiên trong vài
phần trăm thời gian).
Trong ví dụ con
chuột robot, chúng ta có thể sử dụng Q-learning để tìm ra giá trị của mỗi vị
trí trong mê cung và giá trị của các hành động (tiến, lùi, trái, phải) tại mỗi
vị trí. Sau đó chúng ta có thể dùng chiến lược lựa chọn hành động để chọn việc
gì con chuột thực sự phải làm tại mỗi bước thời gian.
Học theo qui tắc (policy learning): ánh xạ từ trạng thái tới hành động
Trong cách
Q-learning, chúng ta học hàm giá trị ước lượng giá trị của mỗi cặp trạng thái –
hành động.
Policy learning
là một lựa chọn rõ ràng minh bạch hơn, trong đó chúng ta học một hàm policy
(qui tắc) π, là một ánh xạ trực tiếp từ mỗi trạng thái tới hành động phù hợp nhất
(tốt nhất) tại trạng thái đó. Hãy coi đó là một qui tắc cư xử: “khi tôi quan
sát trạng thái s, việc tốt nhất cần làm là sử dụng hành động a”. Ví dụ, một qui
tắc của phương tiện tự lái có thể rất hiệu quả, đó là: “nếu tôi thấy đèn vàng
và tôi đang cách giao lộ hơn 100 feet, tôi nên phanh lại. Ngược lại, cứ tiếp tục
đi thẳng.”
Một qui tắc là một ánh xạ từ trạng thái tới
hành động.
Chúng ta đang học
một hàm sẽ tối đa hóa phần thưởng kỳ vọng. Chúng ta có biết cái gì thực sự giỏi
trong việc học các hàm phức tạp không? Chính là các mạng neuron mức sâu!
Tài liệu Pong
from Pixels của Andrej Karpathy cung cấp một hiểu biết tuyệt vời để sử dụng học
sâu tăng cường vào việc học một qui tắc trong trò chơi Pong của Atari: lấy các
pixel thô từ trò chơi làm đầu vào (trạng thái) và cho ra xác suất di chuyển mái
chèo lên hoặc xuống (hành động).
Trong mạng tính đạo hàm qui tắc, agent sẽ học
qui tắc tối ưu bằng cách điều chỉnh trọng số bằng đạo hàm giảm (gradient
descent) dựa trên tín hiệu phần thưởng từ môi trường. Ảnh lấy từ http://karpathy.github.io/2016/05/31/rl/
Nếu bạn muốn
nhúng tay bẩn vào học tăng cường sâu, hãy đọc bài viết của Andrej. Bạn sẽ dựng
một mạng policy 2 lớp trong 130 dòng code, rồi sẽ học cách xài Gym của OpenAI –
cho phép bạn nhanh chóng chạy được thuật toán học tăng cường đầu tiên, kiểm tra
nó trên vô số game, và xem hiệu suất của nó thế nào khi so sánh với phần người
khác làm.
DQN, A3C, và những tiến bộ trong học tăng cường sâu (deep RL)
Vào năm 2015,
DeepMind dùng một phương pháp gọi là mạng Q sâu (deep Q-network hay DQN), cách
này xấp xỉ các hàm Q nhờ dùng mạng neuron mức độ sâu, để đánh bại các tiêu chuẩn
của con người trong nhiều trò game của Atari:
Chúng tôi minh họa một agent của mạng Q sâu,
chỉ nhận các pixel và điểm game làm đầu vào, có khả năng vượt qua hiệu năng của
toàn bộ các thuật toán trước đó và đạt được cấp độ tương đương với một game thủ
chuyên nghiệp (là con người) trong tập 49 trò game, sử dụng cùng giải thuật,
cùng kiến trúc mạng và cùng các siêu tham số. Nó hoạt động như cầu nối giữa những
đầu vào và hành động sensor có số chiều cao, cho ra kết quả là một agent nhân tạo
đầu tiên có khả năng học xuất sắc một dải rộng các tác vụ khó khăn. (Silver
et al., 2015)
Đây là cái nhìn
nhanh chóng về vị trí của DQN agent khi so sánh với máy học tuyến tính và con
người trong nhiều lĩnh vực:
Các con số này được chuẩn hóa theo những người
kiểm thử là các game thủ chuyên nghiệp: 0% - chơi ngẫu nhiên, 100% - hiệu năng
của con người. Nguồn: tài liệu về DQN của DeepMind Human – level control
through deep reinforcement learning.
Để giúp bạn xây
dựng vài trực giác về cách các tiến bộ trong nghiên cứu RL làm được, đây là vài
ví dụ về những cải tiên của bộ xấp xỉ dùng hàm Q phi tuyến giúp nâng cao hiệu
năng và độ ổn định:
-
Lặp lại trải
nghiệm: học bằng cách ngẫu nhiên hóa theo một chuỗi dài hơn các quan sát trước
đó và phần thường đi kèm để tránh overfiting với các trải nghiệm hiện tại. Ý tưởng
này lấy cảm hứng từ bộ não sinh học: ví dụ chuột chạy trong mê cung, sẽ “lặp lại”
các mẫu trong hoạt động của tế bào thần kinh khi ngủ để tối ưu hóa hành vi
tương lai trong mê cung.
-
Mạng
neuron tái phát (RNN): tăng cường DQN. Khi một agent chỉ có thể nhìn thấy môi
trường tức thời ngay xung quanh nó (ví dụ con chuột robot chỉ thấy một đoạn mê
cung nhất định – so với con chim có thể nhìn được toàn bộ mê cung), agent cần
nhớ bức tranh lớn hơn, vì thế nó mới biết các thứ đang ở đâu. Tương tự với cách
trẻ con phát triển tình trạng bất biến của đồ vật để biết mọi thứ đang tồn tại,
ngay cả khi chúng đã rời khỏi tầm nhìn của đứa trẻ. RNN là “tái phát”, ví dụ
chúng cho phép thông tin duy trì lâu hơn. Có một đoạn video ấn tượng về một mạng
Q tái phát sâu (DQRN) chơi trò Doom. Xem trong Simple Reinforcement Learning
with Tensorflow của Arthur Juliani.
Năm 2016, chỉ một
năm sau DQN, DeepMind lại thông báo về một thuật toán khác, gọi là Asynchronous
Advantage Actor – Critic (A3C), có thể vượt qua hiệu năng tuyệt vời của các trò
game Atari trong khi chỉ mất thời gian đào tạo bằng một nửa (Mnih et al, 2016).
A3C là một giải thuật actor – critic kết hợp tốt nhất cả hai cách chúng ta vừa
tìm hiểu trước đó: nó sử dụng một actor (một mạng qui tắc để quyết định hành động
thế nào) và một critic (một mạng Q để quyết định các thứ đáng giá thế nào).
Arthur Juliani có một bài viết tuyệt vời về các A3C vận hành. A3C bây giờ là
Universe Starter Agent của OpenAI.
Từ đó, đã có vô
số đột phá lý thú – từ việc các cỗ máy AI phát minh ra ngôn ngữ của riêng chúng
cho tới việc chúng tự học cách đi vào vô vàn lãnh địa khác. Đấy mới chỉ là dạo
trên bề mặt RL, hi vọng đây là điểm bắt đầu cho các khám phá lớn hơn!
Chúng tôi muốn
chia sẻ đoạn video khó tin về các agent của DeepMind đã học cách đi bộ… có thêm
âm thanh. Hãy cầm bắp rang bơ, bật loa lên, và chứng kiến giây phút vinh quang
của trí tuệ nhân tạo:
Tài
liệu để thực hành và tìm hiểu sâu hơn
Code:
-
Pong from
Pixels của Andrej Karpathy sẽ giúp bạn nhanh chóng chạy được agent tăng cường đầu
tiên. Như mô tả “chúng ta sẽ học cách chơi game ATARI (Pong!) bằng PG, từ đầu,
với các pixel, và một mạng neuron mức sâu, và toàn bộ chỉ 130 dòng code Python
có sử dụng một số hàm phụ thuộc. (Gist link)
-
Tiếp theo,
chúng tôi đặc biệt khuyên đọc tài liệu Simple Reinforcement Learning with Tensorflow
của Arthur Juliani. Nó bàn từ DQN, mô hình học theo qui tắc, học theo actor –
critic tới các chiến lược thăm dò dùng TensorFlow. Hãy cố gắng hiểu và áp dụng
các phương pháp trong đó.
Bài giảng, bài viết
-
Reinforcement
Learning: An Introduction của Richard Sutton, một cuốn sách rất đáng đọc.
-
CS 294:
Deep Reinforcement Learning của John Schulman (Berkeley)
-
Reinforcement
Learning của David Silver (UCL)
XONG!
Vishal Maini
Samer Sabri