1. Trang chủ
  2. » Luận Văn - Báo Cáo

Báo cáo đề tài reinforcement learning nhóm 8

35 4 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

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.

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN & TRUYỀN THÔNG -  - ĐỒ ÁN MƠN HỌC TRÍ TUỆ NHÂN TẠO Đề tài: Tìm hiểu học tăn cường áp dụng vào game Mario Giảng viên: Đỗ Tiến Dũng Nhóm sinh viên thực hiện: STT Họ tên Bùi Văn Huy Hoàng Hữu Phúc Nguyễn Minh Đức Nguyễn Mạnh Long MSSV 20198231 20194818 20198218 20187254 Hà Nội, năm 2021 MỤC LỤC CHƯƠNG 1: HỌC TĂNG CƯỜNG VÀ BÀI TOÁN QUYẾT ĐỊNH MARKOV 1.1 Khái quát Học Tăng Cường 1.2 Bài Toán Markov 1.2.1 Hàm phản hồi 1.2.3 Hàm Giá Trị 1.3 Phân Loại Thuật Toán Học Tăng Cường 1.3.1 Học dựa chiến lược (Policy-based) 1.3.2 Học dựa giá trị (Value-based) 10 1.3.3 Thuật tốn dựa mơ hình 10 1.4.4 Các phương pháp kết hợp 11 1.3.5 On-Policy Off-policy 11 CHƯƠNG 2: CÁC THUẬT TOÁN HỌC TĂNG CƯỜNG 13 2.1 Quy Hoạch Động công thức Bellman 13 2.2 Kỹ thuật Monte Carlo 15 2.3 Kỹ thuật TD learning (Temporal Difference Learning) 17 2.4 Q-learning 18 2.4 Deep Q-Network 18 2.6 Dueling DQN 22 CHƯƠNG 3: ÁP DỤNG HỌC TĂNG CƯỜNG VÀO GAME MARIO 25 3.1 Bài toán cần xử lý 25 3.2 Môi Trường Dữ Liệu 25 3.3 Hướng giải toán 26 3.4 Xử lý môi trường 27 3.5 Triển khai thuật toán 27 3.5.1 Định nghĩa lớp DQN: 27 3.5.2 Dueling DDQN 31 3.6 Test case chương trình 31 3.5.2 Sử dụng hệ số suy giảm khác 32 3.5.3 Sử dụng policy khác 33 ĐÁNH GIÁ VÀ KẾT LUẬN 34 CHƯƠNG 1: HỌC TĂNG CƯỜNG VÀ BÀI TOÁN QUYẾT ĐỊNH MARKOV 1.1 Khái quát Học Tăng Cường - Reinforcement Learning hay Học Tăng Cường phương pháp học máy sử dụng phổ biến để giải toán định Đây toán xuất nhiều thực tế như: chơi thể thảo, lái xe, điều khiển robot, chơi trò chơi điện tự… Đây công việc mà người máy móc thực - Các tốn liên quan đến học Tăng Cường thể hai thành phần sau đây: • Tác tử (Agent): định nghĩa sau: “anything that can be viewed as perceiving its environment through sensors and acting upon that environment through actuators” Ngắn gọn thứ quan sát mơi trường tác động lên thơng qua cảm biến truyền chuyển động • Mơi trường (Environment): Khơng gian xung quanh agent, nơi mà agent tồn tương tác - Hai thành phần tác động lên thông qua sơ đồ sau: • Mơi trường sinh thông tin mô tả trạng thái tác tử Tác tử tương tác với môi trường cách quan sát trạng thái sử dụng thơng tin để đưa hành động thích hợp • Mơi trường tiếp thu hành động biến đổi theo Và lại trả trạng thái với phần thưởng cho tác tử • Và vịng lặp tiếp tục đến toán giải tác tử khơng có khả thực hành động hay bước vào trạng thái chết (Terminate State) - Các agent sử dụng hàm policy (chiến lược) để lựa chọn hành động dựa không gian hành động thiết lập từ trước Thường tập hành động hữu hạn hay rời rạc Policy giống ánh xạ từ tập trạng thái đến tập hành động: Chiến lược: Trạng thái → Hành động, hay 𝝅: 𝒔 → 𝒂 + Với 𝝅 ký hiệu policy, s ký hiệu trạng thái, a ký hiệu hành động - Các tốn học tăng cường thường có hàm mục tiêu hay objective – tổng phần thưởng đạt agent Và agent phải tối ưu cách chọn hành động tốt Để đưa lựa chọn phù hợp tác tử cần phải học thông qua việc thử thất bại (trial and error) => Một hệ thống học tăng cường vòng lặp điểu khiển phản hồi, tác tử môi trường tương tác trao đổi thơng tin hay tín hiệu (signals) - Các tín hiệu trao đổi (trạng thái, hành động, phần thưởng) Biểu diễn dạng toán học (s, a, r) với ký hiệu tương ứng Chúng gọi trải nghiệm - Vịng lặp lặp đến vô tận dừng lại tác tử gặp phải trạng thái chết thời gian cho phép định trước T Và tác tử cho hoàn thành episode - Trajectory tập hợp tất trải nghiệm tác tử tiếp nhận trình thực episode Nó ký hiệu là:  = (𝒔𝟎, 𝒂𝟎 , 𝒓𝟎 ), (𝒔𝟏, 𝒂𝟏 , 𝒓𝟏 ), … + Ví dụ toán học tang cường: 1.2 Bài Tốn Markov - Mơi trường biến đổi từ trạng thái sang trạng thái thông qua hàm chuyển tiếp Trong học tăng cường, hàm chuyển tiếp biểu diễn thơng qua tốn định Markov – kiến trúc tốn học mơ tả tốn đưa định - Ta biểu diễn sau: 𝑠𝑡+1 ~ 𝑃(𝑠𝑡+1 |(𝑠0 , 𝑎0 ), (𝑠1 , 𝑎1 ), … , (𝑠𝑡 , 𝑎𝑡 )) (1.4) - Cơng thức hiểu xác xuất để môi trường chuyển từ trạng thái 𝑠𝑡 𝑠𝑎𝑛𝑔 𝑠𝑡+1 phụ thuộc vào toàn trạng thái s hành động a xảy episode Tuy nhiên việc phụ thuộc vào nhiều trạng thái hành động làm cho policy (chiến lược) tốn trở nên phức tạp khó tính toán - Để giúp toán dễ dàng cho việc tính tốn, ta giả sử việc biến đổi sang trạng thái 𝑠𝑡+1 phụ thuộc vào trạng thái hành động trước 𝑠𝑡 𝑣à 𝑎𝑡 Đây biết tính chất Markov: 𝑠𝑡+1 ~ 𝑃(𝑠𝑡+1 |𝑠𝑡 , 𝑎𝑡 ) => Công thức đơn giản lại đủ mạnh để giải toán học tăng cường thực tế - Một toán định Markov hay MDP (Markov Decision Process) định nghĩa với thành phần sau: • • • • Một tập trạng thái 𝑆 Một tập hàng động 𝐴 Hàm chuyển đổi trạng thái 𝑃(𝑠𝑡+1 |𝑠𝑡 , 𝑎𝑡 ) Hàm phần thưởng 𝑅(𝑠𝑡 , 𝑎𝑡 , 𝑠𝑡+1 ) - Tuy nhiên agent lại sử dụng hàm chuyển đổi 𝑃(𝑠𝑡+1 |𝑠𝑡 , 𝑎𝑡 ) hàm phần thưởng 𝑅(𝑠𝑡 , 𝑎𝑡 , 𝑠𝑡+1 ) Chỉ có cách để agent nhận thông tin hàm thông qua cá trạng thái, hành động phần thưởng mà chúng trải nghiệm môi trường 1.2.1 Hàm phản hồi - Mục đích tác tử tối đa hóa phần thưởng tích luỹ tương lai Đầu tiên, ta có định nghĩa hàm phản hồi 𝑅(𝜏) sử dụng trajectory từ episode,  = (𝒔𝟎, 𝒂𝟎 , 𝒓𝟎 ), (𝒔𝟏, 𝒂𝟏 , 𝒓𝟏 ), … , (𝒔𝑻 , 𝒂𝑻 , 𝒓𝑻 ): 𝑅( ) = 𝑟0 + 𝛾𝑟1 + 𝛾 𝑟2 + ⋯ + 𝛾 𝑇 𝑟𝑇 = ∑𝑇𝑡=0 𝛾 𝑡 𝑟𝑡 - Thông số 𝛾 gọi discount factor hay hệ số suy giảm, 𝛾 ∈ [0,1] Hệ số cho phép xác định mức độ ảnh hưởng bước chuyển trạng thái giá trị phản hồi thời điểm xét Nếu 𝛾 = 0, tác tử xem xét mục tiêu gần nhất, giá trị 𝛾 gần tới tác tử quan tâm đến mục tiêu xa tương lai 𝑇 + 𝛾 = 0, 𝑅()𝛾=0 = ∑ 𝛾 𝑡 𝑟𝑡 = 𝑟0 𝑡=0 𝑇 𝑇 + 𝛾 = 1, 𝑅()𝛾=1 = ∑ 𝛾 𝑡 𝑟𝑡 = ∑ 𝑟𝑡 𝑡=0 𝑡=0 - Từ hàm phản hồi trên, ta định nghĩa hàm mục tiêu kỳ vọng giá trị phản hồi nhiều trajectory khác nhau: 𝑇 𝐽(𝜏) = 𝐸𝜏 ~𝜋 [𝑅(𝜏)] = 𝐸𝜏 [∑ 𝛾 𝑡 𝑟𝑡 ] 𝑡=0 + 𝜏 ∼ 𝜋 có nghĩa trajectory lấy mẫu từ policy Hay nói cách khác, chiến lược tác tử sử dụng tạo nhiều trajectory Ta dùng ký hiệu để lấy hành động từ trạng thái dựa vào policy định đó: 𝑎 ∼ 𝜋(𝑠) 1.2.3 Hàm Giá Trị - Học tăng cường sử dụng hàm giá trị để cung cấp thông tin mục tiêu Chúng giúp tác tử xác định mức độ thích hợp trạng thái hành động phản hồi mong đợi tương lai Có hàm giá trị 𝑇 𝑉 𝜋 (𝑠) = 𝐸𝑠0=𝑠 ,𝜏∼𝜋 [∑ 𝛾 𝑡 𝑟𝑡 ] 𝑡=0 - Viết ngắn gọn hơn: 𝑉 𝜋 (𝑠) = 𝐸𝜏∼𝜋 [𝑅(𝜏)|𝑠0 = 𝑠] 𝑄𝜋 (𝑠, 𝑎) = 𝐸𝜏∼𝜋 [𝑅(𝜏)|𝑠0 = 𝑠, 𝑎0 = 𝑎] - Hàm 𝑉 𝜋 xác định xem trạng thái tốt hay xấu Hàm phản hồi 𝑅(𝜏) = ∑𝑇𝑡=0 𝛾 𝑡 𝑟𝑡 tính tốn từ trạng thái s đến kết thúc episode - Hàm 𝑄𝜋 xác định xem cặp trạng thái-hành động tốt hay xấu Nó tính toán giá trị phản hồi kỳ vọng lựa chọn hành động a trạng thái s mà tác tử tiếp tục hành động theo chiến lược 𝜋 Từ đưa kết luận xem có nên sử dụng hành động a trạng thái hay theo chiến lược đề 1.3 Phân Loại Thuật Toán Học Tăng Cường Các thuật toán học tăng cường chia làm nhóm chính: học dựa chiến lược (policy-based), học dựa giá trị (value-based) học dựa mơ hình (model-based) Các tác tử kết hợp phương pháp học để tạo phương pháp mà dựa chiến lược giá trị mơ hình giá trị 1.3.1 Học dựa chiến lược (Policy-based) - Thuật toán thuộc loại học chiến lược Các chiến lược tốt nên sinh hành động giúp tối ưu hàm mục tiêu tác tử 𝐽(𝜏) = 𝐸𝜏 [∑𝑇𝑡=0 𝛾 𝑡 𝑟𝑡 ] Thuật toán dựa chiến lược biết đến nhiều REINFORCE - Lợi ích thuật tốn phương tháp tối ưu tổng quát Chúng ứng dụng cho tồn có kiểu hành động khác rời rạc, liên tục đa hành động Chúng trực tiếp tối ưu thứ mà tác tử trức tiếp quan tâm đến-hàm mục tiêu 𝐽(𝜏) 1.3.2 Học dựa giá trị (Value-based) - Với thuật toán dạng này, tác tử dùng hàm 𝑉 𝑄𝜋 (𝑠, 𝑎) Nó sử dụng hàm học để đánh giá cặp giá trị (𝑠, 𝑎) tạo chiến lược phù hợp Hàm 𝑄𝜋 (𝑠, 𝑎) thông dụng 𝑉 𝜋 (𝑠) Bởi 𝑄𝜋 (𝑠, 𝑎) chứa đựng thơng tin cặp trạng thái hành động 𝑉 𝜋 (𝑠) cho ta thông tin trạng thái 𝜋 (𝑠)𝑣à - Thuật toán SARSA thuật toán lâu đời học tăng cường Mặc cho đơn giản nó, SARSA kiến tạo nên ý tưởng lõi nhiều phương thức học dựa giá trị Tuy nhiên ngày lại khơng sử dụng rộng rãi đem đến phương sai lớn Deep Q-Network họ hàng Double DQN PER lại thuật tốn thơng dụng hiệu - Các thuật toán dựa thường lấy mẫu hiệu thuật tốn dựa vào chiến lược Bởi phương sai chúng thấp chúng tận dụng liệu thu thập từ môi trường Tuy nhiên, khơng có đảm bảo thuật tốn hội tụ đến điểm tối ưu - Gần có xuất thuật toán QT-OPT ứng dụng hiệu môi trường với không gian hành động liên tục 1.3.3 Thuật tốn dựa mơ hình - Phương pháp thực học theo mơ hình sử dụng để định sách tối ưu Tác tử ước lượng mơ hình từ quan sát khả chuyển đổi trạng thái Một tác tử có mơ hình mơi trường, 𝑃(𝑠 ′ |𝑠, 𝑎), tưởng tượng việc xảy tương lai cách dự đoán trajectory vài bước Và môi trường trạng thái s, tác tử thực đánh giá xem trạng thái thay đổi áp dụng loạt hành động 𝑎1 , 𝑎2 , … , 𝑎𝑛 cách sử dụng 𝑃(𝑠 ′ |𝑠, 𝑎) Tất không làm thay đổi mơi trường Vì vậy, trajectory đoán xuất “đầu” tác tử 10 - Để khắc phục không ổn định giá trị đích, người ta đưa giải pháp Đó đóng băng tham số 𝜃 hàm giá trị đích khoảng thời gian sau lại cập nhật trở lại Giá trị đích có tham số 𝜃′ riêng Và sau n vòng đời tác tử, tham số 𝜃′ gán tham số 𝜃 giá trị ước lượng 𝐾 𝐿(𝜃) = ∑( 𝑟𝑖 + 𝛾 max 𝑄𝜃′ (𝑠 ′ 𝑖 , 𝑎′) − 𝑄𝜃 (𝑠𝑖 , 𝑎𝑖 ))2 𝑎′ 𝐾 𝑖=1 ❖ Bây kết hợp thứ vừa học để viết thuật toán DQN: Khởi tạo ngẫu nhiên tham số 𝜃 cho mạng nơ ron Khởi tạo tham số 𝜃′ cho mạng nơ ron giá trị đích (copy giá trị từ 𝜃) Tạo replay buffer D For i =1, i< N (number of episode), thực bước 5: For t=0, , T-1 (lặp đến kết thúc episode): 21 Quan sát trạng thái s lựa chọn hành động sử dụng epsilon-greedy, có nghĩa với xác suất epsilon, chọn ngẫu nhiên hành động a với xác suất = - epsilon a = arg max 𝑄𝜃 (𝑠, 𝑎) 𝑎 Thực hành động a, chuyển đến trạng thái s’ nhận phần thưởng r Lưu thông tin (s,a,s’,r) vào replay buffer D Lấy mẫu ngẫu nhiên K thơng tin từ buffer D Tính giá trị đích: 𝑦𝑖 = 𝑟𝑖 + 𝛾 max 𝑄𝜃′ (𝑠′𝑖 , 𝑎′) 𝑎′ Tính giá trị mát: 𝐿(𝜃) = ∑𝐾 𝑖=1( 𝑦𝑖 − 𝑄𝜃 (𝑠𝑖 , 𝑎𝑖 )) 𝐾 Tính gradient hàm mát cập nhật tham số 𝜃 dựa vào công thức: 𝜃 = 𝜃 − 𝛼∇𝜃 𝐿(𝜃) Không cập nhật giá trị tham số 𝜃’ khoảng thời gian cập nhật cách copy giá trị tham số 𝜃 2.5 Double DQN - Sử dụng max để tìm hành động có giá trị lớn đem đến cho vấn đề mới: overestimation – đánh giá cao hành động Và sau giải pháp cho vấn đề này: 𝑦 = 𝑟 + 𝛾𝑄𝜃′ (𝑠′, 𝑎𝑟𝑔 max 𝑄𝜃 (𝑠′, 𝑎′)) 𝑎′ 2.6 Dueling DQN - Hàm lợi định nghĩa hiệu hai giá trị Q giá trị V: 𝐴(𝑠, 𝑎) = 𝑄(𝑠, 𝑎) − 𝑉(𝑠) - Ta biết: hàm Q tính lợi ích việc thực hành động a trạng thái s Trong đó, hàm V cho ta biết lợi ích tác tử đạt trạng 22 thái s di chuyển theo policy Vậy hàm lợi cho ta biết lợi ích việc thực hành động a so với trung bình lợi ích đạt trạng thái s - Phương pháp Dueling DQN tận dụng hàm lợi sử dụng để tính giá trị hàm Q: 𝑄(𝑠, 𝑎) = 𝑉(𝑠) + 𝐴(𝑠, 𝑎) - Vậy lợi ích phương pháp gì? Giả sử vài trạng thái s, ta có 20 hành động ta lựa chọn số chúng để thực Tuy nhiên tính tốn giá trị Q tồn 20 hành động khơng hữu ích Bởi có nhiều hành động khơng có tác dụng trạng thái chúng có giá trị Q - Nên, tính tốn giá trị Q dựa vào công thức cho ta biết hành động có quan trọng hay khơng đem lại giá trị giống với hành động khác Từ ta có cách tổ chức mơ hình để tính tốn giá trị Q - Ta viết lại hàm Q(s,a) sau: 𝑄(𝑠, 𝑎) = 𝑉(𝑠) + (𝐴(𝑠, 𝑎) − (∑ 𝐴(𝑠, 𝑎′)) Β 𝑎′ 23 + Trong đo B số lượng hành động - Bởi mạng tính tốn V A có tham số nên ta có cơng thức cuối cùng: 𝑄(𝑠, 𝑎; 𝜃, 𝛼, 𝛽) = 𝑉(𝑠; 𝜃, 𝛽) + (𝐴(𝑠, 𝑎; 𝜃, 𝛼) − (∑ 𝐴(𝑠, 𝑎′ ; 𝜃, 𝛼)) Β 𝑎′ + 𝛼 tham số hàm lợi ích 𝛽 tham số hàm giá trị V 24 CHƯƠNG 3: ÁP DỤNG HỌC TĂNG CƯỜNG VÀO GAME MARIO 3.1 Bài toán cần xử lý - Bài toán mà dùng để áp dụng thuật toán học tăng cương tạo agent có khả chơi game người 3.2 Môi Trường Dữ Liệu Không gian hành động - Mario thực hành động sau mơi trường: • • • • • • NOOP: khơng làm A: nhảy Down: cúi xuống Up: nhảy qua ống Right: di chuyển sang phải Right+A: nhảy bơi di chuyển sang phải • Right+B: lướt bắn cầu lửa • Right+A+B: kết hợp hai hành động Tác tử: Mario - Mario có ba trạng thái: “small”, ”tall”, “fireball” Anh ta nâng cấp lên “tall” cách ăn nấm, lên “fireball” ăn hoa Anh bí biến thành “small” đụng phải đám quái Khi Mario trạng thái “tall”, anh cao gấp dạng “small” dạng “fireball” anh bắn lửa Môi Trường - Môi trường thành phần khơng thể thiếu tốn học tăng cường Mơi trường Mario hình game, tất người chơi quan sát qua hình máy tính 25 - Trong mơi trường tồn vật thể mặt đất, hố sâu, đường ống… Mario di chuyển mặt đất cố gắng né tránh đám quái vật, hoa ăn thịt nhảy qua hố Nếu Mario rơi xuống hố, quay trở điểm xuất phát toàn phần thưởng - Trong trình di chuyển, Mario thu lượm đồ vật nấm, hoa đồng xu 3.3 Hướng giải toán - Ta xác định mơi trường tác tử tốn Bây áp dụng mơ hình học tăng cường vào toán Đầu tiên cần cung cấp trạng thái cho tác tử phân tích Từ quan sát mà tác tử nhận được, khó để máy tính hiểu hình ảnh Sau nhận phần thưởng thông tin trạng thái, tác tử phân tích chúng thuật tốn cài đặt bên Sau đưa hành động phù hợp Hành động tác dụng lên môi trường làm biến đổi trạng thái tác tử Tác tử lại tiếp tục phải dừng lại 26 3.4 Xử lý môi trường - Ta biết Mario game màu có nghĩa khung ảnh có kênh màu Red, Green Blue Nếu để yên liệu đầu vào ta vơ phức tạp Nên ta dùng OpenCV để biến đổi khung ảnh từ ảnh màu sang ảnh đa mức xám Làm giảm chiều liệu mà không làm mát thông tin - Đồng thời ta phải giảm kích thước frame cịn 84x84 Bỏ qua số frame giúp giảm liệu khơng cần thiết Vì episode có tới 2000 step step tương ứng với frame - Một ảnh cho biết đầy đủ thông tin môi trường phức tạp Mario Ta cần phải biết hướng di chuyển quái Mario nên cần đầu vào ảnh lúc để quan sát nhiều thông tin ảnh 3.5 Triển khai thuật toán 3.5.1 Định nghĩa lớp DQN: - Đầu tiên ta xây dựng mơ hình Deep Learning để phân tích liệu đầu vào Mạng nơ ron dùng để ước lượng có lớp sau: 27 self.online = nn.Sequential( nn.Conv2d(in_channels=4, out_channels=32, kernel_size=(8,8), stride=4), nn.ReLU(), nn.Conv2d(in_channels=32, out_channels=64, kernel_size=(4,4), stride=2), nn.ReLU(), nn.Conv2d(in_channels=64, out_channels=64, kernel_size=(3,3), stride=1), nn.ReLU(), nn.Flatten(), nn.Linear(3136, 512), nn.ReLU(), nn.Linear(512, output_dim), ) - Ban đầu mơ hình mạng nơ ron để tính giá trị đích chép giá trị tham số mơ hình giá trị ước lượng: self.target = copy.deepcopy(self.online) - Các tham số mơ hình khơng cần tính đạo hàm nên ta để chức tự động tính đạo hàm False: for p in self.target.parameters(): p.requires_grad = False - Đầu tiên xây dựng class DQN, hàm khởi tạo init (), ta tạo gán giá trị cho thông số sau: + Số lượng hành động self.action_size = action_size + Một nhớ có cấu trúc dạng deque với nhớ 50000 self.replay_buffer = deque(maxlen=5000) + Hệ số suy giảm: self.gamma = 0.95 + Thời gian cập nhật tham số giá trị đích: self.sync_period = 10000 28 +Mạng nơ ron ta tạo trên: self.network = DDQNSolver(self.action_dim).cuda() - Tiếp theo phương thức để lưu liệu trải nghiệm vào nhớ replay buffer phương thức để lấy liệu từ nhớ: def remember(self,state,next_state,action,reward, done): def recall(self): - Phương thức quan trọng optimize_model – dùng để tính tốn cập nhật tham số mạng nơ ron: def experience_replay(self, step_reward): + Tính tổng phần thưởng đạt episode: self.current_episode_reward += step_reward + Cứ sau 10000 hành động lại cập nhật tham số giá trị đích: if self.current_step % self.sync_period == 0: self.network.target.load_state_dict (self.network.online.state_dict()) + Nếu liệu bên replay buffer chưa đủ khơng thực phương thức này: if self.batch_size > len(self.memory): return + Lấy liệu từ nhớ replay buffer để train: state, next_state, action, reward, done = self.recall() + Cứ sau 10000 hành động lại cập nhật tham số giá trị đích: q_estimate = self.network(state.cuda(), model="online")[np.arange(0, self.batch_size), action.cuda()] 29 + Chọn hành động có giá trị lớn sử dụng mạng nơ ron giá trị ước lượng tính giá trị đích Hàm no_grad () gọi để đảm bảo torch khơng tính đạo hàm q trình tính toán: with torch.no_grad(): best_action = torch.argmax(self.network(next_state.cuda(), model="online"), dim=1) next_q = self.network(next_state.cuda(), model="target")[np.arange(0, self.batch_size), best_action] q_target = (reward.cuda() + (1 - done.cuda().float()) * self.gamma * next_q).float() +Tính td error nhờ vào giá trị đích giá trị ước lượng có được: td_error = q_estimate - q_target + Tính giá trị mát : value_loss = td_error.pow(2).mul(0.5).mean() + Chuyển toàn gradient bên nhớ đệm 0: self.optimizer.zero_grad() + Tính giá trị đạo hàm hàm mát (lan truyền ngược): value_loss.backward() + Cập nhật giá trị tham số 𝜃: self.optimizer.step() - Nếu muốn lưu lại giá trị tham số mạng nơ ron, ta viết thêm phương thức là: def load_checkpoint(self, path): def load_checkpoint(self, path): 30 3.5.2 Dueling DDQN - Với thuật tốn Dueling, mơ hình mạng nơ ron thay đổi nhiều nên ta phải viết mơ hình Ở mơ hình này, giai đoạn cuối ta chia mơ hình làm output: ouput giá trị trạng thái V output bao gồm giá trị lợi hành động self.CNN_layer = nn.Sequential( 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 hành động phương thức forward: def forward(self, state): t = self.CNN_layer(state) t = F.relu(self.fc1(t)) A = self.A(t) V = self.V(t).expand_as(A) Q = V + A - A.mean(1, keepdim=True).expand_as(A) return Q 3.6 Test case chương trình 3.5.1 Chạy chương trình với thuật tốn khác - Chúng ta thay đổi thuật toán tác tử Chúng dụng hệ số suy giảm – gamma = 0.9, chiến thuật epsilon greedy 31 + Deep Q-Network (DQN) + Double DQN (DDQN) + Dueling DDQN - Dưới kết sau 500 episode, ta thấy thuật tốn DQN lúc đầu có phần thưởng cao lại giảm dần cuối DDQN phát triển ổn định hơn, sau Dueling DDQN Tuy nhiên tốt giá trị mặt thời gian, Dueling DDQN lại tốn nhiều thời gian để training 3.5.2 Sử dụng hệ số suy giảm khác - Chúng ta thay đổi hệ số suy giảm tác tử Các tác tử sử dụng thuật toán DQN, chiến thuật epsilon greedy +𝛾=1 + 𝛾 = 0.9 + 𝛾 = 0.5 +𝛾=0 32 3.5.3 Sử dụng policy khác + SoftMaxStrategy + EgreedyExpStrategy + EgreedyLinearStrategy + EgreedyStrategy 33 ĐÁNH GIÁ VÀ KẾT LUẬN Học tăng cường thuật toán mạnh DQN biến thể hạt cát nhỏ vơ vàn thuật tốn học tăng cường khác Chúng dễ dàng để triển khai hiệu khơng thể thuật tốn đời gần PPO, A2C, TRPO Tuy nhiên đáng để tìm hiểu muốn nắm chất thuật toán cấp cao Các thuật tốn học tăng cường mơ cách người giải vấn đề, tốn thực tế Nhưng để đạt đến trí truệ lồi người cần phải sáng tạo nghiên cứu thuật toán mạnh mẽ hiệu 34 35 ... thuật Monte Carlo 15 2.3 Kỹ thuật TD learning (Temporal Difference Learning) 17 2.4 Q -learning 18 2.4 Deep Q-Network 18 2.6 Dueling DQN 22 CHƯƠNG 3:... mô hình Deep Learning để phân tích liệu đầu vào Mạng nơ ron dùng để ước lượng có lớp sau: 27 self.online = nn.Sequential( nn.Conv2d(in_channels=4, out_channels=32, kernel_size= (8, 8), stride=4),... nên sử dụng hành động a trạng thái hay theo chiến lược đề 1.3 Phân Loại Thuật Toán Học Tăng Cường Các thuật toán học tăng cường chia làm nhóm chính: học dựa chiến lược (policy-based), học dựa

Ngày đăng: 16/09/2022, 00:17

Xem thêm:

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN