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

đề tài nghiên cứu và xây dựng trò chơi flappy bird bằng thuật toán deep q learning

32 3 0
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Tiêu đề Nghiên cứu và xây dựng trò chơi Flappy Bird bằng thuật toán Deep Q-Learning
Tác giả Nguyễn Văn Đạt, Đào Văn Duy
Người hướng dẫn ThS. Nguyễn Thị Huệ
Trường học Trường Đại học Kiến trúc Hà Nội
Chuyên ngành Công nghệ thông tin
Thể loại Đồ án môn học
Năm xuất bản 2023
Thành phố Hà Nội
Định dạng
Số trang 32
Dung lượng 1,06 MB

Cấu trúc

  • CHƯƠNG 1. CƠ SỞ LÝ THUYẾT (6)
    • 1.1 Tổng quan về trí tuệ nhân tạo (6)
      • 1.1.1 Khái niệm về trí tuệ nhân tạo (6)
      • 1.1.2 Phân loại trí tuệ nhân tạo (6)
      • 1.1.3 Ưu và nhược điểm của trí tuệ nhân tạo (7)
      • 1.1.4 Ứng dụng của trí tuệ nhân tạo vào thực tế (7)
    • 1.2 Deep Learning (8)
      • 1.2.1 Khái niệm Deep Learning (8)
      • 1.2.2 Các kỹ thuật Deep Learning (8)
      • 1.2.3 Ưu và Nhược điểm của Deep Learning (10)
      • 1.2.4 Các ứng dụng của Deep Learning (11)
    • 1.3 Tổng quan về đề tài (11)
      • 1.3.1 Giới thiệu trò chơi Flappy Bird (11)
    • 1.4 Công nghệ áp dụng cho đề tài (12)
      • 1.4.1 Ngôn ngữ lập trình python (12)
      • 1.4.2 Các thư viện dùng trong đề tài (12)
  • CHƯƠNG 2. XÂY DỰNG TRÒ CHƠI FLAPPY BIRD BẰNG THUẬT TOÁN (13)
    • 2.1 Giới thiệu tổng quan về Deep Q-Learning (13)
      • 2.1.1 Khái niệm (13)
      • 2.1.2 Mô tả thuật toán (13)
      • 2.1.3 Đặc điểm của thuật toán (14)
      • 2.1.4 Ứng dụng của thuật toán Deep Q-Learning (15)
    • 2.2 Áp dụng thuật toán vào dự án (16)
  • CHƯƠNG 3. XÂY DỰNG VÀ TRIỂN KHAI TRÒ CHƠI (17)
    • 3.1 Cài đặt chương trình (17)
      • 3.1.1 Cài đặt và định nghĩa tham số, mô hình và các hàm hỗ trợ (17)
      • 3.1.2 Sử dụng hàm ‘train’ để huấn luyện mô hình Deep Q-Network (20)
    • 3.2 Những bước để cài đặt và khởi chạy chương trình (27)
  • KẾT LUẬN..................................................................................................................25 (30)
  • TÀI LIỆU THAM KHẢO..........................................................................................26 (31)

Nội dung

1.1.3 Ưu và nhược điểm của trí tuệ nhân tạoƯu điểm của Trí tuệ Nhân tạo AI:Tăng hiệu suất và hiệu quả: AI có khả năng tự động thực hiện các tác vụ phức tạp vàlặp đi lặp lại một cách nhan

CƠ SỞ LÝ THUYẾT

Tổng quan về trí tuệ nhân tạo

1.1.1 Khái niệm về trí tuệ nhân tạo

Trí tuệ nhân tạo (Artificial Intelligence - AI) là một lĩnh vực của khoa học máy tính và công nghệ thông tin tập trung vào việc phát triển máy tính và hệ thống có khả năng thực hiện nhiệm vụ yêu cầu sự "suy nghĩ" hoặc "học hỏi" như con người AI nhằm mô phỏng khả năng tư duy, nhận thức, học tập và ra quyết định của con người trong môi trường số hóa ví dụ như: làm theo những gì con người dạy, hiểu ngôn ngữ con người, biết suy nghĩ logic như con người…

Trí tuệ nhân tạo đang thay đổi cách chúng ta làm việc và tương tác với công nghệ Nó đại diện cho một trong những thách thức và cơ hội quan trọng nhất của thế kỷ 21 và đang tiếp tục phát triển mạnh mẽ.

1.1.2 Phân loại trí tuệ nhân tạo

AI có thể chia thành 4 loại: Máy phản ứng, bộ nhớ hạn chế, Lý thuyết tâm trí, Tự nhận thức.

Loại 1: Máy phản ứng (Reactive Machines)

Là cấp độ đơn giản nhất của AI có khả năng phân tích những động thái khả nghi nhất của mình và đối thủ Sau đó, sẽ đưa ra giải pháp tốt nhất.

Loại 2: Bộ nhớ hạn chế (Limited Memory)

