Tải bản đầy đủ (.pdf) (41 trang)

Báo cáo phân tích tìm hiểu về học tăng cường và Ứng dụng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.67 MB, 41 trang )

<span class="text_page_counter">Trang 1</span><div class="page_container" data-page="1">

KHOA CÔNG NGHỆ THÔNG TIN ---o0o---

<b> ĐỒ ÁN TỐT NGHIỆP ĐỀ TÀI </b>

<b> TÌM HIỂU VỀ HỌC TĂNG CƯỜNG VÀ ỨNG DỤNG </b>

<b> Giảng viên hướng dẫn : Nguyễn Quốc Tuấn </b>

<b> Sinh viên thực hiện : Hoàng Xuân Tuyền Mã sinh viên : 191241113 </b>

<b> Hà Nội, 05/2023 </b>

</div><span class="text_page_counter">Trang 2</span><div class="page_container" data-page="2">

<b> LỜI CẢM ƠN </b>

Đầu tiên em xin được gửi lời cảm ơn chân thành nhất đến Ban Chủ nhiệm Khoa và quý thầy cô đã dành thời gian và công sức để hướng dẫn, hỗ trợ và đánh giá báo cáo tốt nghiệp của em.

Trong suốt quá trình thực hiện báo cáo này, em đã nhận được sự chỉ dẫn tận tâm từ quý thầy cô. Những gợi ý, nhận xét và phản hồi quý báu từ quý thầy cô đã giúp em cải thiện nội dung và phương pháp nghiên cứu của báo cáo. Em cảm kích sự kiên nhẫn và nhất quán của quý thầy cô trong việc hỗ trợ em hoàn thành báo cáo một cách chất lượng và đúng thời hạn.

Em cũng muốn bày tỏ lòng biết ơn đến các giảng viên và nhân viên khoa đã tạo môi trường học tập thuận lợi và trang bị cho em những kiến thức và kỹ năng quan trọng. Nhờ vào sự tận tâm và chuyên môn của quý thầy cô, em đã có cơ hội tiếp cận với những nguồn tư liệu và cơng nghệ hiện đại, từ đó phát triển khả năng nghiên cứu và phân tích của mình.

Cuối cùng, em xin gửi lời cảm ơn đến gia đình, bạn bè và những người thân yêu đã luôn đồng hành, động viên và ủng hộ em trong suốt quá trình học tập. Sự yêu thương và sự tin tưởng của các bạn là nguồn động lực quan trọng giúp em vượt qua khó khăn và đạt được thành công trong việc hoàn thành báo cáo tốt nghiệp.

</div><span class="text_page_counter">Trang 3</span><div class="page_container" data-page="3">

1.1. Giới thiệu về học máy 7 1.1.1 Khái niệm về học máy 7 1.1.2 Các loại thuật toán học máy 7 1.2. Các công cụ và ngôn ngữ lập trình sử dụng 8 1.2.1 Ngơn ngữ lập trình Python 8 1.2.2 Một số thư viện và framework 8

2.1. Các kiến thức cơ bản trong học tăng cường 13 2.1.1. Markov Decision Process 13 2.1.2 Phần thưởng và phản hồi 14 2.1.3 Hệ số chiết khấu 14 2.1.4 Hàm chính sách 15 2.1.5 Hàm giá trị trạng thái 16 2.1.5 Hàm giá trị hành động - trạng thái (hàm Q) 16 2.1.6 Phương trình Bellman 17 2.2. Một số thuật toán trong học tăng cường 18

</div><span class="text_page_counter">Trang 4</span><div class="page_container" data-page="4">

3.1 Giới thiệu về bài toán 32 3.2 Xây dựng mơ hình Deep Q Network cho Pacman 33 3.2.1 Môi trường đào tạo 33 3.2.2 Mơ hình mạng Deep Q Network 33 3.2.3 Rank Based Prioritized Experience Replay 34 3.2.4 Epsilon decay 35 3.2.5 Cập nhật mạng Q 35 3.2.6 Kết quả thực nghiệm 35

</div><span class="text_page_counter">Trang 5</span><div class="page_container" data-page="5">

<b> DANH MỤC BẢNG BIỂU </b>

<b> Bảng 2.2: Bảng giá trị trạng thái sau khi cập nhật </b> 17

<b> Bảng 2.3: Bảng giá trị trạng thái ban đầu </b> 20

<b> Bảng 2.4: Bảng xác suất chuyển đổi và phần thưởng </b> 20

<b> Bảng 2.6: Bảng giá trị trạng thái sau cập nhật </b> 22

<b> Bảng 2.7: Bảng giá trị trạng thái sau lần lặp thứ nhất </b> 22

<b> Bảng 2.8: Bảng giá trị trạng thái sau lần lặp thứ 2 </b> 22

<b> Bảng 2.9: Bảng giá trị trạng thái sau lần lặp thứ 3 </b> 23

<b> Bảng 2.12: Bảng Q cho trạng thái đầu tiên </b> 26

<b> Bảng 2.13: Bảng Q sau bước cập nhật đầu tiên </b> 26

<b> Bảng 2.14: Bảng Q sau vài bước cập nhật </b> 27

</div><span class="text_page_counter">Trang 6</span><div class="page_container" data-page="6">

<b> DANH MỤC HÌNH ẢNH </b>

<b> Hình 2.1: Mơ hình chu trình quyết định Markov </b> 1 3

<b> Hình 2.2: Minh họa bài tốn tìm đường </b> 1 5

<b> Hình 2.3: Sơ đồ khối thuật toán lặp giá trị </b> 19

<b> Hình 2.5: Sơ đồ khối thuật tốn Q learning </b> 24

<b> Hình 2.6: Ma trận trạng thái game Frozen Lake </b> 2 5

<b> Hình 2.7: Ma trận trạng thái hiện tại . </b> 2 7

<b> Hình 2.8: Q learning và Deep Q Network. </b> 2 9

<b> Hình 2.9: Sơ đồ hoạt động của Deep Q Network </b> 30

<b> Hình 3.1: Giao diện của Pacman trên OpenGym </b> 32

<b> Hình 3.2: Mơ hình luồng xử lý của một Q network </b> 33

<b> Hình 3.4: Biểu đồ thể hiện giá trị Loss qua từng lần cập nhật mơ hình </b> 36

<b> Hình 3.5: Biểu đồ thể hiện phần thưởng qua mỗi tập </b> 37

<b> Hình 3.6 : Kết quả thực nghiệm trên môi trường thực tế </b> 38

</div><span class="text_page_counter">Trang 7</span><div class="page_container" data-page="7">

<b> MỞ ĐẦU </b>

Học máy và học tăng cường là hai lĩnh vực đang nhận được sự quan tâm rất lớn của cộng đồng khoa học máy tính. Cả hai lĩnh vực này đều liên quan đến khả năng tự học và tự cải thiện của máy tính, từ đó giúp cải thiện hiệu quả công việc và đời sống của con người.

Trong báo cáo này, chúng ta sẽ tìm hiểu về học tăng cường - một phương pháp học máy đặc biệt, nơi mà mơ hình học tập sẽ phải tương tác với môi trường bên ngoài và phải học từ những phản hồi mà môi trường đưa ra. Chúng ta cũng sẽ khám phá một số thuật toán trong học tăng cường và cách sử dụng các công cụ, ngôn ngữ lập trình, thư viện và framework để triển khai các mơ hình học tăng cường.

Nội dung của tài liệu sẽ được chia thành 3 chương. Chương đầu tiên là giới thiệu về học máy, bao gồm khái niệm cơ bản và các loại thuật toán học máy. Tiếp theo, chương 2 sẽ giới thiệu về học tăng cường và các thuật toán trong học tăng cường. Chương 3 sẽ tiến hành áp dụng một mơ hình học tăng cường vào giải quyết một bài toán cụ thể. Cuối cùng sẽ đi đến kết luận về mô hình vừa thực hiện và những điều có thể cải thiện trong tương lai. Em hy vọng tài liệu này có thể đem lại cho người đọc một cái nhìn tổng quan và cơ bản về học tăng cường cũng như các công cụ liên quan, từ đó có thể tiếp cận và nghiên cứu sâu hơn về lĩnh vực này.

</div><span class="text_page_counter">Trang 8</span><div class="page_container" data-page="8">

<b> CHƯƠNG 1: TỔNG QUAN VỀ HỌC MÁY 1.1. Giới thiệu về học máy </b>

<b> 1.1.1 Khái niệm về học máy </b>

Học máy là một công nghệ phát triển từ lĩnh vực trí tuệ nhân tạo. Các thuật toán học máy là các chương trình máy tính có khả năng học hỏi về cách hoàn thành các nhiệm vụ và cách cải thiện hiệu suất theo thời gian.

Học máy vẫn đòi hỏi sự đánh giá của con người trong việc tìm hiểu dữ liệu cơ sở và lựa chọn các kĩ thuật phù hợp để phân tích dữ liệu. Đồng thời, trước khi sử dụng, dữ liệu phải sạch, khơng có sai lệch và khơng có dữ liệu giả.

Các mơ hình học máy u cầu lượng dữ liệu đủ lớn để "huấn luyện" và đánh giá mơ hình. Trước đây, các thuật toán học máy thiếu quyền truy cập vào một lượng lớn dữ liệu cần thiết để mô hình hóa các mối quan hệ giữa các dữ liệu. Sự tăng trưởng trong dữ liệu lớn (big data) đã cung cấp các thuật toán học máy với đủ dữ liệu để cải thiện độ chính xác của mơ hình và dự đốn.

<b> 1.1.2 Các loại thuật toán học máy </b>

