1. Trang chủ
  2. » Giáo Dục - Đào Tạo

xây dựng phần mềm ứng dụng giải bài toán leo đồi và tìm kiếm tốt nhất đầu tiên

15 14 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

Thông tin cơ bản

Định dạng
Số trang 15
Dung lượng 0,92 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Tính đơn giản của giải thuật khiến nó trở thành lựa chọn đầu tiên trong số các toán, một bài toán quen thuộc với những người lập trình, chúng em sẽ đưa ra cơ chế của thuật toán, ưu nhược

Trang 1

TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MÔI TRƯỜNG HÀ NỘI

KHOA CÔNG NGHỆ THÔNG TIN -

KỲ THI KẾT THÚC HỌC PHẦN HỌC KÌ ……… NĂM HỌC 2020-2021

Tên đề tài: Xây dựng phần mềm ứng dụng giải bài toán leo đồi và tìm

kiếm tốt nhất đầu tiên

Giảng viên hướng dẫn : Nguyễn Đức Toàn Sinh viên thực hiện :

Hà Nội - 2021

Trang 2

i

MỤC LỤC

LỜI MỞ ĐẦU 1

1 Lý do chọn đề tài 1

2 Đối tượng và phạm vi nghiên cứu của đề tài 1

3 Nội dung 1

CHƯƠNG 1.TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO 3

1.1 Khái niệm về AI 3

1.2 Ứng dụng của AI 4

1.3 Machine Learning 4

CHƯƠNG 2 MÔ TẢ THUẬT TOÁN 7

2.1 Thuật toán Best First Search 7

2.1.1 Kỹ thuật tìm kiếm tốt nhất đầu tiên 7

2.1.2 Hàm đánh giá 7

2.1.3 Ưu và nhược điểm của phương pháp tìm kiếm tốt nhất đầu tiên 7

2.2 Thuật toán tìm kiếm Hill Climbing 8

2.2.1 Giới thiệu giải thuật Hill Climbing 8

2.2.2 Nguồn gốc giải thuật Hill climbing 9

2.2.3 Mô tả thuật toán – Mã giả 9

2.2.4 Kỹ thuật tìm kiếm leo đồi 11

2.2.5 Các vấn đề và hạn chế của thuật toán 12

2.2.6 Nhận xét giải thuật 13

CHƯƠNG 3.DEMO SẢN PHẨM 14

Tài Liệu Tham Khảo 15

Trang 3

LỜI MỞ ĐẦU

1 Lý do chọn đề tài

Trong khoa học máy tính, giải thuật Hill Climbing là một kỹ thuật tối ưu toán học thuộc họ tìm kiếm cục bộ Nó thực hiện tìm một trạng thái tốt hơn trạng thái hiện tại để mở rộng Để biết trạng thái tiếp theo nào là lớn hơn, nó dùng một hàm H

để xác định trạng thái nào là tốt nhất

Hill Climbing dễ dàng tìm thấy một giải pháp tốt cục bộ (local optimum) nhưng khó tìm thấy giải pháp tốt nhất (global optinum) trong tất cả các giải pháp được đưa

ra (search space) Hill Climbing phù hợp để giải các bài toán “convex” (dịch tạm: lồi) như là tìm kiếm đơn giản (simplex programming) trong lập trình tuyến tính, tìm kiếm nhị phân

Tính đơn giản của giải thuật khiến nó trở thành lựa chọn đầu tiên trong số các

toán, một bài toán quen thuộc với những người lập trình, chúng em sẽ đưa ra cơ chế của thuật toán, ưu nhược điểm cũng như độ phức tạp của những thuật

2 Đối tƣợng và phạm vi nghiên cứu của đề tài

2.1 Đối tượng nghiên cứu: Đề tài tập trung nghiên cứu phương pháp giải bài toán

tìm kiếm leo đồi

2.2 Phạm vi nghiên cứu: là sinh viên khoa Công Nghệ Thông Tin đang học tập tạị

trường Đại Học Tài Nguyên Và Môi Trường Hà Nội

3 Nội dung:

- Tìm hiểu khái quát về sự phát triển của Trí Tuệ Nhân Tạo

- Tìm hiểu thuật leo đồi để ứng dụng vào xây dựng phần mềm

- Phân tích thiết kế hệ thống Xây dựng hệ cơ sở dữ liệu cho đề tài

Trang 4