Máy có bộ nhớ hạn chế, có thể giữ lại một số thông tin học được từ việc quan sát các sự kiện hoặc dữ liệu trước đó AI có thể xây dựng kiến thức bằng cách sử dụng bộ nhớ đó kết hợp với dữ liệu được lập trình sẵn (dự đoán tương lai)

Loại 3: Lý thuyết tâm trí (Theory of mind) các nhà nghiên cứu lý thuyết về tâm trí hy vọng phát triển các máy tính có khả năng bắt chước các mô hình tinh thần của con người Máy móc có thể hiểu rằng con người và động vật có những suy nghĩ và cảm xúc có thể ảnh hưởng đến hành vi của chính chúng.

Lý thuyết về máy móc tâm trí sẽ được yêu cầu sử dụng thông tin thu được từ con người và học hỏi từ nó, sau đó sẽ thông báo bằng cách máy móc giao tiếp hoặc phản ứng với một tình huống khác.

Loại 4: Tự nhận thức (Self – awareness)

Có khả năng tự nhận thức về bản thân, có thể hành xử, bộc lộ cảm xúc như con người.Đây được xem là bước phát triển cao nhất của công nghệ AI và đến thời điểm hiện tại vẫn chưa khả thi.

1.1.3 Ưu và nhược điểm của trí tuệ nhân tạo Ưu điểm của Trí tuệ Nhân tạo (AI):

Tăng hiệu suất và hiệu quả: AI có khả năng tự động thực hiện các tác vụ phức tạp và lặp đi lặp lại một cách nhanh chóng và chính xác hơn con người, làm tăng hiệu suất và hiệu quả trong nhiều lĩnh vực công việc.

Xử lý dữ liệu lớn: AI có khả năng phân tích và rút trích thông tin quan trọng từ dữ liệu lớn và không cấu trúc, giúp đưa ra quyết định thông minh dựa trên dữ liệu.

Thời gian và tài nguyên tiết kiệm: AI có thể làm việc liên tục 24/7 mà không cần nghỉ ngơi, giúp tiết kiệm thời gian và tài nguyên.

Dự đoán và ứng dụng trong thời gian thực: AI có khả năng dự đoán các sự kiện và xu hướng trong tương lai, hỗ trợ trong việc ra quyết định trong thời gian thực.

Tự động hóa công việc nguy hiểm: AI có thể thực hiện các nhiệm vụ nguy hiểm và môi trường có hại mà không đe dọa tính mạng của con người.

Nhược điểm của Trí tuệ Nhân tạo (AI):

Thất nghiệp: Sự tự động hóa bởi AI có thể dẫn đến mất việc làm cho một số người trong một số ngành công nghiệp, đặc biệt là trong công việc có thể thay thế bằng máy tính.

Quyền riêng tư và đạo đức: Sử dụng AI để thu thập, lưu trữ và phân tích dữ liệu có thể đặt ra câu hỏi về quyền riêng tư và đạo đức, đặc biệt khi dữ liệu cá nhân bị lạm dụng.

Sự phụ thuộc vào công nghệ: Rất nhiều khía cạnh của cuộc sống và công việc ngày nay dựa vào AI Nếu có sự cố hoặc hỏng hó trong hệ thống AI, sẽ có tác động nghiêm trọng đến xã hội và kinh tế.

Kỹ thuật và học tập khó khăn: Xây dựng và huấn luyện các hệ thống AI có thể phức tạp và đòi hỏi kiến thức chuyên sâu Nó cũng đòi hỏi lượng dữ liệu lớn để huấn luyện và kiểm tra.

Deep Learning

Deep Learning là một lĩnh vực quan trọng trong Trí tuệ Nhân tạo (AI) và Machine

Learning (Học máy), nó chú trọng vào việc sử dụng mạng thần kinh sâu để học biểu diễn và trích xuất thông tin từ dữ liệu Nó là một phân nhánh của học máy, sử dụng Deep Neural Networks để học từ dữ liệu trong đó Đặc biệt Deep Learning chú trọng đến việc xây dựng các mô hình học máy với nhiều lớp ẩn ( hidden layers ) để biểu diễn dữ liệu một cách trừu tượng và cần sự hiểu biết cao hơn Nó cho phép máy tính học hỏi các biểu diễn và đặc trưng phức tạp từ dữ liệu mà không cần sự can thiệp trực tiếp từ con người Điều này giúp máy tính tự động rút ra các kiến thức và thông tin từ dữ liệu.

1.2.2 Các kỹ thuật Deep Learning

Mạng nơ-ron cổ điển: Mạng nơ-ron cổ điển (Multi-Layer Perceptron - MLP) Đây là một kiến trúc nơ-ron đơn giản với ít nhất một lớp đầu vào, một hoặc nhiều lớp ẩn và một lớp đầu ra MLP thường được sử dụng cho các nhiệm vụ phân loại và dự đoán Nó hoạt động bằng cách truyền dữ liệu qua các lớp nơ-ron sử dụng trọng số và hàm kích hoạt, sau đó điều chỉnh các trọng số thông qua quá trình đào tạo để tối ưu hóa hiệu suất của mô hình.

