Chiến lược tìm kiếm

Một phần của tài liệu Một số quy trình huấn luyện mạng nơron và ứng dụng xấp xỉ hàm số (Trang 72)

Bây giờ chúng ta xem xét vấn đề khó nhất của thuật toán này. Chiến lược tìm kiếm xác định cách

chuyển từ một trạng thái tới một trạng thái khác trong không gian trạng thái, cho đến khi đạt được trạng thái kết thúc. Đó chính là việc xác định đồ thị liên kết C có được trong quá trình tìm kiếm. Nếu trạng thái hiện tại là và trạng thái tiếp theo là thì thuật toán thêm vào này thỏa m•n các điều kiện sau:

1) (4.11) 2) (4.12)

Các nơron và liên kết trong trạng thái hiện tại phải được giữ nguyên trong trạng thái tiếp theo, và phải có một số liên kết mới được hình thành trong trạng thái tiếp theo, hoặc cùng với một số nút nơron được thêm vào. Trên lý thuyết chúng ta có thể chỉ cần thay đổi liên kết trong E và không cần thay đổi trong V ( ) cho một số cặp trạng thái kế tiếp, điều này dẫn tới có nhiều mạng có cùng hiệu quả thực

hiện và ít được sử dụng trong thực tế. Vì thế chúng ta thường chọn , với thường được sử dụng

nhiều nhất.

a) ánh xạ chuyển trạng thái

Chìa khóa của thuật toán thêm vào là ánh xạ chuyển trạng thái , ánh xạ này sẽ thực hiện chuyển trạng thái hiện tại tới trạng thái tiếp theo. Trong các bài toán tìm kiếm điển hình, các thực hiện chuyển trạng

thái được xác định bởi bài toán cần thực hiện, không phải là chiến lược tìm kiếm. Ví dụ trong bài toán

chơi cờ, cấu hình cho trạng thái tiếp theo được xác định bởi luật chơi cờ, chiến lược tìm kiếm chỉ định

nghĩa thứ tự các trạng thái được xem xét. Nhưng ở đây, việc tìm một hàm xấp xỉ tốt cho hàm đích tự

nó không có một hạn chế nào trên các thực hiện chuyển trạng thái có thể, ít nhất là trong nguyên lý. Cách đơn giản là nhảy ngẫu nhiên tới bất kz một trạng thái nào đó trong không gian trạng thái. Vì vậy

để cung cấp một nguyên lý tìm kiếm cho thuật toán thêm vào phải được hạn chế bởi những trạng thái

có thể bằng cách định nghĩa một thích hợp, được chỉ dẫn bởi 2 điều kiện 1) và 2) nêu trên.

có thể là đơn trị hoặc đa trị. Xét trường hợp là đơn trị, tức là chỉ có duy nhất một trạng thái tiếp

theo đưa ra từ trạng thái hiện tại. Việc này sẽ làm giảm sơ đồ các trạng thái đi qua trong quá trình tìm kiếm, hình sau.

Hình 4.13- Sơ đồ trạng thái trong ánh xạ đơn trị

Tuy nhiên, điều này sẽ thiếu sự mềm dẻo đối với các bài toán thực hiện. Nó cho thấy không có một lớp

đơn các kiến trúc mạng nơron giải quyết cho mọi bài toán. Nếu hàm đích có thể được biểu diễn sát

bởi một mạng nơron có kích thước hợp lý, thì việc sinh trạng thái mới sẽ trở nên tốt. Ngược lại việc sinh ra trạng thái mới sẽ tồi. Vì thế khi là đơn trị sẽ không có lối ra ngay cả khi có sự không khớp giữa bài toán và kiến trúc mạng được tạo ra từ thuật toán.

Một phương cách hữu hiệu phải có một đa trị, sẽ có một số trạng thái tiếp theo cho một trạng thái

