Ảnh chụp bởi Cristian Palmer
Deep Q-Network, được viết tắt là DQN, được phát triển bởi nhóm DeepMind vào năm 2015. Nó có thể giải quyết một loạt các trò chơi Atari bằng cách kết hợp học tăng cường và các mạng nơ-ron học sâu với quy mô lớn. Thuật toán được phát triển bằng cách nâng cao thuật toán học tăng cường (RL) cổ điển, được gọi là Q-Learning, với các mạng nơ-ron học sâu và một kỹ thuật là Experience replay.
Trong trò chơi Seaquest dưới đây, DQN học cách đọc các điểm số, bắn kẻ thù và giải cứu thợ lặn từ những hình ảnh ở dạng thô, tất cả đều được học bởi chính nó. Nó cũng tìm ra được những kiến thức mà chúng ta gọi là chiến lược, chẳng hạn như thời điểm nào nên đưa tàu ngầm ngoi lên mặt nước để lấy thêm oxy.
Phương pháp Q-learning
Q-learning sẽ học hàm giá trị của hành động Q(s, a): thực hiện đánh giá mức độ hiệu quả để thực hiện một hành động trong một trạng thái cụ thể. Ví dụ, đối với vị trí trên bàn cờ dưới đây, mức độ hiệu quả sẽ ra sao nếu di chuyển con tốt tiến về phía trước hai bước. Chúng ta sẽ gán một giá trị vô hướng dựa trên lợi ích của việc thực hiện một bước đi. Q được gọi là hàm giá trị của hành động hay hàm giá trị Q.
Trong phương pháp Q-learning, chúng ta xây dựng một bảng bộ nhớ Q[s, a] để lưu trữ các giá trị Q cho tất cả các kết hợp có thể có giữa s và a. Và đó sẽ là một bảng gian lận mà chứa các bước đi tốt nhất. Trong ví dụ trên, chúng ta có thể nhận ra rằng việc di chuyển con tốt tiến lên 2 bước sẽ có giá trị Q cao nhất so với các bước đi khác.
Về mặt kỹ thuât mà nói, chúng ta sẽ lấy mẫu một hành động từ trạng thái hiện tại. Chúng ta sẽ tìm ra phần thưởng R (nếu có) và trạng thái mới s ’(vị trí mới). Từ bảng bộ nhớ, chúng ta sẽ xác định thực hiện hành động tiếp theo a’ mà có giá trị Q (s’, a ’) là cao nhất.
Trong trò chơi điện tử, chúng ta ghi điểm (tức là có được phần thưởng) bằng cách bắn các quân địch. Trong trò chơi cờ vua, phần thưởng sẽ là giá trị +1 khi chúng ta thắng hoặc -1 nếu chúng ta thua. Vì vậy, chỉ có một phần thưởng được nhận và sẽ phải mất một khoảng thời gian để có được.
Chú ý: Q-learning chính là việc tạo ra bảng gian lận Q chứa sẵn các bước đi có phần thưởng tốt nhất.
Chúng ta có thể thực hiện một bước đi a và xem phần thưởng R có thể nhận được là bao nhiêu. Điều này tạo ra phương pháp dự đoán trước một bước, tên tiếng anh là One-step look ahead. R + Q (s ’, a’) sẽ là điểm mục tiêu. Ví dụ, giả sử tất cả các giá trị Q hiện tại bằng 1. Nếu chúng ta di chuyển cần điều khiển sang phải và ghi được 2 điểm, chúng ta sẽ muốn dịch chuyển Q(s, a) gần bằng giá trị 3.
Nếu chúng ta tiếp tục chơi, chúng ta sẽ tiếp tục tính toán các giá trị trung bình cho Q. Các giá trị sẽ dần được cải thiện hơn và cùng với một số thủ thuật, các giá trị Q sẽ đạt tới điểm hội tụ hay điểm tối ưu.
Thuật toán Q-learning
Sau đây là thuật toán để tối ưu Q với các phần thưởng đã được lấy mẫu. Nếu γ, hệ số khấu hao, nhỏ hơn 1, thì xác suất để Q hội tụ hay đạt tới điểm tối ưu là rất cao.
Giải thuật:
- Bắt đầu với
cho tất cả
- Khởi tạo trạng thái ban đầu
- Thực hiện vòng lặp k = 1,2,… cho tới điểm hội tụ
- Lấy mẫu hành động
, đạt tới trạng thái tiếp theo
- Trường hợp 1: Nếu trạng thái
kết thúc:
- Lấy mẫu cho trạng thái mới
- Trường hợp 2:
- Lấy mẫu hành động
Tuy nhiên, nếu sự kết hợp giữa các trạng thái và các hành động quá lớn, yêu cầu về bộ nhớ và việc tính toán cho Q sẽ rất lớn. Để giải quyết vấn đề đó, chúng ta sẽ chuyển sang mạng học sâu Q, tiếng anh là Q deep network và viết tắt là DQN để tính toán xấp xỉ giá trị Q (s, a). Thuật toán này được gọi là Deep Q-learning. Với cách tiếp cận mới, chúng ta sẽ tổng quát hóa phép tính xấp xỉ của hàm giá trị Q thay vì phải ghi lại và lưu trữ lại các giải pháp.
Thách thức nào mà Học tăng cường (RL) phải đối mặt so với Học sâu (DL)?
Trong phương pháp học có giám sát hay Supervised learning, chúng ta muốn đầu vào có tính độc lập và được phân phối giống nhau, tức là:
- Các mẫu được lấy ngẫu nhiên trong các tập hợp mẫu và do đó mỗi tập hợp sẽ có sự phân phối dữ liệu là giống nhau.
- Các mẫu độc lập với nhau trong cùng một tập hợp.
Nếu không, mô hình có thể sẽ quá khớp hay còn gọi là Overfitting cho một số lớp (hoặc các nhóm) mẫu tại các thời điểm khác nhau và do đó, giải pháp cho bài toán sẽ không được tổng quát hóa.
Ngoài ra, đối với cùng một đầu vào, các nhãn của nó sẽ không thay đổi theo thời gian. Các điều kiện ổn định cho đầu vào và đầu ra theo hướng này sẽ tạo các điều kiện cho việc học có giám sát hay Supervised learning có thể được thực hiện tốt.
Chú ý: Trong học tăng cường, cả đầu vào và mục tiêu sẽ đều thay đổi liên tục trong suốt quá trình đào tạo và điều này khiến cho việc đào tạo trở nên không ổn định.
Mục tiêu không ổn định: Chúng ta sẽ xây dựng một mạng học sâu để học các giá trị của Q nhưng các giá trị mục tiêu của nó sẽ thay đổi khi chúng ta học nhiều hơn. Như hình dưới đây, các giá trị mục tiêu cho Q phụ thuộc vào chính Q, do đó, chúng ta đang đuổi theo một mục tiêu bất định.
Độc lập và phân phối giống nhau, viết tắt là i.i.d: Có một vấn đề khác liên quan đến các mối tương quan trong một đường quỹ đạo. Trong vòng lặp quá trình đào tạo, chúng ta sẽ cập nhật các tham số của mô hình để dịch chuyển Q (s, a) gần bằng nhãn của nó. Những cập nhật này sẽ ảnh hưởng đến các phép tính toán khác. Khi chúng ta kéo các giá trị Q lên trong mạng học sâu, các giá trị Q ở các trạng thái xung quanh cũng sẽ được kéo lên.
Giả sử chúng ta chỉ nhận được một phần thưởng và điều chỉnh Q-network để phản ánh lại điều đó. Tiếp theo, chúng ta thực hiện một bước đi khác. Trạng thái mới sẽ giống y như trạng thái cuối cùng, nếu chúng ta sử dụng hình ảnh thô để biểu thị các trạng thái. Q (s ’, a’) mới thu được sẽ cao hơn và mục tiêu mới cho giá trị Q cũng sẽ cao hơn bất kể phần thưởng của hành động mới là gì. Nếu chúng ta cập nhật Q-network bằng một chuỗi các hành động trong cùng một đường quỹ đạo, nó sẽ làm tăng vượt quá kết quả so với ý định của chúng ta. Điều này sẽ gây mất tính ổn định của quá trình học.
Thách thức cơ bản trong quá trình đào tạo của học tăng cường là gì? Trong RL, chúng ta thường phụ thuộc vào chiến thuật hoặc các hàm giá trị để lấy mẫu các hành động. Tuy nhiên, việc này sẽ thường xuyên thay đổi vì chúng ta sẽ càng ngày càng biết rõ hơn thứ để thăm dò. Khi chơi trò chơi, chúng ta sẽ biết rõ hơn về kết quả đầu ra thực sự của các trạng thái và hành động. Vì vậy, đầu ra mục tiêu của chúng ta cũng sẽ thay đổi. Bây giờ, chúng ta sẽ cố học sơ đồ f cho các đầu vào và đầu ra có tính chất thay đổi liên tục.
May mắn thay, cả đầu vào và đầu ra đều có thể giao nhau. Vì vậy, nếu chúng ta làm chậm những sự thay đổi của cả đầu vào và đầu ra vừa đủ, chúng ta có mô hình hóa f trong khi vẫn để nó tiếp tục cải tiến.
Các giải pháp
Experience replay: Ví dụ: chúng ta đặt một triệu phép biến đổi cuối cùng vào một bộ đệm và lấy ra một tập hợp nhỏ các mẫu có kích thước là 32 từ bộ đệm này để đào tạo mạng học sâu. Điều này tạo ra một tập dữ liệu đầu vào vừa đủ mức ổn định để đào tạo. Khi chúng ta lấy mẫu ngẫu nhiên từ bộ đệm phát lại, dữ liệu sẽ độc lập với nhau hơn và sẽ đảm bảo tính độc lập và phân phối như nhau.
Target network: Chúng ta sẽ tạo ra hai mạng học sâu θ- và θ. Chúng ta sử dụng mạng đầu tiên để lấy ra các giá trị Q trong khi mạng thứ hai chứa tất cả các cập nhật trong quá trình đào tạo. Sau 100.000 lần cập nhật, chúng ta sẽ đồng bộ hóa θ- với θ. Mục đích là để giữ nguyên cố định các giá trị Q mục tiêu tạm thời, do đó chúng ta sẽ không có mục tiêu thay đổi nào để đi theo cả. Ngoài ra, các thay đổi tham số sẽ không ảnh hưởng θ- ngay lập tức và do đó, ngay cả đầu vào có thể không phải là 100% độc lập và phân phối giống nhau, nó sẽ không làm sai lệch các kết quả như đã đề cập trước đó.
Trong đó, là biểu thức của mục tiêu
Với hai phương pháp là Experience replay và Target network, chúng ta sẽ có đầu vào và đầu ra ổn định hơn để đào tạo cho mạng và hoạt động giống như việc đào tạo có giám sát.
Experience replay có hiệu suất được cải thiện cao nhất trong DQN. Sử dụng Target network là kỹ thuật đem lại hiệu quả đáng kể nhưng không tốt bằng Experience replay. Nhưng Target network sẽ trở nên ưu tiên hơn khi dung lượng của mạng nhỏ.
Deep Q-learning với Experience replay:
Giải thuật như sau:
trong đó ϕ tiền xử lý 4 frame cuối cùng để biểu diễn trạng thái. Để ghi lại hoạt động, chúng ta sẽ sử dụng bốn frame để biểu thị một trạng thái.
Chi tiết về cách thực hiện
Hàm mất mát
Hãy xem qua một số các chi tiết về cách thực hiện để cải thiện hiệu suất. DQN sử dụng giá trị mất mát Huber (đường cong màu xanh lá cây), trong đó giá trị mất mát là hàm bậc hai đối với các giá trị nhỏ a và là hàm tuyến tính đối với các giá trị lớn.
Giá trị mất mát Huber cho phép những thay đổi ít nghiêm trọng hơn hoặc không đáng kể, vì những thay đổi như vậy sẽ làm tổn hại tới quá trình học tăng cường.
Tối ưu hóa
Quá trình đào tạo RL dễ được tác động bởi các phương pháp tối ưu hóa. Nhiều quá trình đào tạo RL sử dụng trình tối ưu hóa RMSProp hoặc Adam. DQN được đào tạo sử dụng phương pháp RMSProp. Sử dụng phương pháp tối ưu hóa cải tiến trong phương pháp Policy Gradient cũng đang được nghiên cứu rất nhiều.
Giải thuật ϵ-greedy
DQN sử dụng giải thuật ϵ-greedy để tiến hành chọn hành động đầu tiên.
Phương pháp Q-learning. Nguồn
Để cải thiện quá trình đào tạo, ϵ sẽ bắt đầu từ 1 và giảm đến 0,1 hoặc 0,05 trải qua một triệu frame đầu tiên bằng cách sử dụng chiến thuật sau:
Trong đó m là số hành động có thể thực hiện được. Ở giai đoạn đầu của quá trình đào tạo, chúng ta cùng chọn các hành động có thể thực hiện nhưng khi quá trình đào tạo diễn ra, chúng ta sẽ chọn hành động tối ưu a* thường xuyên hơn. Điều này cho phép việc thăm dò tối đa lúc ban đầu, và cuối cùng chuyển sang việc khai thác.
Nhưng ngay cả trong quá trình thử nghiệm, chúng ta có thể duy trì ϵ đến một giá trị nhỏ bằng 0,05. Một chiến thuật tất định có thể sẽ dừng lại tại một điểm tối ưu cục bộ (tức là chưa đạt tới điểm tối ưu nhất thì dừng lại). Một chiến thuật không tất định sẽ giúp cho đạt được mức tối ưu tốt hơn.
Kiến trúc của DQN
Sau đây là cấu trúc của Deep Q-Network. Chúng ta lấy 4 frame ở phần trước và đưa chúng vào các lớp tích chập, tiếp theo là các lớp được kết nối toàn diện (fully connected layers) để tính toán giá trị Q cho mỗi hành động.
Trong ví dụ dưới đây, nếu chúng ta không di chuyển cái mái chèo lên ở frame 3, chúng ta sẽ bỏ lỡ mất quả bóng. Đúng như kỳ vọng, giá trị Q khi di chuyển mái chèo lên sẽ cao hơn nhiều so với các hành động khác.
Các phương pháp cải tiến cho Deep Q-Network
Nhiều phương pháp cải tiến được thực hiện cho Deep Q-Network. Trong phần này, chúng ta sẽ trình bày một số phương pháp sẽ chứng minh những cải tiến đáng kể.
1. Double Deep Q-Network
Trong Q-learning, chúng ta sử dụng công thức sau đây cho giá trị mục tiêu của Q.
Tuy nhiên, phép toán max tạo ra độ chênh lệch dương đối với các phép tính Q. Các phép tính Q như sau:
Từ ví dụ trên, chúng ta sẽ thấy giá trị tối đa Q (s, a) cao hơn giá trị hội tụ 1,0. tức là phép toán max tính toán vượt quá giá trị Q. Theo lý thuyết và thực nghiệm, hiệu suất DQN sẽ cải thiện nếu chúng ta sử dụng mạng trực tuyến θ để thực hiện việc chọn các hành động và mạng mục tiêu θ- để tính toán giá trị Q.
2. Prioritized Experience Replay
Deep Q-Network lấy mẫu đồng đều các phép biến đổi từ bộ đệm phát lại. Tuy nhiên, chúng ta nên ít quan tâm đến các mẫu đã vốn dĩ gần bằng với giá trị mục tiêu. Chúng ta nên lấy mẫu các phép biến đổi có khoảng cách xa hơn với giá trị mục tiêu:
Do đó, chúng ta có thể chọn các phép biến đổi từ bộ đệm đảm bảo điều kiện sau:
- Dựa trên giá trị sai số ở bên trên (lựa chọn các phép biến đổi có sai số cao thường xuyên hơn).
- Xếp hạng các phép biến đổi theo các giá trị sai số và chọn chúng dựa theo thứ hạng (chọn cái có thứ hạng cao hơn và thường xuyên).
Thao khảo thêm tại: Prioritized Experience Replay paper.
3. Dueling Deep Q-Network
Trong Dueling Deep Q-Network, Q được tính theo một công thức khác như bên dưới cùng với hàm giá trị V và hàm lợi ích của hành động phụ thuộc trạng thái A trong công thức bên dưới:
Thay vì học Q, chúng ta sẽ tính V và A. Các thí nghiệm cho thấy hiệu suất được cải thiện. Deep Q-Network cập nhật hàm giá trị Q của một trạng thái chỉ cho một hành động cụ thể. Dueling Deep Q-Network cập nhật giá trị V, các cập nhật Q (s, a ’) khác cũng có thể tận dùng điều này. Vì vậy, mỗi quá trình lặp lại đào tạo Dueling Deep Q-Network được cho là sẽ có kết quả lớn hơn.
4. Noisy Nets sử dụng trong việc thăm dò
Deep Q-Network sử dụng ϵ-Greedy để thực hiện chọn các hành động. Thay vào đó, NoisyNet sẽ thay thế nó bằng cách thêm các giá trị nhiễu chứa tham số vào lớp tuyến tính để hỗ trợ việc thăm dò. Trong NoisyNet, ε-greedy sẽ không được sử dụng. Nó sử dụng một phương pháp tham lam để chọn các hành động từ hàm giá trị Q. Nhưng đối với các lớp được liên kết toàn diện (fully connected layers) của bộ tính toán Q, chúng ta sẽ thêm các giá trị nhiễu chứa tham số có thể đào tạo được như bên dưới để thực hiện thăm dò các hành động. Thêm giá trị nhiễu vào mạng học sâu thường bằng hoặc tốt hơn việc thêm giá trị nhiễu vào một hành động giống như trong phương pháp ϵ-greedy. Phương pháp như sau.
Giả sử một lớp tuyến tính của một mạng rơ-ron với đầu vào p và đầu ra q, được biểu diễn bởi hàm:
trong đó x \in \mathbb{R} ^{p} là đầu vào, w \in \mathbb{R}^{qxp} là ma trận trọng số, và b \in \mathbb{R}^{q} là độ chênh lệch, lớp tuyến tính có chứa nhiễu được định nghĩa như sau:
Các tham số có thể học được, trong khi đó
và
là các biến ngẫu nhiên chứa giá trị nhiễu
Kết luận: DQN là một lớp quan trọng của RL, cụ thể là phương pháp học giá trị. Trong thực tế, chúng ta thường kết hợp Policy gradient với phương pháp học giá trị trong việc giải quyết các vấn đề thực tiễn.
Đến đây là kết thúc của bài này, mọi người có thể xem các phần tiếp theo của series về Học tăng cường trong tek4 nhé.
P/s: Mong mọi người luôn ủng hộ tek4 nhé!
« Trước | Mục lục | Sau » |