You are on page 1of 42

Trí tuệ nhân tạo (AI)

Tìm kiếm
Nội dung
1. Tác tử thông minh (Intelligent Agents)
2. Tác tử tìm kiếm (Search Agents)
3. Tìm kiếm không có ước lượng (uninformed search)
4. Tìm kiếm với ước lượng (heuristics, informed search)
Tác tử và môi trường
➢ Tác tử (agent): bất cứ gì có thể
○ Nhận thức môi trường thông qua cảm biến (sensors)
○ Hành động / Tác động vào môi trường thông qua các cơ cấu chấp hành
(actuators)

➢ Chương trình / phần mềm của tác tử:


1. Nhận thức (perceive)
2. Suy nghĩ (Think)
3. Hành động (Act)
Ví dụ: Tác tử
➢ Con người:
○ Cảm biến: các giác quan
○ Cơ cấu chấp hành: chân, tay, miệng, các bộ phận cơ thể

➢ Robot:
○ Cảm biến: Camera, siêu âm, laser
○ Cơ cấu chấp hành: Các motor

➢ Ví dụ: điện thoại, máy hút bụi, robot, Alexa Echo, xe tự hành ...
Ví dụ: Tác tử máy hút bụi
➢ Nhận thức: vị trí, sạch/bẩn
➢ Hành động: Sang trái, sang phải, hút bụi,
dừng
➢ Suy nghĩ: lựa chọn hành động dựa vào
nhận thức Nhận thức Hành động
[A, sạch] Sang phải
[A, bẩn] Hút bụi
[B, sạch] Sang trái
[B, bẩn] Hút bụi
Định nghĩa tác tử: PEAS
➢ Performance: Hiệu suất
➢ Environment: Môi trường
➢ Actuators: Cơ cấu chấp hành
➢ Sensors: Cảm biến
Ví dụ: PEAS cho xe tự hành
➢ Performance: An toàn, nhanh chóng, đúng luật, dễ chịu
➢ Environment: Đường, xe khác, người đi bộ, biển báo, thời tiết
➢ Actuators: Vô lăng, phanh, chân ga, đèn hiệu, còi ...
➢ Sensors: Camera, siêu âm, GPS, cảm biến tốc độ, khí thải, gia tốc,
cảm biến động cơ
Bài tập: PEAS của máy hút bụi
➢ Performance: https://bit.ly/2EVQxFj
➢ Environment:
➢ Actuators:
➢ Sensors:

iRobot Roomba
Các loại môi trường
➢ Đầy đủ thông tin / Không đầy đủ thông tin
➢ Tất định / Ngẫu nhiên
➢ Lặp lại / Tuần tự
➢ Tĩnh / Động
➢ Rời rạc / Liên tục
➢ Một tác tử / Nhiều tác tử
➢ Đã biết / chưa biết
Ví dụ: một số môi trường
Rời rạc /
Môi trường Thông tin Tác tử Tất định Tĩnh / động
Liên tục

8-puzzle Đầy đủ Một Có Tĩnh Rời rạc

Cờ vua Đầy đủ Nhiều Có Tĩnh Rời rạc

Poker Không đầy đủ Nhiều Không Tĩnh Rời rạc

Xe tự hành

Máy hút bụi


Các loại tác tử
Bốn loại tác tử cơ bản

➢ Tác tử phản xạ đơn giản


➢ Tác tử dựa vào mô hình (model-based)
➢ Tác tử dựa vào mục tiêu (goal-based)
➢ Tác tử dựa vào tính hữu ích (utility-based)

Các tác tử này đều có thể huấn luyện / học (training / learning)
Tác tử phản xạ đơn giản
➢ Hành động là một hàm của
trạng thái môi trường mà tác
tử nhận thức được thông qua
cảm biến

Hành động = f(trạng thái)

➢ Chỉ tốt khi đầy đủ thông tin


Tác tử dựa vào mô hình
➢ Giải quyết vấn đề không đầy
đủ thông tin
➢ Sử dụng mô hình về trạng thái
của môi trường
➢ Trạng thái thay đổi phụ thuộc
vào
○ Trạng thái trước
○ Hành động
Tác tử dựa vào mục tiêu
➢ Hành động phụ thuộc vào
○ Trạng thái hiện thời
○ Mục tiêu đã đặt ra
➢ Mềm dẻo hơn khi chỉ dùng
trạng thái hiện thời
Tác tử dựa vào tính hữu ích
➢ Hành động phụ thuộc vào
○ Trạng thái hiện thời
○ Tính hữu ích của trạng thái kế
tiếp
➢ Cho phép đưa ra giải pháp tối
ưu hơn
Huấn luyện tác tử
➢ Tự động xây dựng các luật của
tác tử
➢ 4 thành phần:
○ Critic: đánh giá hiệu suất của tác tử
○ Learning element: điều chỉnh tác tử
dựa vào phản hồi của Critic
○ Problem generator: đưa ra các mục
tiêu mới cho tác tử
○ Performance element: chương trình /
phần mềm của tác tử
Tác tử tìm kiếm
➢ Tác tử dựa vào mục tiêu
➢ Tác tử tìm một (chuỗi) hành
động để đạt mục tiêu
○ Bài toán tìm kiếm giải pháp
Ví dụ
Ví dụ
Ví dụ: đặt 8 hậu không ăn nhau
Ví dụ: PACMAN
Định nghĩa bài toán tìm kiếm
➢ Trạng thái bắt đầu
➢ Tập trạng thái (có thể có)
➢ Hành động: Các hành động có thể có tại mỗi trạng thái
➢ Chuyển trạng thái: trạng thái sau phụ thuộc trạng thái trước và hành
động
➢ Mục tiêu: một tập con các trạng thái
➢ Chi phí: hàm đánh giá chi phí của một dãy các trạng thái và hành
động
Ví dụ: đặt 8 hậu không ăn nhau
➢ Trạng thái bắt đầu: bàn cờ trống
➢ Tập trạng thái: tất cả các cách đặt 8 con hậu
➢ Hành động: đặt thêm 1 con hậu vào ô trống
➢ Chuyển trạng thái: bàn cờ mới
➢ Mục tiêu: các con hậu không ăn nhau
Bài tập: 8-puzzle (gạt ô trống)
➢ Trạng thái bắt đầu: https://bit.ly/2ZemAYz
➢ Tập trạng thái:
➢ Hành động:
➢ Chuyển trạng thái:
➢ Mục tiêu:
Ví dụ: Tìm đường đi trên bản đồ
Ví dụ: Tìm đường đi qua mọi địa điểm
Bài toán Traveling Sales Person (TSP)
Ví dụ: Thiết kế bảng mạch VLSI
➢ Đặt các linh kiện & liên kết lên chip
➢ Tối ưu diện tích
➢ Giảm thời gian trễ
➢ Không đè lên nhau
Ví dụ: Thứ tự thao tác dây chuyền
➢ Thứ tự các chi tiết cần lắp
ráp
➢ Tìm kiếm trong không
gian 3D các tư thế của
robot
Không gian tìm kiếm (search space)
➢ Mỗi phần tử / mỗi nút trong không gian tìm kiếm:
○ Một chuỗi hành động và trạng thái tính từ trạng thái bắt đầu