hiện tại. Mỗi trạng thái tiếp theo như vậy gọi là một tuyển lựa, và sẽ khác về cấu trúc với những trạng thái khác. Các tuyển lựa khác nhau cùng có một số lượng các nút ẩn. Vì thế có nhiều tuyển lựa cho phép thử với một số kiến trúc mạng ở giai đoạn tiếp theo, và kết quả kiến trúc mạng thích ứng hơn cho bài toán sẽ được giữ. Trong trường hợp này chúng ta phải định nghĩa thứ tự các trạng thái kế tiếp

sẽ được xem xét. Kỹ thuật tìm kiếm phải định nghĩa hàm đánh giá để đánh giá độ thích ứng của riêng

mỗi tuyển lựa. Ví dụ sơ đồ trạng thái trong ánh xạ đa trị.

b) Định nghĩa một đồ thị liên kết mới

Không quan tâm tới việc ánh xạ chuyển trạng thái là đơn trị hay đa trị, một câu hỏi đặt ra là làm thế

nào để sinh ra được trạng thái tiếp theo kể từ trạng thái hiện tại, hoặc tương tự làm thế nào để định

nghĩa một đồ thị mới. Một cách đơn giản đòi hỏi tất cả các nút ẩn phải cùng trong một lớp ẩn, điều này dẫn đến kiến trúc mạng có một lớp ẩn. Cấu trúc mạng thông thường là sử dụng cùng một hàm kích họat cho tất cả các nút ẩn, dẫn đến việc thực hiện dễ hơn.

Để đơn giản ta thực hiện một trạng thái mới được sinh ra sẽ có số nút tăng lên 1, và các liên kết trong E sẽ thực hiện liên kết đầy đủ (full connection). Như đ• trình bày, ở đây chúng ta chỉ xây dựng mạng

với kiến trúc một lớp ẩn, do vậy việc thêm nút ở đây thực hiện trên lớp ẩn. Còn lớp vào và lớp ra ta có

thể xác định trước thông qua bài toán cần giải quyết. (adsbygoogle = window.adsbygoogle || []).push({});

c) Vấn đề hội tụ

Điều quan trọng thứ nhất trong chiến lược tìm kiếm đó là họ các hàm sinh ra bởi các mạng đủ rộng để

chứa hàm đích f hoặc hàm xấp xỉ đủ tốt của f. Chúng ta đ• biết với mạng có một lớp ẩn có thể xấp xỉ

được mọi hàm và với độ chính xác tùy ý, do vậy điều này luôn được đảm bảo. Thứ hai là việc sinh ra

mạng mới trong quá trình tìm kiếm phải hội tụ đến hàm đích, với thứ tự các hàm được sinh ra là phải

đảm bảo điều kiện (theo [12]): (4.15)

d) Vấn đề luyện tham số sau mỗi trạng thái

Trong quá trình tìm kiếm các trạng thái, chúng ta phải luyện tham số cho mạng để tối thiểu sai số của

cấu hình trạng thái hiện thời. Mỗi trạng thái S' sẽ được sinh ra từ trạng thái S trước đó, bằng cách

thêm các nơron và các liên kết tương ứng, do đó việc luyện tham số lại cho mạng mới sinh ra tương ứng với S' sẽ có 2 cách tiếp cận: đó là chỉ luyện tham số cho nơron mới thêm vào và có thể điều chỉnh một số liên kết khác có liên quan, hoặc luyện lại toàn bộ mạng trên cơ sở những liến kết cũ đ• có và giữ nguyên.

4.2.5. Thuật toán xây dựng mạng theo phương pháp constructive

Với kiến trúc truyền thẳng 3 lớp, lớp vào - lớp ẩn - lớp ra, số nơron ở lớp vào và lớp ra có thể xác định

thông qua tập dữ liệu mẫu, hoặc từ các thông tin về vấn đề đang thực hiện. Thuật toán thể hiện việc

xây dựng mạng đó chính là xác định số nơron trong lớp ẩn.

