Tải bản đầy đủ (.pdf) (15 trang)

Bài giảng Trí tuệ nhân tạo: Giải thuật di truyền - PGS.TS. Lê Thanh Hương

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 (448.23 KB, 15 trang )

4/27/2017

Lịch sử





Giải thuật di truyền

GA đề xuất bởi John Holland năm 1970
Phổ biến những năm 1980
Dựa trên ý tưởng về luật tiến hóa Darwin
Dùng để giải quyết nhiều bài toán không dễ
giải quyết bằng các kỹ thuật khác

1

2

Tiến hóa trong thế giới thực
• Mỗi tế bào sống bao gồm các nhiễm sắc thể (chromosomes)
– là các xâu DNA
• Mỗi NST bao gồm 1 tập các gene – các khối DNA
• Mỗi gene quyết định một số đặc điểm của cá thể (như màu
mắt)
• Một tập các gene được gọi là kiểu di truyền (genotype)
• Một tập các đặc điểm (như màu mắt) được gọi là kiểu hình (
phenotype)
• Việc tái tạo (reproduction) là việc kết hợp các gene từ bố mẹ
cộng với một số lượng nhỏ các đột biến (mutation) trong bản


sao
• Độ phù hợp (fitness) của 1 cá thể là số con nó có thể sinh ra
trước khi nó chết
• Tiến hóa dựa trên “sự sống sót của các cá thể phù hợp nhất”
3

Đặt vấn đề






Giả sử có 1 vấn đề
Ta chưa biết cách giải
Có thể làm gì?
Sử dụng máy tính để tìm lời giải?
Làm thế nào?

4

1


4/27/2017

Giải pháp tệ nhất

Có thể làm như vậy không?
• Đôi khi – có:


Thuật toán “thử và sai”

– Nếu chỉ có vài đáp án
– Và có đủ thời gian

Repeat

• Với đa phần các vấn đề - không:

Sinh một giải pháp ngẫu nhiên
Thử giải pháp đó và kiểm tra sự phù hợp của nó

– Có quá nhiều đáp án
– Không có thời gian thử

Until giải pháp đủ tốt

5

6

Làm cách nào để mã hóa 1 giải
pháp

Ý tưởng ít tệ hơn (GA)

• Phụ thuộc vào vấn đề
• GA mã hóa giải pháp như 1 chuỗi cố định
các bit (ví dụ 101110, 111111, 000101)

• Mỗi bit biểu diễn một số đặc điểm của giải
pháp đề xuất
• Để có thể sử dụng GA, cần “thử” các chuỗi
và cho điểm mức độ “tốt” của giải pháp

Sinh 1 tập các giải pháp ngẫu nhiên
Repeat
Thử mỗi giải pháp trong tập (xếp hạng chúng)
Loại bỏ 1 số giải pháp kém trong tập
Nhân các giải pháp tốt lên
Tạo ra một số thay đổi trong các cá thể này

Until giải pháp tốt nhất đủ tốt
7

8

2


4/27/2017

Khoan chỗ nào

Ví dụ, khoan dầu

Giải pháp
1 = 300

• Giả sử cần khoan dầu ở đâu đó dọc theo

1km đường sa mạc
• Vấn đề: chọn chỗ tốt nhất trên đường có thể
cho nhiều dầu nhất
• Mỗi giải pháp là 1 vị trí trên đường, tức là 1
số trong khoảng [0..1000]

Giải pháp2
= 900

Đường
0

500

1000

9

10

Khoan dầu

Khoan dầu
• Tập các giải pháp có thể [0..1000] được gọi
là không gian tìm kiếm hoặc không gian
trạng thái
• Chuyển sang xâu nhị phân
64

32


16

8

4

2

1

900

1

1

1

0

0

0

0

1

0


0

300

0

1

0

0

1

0

1

1

0

0

1023

1

1


1

1

1

1

1

1

1

1

Giải pháp2 = 900
(1110000100)

Đường

0
OIL

512 256 128

Giải pháp1 = 300
(0100101100)


11

1000

30

5
Vị trí

12

3


4/27/2017

Bề mặt

Không gian tìm kiếm
• Không gian tìm kiếm ứng với các hàm như f(x),
f(x,y), có thể một chiều hoặc nhiều chiều.
• Không gian tìm kiếm có thể được mô hình hóa như
1 bề mặt trong đó độ phù hợp là độ sâu
• Mỗi kiểu di truyền (genotype) là 1 điểm trong
không gian
• GA cố gắng tìm các điểm tốt hơn (độ phù hợp cao
hơn) trong không gian

13


S¬ ®å tæng thÓ cña GA
• Khởi động quần thể đầu tiên P gồm N cá thể một cách ngẫu
nhiên
• REPEAT
– Giải mã các cá thể thành tham số
– Tính giá trị hàm mục tiêu cho từng cá thể trong P
– Chuyển đổi giá trị hàm mục tiêu (Target) thành giá trị độ
phù hợp (Fitness)
– Tiến hành toán tử chọn lọc tạo ra quần thể bố mẹ tạm
thời P1
– Tiến hành toán tử lai ghép từ P1 tạo ra quần thể các con
P2
– Tiến hành toán tử đột biến trên P2 tạo ra quần thể P3
– Tiến hành toán tử tái tạo để tạo ra quần thể cho thế hệ
tiếp theo từ hai quần thể P2 và P3
15
• UNTIL (Điều kiện dừng thoả)

• GA có thể vấp phải tối ưu hóa cục bộ (local maxima) nếu
KGTK có nhiều điểm như vậy

14

Sinh thêm cá thể - Phép lai ghép
(Crossover)
• Kết hợp gene của 2 cá thể bố mẹ có độ phù
hợp cao để tạo nên cá thể con
• Việc kết hợp 2 cá thể bố mẹ phụ thuộc vào
xác suất lai ghép
• Sinh 2 cá thể mới (offspring)

• Mỗi cá thể mới có thể bị thay đổi một cách
ngẫu nhiên (đột biến - mutation)
16

4


4/27/2017

Lai ghép

1010000000

Parent1

Offspring1

1011011111

1001011111

Parent2

Offspring2

1010000000

Lai ghép 1
điểm – ngẫu
nhiên


mutate

Đột biến
Offspring1

1011011111

Offspring1

1011001111

Offspring2

1010000000

Offspring2

1000000000

Original offspring

Lai ghép được áp dụng với tỉ lệ cao
(khoảng 0.8 đến 0.95)

Mutated offspring

mutation rate được áp dụng với tỉ lệ thấp (thường giữa 0.1
và 0.001)
17


Các biến thể của GA

18

Các tham số

• Các chiến lược lựa chọn (không phải roulette)

• Kích thước quần thể (N), tỉ lệ đột biến (m),
tỉ lệ lai ghép (c)
• Các giá trị này cần phù hợp với kết quả
mong muốn
• Các giá trị thường dùng
N = 50, m = 0.05, c = 0.9

– Vòng loại (Tournament)
– Elitism, v.v…

• Các chiến lược trao đổi chéo
– Multi-point crossover
– 3 way crossover, v.v…

• Các cách mã hóa khác
– Các giá trị nguyên
– Tập có thứ tự các ký tự

• Các kiểu biến dị khác nhau
19


20

5


4/27/2017

Các bước tiến hành
Bước 1:

Đặc điểm của giải thuật GA





• Chọn biểu diễn gen:
– Nhị phân: tập ký tự {0,1}
– Biểu diễn với tập ký tự lớn hơn ví dụ {a,b,..., z}
– Biểu diễn số thực

GA tìm kiếm trên một quần thể các cá thể
GA làm việc với mã của các thông số
GA chỉ sử dụng thông tin của hàm mục tiêu
GA sử dụng các luật chuyển đổi mang tính ngẫu
nhiên

• Xây dựng các toán tử thao tác trên biểu diễn gen đã chọn
• Xây dựng sơ đồ mã hoá và giải mã cho các cá thể
• Xây dựng hàm chuyển đổi từ giá trị hàm mục tiêu sang giá

trị độ phù hợp
• Chọn các tham số của GA:





Số cá thể trong quần thể N
Xác suất lai ghép pm
Xác suất đột biến pc
Số thế hệ cần tiến hoá G

Bước 2:
21

11100
11001
11011
10100

Ví dụ
• Bài toán: tìm giá trị cực đại của hàm:
trên{0,1,…,31}
• GA:

• Tiến hành quá trình tiến hoá theo sơ đồ của giải thuật

x2

22


Toán tử lựa chọn

