HỌC VIỆN KỸ THUẬT QUÂN SỰ
KHOA CÔNG NGHỆ THÔNG TIN
BÁO CÁO MÔN HỌC
TRÍ TUỆ NHÂN TẠO
Giáo viên hướng dẫn: Ngô Hữu Phúc
HÀ NỘI 3/2010
Học viện kỹ thuật quân sự - khoa CNTT
Báo cáo môn trí tuệ nhân tạo
Đề tài:
xây dựng chương trình sử dụng Radial basis functions networks để
tìm đường phân lớp 2 tập điểm trên không gian
Sinh Viên: Nguyễn Minh Tiến – Tin 5a
Giáo viên: Ngô Hữu Phúc
I /Giới thiệu chung
1/ Giới thiệu về bài toán
Bài toán được mô tả là có các tập điểm trên không gian 2 chiều, mỗi điểm mang
nhãn 1 hoặc -1, hãy xây dựng chương trình sử dụng dụng Radial basis functions
networks để tìm đường phân lớp 2 tập điểm nói trên
Để giải quyết vấn đề của bài toán này chúng ta có thể dùng nhiều
phương pháp khác nhau như hàm tuyến tính (hoặc affine), máy phân lớp
sử dụng véctơ hỗ trợ (Support Vector Machines – SVM). Và một trong những
cách khá phổ biến là sử dụng mạng các hàm cơ sở dạng bán kính (Radial
Basis Functions network – RBF) do mạng hàm cơ sở bán kính có khá nhiều ưu
điểm so với các phương pháp khác:
1. Hàm phân lớp tuyến tính đơn thuần (Perceptron) không thể phân lớp trong
một số trường hợp. Ví dụ như hàm XOR:
2. Khả năng nhớ các mẫu học: nếu đầu vào của hàm phân lớp “gần giống”
với một mẫu học đã biết trước đó thì kết quả phân lớp cũng phải “gần
giống” kết quả phân lớp đã được học.
3. Ý tưởng phân lớp trên không gian có nhiều chiều hơn: có nhiều ví dụ cho
thấy, khi được ánh xạ lên không gian nhiều chiều hơn lúc đầu, bài toán
điểm bất kỳ sẽ thuộc về phần tập điểm nào
III/ Thuật toán
Chương trình sẽ sử dụng hàm
Với tâm là tất cả các điểm huấn luyện
*/ Khi khởi chạy chương trình sẽ tạo ra
Public mangx(50) As toado
Dim mangy(50, 1) As Double
Mangx kiểu toado sẽ lưu vị trí của các điểm huấn luyện
Mangy kiểu double sẽ lưu giá trị của điểm huấn luyện tương ứng, mảng y này
thực chất chỉ cần là mảng 1 chiều kiểu int (do chỉ có giá trị 1 hoặc -1) nhưng để
dễ dàng thao tác khi nhân ma trận nên e để là mảng 2 chiều kiểu double
*/ Khi bắt đầu huấn luyện chương trình
Ví dụ chúng ta sử dụng hàm XOR
Với khi đó ma trận là
Thế W mới tìm được vào hàm F(x)
Dim i, j As Integer
'tao ra mang phi voi phi(r) = exp (-r binh)
For i = 0 To (sodiem - 1)
For j = 0 To (sodiem - 1)
mangphi(i, j) = Math.Exp(-(tinhkhoangcach(mangx(i),
mangx(j)) * (tinhkhoangcach(mangx(i), mangx(j)))))
Next
Next
nghichdaophi = matran.Inv(mangphi)
W = matran.Multiply(nghichdaophi, mangy)
TextBox1.Text = ""
For i = 0 To sodiem - 1
thapphan = Format$(W(i, 0), "0.000")
TextBox1.Text += thapphan + vbCrLf
'vbcrlf la de xuong dong thoi
Do thời gian và khả năng có hạn, chương trình không thể tránh khỏi có 1 số
nhược điểm khá lớn như sau:
- Chương trình không tính được số tâm tối ưu cho mạng mà sẽ sử dụng hết
tất cả các điểm huấn luyện được cho để làm tâm (Nếu tìm số tâm sẽ có
tình trạng mảng phi khi tạo ra sẽ không vuông, không nghịch đảo được,
khi đó sẽ phải áp dụng phương pháp giả nghịch đảo (pseudo-inverse) hoặc
biến đổi gauss khá phức tạp)
- Chưa thể áp dụng ma trận trọng số W để vẽ ra 1 đường thẳng hoặc siêu
phẳng trên thực tế để đáp ứng được yêu cầu phân lớp
- Chương trình còn chưa tối ưu, giao diện còn xấu
V/ Tài liệu tham khảo
- Giáo trình trí tuệ nhân tạo _ Thầy Ngô Hữu Phúc _ HVKTQS
- Trang web Wikipedia
- Trang web http://csstudyfun.etintin.com/
- Giáo trình Pattern Recognition with Neural Networks in C++
- 1 số tài liệu khác trên internet