Như đ• trình bày, vì chọn C là liên kết đầy đủ giữa các nơron ở các lớp và ở mỗi trạng thái ta sinh trạng thái tiếp bằng cách thêm một nơron vào V (trong lớp ẩn), dẫn đến ánh xạ trạng thái là đơn ánh. Tuy

nhiên ta cũng có thể chọn giải pháp là đồ thị liên kết C không đầy đủ và số nơron có thể không thêm ở

trạng thái tiếp. Hàm kích hoạt của mỗi nơron trong lớp ẩn là như nhau và ta chọn là tansig:

Trong thuật toán này sử dụng 2 tham số ? và ?, ? để xác định dừng cho thuật toán luyện tham số được sử dụng BP, ? để xác định dừng cho quá trình tìm kiếm. Nội dung của thuật toán được trình bày như

sau:

Thuật toán xây dựng mạng nơron theo phương pháp constructive Vào:

Tập dữ liệu huấn luyện D = {(pi , ti), với i=1,2,…,Q-. Ra:

Một mạng nơron NN đ• được xây dựng.

Các bước thực hiện:

Bước 1) Tạo một mạng nơron tương ứng với trạng thái xuất phát S, có số nơron V=Ni+No+1 (số nơron

ở lớp vào + số nơron ở lớp ra + 1 nơron lớp ẩn), và liên kết đầy đủ E. Ni = |pi| và No = |ti|

Bước 2) Huấn luyện mạng nơron S theo thuật toán BP, với hệ số giảm sai số là ?. Tức là nếu sai số của mạng sau mỗi lần luyện không nhỏ hơn ? lần so với sai số của mạng trước đó thì sẽ dừng thuật toán

BP.

Bước 3) Đặt k=1 và tính sai số của mạng trên tập D

Bước 4) Xác định trạng thái tiếp theo Sk+1 bằng cách thêm một nơron ở lớp ẩn và tạo liên đầy đủ với các nơron ở lớp vào và lớp ra cho nơron mới thêm đó, các liên kết mới có trọng số ngẫu nhiên.

Bước 5) Thực hiện thuật toán BP luyện tham số cho mạng Sk+1 theo hệ số giảm ?. (adsbygoogle = window.adsbygoogle || []).push({});

Bước 6) Tính sai số E(Sk+1) và kiểm tra, nếu E(Sk+1) < ?.E(Sk) thì sẽ đặt k=k+1 và quay lại bước 4,

ngược lại sẽ sang bước 7.

Bước 7) Đặt NN = Sk+1 và dừng thuật toán.

Sơ đồ TT2- Thuật toán xây dựng mạng nơron theo phương pháp constructive

Trong thuật toán này không sử dụng tập dữ liệu X để kiểm tra và khắc phục hiện tượng overfit, tuy

nhiên chúng ta có thể thực hiện điều đó một cách đơn giản như thuật toán TT1.

Một giải pháp tổng hợp là chúng ta sử dụng thuật toán loại bỏở trên, tuy nhiên trong bước xác định các nơron ở lớp ẩn ta sẽ thay bằng thuật toán thêm vào. Như chúng ta biết thuật toán thêm vào hiệu quả hơn ở các điểm sau:

- Việc chọn một kiến trúc mạng xuất phát là đơn giản

- Việc huấn luyện mạng trong các bước của thuật toán sẽ nhanh hơn - Thuật toán sẽ cho một kiến mạng đủ nhỏ để thực hiện bài toán

Do vậy việc thay thế này sẽ làm cho thuật toán đơn giản và thực hiện nhanh hơn.

Các mẫu dữ liệu thu thập được bởi người dùng có thể có các thuộc tính phụ thuộc với nhau, dẫn đến

nếu chúng ta chọn số lượng đầu vào cho mạng bằng số lượng các thuộc tính của mẫu dữ liệu thì dẫn

