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

Mạng thần kinh nhân tạo cho phân lớp màu sắc part 1 pot

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 (385.11 KB, 11 trang )

255
Chơng
12

mạng thần kinh nhân tạo cho phân lớp màu sắc
12.1 Chỉ dẫn
Không nghi ngờ gì nữa, con ngời là cách tốt nhất để phân loại màu sắc.
Tuy nhiên, các ứng dụng đòi hỏi sự phân loại màu trực tuyến và sửa lại tín
hiệu sắc màu một cách có lựa chọn nh trong tín hiệu truyền hình màu, thay
thế cho sự phân lớp của con ngời là cần phải có. May mắn thay, một nhóm
các kiểu phân loại đợc mô hình hoá theo kiểu trí tuệ sinh vật (hệ thống thần
kinh nhân tạo) đã đợc phát triển và nghiên cứu trong một thời gian dài.
Mục tiêu của các nghiên cứu này là đạt đợc tới mức giống nh con ngời.
Chúng ta cha đạt đợc mục tiêu này. Sự thách thức là chúng ta phải hiểu
đợc bằng cách nào mà một loạt các tác động thần kinh đem lại cho chúng
ta khả năng nhìn, nghe, cảm giác, chuyển động Mặc dù chúng ta đã có
những hiểu biết đúng đắn cấu tạo của tổ chức bộ não con ngời, chúng ta
vẫn không hiểu một cách đầy đủ bằng cách nào mà con ngời có thể có một
loạt các chức năng nh vậy. Khả năng học hỏi và thích nghi của con ngời
vẫn còn là một điều bí ẩn. Một trích dẫn rất đáng quan tâm, "Tôi đã để lại
các dấu hiệu nh một bằng chứng về sự tồn tại của tôi, cái nào trong số các
dấu hiệu này bạn phản đối? Tôi đã tạo ra con ngời, tôi đã dạy [lập trình]
cho họ có khả năng nhận biết " (Kinh Coran, Suret Al-Rahman). Con ngời
nhận ra họ có khả năng phát minh ra các công cụ ngay từ khi họ mới đợc
tạo ra. Phần lớn các sáng tạo của con ngời đều dựa trên ham muốn tìm hiểu
trong lĩnh vực vật lý. Bằng tất cả các khám phá, con ngời lại quay trở về để
tìm hiểu chính bản thân mình. Cùng với sự ra đời của phần mềm, tự động
hoá, phỏng sinh học ta đã có thể mô phỏng một số chức năng của con ngời
qua các phần cứng và phần mềm mô phỏng. Giống nh khi bắt đầu, hệ
thống thần kinh nhân tạo vẫn cha mô phỏng đợc dạng thức con ngời; tuy
nhiên, các cấu trúc này có rất nhiều ứng dụng hữu ích. Một trong những ứng


dụng sẽ trình bày ở phần dới đây là phân lớp màu sắc. Trong chơng này
chúng ta sẽ xem xét một loạt các mô hình thần kinh nhân tạo, cách thức
nhận thức của chúng, và hiệu quả trong phân lớp màu.
256
12.2 Hệ thống thần kinh sinh vật
Mắt cảm nhận ánh sáng xung quanh chúng ta và chuyển chúng thành các
xung điện, sau đó đa về bộ nhớ qua các dây thần kinh. Tại phía sau của
mắt, một lới dây thần kinh từ giác mạc tạo thành các dây thần kinh cảm
quang. Hai lới dây thần kinh cảm quang gặp nhau tại một miền có tên là
giao thoa thị giác (optic chiasm). Tại miền này hai dây tạo thành một lới,
và đợc chia làm hai vùng cảm quang đi tới bên trái và bên phải của não.
Tất cả các miền này mang tín hiệu từ hai mắt, và não tổng hợp đợc hình
ảnh thực sự. Vùng của não cho các đáp ứng của hình ảnh gọi là vỏ não thị
giác (Hình 12.1). Nếu mỗi vùng của não nhận đợc hai ảnh của vật thể, mỗi
ảnh lấy từ một mắt với một góc nhìn khác nhau nhỏ thì kết quả ta sẽ nhận
đợc một hình ảnh ba chiều hay còn gọi là hình ảnh nổi. Tại não, một số
khổng lồ các liên lạc của các tế bào thần kinh tạo ra xử lý thông tin.

