Tải bản đầy đủ (.docx) (18 trang)

Tiểu luận môn CÔNG NGHỆ TRI THỨC VÀ ỨNG DỤNG Tìm hiểu thuật giải di truyền vào khai phá tri thức

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (294.1 KB, 18 trang )

ĐẠ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
1
Mục lục
LỜ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ố
2
1. 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ó.
3
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)
 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

4
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.
GA 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
5
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.
+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
6
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.
Nế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.
7
-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.
2.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ó
8
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
Đâ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

9
đả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):

+Biểu diễn thành
các luật Rule
+Lai ghép Crossover
10
+Đột biến Mutation
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ố
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
11
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
chú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"
12
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
của thuật giải di truyền. Càng về sau, người ta càng hoàn thiện hơn phương
pháp luận của ý tưởng này, dẫn đến sự ra đời của một hệ thống hoàn chỉnh các
phương pháp, nguyên lý dùng trong thuật giải di truyền
3.2. Thiết kế thuật giải di truyền dự đoán password

Bài toán: cho người dùng nhập vào một password gồm 6 ký tự. Viết chương
trình máy tính tìm ra password mà người dùng đã nhập
Giải thuật:
Qua phần giới thiệu, ta biết bài toán đoán password có không gian lời giải là
10^6 trường hợp, mỗi lời giải là một số gồm 6 chữ số với mỗi chữ số có giá trị
từ 0->9 nên thiết kế thuật giải di truyền như sau:
Cá thể (Chromosome): chính là một số gồm 6 chữ số với mỗi chữ số có giá trị
từ 0->9
Quần thể, tỉ lệ sống sót qua mỗi thế hệ: là một list gồm nhiều cá thể, số lượng
cá thể của quần thể có thể thay đổi theo phương pháp thử sai đến khi được kết
quả khả quan nhất, mặc định cho là 100 cá thể RGB. Tỉ lệ sống sót có thể thay
đổi để đạt kết quả tốt nhất, mặc định cho 20 cá thể sống sót qua mỗi thế hệ.
Trong 2 cá thể, ta lấy 10 cá thể có hàm Fitness tốt nhất của thế hệ trước và 10
cá thể ngẫu nhiên để cho sống sót tạo thành thế hệ sau.
Hàm thích nghi (Fitness function): do đã có một đáp án rõ ràng là một số gồm
sáu chữ số của người dùng nhập vào từ ban đầu, ta thiết kế hàm Fitness như
sau: giá trị hàm Fitness chính là tổng khác biệt giữa chữ số của cá thể đang xét
và chữ số ban đầu.
13
Hàm đột biến (mutation function): ta cho đột biến các chỉ số từ 0 tới 9 theo
biên độ +/- 1 trên các cá thể sống sót của quần thể trước và tạo ra nhiều cá thể
đột biến đưa vào quần thể mới cho đến khi đủ số lượng.
Hàm dừng (stop function): ta đã có sẵn đáp án do người dùng nhập vào nên
thuật giải sẽ dừng lại khi nào trong quần thể có cá thể password đúng đáp án.
3.3 Cài đặt thuật giải di truyền bằng C#
-Cài đặt lớp password:
- Cài đặt lớp cá thể chromosome password, có bao gồm hàm Fitness
14
-Cài đặt lớp đoán password bằng thuật giải di truyền:
15

-Hàm đột biến
3.4 Màn hình chính:
16
4. Kết Luận
Cùng với sự phát triển nhanh chóng, vượt bậc của ngành công nghiệp máy tính,
nhu cầu của người dùng đối với máy tính ngày một cao hơn: không chỉ giải
quyết những công việc lưu trữ, tính toán bình thường, người dùng còn mong đợi
máy tính có khả năng thông minh hơn, có thể giải quyết vấn đề như con người.
Công nghệ tri thức đóng vai trò hết sức quan trọng trong việc phát triển Công
nghệ thông tin, nâng cao sự hữu dụng của máy tính, giúp con người gần gũi với
máy tính hơn. Công nghệ tri thức còn góp phần thúc đẩy nhiều ngành khoa học
khác phát triển, khả năng phát triển khoa học dựa trên tri thức liên ngành. Thuật
giải di truyền được sử dụng vào khai phá dữ liệu cũng như trong nhiều lĩnh vực
khác. Ứng dụng trong bài viết chỉ ở mức ví dụ sơ đẳng nhất về thuật giải di
truyền còn cần rất nhiều cải tiến. Hướng phát triển của tiểu luận sau này là có
thể đề xuất thiết kế, phương pháp áp dụng thuật giải di truyền để xây dựng hệ
thống thông minh như hổ trợ ra quyết định.
Tài liệu tham khảo
[1] Slide bài giảng môn Công nghệ Tri Thức – GS.TSKH Hoàng Kiếm
[2] Machine Learning And Its Applications - Georgios Paliouras
17
[3] Genetic Algorimths in search Optimization and Machine learning -
David E.Goldberg.
[4] Luận văn báo cáo về Thuật giải di truyền và ứng dụng – nguồn internet
18

×