Luận án Kỹ thuật mạng nơron và quá trình của mạng
Những năm gần đây, những biến thể của thuật học lan truyền ngược vẫn
được quan tâm nghiên cứu và được công bố nhằm nâng cao tốc độ hội tụ của quá
trình luyện mạng.
Kỹ thuật lan truyền ngược ở đây là lan truyền ngược lỗi (hay sai số) trong
mạng, hàm lỗi (hay hàm sai số) thường chọn là hàm mà nó tối thiểu hoá được sai số
trung bình bình phương. Chính vì vậy, trong quá trình nỗ lực thoát khởi các cực tiểu
yếu, cực tiểu cục bộ và những mong muốn giảm thời gian thực hiện của máy tính
khi tìm kiếm nghiệm tối ưu, thì vấn đề nghiên cứu đặc điểm của các mặt lỗi thường
được chọn làm xuất phát điểm cho việc cải tiến hay đề xuất các thuật học mới.
Trong các nghiên cứu nhằm cải thiện thuật toán, người ta thường tìm cách thay đổi
bước học để cho phép có thể vượt qua những cực trị địa phương. Không có một giá
trị bước học xác định nào cho các bài toán khác nhau. Với mỗi bài toán, bước học
thường được lựa chọn bằng thực nghiệm theo phương pháp thử và sai, hoặc sẽ có
bước học phù hợp với từng dạng bài toán riêng biệt.
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
Tóm tắt nội dung tài liệu: Luận án Kỹ thuật mạng nơron và quá trình của mạng
] = -0.5+ (float) rand()/RAND_MAX; BTMTTSLA[i][j] = 0; } for(i=0;i<SLNRLA;i++) for(j=0;j<SLNRLR;j++) { MTTSLR[i][j] = -0.5 + (float) rand()/RAND_MAX; BTMTTSLR[i][j] = 0; } for(i=0;i<SLMHL;i++) PATR[i] = 0; for(i=0;i<35;i++) MTDVKT[i]=0; return 1; } /*--------------------------------------------------------------------- Ten Thu tuc: TOCDOHOCZERO Mo ta: 1. CAC DAU RA CUA MANG VAN LA ZERO, VI TOC DO HOC LA ZERO. 2. CAC SAI SO HOAN TOAN BANG VOI CAC DAU RA MONG MUON. 3. THU TUC NAY DUNG DE PHUC VU CHO VIEC TINH TOAN BUOC VUOT KHE. Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void TOCDOHOCZERO(void) { int t; TOCDOHOC=0; 134 Luận án Tiến sĩ Kỹ thuật 2013 BUOCLAP(); HAMMUCTIEU(); for(t=0;t<SLMHL;t++) FX[t] = ECM[t]; } /*--------------------------------------------------------------------- Ten Thu tuc: TINHBUOCHOCVUOTKHE Ngay sua : 03-11-2007 Phien ban : V2 Mo ta: THU TUC TINH BUOC HOC THEO NGUYEN LY VUOT KHE Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ----------------------------------------------------------------------*/ void TINHBUOCHOCVUOTKHE(void) { float XL,XU,FL[SLMHL],temp; int i,t,j; if(NBS==0) { A=0.5; GAMA=0.1; TOCDOHOC=A; } for(t=0;t<SLMHL;t++) FL[t]=FX[t]; XL=0; BUOC1: TOCDOHOC=A; BUOCLAP(); HAMMUCTIEU(); for(t=0;t<SLMHL;t++) F[t] = ECM[t]; if(F[t]>FL[t]) { XU=A; goto BUOC2; } //XL=A; for(t=0;t<SLMHL;t++) FL[t]=F[t]; XL=A; A=1.5*A; XU=A; goto BUOC1; BUOC2: if(FD>=(XU-FL)) goto BUOC3; A=XL+GAMA*(XU-XL); temp=TOCDOHOC; TOCDOHOC=A; BUOCLAP(); HAMMUCTIEU(); TOCDOHOC=temp; for(t=0;t<SLMHL;t++) F[t] = ECM[t]; for(t=0;t<SLMHL;t++) 135 Luận án Tiến sĩ Kỹ thuật 2013 if(FL[t]>F[t]) { XU=A; for(j=0;j<SLMHL;j++) FL[j]=F[j]; goto BUOC2; } for(t=0;t<SLMHL;t++) if(F[t]>FL[t]) { for(j=0;j<SLMHL;j++) FL[j]=F[j]; XL=A; goto BUOC2; } BUOC3: for(t=0;t<SLMHL;t++) FX[t]=F[t]; NBS=NBS+1; TOCDOHOC=A; } /*----------------------------------------------------------------------- ---- Ten Thu tuc: TINHTOANBUOCHOC Mo ta: TINH TOAN TOC DO HOC SAU MOI BUOC LAP Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO -----------------------------------------------------------------------*/ void TINHTOANBUOCHOC() { TOCDOHOC=TSDCBH/(SOBUOCLAP*0.001+MSDCBH); } /*----------------------------------------------------------------------- Ten Thu tuc: BUOCLAP Mo ta: DIEU CHINH CAC TRONG SO CUA MANG Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void BUOCLAP() { int i; i=0; //LUA CHON MAU HUAN LUYEN NGAU NHIEN: i = (int)(SLMHL*rnd), VOI 0<rnd<1 do { i = (int)(SLMHL*(float) rand() / RAND_MAX); }while(PATR[i]); DAPUNGDAURA(TAPHUANLUYEN[i]); DIEUCHINHTRONGSO(i); } /*----------------------------------------------------------------------- Ten Thu tuc: HUANLUYENCODINH Mo ta: HUAN LUYEN MANG DE TB-BINH PHUONG SAI SO DAU RA NHO HON EPSILON CHO TRUOC BUOC HOC LA MOT HANG SO. Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO 136 Luận án Tiến sĩ Kỹ thuật 2013 -----------------------------------------------------------------------*/ void HUANLUYENCODINH() { int t,l; printf("\nDANG HUAN LUYEN MANG VOI BUOC HOC CO DINH...\n"); START: if(RES==0) printf("\nKHOI DONG VA HUAN LUYEN LAI MANG!"); KHOITAOMANG(); //Luyen mang do { TOCDOHOC=0.2; BUOCLAP(); HAMMUCTIEU(); l = 1; for(t=0;t<SLMHL;t++) { PATR[t] = ECM[t] < EPSILON; l = l && (PATR[t]); } SOBUOCLAP++; RESET++; if(RESET>15000)break; if(SOBUOCLAP>BLTD) { HTHL=0; printf("\nQUA TRINH HUAN LUYEN MANG THAT BAI! \n"); printf("\nDE NGHI HUAN LUYEN LAI! \n"); break; } }while(!l);//while(!l && !kbhit()); if(RESET>15000) { RES=0; goto START; } if(SOBUOCLAP<BLTD) { printf("\n\nMANG DA DUOC HUAN LUYEN XONG SAU: "); printf("%ld",RESET); printf(" BUOC LAP!\n\n"); } } /*----------------------------------------------------------------------- - Ten Thu tuc: HUANLUYENGIAMDAN Mo ta: HUAN LUYEN MANG DE TB-BINH PHUONG SAI SO DAU RA NHO HON EPSILON CHO TRUOC BUOC HOC DUOC TINH THEO PHUONG PHAP GIAM DAN DON GIAN Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------- -*/ void HUANLUYENGIAMDAN() { int t,l; printf("\n\nDANG HUAN LUYEN MANG VOI BUOC HOC GIAM DAN...\n"); 137 Luận án Tiến sĩ Kỹ thuật 2013 START: if(RES==0) printf("\n\nKHOI DONG VA HUAN LUYEN LAI MANG!"); KHOITAOMANG(); //Luyen mang do { TINHTOANBUOCHOC(); BUOCLAP(); HAMMUCTIEU(); l = 1; for(t=0;t<SLMHL;t++) { PATR[t] = ECM[t] < EPSILON; l = l && (PATR[t]); } SOBUOCLAP++; RESET++; if(RESET>3000)break; if(SOBUOCLAP>BLTD) { HTHL=0; printf("\nQUA TRINH HUAN LUYEN MANG THAT BAI! \n"); printf("\nDE NGHI HUAN LUYEN LAI! \n"); break; } }while(!l);//while(!l && !kbhit()); if(RESET>3000) } if(SOBUOCLAP<BLTD) { HTHL=1; printf("\n\nMANG DA DUOC HUAN LUYEN XONG SAU: "); printf("%ld",RESET); printf(" BUOC LAP!\n\n"); } } /*----------------------------------------------------------------------- - Ten Thu tuc: HUANLUYENVUOTKHE Mo ta: HUAN LUYEN MANG DE TB-BINH PHUONG SAI SO DAU RA NHO HON EPSILON CHO TRUOC BUOC HOC DUOC TINH THEO NGUYEN LY VUOT KHE Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void HUANLUYENVUOTKHE() { int t,l; printf("\n\nDANG HUAN LUYEN MANG THEO BUOC VUOT KHE...\n"); START: if(RES==0){ printf("\nKHOI DONG VA HUAN LUYEN LAI MANG!"); } KHOITAOMANG(); TOCDOHOCZERO(); TINHBUOCHOCVUOTKHE(); //Luyen mang 138 Luận án Tiến sĩ Kỹ thuật 2013 do { TINHBUOCHOCVUOTKHE(); BUOCLAP(); HAMMUCTIEU(); l = 1; for(t=0;t<SLMHL;t++) { PATR[t] = ECM[t] < EPSILON; l = l && (PATR[t]); } SOBUOCLAP++; RESET++; // printf("lan lap thu %d\n",RESET); if(RESET>100)break; if(SOBUOCLAP>BLTD) { HTHL=0; printf("\nQUA TRINH HUAN LUYEN MANG THAT BAI! \n"); printf("\nDE NGHI HUAN LUYEN LAI! \n"); break; } }while(!l);//while(!l && !kbhit()); if(RESET>100) { RES=0; goto START; } if(SOBUOCLAP<BLTD) { HTHL=1; printf("\n\nMANG DA DUOC HUAN LUYEN XONG SAU: "); printf("%ld",RESET); printf(" BUOC LAP!\n\n"); } } /*----------------------------------------------------------------------- - Ten Thu tuc: DAPUNGDAURA Mo ta: TINH CAC DAU RA LOP AN, y, VA DAU RA LOP RA, z, TU DAU VAO LOPA VAO, x. Cac dau vao: VEC-TO DAU VAO x[i] Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void DAPUNGDAURA(int afer[]) { int i,j; float totin; for(i=0;i<SLNRLV;i++) x[i] = (float)afer[i]; for(j=0;j<SLNRLA;j++) { totin = 0; for(i=0;i<SLNRLV;i++) totin = totin + x[i]*MTTSLA[i][j]; 139 Luận án Tiến sĩ Kỹ thuật 2013 y[j] = SIGMF(totin); } for(j=0;j<SLNRLR;j++) { totin = 0; for(i=0;i<SLNRLA;i++) totin = totin + y[i]*MTTSLR[i][j]; z[j] = SIGMF(totin); } } /*----------------------------------------------------------------------- Ten Ham: TB_BINHPHUONGSAISO Mo ta: TINH BINH PHUONG SAI SO DAU RA CUA MANG THEO VEC-TO DAU RA VA VEC-TO DICH Cac dau vao: 1. VEC-TO DAU RA MONG MUON DRMM[i], 2. VEC-TO DAU RA CU LOP RA z[i], 3. SO LUONG NO-RON CUA LAOP DAU RA, SLNRLR Gia tri tra ve: TRUNG BINH BINH PHUONG SAI SO DAU RA CUA LOP RA ------------------------------------------------------------------------ */ float TB_BINHPHUONGSAISO(int a[],float b[],int SIZE) { int i; float e=0; for(i=0;i<SIZE;i++) e = e + ((float)a[i] - b[i])*(a[i] - b[i]); e = 0.5 * e; return e; } /*----------------------------------------------------------------------- - Ten Thu tuc: SAISODAURA Mo ta: TINH SAI SO DAU RA CUA MANG THEO VEC-TO DAU RA VA VEC-TO DICH 1. VEC-TO DAU RA MONG MUON DRMM[i], 2. VEC-TO DAU RA CU LOP RA z[i], Cac dau vao: SO THU TU MAU Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void SAISODAURA(int i) { int j; for(j=0;j<SLNRLR;j++) SSLR[j] = 0; for(j=0;j<SLNRLR;j++) SSLR[j] = z[j] - (float)DRMM[i][j]; } /*----------------------------------------------------------------------- Ten Thu tuc: SAISOLOPAN Mo ta: TINH SAI SO DAU RA CUA LOP AN THEO SAI SO LOP RA VA DAO HAM CUA SIGMF Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO -----------------------------------------------------------------------*/ 140 Luận án Tiến sĩ Kỹ thuật 2013 void SAISOLOPAN() { int i,j; for(i=0;i<SLNRLA;i++) SSLA[i] = 0; for(i=0;i<SLNRLA;i++) for(j=0;j<SLNRLR;j++) SSLA[i] = SSLA[i] + MTTSLR[i][j]*z[j]*(1-z[j])*SSLR[j]; } /*------------------------------------------------------------------- Ten Thu tuc: DIEUCHINHTRONGSO Mo ta: CAP NHAT MA TRAN TRONG SO LOP AN VA LOP RA Cac dau vao: SO THU TU MAU Gia tri tra ve: KHONG CO ----------------------------------------------------------------------*/ void DIEUCHINHTRONGSO(int k) { int i,j; float temp; SAISODAURA(k); SAISOLOPAN(); for(i=0;i<SLNRLA;i++) { for(j=0;j<SLNRLR;j++) { temp = -TOCDOHOC*y[i]*z[j]*(1-z[j])*SSLR[j]; MTTSLR[i][j] = MTTSLR[i][j] + temp + QUANTINH*BTMTTSLR[i][j]; BTMTTSLR[i][j] = temp; } } for(i=0;i<SLNRLV;i++) { for(j=0;j<SLNRLA;j++) { temp = -TOCDOHOC*x[i]*y[j]*(1-y[j])*SSLA[j]; MTTSLA[i][j] = MTTSLA[i][j] + temp + QUANTINH*BTMTTSLA[i][j]; BTMTTSLA[i][j] = temp; } } } /*---------------------------------------------------------------------- Ten Thu tuc: HAMMUCTIEU Mo ta: TINH BINH PHUONG SAI SO DAU RA CUA MANG THEO VEC-TO DAU RA VA VEC-TO DICH Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ---------------------------------------------------------------------*/ void HAMMUCTIEU() { int i; 141 Luận án Tiến sĩ Kỹ thuật 2013 for(i=0;i<SLMHL;i++) { DAPUNGDAURA(TAPHUANLUYEN[i]); ECM[i]=TB_BINHPHUONGSAISO(DRMM[i],z,SLNRLR); } } /*---------------------------------------------------------------------- Ten Thu tuc: KIEMTRAMANG Mo ta: NGUOI SU DUNG NHAP MA TRAN DAU VAO, TINH TOAN DAP UNG DAU RA CUA MANG Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void KIEMTRAMANG() { int i,j,t,ind; float temp; float tempz1[SLNRLR]; float tempz2[3]; ind=0; for(;;) { printf("\n\nXIN MOI DUA VEC-TO DAU VAO DE KIEM TRA MANG\n\n"); for(i=0;i<7;i++) { for(j=0;j<5;j++) scanf("%d",&MTDVKT[j*7+i]); printf("\n"); } printf("\n\nDAP UNG DAU RA CUA MANG:\n"); DAPUNGDAURA(MTDVKT); for(i=0;i<SLNRLR;i++) printf("\nNO-RON %d, Z = %f",i,z[i]); for(i=0;i<SLNRLR;i++) tempz1[i]=z[i]; printf("\n\nBA DAU RA CO DAP UNG CAO NHAT UNG VOI VEC-TO DAU VAO:\n"); for(t=0;t<3;t++) { temp=0; ind=0; for(i=0;i<SLNRLR;i++) if(temp<=tempz1[i]) { temp=tempz1[i]; ind=i; } tempz2[t]=temp; printf("\nDAU RA THU %d LA %3.0f%%",ind, tempz2[t]*100); tempz1[ind]=0; } temp=z[0]; ind=0; 142 Luận án Tiến sĩ Kỹ thuật 2013 for(i=0;i<SLNRLR;i++) if(temp<=z[i]) { temp=z[i]; ind=i; } printf("\n\nKET LUAN CUA MANG NO-RON:\n"); printf("\nVEC-TO DAU VAO MANG LA MA CUA KY TU: %d",ind); } } /*---------------------------------------------------------------------- Ten Thu tuc: MATRANTRONGSOLOPAN Mo ta: IN MA TRAN TRONG SO LOP AN RA MAN HINH Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ------------------------------------------------------------------------ */ void MATRANTRONGSOLOPAN() { int i,j; printf("\n\nMA TRAN TRONG SO LOP AN MTTSLA[slnrlv][slnrla]:\n\n"); for(i=0;i<SLNRLV;i++) { for(j=0;j<SLNRLA;j++) { if(MTTSLA[i][j]>=0) printf("+%f ",MTTSLA[i][j]); else printf("%f ",MTTSLA[i][j]); } printf("\n"); } } /*---------------------------------------------------------------------- Ten Thu tuc: MATRANTRONGSOLOPRA Mo ta: IN MA TRAN TRONG SO LOP RA RA MAN HINH Cac dau vao: KHONG CO Gia tri tra ve: KHONG CO ---------------------------------------------------------------------*/ void MATRANTRONGSOLOPRA() { int i,j; printf("\n\nMA TRAN TRONG SO LOP RA MTTSLR[slnrla][slnrlr]:\n\n"); for(j=0;j<SLNRLR;j++) { for(i=0;i<SLNRLA;i++) { if(MTTSLR[i][j]>=0) printf("+%f ",MTTSLR[i][j]); else printf("%f ",MTTSLR[i][j]); } printf("\n"); } } 143 Luận án Tiến sĩ Kỹ thuật 2013 /******************************* HAM CHINH ***********************/ void main(int argc,char *argv[]) { int read; char c; KHOITAOMANG(); printf("*******************************************\n\n"); printf("* CHUONG TRINH HUAN LUYEN MANG NO-RON *\n\n"); printf("* BUOC HOC TINH THEO NGUYEN LY VUOT KHE *\n\n"); printf("*******************************************\n\n"); /* printf("/Vao\\ /~~~~Lop an~~~~\\ /~~~~~Lop ra~~~~~\\\n"); printf(" -- ------- ---- --------- ---- \n"); printf("| | | | | |Y | | | | Z\n"); printf("|X |->| W11 |->| f1 |->| W21 |->| f2 |-->\n"); printf("| | | (35x5)| | | | (5x10) | | |\n"); printf("| | | | | | | | | |\n"); printf(" -- ------- ---- --------- ---- \n"); printf("\\35/ \\__Y=f1(W11.X)__/ \\__Z=f1(W11.X)___/ \n\n"); printf(" f=sigm(net) \n\n"); printf("\nSU DUNG MANG: TRUOC KHI HOC, t, SAU KHI HOC, s.\n"); SDM = getchar(); if(SDM=='t') KIEMTRAMANG();// SU DUNG MANG TRUOC KHI HUAN LUYEN else if(SDM=='s') { printf("\n\nLUA CHON LOAI BUOC HOC\n"); printf("\nCO DINH: c, GIAM DAN: g, NGUYEN LY VUOT KHE: v\n\n"); c = getchar(); } LCBH = getchar(); switch(LCBH) { case 'c': HUANLUYENCODINH(); break; case 'g': HUANLUYENGIAMDAN(); break; case 'v': HUANLUYENVUOTKHE(); break; } */ HUANLUYENVUOTKHE(); if(HTHL==1)//NEU MANG DA DUOC HUAN LUYEN XONG { MATRANTRONGSOLOPAN(); MATRANTRONGSOLOPRA(); // KIEMTRAMANG(); } } 144
File đính kèm:
- luan_an_ky_thuat_mang_noron_va_qua_trinh_cua_mang.pdf