Học có giám sát (Supervised learning): là một phương pháp học máy sử dụng một tập dữ liệu huấn luyện được gắn nhãn để dự đoán kết quả trên các tập dữ liệu mới. Thuật toán học có giám sát phân loại dữ liệu dựa trên đầu vào và nhãn của chúng. Các ví dụ về học có giám sát bao gồm phân loại và hồi quy.

Học không giám sát (Unsupervised learning): là phương pháp học máy khơng có dữ liệu huấn luyện được gắn nhãn. Thuật tốn học khơng giám sát tìm kiếm mối liên hệ giữa các đặc trưng của dữ liệu và tạo ra các nhóm dữ liệu mới. Các ví dụ về học không giám sát bao gồm phân cụm và giảm chiều dữ liệu.

Học bán giám sát (Semi-supervised learning): là phương pháp học máy kết hợp giữa học có giám sát và học khơng giám sát. Nó sử dụng một số lượng nhỏ dữ liệu huấn luyện được gắn nhãn kết hợp với dữ liệu không được gắn nhãn để tạo ra một mơ hình dự đốn cho các tập dữ liệu mới.

Học tăng cường (Reinforcement learning): là phương pháp học máy tập trung vào việc học cách ra quyết định tối ưu thông qua việc tương tác liên tục với một môi trường. Thuật toán học tăng cường đưa ra quyết định dựa trên các phản hồi từ môi trường để đạt được mục tiêu tối đa. Các ví dụ về học tăng cường bao gồm tự động lái xe và robot tự động.

</div><span class="text_page_counter">Trang 9</span><div class="page_container" data-page="9">

<b> 1.2. Các công cụ và ngơn ngữ lập trình sử dụng </b>

<b> 1.2.1 Ngơn ngữ lập trình Python </b>

Python là một ngơn ngữ lập trình được sử dụng rộng rãi trong các ứng dụng web, phát triển phần mềm, khoa học dữ liệu và máy học (Machine Learning - học máy). Các nhà phát triển sử dụng Python vì nó hiệu quả, dễ học và có thể chạy trên nhiều nền tảng khác nhau. Phần mềm Python được tải xuống miễn phí, tích hợp tốt với tất cả các loại hệ thống và tăng tốc độ phát triển.

Những lợi ích của Python bao gồm:

- Các nhà phát triển có thể dễ dàng đọc và hiểu một chương trình Python vì ngơn ngữ này có cú pháp cơ bản giống tiếng Anh.

- Python giúp cải thiện hiệu suất làm việc của các nhà phát triển vì vậy với những ngơn ngữ khác, họ có thể sử dụng ít dịng mã hơn để viết một chương trình Python. - Python có một thư viện tiêu chuẩn lớn, chứa nhiều dịng mã có thể tái sử dụng cho hầu hết mọi nhiệm vụ. Nhờ đó, các nhà phát triển sẽ không cần phải viết mã từ đầu. - Các nhà phát triển có thể dễ dàng sử dụng Python với các ngôn ngữ lập trình phổ

biến khác như Java, C và C++.

- Cộng đồng Python tích cực hoạt động bao gồm hàng triệu nhà phát triển nhiệt tình hỗ trợ trên tồn thế giới. Nếu gặp phải vấn đề, bạn sẽ có thể nhận được sự hỗ trợ nhanh chóng từ cộng đồng.

- Trên Internet có rất nhiều tài nguyên hữu ích nếu bạn muốn học Python. Ví dụ: bạn có thể dễ dàng tìm thấy video, chỉ dẫn, tài liệu và hướng dẫn dành cho nhà phát triển.

- Python có thể được sử dụng trên nhiều hệ điều hành máy tính khác nhau, chẳng hạn như Windows, macOS, Linux và Unix.

<b> 1.2.2 Một số thư viện và framework </b>

Có rất nhiều các thư viện và framework hỗ trợ cho việc học tăng cường sử dụng ngơn ngữ lập trình Python, dưới đây là một vài ví dụ :

- OpenAI Gym: OpenAI Gym là một thư viện mã nguồn mở cung cấp một số môi trường học tăng cường phổ biến để thử nghiệm các thuật tốn học tăng cường. Nó cung cấp một API để tương tác với các môi trường và giúp người dùng xây dựng và đánh giá các thuật toán học tăng cường.

- Tensorflow: TensorFlow là một framework phổ biến để xây dựng mơ hình học máy và học tăng cường. Nó cung cấp một API để xây dựng các mô hình học tăng cường, bao gồm các lớp mạng nơ-ron và các thuật toán tối ưu.

</div><span class="text_page_counter">Trang 10</span><div class="page_container" data-page="10">

- PyTorch: PyTorch là một framework mã nguồn mở với một số tính năng dành cho học tăng cường. Nó cung cấp các công cụ xây dựng mơ hình học tăng cường, bao gồm các lớp mạng nơ-ron và các thuật toán tối ưu.

