MỤC LỤC: CHƯƠNG 1: CĂN BẢN VỀ MẠNG NEURAL A.Các mô hình mạng Neural…………………………………2 1.Neural một đầu vào…………………………………….2 2.Hàm truyền………………………………………………3 3.Neural nhiều đầu vào…………………………………6 B.Các kiến trúc mạng Neural…………………………….8 1.Mạng Neural một lớp………………………………..8 2.Mạng Neural đa lớp……………………………….10 C.Mạng Perceptron đa lớp và giải thuật lan truyền ngược 1.Nội dung giải thuật lan truyền ngược…………..11 2.Huấn luyện mạng (Training). ……………………..13 3.Khởi tạo giá trị trọng số……………………………15 CHƯƠNG 2: ÁP DỤNG VÀO BÀI TOÁN: “Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên (đường này cố gắng chia không gian thành 2 phần sao cho tập điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1) ” 1.Xác định bài toán……………………………………..16 2. Xác định các tham số cho mạng…………………….16 3.Áp dụng vào bài toán………………………………….20
Trang 1KHOA CÔNG NGHỆ THÔNG TIN
VŨ THỊ THO Tin học 5A
BÀI TẬP LỚN MÔN TRÍ TUỆ NHÂN TẠO
Tên đề tài :
“Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên ( đường này cố gắng chia không gian thành 2 phần sao cho tập điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1 ) ”
Giáo viên phụ trách : NGÔ HỮU PHÚC
Trang 2
MỤC LỤC:
CHƯƠNG 1: CĂN BẢN VỀ MẠNG NEURAL
A.Các mô hình mạng Neural………2
1 Neural một đầu vào……….2
2 Hàm truyền………3
3 Neural nhiều đầu vào ………6
B Các kiến trúc mạng Neural……….8
1.Mạng Neural một lớp ……… 8
2.Mạng Neural đa lớp ……….10
C Mạng Perceptron đa lớp và giải thuật lan truyền ngược
1 Nội dung giải thuật lan truyền ngược ………… 11
2 Huấn luyện mạng (Training) ……… 13
3 Khởi tạo giá trị trọng số………15
CHƯƠNG 2: ÁP DỤNG VÀO BÀI TOÁN: “Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên (đường này cố gắng chia không gian thành 2 phần sao cho tập điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1) ” 1.Xác định bài toán……… 16
2 Xác định các tham số cho mạng……….16
3.Áp dụng vào bài toán……….20
Trang 3A.Các mô hình mạng Neural
1.Neural một đầu vào
Hình 1.1 Neural 1 đầu vào
Đầu vào vô hướng p được nhân với trọng số w, cho wp, tạothành một số hạng gửi đến bộ cộng Một đầu vào khác là 1 đượcnhân với bias b, rồi chuyển đến bộ cộng Đầu ra của bộ cộng,thường được xem như là net-input, trở thành đầu vào cho hàmtruyền đạt f sinh ra đầu ra Neural là a:
a = f(wp + b)
Ví dụ: w = 3, p = 2, b = -1.5 thì a = f(wp + b) = f(3x2 - 1.5) =f(4.5)
Bias giống trọng số ngoại trừ luôn có đầu vào hằng số là 1 Có thể
bỏ qua bias nếu muốn
2.Hàm truyền
Hàm truyền f cho trong hình 2.1 có thể là hàm tuyến tính hoặcphi tuyến của n Mỗi hàm truyền cụ thể được chọn nhằm thoả mãnmột số tính chất đặc biệt của bài toán cần giải quyết
Sau đây là 3 hàm truyền thông dụng nhất:
Hàm truyền Hard Limit:
Trang 4a = hardlim(n) =
Ta sẽ sử dụng hàm này để tạo các Neural phân lớp các đầuvào thành hai nhóm
Hàm truyền này được minh hoạ như hình 1.2
Hình 1.2 Hàm truyền Hard Limit
Trang 5Hàm truyền log.sigmoid
a = logsig(n) =
Hàm truyền logsig thông thường được sử dụng trong cácmạng đa lớp dùng để huấn luyện với giải thuật BP, một phần lànhờ tính khả vi của nó
Hàm truyền này được minh hoạ như hình 1.4
Hình 1.4 Hàm truyền Log-SigmoidMột số hàm truyền khác thường sử dụng, xem bảng tóm lượccác hàm truyền
Trang 6Bảng 1.5 Các hàm truyền
3 Neural nhiều đầu vào
Thông thường, một nơ ron có nhiều đầu vào Một Neural với
R đầu vào được cho như hình 1.5 Các đầu vào độc lập p1, p2,
p3, ,pR được gán trọng số bởi các thành phần w11, w12,, , w1R của
ma trận trọng số W
Trang 7Hình 1.6 Neural nhiều đầu vào
Ở đây: W = [w11, w12, , w1R]1xR; p = [p1, p2, p3, , pR]T
Rx1 Như vậy:
Ta lại muốn vẽ mạng với nhiều Neural, mỗi Neural có nhiềuđầu vào, hơn nữa, lại có thể có nhiều lớp các Neural, do đó nếudùng cách biểu thị như hình 1.5 thì sẽ rất phức tạp Ta dùng kýhiệu tắt như hình 1.6 sau:
Hình 1.7 Neural R đầu vào, kí hiệu tắt
Trang 8Ở đây, đầu vào p là một véc tơ Rx1
Chú ý thêm rằng, số lượng đầu vào của một mạng được xácđịnh bởi bài toán Chẳng hạn, để thiết kế một mạng Neural dự toáncác điều kiện bay và đầu vào là nhiệt độ không khí, vận tốc gió và
độ ẩm thì phải có 3 đầu vào cho mạng Neural
Trang 9Trong đó Wt =[wt1 wt2 wtR] là hàng thứ t của W
Một lớp Neural gồm S Neural được thể hiện như trong hình1.8 Chú ý rằng, mỗi thành phần trong R đầu vào đều được kết nốiđến tất cả các Neural, do đó ma trận trọng số có S hàng (R cột)
Ta nói rằng, một lớp Neural ở đây bao gồm: Ma trận trọng
số, các bộ cộng, véc tơ bias b, các hộp hàm truyền và véc tơ đầu ra
có tính chất hàm truyền như trên
Các thành phần của véc tơ đầu vào đi vào mạng thông qua
ma trận trọng số W:
Như đã nói, các chỉ số hàng của phần tử wij (tức i) của wdùng để chỉ Neural liên kết, trong khi chỉ số (j) chỉ nguồn đầu vào
Do đó các chỉ số trong w32 nói lên rằng, trọng số này (w32) kết nốiđến Neural thứ 3 từ nguồn thứ 2 (p2)
Mạng một lớp S-Neural, R đầu vào cũng có thể vẽ ở dạng
ký hiệu tắt như hình 1.9 sau:
Trang 10Hình 1.9 Lớp S Neural, kí hiệu tắt
Ở đây: pRx1; WSxR; aSx1; bSx1
2.Mạng Neural đa lớp
Bây giờ ta xét một mạng có một số lớp các Neural Mỗi lớp
Neural gồm ma trận trọng số W của nó, bias b của nó, một véc tơ net-input n và 1 véc tơ đầu ra a Ta cần có thêm một số ký hiệu để
phân biệt giữa các lớp này Ta dùng các ký hiệu kề trên để phânbiệt các lớp Theo đó, ma trận trọng số của của lớp thứ k ký hiệu là
Wk (không phải mũ k), Một mạng 3 lớp sẽ được biểu diễn nhưhình 1.10 sau:
Trang 11Hình 1.10 Mạng 3 lớp
Như trên, có R đầu vào, S1 Neural trong lớp thứ nhất, S2
Neural trong lớp thứ 2, Các lớp khác nhau có thể có số Neuralkhác nhau Các đầu ra của lớp 1, 2 theo thứ tự là đầu vào cho cáclớp 2, 3 Do đó, lớp 2 có thể xem như là mạng một lớp với R=S1
đầu vào, S=S2 Neural, ma trận trọng số W2 cấp S2xS1, đầu vào cho
lớp 2 là a1, đầu ra là a2
Lớp có đầu ra là đầu ra của mạng thì được gọi là lớp ra Các lớpcòn lại được gọi là các lớp ẩn Mạng như đã vẽ ở hình 2.9 có mộtlớp ra (lớp 3) và 2 lớp ẩn (các lớp 1,2)
Mạng trên có thể vẽ lại dạng ký hiệu tắt như sau: (Hình 1.10)
ra đầu ra OS của mạng Giá trị đầu ra này thường có sai số so vớigiá trị đầu ra mong muốn Y tương ứng với mỗi mẫu học X Các
Trang 12sai số sẽ được tính và lan truyền ngược từ lớp ra trở về phía trước
để cập nhật lại các trọng số liên kết giữa các Neural của các lớp
Các bước của thuật toán với mô hình mạng tổng quát
Trên đây ta đã trình bày giải thuật lan truyền ngược áp dụngcho mạng 2 lớp Tiếp theo ta sẽ trình bày giải thuật này áp dụngcho mạng Neural với số lớp bất kỳ:
Đầu vào: Tập mẫu học X=(x1,x2,x3,…xm) và Y=(y1,y2,y3,…
yn) với m: số đầu vào, n: số đầu ra, số lượng mẫu là M, số tầng
là các số ngẫu nhiên rât nhỏ
Khởi tạo m=1 (mẫu học thứ m), h =1 (lần huấn luyện thứ h), q =1 (lớp thứ q).
Bước 2:
Đưa mẫu huấn luyện thứ m áp lên mạng.
Bước 3:
Lan truyền xuôi tín hiệu đầu vào lần lượt qua các lớp
Neural, cho đến khi q > T để tính đầu ra tương ứng tại mỗi
Tính sai số ở lớp ra của mạng theo công thức:
k =(y k – o k ).o k (1-o k ) đối với Neural thứ k.
Bước 5:
Trang 13Lan truyền ngược tín hiệu sai số, cụ thể là từ đầu ra, qua lớp
ẩn cuối cùng,…đến lớp ẩn đầu tiên, để cập nhật trọng số cũng nhưtín hiệu sai số trước đó theo các công thức:
Nếu m < M (chưa hết số mẫu học) thì m = m+1, quay
lại bước 2, ngược
lại chuyển sang bước 7
Bước 7:
Sai số trung bình của mạng được tính theo công thức:
RMS =
n M
o y
.
) (
của vector đầu ra
Nếu RMS < thì kết thúc Ngược lại gán h = h + 1 rồi lặp lại
các bước từ bước 2 cho tới bước 7, bắt đầu một chu kỳ học mới.
2.Huấn luyện mạng (Training).
Học từng mẫu một:
Trang 14Một quy tắc cập nhật trọng số khác là: trọng số sẽ đượccập nhật ngay sau khi mạng học xong một mẫu, dựa trên đạohàm lỗi của riêng mẫu đó Với cách này thì lỗi trên tập mẫuthường giảm nhanh hơn ở các bước đầu vì mạng không cầnphải đợi hết một bước đi qua toàn bộ tập mẫu mới học đượcđiều gì đó.
Tuy vậy, với một vài bài toán ta phải cẩn thận khi dùngcách này Lý do đầu tiên là không phải lúc nào phương phápnày cũng giảm số bước cần thiết để mạng của ta ổn định với tậptrọng số tối ưu Trong nhiều trường hợp khi học mẫu mới mạng
có thể đã quên mẫu cũ Trường hợp này thường xảy ra khi cácmẫu kế tiếp nhau trong tập mẫu có sự khác biệt quá lớn
Thứ hai, ngay cả khi học từng mẫu, chỉ cần ít bước luyệnhơn nhưng chưa chắc tổng thời gian máy tính thực hiện việctính toán ít hơn so với học toàn tập mẫu một lần Bởi vì việc họctừng mẫu lại đòi hỏi việc tính toán của máy tính trên mỗi mẫunhiều hơn, trọng số thay đổi phải được tính cho mỗi mẫu chứkhông tính một lần cho cả bước
Thứ ba, việc học tong mẫu đòi hỏi ta phải then trong trongviệc sắp xếp thứ tự của các mẫu trong tập mẫu Thường thì cácmẫu xuất hiện cuối đợt huấn luyện thường có nhiều ảnh hưởnghơn so với các mẫu xuất hiện lúc đầu
Một giải pháp dung hoà là cập nhật tập trọng số dựa trêncác nhóm mẫu thay vì từng mẫu nhưng cũng không phải trêntoàn tập mẫu
Quy tắc moment
Phương pháp học được diễn tả như sau: nếu các bước học trướcđang giảm mạnh thì theo đà bước tới cũng sẽ giảm mạnh ta sẽtăng hệ số học để biến thiên trọng tăng lên, ngược lại giảm hệ sốhọc
3.Khởi tạo giá trị trọng số
Một vấn đề cũng rất đáng quan tâm trong quá trình huấnluyện mạng Neural đó là vấn đề khởi tạo các giá trị trọng số Huấn
Trang 15luyện mạng là một tiến trình lặp qua lặp lại nhiều bước Trong mỗibước, mạng thi hành ánh xạ với các mẫu trong tập mẫu, tính toánsai số và cập nhật lại sao cho mạng thi hành ngày một tốt hơn.Vấn
đề đặt ra là, ban đầu để mạng có thể thi hành ở bước học đầu tiênthì các trọng số lấy từ đâu? Có một cách khá tốt đó là khởi tạotrọng sao cho kết xuất của các có giá trị trung dung là 0.5(chính làtrung điểm của hàm logictic) Có hai lý do giải thích cho việc này:
Thứ nhất, nếu ta không biết gì về kết xuất, giá trị ở giữa làgiá trị hợp lý nhất Trong trường hợp một lớp cứ cho rằng tất cảcác kết quả đầu ra phân bố xung quanh trung điểm hàm truyền, giátrị ở giữa sẽ cực tiểu hoá hàm sai số, bất kỳ giá trị nào khác cũng
sẽ sinh ra sai số lớn hơn
Thứ hai, ta muốn tránh được các giá trị kết xuất thái quá, vìchúng chứa các đạo hàm lỗi nhỏ, các đạo hàm lỗi nhỏ làm cho biếnthiên trọng nhỏ và như thế tiến trình học sẽ chậm
Có hai cách khác nhau cho phép khởi tạo trọng số để đượckết xuất một nút ở khoảng giữa:
- Cách thứ nhất: ding khởi tạo trọng số các nút ẩn
- Cách thứ hai: khởi tạo trọng số các nút xuất
Đối với các nút xuất, ta khởi tạo các trọng số ban đầu thậtnhỏ Nếu các trọng số của nó đủ nhỏ, nút sẽ kết xuất một giá trịgiữa bất chấp các giá trị nhập của nó
CHƯƠNG 2: Áp dụng vào bài toán:
“Bài toán được mô tả là các điểm trên không gian 2 chiều.Mỗi điểm được gán nhãn là 0 hoặc 1.Hãy xây dựng chương trình sử dụng MLP đa lớp để tìm đường phân lớp 2 tập điểm nói trên (đường này cố gắng chia không gian thành 2 phần sao cho tập điểm nhãn 0 ở 1 phía,phía kia là tập điểm mang nhãn 1) ” 1.Xác định bài toán
Trang 16Bài toán đưa ra yêu cầu xây dựng mạng noron với các điểm đầu
vào có tọa độ (x,y) được gán nhãn là 0 hoặc là 1, đưa vào mạngMLP (em xây dựng mạng MLP 2 lớp) Khi đó đầu ra của mạnggồm có 2 đầu ra.Thứ nhất là đầu ra phân lớp đúng, thứ 2 là đầu raphân lớp sai
2 Xác định các tham số cho mạng
Bài toán sẽ sử dụng một mạng BP 2 lớp như hình vẽ dưới đây:
Hình 1.13 Mạng lan truyền ngược
Kiến trúc mạng tóm tắt như sau:
Mạng có m đầu vào, kí hiệu xi (i = 1…m)
Mạng có 2 lớp Neural
- Lớp ẩn có r Neural, kí hiệu p j (j =1 … r)
- Lớp ra có n Neural, kí hiệu là o k (k = 1…n)
Mỗi Neural của lớp sau được liên kết đầy đủ với các Neural ở
lớp trước bởi các trọng số w, liên kết được thể hiện bằng các
đường nét liền
Trang 17 Sự lan truyền ngược các sai số phát sinh được thể hiện bằngcác nét đứt.
Vì các đầu vào liên kết với các Neural nút ẩn bởi các trọng số
wij cho lên mỗi Neural thứ j của lớp ẩn sẽ nhận được tổng tín hiệu đầu vào có trọng số net j được tính theo công thức:
1
* i
Sau khi nhận được tổng tín hiệu vào với trọng số net j, giá trị
này sẽ được sử dụng làm tham số đầu vào cho hàm kích hoạt f (hàm truyền), và hàm kích hoạt f cho ta tín hiệu ra của các Neural lớp ẩn Giả sử hàm truyền được sử dụng là hàm Sigmoid đơn cực (ký hiệu là f) thì tín hiệu ra zj của mỗi Neural j được
Trang 18Như vậy với đầu vào là vector X, sau khi lan truyền tiến qua
mạng, ta sẽ nhận được đầu ra là vector O Đầu ra này không thể
hoàn toàn trùng khớp với đầu ra đích (hay đầu r among muốn).Sai số tổng thể E của mạng được tính dựa trên sai lệch giữa O
và Y theo công thức bình phương:
E=21
n
k 1 (y k – o k ) 2
Để điều chỉnh sao cho các tín hiệu ra O k tiến lại gần các tín
hiệu mong muốn y k, các trọng số của mạng sẽ được cập nhật lạitheo một quy tắc nào đó Chẳng hạn với quy tắc Delta (hay còngọi là phương pháp giảm theo hướng dốc nhất), thì các trọng số
liên kết giữa Neural thứ j tại lớp ẩn tới Neural thứ k tại lớp ra
được cập nhật theo công thức:
w jk = w jk + w jk
Trong đó biến thiên trọng số wjk của các trọng số liên kết
w jk được tính như sau:
w jk = . k z j
Với:
: là hệ số học
zj: là các đầu ra của Neural thứ j
k: là sai số mà Neural thứ k phải chịu trách nhiệm, đượcxác định theo công thức:
k = E k f ’ (net k )
Ở đây E k là đạo hàm của hàm lỗi E (E k = o k - y k) , net k là tổng
tín hiệu vào có trọng số của Neural thứ k và f ‘ () là đạo hàm
của hàm kích hoạt f mà ta dùng trong mạng Hàm f là hàm
sigmoid đơn cực thì
Trang 19f ‘ (x) = f(x)(1- f(x)) Vậy công thức trên sẽ được viết lại là:
k =(y k – o k ).o k (1-o k )
Các trọng số liên kết từ đầu vào thứ i tới Neural thứ j tại lởp
ẩn cũng được cập nhật theo cách tương tự, tuy nhiên sai số mà mộtNeural tại lớp ẩn phải chịu trách nhiệm sẽ được tính theo cáchkhác:
w ij = w ij + w ij
Với w ij =. j x i
Ta biết rằng một Neural thứ j ở lớp ẩn liên kết đầy đủ với tất cả các Neural k ở lớp ra Như vậy nó phải chụi trách nhiệm với tất cả các sai số của mỗi Neural k mà nó liên kết ở lớp ra Tổng sai số mà Neural thứ j phải chụi trách nhiệm là:
j = f(net j )
n
k 1 w jk k hay
Sai số trung bình của mạng được tính theo công thức:
RMS =
n M
o y
.
) (
Trang 20Nếu RMS < thì kết thúc.Ngược lại đưa mẫu huấn luyện thứ m
áp lên mạng,bắt đầu một chu kỳ học mới.
3.Áp dụng vào bài toán
Bước 1:Khởi tạo 2 ma trận trọng số q 1 và q 2
for ( int i = 1; i <= n; i++)
Trang 21// sai so @[k] = e[k] * out2[k] * (1 - out2[k])
for ( int i = 1; i <= n; i++)
Trang 22{
for ( int j = 1; j <= m; j++) {
b2[k] += deltaq2[j, k] / m; }
}