Reinforcement learning

Robot học chính sách từ phần thưởng

Chương 9 · Bài 9.1

2

Bài toán robot chuyển sách

Robot tới bàn trả sách qua một lưới có ô chắn.

Mỗi lần thử một hành động, rồi thấy vị trí mới và phần thưởng.

Thưởng chỉ có ở đích: một bước còn xa đích có ích không?

Biết bản đồ: BFS là đủ.

Chưa biết kết quả hành động: học từ trải nghiệm.

3

Mục tiêu

  • Mô tả một bài toán bằng trạng thái, hành động, phần thưởng.
  • Tính return và một bước Bellman.
  • Cài Q-learning.
  • Hiểu policy gradient.
01

Tương tác và mục tiêu

Tương tác và mục tiêu5

Vòng tương tác của một MDP

Agent chọn hành động; environment trả phần thưởng và trạng thái mới.agentπ(a | s), Q(s, a)environmentstep(s, a)hành động A_tthưởng R_{t+1}, trạng thái S_{t+1}
Agent chọn hành động; environment trả phần thưởng và trạng thái mới.
Tương tác và mục tiêu6

Trạng thái phải đủ cho bước tiếp theo

StS_t: trạng thái trước hành động.

AtA_t: hành động.

Rt+1R_{t+1}, St+1S_{t+1}: kết quả sau hành động.

Tính Markov: biết St,AtS_t, A_t là đủ để dự đoán bước kế, không cần lịch sử.

Pin ảnh hưởng di chuyển: thêm mức pin vào trạng thái.

Tương tác và mục tiêu7

Hỏi nhanh

Robot chỉ ghi lại vị trí ô. Khi pin yếu, lệnh “tiến” có lúc không làm robot di chuyển. Nên sửa mô tả trạng thái thế nào?

Tương tác và mục tiêu8

Gridworld dùng để kiểm bằng tay

Giá trị tối ưu V* của từng ô và một hành động tối ưu; từ S cần 5 bước.6.208.0010.00G0.004.588.0010.00S3.124.586.208.00mỗi bước −1vào G +10, kết thúcγ = 0.9V*(S) = 3.122
Giá trị tối ưu V* của từng ô và một hành động tối ưu; từ S cần 5 bước.
Tương tác và mục tiêu9

Hỏi nhanh

Đổi luật chơi: robot có hướng nhìn là N, E, S hoặc W, và chỉ còn ba hành động là quay trái, quay phải, và tiến một ô theo hướng đang nhìn. Trên lưới của bài, MDP mới có bao nhiêu trạng thái và bao nhiêu hành động?

Phỏng theoCMU 10-601 · Exam 3 Practice · Q3.1

Tương tác và mục tiêu10

Return tính cả phần thưởng tương lai

Gt=Rt+1+γRt+2+⋯+γT−t−1RT.G_t=R_{t+1}+\gamma R_{t+2}+\cdots+\gamma^{T-t-1}R_T.

Đường 5 bước: (−1,−1,−1,−1,10)(-1,-1,-1,-1,10).

G0=−1−0.9−0.92−0.93+10⋅0.94=3.122.G_0=-1-0.9-0.9^2-0.9^3+10\cdot0.9^4=3.122.

Tổng không chiết khấu là 6 điểm. γ\gamma không phải learning rate.

Tương tác và mục tiêu11

Chiết khấu từng phần thưởng

Thưởng càng xa càng bị chiết khấu: tổng thưởng 6 nhưng return chỉ 3.122.0510t = 0-1t = 1-0.9t = 2-0.81t = 3-0.729t = 46.56tổng thưởng 6G₀ = 3.122thưởng (nhạt) và γᵗ · thưởng (đậm)
Thưởng càng xa càng bị chiết khấu: tổng thưởng 6 nhưng return chỉ 3.122.
Tương tác và mục tiêu12

Hỏi nhanh

Một bước đi vào terminal nhận thưởng 10. Return tính từ ngay trước bước đó bằng bao nhiêu?

Tương tác và mục tiêu13

Thưởng và γ\gamma định nghĩa “tối ưu”

Mỗi bước −1-1: đường dài mất thêm điểm.

γ<1\gamma<1: thưởng 10 đến muộn có giá trị nhỏ hơn.

Cả hai đẩy robot đi đường ngắn. Thưởng dương cho mỗi bước có thể khiến robot muốn kéo dài episode.

Tương tác và mục tiêu14

Hỏi nhanh