– Biểu diễn dưới dạng chuỗi nhị phân. VD
01101  13
– Kích thước quần thể : 4
– toán tử lai ghép 1 điểm cắt, đột biến tại 1 điểm
– Lựa chọn kiểu Roulette wheel
– Khởi tạo ngẫu nhiên
23

24

6


4/27/2017

Lai ghộp

t bin

28

784

20

400
2538

634.5

25

26

Bc 2:

Vớ d v ti u hoỏ hm
Bi toỏn: tỡm giỏ tr cc i ca hm: f x12 x2 vi x1
nguyờn trong khong [0,15] v x2 nguyờn trong khong [0,31]
Bước 1:
Chn mó hoỏ nh phõn {0,1} vi 4 gen cho x1, v 5 gen cho x2
011010001 tng ng vi x1 = 0110 =6; x2 = 10001=17
S dng s chn lc t l, toỏn t lai ghộp 1 im ct, toỏn t
t bin bin i 0 thnh 1 v ngc li, toỏn t tỏi to khụng tinh
hoa qun th con P3 tr thnh qun th cho th h tip theo.
Fitness = Target - min Target trong qun th + 1
Chn tham s N = 4, Pc = 0.75, Pm = 0.25, G = 100

27

Khi ng qun th u tiờn ngu nhiờn
Cá thể

x1

x2

giá trị giá trị độ Xác suất

hàm mục phù hợp chọn lựa
tiêu

101001001
001110110
Số bản 111010100
Giá trị
copy
trung
trong P2
bình
101101111
0

1

010011101

4

29

-13

1

0.0047

2


100001110

8

14

50

64

0.3033

1

3

101010011

10

19

81

95

0.4502

2


4

011101100

7

12

37

51

0.2417

1

38.75

Tin hnh lai ghộp v t bin to ra qun th ca th h tip theo

thể
số

Bố mẹ

Vị trí
lai
ghép

con


con sau đột
biến

x1

x2

Giá trị Giá trị
hàm mục trung
tiêu
bình

2
3

100001110
101010011

3

100010011
101001110

100010011
101001110

8
10


19
13

45
87

3
4

101010011
011101100

7

101010000
011101111

111010000
011101111

14
7

16
15

180
34

86.5


28

7


4/27/2017

Lai ghép đồng nhất

Lai ghép n điểm
• Chọn n điểm lai ghép ngẫu nhiên
• Cắt dọc theo các điểm này
• Gắn các đoạn giữa các cá thể






Gán ‘đầu’ vào 1 cha, ‘đuôi’ vào 1 cha khác
Tung đồng xu cho mỗi gene của con đầu tiên
Làm 1 bản sao đảo của gene cho con thứ 2
Sự kế thừa độc lập vị trí

29

30

Lai ghép hay đột biến


Lai ghép hay đột biến

Khám phá: Phát hiện các vùng hứa hẹn trong không gian tìm






Phụ thuộc vào bài toán, nhưng
Tốt nhất nên có cả 2
Nếu chỉ đột biến, có thể tiến hóa
Nếu chỉ lai ghép , không tiến hóa

kiếm, tức là lấy được thông tin từ bài toán
Khai thác: Tối ưu hóa trong vùng hứa hẹn, tức là sử dụng thông
tin
Thường kết hợp cả 2 phương pháp này.
• Lai ghép là việc khám phá, nó sẽ là 1 bước nhảy đến 1 miền nào
đó trong 2 cá thể bố mẹ
• Đột biến là việc khai thác, nó tạo ra 1 sự thay đổi nhỏ, vì vậy nó
ở gần miền của cha nó
31

32

8



4/27/2017

Lai ghép hay đột biến

Các cách biểu diễn khác

• Chỉ có lai ghép có thể kết hợp các thông tin từ thế hệ cha

Có thể mã hóa các biến số trực tiếp dưới dạng:

• Chỉ có đột biến tạo ra các thông tin mới (gene)

• Số nguyên

• lai ghép không thay đổi tần suất của gene trong quần thể

• Các biến dấu phẩy động

• Để đạt được kết quả tối ưu, cần 1 chút may mắn trong phép
đột biến

33

34

Lai ghép theo công thức đơn

Biểu diễn dạng số nguyên
• Một số bài toán sử dụng số nguyên để biểu diễn như xử lý
ảnh