- Keras-RL: Keras-RL là một thư viện học tăng cường dựa trên Keras, một framework học máy phổ biến. Nó cung cấp các thuật toán học tăng cường như Deep Q-Learning, Gradient Policy và Actor-Critic.

- Ray RLlib: Ray RLlib là một thư viện học tăng cường dựa trên Ray, một framework mã nguồn mở để xây dựng hệ thống phân tán. Nó cung cấp một loạt các thuật toán học tăng cường và hỗ trợ cho việc phân phối tập dữ liệu và đào tạo mơ hình trên nhiều nút tính tốn.

Một vài ưu nhược điểm của các framework, thư viện:

- OpenAI Gym: Gym là một thư viện mã nguồn mở phổ biến và được sử dụng rộng rãi trong cộng đồng học tăng cường. Nó cung cấp một số môi trường học tăng cường chuẩn và API để tương tác với chúng. Gym rất dễ sử dụng và cung cấp một cách tiếp cận trực quan cho học tăng cường. Tuy nhiên, Gym chỉ cung cấp các môi trường đơn giản, không đủ để thử nghiệm các thuật toán học tăng cường phức tạp. - Tensorflow và PyTorch: TensorFlow và PyTorch đều là các framework học máy

phổ biến và được sử dụng rộng rãi. Cả hai đều cung cấp một số tính năng học tăng cường, bao gồm các lớp mạng nơ-ron và các thuật toán tối ưu. TensorFlow có thể được sử dụng để xây dựng các mơ hình học tăng cường lớn và phức tạp hơn, trong khi PyTorch có cách tiếp cận đơn giản hơn cho việc xây dựng mơ hình học tăng cường. Tuy nhiên, cả hai đều yêu cầu người dùng có kiến thức về lập trình và học tăng cường để sử dụng hiệu quả.

- Keras-RL: Keras-RL là một thư viện học tăng cường dựa trên Keras, một framework học máy phổ biến. Nó cung cấp một số thuật toán học tăng cường phổ biến và có cách tiếp cận đơn giản hơn so với các framework học tăng cường khác. Tuy nhiên, Keras-RL không cung cấp nhiều tính năng tùy chỉnh và không thể được sử dụng để xây dựng các mơ hình học tăng cường phức tạp.

- RLLib là một framework học tăng cường mã nguồn mở được phát triển bởi Anyscale.

- RLLib cung cấp cho người dùng một loạt các thuật toán học tăng cường khác nhau, cho phép người dùng chọn thuật toán phù hợp với vấn đề của họ. - RLLib cho phép người dùng mở rộng các thuật tốn hiện có hoặc thêm các

thuật toán mới vào framework.

- RLLib tương thích với các thư viện học máy phổ biến như TensorFlow và PyTorch.

</div><span class="text_page_counter">Trang 11</span><div class="page_container" data-page="11">

- RLLib hỗ trợ nhiều loại mơ hình, bao gồm mô hình Markov Decision Process (MDP), mơ hình Partially Observable MDP (POMDP) và mơ hình trò chơi.

- RLLib được thiết kế để tối ưu hóa việc huấn luyện các mơ hình học tăng cường, giúp giảm thời gian đào tạo và tăng hiệu suất.

- Tuy vậy, việc sử dụng RLLib khá là khó khăn vì nó u cầu người dùng có kiến thức chuyên sâu về học tăng cường để sử dụng hiệu quả. Tài liệu của nó không được đầy đủ và chi tiết, do đó người dùng cần tìm hiểu thêm từ các nguồn bên ngoài để sử dụng framework hiệu quả. RLLib đòi hỏi một phần cứng mạnh để xử lý các mơ hình học tăng cường phức tạp và để đạt được hiệu suất tốt trong quá trình huấn luyện.

Dưới đây là bảng so sánh các framework và thư viện dựa trên một số các tiêu chí: - Độ phổ biến: Được đánh giá dựa trên số lượt tải về và mức độ sử dụng trong cộng

- Hiệu suất: Được đánh giá dựa trên khả năng xử lý và tính tốn nhanh chóng.

- Tính phân phối: Được đánh giá dựa trên khả năng phân phối và thực thi trên các thiết bị phân tán.

- Tính tùy chỉnh: Được đánh giá dựa trên khả năng tùy chỉnh và mở rộng các tính năng của thư viện hoặc framework.

<b> Bảng 1.1 : Bảng so sánh các framework Thư </b>

<b> viện/Framework </b>

<b> Độ phổ biến </b>

<b> Dễ sử dụng </b>

<b> Tính linh hoạt </b>

<b> Hiệu suất cao </b>

<b> Tính phân phối </b>

<b> Tính tùy chỉnh </b>

OpenAi Gym Cao Trung bình

Thấp Thấp Không hỗ trợ

Cao

Keras-RL Trung bình

Cao Trung bình

Trung bình Khơng hỗ trợ

Cao

RLlib Thấp Thấp Cao Cao Hỗ trợ Thấp