Mạng nơ-ron tích chập: Mạng nơ-ron tích chập (Convolutional Neural Network -

CNN) là một kiến trúc deep learning thường được sử dụng cho xử lý hình ảnh và dữ liệu không gian Nó sử dụng lớp tích chập để trích xuất đặc trưng từ dữ liệu và lớp gộp (pooling) để giảm kích thước dữ liệu CNN được thiết kế để tự động tìm hiểu các đặc trưng cấu trúc trong dữ liệu và thường có khả năng tự động nhận diện hình dạng và đối tượng trong hình ảnh.

Mạng nơ-ron hồi quy: Mạng nơ-ron hồi quy (Recurrent Neural Network - RNN) là một kiến trúc deep learning dành cho xử lý dữ liệu chuỗi hoặc chuỗi thời gian Nó sử dụng trạng thái ẩn để lưu thông tin về các bước trước đó trong chuỗi và sử dụng thông tin đó để hiểu ngữ cảnh và phụ thuộc vào thời gian trong dữ liệu đầu vào RNN thường được sử dụng cho việc dự đoán chuỗi thời gian, xử lý ngôn ngữ tự nhiên và các nhiệm vụ liên quan đến chuỗi dữ liệu.

Mạng sinh đối nghịch: Mạng sinh đối nghịch (Generative Adversarial Network -

GAN) là một kiến trúc deep learning bao gồm hai mạng nơ-ron cạnh tranh: mạng tạo ra dữ liệu giả mạo và mạng phân biệt để phân biệt giữa dữ liệu thật và dữ liệu giả mạo. GAN được sử dụng để tạo ra dữ liệu mới và có khả năng tạo ra hình ảnh, âm thanh và dữ liệu khác có chất lượng cao.

Boltzmann machine: Boltzmann Machine (BM) là một kiến trúc mạng nơ-ron trong deep learning được sử dụng cho học biểu diễn và học sâu BM là một dạng của mạng nơ-ron nhân tạo, đặc biệt là nó có khả năng học các mối quan hệ giữa các biến ngẫu nhiên BM sử dụng nhiều nơ-ron để biểu diễn dữ liệu và tìm hiểu cách biểu diễn dữ liệu đó theo cách tốt nhất Nó thường được sử dụng trong các ứng dụng như phân loại, lọc cộng tác, và học biểu diễn dữ liệu.

Học tăng cường sâu: Học tăng cường sâu (Deep Reinforcement Learning - DRL) là một phương pháp trong machine learning, kết hợp deep learning và học tăng cường.DRL giúp máy tính tự động tìm hiểu cách tương tác với môi trường để đạt được mục tiêu và tối ưu hóa một hàm phần thưởng Nó đã được sử dụng trong nhiều ứng dụng,bao gồm tự động lái xe, chơi trò chơi và quản lý tài sản tài chính DRL thường sử dụng các mô hình deep neural networks để học cách đưa ra quyết định và hành động tối ưu trong môi trường phức tạp.

Backpropagation: Backpropagation là một thuật toán quan trọng trong học máy và deep learning để điều chỉnh trọng số của mạng nơ-ron Thuật toán này hoạt động bằng cách tính gradient của hàm mất mát theo các trọng số và sau đó cập nhật trọng số ngược lại (nghĩa là "backward") để giảm sai số giữa dự đoán và kết quả thực tế. Backpropagation giúp mô hình học cách điều chỉnh trọng số để cải thiện hiệu suất trong quá trình đào tạo.

Gradient Descent: Gradient Descent là một thuật toán tối ưu hóa trong học máy được sử dụng để điều chỉnh các tham số của mô hình để giảm thiểu hàm mất mát Thuật toán này hoạt động bằng cách tính gradient (đạo hàm) của hàm mất mát theo các tham số và sau đó cập nhật các tham số theo hướng ngược với gradient để tìm ra điểm tối ưu của hàm mất mát Gradient Descent giúp mô hình học cách điều chỉnh tham số để đạt được hiệu suất tốt hơn.

1.2.3 Ưu và Nhược điểm của Deep Learning Ưu điểm của Deep Learning:

Hiệu suất cao: Deep learning có khả năng học các biểu diễn phức tạp và tạo ra các mô hình có khả năng dự đoán và phân loại cao hơn so với nhiều phương pháp khác.

Khả năng tự động hóa: Mạng nơ-ron sâu có khả năng học từ dữ liệu mà không cần sự can thiệp rất nhiều từ con người Điều này làm cho deep learning thích hợp cho nhiều ứng dụng trong việc xử lý dữ liệu lớn.

Phát triển liên tục: Lĩnh vực deep learning luôn tiến bộ với sự ra đời của các kiến thức và kỹ thuật mới Điều này giúp cải thiện hiệu suất của mô hình theo thời gian.

Xử lý dữ liệu phi cấu trúc: Deep learning có khả năng xử lý dữ liệu phi cấu trúc như hình ảnh, âm thanh, và văn bản mà trước đây khó khăn cho các phương pháp truyền thống.

