Giới thiệu
Trong những năm gần đây, chúng ta đã có sự phát triển đáng kể trong lĩnh vực Học sâu (Deep Learning). Các mô hình này đã giúp chúng ta thực hiện được những nhiệm vụ mà trước đây có vẻ như là không thể. Tuy nhiên, theo quan điểm của tôi, thế giới công nghệ dường như đã sắp sửa tiếp cận mức giới hạn ở lĩnh vực này. Thay vào đó, sự quan tâm của cộng đồng công nghệ dần chuyển sang Học tăng cường (Reinforcement Learning – RL). Vì vậy, trong bài viết này, chúng ta hãy cùng tìm hiểu về RL và đặc biệt là mô hình Q-Learning. Hãy bắt đầu thôi nào!
Học tăng cường (Reinforcement Learning)
Trong RL, máy học cách thực hiện nhiệm vụ thông qua việc tương tác với môi trường bằng cách thực hiện các hành động và dựa trên phần thưởng nhận được từ mỗi hành động để đưa ra lựa chọn tối ưu. Cách hoạt động của thuật toán này tương tự như cách con người học, thông qua việc thử nghiệm và sai lầm.
Bạn đang xem: Reinforcement Learning: Q-Learning
Dưới đây là một sơ đồ miêu tả cách hoạt động của RL. Trước khi đi vào giải thích chi tiết hơn, hãy cùng tìm hiểu vài thuật ngữ được sử dụng ở đây:
- Environment (Môi trường): không gian mà máy tương tác với
- Agent (Máy): chủ thể thực hiện tương tác với môi trường thông qua hành động
- Policy (Chiến thuật): chiến thuật mà máy sử dụng để đưa ra hành động
- State (Trạng thái): mô tả trạng thái hiện tại của máy
- Reward (Phần thưởng): phần thưởng từ môi trường tương ứng với hành động thực hiện
- Action (Hành động): những hành động máy có thể thực hiện
Chúng ta bắt đầu từ trạng thái S(t), tại trạng thái này, agent dựa trên policy đã được thiết kế sẵn để đưa ra hành động A(t) trong môi trường. Sau khi quan sát hành động, môi trường chuyển đổi sang trạng thái tiếp theo S(t+1) đối với agent và đồng thời, dựa trên hành động đã thực hiện, môi trường trả về phần thưởng R(t) tương ứng. Agent sẽ lặp lại quá trình này cho đến khi tìm được chuỗi hành động tối đa hóa phần thưởng nhận được.
Giả sử chúng ta có một trò chơi đơn giản như trong hình ảnh ở trên, với mục tiêu là lấy được viên kim cương. Agent bắt đầu từ ô s9. Một giải pháp đơn giản là agent di chuyển lần lượt qua các ô s5-s1-s2-s3 để đến được viên kim cương với quãng đường là ngắn nhất. Tuy nhiên, nếu agent được đặt tại vị trí s1, agent sẽ có 2 hướng đi với cùng giá trị. Làm thế nào để đảm bảo agent thực hiện đúng các hành động tối ưu mà chúng ta muốn? Đó là tạo một bộ nhớ cho agent, sử dụng Công thức Bellman. Dưới đây là công thức:
V(s) = max{a}(R(s, a) + γV(s’))
Trong đó:
- s: Trạng thái cụ thể
- a: Hành động do agent thực hiện
- s’: Trạng thái trước đó
- γgammaγ: Hệ số giảm (chúng ta sẽ tìm hiểu bên dưới)
- R(s, a): Hàm phần thưởng với biến trạng thái s và hành động a và trả lại kết quả là giá trị phần thưởng
- V(s): Giá trị tại một trạng thái cụ thể
Sau khi áp dụng Công thức Bellman, ta có giá trị của các trạng thái thay đổi như hình dưới đây. Chi tiết các bước tính toán xem tại đây.
Việc sử dụng hàm max(maximum) giúp agent tìm ra chuỗi hành động tối ưu, trong đó hệ số giảm γgammaγ thông báo cho agent khoảng cách còn lại đến mục tiêu càng xa. Tuy nhiên, trong nhiều trường hợp khi đối diện với nhiều lựa chọn, Công thức Bellman vẫn có sai sót nhỏ dẫn đến sự rối loạn của agent. Vấn đề là quá trình đưa ra quyết định là ngẫu nhiên và trong một khoảng thời gian xác định. Agent tuân theo các chiến lược đã đặt ra trong một khoảng thời gian nhất định, nhưng cũng tự do thực hiện các hành động ngẫu nhiên. Tuy nhiên, ta có thể đưa thêm khái niệm này vào Công thức Bellman với một số thay đổi:
V(s) = max{a}(R(s, a) + γ∑s’P(s, a, s’)V(s’))
- P(s, a, s’): xác suất chuyển từ trạng thái s sang s’ với hành động a
Quá trình này được gọi là quá trình Quyết định Markov (Markov’s Decision Process – MDP).
Trên đây là một tóm tắt về những kiến thức chúng ta cần hiểu trước khi chuyển sang phần tiếp theo: Q-Learning
Q-Learning
Mô hình Q-Learning tương tự với quá trình đã được đề cập ở trên. Tuy nhiên, thay vì dựa trên giá trị của các trạng thái V(s) để đưa ra quyết định về hành động, Q-Learning tập trung vào việc đánh giá chất lượng của một hành động Q(s, a). Vậy làm sao chúng ta có thể đánh giá được các hành động này? Từ công thức ở trên, chúng ta có:
Q(s, a) = R(s, a) + γ∑s’P(s, a, s’)V(s’)
Xem thêm : Vegetable Glycerin là chất gì? Có công dụng gì trong mỹ phẩm?
Trong công thức này, chúng ta quan tâm đến tất cả các trạng thái và tất cả các hành động khả thi. Khi loại bỏ hàm max(maximum), chúng ta có công thức R(s, a) + γ∑s’P(s, a, s’)V(s’) và hãy coi đó như là giá trị của một trạng thái được tạo ra bởi một hành động khả thi duy nhất. Chúng ta sẽ sử dụng phương trình này để đánh giá hành động Q(s, a) như sau:
Q(s, a) = R(s, a) + γ∑s’P(s, a, s’) max{a’} Q(s’, a’)
Sự thay thế của V(s) bằng max{a}Q(s,a) bởi chúng ta coi giá trị của một trạng thái là giá trị lớn nhất có thể của Q(s, a). Giá trị tính toán từ phương trình này được gọi là các giá trị Q (Q-values) và agent sẽ học cách tự tính toán các giá trị Q và đưa ra hành động dựa trên các giá trị này. Bằng cách hiểu cách agent đưa ra lựa chọn dựa trên các giá trị Q, chúng ta đã hiểu cách agent tự tính toán các giá trị Q.
Sự khác biệt thời gian (Temporal Difference – TD)
Chúng ta biết rằng môi trường không phải là không đổi và sẽ thay đổi theo thời gian. Vậy làm thế nào để chúng ta có thể nắm bắt được những thay đổi này của môi trường? Điều này đơn giản, chúng ta chỉ cần tính lại giá trị Q mới sử dụng công thức đã xây dựng ở trên, sau đó trừ đi giá trị Q đã biết.
TD(a, s) = R(s, a) + γ∑s’P(s, a, s’) max{a’} Q(s’, a’) – Q(s, a)
Phương trình trên cho thấy sự thay đổi tạm thời của môi trường dựa trên giá trị Q. Do đó, chúng ta cần cập nhật giá trị Q mới sử dụng công thức này:
Qt(s, a) = Qt-1(s, a) + αTDt(s, a)
Trong đó:
- α (tốc độ học): tốc độ mà agent thích nghi nhanh với sự thay đổi của môi trường
- Qt(s, a): là giá trị Q hiện tại
- Qt-1(s, a): là giá trị Q trước đó
Đến đây chúng ta đã có đủ kiến thức để xây dựng một mô hình Q-Learning cho riêng mình. Cảm ơn bạn đã đọc và hẹn gặp lại ở các bài viết tiếp theo!