đến việc dư thừa làm cho mạng hoạt động kém. Do vậy chúng ta phải thực hiện loại bỏ các dư thừa ở

đầu vào theo thuật toán loại bỏở trên.

Chọn một kiến trúc mạng xuất phát chỉ với 3 lớp, lớp vào có số nơron bằng số thuộc tính dữ liệu thu thập được, số nơron ở lớp ra dựa vào bài toán cần thực hiện (trong bài chúng tôi chọn 1 nơron đầu ra cho đơn giản), số nơron ở lớp ẩn là 1. Kiến trúc mạng xuất phát được thể hiện bởi hình vẽ sau:

Ta gọi tập mẫu dữ liệu thu thập được là , , đánh giá sai số của mạng trên tập dữ liệu là

(4.16)

trong đó là đầu ra của mạng, là đầu ra mong muốn.

Trong thuật toán này tôi sử dụng hai tham số ?, ? là các hệ số giảm. Thuật toán huấn luyện mạng nơron theo BP sẽ dừng khi sai số lần sau không nhỏ sai số lần trước ? lần. Việc thêm các nơron sẽ

Thuật toán được trình bày cụ thể như sau:

Vào:

Tập , một mạng nơron xuất phát theNET. Ra:

Mạng nơron đ• được huấn luyện theNET để thực hiện bài toán hồi quy. Các bước thực hiện:

Bước 1: Huấn luyện mạng nơron xuất phát theNET

a) Thực hiện thuậ toán luyện mạng theNET cho đến khi sai số của mạng không giảm theo một hệ số ?.

b) Tính sai số ET của mạng theo công thức (4.16) trên. Bước 2: Thêm các nơron trong lớp ẩn

a) Lưu cấu hình mạng hiện tại: oldNET = theNET

b) Thêm một nơron vào lớp ẩn của mạng theNET và đặt các giá trị ban đầu cho các trọng số liên kết ứng với nơron vừa thêm. Đặt H=H+1.

c) Thực hiện luyện mạng theNET cho đến khi sai số mạng không giảm theo một hệ số ? (? là một hệ số (adsbygoogle = window.adsbygoogle || []).push({});

giảm nhỏ hơn 1). Tính sai số EE của mạng vừa luyện theNET theo công thức (4.16).

d) Nếu ( là một hệ số giảm nhỏ hơn 1) thì chấp nhận mạng mới theNET và quay lại bước 2a. Ngược lại ta sẽ khôi phục cấu hình mạng cũ và sang bước 3: theNET = oldNET.

Bước 3: Loại bỏ các nơron ở lớp vào dư thừa

a) Tính sai số mạng ETbest theo (4.16), lưu cấu hình mạng oldNET = theNET.

b) Với mỗi nơron vào j = 1, 2, … N, đặt wij = 0 cho tất cả các nơron lớp ẩn i=1, 2, …H và tính ETj theo (4.16).

c) Tìm win = min,ETj- và đặt win = 0. Huấn luyện lại mạng nơron và tính ET.

d) Nếu ET ? (1+?)ETbest thì: Loại bỏ nút vào thứ n trên, đặt ETbest=min,ET, ETbest-, đặt N=N-1 và quay

lại bước 3b.

Sơ đồ TT3- Thuật toán xây dựng mạng nơron kết hợp

Trong thuật toán này chúng tôi không chia tập dữu liệu mẫu thành 2 tập ET và EX, tuy nhiên chúng ta có

thể thực hiện điều này để khắc phục hiện tượng overfit trong huấn luyện mạng.

4.4. Kết quả thử nghiệm

Trong phần này chúng tôi sẽ thử nghiệm cho 2 thuật toán tiêu biểu đó là thuật toán TT1 và TT2, các thử

nghiệm được thực hiện trên 3 hàm từ đơn giản đến phức tạp. Ký hiệu 3 hàm như sau:

Tập dữ liệu mẫu được lấy ngẫu nhiên, với độ lớn các tập mẫu khác nhau. Tập mẫu dữ liệu sau khi lấy