Nhược điểm của Deep Learning: Đòi hỏi lượng dữ liệu lớn: Deep learning thường cần một lượng lớn dữ liệu đào tạo để hoạt động hiệu quả, điều này có thể là một thách thức trong những trường hợp thiếu dữ liệu.

Tính tốn kém về tính toán: Mô hình deep learning đòi hỏi sự tính toán mạnh mẽ và tài nguyên phần cứng mạnh để đào tạo và triển khai, dẫn đến sự tốn kém về cơ cấu cần phải đầu tư.

Tổng quan về đề tài

1.3.1 Giới thiệu trò chơi Flappy Bird

Flappy Bird là một trò chơi điện tử di động rất nổi tiếng và gây nghiện, được phát triển bởi Nguyễn Hà Đông và phát hành vào năm 2013 Trò chơi này nhanh chóng trở thành hiện tượng trên toàn thế giới và đã thu hút hàng triệu người chơi.

Cơ chế chơi của Flappy Bird rất đơn giản Người chơi điều khiển một chú chim nhỏ bằng cách chạm vào màn hình hoặc nhấn nút, và mục tiêu của họ là điều khiển con chim vượt qua các ống nước treo cao và thấp một cách thận trọng Sự khó khăn của trò chơi nằm ở việc cần điều khiển chiều cao của con chim để tránh va chạm với các ống nước Mỗi lần bạn vượt qua một ống, bạn được một điểm.

Tuy đơn giản trong cách chơi, Flappy Bird lại cực kỳ khó khăn và đầy thách thức.Người chơi thường phải thực hành nhiều lần để có thể đạt được số điểm cao Sự thách thức cùng với đồ họa đơn giản nhưng đáng yêu đã tạo nên sức hút của trò chơi đối với tất cả mọi người.

Công nghệ áp dụng cho đề tài

1.4.1 Ngôn ngữ lập trình python

Python, với cú pháp đơn giản và dễ đọc, đã trở thành một trong những ngôn ngữ lập trình phổ biến nhất trên thế giới Không chỉ được sử dụng rộng rãi trong phát triển phần mềm truyền thống, Python còn đóng vai trò quan trọng trong lĩnh vực trí tuệ nhân tạo (AI), khoa học dữ liệu, web development, và nhiều lĩnh vực công nghệ khác. Sức mạnh của Python không chỉ đến từ cú pháp đẹp và dễ đọc, mà còn từ sự đa dạng của các thư viện và frameworks mạnh mẽ mà nó cung cấp Python cho phép các nhà phát triển xây dựng các ứng dụng AI, từ học máy đến thị giác máy tính và xử lý ngôn ngữ tự nhiên, một cách hiệu quả và nhanh chóng.

Bên cạnh đó, Python còn có một cộng đồng đam mê và hỗ trợ rất mạnh mẽ Các tài liệu phong phú, khóa học trực tuyến và cộng đồng trực tuyến đông đảo đều giúp cho việc học và làm việc với Python trở nên dễ dàng.

1.4.2 Các thư viện dùng trong đề tài

Thư viện pygame : pygame là một thư viện mã nguồn mở cho ngôn ngữ lập trình Python được sử dụng để phát triển ứng dụng và trò chơi đồ họa 2D Thư viện này cung cấp các công cụ và tính năng cho việc vẽ đồ họa, xử lý sự kiện và âm thanh, giúp người lập trình dễ dàng tạo ra các ứng dụng tương tác và trò chơi.

Thư viện pytorch : PyTorch là một thư viện mã nguồn mở cho máy học và trí tuệ nhân tạo (AI) sử dụng ngôn ngữ lập trình Python Nó cung cấp một cơ sở mạnh mẽ cho việc xây dựng, huấn luyện và triển khai mạng nơ-ron và mô hình học máy khác nhau. PyTorch được phát triển bởi Facebook's AI Research (FAIR) và được ưa chuộng trong cộng đồng nghiên cứu AI nhờ tính linh hoạt, tài liệu phong phú và cộng đồng hỗ trợ mạnh mẽ.

Thư viện argparse : argparse là một thư viện trong Python được sử dụng để xử lý và phân tích các tham số và tùy chọn dòng lệnh khi chạy một ứng dụng từ dòng lệnh Nó giúp bạn định nghĩa các đối số cần thiết cho ứng dụng của mình và tự động tạo ra giao diện dòng lệnh để người dùng có thể cung cấp các đối số này khi chạy chương trình. argparse giúp làm cho việc giao tiếp với ứng dụng từ dòng lệnh trở nên dễ dàng và hiệu quả.

Thư viện Numpy : NumPy (Numeric Python) là một thư viện mã nguồn mở quan trọng trong ngôn ngữ lập trình Python được sử dụng để làm việc với mảng và ma trận nhiều chiều NumPy cung cấp một loạt các hàm và phương thức để thực hiện các phép toán số học và thống kê trên dữ liệu số, làm cho việc xử lý dữ liệu đa chiều trở nên hiệu quả và nhanh chóng Thư viện này thường được sử dụng chung với các thư viện khác trong lĩnh vực khoa học dữ liệu và máy học để phân tích và xử lý dữ liệu số một cách dễ dàng và hiệu quả.