➢ Ba vùng của không gian tìm kiếm


1. Các nút đã đi qua, đã xử lý hết nút con (Explored, Visited)
2. Các nút ở biên tìm kiếm (Frontier) frontier

3. Các nút chưa đi qua


explored
➢ Tìm kiếm = chuyển (3) → (2) → (1)
initial
state unexplored
Khung thuật toán tìm kiếm
1. Khởi tạo Frontier = {Initial state}
2. Khởi tạo Explored = tập rỗng
3. Lặp đến khi Frontier rỗng
1. Lấy nút state từ Frontier
2. Đưa state vào Explored
3. Nếu state = Goal, kết thúc
4. Với mọi nút con child của state, đưa child vào frontier
Frontier
explored

initial
state unexplored
Khung thuật toán tìm kiếm tránh lặp
1. Khởi tạo Frontier = {Initial state}
2. Khởi tạo Explored = tập rỗng
3. Lặp đến khi Frontier rỗng
1. Lấy nút state từ Frontier
2. Đưa state vào Explored
3. Nếu state = Goal, kết thúc
4. Với mọi nút con child của state, nếu child không frontier
nằm trong Frontier và Explored, đưa child vào
Frontier
explored

initial
state unexplored
Các loại tìm kiếm
Tìm kiếm không có ước lượng Tìm kiếm có ước lượng

➢ Tìm kiếm theo chiều sâu ➢ Tìm kiếm ăn tham


➢ Tìm kiếm theo chiều rộng ➢ Tìm kiếm tối ưu A*
➢ Tìm kiếm tăng dần độ sâu
➢ Tìm kiếm với hàm giá
Tìm kiếm theo chiều sâu (DFS)
➢ Lấy nút có chiều sâu lớn nhất ra khỏi Frontier
➢ Frontier là một ngăn xếp (Stack)
Tìm kiếm theo chiều rộng (BFS)
➢ Lấy nút có chiều sâu nhỏ nhất ra khỏi Frontier
➢ Frontier là hàng đợi (Queue)
Tìm kiếm tăng dần độ sâu (IDS)
➢ Tìm kiếm DFS với độ sâu tối đa bằng 1
➢ Tìm kiếm DFS với độ sâu tối đa bằng 2
➢ Tìm kiếm DFS với độ sâu tối đa bằng 3
➢ …
➢ Tìm kiếm DFS với độ sâu tối đa bằng k
Tìm kiếm với hàm giá (UCS)
Lấy nút có chi phí rẻ nhất ra khỏi Frontier

Chi phí = tổng chi phí từ Trạng thái ban đầu


Tìm kiếm với hàm giá (UCS)
➢ Lấy nút có chi phí rẻ nhất ra khỏi Frontier
➢ Chi phí = tổng chi phí từ Trạng thái ban đầu
➢ Frontier là hàng đợi ưu tiên
Tìm kiếm có ước lượng
➢ Sử dụng thêm kiến thức chuyên ngành
○ Ước lượng “sự gần đích” của mỗi trạng thái
○ Ước lượng không nhất thiết phải “hoàn hảo”
Tìm kiếm có ước lượng
➢ Sử dụng thêm kiến thức chuyên ngành
○ Ước lượng “sự gần đích” của mỗi trạng thái
○ Ước lượng không nhất thiết phải “hoàn hảo”
Tìm kiếm ăn tham (Greedy)
➢ Lấy nút có ước lượng gần đích nhất ra khỏi Frontier
Tìm kiếm A*
Lấy nút có Tổng chi phí + Ước lượng nhỏ nhất ra khỏi Frontier

UCS Greedy

Cho kết quả tối ưu


Ứng dụng của thuật toán A*
➢ Trò chơi điện tử
➢ Tìm đường
➢ Phân bổ nguồn lực
➢ Lập kế hoạch robot
➢ Phân tích ngôn ngữ
➢ Dịch máy
➢ Nhận dạng tiếng nói

You might also like