Tìm hiểu về phương pháp học tăng cường và phát triển phần mềm chơi game Mario. Trong đó, các thuật toán được sử dụng là DQN, Double DQN được áp dụng để xây dựng các mô hình agent có khả năng chơi game Mario như con người.
Khái quát về Học Tăng Cường
Reinforcement Learning hay Học Tăng Cường là một phương pháp học máy phổ biến để giải quyết các bài toán quyết định Phương pháp này cho phép hệ thống học từ các hành động và phản hồi từ môi trường để tối ưu hóa chiến lược nhằm đạt được mục tiêu dài hạn Ứng dụng của Học Tăng Cường rất đa dạng trong thực tế, từ chơi thể thao, lái xe, điều khiển robot cho tới chơi trò chơi điện tử, là những nhiệm vụ mà con người và máy móc có thể thực hiện và cải thiện nhờ quá trình học từ kinh nghiệm.
- Các bài toán liên quan đến học Tăng Cường có thể được thể hiện bởi hai thành phần chính sau đây:
An agent is defined as anything that can perceive its environment through sensors and act upon that environment through actuators In short, it is anything that observes its surroundings and influences them using sensors and an actuation system.
• Môi trường (Environment): Không gian xung quanh agent, nơi mà agent tồn tại và tương tác
- Hai thành phần này tác động lên nhau thông qua một sơ đồ sau:
• Môi trường sinh ra thông tin mô tả trạng thái của tác tử Tác tử sẽ tương tác với môi trường bằng cách quan sát các trạng thái và sử dụng thông tin đó để đưa ra hành động thích hợp
• Môi trường tiếp thu hành động và biến đổi theo nó Và nó lại trả về trạng thái mới cùng với phần thưởng cho tác tử
• Và vòng lặp này sẽ tiếp tục đến khi nào bài toán được giải quyết hoặc tác tử không có khả năng thực hiện hành động nữa hay bước vào trạng thái chết (Terminate State)
Trong reinforcement learning, các agent sử dụng một policy (chiến lược) để lựa chọn hành động dựa trên không gian các hành động đã được thiết lập từ trước Thông thường tập các hành động là hữu hạn hoặc rời rạc Policy hoạt động như một ánh xạ từ tập trạng thái đến tập hành động, cho phép quyết định hành động phù hợp ở mỗi trạng thái.
Chiến lược: Trạng thái → Hành động, hay 𝝅: 𝒔 → 𝒂
+ Với 𝝅 là ký hiệu của policy, s là ký hiệu của trạng thái, a là ký hiệu của hành động
Các bài toán học tăng cường thường có một hàm mục tiêu hay objective, chính là tổng các phần thưởng mà agent đạt được Để tối ưu hàm mục tiêu này, agent phải lựa chọn các hành động tốt nhất từ các lựa chọn có thể Để đưa ra quyết định tối ưu, agent cần học qua quá trình thử nghiệm và sai (trial and error).
Trong học tăng cưởng, một hệ thống được xem như một vòng lặp điều khiển phản hồi giữa tác nhân và môi trường Mỗi bước, tác nhân nhận trạng thái từ môi trường, lựa chọn và thực thi một hành động, còn môi trường đáp lại bằng trạng thái kế tiếp và phần thưởng—tín hiệu phản hồi giúp tác nhân điều chỉnh chiến lược Qua quá trình liên tục tương tác và trao đổi thông tin giữa tác nhân và môi trường, hệ thống dần học cách tối ưu hành động để tối đa hóa tổng phần thưởng theo thời gian.
Các tín hiệu trao đổi trong bài viết được xác định bởi ba thành phần cơ bản: trạng thái (s), hành động (a) và phần thưởng (r) Khi biểu diễn dưới dạng toán học, ba ký hiệu tương ứng là (s, a, r) Bộ ba này được gọi chung là trải nghiệm, hay chuỗi trải nghiệm của tác nhân trong môi trường, và là yếu tố cốt lõi để phân tích hành vi và tối ưu hóa quyết định.
Vòng lặp có thể lặp vô tận hoặc dừng lại khi tác tử gặp trạng thái chết hoặc vượt quá thời gian giới hạn T đã được định trước Khi điều này xảy ra, tác tử được xem là đã hoàn thành một episode.
- Trajectory là tập hợp tất cả trải nghiệm tác tử tiếp nhận trong quá trình thực hiện 1 episode Nó được ký hiệu là:
+ Ví dụ về 1 bài toán học tang cường:
Bài Toán Markov
Hàm phản hồi
Mục tiêu của tác tử là tối đa hóa phần thưởng tích lũy trong tương lai Để làm được điều này, ta định nghĩa hàm phản hồi R(τ) dựa trên đường đi (trajectory) của một episode, τ = (s0, a0, r0), (s1, a1, r1), …, (sT, aT, rT) Hàm phản hồi tổng hợp phần thưởng theo thời gian, cho phép đánh giá hiệu suất của các hành động đã chọn và từ đó điều chỉnh chiến lược nhằm tối ưu hóa phần thưởng kỳ vọng trong các tương tác tiếp theo.
- Thông số 𝛾 được gọi là discount factor hay hệ số suy giảm, 𝛾 ∈ [0,1]
Hệ số gamma cho phép xác định mức độ ảnh hưởng của những bước chuyển trạng thái tiếp theo đến giá trị phản hồi tại thời điểm hiện tại Khi 𝛾 = 0, tác tử chỉ xem xét mục tiêu gần nhất, tập trung vào ngắn hạn Giá trị 𝛾 càng gần 1, tác tử sẽ quan tâm đến các mục tiêu xa hơn trong tương lai, mở rộng phạm vi dự đoán và tối ưu hóa hiệu suất dài hạn.
- Từ hàm phản hồi trên, ta định nghĩa được hàm mục tiêu là kỳ vọng của giá trị phản hồi trên nhiều trajectory khác nhau:
𝜏 ∼ 𝜋 cho biết một trajectory (chuỗi trạng thái–hành động–phần thưởng) được lấy mẫu từ một policy Nói cách khác, mỗi policy có thể sinh ra nhiều trajectory khác nhau khi được thực thi trong môi trường Ta cũng có thể dùng ký hiệu này để mô tả việc lấy một hành động từ một trạng thái dựa trên một policy cụ thể: a ∼ 𝜋(s) Hiểu rõ cách mẫu từ policy giúp phân tích và tối ưu hành vi của tác nhân trong các bài toán học tăng cưởng và điều khiển tự động.
Hàm Giá Trị
Trong học tăng cường, các hàm giá trị cung cấp thông tin về mục tiêu và giúp tác nhân đánh giá mức độ phù hợp của trạng thái và hành động với phản hồi mong đợi ở tương lai Nhờ đó, tác nhân có thể chọn lựa chiến lược hành động để tối đa hóa phần thưởng kỳ vọng Có hai loại hàm giá trị phổ biến: hàm giá trị trạng thái (V(s)) và hàm giá trị hành động (Q(s,a)), mỗi loại có ý nghĩa và cách tính riêng biệt để hỗ trợ định lượng giá trị của trạng thái và hành động trong quá trình học.
- Hàm 𝑉 𝜋 sẽ xác định xem 1 trạng thái là tốt hay xấu Hàm phản hồi 𝑅(𝜏) = ∑ 𝑇 𝑡=0 𝛾 𝑡 𝑟 𝑡 được tính toán từ trạng thái hiện tại s đến khi kết thúc 1 episode
Hàm Qπ xác định xem một cặp trạng thái-hành động là tốt hay xấu bằng cách tính giá trị phản hồi kỳ vọng khi tác nhân chọn hành động a tại trạng thái s và tiếp tục hành động theo chiến lược π Dựa trên giá trị này, nó cho phép quyết định xem có nên chọn hành động a tại trạng thái đó hay nên tiếp tục theo chiến lược đã đề ra.
Phân Loại Thuật Toán Học Tăng Cường
Học dựa trên chiến lược (Policy-based)
Loại thuật toán này học một chiến lược (policy) Các chiến lược tốt sinh ra các hành động giúp tối ưu hóa hàm mục tiêu của tác tử, với J(τ) = E_τ [∑_{t=0}^T γ^t r_t] là công thức để tối ưu hàm mục tiêu Các thuật toán dựa trên chiến lược được biết đến nhiều nhất là REINFORCE.
Lợi ích cốt lõi của thuật toán này là tính tổng quát và khả năng tối ưu hóa cao, khiến nó trở thành một trong những phương pháp tối ưu tổng quát hàng đầu Thuật toán có thể được áp dụng cho các bài toán tối ưu với nhiều kiểu hành động khác nhau như rời rạc, liên tục hoặc đa hành động Nó cũng trực tiếp tối ưu hóa mục tiêu mà tác nhân quan tâm, tức là hàm mục tiêu J(τ), từ đó nâng cao hiệu quả và hiệu suất của quá trình tối ưu hóa.
Học dựa trên giá trị (Value-based)
- Với thuật toán dạng này, tác tử sẽ dùng 1 trong 2 hàm
Trong học tăng cương, hàm Vπ(s) và hàm Qπ(s, a) được sử dụng để đánh giá giá trị và xây dựng chiến lược phù hợp Hàm Qπ(s, a) chứa thông tin về cặp trạng thái và hành động tại mỗi trạng thái, trong khi hàm Vπ(s) chỉ cho biết giá trị của trạng thái đó Vì vậy, Qπ thường được xem là phổ biến hơn Vπ vì nó cung cấp thông tin toàn diện về các hành động có thể thực hiện ở mỗi trạng thái, từ đó hỗ trợ xác định chính sách tối ưu.
Thuật toán SARSA là một trong những thuật toán lâu đời nhất của học tăng cường Mặc dù sự đơn giản của nó, SARSA đã hình thành ý tưởng lõi của nhiều phương pháp học dựa trên giá trị và đóng vai trò nền tảng cho các kỹ thuật học theo chính sách Tuy nhiên ngày nay SARSA không được sử dụng rộng rãi do nó mang lại phương sai khá lớn Trong khi đó Deep Q-Network (DQN) và các họ hàng của nó như Double DQN và PER (Prioritized Experience Replay) lại là những thuật toán phổ biến và hiệu quả hơn cho các bài toán học tăng cường.
Các thuật toán dựa trên lấy mẫu thường cho hiệu quả cao hơn các thuật toán dựa trên chiến lược, do phương sai của chúng thấp và chúng tận dụng tốt dữ liệu thu thập từ môi trường Tuy nhiên, vẫn chưa có gì đảm bảo các thuật toán này sẽ hội tụ về điểm tối ưu.
- Gần đây có xuất hiện một thuật toán là QT-OPT được ứng dụng khá hiệu quả trong môi trường với không gian hành động liên tục.
Thuật toán dựa trên mô hình
Phương pháp này thực hiện học có mô hình và sử dụng mô hình đó để quyết định chính sách tối ưu Tác nhân ước lượng mô hình từ các quan sát về khả năng chuyển đổi trạng thái giữa các trạng thái và hành động, nhằm xây dựng một bản đồ động lực của môi trường Khi tác nhân nắm được mô hình của môi trường, nó có thể dự đoán kết quả của các hành động và lên kế hoạch cho một chuỗi hành động tối ưu dựa trên các dự đoán đó Quá trình này cho phép tối ưu hóa chính sách một cách có hệ thống và có thể rút ngắn thời gian học so với các phương pháp không dựa trên mô hình Sau khi có mô hình, thuật toán tối ưu hóa chính sách sẽ tìm ra chiến lược hành động tối ưu dựa trên dự đoán từ mô hình và dữ liệu quan sát từ môi trường thực tế.
Trong mô hình xác suất trạng thái, P(s'|s,a) cho phép dự đoán tương lai bằng cách ước lượng quỹ đạo của một vài bước tiếp theo Khi môi trường đang ở trạng thái s, tác tử sẽ đánh giá cách trạng thái có thể thay đổi nếu áp dụng một chuỗi hành động a1, a2, , an bằng cách dùng phân phối xác suất P(s'|s,a) Tất cả những tính toán này không làm thay đổi môi trường thực tế; các quỹ đạo được dự đoán chỉ xuất hiện trong “đầu” của tác tử — trong quá trình suy luận và nội bộ của nó.
Phương pháp học máy này nổi bật khi được áp dụng trong các tình huống thu thập dữ liệu hoặc trải nghiệm với môi trường mất thời gian và chi phí cao, ví dụ như trong ngành robot học Nó không cần các mẫu dữ liệu thực tế để đưa ra chiến lược tốt, bởi vì chính nó đã có một mô hình có khả năng tạo ra dữ liệu trải nghiệm từ các mẫu tưởng tượng.
Tuy nhiên, không có gì là hoàn hảo: mô hình hóa một môi trường có không gian trạng thái và hành động rất lớn là một thách thức vô cùng lớn Bên cạnh đó, sự phức tạp cao của các biến đổi trong môi trường khiến việc mô tả và dự đoán các biến đổi trạng thái trở nên khó khăn và không mượt mà.
Một số thuật toán dạng này thường được sử dụng phổ biến, điển hình như Monte Carlo Tree Search (MCTS) và Linear Quadratic Regulators (LQR); tuy nhiên trong báo cáo này sẽ không bàn về các thuật toán dạng này mà tập trung vào các khía cạnh khác của vấn đề để cung cấp góc nhìn và phân tích có liên quan đến mục tiêu nghiên cứu.
Các phương pháp kết hợp
Một trong ba dạng thuật toán được nêu trên luôn có sự kết hợp giữa ưu điểm và nhược điểm riêng, nên nhiều nhà nghiên cứu đã cố gắng kết hợp chúng để tạo ra các thuật toán đời mới Tiêu biểu cho xu hướng này là các thuật toán lai, được thiết kế để tận dụng ưu thế của từng dạng đồng thời khắc phục nhược điểm của chúng, từ đó cải thiện hiệu suất, độ chính xác và tính ổn định trong nhiều bài toán khác nhau.
Thuật toán Actor-Critic là sự kết hợp giữa policy-based và value-based Ý tưởng của nó là dùng hàm giá trị để ước lượng thông tin nhận được từ môi trường và truyền tín hiệu này cho policy, từ đó policy dựa trên thông tin này để quyết định hành động Nhờ sự tương tác giữa hàm giá trị và policy, các chiến lược hành động sẽ tác động lên môi trường một cách hiệu quả, giúp agent học nhanh hơn và tối ưu hơn trong quá trình huấn luyện.
Thuật toán Actor-Critic là một nhánh quan trọng trong học tăng cường, đã mang lại nhiều bước tiến đáng kể trong thời gian gần đây Các thuật toán mạnh mẽ được ra đời và có ảnh hưởng lớn như Trust Region Policy Optimization (TRPO) và Proximal Policy Optimization (PPO) đã cải thiện sự ổn định và hiệu quả của quá trình huấn luyện TRPO giới hạn bước cập nhật chính sách bằng cách tối ưu hóa trong một vùng tin cậy, từ đó giảm biến động và nguy cơ lệch hướng học, trong khi PPO sử dụng cơ chế clip và tối ưu hóa gần đúng để đảm bảo cập nhật an toàn và nhanh nhạy Mô hình Actor-Critic kết hợp mạng Actor để tìm chiến lược tốt và mạng Critic để ước lượng giá trị, cho phép học từ trải nghiệm liên tục và thích nghi với môi trường đa dạng Những tiến bộ này mở rộng phạm vi ứng dụng của Actor-Critic từ robot và trò chơi đến hệ thống ra quyết định tự động, đồng thời đặt ra thách thức về hiệu suất tính toán, thiết kế kiến trúc mạng và tính ổn định khi làm việc với các bài toán quy mô lớn.
Optimization (PPO), Deep Deterministic Policy Gradients (DDPG), Soft Actor-Critic (SAC), A2C và A3C.
On-Policy và Off-policy
Học On-policy là phương pháp học dựa trên giá trị của chiến lược được dùng để ra quyết định Các hàm giá trị được cập nhật từ kết quả của việc thực hiện các hành động được quyết định bởi chính chiến lược đó Các chiến lược này thường mang tính mềm (soft) và không mặc định, “soft” ở đây có nghĩa là luôn đảm bảo có một phần tử thăm dò trong chiến lược để khám phá thêm các hành động khác và cải thiện giá trị của chính sách Học On-policy tập trung vào học từ hành động và kết quả của chiến lược đang được áp dụng, với sự thăm dò liên tục giúp tối ưu hóa giá trị của chiến lược.
Trong học tăng cưởng, agent thường chọn hành động một cách cân nhắc để tối ưu giá trị nhận được từ môi trường Ba chiến lược phổ biến được dùng là ε-soft, ε-greedy và softmax, giúp cân bằng giữa khám phá và khai thác Học Off-policy là phương pháp học các chiến lược hành vi và ước lượng khác nhau, cho phép cập nhật các hàm giá trị ước lượng dựa trên các hành động giả thiết mà không cần phải thử chúng trực tiếp trong thực tế Điều này trái ngược với các chiến lược on-policy, nơi cập nhật hàm giá trị chỉ dựa trên kinh nghiệm thu được từ hành động thực tế của agent.
CÁC THUẬT TOÁN HỌC TĂNG CƯỜNG
Quy Hoạch Động và công thức Bellman
Phương trình Bellman, được đặt theo tên nhà khoa học Richard Bellman, là công cụ then chốt trong giải quyết bài toán quyết định Markov (MDP) Nó mô tả cách giá trị kỳ vọng của một trạng thái liên kết với các hành động và trạng thái kế tiếp, từ đó cho phép xác định chiến lược tối ưu dựa trên tối ưu hóa phần thưởng theo từng bước Nhờ Bellman equation, quá trình tìm kiếm chiến lược tối ưu cho hệ thống động có ngẫu nhiên trở nên khả thi và dễ hiểu hơn, đồng thời là nền tảng cho các phương pháp học máy và tối ưu hoá quyết định.
- Theo như phương trình Bellman, giá trị của 1 trạng thái được tính bằng giá trị của phần thưởng tức thời và giá trị của trạng thái tiếp theo:
𝑅(𝑠, 𝑎, 𝑠′) là phần thưởng tức thời đạt được khi thức hiện hành động a tại trạng thái s và di chuyển đến trạng thái s’
𝛾 là hệ số suy giảm
𝑉(𝑠′) là giá trị của trạng thái kế tiếp
- Áp dụng công thức trên với trạng thái ở trong 1 policy, ta có:
- Tiếp tục áp dụng công thức trên trong môi trường có tính ngẫu nhiên mà việc thực hiện 1 hành động có thể dẫn đến các kết quả khác nhau:
- Cuối cùng, nếu như các policy cũng có tính ngẫu nhiên, tức là ta lựa chọn hành động dựa trên các phân phối xác suất:
- Chúng ta có thể thấy công thức trên giống với khai triển của hàm kì vọng
𝐸 𝑥~𝑝(𝑥) [𝑓(𝑥)] = ∑ 𝑝(𝑥)𝑓(𝑥) 𝑥 nên ta có thể viết gọn lại công thức như sau:
-Ta cũng có thể áp dụng công thức Bellman với hàm 𝑄 𝜋 (𝑠, 𝑎):
Trong bài toán chính sách, câu hỏi đặt ra là ∑_a π(a|s) a có cần thiết cho công thức của Q_π(s, a) hay không? Câu trả lời là không, vì Q_π(s, a) là giá trị của một cặp s và a cho trước, nên ta không cần phải chọn hành động cho trạng thái s Nhưng với trạng thái s' thì thêm ∑_a π(a|s') a là cần thiết.
Sau khi đã nắm được các công thức nền tảng ở trên, bước tiếp theo là trình bày công thức để tính giá trị tối ưu của hàm giá trị trạng thái Công thức này xác định V*(s) cho mọi trạng thái bằng cách tối đa hoá kỳ vọng phần thưởng tương lai, tức là đánh giá giá trị của mỗi trạng thái dựa trên phần thưởng nhận được và giá trị của các trạng thái kế tiếp Đây thường được tiếp cận qua công thức Bellman tối ưu, cho phép cập nhật V*(s) dựa trên giá trị kỳ vọng của hành động và trạng thái sau, từ đó xác định chiến lược tối ưu cho hệ thống.
Thay vì trả về giá trị kỳ vọng của một trạng thái trên một policy, hàm này sẽ lấy giá trị tối ưu của trạng thái s bằng cách cân nhắc tất cả hành động có thể thực hiện tại trạng thái đó Ví dụ, ở trạng thái s có 3 hành động có thể là 0, 1 và 2, giá trị tối ưu sẽ được tính bằng cách so sánh giá trị của từng hành động và chọn hành động mang lại giá trị lớn nhất Cách tiếp cận này cho phép xác định giá trị tối ưu của trạng thái bằng cách lấy max over actions, và thường được áp dụng trong các phương pháp như value iteration để tối ưu hóa quyết định trong hệ thống động.
- Tương tự áp dụng cho hàm giá trị 𝑄 𝜋 (𝑠, 𝑎), ta có được giá trị tối ưu của hàm Q:
Trong học tăng cường, mục tiêu của phương pháp quy hoạch động là đi tìm giá trị tối ưu của hai phương trình Bellman thông qua hai kỹ thuật phổ biến là lặp giá trị và lặp policy Việc áp dụng quy hoạch động giúp xác định giá trị của trạng thái và xây dựng chính sách tối ưu cho agent ở mỗi trạng thái Hai kỹ thuật này cung cấp các hướng tiếp cận khác nhau để tối ưu hóa hành vi và kết quả ra quyết định, nhưng ta sẽ không đi sâu vào chi tiết của chúng.
Kỹ thuật Monte Carlo
Monte Carlo là một phương pháp lấy mẫu ngẫu nhiên để ước lượng các giá trị của các hàm toán học khó tính toán bằng cách phân tích thuần túy Để hình dung rõ hơn, hãy xem bài toán ước lượng số pi bằng Monte Carlo: tạo các điểm ngẫu nhiên trong hình vuông đơn vị [0,1] × [0,1], đếm số điểm nằm trong vòng tròn bán kính 1 và thuộc góc phần tư đầu tiên (tức x^2 + y^2 ≤ 1); từ đó ước lượng pi bằng pi ≈ 4 × (số điểm ở bên trong vòng tròn) / (tổng số điểm) Kết quả là một ước lượng xấp xỉ và sẽ càng chính xác khi ta có nhiều mẫu, với ứng dụng rộng rãi trong mô phỏng, đánh giá tích lũy và tối ưu hóa khi các hàm biên phức tạp.
Ta dùng một hình tròn bán kính r = 1 và đặt nó sao cho vừa khít vào một hình vuông có cạnh bằng 2r Diện tích của hai hình được cho bởi πr^2 cho hình tròn và (2r)^2 cho hình vuông Tỉ lệ diện tích giữa hai hình là πr^2 : (2r)^2, hay π/4 khi r = 1; với r = 1, diện tích hình tròn là π và diện tích hình vuông là 4.
Để ước lượng số pi bằng phương pháp Monte Carlo, ta tạo ra hàng nghìn hoặc hàng triệu điểm ngẫu nhiên trong một hình vuông đi kèm với vòng tròn nội tiếp Ta phân loại từng điểm xem nó nằm trong vòng tròn hay ở ngoài vòng tròn, và nhận thấy các điểm được phân bố đều và ngẫu nhiên Tỉ lệ số điểm nằm trong vòng tròn so với tổng số điểm trong hình vuông bằng với diện tích vòng tròn chia cho diện tích hình vuông, tương ứng với pi/4 khi vòng tròn có bán kính bằng 1 Nhân tỉ lệ này với 4 để có ước lượng của pi. -**Support Pollinations.AI:** -🌸 **Ad** 🌸Powered by Pollinations.AI free text APIs [Support our mission](https://pollinations.ai/redirect/kofi) to keep AI accessible for everyone.
- Lấy càng nhiều điểm thì giá trị của ta càng đúng, sau đó ta chỉ việc lấy tỉ lệ đó nhân với 4 sẽ ra giá trị của số 𝜋
Tương tự, ta áp dụng phương pháp đã trình bày để ước lượng giá trị của hàm trạng thái V(s) Ta lấy mẫu N episode dựa trên một policy và ước lượng V(s) bằng trung bình tổng phần thưởng nhận được khi trạng thái s xuất hiện trong các episode đó, tức là lấy trung bình các giá trị return tại trạng thái s qua N tập đã được lấy mẫu.
- Tuy nhiên ta sẽ nâng cấp một chút công thức trên để nó tổng quát hơn:
- Áp dùng tương tự vào hàm giá trị Q:
Kỹ thuật TD learning (Temporal Difference Learning)
Thuật toán Monte Carlo có một hạn chế rõ ràng: nó đòi hỏi phải biết giá trị của trạng thái tiếp theo; để tính giá trị của trạng thái s tại thời điểm t, ta phải trải qua toàn bộ một episode Việc này tốn thời gian và đặc biệt bất tiện khi áp dụng vào các bài toán mà việc đạt được một giá trị kết thúc là không thể hoặc không có giá trị kết thúc, khiến thuật toán Monte Carlo trở nên vô dụng trong những trường hợp đó.
- Thay vì phải đi hết episode, ta ước lượng giá trị của trạng thái tiếp theo nhờ vào phương pháp TD Learning
- Thay vào công thức của Monte Carlo ta được:
+ 𝑟 + 𝛾𝑉(𝑠′) − 𝑉(𝑠) được gọi là TD error
SARSA (State-Action-Reward-State-Action) là một thuật toán học tăng cường dựa trên TD-learning, được thiết kế để tối ưu chiến lược thông qua cập nhật hàm giá trị hành động Q(s,a) Thay vì học trên hàm giá trị V của trạng thái như một số phương pháp khác, SARSA cập nhật và học trên hàm giá trị Q(s,a), tức là giá trị của một hành động tại một trạng thái Quá trình cập nhật dựa trên thông tin từ bước hiện tại ( trạng thái s, hành động a, phần thưởng r ) và trạng thái sau s' với hành động tiếp theo a' được chọn theo chính sách đang học, thể hiện tính chất on-policy của SARSA Nhờ đó, SARSA ước lượng giá trị hành động tốt nhất cho từng cặp trạng thái-hành động và điều chỉnh chiến lược dựa trên chu trình trạng thái-hành động - phần thưởng - trạng thái tiếp theo - hành động tiếp theo, nhằm tối ưu hành động trong môi trường động.
Q-learning
- Trong thuật toán SARSA, ta lựa chọn hành động a tại trạng thái s nhờ sử dụng một policy cho trước và khi đến được trạng thái s’ ta vẫn sử dụng policy đó để lựa chọn hành động a’ Đó gọi là phương pháp On-Policy
- Tuy nhiên, sau đây chúng ta sẽ sử dụng thuật toán Q-learning thay vì dùng phương pháp on-policy, ta dùng off-policy Tức là ta sẽ lựa chọn hành động cho trạng thái s dựa trên một policy (thường là epsilon-greedy) nhưng ta lựa chọn hành động a’ cho trạng thái s’ bằng policy khác (greedy policy)
𝑎′ 𝑄(𝑠 ′ , 𝑎′) − 𝑄(𝑠, 𝑎)) + Chúng ta dùng hàm max để chọn ra hành động a’ mà có giá trị Q là lớn nhất Giống như ta từng làm ở phần Quy Hoạch Động
+ Dưới đây là thuật toán cho kỹ thuật Q-Learning:
1 Khởi tạo hàm Q(s,a) với giá trị là ngẫu nhiên
1 Chọn policy cho episode này, chọn hành động a tại trạng thái s
2 Thực hiện hành động a và di chuyển đến hành động s’, nhận được phần thưởng r
3 Cập nhật giá trị Q dùng công thức
4 Cập nhật s = s’ (gán giá trị của trạng thái tiếp theo cho trạng thái hiện tại)
5 Nếu s không phải trạng thái kết thúc, lặp lại từ bước 1 đến bước 5.
Deep Q-Network
Ở các thuật toán trước, mỗi lần tính toán được giá trị Q ta lại phải cập nhật chúng vào một bảng giá trị như sau, với các giá trị trong bảng được giả định để minh họa cho quá trình này Việc cập nhật diễn ra trực tiếp khi giá trị Q được tính toán xong, và bảng giá trị đóng vai trò như kho lưu trữ trung gian cho các giá trị của trạng thái hành động Mục đích là hệ thống hóa Q-values để dễ so sánh và hiệu chỉnh chiến lược trong quá trình học và tinh chỉnh thuật toán, mặc dù các giá trị trong bảng được giả định nhằm phục vụ mục đích minh họa.
Giả sử chúng ta có một môi trường với 1000 trạng thái và 50 hành động, bảng giá trị sẽ phải chứa 50.000 ô để lưu trữ mọi cặp trạng thái-hành động Đây là một phương pháp ngớ ngẩn và tốn thời gian, đặc biệt khi quy mô bài toán reinforcement learning tăng lên và việc xây dựng, lưu trữ cũng như cập nhật bảng giá trị trở nên bất tiện và kém hiệu quả cho các ứng dụng quy mô lớn.
Nhờ sự phát triển của các thuật toán học sâu và mạng nơ ron, việc giải bài toán này trở nên đơn giản hơn Trong bài toán Q-learning, ta sẽ dùng một mạng nơ ron ảo có tham số θ để ước lượng giá trị Q, với đầu vào là các đặc trưng của trạng thái và đầu ra là giá trị Q tương ứng cho các hành động, được ký hiệu dưới dạng Q(s,a; θ) Đồng thời, chúng ta cũng giới thiệu ký hiệu mới cho hàm giá trị Q để làm rõ mối quan hệ giữa trạng thái và hành động trong quá trình học.
Để huấn luyện một mô hình, dữ liệu là yếu tố thiết yếu và nguồn dữ liệu đến từ các trải nghiệm của tác nhân trong môi trường Ta sẽ dùng cấu trúc dữ liệu dạng deque để lưu trữ các trải nghiệm mà tác nhân đã trải qua, và gọi nó là Replay Buffer Replay Buffer ghi nhận các trạng thái, hành động, phần thưởng và kết quả của mỗi lần tương tác, giúp tích lũy và trộn dữ liệu đào tạo một cách có hệ thống, từ đó cải thiện sự ổn định và tốc độ học của mô hình.
- b Hàm mất mát (Loss Function)
Trong lĩnh vực machine learning và deep learning, hàm mất mát (loss function) là thành phần không thể thiếu để đo lường sự khác biệt giữa giá trị dự đoán và giá trị thực tế Hàm mất mát phổ biến nhất cho bài toán hồi quy là MSE (mean squared error), hay còn gọi là bình phương sai số trung bình MSE được định nghĩa là trung bình bình phương độ lệch giữa giá trị đích (giá trị cần đạt được) và giá trị ước lượng do mô hình dự đoán Việc tối ưu hóa MSE giúp mô hình điều chỉnh tham số để giảm thiểu sai số dự đoán, từ đó nâng cao hiệu suất và độ tin cậy của các ứng dụng machine learning và deep learning.
+ Và mục tiêu của chúng ta là tối thiểu hóa giá trị của hàm mất mát
Chúng ta sử dụng Q*(s, a) – giá trị tối ưu được tìm ra từ Quy Hoạch Động – làm giá trị đích cho quá trình tối ưu hóa Do đó, hàm mất mát được định nghĩa là hiệu giữa giá trị tối ưu Q*(s, a) và giá trị ước lượng Q(s, a) Việc này giúp điều chỉnh và cải thiện độ chính xác của ước lượng Q(s, a) theo thời gian, đồng thời tối ưu hóa chính sách học tăng cường dựa trên sự chênh lệch này.
- Giống như việc tính toán giá trị ước lượng 𝑄 𝜃 (𝑠, 𝑎) ta sử dụng mạng nơ ron ảo có cùng tham số 𝜃 để tính giá trị của 𝑄(𝑠 ′ , 𝑎′), ta viết lại:
Việc chỉ tính toán giá trị mất mát cho một trạng thái tại một thời điểm sẽ không mang lại nhiều giá trị Theo định nghĩa của hàm mất mát MSE, ta thực hiện tính toán trên nhiều mẫu dữ liệu để tận dụng tối đa thông tin có được từ tập dữ liệu Để làm được điều đó, ta sẽ sử dụng Replay Buffer như ta đã nêu ở bên trên Từ các trải nghiệm được lưu trữ trong Replay Buffer, ta rút ra một tập con dữ liệu, thường là 64 mẫu, để sử dụng khi tính toán hàm mất mát.
Để tối thiểu hóa giá trị mất mát L(θ), ta tìm tham số tối ưu θ bằng cách áp dụng gradient descent nhằm hạ thấp hàm L(θ) Quá trình này bắt đầu bằng việc tính gradient của L(θ), ký hiệu là ∇_θ L(θ) Sau đó, tham số θ được cập nhật theo quy tắc θ := θ − η ∇_θ L(θ), với η là learning rate Ta lặp đi lặp lại các bước tính gradient và cập nhật θ cho đến khi gradient gần bằng 0 hoặc khi hội tụ, từ đó đạt được tham số tối ưu và giá trị mất mát tối thiểu.
Tuy nhiên chúng ta lại gặp một vấn đề nữa liên quan đến tham số 𝜃: giá trị đích và giá trị ước lượng dùng chung một bộ tham số 𝜃 Sau mỗi lần tính toán, cả hai đều bị cập nhật với cùng một 𝜃, khiến mục tiêu tối ưu liên tục thay đổi Vì gradient descent tìm điểm cực tiểu dựa trên một mục tiêu ổn định, khi 𝜃 thay đổi thì điểm tối ưu cũng đổi theo, và quá trình tối ưu hóa mất tính hội tụ.
Để khắc phục sự không ổn định của giá trị đích trong học tăng cường, người ta đề xuất giải pháp đóng băng tham số 𝜃 của hàm giá trị đích trong một khoảng thời gian và sau đó cập nhật lại Giá trị đích sẽ có một bộ tham số riêng là 𝜃′ Sau n vòng đời của tác nhân, tham số 𝜃′ sẽ được gán bằng tham số 𝜃 của giá trị ước lượng, giúp làm mịn sự biến thiên của mục tiêu và cải thiện hiệu suất học tập.
❖ Bây giờ chúng ta sẽ kết hợp mọi thứ vừa học được để viết thuật toán DQN:
1 Khởi tạo ngẫu nhiên bộ tham số 𝜃 cho mạng nơ ron chính
2 Khởi tạo bộ tham số 𝜃′ cho mạng nơ ron của giá trị đích (copy giá trị từ 𝜃)
4 For i =1, i< N (number of episode), thực hiện bước 5:
5 For t=0, , T-1 (lặp đến khi kết thúc 1 episode):
1 Quan sát trạng thái s và lựa chọn hành động sử dụng epsilon-greedy, có nghĩa là với xác suất epsilon, chọn ngẫu nhiên hành động a với xác suất = 1 - epsilon a = arg max
2 Thực hiện hành động a, chuyển đến trạng thái s’ và nhận phần thưởng r
3 Lưu thông tin (s,a,s’,r) vào trong replay buffer D
4 Lấy mẫu ngẫu nhiên K thông tin từ buffer D
5 Tính giá trị đích: 𝑦 𝑖 = 𝑟 𝑖 + 𝛾 max
6 Tính giá trị mất mát: 𝐿(𝜃) = 1
7 Tính gradient của hàm mất mát và cập nhật bộ tham số 𝜃 dựa vào công thức: 𝜃 = 𝜃 − 𝛼∇ 𝜃 𝐿(𝜃)
8 Không cập nhật giá trị tham số 𝜃’ trong một khoảng thời gian và cập nhật nó bằng cách copy giá trị của tham số 𝜃
Việc sử dụng hàm max để tìm hành động có giá trị lớn nhất giúp ta nhận diện nhanh chóng hành động tối ưu, nhưng nó có thể sinh ra một vấn đề mới là overestimation – đánh giá quá cao giá trị của hành động được chọn Để khắc phục vấn đề này, cần bổ sung yếu tố đánh giá phụ như xác suất thành công, chi phí, thời gian và rủi ro, áp dụng đánh giá đa tiêu chí, kiểm tra nhạy cảm với dữ liệu thực tế và thiết lập ngưỡng an toàn Đồng thời kết hợp thử nghiệm A/B, mô phỏng và theo dõi hiệu suất theo thời gian để điều chỉnh quyết định, tránh quá lệ thuộc vào một giá trị tuyệt đối và tăng độ tin cậy của hành động tối ưu.
Dueling DQN
- Hàm lợi thế được định nghĩa là hiệu giữa hai giá trị Q và giá trị V:
Ta đã biết hàm Q (Q(s,a)) tính lợi ích hay giá trị kỳ vọng của việc thực hiện hành động a tại trạng thái s Ngược lại, hàm V (V(s)) cho ta biết giá trị của trạng thái s khi hành động tối ưu được thực hiện từ trạng thái đó Sự liên hệ giữa Q và V cho phép xác định hành động tối ưu ở mỗi trạng thái bằng cách chọn a có giá trị Q(s,a) lớn nhất, từ đó tối ưu hóa tổng lợi ích theo thời gian trong các bài toán học tăng cường.
Trong quá trình tối ưu hành động theo một policy, hàm lợi thế A(s, a) cho biết lợi ích của việc thực hiện hành động a so với mức lợi ích trung bình đạt được ở trạng thái s Nói cách khác, A(s, a) là sự chênh lệch giữa Q(s, a) và V(s), giúp so sánh các hành động và nhận diện hành động tối ưu phù hợp với trạng thái s dưới một policy đã cho.
- Phương pháp Dueling DQN sẽ tận dụng hàm lợi thế này và sử dụng nó để tính giá trị của hàm Q:
Lợi ích của phương pháp này nằm ở việc tối ưu hóa quyết định bằng cách giảm bớt tính toán và tập trung vào những hành động có tác dụng trong mỗi trạng thái Giả sử ở một vài trạng thái s, ta có 20 hành động và có thể chọn 1 để thực hiện Tuy nhiên, việc tính toán giá trị Q cho toàn bộ 20 hành động này không mang lại nhiều lợi ích vì nhiều hành động không có tác dụng ở trạng thái đó và có thể có cùng một giá trị Q Do đó, phương pháp này khuyến khích bỏ qua các hành động vô tác dụng và tập trung vào các hành động mang lại cải thiện, từ đó tăng hiệu suất và tiết kiệm thời gian trong quá trình học và tối ưu quyết định.
Việc tính toán giá trị Q dựa trên công thức đã nêu cho phép xác định xem một hành động bất kỳ có mức độ quan trọng hay mang lại giá trị khác biệt so với các hành động khác hay không Từ đó, ta có thể nhận diện các hành động có giá trị cao và định hướng quyết định một cách hiệu quả hơn Điều này mở đường cho một cách tổ chức mô hình mới để tính toán và so sánh giá trị của các hành động, từ đó cải thiện hiệu suất của hệ thống.
- Ta cũng viết lại hàm Q(s,a) như sau:
+ Trong đo B là số lượng hành động
- Bởi vì mạng tính toán của V và A đều có tham số nên ta có công thức cuối cùng:
) + 𝛼 là tham số của hàm lợi ích và 𝛽 là tham số của hàm giá trị V
ÁP DỤNG HỌC TĂNG CƯỜNG VÀO GAME MARIO
Bài toán cần xử lý
- Bài toán mà chúng ta sẽ dùng để áp dụng các thuật toán học tăng cương là tạo ra một agent có khả năng chơi game như con người.
Môi Trường và Dữ Liệu
- Mario có thể thực hiện được những hành động sau đây trong môi trường:
• NOOP: không làm gì cả
• Right: di chuyển sang phải
• Right+A: nhảy hoặc bơi trong khi đang di chuyển sang phải
• Right+B: lướt hoặc bắn ra cầu lửa
• Right+A+B: kết hợp hai hành động trên
Mario có ba trạng thái: “small”, “tall”, “fireball” Anh ta có thể lên trạng thái “tall” bằng cách ăn nấm, và lên trạng thái “fireball” khi ăn hoa Anh ấy sẽ biến thành “small” nếu đụng phải đám quái Khi ở trạng thái “tall”, Mario cao gấp đôi so với ở trạng thái “small”, và ở trạng thái “fireball” anh ấy có thể bắn ra lửa.
Trong học tăng cường, môi trường đóng vai trò thiết yếu, là hệ thống nơi agent tương tác để học cách hành động tối ưu thông qua các trạng thái, hành động và phần thưởng Đối với trò chơi Mario, môi trường được hiểu là màn hình game — tất cả những gì người chơi quan sát được qua màn hình máy tính — nơi các trạng thái và phản hồi từ hành động được tạo ra để agent học Việc mô tả môi trường một cách rõ ràng giúp tăng hiệu quả huấn luyện và khả năng tổng quát của mô hình trong các nhiệm vụ liên quan.
Trong môi trường này, Mario di chuyển trên mặt đất và đối mặt với nhiều chướng ngại như hố sâu, đường ống, cây ăn thịt và các quái vật, buộc người chơi phải liên tục né tránh nguy hiểm và nhảy qua các hố để tiến lên Nếu anh rơi xuống hố, Mario sẽ quay về điểm xuất phát và mất toàn bộ phần thưởng đã tích lũy, tăng thêm thách thức cho màn chơi.
- Trong quá trình di chuyển, Mario có thể thu lượm các đồ vật như nấm, hoa và các đồng xu
Hướng giải quyết bài toán
Chúng ta đã xác định môi trường và tác tử của bài toán và bây giờ áp dụng mô hình học tăng cường Đầu tiên cần cung cấp các trạng thái cho tác tử phân tích; từ các quan sát mà tác tử nhận được, máy tính gặp khó khăn trong việc hiểu các hình ảnh Sau khi nhận được phần thưởng và thông tin trạng thái, tác tử sẽ phân tích bằng các thuật toán được tích hợp và đưa ra hành động phù hợp Hành động này tác động lên môi trường và làm biến đổi trạng thái hiện tại của tác tử Tác tử tiếp tục lặp lại chu trình quan sát - phân tích - hành động cho đến khi có tín hiệu dừng.
Xử lý môi trường
Trong trò chơi Mario, mỗi khung hình có 3 kênh màu RGB Giữ nguyên ở chế độ màu khiến dữ liệu đầu vào trở nên rất phức tạp và tiêu tốn tài nguyên Do đó, ta dùng OpenCV để biến đổi các khung hình từ ảnh màu sang ảnh xám đa mức, giúp giảm chiều dữ liệu mà không làm mất mát thông tin của hình ảnh.
- Đồng thời ta cũng phải giảm kích thước của từng frame về còn 84x84
Việc bỏ qua một số khung hình giúp giảm dữ liệu không cần thiết khi xử lý tập dữ liệu, đặc biệt với các chuỗi video hoặc chuỗi thời gian Mỗi tập có thể chứa tới hơn 2000 bước và mỗi bước tương ứng với một khung hình, vì vậy việc lọc bỏ những khung hình không mang thông tin quan trọng sẽ tối ưu hóa dung lượng lưu trữ và thời gian xử lý Bằng cách xác định và giữ lại những khung hình mang nội dung trọng yếu, ta có thể duy trì chất lượng phân tích đồng thời giảm độ phức tạp của pipeline và cải thiện hiệu suất tổng thể.
Trong môi trường phức tạp như Mario, một ảnh duy nhất không thể cung cấp đầy đủ thông tin về hành động và vị trí của các nhân vật Để xác định được hướng di chuyển của Mario cũng như của các con quái, ta cần đầu vào là 4 ảnh cùng một lúc để có thể quan sát được nhiều thông tin hơn so với chỉ một ảnh.
Triển khai các thuật toán
- Đầu tiên ta xây dựng mô hình Deep Learning để phân tích dữ liệu đầu vào
Mạng nơ ron dùng để ước lượng có các lớp sau:
In PyTorch, this model is a CNN defined with nn.Sequential that takes a 4-channel input and processes it through three convolutional layers with ReLU activations: the first conv expands from 4 input channels to a configured output channel count using an 8×8 kernel and a stride of 4, the second conv uses a 4×4 kernel with stride 2 to another channel count, and the third conv uses a 3×3 kernel with stride 1 to further refine features After these convolutions, the feature maps are flattened into a 3136-element vector and passed through two fully connected layers: first from 3136 to 512 with a ReLU, then from 512 to the specified output dimension This compact CNN architecture serves as a feature extractor and classifier within a single sequential container.
Ban đầu, mô hình mạng nơ-ron dùng để tính giá trị đích sẽ sao chép toàn bộ tham số từ mạng online (mạng ước lượng) Cụ thể, tham số của mạng đích được thiết lập bằng cách copy.deepcopy từ tham số của mạng online: self.target = copy.deepcopy(self.online) Việc đồng bộ tham số ở giai đoạn đầu này giúp mạng đích có cùng cấu trúc và trọng số với mạng online, từ đó giúp quá trình cập nhật giá trị đích ổn định hơn và cải thiện hiệu quả huấn luyện trong reinforcement learning.
To avoid unnecessary gradient calculations, the model’s parameters are frozen by disabling gradient tracking for all parameters of the target model, as in for p in self.target.parameters(): p.requires_grad = False This approach prevents gradient computation on the target, reduces memory usage, and speeds up inference, making it ideal for feature extraction or when keeping the target weights fixed during transfer learning.
- Đầu tiên xây dựng class DQN, trong hàm khởi tạo init (), ta tạo và gán giá trị cho các thông số sau:
Action space size is defined as self.action_size = action_size, setting the number of possible actions available to the agent The agent uses a structured experience replay memory implemented as a deque with a maximum length of 50,000 (self.replay_buffer = deque(maxlen=50000)) to store and sample past experiences for stable learning The discount factor is gamma = 0.95, balancing immediate and long-term rewards in value estimation The target network parameters are synchronized with the main network every sync_period = 10000 steps, ensuring periodic updates that contribute to stable training.
+Mạng nơ ron ta đã tạo ở trên: self.network = DDQNSolver(self.action_dim).cuda()
This section explains how experiences are stored and retrieved in a replay buffer for experience replay in reinforcement learning The remember(self, state, next_state, action, reward, done) method records each transition by saving the tuple (state, next_state, action, reward, done) into memory, capturing the agent’s observed dynamics The recall(self) method then samples and returns batches of these stored transitions, providing data for training the agent’s networks with decorrelated experiences to improve learning stability.
- Phương thức quan trọng nhất là optimize_model – dùng để tính toán và cập nhật các tham số của mạng nơ ron: def experience_replay(self, step_reward):
+ Tính tổng phần thưởng đạt được trong một episode: self.current_episode_reward += step_reward
In this reinforcement learning setup, the target network is refreshed at a fixed cadence: after every 10,000 actions, the code checks if current_step is a multiple of sync_period, and if so, it updates the target network's parameters by loading the online network's state_dict into the target network's state_dict, effectively syncing the target to the online network at that interval to stabilize learning.
+ Nếu như dữ liệu bên trong replay buffer chưa đủ thì không thực hiện phương thức này: if self.batch_size > len(self.memory): return
+ Lấy dữ liệu từ bộ nhớ replay buffer để train: state, next_state, action, reward, done = self.recall()
+ Cứ sau 10000 hành động thì lại cập nhật tham số của giá trị đích: q_estimate = self.network(state.cuda(), model="online")[np.arange(0, self.batch_size), action.cuda()]
To select the action with the highest estimated value in a DQN-style setup, compute Q-values for the next_state using the online network and take best_action via torch.argmax, all inside a torch.no_grad() block to prevent gradient tracking Then obtain next_q from the target network for the chosen actions across the batch with next_q = self.network(next_state.cuda(), model='target')[np.arange(0, self.batch_size), best_action] The target value q_target is computed as q_target = (reward.cuda() + (1 - done.cuda().float()) * self.gamma * next_q).float(), which combines the observed reward and the discounted estimated future value for training the online network.
+Tính được td error nhờ vào giá trị đích và giá trị ước lượng có được: td_error = q_estimate - q_target
+ Tính giá trị mất mát : value_loss = td_error.pow(2).mul(0.5).mean()
+ Chuyển toàn bộ gradient bên trong bộ nhớ đệm về bằng 0: self.optimizer.zero_grad()
+ Tính giá trị đạo hàm của hàm mất mát (lan truyền ngược): value_loss.backward()
+ Cập nhật giá trị của các tham số 𝜃: self.optimizer.step()
Để lưu lại giá trị tham số của mạng nơ-ron, ta có thể thêm hai phương thức mới: load_checkpoint(self, path) để tải lại trạng thái từ một checkpoint và save_checkpoint(self, path) để ghi nhận và lưu trữ tham số hiện tại cùng với trạng thái tối ưu vào đường dẫn được chỉ định Việc sử dụng checkpoint giúp bảo toàn tiến trình huấn luyện, khôi phục nhanh chóng khi có sự cố và cho phép tiếp tục huấn luyện từ điểm đã lưu, đồng thời tối ưu hóa quy trình bằng cách chỉ load những tham số cần thiết từ checkpoint Đảm bảo đường dẫn hợp lệ và xử lý lỗi đọc/ghi để duy trì tính nhất quán của tham số mạng nơ-ron.
Với thuật toán Dueling, mô hình mạng nơ-ron được điều chỉnh đáng kể nên cần một kiến trúc mới Ở phiên bản này, giai đoạn cuối của mạng được chia thành hai đầu ra song song: một đầu ra cho giá trị trạng thái V và một đầu ra cho lợi thế của các hành động Cấu trúc CNN được triển khai thông qua lớp self.CNN_layer trong nn.Sequential gồm các lớp Conv2d và ReLU: nn.Conv2d(state_dim[0], 32, kernel_size=(8, 8), stride=4), nn.ReLU(), nn.Conv2d(32, 64, kernel_size=(4, 4), stride=2), nn.ReLU(), nn.Conv2d(64, 64, kernel_size=(3, 3), stride=1), nn.ReLU().
#Build ANN layer self.fc1 = nn.Linear(3136, 512)
# DUELING self.V = nn.Linear(512, 1) self.A = nn.Linear(512, action_dim)
- Ta tính giá trị Q của các hành động ở phương thức forward: def forward(self, state): t = self.CNN_layer(state) t = F.relu(self.fc1(t))
Q = V + A - A.mean(1, keepdim=True).expand_as(A) return Q
Test case của chương trình
3.5.1 Chạy chương trình với các thuật toán khác nhau
- Chúng ta thay đổi thuật toán của các tác tử Chúng dụng cùng một hệ số suy giảm – gamma = 0.9, và chiến thuật epsilon greedy
+ Deep Q-Network (DQN) + Double DQN (DDQN) + Dueling DDQN
- Dưới đây là kết quả sau 500 episode, ta có thể thấy thuật toán DQN lúc đầu có phần thưởng khá cao nhưng lại giảm dần về cuối
DDQN cho thấy sự phát triển ổn định hơn, còn Dueling DDQN được đánh giá cao ở khả năng ước lượng giá trị Tuy nhiên, dù Dueling DDQN cải thiện chất lượng đánh giá, quá trình huấn luyện của nó tốn nhiều thời gian hơn so với DDQN.
3.5.2 Sử dụng các hệ số suy giảm khác nhau
- Chúng ta sẽ thay đổi hệ số suy giảm của các tác tử Các tác tử sử dụng thuật toán DQN, và chiến thuật epsilon greedy
3.5.3 Sử dụng các policy khác nhau
34 ĐÁNH GIÁ VÀ KẾT LUẬN
Học tăng cường là một lĩnh vực mạnh mẽ của trí tuệ nhân tạo, tập trung vào việc máy học từ phản hồi của môi trường để tối ưu hóa hành động của hệ thống DQN và các biến thể của nó chỉ là một hạt cát nhỏ trong kho tàng các thuật toán học tăng cường phong phú và đa dạng, cho thấy tiềm năng và tính sáng tạo của lĩnh vực này.
Chúng dễ dàng để triển khai nhưng hiệu quả sẽ không thể nào bằng các thuật toán ra đời gần đây như PPO, A2C, TRPO Tuy nhiên cũng rất đáng để tìm hiểu nếu muốn nắm được bản chất của các thuật toán cấp cao hơn
Các thuật toán học tăng cường có vẻ đã mô phỏng được cách con người giải quyết các vấn đề, các bài toán thực tế Nhưng để có thể đạt đến trí truệ của loài người thì chúng ta vẫn cần phải sáng tạo và nghiên cứu các thuật toán mạnh mẽ và hiệu quả hơn.