Thư viện tensorboardX : TensorBoardX là một thư viện mã nguồn mở cho phép bạn trực quan hóa dữ liệu và mô hình trong quá trình đào tạo mạng nơ-ron sử dụng TensorFlow và PyTorch trong ngôn ngữ lập trình Python Nó cung cấp một giao diện tương tác trực quan thông qua trình duyệt web, giúp bạn theo dõi quá trình đào tạo và hiểu rõ hơn về hoạt động của mô hình của bạn bằng các biểu đồ và đồ thị. TensorBoardX là một công cụ hữu ích cho việc phân tích và tối ưu hóa mạng nơ-ron và các quá trình học máy.

Thư viện OpenCV : OpenCV là một thư viện mã nguồn mở phát triển cho xử lý hình ảnh và thị giác máy tính OpenCV cung cấp nhiều công cụ và chức năng cho việc xử lý hình ảnh, phát hiện đối tượng, nhận dạng khuôn mặt, theo dõi chuyển động, và nhiều ứng dụng khác liên quan đến thị giác máy tính.

XÂY DỰNG TRÒ CHƠI FLAPPY BIRD BẰNG THUẬT TOÁN

Giới thiệu tổng quan về Deep Q-Learning

Deep Q-Learning (DQL) là một thuật toán trong học tăng cường (reinforcement learning) sử dụng mạng nơ-ron sâu để học và cải thiện chiến lược hành động của một tác tử (agent) trong một môi trường DQL dựa trên việc xây dựng và cập nhật hàm giá trị hành động (Q-value function) để tối ưu hóa các hành động tại từng trạng thái.

Thuật toán Deep Q-learning bao gồm:

Hàm Giá Trị Hành Động (Q-Value Function):

Mục tiêu của DQL là học một hàm giá trị hành động Q(s, a) cho mỗi trạng thái s và hành động a Hàm này đo lường giá trị của việc thực hiện hành động a trong trạng thái s.

Mạng Nơ-ron Sâu (Deep Neural Network):

DQL sử dụng một mạng nơ-ron sâu để xấp xỉ và cập nhật hàm giá trị hành động Q. Mạng này có thể bao gồm nhiều tầng ẩn (hidden layers) để biểu diễn các hàm phức tạp.

Cập Nhật Hàm Giá Trị Hành Động:

DQL sử dụng thuật toán Q-Learning để cập nhật hàm giá trị hành động Cụ thể, nó sử dụng phương trình Bellman để cập nhật giá trị Q cho mỗi cặp trạng thái-hành động. Công thức cập nhật Q (s, a) là: Q(s, a) = Q(s, a) + α * [R + γ * max(Q(s', a')) - Q(s, a)] Trong đó: α là tốc độ học tập (learning rate).

R là phần thưởng nhận được sau khi thực hiện hành động a trong trạng thái s. γ là hệ số giảm (discount factor) để cân nhắc tương lai. s' là trạng thái tiếp theo sau khi thực hiện hành động a trong trạng thái s. a' là hành động tốt nhất được chọn dựa trên giá trị Q (s', a').

Mô Phỏng Tương Tác Với Môi Trường:

Tác tử tương tác với môi trường bằng cách thực hiện hành động và nhận phần thưởng từ môi trường.

DQL sử dụng dữ liệu từ các tương tác này để cập nhật giá trị Q và cải thiện chiến lược hành động.

Exploration vs Exploitation : DQL đối mặt với vấn đề khám phá (exploration) và khai thác (exploitation) Để đảm bảo khám phá môi trường, DQL thường sử dụng cơ chế epsilon-greedy để chọn hành động ngẫu nhiên một phần thời gian và chọn hành động tốt nhất dựa trên giá trị Q còn lại.

Huấn Luyện Bằng Dữ Liệu Kinh Nghiệm : DQL lưu trữ các trạng thái, hành động, phần thưởng và trạng thái tiếp theo vào bộ nhớ và sử dụng dữ liệu này để huấn luyện mạng nơ-ron sâu.

Các Tham Số Quan Trọng : Các tham số quan trọng trong DQL bao gồm tốc độ học tập (learning rate), hệ số giảm (discount factor), và các tham số của mạng nơ-ron sâu như số lớp ẩn, kích thước batch, và thời gian cập nhật mạng.

Hội Tụ Và Điều Khiển Khi Cần Thiết : DQL có thể cần hàng triệu vòng lặp để hội tụ đối với các môi trường phức tạp Điều này yêu cầu quản lý các tham số và kiểm soát quá trình huấn luyện.

DQL đã đạt được thành công trong nhiều nhiệm vụ học tăng cường và là một trong những công cụ quan trọng trong lĩnh vực trí tuệ nhân tạo.

2.1.3 Đặc điểm của thuật toán