Hình 12.1 Các đờng thị giác của bộ não.
Hình 12.2 là một sơ đồ đơn giản hoá của tế bào thần kinh. Nó bao gồm
một tế bào (soma) với dây thần kinh vào (dendrites) và dây thần kinh ra
(axons). Các dây thần kinh vào nhận các tín hiệu kích thích hoặc các tín
hiệu kiềm chế. Các tín hiệu kích thích làm tăng và các tín hiệu kiềm chế làm
chậm khả năng phát tín hiệu của thần kinh. Các dây thần kinh ra đa tín
hiệu đến một tế bào khác. Thông tin đợc chuyển qua các hình hành cuối
khớp thần kinh (synaptic-end bulbs) và nhận bởi dây thần kinh vào thông
qua vùng chuyển tiếp. Hình hành cuối khớp thần kinh và vùng chuyển tiếp
257
đợc chia ra bằng một lỗ hở vào khoảng một phần triệu inch, và chuyển tiếp
tín hiệu qua lỗ hổng này bởi cơ chế hoá điện (hình 12.3). Phần cuối hành và

miền chuyển tiếp đợc gọi là khớp thần kinh (synapse). Tín hiệu đi trong
dây thần kinh vào và dây thần kinh ra nh một dòng điện. Có rất nhiều kiểu
dây thần kinh trong não và một số lớn các tế bào trạng thái và chức năng.
Một số hạn chế các xung mà có khả năng làm quá tải mạch cảm biến. Một
số đa tin tức tổng hợp đến bề mặt não, một số khác nhận tín hiệu đa vào.
Các hành ở khớp thần kinh chứa các túi nhỏ bé gọi là các túi khớp thần
kinh (hình 12.3). Mỗi túi chứa hàng ngàn các phân tử gọi là chuyển tiếp thần
kinh (neurotransmitter). Khi một tín hiệu thần kinh đến hành của khớp thần
kinh, các túi hợp nhất với màng, làm tràn các chất chứa bên trong vào các lỗ
của khớp thần kinh. Các chuyển tiếp thần kinh gắn chặt với các phần tử tiếp
nhận ở tâm của tế bào; làm mở các tuyến tiếp nhận và cho phép các ion natri
đi vào trong tâm tế bào và các ion kali đi ra. Dòng của các ion kích thích các
màng của tâm tế bào và tạo ra xung điện trong tế bào trung tâm.

258
Hình 12.2 Sơ đồ đơn giản hoá của tế bào thần kinh.

Hình 12.3 Các khớp thần kinh.
Con ngời có vào khoảng xấp xỉ 10
11
tế bào thần kinh, ớc lợng có khả
năng thực hiện trên 100 tỷ phép tính một giây. Một siêu máy tính Cray
X_MP, một loại máy tính nhanh nhất hiện nay, có khả làm đợc 0.8 tỷ phép
tính một giây. Con ngời nhanh hơn 100 lần bất kỳ một loại máy tính hiện
đại nào, với u điểm hơn hẳn về kích thớc nhỏ gọn và đòi hỏi ít hơn hẳn
năng lợng. Một tính chất cũng cần phải nói tới là bộ não con ngời đợc
thiết kế để xử lý ba chiều. Trong khi đó, các mạch tích hợp thờng là hai
chiều, và với sự tiến bộ ngày nay việc thiết kế mạch tích hợp ba chiều vẫn
cha đợc hoàn thiện hoặc thậm chí cũng không gần đợc nh kiểu tích hợp
ba chiều của bộ não con ngời.

12.3 Perceptron
Hình 12.4 giới thiệu cái mà ngời ta tin rằng đó là mô hình thuật toán học
cho một tế bào thần kinh đơn lẻ. Chú ý là có N đầu vào, cung cấp giá trị
ngỡng , và cho kết quả đi qua một hàm phi tuyến. Tín hiệu ra có thể là
giá trị 1 kích thích cho một dây thần kinh, hoặc là 0 (-1 cũng có thể đợc
dùng). Hàm phi tuyến hay đợc dùng là hàm xichma và hàm giới hạn (logic
ngỡng).
259
Cấu trúc trong hình 12.4 gọi là perceptron, và là cơ sở cho một cách phân
lớp tuyến tính mà có thể chia ra làm hai lớp tách rời nhau nh trong hình
12.5. Tín hiệu ra từ perceptron có thể viết dới dạng
y f

( )

(12.1)
ở đây