</div><span class="text_page_counter">Trang 12</span><div class="page_container" data-page="12">

TensorFlow Cao Trung bình

Cao Cao Hỗ trợ Trung bình

PyTorch Cao Cao Cao Cao Hỗ trợ Cao

<b> 1.2.3 OpenAI </b>

OpenAI là một tổ chức nghiên cứu trí tuệ nhân tạo (AI) được thành lập vào năm 2015 bởi một số nhà khoa học nổi tiếng như Elon Musk, Sam Altman và Greg Brockman. Tổ chức này chuyên nghiên cứu và phát triển các công nghệ AI tiên tiến nhằm đóng góp cho sự tiến bộ của con người.

OpenAI cung cấp nhiều công cụ hỗ trợ xây dựng mơ hình học tăng cường, trong đó có:

- OpenAI Gym: Đây là một thư viện học tăng cường mã nguồn mở cung cấp nhiều môi trường mô phỏng các tác vụ khác nhau. OpenAI Gym giúp người dùng xây dựng và đánh giá các thuật toán học tăng cường trên nhiều bài toán khác nhau. - OpenAI Baselines: Đây là một bộ công cụ giúp người dùng xây dựng và đánh giá

các thuật toán học tăng cường phổ biến nhất. Các thuật toán này bao gồm Deep Q-Network (DQN), Proximal Policy Optimization (PPO), và nhiều hơn nữa. - OpenAI RoboSumo: Đây là một nền tảng giả lập robot với mục đích hỗ trợ đào tạo

học tăng cường cho robot thực tế. Nền tảng này cung cấp nhiều công cụ hỗ trợ cho việc xây dựng mơ hình học tăng cường cho robot, bao gồm việc điều khiển robot, thu thập dữ liệu và huấn luyện mơ hình.

- OpenAI Spinning Up: Đây là một bộ tài liệu hướng dẫn đầy đủ về lý thuyết và thực hành học tăng cường. Bộ tài liệu này giúp người dùng hiểu rõ hơn về cách hoạt động của các thuật toán học tăng cường và hướng dẫn người dùng cách xây dựng và đánh giá các mô hình học tăng cường.

Ngồi ra, OpenAI cịn cung cấp nhiều cơng cụ và sản phẩm khác như OpenAI Codex, GPT-3 và DALL-E, giúp người dùng tạo ra các ứng dụng trí tuệ nhân tạo khác nhau.

<b> 1.2.4 OpenAI gym </b>

OpenAI Gym là một framework phổ biến cho việc thiết kế và đánh giá các thuật toán học tăng cường. Nó cung cấp một bộ sưu tập các môi trường (environments) mô phỏng các tác vụ học tăng cường khác nhau, cho phép người dùng thử nghiệm và đánh giá các thuật toán học tăng cường trên các tác vụ này.

Một số ưu điểm của OpenAI Gym bao gồm:

- Cung cấp một bộ sưu tập đa dạng các môi trường học tăng cường, từ các tác vụ đơn giản như trò chơi Atari đến các tác vụ phức tạp như điều khiển robot.

</div><span class="text_page_counter">Trang 13</span><div class="page_container" data-page="13">

- Dễ sử dụng và cài đặt. Các mơi trường được đóng gói trong các gói Python và có thể được cài đặt bằng pip.

- Cung cấp một API đơn giản cho việc tương tác với môi trường, bao gồm các phương thức để lấy trạng thái hiện tại của môi trường, thực hiện hành động và nhận lại phần thưởng.

- Có cộng đồng sử dụng rộng lớn, với nhiều tài liệu và ví dụ. Tuy nhiên, OpenAI Gym cũng có một số hạn chế như:

- Các môi trường được định nghĩa sẵn và không thể tùy chỉnh. Người dùng không thể dễ dàng tạo ra các môi trường riêng cho nhu cầu của mình.

- Các môi trường đôi khi quá đơn giản, không phù hợp cho các tác vụ học tăng cường phức tạp hơn.

- Không hỗ trợ việc huấn luyện mơ hình học tăng cường phân tán, điều này giới hạn khả năng mở rộng cho các bài toán lớn.

Kết luận, OpenAI Gym là một framework học tăng cường phổ biến và dễ sử dụng, nhưng có những hạn chế về tính linh hoạt và khả năng tùy chỉnh.

<b> 1.2.5 PyTorch </b>

PyTorch là một thư viện mã nguồn mở được phát triển bởi Facebook để xây dựng và huấn luyện các mơ hình máy học, bao gồm cả mơ hình học tăng cường. PyTorch có các tính năng mạnh mẽ như tính đơn giản và dễ học, hỗ trợ tính tốn động (dynamic computation), tạo ra các mơ hình máy học với hiệu suất cao, hỗ trợ trên nhiều nền tảng khác nhau và có một cộng đồng lớn.

Tuy nhiên, những hạn chế của PyTorch bao gồm: - Tốn thời gian để xây dựng các mơ hình phức tạp.