• Một số bài toán khác sử dụng các giá trị từ 1 tập cố định, vd
{blue, green, yellow, pink}
• Có thể sử dụng phép toán lai ghép 1 điểm hoặc N điểm

35





Bố mẹ: x1,…,xn  và y1,…,yn
Lấy ngẫu nhiên 1 NST k
Con thứ 1 là




Con thứ 2 ngược lại
VD:  = 0.5

x1 , ..., xk ,   yk  (1   )  xk , ..., xn

36

9


4/27/2017

Lai ghép theo công thức đơn




Lai ghép toàn bộ theo công thức

Bố mẹ: x1,…,xn  và y1,…,yn
Lấy ngẫu nhiên 1 NST k. Sau điểm này, các giá trị là

x , ..., x ,   y
 (1   )  x
, ...,   y  (1   )  x
1
k
k 1
k 1
n
n



Con thứ 2 ngược lại
VD:  = 0.5





Hay dùng
Bố mẹ: x1,…,xn  và y1,…,yn
Con 1:





Con thứ 2 ngược lại
VD:  = 0.5

a  x  (1  a )  y

37

38

Biểu diễn phép hoán vị: VD bài toán TSP

Biểu diễn phép hoán vị




Bài toán sắp thứ tự
VD: thuật toán sắp xếp: các thành phàn quan trọng được xếp
trước
VD bài toán người du lịch - Travelling Salesman Problem
(TSP) :



• Mã hóa:




39

Bài toán:
• Có n thành phố
• Tìm hành trình với độ dài ngắn
nhất
• Các thành phố 1,2, … , n
• 1 đường đi hoàn chỉnh là 1 phép
hoán vị (vd n =4 [1,2,3,4],
[3,4,2,1] )
Không gian tìm kiếm lớn :
30 thành phố  30!  1032 hành
trình
40

10


4/27/2017

Phép đột biến cho hoán vị

Đột biến kiểu chèn

• Các phép đột biến thông thường đem lại giải
pháp vi phạm điều kiện bài toán
• Cần thay đổi ít nhất 2 biến
• Tham số cho đột biến phản ánh xác suất 1 số

thao tác được áp dụng cho toàn xâu, thay vì
cho 1 vị trí

• Lấy ngẫu nhiên 2 NST
• Chuyển NST thứ 2 theo sau cái thứ 1, dịch
phần còn lại sang phải
• Phép đột biến này giữ lại hầu hết trật tự các
NST và thông tin về sự liền kề của chúng

41

42

Đột biến kiểu đảo

Đột biến kiểu trộn
• Lấy ngẫu nhiên 2 NST và đổi chỗ của
chúng
• Giữ lại được hầu hết thông tin về sự liền kề
của chúng, phá vỡ trật tự nhiều hơn

• Lấy ngẫu nhiên 2 NST và đổi chỗ các NST
nằm giữa chúng
• Giữ lại được hầu hết thông tin về sự liền kề
của chúng, nhưng phá vỡ trật tự các NST

43

44


11


4/27/2017

Đột biến kiểu ngẫu nhiên

Phép lai ghép cho chuỗi hoán vị
• Phép lai ghép thông thường dẫn đến kết quả
vi phạm ràng buộc của hoán vị

• Lấy ngẫu nhiên 1 tập con các NST
• Sắp xếp lại 1 cách ngẫu nhiên các NST đó

12345

12321

54321

54345

(các tập con không nhất thiết phải liên tục)
• Các giải pháp đề xuất tập trung vào trật tự khi
kết hợp và thông tin về tính liền kề từ các cặp
bố mẹ
45

46


1 4| 5 9 3| 2 7 8 6
Ví dụ về lai ghép
2 5|17điểm
8 9| 1 6 3 4

Lai ghép 1 điểm
• Ý tưởng: giữ nguyên trật tự của các phần tử
• Thủ tục:
1. Chọn ngẫu nhiên 1 phần từ cha thứ 1
2. Chép nó sang con thứ 1
3. Chép các số còn lại sang con thứ 1 theo quy tắc sau:
• Bắt đầu từ điểm cắt của phần sao chép
• Sử dụng trật tự của cha thứ 2
• Đến đuôi thì quay vòng lại từ đầu
4. Làm tương tự với con thứ 2

• Lấy ngẫu nhiên 1 tập con từ cha thứ 1

