LỜI NÓI ĐẦUCông nghệ trị thức là các phương pháp, kỹ thuật được những kỹ sư tri thức knowledge engineers dùng để xây dựng những hệ thống thông minh như: hệ chuyên gia, hệ cơ sở tri thức,
Trang 1ĐẠI HỌC QUỐC GIA TP.HCM
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
Tiểu luận môn Công Nghệ Tri Thức
Tìm hiểu thuật giải di truyền vào khai phá tri thức
GVHD: GS.TSKH Hoàng Kiếm HVTH: Lê Đỗ Minh Nga
MSHV: CH1301101
TP HCM, tháng 10 năm 2014
Trang 2Mục lục
LỜI NÓI ĐẦU 3
1 Khám phá tri thức 4
2 Tổng quan về Thuật giải di truyền 5
2.1 Giới thiệu thuật giải di truyền: 5
2.2 Các bước chính của thuật giải di truyền: 6
2.3 Các thành phần cơ bản của thuật giải di truyền 6
2.4 Cấu trúc giải thuật di truyền tổng quát 7
2.5 Thuật giải di truyền so với các phương pháp truyền thống 8
2.6 Ứng dụng thuật giải di truyền vào khai phá dữ liệu: 9
3 Ứng dụng thuật toán di truyền vào bài toán dự đoán password gồm 6 chữ số 11
3.1 Giới thiệu bài toán 11
3.2 Thiết kế thuật giải di truyền dự đoán password 13
3.3 Cài đặt thuật giải di truyền bằng C# 13
3.4 Màn hình chính: 16
4 Kết Luận 16
Tài liệu tham khảo 18
Trang 3LỜI NÓI ĐẦU
Công nghệ trị thức là các phương pháp, kỹ thuật được những kỹ sư tri thức (knowledge engineers) dùng để xây dựng những hệ thống thông minh như: hệ chuyên gia, hệ cơ sở tri thức, hệ hổ trợ quyết định, Bài tiểu luận sẽ tìm hiểu về khai phá dữ liệu bằng thuật giải di truyền và ứng dụng thuật toán di truyền vào bài toán dự đoán password gồm 6 chữ số
Trang 41 Khám phá tri thức
Khám phá tri thức là tìm ra những tri thức tiềm ẩn, những tri thức mới (không phải là những tri thức kinh điển, kinh nghiệm, …) và các tri thức có ích ở dạng tiềm năng trong nguồn dữ liệu đã có
Phân loại thô:
Học giám sát (supervised learning)
Học không giám sát (unsupervised learning)
Phân loại theo 2 tiêu chuẩn cùng lúc: “cấp độ học” & “cách tiếp cận”
Cấp độ học:
Học vẹt (Rote learning)
Học theo giải thích (by explanation)
Trang 5 Học theo ví dụ, trường hợp (by examples, cases)
Học khám phá (by discovering) Cách tiếp cận:
Tiếp cận thống kê
Tiếp cận toán tử logic
Tiếp cận hình học (phân hoạch không gian, xây dựng cây định danh, …)
Tiếp cận mạng Neural
OLAP
Data Query
Tiếp cận giải thuật di truyền
…
2 Tổng quan về Thuật giải di truyền
2.1 Giới thiệu thuật giải di truyền:
Genetic Algorithms tạm dịch là Thuật giải di truyền (ngắn gọn gọi là GA) bắt
nguồn từ ý niệm tiến hóa để tồn tại và phát triển trong tự nhiên
Trang 6GA là phương thức giải quyết vấn đề bắt chước lối hành xử của con người để tồn tại và phát triển Nó giúp tìm ra giải pháp tối ưu hay tốt nhất trong điều kiện thời gian và không gian cho phép
GA xét đến toàn bộ các giải pháp, bằng cách xét trước nhất một số giải pháp sau đó loại bỏ những thành phần không thích hợp và chọn những thành phần thích nghi hơn để tạo sinh và biến hóa nhằm mục đích tạo ra nhiều giải pháp mới có hệ số thích nghi ngày càng cao
Hệ số thích nghi để dùng làm tiêu chuẩn đánh giá các giải pháp
Cấu trúc dữ liệu + giải thuật di truyền = chương trình tiến hóa
Thuật ngữ “chương trình tiến hóa” trong công thức trên là khái niện dùng để
chỉ các chương trình máy tính có sử dụng thuật toán tìm kiếm và tối ưu hóa dựa trên nguyên lý tiến hóa tự nhiên
2.2 Các bước chính của thuật giải di truyền:
Bước 1: Chọn mô hình (model) để tượng trưng cho các giải pháp Các mô hình
có thể là dãy (String) những số nhị phân: 1 và 0, thập phân và có thể là chữ hay hỗn hợp giữa chữ và số
Bước 2: Chọn hàm số thích nghi để dùng làm tiêu chuẩn đánh giá các giải pháp Bước 3: Tiếp tục các hình thức biến hóa cho đến khi đạt được các giải pháp tốt nhất hoặc đến khi thời gian cho phép chấm dứt
2.3 Các thành phần cơ bản của thuật giải di truyền
Quá trình lai ghép (phép lai)
+Chọn ngẫu nhiên hai (hay nhiều) cá thể bất kỳ trong quần thể Giả sử các nhiễm sắc thể của cha mẹ đều có m gen
+Tạo một số ngẫu nhiên trong khoảng từ 1 đến m-1 (ta gọi là điểm lai) +Đưa hai cá thể mới này vào quẩn thể để tham gia các quá trình tiến hóa tiếp theo
Quá trình đột biến (phép đột biến)
+Chọn ngẫu nhiên một cá thể bất kỳ cha mẹ trong quần thể
+Tạo một số ngẫu nhiên k trong khoảng từ 1 đến m, 1 ≤ k ≤ m
Trang 7+Thay đổi gen thứ k và trả cá thể này về quần thể để tham giá quá trình tiến hóa tiếp theo
Quá trình sinh sản
+Tính độ thích nghi của từng cá thể trong quẩn thể hiện hành, lập bảng cộng dồn các giá trị thích nghi (theo số thứ tự gán cho từng cá thể) Giả sử quần thể có n cá thể Gọi độ thích nghi của cá thể thứ i là Fi, tổng dồn thứ i
là Fti, tổng độ thích nghi của toàn quần thể là Fm
+Tạo một số ngẫu nhiên F trong đoạn từ 0 đến Fm
+Chọn cá thể thứ k đầu tiên thỏa mãn F ≥ Ftk đưa vào quần thể của thế hệ mới
Mỗi cặp bố mẹ sinh hai con theo một trong hai phương pháp sau
+Vô tính Mỗi ấu nhi là một bản sao chính xác từ cha Mỗi ấu nhi là một bản sao chính xác từ mẹ +Hữu tính (giao nhau)
Một vài bits được sao từ mẹ, vài bits được sao chép từ cha
Cứ tiếp tục sao từ một cặp bố mẹ cho đến chừng nào điểm giao nhau, thì sao chép từ cặp bố mẹ khác
Quá trình chọn lọc
+Sắp xếp quần thể theo thứ tự độ thích nghi giảm dần
+Loại bỏ các cá thể cuối dãy để chỉ giữ lại n cá thể tốt nhất Ở đây, tả giả sử quần thể có kích thước cố định n
Điều kiện dừng của giải thuật:
Chúng ta sẽ khảo sát điều kiện đơn giản nhất để dừng khi số thế hệ vượt quá một ngưỡng cho trước Trong một số phiên bản về chương trình tiến hoá không phải mọi cá thể đều tiến hoá lại Vài cá thể trong đó có khả năng vượt
từ thế hệ này sang thế hệ khác mà không thay đổi gì cả Trong những trường hợp như vậy, chúng ta đếm số lần lượng hàm
Trang 8Nếu số lần lượng hàm vượt quá một hằng xác định trước thì dừng việc tìm kiếm
Chúng ta nhận thấy, các điều kiện dừng ở trên giả thiết rằng người sử dụng
đã biết đặc trưng của hàm, có ảnh hưởng như thế nào tới chiều dài tìm kiếm Trong một số trường hợp khó có thể xác định số lượng thế hệ (hay lượng giá hàm) phải là bao nhiêu Giải thuật có thể kết thúc khi cơ hội cho một cải thiện quan trọng chưa bắt đầu
Có hai loại điều kiện dừng cơ bản Các điều kiện này dùng các đặc trưng tìm kiếm để quyết định ngừng quá trình tìm kiếm
-Dựa trên cấu trúc nhiễm sắc thể: do sự hội tụ của quần thể bằng cách kiểm soát số alen được hội tụ, ở đây alen được coi như hội tụ nếu một số phần trăm quần thể đã định trước có cùng (hoặc tương đương đối với các biểu diễn không nhị phân) giá trị trong alen này Nếu số alen hội tụ vượt quá số phần trăm nào đó của tổng số alen, việc tìm kiếm sẽ kết thúc
-Dựa trên ý nghĩa đặc biệt của một nhiễm sắc thể: đo tiến bộ của giải thuật trong một số thế hệ cho trước Nếu tiến bộ này nhỏ hơn một hằng số ε xác định, kết thúc tìm kiếm
2.4 Cấu trúc giải thuật di truyền tổng quát
Bắt đầu
t = 0;
Khởi tạo P(t);
Tính độ thích nghi cho các cá thể thuộc P(t);
Khi (điều kiện dừng chưa thỏa mãn) lặp
t = t+1;
Tái sinh P’(t) từ P(t);
Lai Q(t) từ P(t-1);
Đột biến R(t) từ P(t-1);
Chọn lọc P(t) từ P(t-1) U Q(t) U R(t) U P(t);
Hết lặp Kết thúc
Trang 92.5 Thuật giải di truyền so với các phương pháp truyền thống
Chúng ta xét bài toán đơn giản sau đây: tối ưu hoá hàm y = f(x) trên
khoảng xác định D.
Khi dùng phương pháp truyền thống có một số cách giải sau đây:
Phương pháp liệt kê: Duyệt tất cả các điểm nằm trong vùng khảo sát D để
tìm ra điểm cực trị của nó Phương pháp này không thích hợp khi dữ liệu đầu vào quá lớn Trong trường hợp này miền D có không gian quá lớn để có thể đếm được
Phương pháp giải tích: Tìm điểm cực trị bằng cách giải tập các phương
trình khi cho Gradient bằng 0 Để xét được Gradient phải tính đạo hàm của hàm số Điều này không giải quyết được trong trường hợp hàm số không liên tục hoặc không có đạo hàm Ngoài ra đối với hàm nhiều cực trị thì có thể phương pháp này bỏ mất cực trị, cực trị tìm được chỉ mang tính chất địa phương
Phương pháp tìm kiếm ngẫu nhiên: là phương pháp kết hợp giữa phương
pháp tính toán giải tích và sơ đồ liệt kê Tuy nhiên những việc làm ngẫu nhiên cùng với giải thuật tìm kiếm ngẫu nhiên cũng phải bị suy yếu bởi thiếu tính hiệu quả
Đối với Thuật giải di truyền: các thông số của bài toán tìm kiếm phải
được mã hoá thành một chuỗi hữu hạn các ký tự trên một tập hữu hạn các
ký tự Chuỗi này tương tự như các chuỗi gen của các cơ thể sinh vật Có rất nhiều cách để mã hóa tập thông số Một cách đơn giản là chúng ta có thể mã hoá thành các chuỗi bit trên tập ký tự {0,1} Mỗi một chuỗi đại diện cho một điểm tìm kiếm trong không gian GA xuất phát với một quần thể các chuỗi được khởi tạo một cách ngẫu nhiên sau đó sẽ sản sinh các quần thể tiếp theo thông qua việc sử dụng lựa chọn ngẫu nhiên như một công cụ Nhờ đó Thuật giải di truyền tìm kiếm trên nhiều điểm song song có khả năng leo lên nhiều cực trị cùng một lúc Thông qua các toán tử của mình, giải thuật trao đổi thông tin giữa các cực trị với nhau, từ đó làm giảm thiểu khả năng giải thuật kết thúc tại các cực trị địa phương và bỏ qua mất cực trị toàn cục
Trang 10Đây là các đặc trưng của Thuật giải di truyền so với các phương pháp
truyền thống
2.6 Ứng dụng thuật giải di truyền vào khai phá dữ liệu:
Đây là một cách tiếp cận mới mẻ và đang được nhiều người quan tâm,phát triển và ứng dụng vào nhiều lĩnh vực khác nhau
Giải thuật di truyền (GA) giựa trên ý tưởng quần thể tự nhiên, chọn lọc ngẫu nhiên sẽ làm cho giải thuật có khả năng mạnh mẽ trong việc tìm kiếm một cách song song Trong đó tất cảcác cá thểtrong quẩn thểsẽ được cốgắng tìm kiếm ở tất cả các hướng trong không gian tìm kiếm qua đó cho phép
GA tránh được tối ưu hóa cục bộ
2.6.1 Một thế mạnh của GA trong nhiệm vụ tìm kiếm đó là không lo sợ khả năng bùng nổ của tổ hợp tìm kiếm.GA đặc biệt tỏra hữu hiệu với các không gian tìm kiếm lớn Với các không gian tìm kiếm lớn GA không những bảo đảm được tối ưu hóa toàn cục mà còn bảo đảm được thời gian tìm kiếm, một trong những yêu cầu quan trọng của bài toán
Ví dụ chúng ta cần trả về cho người mua một danh sách các mặt hàng
mà theo hệ thống là phù hợp nhất (thông thường từ 3 đến 5 giải pháp) nên việc sử dụng GA lại càng hợp lý GA khác các phương pháp tìm kiếm tuyến tính khác là trong một lần chạy có thể cho ta một tập các giải pháp trong quần thể của nó
2.6.2 Vấn đề khai phá dữ liệu đã được giải quyết bằng cách sử dụng thuật toán di truyền:
Phân loại (Classification) Lựa chọn thuộc tính (Attribute selection) Gom cụm dữ liệu (Clustering)
Ví dụ phân loại (Classification):
Trang 11+Biểu diễn thành các luật Rule
+Lai ghép Crossover
+Đột biến Mutation
Trang 123 Ứng dụng thuật toán di truyền vào bài toán dự đoán password gồm 6 chữ
số
3.1 Giới thiệu bài toán
Một ví dụ rất đơn giản tìm mật khẩu để mở khóa – giả định rằng password này chỉ cho nhập số và gồm 6 ký tự Với bài toán này sẽ có tổng cộng 10^6 =
1.000.000 mật mã khác nhau Trước vấn đề này ta phải thử ngẫu nhiên hoặc vét cạn để tìm kiếm password và có thể tìm kiếm lên tới 1.000.000 để tìm
password
Dĩ nhiên, khi đứng trước những vấn đề-bài toán như vậy, người ta thường tìm cách cải thiện thuật toán bằng cách cung cấp thêm một số thông tin khác Chẳng hạn như với bài toán mở khóa trên là thông tin cho biết trong hai mật mã được phát sinh ra, mật mã nào là "tốt" hơn (nghĩa là có khả năng mở khóa cao hơn)
Có thể chúng ta sẽ thắc mắc "bằng cách nào để biết được giữa hai mật mã, mật
mã nào có khả năng mở khóa cao hơn?" Thông thường, khi mở khóa, người ta thường dựa trên các tác nhân vật lý – như tiếng động bên trong ổ khóa khi đưa vào một mật mã – để dự đoán được tính "tốt" của mật mã đang thử Khi biết được được độ "tốt" của các mật mã, ta sẽ sử dụng một phương pháp tìm kiếm thông minh hơn - mà người ta thường gọi là tìm kiếm theo kiểu leo đồi (hill-climbing) Với tìm kiếm leo đồi, ta tưởng tượng rằng không gian tìm kiếm của vấn đề-bài toán là một vùng đất gập ghềnh (landscape), có nhiều ngọn đồi cao thấp khác nhau Trong đó, ngọn đồi cao nhất của vùng đất này sẽ là lời giải tốt nhất và vị trí có độ cao càng lớn thì càng "gần" với lời giải tốt nhất (độ cao đồng nghĩa với độ tốt của lời giải) Tìm kiếm theo kiểu leo đồi có nghĩa là chúng ta phải phát sinh các lời giải sao cho càng về sau các lời giải càng tiến
"gần" tới lời giải tốt nhất hơn Thao tác này cũng giống như thao tác leo đồi vậy (vì càng ngày ta càng lên cao hơn) Thuật giải di truyền hoạt động giống leo đồi Tuy nhiên, kiểu giải quyết này vẫn còn gặp trở ngại cơ bản là, nếu vùng đất của
Trang 13chúng ta có nhiều đồi nhỏ khác bên cạnh ngọn đồi cao nhất thì sẽ có khả năng thuật toán của chúng ta bị "kẹt" ở một ngọn đồi nhỏ Do tư tưởng là "càng ngày càng lên cao" nên khi lên đến đỉnh một ngọn đồi nhỏ thuật toán sẽ không thể đi tiếp được (vì không thể lên cao được nữa, muốn tìm đến một ngọn đồi cao hơn thì phải xuống đồi hiện tại, mà xuống đồi thì không đúng tư tưởng càng ngày càng lên cao) Bạn hãy tưởng tượng một máy tính giải quyết vấn đề-bài toán theo kiểu leo đồi là một người leo đồi với tư tưởng "càng leo càng cao" Nếu chỉ
có một người leo đồi thì có khả năng người đó sẽ bị "kẹt" trên một đỉnh đồi thấp Như vậy, nếu có nhiều người leo đồi cùng leo ở nhiều địa điểm khác nhau thì khả năng có một người leo đến đỉnh núi cao nhất sẽ cao hơn Càng nhiều người thì khả năng đến đỉnh núi cao nhất sẽ cao hơn Nhưng tư tưởng này cũng chưa có gì mới mẻ, đơn giản chỉ là 30 dùng nhiều máy tính để chia việc ra mà thôi Hơn nữa, với không gian tìm kiếm cỡ 10 như bài toán mở khóa, chúng ta cần phải dùng bao nhiêu siêu máy tính? Mà quan trọng hơn nữa, cho dù có nhiều người leo đồi, nhưng nếu số lượng người leo đồi quá ít so với số lượng đồi thì khả năng tất cả người leo đồi đều bị "kẹt" cũng vẫn còn rất cao Đến đây thì rất có thể trong đầu các bạn chợt nảy lên một ý nghĩ Tại sao không cho nhiều "thế hệ" người leo đồi? Nghĩa là, nếu toàn bộ người leo đồi đầu tiên (giả
sử 1000 người chẳng hạn) đều không đạt đến đỉnh đồi cao nhất thì ta sẽ cho
1000 người leo đồi khác tiếp tục leo Tuy nhiên, sẽ nảy sinh một vấn đề, có khả năng là trong nhóm người leo đồi mới, có những người lại đi leo lại những ngọn đồi mà nhóm trước đã leo rồi Bạn nghĩ thế nào? Vậy thì hãy ghi nhận lại những ngọn đồi đã leo để những nhóm sau còn thừa hưởng được kết quả của nhóm trước Hay nói một cách tổng quát hơn : hãy làm sao để những người giỏi nhất (leo cao nhất) trong số những người leo đồi đầu tiên truyền lại "kinh nghiệm" leo đồi của mình cho 1000 người thế hệ sau để sao cho 1000 người "hậu duệ" này sẽ leo cao hơn họ Và nếu 1000 người sau lại thất bại, những người giỏi nhất trong số họ sẽ lại truyền "kinh nghiệm" của mình cho thế hệ 1000 người tiếp nữa để những người thế hệ 3 này leo cao hơn nữa Tiến trình cứ thế tiếp tục cho đến lúc đến một thế hệ nào đó, có một người leo đến đỉnh đồi cao nhất hoặc hết thời gian cho phép Trong trường hợp hết thời gian cho phép thì trong toàn
bộ các thế hệ, người nào leo cao nhất sẽ được chọn Đây là tư tưởng chính của thuật giải di truyền Rất đơn giản, thay vì chỉ phát sinh một lời giải, ban đầu ta phát sinh một lúc nhiều (thậm chí rất nhiều) lời giải cùng lúc Sau đó, trong số lời giải được tạo ra, chọn ra những lời giải tốt nhất để làm cơ sở phát sinh ra nhóm các lời giải sau với nguyên tắc "càng về sau" càng tốt hơn Quá trình tiếp diễn cho đến lúc tìm được một lời giải tối ưu Đó là tư tưởng sơ khởi ban đầu