- Yêu cầu tài nguyên phần cứng mạnh mẽ hơn so với một số thư viện khác. - Cần phải có kiến thức sâu về lập trình để sử dụng hiệu quả.

Kết luận, PyTorch là một trong những thư viện quan trọng và phổ biến trong lĩnh vực học máy và học tăng cường, và được sử dụng rộng rãi trong các ứng dụng thực tế.

</div><span class="text_page_counter">Trang 14</span><div class="page_container" data-page="14">

<b> CHƯƠNG 2: TÌM HIỂU VỀ HỌC TĂNG CƯỜNG 2.1. Các kiến thức cơ bản trong học tăng cường </b>

<b> 2.1.1. Markov Decision Process </b>

Khái niệm: Chu trình Markov là một chu trình ngẫu nhiên mô tả một dãy các trạng thái có thể xảy ra, trong đó xác suất xảy ra của mỗi trạng thái sẽ chỉ phụ thuộc vào trạng thái xảy ra ngay trước nó, đồng thời xác suất chuyển đổi từ trạng thái này sang trạng thái khác là không đổi theo thời gian.

<b> Hình 2.1 : Mơ hình chu trình quyết định Markov. </b>

Một mơ hình Markov được thể hiện bởi 5 yếu tố: - S : tập các trạng thái một agent có thể đạt được

- A : tập các hành động mà một agent có thể thực hiện để tiến hành chuyển đổi state - ( 𝑃 <b> ) : Khả năng chuyển đổi trạng thái s → s ’ bằng các thực hiện hành động ‘ a’ </b>

<small> 𝑠𝑠 ' 𝑎 </small>

<b> - ( </b> 𝑅 <b> ) : Phần thưởng dự kiến đạt được khi chuyển đổi từ trạng thái s → s’ bằng </b>

<small> 𝑠𝑠 ' 𝑎 </small>

<b> cách thực hiện hành động a . </b>

- 𝛾 : hệ số chiết khấu, giúp kiểm soát việc lựa chọn phần thưởng ngay lập tức hoặc phần thưởng trong tương lai.

</div><span class="text_page_counter">Trang 15</span><div class="page_container" data-page="15">

<b> 2.1.2 Phần thưởng và phản hồi </b>

Trong học tăng cường, agent sẽ tương tác với môi trường bằng cách thực hiện các hành động để tiến hành việc chuyển đổi từ trạng thái hiện tại sang trạng thái kế tiếp, dựa trên trạng thái kế tiếp mà agent sẽ nhận được phần thưởng tương ứng.

Một agent sẽ cố gắng tối đa hóa tổng phần thưởng (phần thưởng tích lũy) mà nó nhận được thay vì phần thưởng trước mắt. Phần thưởng tích lũy mà nó nhận được được gọi là phản hồi. Công thức tính tổng giá trị tích lũy như sau:

= + + + …. + 𝑅

Còn nhiệm vụ liên tục là nhiệm vụ chỉ có trạng thái bắt đầu và khơng có trạng thái kết thúc. Một ví dụ cho trạng thái này là việc huấn luyện một robot hỗ trợ cá nhân, nó sẽ khơng có trạng thái kết thúc.

Đối với loại nhiệm vụ theo tập, tổng phần thưởng có thể được tính bằng cơng thức: = + + + …. +

<i> với T là trạng thái cuối cùng của một episode. </i>

Áp dụng cơng thức trên cho việc tính tốn tổng phần thưởng mà agent thu được khi thực hiện một nhiệm vụ liên tục, công thức sẽ như sau:

= + + + …. 𝑅

</div><span class="text_page_counter">Trang 16</span><div class="page_container" data-page="16">

<b> Hình 2.2 : Minh họa bài tốn tìm đường </b>

Đối với mỗi một hành động chuyển đổi sang trạng thái mới, chúng ta sẽ cho agent được một điểm, như vậy, với mục đích là để tối ưu hóa phần thưởng cho mình, thay vì thực hiện tìm đường đi ngắn nhất và tới đích, agent sẽ đi lòng vòng nhằm không ngừng tăng phần thưởng cho mình. Bởi lý do trên, ta cần một giá trị để nói cho agent biết nên ưu tiên phần thưởng của tương lai hay phần thưởng ngay trước mắt, bằng cách sử dụng một hệ số chiết khấu (hay discount factor) có giá trị từ 0 tới 1. 𝛾

Đối với = 0, agent sẽ ưu tiên phần thưởng của trạng thái ngay sau nó: 𝛾 =

∑ 𝛾 <sup> 𝑘 </sup>. 𝑟

<small> 𝑡 + 𝑘 + 1 </small>

Nếu = 0 agent sẽ khơng học được gì khi chỉ nhắm tới phần thưởng trước mắt, = 𝛾 𝛾 1 thì agent sẽ khơng ngừng tìm kiếm phần thưởng trong tương lai, điều này có thể dẫn tới vơ hạn. Vì thế nên được nằm trong khoảng từ 0.2 đến 0.8. 𝛾