CHƯƠNG 1: TỔNG QUAN VỀ TRÍ TUỆ NHÂN TẠO

Trong những năm gần đây, các cụm từ như “AI” hay “Trí tuệ nhân tạo”… dường như đã quá phổ biến trong cuộc sống hiện nay Vậy AI là gì? AI có ý nghĩa như thế nào? Tầm ảnh hưởng như thế nào đến cuộc sống hiện tại?

1.1 Khái niệm về AI

AI - Artificial Intelligence hay còn gọi là Trí tuệ nhân tạo là một ngành khoa học, kỹ

thuật chế tạo máy móc thông minh, đặc biệt là các chương trình máy tính thông minh

AI được thực hiện bằng cách nghiên cứu cách suy nghĩ của con người, cách con người học hỏi, quyết định và làm việc trong khi giải quyết một vấn đề nào đó Sử dụng những kết quả nghiên cứu này như một nền tảng để phát triển các phần mềm và hệ thống thông minh, từ đó áp dụng vào các mục đích khác nhau trong cuộc sống Nói một cách dễ hiểu thì AI là việc sử dụng, phân tích các dữ liệu đầu vào nhằm đưa ra sự dự đoán rồi đi đến quyết định cuối cùng

Tóm lại: Trí tuệ nhân tạo là trí tuệ máy móc được tạo ra bởi con người Trí tuệ này có thể tư duy, suy nghĩ, học hỏi,… như con người Xử lý dữ liệu ở mức độ rộng hơn, quy mô hơn, hệ thống khoa học và nhanh hơn so với con người

AI có ba mức độ khác nhau:

Narrow AI: Trí tuệ nhân tạo được cho là hẹp khi máy có thể thực hiện một nhiệm vụ

cụ thể tốt hơn so với con người Nghiên cứu hiện tại về AI hiện đang ở cấp độ này

General AI: Trí tuệ nhân tạo đạt đến trạng thái chung khi nó có thể thực hiện bất kỳ

nhiệm vụ sử dụng trí tuệ nào có cùng độ chính xác như con người

Strong AI: AI rất mạnh khi nó có thể đánh bại con người trong nhiều nhiệm vụ cụ thể

1.2 Ứng dụng của AI

1.2.1 Ý nghĩa của AI:

– Tạo ra các hệ thống chuyên gia - là các ứng dụng máy tính được phát triển để giải quyết các vấn đề phức tạp trong một lĩnh vực cụ thể, ở mức độ thông minh và chuyên môn

của con người

– Thực hiện trí thông minh của con người trong máy móc - Tạo ra các hệ thống có thể

hiểu, suy nghĩ, học hỏi và hành xử như con người

1.2.2 Ứng dụng AI trong các lĩnh vực của cuộc sống

AI là một ngành khoa học và công nghệ dựa trên nhiều ngành khác như Khoa học máy tính, Toán học, Sinh học, Kỹ thuật…

Hình 1.1 Một số lĩnh vực của AI

Trang 5

Ví dụ ứng dụng trong lĩnh vực y tế:

– Quản trị: Các hệ thống AI trợ giúp các công việc hành chính hàng ngày, để giảm thiểu lỗi của con người và tối đa hóa hiệu quả

– Điều trị từ xa: Đối với các tình huống không khẩn cấp, bệnh nhân có thể liên hệ với

hệ thống AI của bệnh viện để phân tích các triệu chứng, nhập các dấu hiệu quan trọng của

họ và đánh giá xem có cần phải chăm sóc y tế hay không Điều này làm giảm khối lượng công việc của các chuyên gia y tế bằng cách chỉ đưa các trường hợp quan trọng đến họ – Hỗ trợ chuẩn đoán: Thông qua thị giác máy tính và mạng lưới thần kinh tích chập, AI hiện có khả năng đọc quét hình ảnh cộng hưởng từ để kiểm tra khối u và sự phát triển ác tính khác của nó, với tốc độ nhanh hơn so với các bác sĩ x-quang và sai số thấp hơn

– Phẫu thuật có sự trợ giúp của robot: Robot phẫu thuật có sai số rất nhỏ và có thể thực hiện phẫu thuật suốt ngày đêm mà không bị kiệt sức

– Giám sát các chỉ số quan trọng

Ngoài ra còn rất nhiều những ứng dụng trong các lĩnh vực khác trong đời sống như nhận diện khuôn mặt, nhận diện giọng nói, ô tô tự lái…

