Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
1,22 MB
Nội dung
ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN KHOA CÔNG NGHỆ PHẦN MỀM - o0o - BÁO CÁO CUỐI KỲ ĐỒ ÁN Đề tài: AI Flappy Bird SE121.L21.PMCL Giáo viên hướng dẫn: Huỳnh Tuấn Anh Nhóm thực hiện: Nguyễn Trần Hoàng Hiếu - 18520054 Nguyễn Đức Chiến - 18520528 NHẬN XÉT CỦA GIẢNG VIÊN Người nhận xét (Ký tên ghi rõ họ tên) MỤC LỤC LỜI CẢM ƠN TỔNG QUAN VỀ ĐỀ TÀI Đề tài: Giới thiệu đề tài Cách xây dựng: Mục tiêu: 4 4 Bước đầu Kế hoạch Phân tích Mục tiêu: Thuật tốn AI phù hợp: 5 5 KHÁI QUÁT VỀ NỘI DUNG TÌM HIỂU Trí tuệ nhân tạo AI Machine learning Reinforcement learning Giải thuật di truyền 6 6 Flappy bird THỰC HIỆN NGHIÊN CỨU 12 HƯỚNG PHÁT TRIỂN: 13 KẾT LUẬN: 14 LỜI CẢM ƠN Lời đầu tiên, em xin chân thành gửi lời cảm ơn đến trường Đại học Công nghệ Thơng tin tạo điều kiện cho em có môi trường học tập tốt, tự sáng tạo Em xin cảm ơn tất thầy, cô hết lòng quan tâm, dạy bảo cho chúng em tảng kiến thức tốt, hỗ trợ chúng em nhiều q trình hồn thành đồ án Em xin gửi lời cảm ơn chân thành đến thầy Huỳnh Tuấn Anh - giảng viên khoa Công nghệ phần mềm - tận tình hướng dẫn, góp ý giải đáp thắc mắc cho nhóm suốt trình làm đề tài Mặc dù nhóm hồn thành đồ án khơng thể tránh khỏi sai sót, chúng em mong nhận lời nhận xét, đánh giá chân thành từ phía thầy, Nhóm chúng em xin chân thành cảm ơn Thành phố Hồ Chí Minh, ngày 29 tháng năm 2021 Nhóm thực I TỔNG QUAN VỀ ĐỀ TÀI Đề tài: Huấn luyện AI chơi game Flappy Bird Giới thiệu đề tài Khi xã hội ngày phát triển máy móc ngày tăng khả năng, trí tuệ nhân tạo (hay AI) theo phát triển ngày mạnh với nhiều ứng dụng thiết thực nghiên cứu khoa học hay đời sống người Để kiểm tra mức độ thông minh AI, mà theo nhà khoa học tin tưởng, thơng qua trị chơi Nhờ đo lường so sánh sản phẩm AI để xác định sản phẩm thực công việc tốt Trong nhiều thập kỷ qua, họ tập hợp thuật tốn trí tuệ nhân tạo đối đầu với người nhiều trò chơi với quy tắc thử thách khác cờ vua, poker hay cờ vây,… Chính thế, nhóm chúng em chọn huấn luyện AI chơi game làm đề tài lần mà cụ thể huấn luyện AI chơi game Flappy Bird Cách xây dựng: Integrated Development Environment: Pycharm Sử dụng ngôn ngữ lập trình Python Framework: Pygame, Neat python Sử dụng Reinforcement learning ( huấn luyện tăng cường) thuật toán Genetic Algorithm để huấn luyện AI Mục tiêu: Tạo AI chơi flappy bird mà thua II Bước đầu Kế hoạch Mục đích Nghiên cứu Nghiên cứu Python AI Thực thi Tạo Bot chơi Flappy Bird Huấn luyện Biến Bot thành AI, bot tự huấn luyện để lấy thông số đầu vào Phân tích a Mục tiêu: Mục tiêu trò chơi điều khiển chim bay qua ống Nếu chim chạm vào chướng ngại vật trị chơi kết thúc Mỗi chim vượt qua cặp ống người chơi nhận điểm.(Source: Wiki) b Thuật toán AI phù hợp: Sau nhiều tìm hiểu nghiên cứu nhóm nhận thấy thuật toán Genetic Algorithm (thuật toán di truyền) phù hợp để xây dựng hệ thống III KHÁI QT VỀ NỘI DUNG TÌM HIỂU Trí tuệ nhân tạo a AI ● AI - Artificial Intelligence hay cịn gọi Trí tuệ nhân tạo ngành khoa học, kỹ thuật chế tạo máy móc thơng minh, đặc biệt chương trình máy tính thơng minh ● AI thực cách nghiên cứu cách suy nghĩ người, cách người học hỏi, định làm việc giải vấn đề đó, sử dụng kết nghiên cứu tảng để phát triển phần mềm hệ thống thông minh, từ áp dụng vào mục đích khác sống Nói cách dễ hiểu AI việc sử dụng, phân tích liệu đầu vào nhằm đưa dự đoán đến định cuối b Machine learning ● Machine learning (ML) hay máy học nhánh trí tuệ nhân tạo (AI), lĩnh vực nghiên cứu cho phép máy tính có khả cải thiện thân chúng dựa liệu mẫu (training data) dựa vào kinh nghiệm (những học) Machine learning tự dự đốn đưa định mà khơng cần lập trình cụ thể c Reinforcement learning ● Reinforcement learning lĩnh vực học máy, nghiên cứu cách thức agent môi trường nên chọn thực hành động để cực đại hóa khoản thưởng (reward) lâu dài Các thuật tốn học tăng cường cố gắng tìm chiến lược ánh xạ trạng thái giới tới hành động mà agent nên chọn trạng thái d Giải thuật di truyền - Giới thiệu Genetic Algorithm - GAs GAs (John Holland, 1975) mơ tiến hóa tự nhiên (Darwinian Evolution) mức gen sử dụng tư tưởng survival of the fittest (chọn lọc tự nhiên) Một cá thể (chromosome) mô tả lời giải ứng viên toán Một tập cá thể “alive”, gọi quần thể (population) tiến hóa từ hệ tới hệ khác phụ thuộc vào thích nghi cá thể Thế hệ sinh chứa lời giải toán - Giải thuật ○ Khởi tạo quần thể P(0) ○ Chỉ số i hệ thứ i ○ Lặp đến quần thể hội tụ đạt đến tiêu chuẩn kết thúc + Đánh giá độ thích nghi cá thể P(i) + Lựa chọn cha từ P(i) dựa độ thích nghi chúng P(i) + Áp dụng toán tử Gen (crossover, mutation) từ cha chọn để sinh + Đạt hệ P(i + 1) gồm cá thể cha P(i) - Các thành phần GAs a Khởi tạo (Initialization) Tạo ngẫu nhiên số cá thể chấp nhận để quần thể phù hợp với kích thước quần thể quy định sẵn b Hàm thích nghi (Fitness Function) Gán giá trị thích nghi cho cá thể Giá trị thích nghi sát với thực tế độ xác cao c Lựa chọn để kết hợp lại (Selection) Có nhiều kiểu lựa chọn + roulette wheel selection + Boltzman selection + Tournament selection + rank selection + steady state selection + Elitism d Mã hóa Mã hóa chuỗi gene cá thể thành dạng thích hợp (nhị phân, mã hóa giá trị, mã hóa hốn vị) e Lai ghép Sau chọn cặp NST dùng để lai, ta tiến hành cắt ghép để tạo NST (con mới) Có nhiều hình thức lai ghép: lai điểm, lai nhiều điểm, lai phép toán nhị phân, … f Đột biến Sau lai ghép, để tạo đa dạng quần thể, ta làm phép đột biến vài cá thể Trên chuỗi gene, vài vị trí, làm thay đổi giá trị đoạn gene g Đánh giá Khi có quần thể mới, ta tiến hành kiểm tra đánh giá xem cá thể tốt nhất, cá thể tồi Loại bỏ bớt cá thể tồi để lặp lại bước h Tiêu chuẩn kết thúc Khơng có q trình khơng thể kết thúc Q trình tiến hóa dừng lại sau khoảng tgian quy định(một số hệ) sau hội tụ (không thể tìm thêm cá thể tốt hơn) Flappy bird Flappy Bird (tạm dịch "chú chim vỗ cánh") trò chơi điện thoại Nguyễn Hà Đơng, lập trình viên Hà Nội, Việt Nam phát triển, dotGEARS, studio phát triển game quy mơ nhỏ, hoạt động độc lập có trụ sở Việt Nam phát hành vào năm 2013 Trò chơi trình bày theo phong cách side-scroller (phong cách game với đối tượng nhìn thấy mặt bên (side-view) di chuyển từ cạnh trái sang cạnh phải hình), người chơi điều khiển chim, cố gắng vượt qua hàng ống màu xanh mà không chạm vào chúng.(Source: Wiki) IV THỰC HIỆN Tạo Flappy bird game Hiện game Flappy bird phổ biến toàn giới, mẫu game Flappy bird nhiều người làm lại Ta clone nhanh open source Flappy Bird github tiếp tục phát triển AI Tổng quan triển khai Tạo AI: AI tạo với hỗ trợ package neat-python, neat-python cung cấp thuật tốn có sẵn người dùng modify thơng tin tính fitness để tạo AI phù hợp với dự án Khi phân tích, ta nhận thấy cần thông số đảm bảo với người chơi Flappy bird thông thường là: độ cao chim, độ cao ống độ cao ống Máy tính để đưa định hợp lý, ta truyền thông số vào AI để chúng định làm Nhưng thơng số thơi chưa đủ, chúng quan trọng, số trường khác việc ưu tiên khoảng cách cột cột so với chim sẻ khác Vì để đưa lựa chọn xác, ta phải cho thơng số cân nặng (weight) Từ ta có cách tính điểm: a=Độ cao chim b=Độ cao ống c=Độ cao ống score=a*w1 + b*w2 + c*w3 Với w1 – w3 weight tương ứng với thông số tạo ngẫu nhiên Và xử lý, ta đọc tất trường hợp nhảy chim, tính score cho vị trí, chọn trường hợp có score tốt để lưu lại vào khả nhảy chim 10 Đầu tiên nhóm tạo hàm tạo cá thể chim Sau với hàm tính fitness quần thể trả điểm số cá thể quần thể theo trường hợp: - Điểm chim +0.1 di chuyển - Điểm chim +5 nhảy qua ống - Điểm chim giảm điểm nhảy trúng ống Sau áp dụng mơ hình thuật tốn tiến hóa để weights phù hợp 11 V NGHIÊN CỨU ● Để đánh giá kết nghiên cứu, áp dụng kiểu active function khác Tanh, Sigmoid, Relu cho output để xem độ hiệu mà chúng mang lại Số lượng cá thể đời: 10 Số lượng đời tối đa: Case 1: Tanh (Hyperbolic Tangent) 12 Case 2: Relu (Rectified Linear Unit) Case 3: Sigmoid Case Avg fitness Max fitness Final Population Rank Tanh 15.36 127.1 Relu 19.46 130.6 Sigmoid 19.66 153.2 Dựa vào bảng so sánh, Relu phù hợp với AI nhóm, dùng relu làm activation function AI đạt khả ghi điểm cao nhanh (sau gen) VI HƯỚNG PHÁT TRIỂN: Nhóm dự định phát triển AI flappy bird chơi với nhiều thử thách cho cột di chuyển lên xuống được, thông số trọng lực ngẫu nhiên, Ngồi nhóm tự thử thách tạo AI chơi trò chơi khác 13 VII KẾT LUẬN: Sau thời gian nghiên cứu tìm tịi, nhóm tiếp thu nhiều kiến thức tạo AI chơi Flappy Bird không chết AI bay 1000 điểm tiếng đồng hồ bay tiếp Các kiến thức dùng cho học tập dự án sau này, nhóm vui chọn đề tài tốt mang lại nhiều kiến thức bổ ích Cảm ơn thầy cô bạn đọc qua báo cáo 14 THAM KHẢO Link github: https://github.com/TB3C-Hieu/AI-Flappy_Bird Genetic Algorithm: https://towardsdatascience.com/genetic-algorithm-implementation-in-pyt hon-5ab67bb124a6 NEAT python: https://neat-python.readthedocs.io/en/latest/ Reinforcement learning: https://deepsense.ai/what-is-reinforcement-learning-the-complete-guide/ 15 ... Tạo Flappy bird game Hiện game Flappy bird phổ biến toàn giới, mẫu game Flappy bird nhiều người làm lại Ta clone nhanh open source Flappy Bird github tiếp tục phát triển AI Tổng quan triển khai... vị) e Lai ghép Sau chọn cặp NST dùng để lai, ta tiến hành cắt ghép để tạo NST (con mới) Có nhiều hình thức lai ghép: lai điểm, lai nhiều điểm, lai phép toán nhị phân, … f Đột biến Sau lai ghép,... cường) thuật toán Genetic Algorithm để huấn luyện AI Mục tiêu: Tạo AI chơi flappy bird mà thua II Bước đầu Kế hoạch Mục đích Nghiên cứu Nghiên cứu Python AI Thực thi Tạo Bot chơi Flappy Bird Huấn