• Chép phần còn lại từ cha thứ 2 theo trật tự 1,9,3,8,2

47

48

12


4/27/2017

9 6| 1 2 5| 7 8 4 3

Ví dụ2 5| 7 8 9| 1 6 3 4

Lai ghép đối sánh một phần
Lai ghép P1 và P2:
1. Chọn ngẫu nhiên 1 phần trong P1 và chép nó sang con thứ 1.
2. Bắt đầu từ điểm cắt đầu tiên, tìm các phần tử trong phần tương ứng
của P2 chưa được chép
3. Với mỗi phần tử i trong các phần tử đó, tìm phần tử j trong con đã
chiếm vị trí của nó
4. Đặt i vào vị trí của j trong P2, vì ta biết rằng sẽ không đặt j vào đó
(do j đã có trong xâu con rồi)
5. Nếu vị trí chiếm bởi j trong P2 đã bị chiếm trong xâu con bởi k, đặt
i vào vị trí của k trong P2
6. Sau khi đã xử lý hết các phần tử trong mảnh đã lai ghép, phần còn
lại được điền theo P2
Con thứ 2 được sinh ra tương tự.



Step 1



Step 2



Step 3

49


50

145932786
2 5trình
7891634
Lai ghép chu

Lai ghép chu trình
Ý tưởng:
Mỗi gen đến từ 1 cha kết hợp với vị trí của nó.

• Bước 1: xác định các chu trình

Thủ tục:
1. Tạo 1 chu trình các gen từ P1 theo cách sau:
(a) Bắt đầu với gen thứ 1 của P1
(b) Tìm gen ở cùng vị trí trong P2
(c) Tìm vị trí chứa cùng gen đó trong P1
(d) Thêm gen đó vào chu trình
(e) Lặp lại bước b đến d đến khi gặp lại gen đầu tiên của P1.

• Bước 2: chép chu trình khác vào con

2. Đặt các gen của chu trình trong con thứ 1 vào các vị trí nó có trong
cha thứ 1
3. Thực hiện chu trình tiếp theo từ cha thứ 2
51

52


13


4/27/2017

1 4 5 9 3 2 7 8Kết
6 hợp cạnh
257891634

Kết hợp cạnh

• Xây dựng bảng liệt kê các cạnh xuất hiện trong 2 cha, nếu
1 cạnh xuất hiện ở cả 2, đánh dấu bằng dấu +
• vd. [1 2 3 4 5 6 7 8 9] và [9 3 7 8 2 6 5 1 4]

Sau khi xây dựng bảng, thực hiện các bước sau:
1. Lấy ngẫu nhiên 1 phần tử, đưa vào offspring
2. Đặt current element = entry
3. Loại tất cả các phần tử nối với phần tử hiện tại khỏi bảng
4. Kiểm tra danh sách của phần tử hiện tại:
– Nếu có cạnh chung, lấy phần tử đó làm phần tử tiếp theo
– Nếu không, lấy phần tử trong danh sách mà bản thân nó có danh sách cạnh nối
ít nhất
– Các trường hợp còn lại: lấy ngẫu nhiên

5. Khi gặp danh sách rỗng:
– Mở rộng đầu kia của offspring
– Nếu không chọn ngẫu nhiên 1 phần tử mới
53


145932786
Kết hợp cạnh
257891634

55

54

Các mô hình quần thể
• SGA sử dụng mô hình:
– Mỗi cá thể chỉ tồn tại trong 1 thế hệ
– Tất cả các cha được thay thế bởi các con
• Mô hình trạng thái ổn định SSGA :
– 1 con được sinh qua 1 thế hệ
– 1 thành viên của quần thể được thay thế
• Khoảng cách thế hệ
– tỉ lệ dân số được thay thế
– 1.0 với SGA, 1/pop_size với SSGA

56

14


4/27/2017

Cạnh tranh về độ phù hợp
• Lựa chọn có thể xảy ra tại 2 chỗ:
– Lựa chọn từ thế hệ hiện tại để tham gia vào lai

ghép
– Lựa chọn từ các bố mẹ + con cho thế hệ tiếp theo
• Phân biệt các phép lựa chọn
– Các thao tác: xác định xác suất lựa chọn
– Thuật toán: xác định cách xác suất được sử dụng

57

15



×