i i
i
N
x
0
1
(12.2)
Một sơ đồ xác định các trọng số {w

0
, w
1
, w
2
, , w
N
} và có hàm f() chia
thành hai lớp A và B phân biệt gọi là sơ đồ nhận thức. gọi là giá trị
ngỡng, và thờng nằm trong khoảng 0 đến 1.
Xuất phát từ sơ đồ nhận thức, chúng ta sẽ xem xét một perceptron chỉ có
hai đầu vào:








0 0 1 1
x x (12.3)
x
0
ký hiệu cho đặc điểm màu x của sơ đồ màu, x
1
là đặc điểm màu y. Nếu
chúng ta muốn perceptron phân biệt hai màu A và B, chúng ta sẽ chờ đầu ra
cho giá trị 1 nếu (x
0

,x
1
) thuộc về màu A, và 0 nếu đầu vào thuộc B. Theo các
giả thiết trên chúng ta có thể viết:
nếu (x
0
, x
1
) A d
P
= 1
nếu (x
0
, x
1
) B d
P
= 0
ở đây ký hiệu p biểu thị cho một mẫu của (x
0
, x
1
) và d
P
biểu thị cho đáp ứng
mong muốn cho mẫu này. Nếu (w
0
, w
1
) đã biết thì đáp ứng ra thực sự y có

thể tính từ biểu thức (12.1). Sai số cho việc đọc mẫu này có thể cho bởi
E d y
p p p

1
2
2
( ) (12.4)

260

H×nh 12.4 C¸c phÇn tö tÝnh to¸n cña mét hÖ thèng thÇn kinh.

261
Hình 12.5 Một hàm phân chia đơn giản của một lớp.
Vấn đề cần giải quyết là tối thiểu hoá E
P
đối với w
0
và w
1
cho tất cả các
mẫu lấy vào (x
0
,x
1
)
P
. Biểu thức (12.1) cung cấp sự phân chia chính xác giữa
hai lớp màu nh trong hình (12.5). E

P
là hàm phi tuyến của các biến w
0

w
1
và vì vậy các giản đồ phi tuyến cần đợc sử dụng để tối thiểu hoá nó.
Nếu y cho bởi hàm xichma
y f
e



( )


1
1

và sau đó nếu lấy vi phân E
P
theo w
0
ta đợc:



E
d y y y x
p

p p p p p

0
( ) ( )1
0

và theo w
1
ta đợc :



E
d y y y x
p
p p p p p

1
( ) ( )1
1


Thuật toán rút ra giá trị của các trọng số theo các bớc sau:

1.Cho các trọng số (w
0
, w
1
) và các giá trị ngẫu nhiên nhỏ.


Tại bớc lặp thứ k:

2. Cho một giá trị đầu vào (x
0
, x
1
) và chọn giá trị đầu ra theo ý thích: 1
nếu thuộc về một lớp màu và 0 nếu thuộc về lớp màu còn lại.
3. Tính tín hiệu ra thực sự y.
4. Tính





( ) ( )d y y y1
5. Tính các gradient








E
E E
x






0 1
0
[ ] - x
1

6. Thay đổi các trọng số dùng biểu thức :
262
W W E
k k k( ) ( ) ( )

1


ở đây W
k
= [ w
0
w
1
]
(k)
= các trọng số tại bớc lặp thứ k và

là một
phân số dơng nhỏ hơn 1.
7. Cho đầu vào giá trị mới hoặc nếu dữ liệu đã đợc đọc tất cả, đọc lại
tập các giá trị của dữ liệu. Quay lại bớc 2 và lặp lại cho đến khi hàm trọng

số thoả mãn, cụ thể là


i
k
i
k
W