<b> 2.1.4 Hàm chính sách </b>

Hàm chính sách (policy function) là một hàm số đưa ra hành động được đề xuất của tác nhân dựa trên trạng thái hiện tại của mơi trường. Nói cách khác, hàm chính sách là một ánh xạ từ trạng thái của môi trường sang các hành động mà tác nhân có thể thực hiện trong trạng thái đó.

Trong học tăng cường, tác nhân sử dụng hàm chính sách để quyết định hành động tiếp theo dựa trên trạng thái hiện tại của môi trường. Mục tiêu của tác nhân là tối đa hoặc tối thiểu hóa một hàm mục tiêu (objective function) dựa trên phần thưởng (reward) nhận được từ môi trường. Hàm mục tiêu này thường được gọi là hàm giá trị (value function) và có thể được định nghĩa dựa trên các hàm chính sách khác nhau.

</div><span class="text_page_counter">Trang 17</span><div class="page_container" data-page="17">

Ví dụ cho 1 chính sách có thể kể đến như: - Tác nhân luôn đi bên phải.

- Tác nhân luôn đi bên trái.

- Tác nhân đi bên phải với xác suất 0.5 và đi bên trái với xác suất 0.5 - Tác nhân đi bên phải với xác suất 0.2 và đi bên trái với xác suất 0.8

<b> 2.1.5 Hàm giá trị trạng thái </b>

Hàm giá trị trạng thái cho biết giá trị kỳ vọng của tổng phần thưởng mà tác nhân sẽ

<i><b> nhận được từ thời điểm hiện tại khi bắt đầu từ một trạng thái cụ thể s và tuân theo một chính sách π xác định, ký hiệu là V(s). </b></i>

<i> = </i> [ | ] 𝑉 <sup>π</sup>( 𝑠 ) 𝐸

<small>π</small> 𝑅

<small> 𝑡 </small> 𝑠

<small> 𝑡 </small>= 𝑠 trong đó : 𝑅 =

<small> 𝑡 𝑘 = 0 </small>

<b> 2.1.5 Hàm giá trị hành động - trạng thái (hàm Q) </b>

Hàm giá trị hành động-trạng thái cho biết giá trị kỳ vọng của tổng phần thưởng mà

<i><b> tác nhân sẽ nhận được khi nó bắt đầu từ một trạng thái cụ thể s , thực hiện một hành động </b></i>

<i><b> a và sau đó tn theo một chính sách π xác định cho đến khi kết thúc. </b></i>

<i> = </i> [ | ] 𝑄 <sup>π</sup>( 𝑠 , 𝑎 ) 𝐸

<small>π</small> 𝑅

<small> 𝑡 </small> 𝑠

<small> 𝑡 </small>= 𝑠 , 𝑎

<small> 𝑡 </small>= 𝑎

</div><span class="text_page_counter">Trang 18</span><div class="page_container" data-page="18">

Hàm Q thể hiện phần thưởng kỳ vọng bắt đầu từ trạng thái s với hành động a thuộc chính sách π. Thay giá trị của 𝑅 ta có:

<small> 𝑡 </small>

𝑄 <sup>π</sup>( 𝑠 , 𝑎 ) 𝐸

<small>π 𝑘 = 0 </small>

<b> Bảng 2.2 : Bảng giá trị trạng thái sau khi cập nhật </b>

State Action Value State 1 Action 1 0.03 State 1 Action 2 0.02 State 2 Action 1 0.5 State 2 Action 2 0.9

<b> 2.1.6 Phương trình Bellman </b>

Phương trình Bellman là một công thức toán học quan trọng trong lý thuyết hệ thống động và học tăng cường. Nó được đặt theo tên của nhà toán học Richard Bellman, người đã phát triển ra công thức này vào những năm 1950.

Phương trình Bellman cho phép tính toán giá trị của một trạng thái hoặc cặp trạng thái-hành động dựa trên giá trị của các trạng thái hoặc cặp trạng thái-hành động khác liên quan đến chúng. Phương trình này có thể được sử dụng để tính toán giá trị tối ưu của một hệ thống động hoặc để học các chiến lược tối ưu trong học tăng cường.

Phương trình Bellman cho hàm giá trị:

𝑅

<small> 𝑠𝑠 ' 𝑎 </small>