Thuật toán Deep Q-Learning (DQL) có một số đặc điểm quan trọng sau:

Kết hợp học tăng cường và học máy sâu (Deep Learning): DQL kết hợp hai lĩnh vực chính là học tăng cường và học máy sâu Nó sử dụng mạng nơ-ron sâu (Deep Neural

Network) để xấp xỉ hàm giá trị hành động (Q-function) để ước tính giá trị tối ưu của các hành động trong một môi trường.

Sử dụng hàm giá trị hành động (Q-value): DQL dựa vào hàm giá trị hành động (Q- value) để đo lường giá trị của việc thực hiện một hành động cụ thể trong một trạng thái cụ thể Mục tiêu của DQL là học và cập nhật Q-value để đạt được giá trị Q tối ưu cho mọi trạng thái và hành động.

Phương pháp giải quyết vấn đề chuỗi thời gian (Temporal Credit Assignment):

DQL sử dụng nguyên tắc "học tăng cường" để tìm hiểu cách ước tính giá trị của hành động hiện tại dựa trên các hành động và trạng thái trước đó trong một chuỗi thời gian.

Kỹ thuật mẫu (Experience Replay): DQL sử dụng kỹ thuật Experience Replay để lưu trữ và sử dụng lại các trải nghiệm trước đó Điều này giúp cải thiện ổn định của quá trình học bằng cách ngẫu nhiên chọn các trải nghiệm từ bộ nhớ và tránh trường hợp quá trình học bị quá nghiêm ngặt.

Mục tiêu cố định (Fixed Target): DQL sử dụng một mạng nơ-ron mục tiêu cố định để ước tính Q-value tối ưu trong mục tiêu Mạng nơ-ron này được cập nhật chậm hơn mạng chính (mạng chính được đào tạo để dự đoán Q-value) để làm cho quá trình học ổn định hơn.

Học phần phần (Off-Policy Learning): DQL là một thuật toán học phần phần, có nghĩa là nó có thể học từ dữ liệu trải nghiệm thu thập từ bất kỳ chiến lược hành động nào, không cần biết chiến lược đó là tốt hay không. Ứng dụng rộng rãi: DQL đã được áp dụng rộng rãi trong nhiều ứng dụng như trò chơi điện tử, robot tự hành, quản lý tài sản, quản lý chuỗi cung ứng và nhiều lĩnh vực khác.

2.1.4 Ứng dụng của thuật toán Deep Q-Learning

Áp dụng thuật toán vào dự án

- Dưới đây là cách chúng em áp dụng thuật toán Deep Q – learning vào trò chơi

Flappy Bird để AI có thể tự động chơi game.

Bước 1: Chuẩn bị môi trường Đầu tiên, chúng ta xác định trạng thái (state), hành động (action), phần thưởng (reward), và trạng thái tiếp theo (next state) của môi trường Flappy Bird

Bước 2: Tạo mạng Nơ-ron Q-Network

DQL sử dụng một mạng nơ-ron để xấp xỉ hàm Q-value Chúng ta tạo một Q-network với đầu ra tương ứng với số hành động có thể thực hiện Mạng nơ-ron này đã được định nghĩa trong tệp ‘deep_q_network.py’.

Bước 3: Khởi tạo bộ nhớ lặp lại (Replay Memory)

DQL sử dụng bộ nhớ lặp lại để lưu trữ trạng thái trước đó và hành động, cho phép chúng ta lấy ngẫu nhiên các mẫu để huấn luyện mô hình

Bước 4: Huấn luyện mô hình DQL

Trong vòng lặp huấn luyện, chúng ta sẽ thực hiện các bước sau:

+ Lấy trạng thái hiện tại từ môi trường.

+ Dự đoán Q-value cho mỗi hành động từ mạng nơ-ron.

+ Thực hiện hành động dựa trên chiến lược epsilon-greedy.

+ Lấy trạng thái tiếp theo sau khi thực hiện hành động.

+ Lưu trạng thái hiện tại, hành động, phần thưởng, và trạng thái tiếp theo vào bộ nhớ lặp lại.

+ Lấy một mẫu ngẫu nhiên từ bộ nhớ lặp lại.

+ Tính toán giá trị mục tiêu (target value) dựa trên quy tắc Bellman.

+ Thực hiện gradient descent để cập nhật mạng Nơ-ron Q-network.

+ Cập nhật trạng thái hiện tại để trở thành trạng thái tiếp theo.

+ Lặp lại quá trình huấn luyện cho một số lần xác định.

Bước 5: Ghi lại kết quả và mô hình

Trong quá trình huấn luyện, chúng ta sẽ ghi lại các thông số quan trọng và mô hình Ở đây chúng ta sử dụng thư viện TensorboardX để ghi log.

Bước 6: Điều chỉnh siêu tham số

Siêu tham số như learning rate, kích thước bộ nhớ lặp lại, và các siêu tham số khác cần được điều chỉnh cho phù hợp với bài toán

Bước 7: Kiểm tra mô hình

