intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Giáo trình xử lý ảnh y tế Tập 3 P5

Chia sẻ: Cinny Cinny | Ngày: | Loại File: PDF | Số trang:9

64
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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.

Chủ đề:
Lưu

Nội dung Text: Giáo trình xử lý ảnh y tế Tập 3 P5

  1. f si  0 xi cho i bất kỳ, đặt S = -f, cụ thể, dùng quãng dốc nhất. 14. Tính iter = iter +1. 15. Nếu (iter < giá trị lớn nhất của số lần lặp cho trước) thì quay về bước 5, nếu không thì trả lại giá trị X và ra khỏi chương trình. Cho cả hai phương pháp trên thì  có thể rút ra bằng kỹ thuật tìm kiếm hàng của Brent. Để dùng các lưu đồ này, gradient của hàm cần tính sẽ phải được tính. Các gradient này được cho bởi M 1 E    (d i  yi ) yi (1  yi ) x 0i (12.15)  0 i 0 M 1 E    (d i  y i ) yi (1  y i ) x1i và (12.16) 1 i 0 Xấp xỉ gradient kết hợp dùng hàm sai lệch tổng chỉ đòi hỏi 36 lần lặp để đạt được hội tụ. Giá trị ban đầu được cho ngẫu nhiên và kết quả là  0= 0.010559, 1= 0.021119, và  được chọn là 0.1. Giá trị sai lệch ban đầu của hàm là 7.3. Sau 36 lần lặp sai số giảm xuống 0.000134 và kết quả cho bởi 0 = 115.72, 1 = - 104.03, và  = 0,1. Nhắc lại là quy tắc delta yêu cầu 15,000 phép lặp để sai số giảm xuống nhỏ hơn một một ít. Từ đây, ta có thể lựa chọn mà không nghi ngờ gì một kỹ thuật khi dạy một hệ thống thần kinh nhiều lớp. 12.6 Perceptron nhiều lớp Một perceptron đơn lẻ với hai đầu vào có thể biểu diễn dưới dạng sơ đồ bằng một đường thẳng chia hai lớp (Hình 12.5). Rõ ràng, để vây quanh một miền trong hệ thống hai đầu vào (2-D sysem) đòi hỏi ít nhất ba đường thẳng (Hình 12.9). Điều này dẫn chúng ta một cách tự nhiên đến sơ đồ perceptron hai lớp cho trong hình (12.10). Hệ thống này bao gồm một lớp đầu vào, một lớp bị che khuất và một lớp đầu ra. Không khó khăn lắm để chỉ ra rằng cho một hệ thống ba đầu vào (3-D system) cần ít nhất bốn mặt dùng để bao kín miền, ví dụ, bốn perceptron hoặc nút sẽ phải cần tới trong lớp bị che khất. Tổng quát, cho một si êu không gian N chiều, (N + 1) siêu mặt phẳng sẽ cần để bao kín miền được cho, N+1 perceptron hoặc nút được cần trong lớp bị che khuất. Một miền lồi là một miền mà trong nó bất cứ đường nào nối các điểm trên đường bao của miền cũng chỉ đi qua những 291
  2. Hình 12.9 Miền được bao quanh. Hình 12.10 Perceptron ba lớp. 292
  3. Hình 12.11 Các kiểu khác nhau của miền quyết định. Hình 12.12 Mạng ba lớp tổng quát. 293
  4. điểm trong phạm vi miền đó. Một perceptron ba lớp, nói một cách khác, có thể chia thành các miền tuỳ ý và có thể tách thành các lớp khớp nhau như trong hình 12.11. Hình 12.12 miêu tả một phần tử hệ thống cả m nhận ba lớp. Các quan hệ nối liền nhau không được thể hiện để làm cho sơ đồ không bị phức tạp. Chúng ta sẽ nhận được các đạo hàm theo các trọng số cho trường hợp ba lớp. Chúng ta sẽ tính các biểu thức trong tr ường hợp tổng quát, sau đó chúng ta cũng áp dụng các biểu thức này perceptron hai lớp. Sau đây chúng tôi sẽ cung cấp cho các bạn file nguồn cho một chương trình tổng quát tính có thể dùng cho một hệ thống có kích thước bất kỳ. Tất nhiên là một ví dụ cũng được cho theo kèm. Các trọng số được đánh số là  ijl , ở đây i = vị trí nút trong lớp l - 1 j = vị trí nút trong lớp l Tổng của các tín hiệu vào vào bất kỳ nút nào được ký hiệu là netil, ở đây i = vị trí nút trong lớp l +1 . Tín hiệu ra của từ bất kỳ nút nào trong mạng được ký hiệu là yil, ở đây i = vị trí nút trong lớp l+1. Từ sơ đồ hình 12.12 chúng ta có thể viết hàm sai lệch tiếp theo:  N 3 1 1 M 1 2   ( 2)    d i (k )  y i (k )  (12.17) E 2 k 0  i 0    Để rút ra đạo hàm của E theo các trọng số chúng ta sẽ bắt đầu với các trọng số cung cấp cho lớp ra. Bởi thế, y i( 2) (k )  M 1  N 3 1 E   (2)     d i ( k )  y i ( k )   mn) k 0  i 0 (2  mn)  (2 Chúng ta có thể viết y i( 2) (k ) y i( 2) (k ) net i( 2 ) (k )    n2 ) ( net i( 2) (k )  mn) (2 f (net i( 2) (k ))   N 2 1 ( 2) (1)  ( 2   il  y l (k )   net i( 2) (k )  mn)  l  0  0 im    f (net ( 2) (k ))  y 1 (k ) i  m  m n 294
  5. M 1 E    (d m (k )  ym2) (k ))  f (netm2) (k ))  yn1) (k ) ( ( ( Cho nên  mn) k 0 (2 Bằng định nghĩa  m (k )  (d m (k )  y m (k ))  f (net m2) (k )) 2 2 ( (12.18) chúng ta có thể viết: M 1 E    m2) (k )  y n1) (k ) ( ( (12.19) (1)  mn k 0 Đạo hàm của E theo các trọng số cung cấp cho lớp ẩn thứ hai có thể rút ra theo:  N 3 1 y ( 2) (k )  M 1 E   (d i (k )  yi( 2) (k )) i (1)     mn) k  0 (1  mn   i 0 yi( 2) (k ) yi( 2) neti( 2) Bây giờ   (1) neti( 2)  mn) (1  mn Công thức cuối cùng được đưa ra như sau:   N 2 1 ( yi( 2) (k )   f i(neti( 2) )  (1)    il2) y1  l (1)  mn  mn  l 0  N 2 1 (1) ( f ( net l )  f i(neti( 2) )   il2)  mn) (1 l 0 N 2 1  ( f (netl(1) ) netl(1)   f i(neti( 2) )   il2)   (1  netl(1)  mn)  l 0  N 3 1 M 1 E   f (net m1) (k ))    i( 2) (k ) im ) y n0) (k ) ( (2 ( Bởi vậy (1)  mn k  0 i 0 N 3 1 Bằng định nghĩa  m1) (k )  f (netm1) (k ))   i( 2) (k ) im ) ( ( (2 (12.20) i 0 M 1 E   i(1) (k ) y n0) (k ) ( Chúng ta có thể trình bày (12.21)  (1)  mn k 0 Bằng cách sử dụng các phép toán trên chúng ta có thể rút ra đạo hàm của E theo các trọng số cung cấp cho lớp bị che khuất đầu tiên. Chúng được cho theo các biểu thức sau đây: 295
  6. N 2 1  m0) (k )  f (netm0) (k ))   i(1) (k ) im) ( ( (1 (12.22) i 0 M 1 E    m0 ) (k ) xn (k ) ( (12.23) (0 )  mn k 0 Tổng quát, cho một hệ thống nhiều lớp chúng ta có thể suy ra từ các biểu thức trên các tập hợp tiếp theo. Nếu lớp cuối cùng là L, thì  mL ) (k )   m (k ) f (net mL ) (k )) ( ( N j  2 1  i j 1 (k ) imj 1) ( j) (k )  f (net mj ) (k )) ( (   m i 0 và j  L  1, L  2,...,0 M 1 E    mj ) (k ) y n j 1) (k ) ( ( ( j)  mn k 0 j  L, L  1,...,1 M 1 E   m0) (k ) xn (k ) ( và   mn) (0 k 0 Chú ý rằng nếu hàm f(net) là hàm xichma chúng ta có thể thay f (net mj ) (k ))  y mj ) (k )(1  y mj ) (k )) ( ( ( Tập hợp cuối cùng có thể dùng để phát triển một chương trình C cho "đào tạo" một mạng nhiều lớp. Nếu các đạo hàm được tính bằng cách đầu tiên xem xét lớp ra và làm việc quay trở lại với lớp vào, phương pháp tính các đạo hàm này được gọi là phương pháp lan truyền ngược (Back-propagation). Lan truyền ngược cũng chỉ ra rằng sai lệch ở tín hiệu ra sẽ lan truyền trở lại tới tín hiệu vào. Chương trình dưới đây dùng phương pháp gradient kết hợp kèm theo phương pháp của Brent tìm kiếm tuyến tính để tập luyện cho một hệ thống thần kinh với một số bất kỳ lớp ẩn và nút. Giải thuật thu gọn, mô tả ở phần trước cũng được sử dụng. Chương trình 12.3 “PERNCONJG.C” /*Program 12.3 "PERNCONJG.C". Training a multilayer neural network using the conjugate gradient method.*/ 296
  7. /************************************ * Developed by M.A.Sid-Ahmed. * * ver. 1.0, 1992. * * @ 1994 * *************************************/ /* Program for training a multi -layer perceptron using the conjugate gradient method.*/ void conj_grad( float (*)(float *), void (*)(float *, float *, int), float *, int, float, float, int); float fun(float *); void dfun(float *, float *,int) #include #include #include #include #include #include int M,*NL,*NS,L; int *d; float *xp,*y,*net,*delta,theta; void main() { float *w,q,xt; int i,j,N,xd,ind,Nt; char file_name[14],file_name2[14],ch; FILE *fptr,*fptr2; clrscr(); printf("\nDo you wish to use previously trained weights? (y or n)-->"); while(((ch=getch())!='y')&&(ch!='n')); putch(ch); switch(ch) { case 'y' : printf("\nEnter file name -->"); 297
  8. scanf("%s",file_name); fptr=fopen(file_name,"r"); if(fptr==NULL) { printf("No such file exists."); exit(1); } fscanf(fptr,"%d ",&L); NL=(int *)malloc(L*sizeof(int)); NS=(int *)malloc(L-2)*sizeof(int); for(i=0;i
  9. printf("Enter number of nodes in output layer-->"); scanf("%d",&NL[L-1]); NS[0]=NL[0]*NL[1]; for(i=1;i
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2