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