1.3 Machine Learning

Hình 1.2 Machine Learning

1.3.1 Khái niệm Machine Learning

Machine Learning còn được gọi là học máy, có thể viết ứng dụng có AI mà không sử dụng học máy, nhưng phải viết cả triệu triệu dòng code để xây dựng các trường hợp xảy ra Học máy là cách để có được AI, máy tự học mà không cần phải code nhiều như không có học máy Nói cách khác, nếu AI là mục tiêu thì học máy là phương tiện để đạt được mục tiêu đó

Máy sẽ được “học” bằng cách train nó với một lượng dữ liệu khổng lồ và một thuật toán, thuật toán có khả năng điều chỉnh và xây dựng model Tuy nhiên, nếu như trong training dữ liệu có ngôn ngữ khác trong thực tế (tiếng Việt thay vì tiếng Anh…) thì rất có thể máy sẽ dự báo không chính xác nữa

Về cơ bản, AI hay trí thông minh nhân tạo là công nghệ mô phỏng các quá trình suy nghĩ và học tập của con người cho máy móc, đặc biệt là các hệ thống máy tính Còn Machine Learning là một tập con của AI, là một lĩnh vực nhỏ của khoa học máy tính, nó có khả năng tự học hỏi dựa trên dữ liệu đưa vào mà không cần phải được lập trình cụ thể

1.3.2 Phân nhóm thuật toán Machine Learning

Có hai cách phổ biến phân nhóm các thuật toán Machine Learning: dựa trên phương

Trang 6

thức học (learning style) và dựa trên chức năng (function)

Theo phương thức học, các thuật toán Machine Learning thường được chia làm 4 nhóm:

Supervised learning (Học có giám sát)

Là thuật toán dự đoán đầu ra (outcome) của một dữ liệu mới (new input) dựa trên các cặp ( input, outcome ) đã biết từ trước, còn được gọi là cặp (data, label) - (dữ liệu - nhãn), cũng chính là tập training data (dữ liệu huấn luyện), từ đó tạo ra một hàm số ánh xạ xấp xỉ thật tốt để tính được đầu ra Supervised learning được chia nhỏ thành 2 loại chính: Classification (Phân loại) ( các label của input data được chia thành một số hữu hạn nhóm)

và Regression (Hồi quy) ( label không được chia thành các nhóm mà là một giá trị thực cụ thể)

Unsupervised learning (Học không giám sát)

Trong thuật toán này, chúng ta không biết được outcome hay nhãn mà chỉ có dữ liệu đầu vào, dựa vào cấu trúc của dữ liệu để phân nhóm (clustering) phân nhóm toàn bộ dữ liệu thành các nhóm nhỏ dựa trên sự liên quan giữa các dữ liệu trong mỗi nhóm, giảm số chiều của dữ liệu (dimension reduction) để thuận tiện trong việc lưu trữ và tính toán hoặc khám phá ra một quy luật dựa trên nhiều dữ liệu cho trước

Semi-supervised lerning (Học bán giám sát)

Là thuật toán mà chỉ một phần trong dữ liệu được gán nhãn và nó nằm giữa hai nhóm được nêu bên trên Rất nhiều các bài toán Machine Learning thuộc vào nhóm này vì việc thu thập dữ liệu có nhãn tốn rất nhiều thời gian và có chi phí cao

Reinforcement learning (Học củng cố)

Là các bài toán giúp cho một hệ thống tự động xác định hành vi dựa trên hoàn cảnh để đạt được lợi ích cao nhất Nó chủ yếu được áp dụng vàoGame Theory, các thuật toán cần xác định nước đi tiếp theo để đạt được điểm số cao nhất

1.3.3 Phân loại Marchine Learning

Theo chức năng, Machine Learning được chia thành các loại:

 Regression Algorithms (Thuật toán hồi quy)

 Classification Algorithms (Thuật toán phân loại)

 Instance-based Algorithms (Thuật toán dựa trên sơ đồ)

 Regularization Algorithms (Thuật toán chính quy)

 Bayesian Algorithms (Thuật toán Bayes)

 Clustering Algorithms (Thuật toán phân cụm)

 Artificial Neural Network Algorithms (Thuật toán mạng nơ ron nhân tạo)

 Dimensionality Reduction Algorithms (Thuật toán giảm kích thước)

 Ensemble Algorithms (Thuật toán tập hợp)

