Mạng thần kinh nhân tạo cho lớp phân màu sắc Xử lý ảnh số Xử lý học y sinh
Trang 1Khô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
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
Trang 2Hì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 kinhvà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àmtă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âythầ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ànhcuố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ùngchuyển tiếp Hình hành cuối khớp thần kinh và vùng chuyển tiếp đợ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ứctổ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ợpnhấ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ácchuyể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áctuyế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àotrung tâm
Trang 3Hì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ỉ 1011 tế bào thần kinh, ớc lợng có khả năng thực hiệntrê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 nhanhnhấ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ầnbấ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à đòihỏ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 đợcthiế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ậmchí 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ầnkinh, 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)
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
Trang 4ở đây
i i i
N x
0
1
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
nếu (x0, x1) A dP = 1nếu (x0, x1) B dP = 0
ở đây ký hiệu p biểu thị cho một mẫu của (x0, x1) và dP 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 p 1 d p y p
2
2
Trang 5Hình 12.4 Các phần tử tính toán của một hệ thống thần kinh
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á EP đối với w 0 và w 1 cho tất cả các mẫu lấy vào
(x0,x1)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) EP là hàm phi tuyến của các biến w 0 và 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
và sau đó nếu lấy vi phân EP theo w 0 ta đợc:
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 (x0, x1) 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
Trang 6Thuậ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“PERECEPT.C” Perceptron học nhận thức bằng quy tắc ” Perceptron học nhận thức bằng quy tắc
/* Teaching a single pereptrjon using
the delta rule */
Trang 9mộ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ạncô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 trongchơ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ácsử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ạnmuố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) Lấy rất nhiều các giá trị từmột loạt các điểm trên miền đã lựa chọn sắc màu bằng cách nhắp đơn nút trái chuột Chú
ý là màn hình VGA sẽ hiện lên biểu đồ màu và cờng độ màu tại nơi mà bạn trỏ tới Nơi
mà bạn kích vào sẽ đánh dấu bằng một dấu thập màu đỏ trên biểu đồ màu vẽ trên mànhình VGA (xem hình 12.6) và lu nó vào một mảng Nếu bạn muốn dời dấu thập đi chỗkhác trong trờng hợp các điểm nhập vào lớn hơn một, thì nhắp nút trái chuột nhiều lần.Hành động này sẽ làm dời đi rất nhiều điểm tuỳ theo bạn chọn (bắt đầu từ điểm cuốicùng) từ biểu đồ màu và lu trong mảng Khi bạn ấn ESC, con trỏ sẽ xuất hiện trên mànhình VGA Đa con trỏ vào sơ đồ màu vẽ trên màn hình VGA, bằng cách kích lại nút tráichuột ta sẽ thu đợc dữ liệu cho một lớp màu khác Nhắp nút trái chuột, nh trớc đây, sẽlàm dịch chuyển đến đầu vào cuối cùng Chú ý rằng một dấu thập màu xanh sẽ xuất hiệnbất cứ khi nào bạn nhắp trái chuột, và sẽ bị dời đi khi bạn nhắp phải chuột Nhấn ESC đểthoát Bạn sẽ đợc hỏi tên file cho chứa dữ liệu Dữ liệu đợc lu trữ bao gồm 3 số: số đầutiên biểu diễn cho x, số thứ hai biểu diễn cho y, và số cuối cùng xác định lớp Giá trị lớpnày đợc gán bằng 1 trong trờng hợp lựa chọn sắc màu và 0 trong các trờng hợp còn lại.Dữ liệu đợc cho dới dạng "%f%f%d" Kết quả ta thu đợc là một cung màu trên biểu đồmàu đợc tách ra từ phần còn lại của phổ màu
Hình 12.6 Thu thập dữ liệu cho phân lớp màu sắc.
Chơng trình 12.2 COLORRDM.C Ch“PERECEPT.C” Perceptron học nhận thức bằng quy tắc ” Perceptron học nhận thức bằng quy tắc ơng trình thu thập dữ liệu; Đợc dùng với PIB.
Trang 10/* Program to read color from PIB screen It also classifies
color according to colors in Chromaticity diagram Use
mouse left button to enter x.y coordinates and right
button to erase as many previous entries as you wish.
The cursor will initially point to the PIB screen,
use the mouse to enter the tone you wish to classify
as one color set Press ESC to exit from PIB screen.
The cursor mouse will appear on VGA screen Use mouse
to point at points in the Chromaticity diagram that do
not belong to the set of colors you wish to classify.
Use left button to enter a point, right button to erase
previous entry or entries Press ESC again to exit and
#define green (l[0]&&l[6])
#define yellow ((!l[0])&&l[1])
#define skin_tone ((!l[1])&&l[2])
#define red ((!l[2])&&l[3])
#define magenta ((!l[3])&&l[4])
#define blue ((!l[4]&&(!l[53))
#define cyan (l[5]&&(!l[6]))
Trang 12printf("Max total number data points should not exceed 200.\n");
Trang 16/* Routine to obtain video mode and active page */
void get_video_mode(int *display_mode,int *active_page)
/* Routine to change to one of the VGA/EGA modes */
void set_video_mode( int set_mode)
Trang 18/* Routine to draw a circle of any color given the radius,
land cent re It uses Bresenham's algorithm for circle drawing */ void draw_circle(int x_centre, int y_centre,
Trang 19int radius,int color)
/* Routine to set a pixel on the VGA screen
to any of the standard colors.*/
void set_pixel(int x,int y, int color)
Trang 20/* Routine to turn on cursor mouse on the VGA screen */
/* Routine to read mouse row and column location.
It also provides mouse button status.*/
void read_mouse( int *row, int *col, int *button )
/* Routine to set vertical range for mouse */
void mouse_vrange(int min, int max)
/* Routine to set horizontal range for mouse */
void mouse_hrange(int min, int max)
{
union REGS reg;
reg.x.ax=0x07;
reg.x.cx=min;
Trang 21reg.x.dx=max;
int86(0x33,®,®);
}
/* Routine to move mouse cursor to a specified location */
void set_mouse(int row, int col)
Trang 22/* Routine to draw a cross on the VGA screen */
void draw_cross( float x float y, int color)
12.5 Dạy nhận biết bằng phơng pháp tối thiểu hoá hàm sai lệch tổng
Quy tắc delta nh chúng ta đã chứng kiến, là sơ đồ lặp hội tụ rất chậm Sự lựa chọn giátrị của và quyết định tốc tốc độ hội tụ Phép hội tụ này chậm, đòi hỏi hàng trămphé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ộtperceptron 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ờnghợ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 tadù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:
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 phituyế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ứngminh để có kết quả trong việc giải quyết các vấn dề tơng tự
Trang 2312.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) Phph-ơ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
Hì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ùngtì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ộtvù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êntrong 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ãycá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ìmkiế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 cha đợc trình bày trong cuốn sách này; nhng 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ầnchứ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ềnchuẩ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,
Trang 24Nế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 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
Trang 25tơng tự, nếu N đã đợc cho, thì một kết quả lớn hơn
1 1
F N
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ảngcách còn lại với sự lu tâm đến điểm bên trong Bớc xử lý này đợc lặp lại cho đến khi tấtcả N giá trị hàm đã đợc xác định
Tìm kiếm tỷ lệ vàng đợc tính từ tìm kiếm Fibonacci Nếu
L2 F N và
1 1
F N 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
F
F F
F
N N
N N
1 1
11
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)
Trang 267 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])
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ằngcá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 taxá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
f f a
(12.11)Cuối cùng tại x = x3
( ) ( ) ( 3 1) 2( 3 1)( 3 2)
1 2
1 2 1 3 3
x x
f f f x q x f
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
Trang 27q d
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 lu đồ do Swann phát triển đợc tôi lựa chọn để dùng Phơng phápnà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.
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,