Nếu tất cả các phép tính này cần thoả mãn cho một bài toán đơn giản như vậy, thì bạn tưởng tượng điều gì sẽ xảy ra nếu chúng ta dùng phương pháp này để dạy cho một cấu trúc thần kinh đa
Trang 1282
hàng trăm phép lặp, và để giải quyết hết các vấn đề thì số phép lặp lên đến hàng nghìn Một perceptron có hai đầu vào và vì vậy có hai trọng số có thể thay đổi được, phần tử mà tự nó có thể chia được hai lớp màu riêng biệt nhau, đòi hỏi một
số lượng phép tính như trong trường hợp phân chia lớp màu trong file
"TINT.DAT" Nếu tất cả các phép tính này cần thoả mãn cho một bài toán đơn giản như vậy, thì bạn tưởng tượng điều gì sẽ xảy ra nếu chúng ta dùng phương pháp này để dạy cho một cấu trúc thần kinh đa chức năng Vấn đề cấp thiết đặt ra
là phải tìm cách để đảm bảo sự hội tụ xảy ra với tốc độ nhanh hơn
Yêu cầu thực tế bây giờ là phải tối thiểu hoá, và đòi hỏi cho sự tối thiểu hoá này là hàm sai lệch tổng:
i
M
1 2
2 0
1 ( ) (12.5)
ở đây di là đáp ứng ra mong muốn cho các mẫu Xi = [ x0, x1, , xN-1], và yi là đáp
ứng ra thực sự cho cùng các mẫu đầu vào này Nếu yi là một hàm phi tuyến của
trọng số có thể thay đổi được : W = [ w0 , w1, , wN], vấn đề trở thành bài toán tối thiểu hoá một hàm phi tuyến Vì vậy, chúng ta sẽ tìm kiếm các phương pháp từ phạm vi phi tuyến đã được chứng minh để có kết quả trong việc giải quyết các vấn dề tương tự
12.5.1 Phương pháp tìm kiếm bất biến
Một phương pháp hay dùng nhất để rút ra giá trị nhỏ nhất của một hàm đơn biến là phương pháp tỷ lệ vàng (Golden Section) Phương pháp này dựa trên một giản đồ loại trừ miền, và giả thiết rằng hàm chỉ có một giá trị nhỏ nhất trong một
miền xác định trước Hàm như thế gọi là hàm đơn điệu Giản đồ loại trừ miền
trong trường hợp tổng quát có thể giải thích bằng biểu đồ như trong hình 12.7
Trang 2Hình 12.7 Sơ đồ loại trừ miền
Trong hình 12.7, nếu hai điểm được chọn trong miền giữa w0 và w1, và nếu y2 >
y1 thì rõ ràng giá trị cực tiểu nằm giữa w1 và a2 Vì vậy, miền [a2, w2] có thể loại trừ khỏi vùng tìm kiếm Nếu hai điểm khác được lựa chọn trong miền nhỏ hơn và phép xử lý được lặp lại, miền tìm kiếm sẽ bị co hẹp lại Cuối cùng, giá trị nhỏ nhất được thu hẹp nằm trong một vùng rất nhỏ Một câu hỏi đặt ra: Bằng cách nào chúng ta chọn được các điểm nằm bên trong này? Một câu hỏi khó hơn nữa sẽ là:
Có điều kiện gì cho việc tìm kiếm một dãy các điểm này để giá trị nhỏ nhất thu hẹp trong một vùng có độ rộng 2 sau một số xác định các bước? Câu trả lời cho vấn đề này đã được Kiefer tìm ra vào năm 1953 Cách tìm kiếm lần lượt được biết dưới tên tìm kiếm Fibonacci Phép tìm kiếm này dựa trên dãy số nguyên do Fibonacci đưa ra vào thế kỉ 13 Một phương pháp tìm kiếm không đòi hỏi toàn bộ
dãy số nguyên Fibonacci được đưa ra dưới tên là tìm kiếm tỷ lệ vàng (Golden
Section) Chứng minh của phương pháp này vẫn chưa được trình bày trong cuốn sách này; nhưng bởi vì nó đơn giản và tôi đoán chắc là bạn muốn tìm hiểu, nên tôi
sẽ trình bày với bạn phần chứng minh:
Chúng ta sẽ giả sử rằng việc tìm kiếm cho tìm kiếm Fibonacci sẽ tiến hành trên miền chuẩn hoá [0, 1] Dãy số nguyên Fibonacci được định nghĩa bằng các biểu thức:
F0 = F1 = 1 (12.6)
Fn = Fn-1 + Fn-2 n = 2,3,
Nếu N các giá trị hàm được dùng để tính , nếu chúng ta đã bắt đầu lùi từ phía sau kết quả và chuyển dịch về phía trước tới đầu miền trong khi mở rộng miền
Trang 3284
trong tất cả các bước giới thiệu dưới đây
Hình 12.8 Tìm kiếm Fibonacci
LN = 2 = F2
LN-2 = 5 = F4
L2 = FN
L1 = FN+1
ở đây L i là khoảng cách trong lần lặp thứ i, và F k, k = 2, 3, ., N+1 là các số Fibonacci
Nếu khoảng cách đầu tiên là [0,1] thì biểu thức cuối cùng của (12.7) có thể viết thành
1
1
FN
hoặc
FN 1 1
và vì thế, nếu được cho, thì N có thể xác định từ
FN 1 1
tương tự, nếu N đã được cho, thì một kết quả lớn hơn
1
1
FN
không được mong đợi
Các bước thực hiện của tìm kiếm Fibonacci rất đơn giản Hai giá trị hàm ban
đầu được xác định tại a 2 = L 2 = F N và a 1 = 1 - L 2 = 1 - F N Dựa trên kết quả, khoảng cách giữa [0,a1] hoặc [a2,1] được loại trừ và một điểm mới được lấy ra trong phần đối xứng khoảng cách còn lại với sự lưu tâm đến điểm bên trong Bước xử lý này được lặp lại cho đến khi tất cả N giá trị hàm đã được xác định
Trang 4Tìm kiếm tỷ lệ vàng được tính từ tìm kiếm Fibonacci Nếu
L2 FN và
1
1
FN thì L
F F
N N
2
1
Giả sử L 2 được chọn từ giả thuyết rằng một số lớn các giá trị hàm sẽ được tạo
ra (thậm chí ngay cả khi chúng ta không có ý định tạo ra chúng) Hãy xấp xỉ L 2
bằng L2 Vì thế
F
N
N N
2
1
lim
Cho N lớn
F
F F
F
N N
N N
N
2
1
1 2
1 1
F
L
N
N
2
1
1
2
1 1
1 1
L2 ( L2)2 1
L2 1 5
2
2 0 618
(12.8)
Trong khoảng [0,1], điểm bắt đầu tìm kiếm là a1 = 1 – 0.618 = 0.382 và a2 = 0.618, không phụ thuộc vào N hoặc
Tỷ lệ 5 /1 2 được biết trong toán học và kiến trúc cổ điển dưới tên tỷ lệ vàng (Golden Section) Nó chia một đoạn thành hai phần, làm cho một tỷ lệ rất lớn của đoạn ban đầu tương đương tỷ lệ nhỏ hơn Vì lý do này nên kỹ thuật loại
trừ này gọi là kỹ thuật tìm kiếm tỷ lệ vàng
Thuật toán cho tìm kiếm tỷ lệ vàng bây giờ có thể trình bày bằng các bước sau:
1 Xác định hai điểm 1 và 2 mà chứa điểm giá trị nhỏ nhất (1 > 2)
2 Tính L = 2 - 1, a2 = 0.618L + 1, và a1 = 1 + 2 - a2 (tham khảo hình 12.7)
Trang 5286
3 Tính tol = 2 - 1;
4 Nếu tol < thì dừng lại
5 Tính y1 = f(a1) và y2 = f(a2)
6 Nếu y1 < y2 và a1 > a2 thì loại trừ miền [1,a2], cụ thể, 1 = a2 và a2 = 1 + 2
- a1
Nếu y1 < y2 và a1 < a2 thì loại trừ miền [a2, 2], cụ thể, 2 = a1 và a2 = 1 +
2 - a1
Nếu y1 > y2 và a1 > a2 thì loại trừ miền [a1, 2], cụ thể, 2 = a1 và a1 = 1 +
2 - a2
Nếu y1 > y2 và a1 < a2 thì loại trừ miền [1,a1], cụ thể, 1 = a1 và a1 = 1 + 2
- a1
7 Chuyển tới bước ba
Bài tập 12.1 Lập một chương trình C cho tìm kiếm tỷ lệ vàng Kiểm tra
chương trình theo các hàm dưới đây:
f(x) = 6.0 - 11x + 6x2 - x3 (Trả lời : 1.42256 cho khoảng [0,2])
f(x) = (100 - x)2 (Trả lời : 100)
f(x) = ex - 3x2 - 2e-2x (Trả lời : 2.8316)
Một phương pháp đòi hỏi ít các giá trị hàm hơn phương pháp tỷ lệ vàng được
phát triển bởi Powell Cơ sở của phương pháp này dựa trên đánh giá bậc hai liên
tiếp Phương pháp đánh giá bậc hai cho rằng một khoảng giới hạn một hàm có thể
xấp xỉ bởi một hàm bậc hai Giá trị cực tiểu của hàm bậc hai này dùng như đánh
giá đầu tiên cho giá trị nhỏ nhất của hàm Giá trị cực tiểu này cùng với hai điểm
nữa dùng để tính ra một xấp xỉ tốt hơn, và cứ tiếp tục như vậy Cuối cùng, giá trị
cực tiểu của hàm bậc hai sẽ xấp xỉ giá trị nhỏ nhất thực sự trong giới hạn sai số
nào đó Phương pháp xấp xỉ bậc hai có thể mô tả bằng các bước sau:
Cho ba điểm liên tiếp nhau x1, x2, x3 và giá trị hàm tương ứng của nó f1, f2, f3
chúng ta xác định ba hằng số của hàm bậc hai
q(x) = a0 + a1(x-x1) + a2(x-x1)(x-x2) (12.9)
Vì f1 = f(x1) = q(x1) = a0
chúng ta có a0 = f1
(12.0)
Vì f2 = f(x2) = q(x2) =f1 + a1 (x2 - x1)
chúng ta có
1 2
1 2 1
x x
f f a
(12.11) Cuối cùng tại x = x3
Trang 6( ) ( ) ( 3 1) 2( 3 1)( 3 2)
1 2
1 2 1 3 3
x x
f f f x q x f
Để rút ra giới hạn cực đại (hoặc cực tiểu) chúng ta lấy vi phân q(x) theo x và
cho biểu thức này bằng 0
0 ) (
)
2
1
dx dq
Giải biểu thức trên theo biến x chúng ta rút ra giá trị đánh giá
2
1 1 2
2
a x x
Chú ý rằng giá trị nhỏ nhất rút ra nếu
0
2 2
2
2
a x d
q d
(12.14)
Thuật toán Powell dùng để đánh giá bậc hai liên tiếp được cho bởi Powell Tuy nhiên, nếu như a2 bằng 0 thì hàm này không thể xấp xỉ bằng hàm bậc hai
Một phương pháp bao gồm tìm kiếm tỷ lệ vàng và xấp xỉ bậc hai liên tiếp được cho bởi Brent Phương pháp của Brent được dùng cho hàm nhiều biến cho ở phần
kế tiếp dưới đây
12.5.2 Thu hẹp giá trị nhỏ nhất
Không có phương pháp nào dùng các phần trên là không có bước thu hẹp giá trị nhỏ nhất lúc ban đầu Một lưu đồ do Swann phát triển được tôi lựa chọn để dùng Phương pháp này được trình bày tốt nhất qua các thuật toán dưới đây
1 Lựa chọn giá trị ban đầu x0 và một bước nhỏ dx
2 Tính
x1 = x0 + dx
y1 = f(x0)
y2 = f(x1)
3 Nếu y1 y0 thì cho dx = -dx và tính
x1 = x0 + dx
y1 = f(x1)
4 Tính
dx = 2.0 * dx
Trang 7288
x2 = x1 + dx
y2 = f(x2)
5 Lặp lại các bước dưới đây cho đến khi y2 > y1
dx = 2.0 * dx
x0 = x1
y0 = y1
x1 = x2
y1 = y2
x2 = x1 + dx
y2 = f(x2)
6 Miền thu gọn là (x0,x1)
12.5.3 Phương pháp tối thiểu hoá hàm nhiều biến
Có một số kỹ thuật có hiệu quả cho tối thiểu hoá một hàm nhiều biến Phương pháp mà hay được dùng sẽ xác định một hướng tìm kiếm trong không gian nhiều chiều Tiếp theo, một phép xấp xỉ một biến sẽ xác định giá trị tối thiểu dọc theo hướng này Mỗi lần một giá trị tối thiểu được tìm thấy, một hướng mới được tìm tìm thấy và quá trình tìm kiếm lại bắt đầu lại từ đầu Điều này tiếp tục cho đến khi đạt được hội tụ Quy tắc delta mô tả ở phần trên có liên hệ với một kỹ thuật gọi là
sự hạ thấp dốc nhất Tuy nhiên, vẫn chưa có một kết quả nào được tạo ra để đưa
ra một sự tìm kiếm đơn biến dọc theo sự hạ thấp dốc nhất Một sự khác biệt nữa
là các mẫu được cho lần lượt tại từng thời điểm bằng sự sửa lại các trọng số Trong sơ đồ hay được dùng nhất thì điều này không xảy ra, tất cả các mẫu được cung cấp cho chương trình để tính một hướng tìm kiếm thuận tiện nhất
Bởi vì đây không phải là một quyển sách tối ưu, nên tôi sẽ trình bày với các bạn tất cả các phương pháp tối ưu hoá cho hàm nhiều biến Nhưng tôi sẽ chỉ trình bày với bạn hai phương pháp mà tôi thấy có kết quả nhất Phương pháp đầu tiên
mà tôi trình bày được phát triển bởi Fletcher và Reeves gọi là phương pháp gradient kết hợp Gradient kết hợp là một hướng cơ sở được thiết kế dùng để tối
thiểu hoá một hàm bậc hai đầy đủ có N biến sau đúng N bước Một phương pháp
khác được phát triển bởi Daviđon, Fletcher, Reeves
Phương pháp này thường hay được dùng để tối thiểu hoá các hàm có số biến lớn Bạn sẽ không cần phải hiểu các chứng minh của các thuật toán này khi áp dụng Nếu bạn muốn tìm hiểu thêm, tôi đề nghị bạn hãy tìm đọc các cuốn sách được xuất bản gần đây nhất về tối ưu hoá Tiếp theo tôi sẽ trình bày hai thuật toán này
Trang 8Chúng ta sẽ giả thiết rằng hàm N biến được tối thiểu hoá cho dưới dạng y =
f(x 0 ,x 1 ,x 2 , ,x N-1 ) = f(X) và
X = [ x 0 x 1 x 2 x N-1 ]
1 1
0
N
x
f x
f x
f f
Phương pháp gradient kết hợp Fletcher-Reeves
1 Chọn các giá trị ban đầu cho X = [x 0 x 1 x 2 x N-1 ], và đặt biến đếm số lần
lặp bằng không, ví dụ, iter = 0 Chọn số lần lặp lớn nhất cho phép
2 Tính
1 1
0
N
x
f x
f x
f f
3 Đặt S = f = [s 0 s 1 s 2 s N-1 ]
4 Tính
1 0
|
|
N
i i
df test
Nếu test < thì hội tụ đã đạt được, trả lại giá trị X và ra khỏi chương trình
5 Đặt f p = f
6 Tối thiểu hoá, dùng một giả thiết không biến, các hàm sau theo
1 1
1 1 0
(x s x s x N s N
7 Sửa lại X = X + S
8 Tính f(X)
9 Cập nhật giá trị của S dùng:
s X f X f
X f X f X
f S
T p p
T
) ( ) (
) ( ) ( )
(
10 Nếu
0
i i
s x
f
cho i bất kỳ , đặt S = - f, ví dụ , dùng sự hạ thấp dốc nhất
11 Tính iter = iter + 1
Trang 9290
12 Nếu (iter < số lớn nhất của phép lặp cho phép) thì chuyển tới bước 4, nếu
không thì trả lại giá trị X và thoát ra khỏi chương trình
Phương pháp Davidon-Fletcher- Powell Chúng ta coi rằng hàm N biến
được tối thiểu cho bởi y = f(x 0 , x 1 , x 2 , , x N-1 ) = f(X) Thuật toán này bao gồm các
bước:
1 Chọn các giá trị ban đầu cho X = [x0 x1 x2 xN-1], và đặt biến đếm số lần lặp bằng 0, ví dụ, iter = 0 Chọn số lần lặp lớn nhất cho phép
2 Tính
1 1
0
N
x
f x
f x
f f
3 Đặt S = - f = [s 0 s 1 s 2 s N-1 ]
4 Thiết lập ma trận H đồng nhất N N phần tử, ví dụ H = I
5 Tính
1
0
|
|
N
i i
df test
Nếu test < thì hội tụ đã đạt được, trả lại giá trị X và ra khỏi chương trình
6 Đặt f p = f
7 Để tối thiểu hoá, dùng một phương pháp một biến cho hàm dưới đây theo biến
1 1
1 1 0
(x s x s x N s N
8 Thay X = X + S
9 Tính f(X)
10 Tính Y = f - f p
11 Cập nhật giá trị của H dùng các biểu thức dưới đây:
) (
) )(
(
T
T T
YHY
H Y HY
N
T T
SY
S S
M
N M H
H
12 Tính S = -H f
13 Nếu