Thuật toán Linear Regression (Hồi quy tuyến tính)

Một trong những thuật toán cơ bản nhất của Machine Learning có tên là Linear Regression (Hồi quy tuyến tính), là 1 thuật toán Supervised Learning

Ví dụ: Ta xét các số đo của một căn nhà: rộng mét vuông, có phòng ngủ và cách trung tâm thành phố km, xét nó có giá là bao nhiêu? (Giả sử chúng ta đã có số liệu thống

kê từ 1000 căn nhà trong thành phố đó) khi đó hàm dự đoán sẽ có dạng như thế

Trang 7

nào?

Ta có thể thấy rằng:

 Diện tích nhà càng lớn thì giá nhà càng cao

 Số lượng phòng ngủ càng lớn thì giá nhà càng cao

 Càng xa trung tâm thì giá nhà càng giảm

Do đó hàm số cơ bản nhất mô tả mối quan hệ giữa giá nhà và 3 đại lượng đầu vào là:

Với là giá trị thực, là giá trị dự đoán, là hằng số, là bias (kiểu hệ số tự do) Bài toán chúng ta trở thành đi tìm các hệ số tối ưu

Với là sự sai khác giữa giá trị thực và giá trị dự đoán , để thuận tiện cho việc tính toán, ta xét:

̂ ̅ Với

̅ ̂

̅

là vector (hàng) dữ liệu đầu vào mở rộng Số 1 ở đầu được thêm vào để phép tính đơn giản hơn và thuận tiện cho việc tính toán.Điều chúng ta muốn, tổng sai số là nhỏ nhất, tương đương với việc tìm w để hàm số sau đạt giá trị nhỏ nhất:

∑ ̅

Sau các biến đổi đại số, ta tìm được w thỏa mãn yêu cầu là:

̅ ̅ ̅

Từ đó có thể xây dựng code dự đoán được giá tiền nhà dựa trên các đặc điểm đã cho

Ví dụ hồi quy truyển tính để dự đoán

Ta xét bảng dữ liệu đầu vào sau:

Bảng 1.1 Dữ liệu đầu vào

(cm)

(kg)

(cm)

(kg)

Bài toán đặt ra là: Liệu có thể dự đoán cân nặng của một người dựa vào chiều cao của họ không?

Trang 8

Trên thực tế là không, bởi ngoài chiều cao thì rất nhiều yếu tố khác ảnh hưởng đến cân nặng, tuy nhiên để thuận tiện trong việc xét 1 ví dụ đơn giản, ta giả sử cân nặng sẽ tỉ lệ thuận với chiều cao (người càng cao thì càng nặng)

Do đó ta có thể sử dụng Linear Regression cho việc dự đoán này Để kiểm tra độ chính xác của cân nặng tìm được, chúng ta sẽ giữ lại cột 155 cm và 160 cm để kiểm thử, các cột còn lại được sử dụng để huấn luyện (train) model

Trước tiên, chúng ta cần có hai thư viện numpy cho đại số tuyến tính và matplotlib cho việc vẽ hình

Tiếp theo, chúng ta khai báo và biểu diễn dữ liệu trên một đồ thị

Hình 1.3 Đồ thị biểu diễn dữ liệu

Từ đồ thị này ta thấy rằng dữ liệu được sắp xếp gần như theo 1 đường thẳng, vậy mô hình Linear Regression nhiều khả năng sẽ cho kết quả tốt:

Tiếp theo, chúng ta sẽ tính toán các hệ số và dựa vào công thức

̅ ̅ ̅

Tìm ra được và là:

Ta vẽ đường 1 đường thẳng dự đoán dựa trên và ở trên:

Trang 9

Hình 1.4 Mô hình Linear Regression

Từ đồ thị bên trên ta thấy rằng các điểm dữ liệu màu đỏ nằm khá gần đường thẳng dự

đoán màu xanh Vậy mô hình Linear Regression hoạt động tốt với tập dữ liệu training Bây

giờ, chúng ta sử dụng mô hình này để dự đoán cân nặng của hai người có chiều cao 155 và

160 cm mà chúng ta đã không dùng khi tính toán nghiệm

Kết quả là:

Chúng ta thấy rằng kết quả dự đoán khá gần với số liệu thực tế

Tuy nhiên thuật toán Linear Regression là thuật toán cơ bản nhất của Machine Learning, nên nó cũng có những mặt hạn chế nhất định như là nó rất nhạy cảm với nhiễu (sensitive to noise)