1 ( )
i= 0 ,1.
Hội tụ trong một số trờng hợp sẽ nhanh hơn nếu xung lợng (moment)
đợc cộng thêm vào và trọng số đợc làm giảm đi bởi:
W W E E E
k k k k k( ) ( ) ( ) ( ) ( )
(


1 1


ở đây 0 < <1.

Thuật toán trên gọi là quy tắc "delta", đợc dùng rộng rãi trong tài liệu.
Mặc dù thuật toán trên có thể tính trọng số cho các lớp, nhng nó đòi hỏi
một số rất lớn các phép lặp để hội tụ. Việc chọn hai tham số và có vẻ
nh là tuỳ ý. Để cho bạn có thể kiểm tra thuật toán quy tắc delta chúng tôi
cho ở dới đây một chơng trình C thiết kế cho một perceptron với hai đầu
vào.


Chơng trình 12.1 PERECEPT.C Perceptron học nhận thức bằng
quy tắc denlta
/*Program 12.1 "PERECEPT.C". Perceptron
learning using the delta rule. */
/************************************
* Developed by M.A.Sid_Ahmed. *
* ver. I.O. 1992. *
* @ 1994 *
*************************************/
/* Teaching a single pereptrjon using
the delta rule. */

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <conio.h>
263
#include <io.h>
#include <custom.h>

#define eta 0.8
#define alpha 0.2

void main()
{
unsigned int d[200];
unsigned int N,ind,iter,i;
float w[2],x[2],x1[200],x2[200],net,E;
float dEp[2],sum,y,theta,dEp_old[2],delta;

FILE *fptr;
char file_name[14];

clrscr();
N=0;
iter=0;
gotoxy(1,1);
printf("Enter file name containing data >");
scanf("%s", file_name);
fptr=fopen(file_name,"r");
if(fptr==NULL)
{
printf("file %s does not exist.",file_name);
exit(1);
}
while((fscanf(fptr,"%f %f %d ",&x1[N],
&x2[N],&d[N])!=EOF))
N++;

fclose(fptr);
srand(1);
w[0]=(float)rand()/32768.00;
srand(2);
w[1]=(float)rand()/32768.00;
theta=0.1;
i=0;
sum=0.0;
ind=1;
264
gotoxy(1,10);

printf("Press ESC to exit before convergence.");

while(ind)
{
x[0]=x1[i];
x[1]=x2[i];
gotoxy(1,3);
printf("Iteration # %5d ",iter);
net=w[0]*x[0]+w[1]*x[1]+theta;
if(net>=20) E=0.0;
else E=exp(-(double)net);
y=1.0/(1.0+E);
delta=(d[i]-y)*y*(1.0-y);
dEp[0]=x[0]*delta;
dEp[1]=x[1]*delta;
if(i==0)
{
w[0]+=eta*dEp[0];
w[1]+=eta*dEp[1];
dEp_old[0]=dEp[0];
dEp_old[1]=dEp[1];
}
else
{
w[0]+=eta*dEp[0]+alpha*(dEp[0]-dEp_old[0]);
w[1]+=eta*dEp[1]+alpha*(dEp[1]-dEp_old[1]);
dEp_old[0]=dEp[0];
dEp_old[1]=dEp[1];
}
sum+=fabs((double)(d[i]-y));

i++;
if(i>=N)
{
gotoxy(1,6);
printf(" Square error= %f",sum);
i=0; sum=0;
iter++;
}
if(d[i]==1)
265
gotoxy(1,4);
else
gotoxy(1,5);
printf("%d %f", d[i],y);
if((i==N)&&(sum<=1.0e-1))
{
gotoxy(1,7);
printf("\n w[0]=%f W[1]=%f",w[0], w[1]);
exit(1);
}
if(kbhit()!=0)
{
gotoxy(1,7);
if(getch()==27)
{
printf("\n w[0]=%f w[1]=%f",w[0],w[1]);
exit(1);
}
}
}

}

Trên đĩa đi kèm đã có sẵn file dữ liệu có tên là "TINT.DAT" rút ra từ sơ
đồ màu. Dùng = 0.8 và = 0.2, phải mất gần 200 lần lặp để làm cho sai
số giảm từ 28 xuống 9,55. Sau 15,000 phép lặp sai số đã giảm xuống nhỏ
hơn 1 và tiếp tục giảm xuống. Thay

= 0.2 và = 0.8 sự hội tụ sẽ chậm
hơn. Trớc khi chúng ta nghiên cứu một phơng pháp tốt hơn cho tính toán
giá trị cảm nhận, chúng tôi sẽ cung cấp cho bạn công cụ thu nhập dữ liệu.
12.4 Thu nhập dữ liệu cho các lớp màu sắc
Chơng trình cho ở dới đây chỉ làm việc trên vỉ mạch ATI PIB đã đợc
đề cập đến trong chơng 11. Bạn có thể sửa đổi làm cho nó tơng thích với
các phần cứng thông dụng; các sửa đổi này không có gì là khó khăn lắm.
Chơng trình này có sử dụng chuột. Nếu bạn có vỉ mạch ATI PIB , đầu tiên
bạn cần nạp một ảnh trên màn hình PIB. Chạy chơng trình và con trỏ sẽ
xuất hiện trên màn hình. Dùng chuột, thay thế con trỏ trên sắc màu mà bạn
muốn tách ra (một perceptron đơn thì sẽ không thể tách ra đợc một sắc
màu; chúng ta sẽ đề cập đến việc tách các sắc màu ở phần cuối chơng này).

×