sẽ được làm nhiễu hóa theo một hệ số nhiễu ? tự đặt. Chúng tôi tiến hành trên 2 tập có kích thước

tương ứng là 50 và 150.

4.4.1. Thử nghiệm đối với hàm F1

Trong hàm sin(x) chúng tôi cho nhiễu với hệ số là ?=0.2 và kết quả được thể hiện trong các hình vẽ sau:

Hình 4.17- Xấp xỉ hàm SIN bằng thuật toán TT1 với 50 mẫu

Hình 4.18- Xấp xỉ hàm SIN bằng thuật toán TT1 với 150 mẫu

Hình 4.19- Xấp xỉ hàm SIN bằng thuật toán TT2 với 50 mẫu

Hình 4.20- Xấp xỉ hàm SIN bằng thuật toán TT2 với 150 mẫu

Chúng ta thấy thuật toán TT2 xấp xỉ tốt hơn và có khả năng dự đoán ở những điểm không học tốt hơn

so với thuật toán TT1, đặc biệt là khi có số mẫu dữ liệu nhiều hơn.

(adsbygoogle = window.adsbygoogle || []).push({});

Sau đây là kết quả thử nghiệm đối với hàm F2 ở trên: Hình 4.21- Xấp xỉ hàm F2 bằng thuật toán TT1 với 50 mẫu Hình 4.22- Xấp xỉ hàm F2 bằng thuật toán TT1 với 150 mẫu Hình 4.23- Xấp xỉ hàm F2 bằng thuật toán TT2 với 50 mẫu Hình 4.24- Xấp xỉ hàm F2 bằng thuật toán TT2 với 150 mẫu 4.4.3. Thử nghiệm đối với hàm F3

Hàm F3 gọi là hàm Bohachevsky, có 2 biến vào và có nhiều cực trị như hình vẽ sau, giới hạn trong đoạn [-1,1].

Hình 4.25- Hàm Bohachevsky trên đoạn [-1,1]

Với trường hợp tập dữ liệu huấn luyện có 50 mẫu, tập mẫu được làm nhiễu với hệ số nhiễu là 0.1, và

mạng nơron có 20 nơron trong lớp ẩn ta có kết quả số nơron trong lớp ẩn không thay đổi như hình sau:

Hình 4.26- Xấp xỉ hàm Bohachevsky bằng thuật toán TT1 với 50 mẫu

Với trường hợp tập huấn luyện có 150 mẫu, kết quả sẽ tốt hơn như hình vẽ sau, số nơron trong lớp ẩn còn lại 19.

Hình 4.27- Xấp xỉ hàm Bohachevsky bằng thuật toán TT1 với 150 mẫu

Đối với thuật toán TT2 và trường hợp tập dữ liệu có 50 mẫu ta có kết quả sau đây.

Hình 4.29- Xấp xỉ hàm Bohachevsky bằng thuật toán TT2 với 150 mẫu

Kết quả hàm xấp xỉ của thuật toán TT1 và TT2 với tập dữ liệu có 150 mẫu sẽ cho kết quả tốt hơn. Tuy nhiên với thuật toán TT1 nếu ta xuất phát với số nơron quá lớn sẽ dẫn đến tình trạng thuật toán dừng quá sớm, cho kết quả sai số nhỏ trên tập dữ liệu huấn luyện nhưng rất nhạy cảm (thay đổi bất

thường) với các dữ liệu ngoài tập huấn luyện. Thuật toán TT2 sẽ luôn dừng lại ở một cấu hình mạng

nơron mà cho kết quả sai số đủ tốt và đối với các dữ liệu ngoài tập học.

4.5. Phụ lục - đoạn chương trình chính của thuật toán TT2

Một phần của tài liệu Một số quy trình huấn luyện mạng nơron và ứng dụng xấp xỉ hàm số (Trang 72)