Trong ví dụ về mối quan hệ giữa chiều cao và cân nặng bên trên, nếu có chỉ một cặp dữ liệu nhiễu (150 cm, 90kg) thì kết quả sẽ sai khác đi rất nhiều:

Hình 1.5 Loại bỏ nhiễu

Vì vậy, trước khi thực hiện Linear Regression, các nhiễu cần phải được loại bỏ

Trang 10

CHƯƠNG 2 MÔ TẢ THUẬT TOÁN 2.1 Thuật toán Best First Search

Tìm kiếm tốt nhất - đầu tiên (best-first search) là tìm kiếm theo bề rộng được hướng dẫn bởi hàm đánh giá Nhưng nó khác với tìm kiếm theo bề rộng ở chỗ, trong tìm kiếm theo bề rộng ta lần lượt phát triển tất cả các đỉnh ở mức hiện tại để sinh ra các đỉnh ở mức tiếp theo, còn trong tìm kiếm tốt nhất - đầu tiên ta chọn đỉnh để phát triển là đỉnh tốt nhất được xác định bởi hàm đánh giá (tức là đỉnh có giá trị hàm đánh giá là nhỏ nhất), đỉnh này có thể

ở mức hiện tại hoặc ở các mức trên

Hình 2.1 Không gian trạng thái được biểu diễn bởi đồ thị

Ví dụ: Xét không gian trạng thái được biểu diễn bởi đồ thị như hình 2.7

Trong đó trạng thái ban đầu là A, trạng thái kết thúc là B Giá trị của hàm đánh giá là các

số ghi cạnh mỗi đỉnh Quá trình tìm kiếm tốt nhất - đầu tiên diễn ra như sau:

Đầu tiên phát triển đỉnh A sinh ra các đỉnh kề là C, D và E Trong ba đỉnh này, đỉnh D có giá trị hàm đánh giá nhỏ nhất, nó được chọn để phát triển và sinh ra F, I Trong số các đỉnh chưa được phát triển C, E, F, I thì đỉnh E có giá trị đánh giá nhỏ nhất, nó được chọn để phát triển và sinh ra các đỉnh G, K Trong số các đỉnh chưa được phát triển thì G tốt nhất, phát triển G sinh ra B, H Đến đây ta đã đạt tới trạng thái kết thúc Cây tìm kiếm tốt nhất - đầu

tiên được biểu diễn trong hình 2.8

Hình 2.2 Cây tìm kiếm tốt nhất - đầu tiên

Sau đây là thủ tục tìm kiếm tốt nhất - đầu tiên Trong thủ tục này, chúng ta sử dụng danh sách L để lưu các trạng thái chờ phát triển, danh sách được sắp theo thứ tự tăng dần của hàm

Trang 11

đánh giá sao cho trạng thái có giá trị hàm đánh giá nhỏ nhất ở đầu danh sách

Dữ liệu tương tự như giải thuật tìm kiếm rông và sâu, sử dụng danh sách MO để lưu các đỉnh sẽ xét

Procedure BFS; {Best First Search}

Begin

Push(MO,n0);

while MO <> null do

begin

i := Pop(MO);

if i  Goals then

exit;

for j  T(i) do

Push(MO,j);

Sort(MO); {theo thứ tự của hàm đánh giá}

end;

write(„Khong co loi giai‟);

end;

Ƣu điểm

- Phương pháp tìm kiếm tốt nhất đầu tiên tổ hợp các ưu điểm của phương pháp tìm kiếm rộng và tìm kiếm sâu

- Ưu điểm chủ yếu của phương pháp tìm kiếm tốt nhất đầu tiên là dùng tri thức để dẫn dắt việc tìm kiếm Tri thức này giúp người ta bắt đầu từ đâu là tốt nhất và cách tốt nhất để tiến hành tìm lời giải

- Tìm kiếm tốt nhất đầu tiên tuân theo cách suy lý của một chuyên gia Do đó có thể thấy rõ đường đi hơn tìm kiếm rộng và tìm kiếm sâu

Nhƣợc điểm

- Quá trình tìm kiếm có thể đi xa khỏi lời giải Kỹ thuật này chỉ xét một phần của không gian và coi đó là phần hứa hẹn hơn cả

Ngày đăng: 12/12/2021, 17:35

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w