Đổi thiết kế: vào đích nhận 10, mọi bước khác nhận 0, và γ=1\gamma = 1. Policy nào là tối ưu?

Phỏng theoCMU 10-601 · Exam 3 Practice · Q3.8

02

Bellman và planning

Bellman và planning16

Bellman nối việc xa với việc gần

V∗(s)=max⁡a[r(s,a)+γV∗(s′)].V^*(s)=\max_a\left[r(s,a)+\gamma V^*(s')\right].

V∗(terminal)=0V^*(\text{terminal})=0 vì sau terminal không còn phần thưởng tương lai.

Ở môi trường ngẫu nhiên, lấy kỳ vọng kết quả của từng hành động, rồi chọn max.

Bellman và planning17

Value iteration tính ngược từ đích

Khoảng cách tới G Giá trị tối ưu
1 bước 10
2 bước 8
3 bước 6.2
4 bước 4.58
5 bước 3.122

Mỗi bước lùi thêm: Vd=−1+0.9Vd−1V_d=-1+0.9V_{d-1}, với V1=10V_1=10.

print(f"Value iteration tại S: {V[start]:.3f}")
print(f"Giá trị terminal: {V[goal]:.3f}")
Kết quảValue iteration tại S: 3.122
Giá trị terminal: 0.000

Dùng mô hình đã biết: planning, chưa phải học.

Bellman và planning18

Value iteration: chi phí và tốc độ lan

Một vòng xét mọi ss, mọi aa, mọi s′s':

  • bảng pp đầy đủ: O(∣S∣2∣A∣)O(|\mathcal S|^2|\mathcal A|);
  • lưới tất định: O(∣S∣∣A∣)O(|\mathcal S||\mathcal A|).

Đồ thị có vòng nên không có thứ tự tính một lần là xong.

Bắt đầu từ V=0V=0, mỗi vòng đưa thông tin từ đích lùi thêm một bước.

Bellman và planning19

Hỏi nhanh

Chạy value iteration đồng bộ trên lưới của bài, bắt đầu từ V=0V = 0. Sau đúng 2 vòng, giá trị tại S bằng bao nhiêu?

Bellman và planning20

Giá trị lan từ đích về S

Mỗi vòng, mỗi ô lấy thưởng tốt nhất của một bước cộng giá trị chiết khấu của ô kế; giá trị lan dần từ G về S.
03

Học từ trải nghiệm

Học từ trải nghiệm22

Q-learning cập nhật từng cặp (s,a)(s,a)

Bảng (11, 4) lưu giá trị mỗi cặp (s,a)(s,a).

Q←Q+α(target−Q).Q\leftarrow Q+\alpha(\text{target}-Q).

Target chưa terminal:

r+γmax⁡a′Q(s′,a′).r+\gamma\max_{a'}Q(s',a').

Q=2Q=2, r=−1r=-1, max⁡Q(s′,⋅)=5\max Q(s',\cdot)=5.

γ=0.9\gamma=0.9, α=0.2\alpha=0.2:

  • Target bằng 3.53.5.
  • TD error bằng 1.51.5.
  • Q mới bằng 2.32.3.
Học từ trải nghiệm23

Hỏi nhanh

Đề chỉ cấp env.reset() và env.step(a), trả về trạng thái mới, phần thưởng và cờ kết thúc. Không có bảng chuyển, cũng không có bản đồ. Cách nào chạy được ngay?

Phỏng theoCMU 10-601 · Exam 3 Practice · Q5.1(iv)

Học từ trải nghiệm24

Terminal có target riêng

def td_target(reward, next_values, terminated):
    if terminated:
        return reward
    return reward + gamma * np.max(next_values)

Thưởng terminal 10, target bằng 10.

Giới hạn thu mẫu bên ngoài MDP vẫn cho phép bootstrap.

Trong Gymnasium: đọc riêng terminated và truncated.

Học từ trải nghiệm25

Q tại S tiến tới V*

Q-learning tiến dần tới giá trị V*(S) = 3.122 mà value iteration đã tính.-2023.1220100200300episodeV*(S)max Q(S, ·)
Q-learning tiến dần tới giá trị V*(S) = 3.122 mà value iteration đã tính.
Học từ trải nghiệm26

Exploration thu thêm thông tin

if rng.random() < epsilon:
    action = int(rng.integers(4))
else:
    best = np.flatnonzero(
        Q[state] == Q[state].max())
    action = int(rng.choice(best))

Exploration thử hành động để biết thêm về environment.

Search mở rộng trạng thái bằng quy tắc đã biết.

Chọn ngẫu nhiên mà không cập nhật Q hoặc policy chưa tạo ra phần học.

Học từ trải nghiệm27

Hỏi nhanh

Epsilon-greedy có 4 hành động, đúng một hành động tốt nhất, ϵ=0.2\epsilon = 0.2, và nhánh explore chọn đều cả 4 hành động. Xác suất chọn hành động tốt nhất là bao nhiêu?

Học từ trải nghiệm28

Xác suất của epsilon-greedy

Epsilon-greedy 0.2 với 4 hành động: hành động tốt nhất được chọn 85% số lần.00.510.85tốt nhất0.05khác 10.05khác 20.05khác 3khai thác 0.8explore 0.2 / 4
Epsilon-greedy 0.2 với 4 hành động: hành động tốt nhất được chọn 85% số lần.
Học từ trải nghiệm29

Tin tốt lan ngược chậm

Episode đầu, α=1\alpha=1, Q=0Q=0: chỉ cặp cuối nhận target có thưởng 10.

Các cặp trước đã cập nhật khi phía sau còn bằng 0.

Mỗi lần đi lại cùng đường, thông tin lùi thêm một bước.

Experience replay: lưu transition, cập nhật lại nhiều lần.

Học từ trải nghiệm30

Hỏi nhanh

Episode đầu tiên đi 5 transition từ S tới đích, và tất cả đều được lưu lại. Q-learning với α=1\alpha = 1, QQ khởi tạo bằng 0. Phát lại 5 transition này theo thứ tự nào để QQ tại S đạt 3.1223.122 chỉ sau một lượt quét?

Học từ trải nghiệm31

Phát lại xuôi và ngược

Phát lại ngược đưa thưởng về S sau một lượt; phát lại xuôi thì không.phát lại xuôi000010Q(S) = 0phát lại ngược3.1224.586.2810Q(S) = 3.122S→ G
Phát lại ngược đưa thưởng về S sau một lượt; phát lại xuôi thì không.
Học từ trải nghiệm32

Đánh giá policy bằng một đường đi

print("Hành động:", " ".join(actions_taken))
print(
    f"Số bước: {len(actions_taken)}, "
    f"return: {discounted:.3f}"
)
Kết quảHành động: R R U U R
Số bước: 5, return: 3.122

Evaluation tắt exploration và không cập nhật Q.

Đường ngắn nhất dài 5 bước: tối ưu từ S.

Kiểm cả policy: chạy từ mọi ô, so với V∗V^*.

Học từ trải nghiệm33

Hỏi nhanh

Một bảng Q mới học 20 episode. Đánh giá greedy từ S cho đường (2,0)→(2,1)→(2,0)→(2,1)→⋯(2, 0)\to(2, 1)\to(2, 0)\to(2, 1)\to\cdots cho đến hết 30 lượt mà không tới đích. Ta kết luận gì, và nên làm gì?

04

Học trực tiếp policy

Học trực tiếp policy35

Policy gradient trên nhiệm vụ một bước

Trái nhận 1 điểm, phải nhận 3 điểm, rồi episode kết thúc.

p=π(phải)=σ(θ).p=\pi(\text{phải})=\sigma(\theta). J(θ)=1+2p,J′(θ)=2p(1−p).J(\theta)=1+2p,\qquad J'(\theta)=2p(1-p).

Bandit này giúp thấy đạo hàm. Nó chưa có vấn đề gán công lao qua nhiều bước.

Học trực tiếp policy36

Một bước policy gradient

θ=0\theta=0 cho p=0.5p=0.5 và J′=0.5J'=0.5.

Gradient ascent với η=0.1\eta=0.1:

θ′=0+0.1⋅0.5=0.05.\theta'=0+0.1\cdot0.5=0.05.
Kết quảMột bước exact gradient: theta=0.0500, p=0.5125

Tăng thưởng: dấu cộng. Giảm loss: dấu trừ.

Học trực tiếp policy37

Hỏi nhanh

Ta muốn cực đại hóa kỳ vọng thưởng J(θ)J(\theta), và đã có gradient bằng J′(θ)J'(\theta). Dòng cập nhật nào đúng?

Học trực tiếp policy38

REINFORCE ước lượng gradient từ một mẫu

Mẫu gradient:

g^=(R−b)∇θlog⁡πθ(A).\widehat g=(R-b)\nabla_\theta\log\pi_\theta(A).

Với Bernoulli, ∇θlog⁡π(A)=A−p\nabla_\theta\log\pi(A)=A-p.

reward = 3.0 if action else 1.0
sample_gradient = (
    (reward - 2.0) * (action - probability)
)
theta_policy += 0.05 * sample_gradient

Baseline b=2b=2 không phụ thuộc vào hành động được chọn.

Học trực tiếp policy39

Hỏi nhanh

Bandit của bài, với θ=0\theta = 0 nên p=0.5p = 0.5, và baseline b=2b = 2. Mẫu vừa rút chọn trái và nhận 1 điểm. Sau một cập nhật REINFORCE như trong code, xác suất chọn phải thay đổi thế nào?

Học trực tiếp policy40

Kết quả sau 400 mẫu

Kết quảPolicy sau 400 mẫu: p(phải)=0.9641, E[R]=2.9282

Kỳ vọng tính bằng công thức 1+2p1+2p của bandit.

Kỳ vọng 2.92822.9282 chưa bằng mức tối đa 3 vì policy vẫn còn ngẫu nhiên.

Gradient 2p(1−p)2p(1-p) nhỏ dần khi pp gần 1: càng chắc chắn càng học chậm.

Học trực tiếp policy41

Xác suất chọn phải qua 400 mẫu

Xác suất chọn hành động tốt tăng nhanh lúc đầu rồi chậm dần khi gần 1.0.50.7510100200300400số mẫu0.9641p(phải)gradient kỳ vọng 2p(1 − p) nhỏ dần khi p gần 1
Xác suất chọn hành động tốt tăng nhanh lúc đầu rồi chậm dần khi gần 1.
Học trực tiếp policy42

Episode nhiều bước: GtG_t, baseline, critic

g^=∑t(Gt−b(St))∇θlog⁡πθ(At∣St).\widehat g=\sum_t\left(G_t-b(S_t)\right)\nabla_\theta\log\pi_\theta(A_t\mid S_t).

Hành động ở bước tt chỉ ảnh hưởng thưởng về sau, nên dùng GtG_t.

Baseline không đổi kỳ vọng, chỉ bớt dao động; thường là ước lượng V(St)V(S_t).

Actor-critic: thay GtG_t bằng Rt+1+γVϕ(St+1)R_{t+1}+\gamma V_\phi(S_{t+1}).

Học trực tiếp policy43

Kiểm gì trước khi huấn luyện

  • Thưởng hoặc terminal sai tạo vòng thu thưởng lệch mục tiêu.
  • truncated (dừng thu mẫu) khác terminated (kết thúc thật).
  • Môi trường ngẫu nhiên: đánh giá nhiều episode, nhiều seed.
Học trực tiếp policy44

Khi đi thi

  • Đủ quy tắc: planning, không cần học.
  • Kiểm step bằng tay trước khi train.
  • Đánh giá greedy trên nhiều episode.
05

Luyện đề

Luyện đề46

Luyện đề 1

Sàn trơn. Từ X, lệnh “tiến” đi một ô tới Y với xác suất 0.8, trượt thẳng vào đích với xác suất 0.2. Từ Y thì luôn vào đích. Vào đích nhận 10, bước khác nhận 0, γ=0.9\gamma = 0.9. V∗(X)V^*(X) bằng bao nhiêu?

Phỏng theoCMU 10-601 · Exam 3 Practice · Q3.9

Luyện đề47

Luyện đề 2

Q khởi tạo 0, α=1\alpha = 1, γ=0.9\gamma = 0.9. Nhận lần lượt (A, M, 0, B), (B, M, 0, C), (C, M, 1, A), (A, M, 0, B), (B, M, 0, C). Những ô nào của Q khác 0?

Phỏng theoMIT 6.036 · Final, Spring 2022 · Q7(a)

Luyện đề48

Luyện đề 3

Bandit của bài, p=0.5p = 0.5, mẫu REINFORCE là (R−b)(A−p)(R - b)(A - p). So sánh b=0b = 0 với b=2b = 2.

Phỏng theoCMU 10-601 · Exam 3 Practice · Q5.3(a)

Luyện đề49

Chốt ý

Thưởng, γ\gamma và terminal định nghĩa bài toán; Bellman nối hiện tại với tương lai.

Value iteration dùng mô hình, Q-learning dùng transition, policy gradient chỉnh trực tiếp xác suất hành động.

Luyện đề50

Sau giờ học

Làm 10 câu kiểm tra cuối bài trên trang bài học.

Chạy notebook; thêm xác suất trượt vào step, đoán trước V∗(S)V^*(S) giảm ra sao rồi kiểm bằng value iteration.