Cuối cùng, sau khi huấn luyện xong, chúng ta sẽ kiểm tra mô hình của mình bằng cách đặt nó vào môi trường và xem cách nó thực hiện

Bằng cách đó ta lặp lại quá trình huấn luyện cho đến khi đạt được số lần lặp cố định.

Mô hình DQN được lưu lại để sử dụng trong các thử nghiệm hoặc trong quá trình chơi trò chơi Ta có thể tạo ra một AI agent có thể chơi Flappy Bird mãi mãi mà không bao giờ chết.

XÂY DỰNG VÀ TRIỂN KHAI TRÒ CHƠI

Cài đặt chương trình

3.1.1 Cài đặt và định nghĩa tham số, mô hình và các hàm hỗ trợ

- Đầu tiên ta sẽ import các thư viện, hàm và các module cần thiết để bắt đầu đào tạo mạng nơ-ron Deep Q-Network Code sử dụng argparse để cấu hình các tham số từ dòng lệnh, tensorboardX để ghi dữ liệu để hiển thị trong TensorBoard, giúp theo dõi quá trình đào tạo và hiệu suất của mô hình

- Tiếp theo ta sử dụng thư viện argparse để quản lý các tham số trong code Các tham số bao gồm image_size, batch_size, optimizer, learning rate… Tham số optimizer có giá trị mặc định là adam (Adaptive Moment Estimation), giúp tăng tốc quá trình học cho AI.

- Tiếp theo ta sẽ kiểm tra xem máy tính hiện tại đang có GPU hay không để thiết lập seed (giá trị ban đầu) Nếu có, nó sẽ generator số ngẫu nhiên thành ‘123’ để đảm bảo tính tái sản xuất, nếu không có nó sẽ dùng CPU để generator Seed giúp đảm bảo rằng mỗi lần chạy sẽ tạo ra các số ngẫu nhiên giống nhau, giúp mạng nơron có thể tái tạo kết quả.

- Ta tạo mô hình Deep Q Network

- Ta sử dụng thư viện os và shutil trong đoạn code tiếp theo để kiểm tra xem thư mục

‘opt.log_path’ có tồn tại hay không Nếu nó tồn tại, nó sẽ bị xóa và được tạo mới để sử dụng trong quá trình chạy chương trình giúp cải thiện hiệu suất.

- Ta sử dụng tensorboard để ghi lại log trong thư mục mới để hiển thị biểu đồ và đồ thị thống kê trong giao diện của nó, giúp theo dõi sự phát triển của mô hình.

- Ta tạo một bộ tối ưu hóa Adam và gán nó vào biến ‘optimizer’ để có thể sử dụng để cập nhật các trọng số của mô hình trong quá trình huấn luyện và thiết lập tốc độ học cho quá trình huấn luyện

- Ta tạo hàm mất mát (MSE) để đo lường sai lệch giữa dự đoán và giá trị thực tế của mô hình trong quá trình huấn luyện, nó dùng để đánh giá hiệu suất của mô hình và điều chỉnh các tham số để làm giảm sai lệch đi trong quá trình huấn luyện, giúp tối ưu hóa để cho quá trình học tốt hơn

- Ta tạo một object ‘game_state’ bằng cách khởi tạo class ‘FlappyBird()’, object

‘game_state’ đại diện cho trạng thái hiện tại của game, nó bao gồm vị trí con chim, các ống chướng ngại vật, điểm số,… Ở dòng 2 ta gọi method ‘next_frame(0)’ trên object ‘game_state’ Nó trả về ‘image, reward và terminal’ để thu thập thông tin về khung hình, thưởng và trạng thái kết thúc để sử dụng trong quá trình huấn luyện AI.

- Tiếp theo sẽ đến phần tiền xử lý ảnh, ta sẽ loại bỏ các phần không cần thiết để mô hình chạy ổn định hơn, nó còn gọi hàm ‘pre_processing’ với ba đối số giúp chuyển đổi hình ảnh thành định dạng phù hợp cho mạng nơron sâu để chuẩn bị dữ liệu hình ảnh cho quá trình huấn luyện. Ở dòng dưới, hàm chuyển đổi mảng hình ảnh ‘image’ từ NumPy thành một tensorPyTorch để thực hiện tính toán và huấn luyện mạng.

- Ta kiểm tra xem GPU có sẵn để sử dụng hay không, nếu có nó sẽ chuyển mô hình

‘model’ từ CPU sang GPU, giúp tăng tốc tính toán của mô hình Dòng ‘image image.cuda()’ cũng tương tự như vậy, nó chuyển biến ‘image’ từ CPU sang GPU giúp cho việc tiền xử lý ảnh và tính toán trên hình ảnh tăng tốc đối với những máy có GPU.

- Ta tạo trạng thái ban đầu từ 4 khung hình giống nhau, xếp chồng lại và tạo thành một tensor 4D có dạng (1, 4, C, H, W); 1 đại diện cho trạng thái đang xem xét, ở đây là 1 trạng thái; 4 là số lần lặp lại trạng thái gần đây; C là số kênh trong ảnh, đại diện cho màu sắc; H là chiều cao, đại diện cho số pixel theo chiều dọc; W là chiều rộng, đại diện cho số pixel theo chiều ngang