+ 𝑉 <sup>π</sup>( 𝑠 ' ) Trong đó:

- 𝑉 <sup>π</sup>( 𝑠 ) là giá trị của trạng thái s theo chính sách π

- π(s,a) là xác suất để thực hiện hành động a tại trạng thái s theo chính sách π - 𝑃 là xác suất để đạt được trạng thái s' khi thực hiện hành động a tại trạng thái s

<small> 𝑠𝑠 ' 𝑎 </small>

- 𝑅 là phần thưởng nhận được khi thực hiện hành động a tại trạng thái s

<small> 𝑠𝑠 ' 𝑎 </small>

</div><span class="text_page_counter">Trang 19</span><div class="page_container" data-page="19">

- γ là hệ số chiết khấu, 0 <= γ <= 1, dùng để định rõ giá trị của các phần thưởng ở tương lai so với phần thưởng hiện tại

- 𝑉 <sup>π</sup>( 𝑠 ' ) là giá trị của trạng thái tiếp theo s' theo chính sách π. Phương trình Bellman cho hàm Q:

<i> = </i> [ + 𝛾 ] 𝑄 <sup>π</sup>( 𝑠 , 𝑎 )

<small> 𝑠 ' </small>

∑ 𝑃

<small> 𝑠𝑠 ' 𝑎 </small>

𝑅

<small> 𝑠𝑠 ' 𝑎 </small>

<small> 𝑠 ' </small>

∑ 𝑄 <sup>π</sup>( 𝑠 ' , 𝑎 ' ) Trong đó:

- 𝑄 <sup>π</sup>( 𝑠 , 𝑎 ) là giá trị của hàm giá trị hành động 𝑄 <sup>π</sup> tại trạng thái s và hành động a. - 𝑃 xác suất chuyển trạng thái từ trạng thái s đến trạng thái s' khi thực hiện hành

<small> 𝑠𝑠 ' 𝑎 </small>

động a theo chính sách π.

- 𝑅 là phần thưởng trực tiếp (immediate reward) nhận được khi thực hiện hành

<small> 𝑠𝑠 ' 𝑎 </small>

động a tại trạng thái s và chuyển đến trạng thái s'.

- 𝛾 là hệ số chiết khấu (discount factor), nằm trong khoảng [0, 1], ảnh hưởng đến sự quan tâm của chúng ta đối với các phần thưởng trong tương lai. Giá trị của 𝛾 càng lớn, chúng ta càng quan tâm nhiều đến phần thưởng trong tương lai và ngược lại. - 𝑄 <sup>π</sup>( 𝑠 ' , 𝑎 ' ) là giá trị của hàm giá trị hành động 𝑄 <sup>π</sup> tại trạng thái tiếp theo s' và một

hành động a' được chọn theo chính sách π.

Phương trình tối ưu Bellman (Optimal Bellman Equation) là phương trình cho hàm giá trị tối ưu của một trạng thái s, ký hiệu là V*(s). Phương trình này cho biết rằng giá trị tối ưu của một trạng thái sẽ được cập nhật bằng giá trị tối ưu của trạng thái tiếp theo mà chúng ta có thể đạt được từ trạng thái hiện tại, cộng với phần thưởng tối ưu có thể đạt được từ trạng thái hiện tại.

[ 𝑅

<small> 𝑠𝑠 ' 𝑎 </small>

+ 𝛾

<small> 𝑠 ' </small>

∑ 𝑄 <sup>π</sup>( 𝑠 ' , 𝑎 ' )]

<b> 2.2. Một số thuật toán trong học tăng cường </b>

Trong phần này, chúng ta sẽ tìm hiểu về một số thuật toán trong học tăng cường. Bắt đầu từ các thuật toán đơn giản như lặp giá trị, lặp chính sách, sau đó tới Q learning và cuối cùng sẽ là Deep Q Network.

<b> 2.2.1 Lặp giá trị </b>

Lặp giá trị là một thuật toán học tăng cường, sử dụng phương pháp quy hoạch động để giải phương trình tối ưu Bellman. Lặp giá trị yêu cầu chúng ta phải biết trước mô hình

</div><span class="text_page_counter">Trang 20</span><div class="page_container" data-page="20">

của bài tốn, nó bao gồm các xác suất chuyển đổi giữa các trạng thái, xác suất thực hiện các hành động và phần thưởng liên quan.

Ý tưởng: Trong lặp giá trị, chúng ta sẽ bắt đầu với một hàm giá trị ngẫu nhiên. Hàm này dĩ nhiên không thể là một hàm tối ưu, vì vậy chúng ta sẽ tiến hành cải thiện nó lặp đi lặp lại cho tới khi đạt tới điểm hội tụ, các giá trị trạng thái sẽ khơng có nhiều biến động.

<b> Hình 2.3: Sơ đồ khối thuật tốn lặp giá trị. </b>

Ví dụ: Cho một ma trận như hình bên dưới, agent sẽ bắt đầu từ trạng thái A, mục tiêu sẽ là đi tới trạng thái C mà không đi qua trạng thái B, tập hành động bao gồm 0 - trái/phải và 1 - lên/xuống.

A B C

<b> Hình 2.4: Minh họa ma trận bài toán </b>

<b> Bước 1: Khởi tạo ngẫu nhiên giá trị của mỗi trạng thái, ở đây chúng ta tất cả các </b>

trạng thái đều có giá trị bằng 0.

</div>

×