- Ta khởi tạo một danh sách (list) rỗng tên là ‘replay_memory’ để lưu trữ các trạng thái của trò chơi, hành động đã thực hiện, phần thưởng, trạng thái tiếp theo và thông tin về việc trò chơi đã hoàn thành hay chưa Khi một trạng thái mới được tạo ra, thông tin sẽ được lưu vào ‘replay_memory’ để sau này sử dụng lại để huấn luyện mô hình

‘iter = 0’ là ta khởi tạo biến ‘iter’ với giá trị bằng 0 Biến sẽ dùng để đếm số lần lặp trong quá trình huấn luyện khi ‘iter’ đạt giá trị ‘opt.num_iters’ nghĩa là quá trình huấn luyện sẽ thực hiện trong ‘opt.num_iters’ lần lặp Trong mỗi lần lặp, dữ liệu mới sẽ được thêm vào ‘replay_memory’ và mô hình sẽ được huấn luyện lại dựa trên dữ liệu trong ‘replay_memory’

3.1.2 Sử dụng hàm ‘train’ để huấn luyện mô hình Deep Q-Network

- Tiếp theo ta sẽ dự đoán giá trị Q cho các hành động có thể thực hiện trong trạng thái hiện tại bằng đoạn code bên dưới, biến ‘prediction’ sẽ chứa giá trị Q (ở đây là ‘[0]’ ) dự đoán cho hành động đầu tiên trong trạng thái hiện tại, chúng ta sẽ cải thiện dự đoán giá trị Q này để có thể chọn các hành động tối ưu hóa hơn trong trò chơi.

- Tiếp đến là quá trình lựa chọn hành động,ta sẽ sử dụng một kỹ thuật gọi là "epsilon- greedy policy" để quyết định xem liệu hệ thống sẽ thực hiện một hành động ngẫu nhiên hay hành động được dự đoán tốt nhất từ mô hình “epsilon ” là một tham số quyết định mức độ của việc thực hiện hành động ngẫu nhiên Nó bắt đầu từ một giá trị“opt.initial_epsilon” và dần giảm xuống đến “opt.final_epsilon” trong suốt quá trình huấn luyện (số vòng lặp “opt.num_iters”)

Ta khởi tạo biến “u” từ một số ngẫu nhiên từ phân phối đều trong khoảng từ 0 đến 1 (u

Những bước để cài đặt và khởi chạy chương trình

- Bước 1: chúng ta tiến hành tải visual studio code trên trang web và tiến hành cài đặt https://code.visualstudio.com/download

- Bước 2: chúng ta tải python version 3.11.5 trên trang web và tiến hành cài đặt python https://www.python.org/downloads/release/python-3115/

+ Chúng ta tích vào ô “Add python.exe to PATH rồi ấn “Install Now”

- Bước 3 : Khi đã cài đặt xong chúng ta vào cmd , gõ lệnh python –version để kiểm tra xem phiên bản python chúng ta cài đặt đã chính xác chưa Nếu đúng, cmd sẽ trả về tên phiên bản của python chúng ta đang dùng, nếu sai chúng ta sẽ tiến hành lại từ bước 2 hoặc gỡ cài đặt phiên bản python có sẵn trong máy và cài bản 3.11.5

- Bước 4: Khi đã đúng phiên bản python chúng ta tiến hành cài đặt các thư viện cần thiết cho việc triển khai dự án, ở đây là Numpy, pygame, tensorboardX, pytorch. + Để tiến hành cài pygame, chúng ta vào cmd gõ “pip install pygame”

Tương tự như cài pygame chúng ta tiến hành lần lượt cài các thư viện còn lại:

+ Cài đặt Numpy: chúng ta vào cmd gõ “pip install numpy”

+ Cài đặt tensorboardX: chúng ta vào cmd gõ “pip install tensorboardX”

+ Cài đặt pytorch: chúng ta vào cmd gõ “pip install torch”

+ Nếu bước cài đặt pytorch bị lỗi thì do chúng ta đã cài sai phiên bản python => làm lại từ bước 2.

- Bước 5: Khi đã cài đặt thư viện, visual studio code, python hoàn tất chúng ta bật visual studio code => open folder => mở file code lên

- Bước 6: Khi đã mở file code lên, chúng ta vào phần train.py => ấn vào phần “Run”

- Tại phần train.py này, mạng Deep Q-Network sẽ tiến hành huấn luyện con chim để có thể tự học hỏi mà không va vào cột Khi đã huấn luyện xong, chúng ta sẽ đến với bước 7

- Bước 7: Mở phần test.py => Run => Run Without Debugging => ở đây chúng ta sẽ có thể xem kết quả từ phần train.py có được => đó là một mô hình AI chơi FlappyBird bất tử mà không bao giờ chết

Ngày đăng: 28/05/2024, 21:47

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

TÀI LIỆU LIÊN QUAN

w