Huấn luyện mạng RBF với file số liệu quan trắc

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mạng nơron RBF và ứng dụng (Trang 64)

CHƢƠNG 5 : BÀI TOÁN XẤP XỈ HÀM TRONG KHÍ TƢỢNG THỦY VĂN

5.3. Ứng dụng chƣơng trình máy tính

5.3.3. Huấn luyện mạng RBF với file số liệu quan trắc

Ngay sau khi đọc file số liệu quan trắc, các số liệu này đã sẵn sàng cho việc huấn luyện mạng RBF.

Thiết lập các thông số huấn luyện

Các tham số huấn luyện chính là: q, , (tham khảo Chƣơng 4)

Huấn luyện mạng RBF

Sau khi các tham số chính đƣợc thiết lập, mọi thông số cần thiết đã đầy đủ cho việc huấn luyện.

Trong quá trình huấn luyện, các số liệu trung gian cùng với trạng thái hiện tại của quá trình huấn luyện cũng đƣợc hiển thị trên màn hình để cung cấp thông tin cần thiết cho ngƣời dùng.

Dƣới đây là thời gian huấn luyện trong các trƣờng hợp thay đổi giá trị thông số.

Ngày thu thập

số liệu Số mốc q   Thời gian

huấn luyện (giây)

14/02/2005 474 0.9 0.00001 0.9 5 14/02/2005 474 0.9 0.000001 0.9 5 14/02/2005 474 0.9 0.0000001 0.9 5 14/02/2005 474 0.9 0.00000001 0.9 6

Nhƣ chúng ta đã biết, Khoa Hải Dƣơng học – Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội là nơi vận hành một chƣơng trình máy tính, chƣơng trình máy tính này bao gồm rất nhiều quá trình khác nhau nhƣ: thu thập số liệu từ thiết bị quan trắc, tổng hợp số liệu, nội suy về các điểm nút lƣới điều hòa, áp dụng các thuật toán đạo hàm theo phƣơng pháp sai phân hữu hạn, triển khai chuỗi, …

Đọc các file thiết lập cho mạng RBF

Trƣớc khi nối suy các mốc lƣới, ngƣời dùng cần phải đọc vào các file để thiết lập hoạt động cho mạng RBF bao gồm:

 File số liệu thông số huấn luyện (q, ,  )

 File số liệu tâm huấn luyện

 File số liệu bán kính huấn luyện

 File số liệu trọng số huấn luyện

Đọc file số liệu nút lƣới

Nội suy bằng mạng RBF đã huấn luyện

Với file số liệu nút lƣới, chƣơng trình máy tính sẽ thực hiện đƣa ra các giá trị nội suy (f_ns) tƣơng ứng các thuộc tính vào (x, y, h).

Sau khi hoàn thành nội suy các giá trị (f_ns). Chƣơng trình máy tính sẽ đƣa kết quả ra file dữ liệu. File dữ liệu này có cấu trúc bao gồm các dữ liệu đầu vào (x, y, h, f) và đƣợc bổ sung thêm giá trị đã đƣợc nội suy (f_ns).

Dƣới đây là màn hình hiển thị kết quả nội suy:

Thống kê kết quả nội suy

1 Tham số huấn luyện q 0.9 0.9 0.9 0.9

2 Tham số huấn luyện  0.00001 0.000001 0.0000001 0.00000001

3 Tham số huấn luyện  0.9 0.9 0.9 0.9

4 Số điểm nút lƣới 12 822 12 822 12 822 12 822

5 Thời gian tính toán (giây) 7 7 7 8

Nhận xét kết quả nội suy

Kết quả nội suy bằng mạng RBF đã đƣợc huấn luyện với số nút lƣới đều (12 822 điểm) đƣợc nội suy với thời gian ngắn, các giá trị nội suy đƣợc đánh giá là phản ánh tƣơng đối sát với số liệu thực nghiệm. Điều này cho thấy những thuận lợi và dấu hiệu tích cực bƣớc đầu khi áp dụng mạng nơron RBF để nội suy trong bài toán Khí tƣợng.

Sau khi thực hiện nội suy các giá trị theo file dữ liệu điểm nút lƣới đều đầu vào (12 822 điểm) bằng mạng nội suy RBF đƣợc huấn luyện theo Phƣơng pháp lặp, một số kết luận sau đƣợc rút ra:

 Nội suy hàm số bằng mạng RBF sử dụng phƣơng pháp lặp hội tụ nhanh hơn so với các phƣơng pháp đang áp dụng.

 Tốc độ hội tụ của quá trình huấn luyện mạng cũng nhƣ độ sai số của mạng có thể điểu chỉnh đƣợc một cách dễ dàng thông qua việc điều chỉnh tham số q và sai số .

KẾT LUẬN

Các kết quả đạt đƣợc

Mạng nơron RBF là mạng truyền tới 3 tầng (2 tầng nơron), hiện là một công cụ hữu hiệu để nội suy và xấp xỉ hàm nhiều biến và đƣợc ứng dụng rộng rãi. Mặc dù thời gian huấn luyện của chúng rất ngắn so với mạng MLP nhƣng các thuật toán hiện thời vẫn xác định trọng số tầng ra bằng các phƣơng pháp cực tiểu sai số bình phƣơng hoặc giải trực tiếp hệ phƣơng trình tuyến tính. Khi số mốc nội suy lớn thì các phƣơng pháp này chậm và sai số lớn.

Đề tài này tổng hợp các lý thuyết cơ sở của “Bài toán Nội suy và Xấp xỉ hàm nhiều biến” và “Mạng nơron và ứng dụng”, trong đó tập trung chủ yếu vào mạng nội suy RBF.

Đề tài tổng hợp đề xuất của một “Thuật toán 2 pha để huấn luyện mạng nội suy RBF với hàm cơ sở bán kính dạng Gauss” [2].

Phần chính, quan trọng nhất trong đề tài là Xây dựng chƣơng trình máy tính để thực nghiệm với mạng nơron RBF và ứng dụng đề xuất trên vào “Bài toán Xấp xỉ hàm trong Bài toán Khí tƣợng”. Đây là bài toán thực tế (nhƣ trình bày trong Chƣơng 5), mạng nội suy RBF với thuật toán đề xuất có khả năng ứng dụng hiệu quả trong Bài toán đã nêu. Bài toán này đƣợc đặt ra với sự hƣớng dẫn, giúp đỡ, dựa vào công tác Nghiên cứu và Hoạt động trong lĩnh vực Khí tƣợng Thủy văn và Hải dƣơng học của Thầy Phan Văn Tân – Đại học Khoa học Tự nhiên – Đại học Quốc gia Hà Nội.

Để kiểm tra các đặc điểm ƣu việt của Mạng nội suy RBF với thuật toán đề xuất, tôi đã xây dựng một chƣơng trình máy tính có khả năng tiếp nhận các mốc dữ liệu quan trắc ngẫu nhiên (thu đƣợc từ kết xuất trực tiếp của thiết bị đo nối với computer) và nội suy để có thể đƣa ra đƣợc kết quả của các mốc cần biết khác không có dữ liệu quan trắc.

Hƣớng nghiên cứu tiếp theo

Bài toán nội suy và xấp xỉ hàm luôn là một bài toán thực tế, bài toán nội suy và xấp xỉ hàm xuất hiện trong hầu hết các lĩnh vực.

Hƣớng nghiên cứu tiếp theo của đề tài sẽ ứng dụng mạng nội suy RBF sâu hơn trong bài toán Khí tƣợng (đặt ra ở trên), tiến tới có thể thiết lập một module RBF nội suy tích hợp vào trong hệ thống dự báo hiện có thành một hệ thống thống nhất. Đề tài cũng mong muốn mở rộng phạm vi ứng dụng mạng RBF vào trong các lĩnh vực cụ thể khác nhƣ: Bài toán nhận dạng biển số xe của phƣơng tiện giao thông thông qua camera quan sát; Lọc, bóc tách các nhiễu ra khỏi các hệ thống truyền thông (mạng điện thoại, mạng IP, …).

TÀI LIỆU THAM KHẢO

Tài liệu Tiếng Việt

[1] Hoàng Xuân Huấn. Giáo trình các phương pháp tính. 2003, tr. 19-41.

[2] Hoàng Xuân Huấn và Đặng Thị Thu Hiền. Thuật toán lặp huấn luyện mạng nội suy RBF, Kỷ yếu hội thảo quốc gia một số vấn đề chọn lọc của CNTT, Hải Phòng tháng 08 năm 2005, tr. 314-323.

[3] Hoàng Xuân Huấn và Đặng Thị Thu Hiền. Mạng RBF nội suy địa phương , báo cáo tại Hội thảo Quốc gia một số vấn đề chọn lọc của CNTT, Đà Lạt tháng 06 năm 2006.

[4] Hoàng Xuân Huấn. Bài giảng môn Mạng nơron và ứng dụng, Trƣờng Đại học Công nghệ, Đại học Quốc gia Hà Nội.

Tài liệu Tiếng Anh

[5] Blazieri. Theorical interpretations and applications of radial basis function networks, University of Toronto, Technical report # DIT-03-023, May 2003.

[6] R.Beale and T.Jackson, Adam Hilger. Neural Computing: An Introduction, (Bristol, Philadelphia and New York).

[7] D.S. Broomhead and D. Low. Multivariable functional interpolation and adaptive networks. Complex Systems, vol. 2, 321-355,1988.

[8] L. Collatz. Functional analysis and numerical mathematics, Academic press New York and London,1966 .

[9] Martin T. Hagan, Howard B. Demuth, Mark H. Beale. Neural Network Design. PWS Pub. Co, 1996

[10] E.J. Hartman, J.D. Keeler and J.M. Kowalski. Layered neural networks with Gaussian hidden units as universal approximations, Neural Comput., vol. 2,no. 2, 210-215, 1990.

[11] S. Haykin. Neural Networks: A Comprehensive Foundation (second edition), Prentice Hall International, Inc., 1998.

[12] C.G. Looney. Pattern recognition using nơron networks : Theory and algorithm for engineers and scientist, Oxford university press,1997.

[13] C.Michelli. Interpolation of scatered data: Distance matrices and coditionally positive definite functions, Constructive approximations, vol. 2, pp. 11-22, 1986.

[15] J.Park and I.W. Sandberg. Approximation and radial-basis-function networks, Neural Comput., vol. 5,no. 3, 305-316, 1993.

[16] T. Poggio and F. Girosi. Networks for approximating and learning, Proc. IEEE, vol.78, 1481-1497, 1990.

[17] M.J.D.Powell. Radial basis function approximations to polynomials, Numerical analysis 1987 Proceeding, pp223-241, Dundee, UK, 1988.

[18] F. Schwenker. H.A. Kesler, Günther Palm. Three learning phases for radial- basis-function networks, Neural networks, Vol.14, pp. 439-458, 2001.

PHỤ LỤC

Môi trƣờng viết chƣơng trình

Chƣơng trình máy tính đƣợc viết trên bằng ngôn ngữ lập trình C ++. Đƣợc phát triển dựa trên công cụ lập trình IDE của Microsoft Visual C++ 6.0 trên nền tảng MFC 6.0.

Đặc trƣng biên dịch và xây dựng hệ thống, tính năng tiền biên dịch các tập tin đầu đề (header files) và liên kết tịnh tiến (incremental link) - chỉ liên kết những phần bị thay đổi trong quá trình xây dựng phần mềm mà không làm lại từ đầu. Những đặc trƣng về tính năng này thuyên giảm tổng thời gian biên tập, biên dịch và liên kết chƣơng trình phần mềm, đặc biệt đối với những đề án phần mềm lớn, đồng thời giúp cho chƣơng trình máy tính thực hiện với thời gian tối ƣu nhất trên nguồn tài nguyên của máy tính.

Các phiên bản Visual C++:

 Visual C++ 1.0, có MFC 2.0, là phiên bản đầu tiên của Visual C++, ra đời năm 1992, hỗ trợ cả 16-bit và 32-bit, mặc dù đây là phiên bản tiếp sau của C/C++ 7.0.

 Visual C++ 1.5, có MFC 2.5, hỗ trợ thêm OLE 2.0 và ODBC cho MFC. Nó nguyên chỉ là một phiên bản dùng 16-bit và là phiên bản đầu tiên của Visual C++ đƣợc in ấn trên CD-ROM. Phiên bản này cũng quan trọng nhƣ phiên bản trƣớc với hỗ trợ cho việc xây dựng phần mềm 16-bit.

 Visual C++ 2.0, có MFC 3.0, là phiên bản đầu tiên chỉ dành riêng cho 32-bit, mặc dù vào thời điểm đó cũng có Visual C++ 1.51 (một bản cập nhật của Visual C++ 1.5) ra đờ1. Các phiên bản cập nhật cho phiên bản này gồm có: Visual C++ 2.1, ra đời cùng lúc với Visual C++ 1.52, là một bản cập nhật khác cho Visual C++ 1.5, và 2.2.

 Visual C++ 4.0, hỗ trợ MFC 4.0, đƣợc thiết kế cho Windows 95, cũng nhƣ Windows NT. Phiên bản cập nhật cho nó gồm có Visual C++ 4.1 và Visual C++ 4.2, không hỗ trợ Win32s.

 Visual C++ 6.0, MFC 6.0, ra đời 1998, đã và đang đƣợc sử dụng rộng rãi cho các project lớn và nhỏ.

Ngôn ngữ Visual C++ 6.0 đƣợc chọn cho chƣơng trình máy tính trong đề tài này bởi tính ƣu việt của bản thân ngôn ngữ trong việc viết các chƣơng trình thuật toán, chƣơng trình hệ thống, chƣơng trình điều khiển, ...

Giới thiệu một số thủ tục chính của chƣơng trình

//Hàm nhân 2 ma trận M1 và M2 kết quả trả về M3

void Nhan_2_MaTran(double** M1,double* M2,double* M3,int N) {

double* temp; int i;

temp= new double[N]; for(i=0;i<N;i++) temp[i] =0; for(i=0;i<N;i++) for(int j=0;j<N;j++) { temp[i]= temp[i]+M1[i][j]*M2[j]; } for(i=0;i<N;i++) M3[i]=temp[i]; } //Hàm xác định các tâm cho mạng bán kính

void XacDinhTam(double** X,double** C,int N,int n) { int i; for(i=0;i<N;i++) for(int j=0;j<n;j++) C[i][j]=X[i][j]; }

//Hàm xác định ma trận G[N][N]

void XacDinh_G(double** G,double** X,double** C,double* rds,int N,int n,int k) { for(int i=0;i<N;i++) { G[i][k]=Tinh_G(n,X[i],C[k],rds[k]); if(G[i][k]==1) G[i][k]=0; else G[i][k]=-G[i][k]; } } //tính giá trị của 1 hàm bán kính

double Tinh_G(int n, double* a, double* b, double rds) { double g=0; for(int i=0;i<n;i++) g=g+pow((a[i]-b[i]),2); g=g/pow(rds,2); g=pow(e,-g); return g; }

// Tính các bán kính cho mạng tương ứng với các tâm

void XacDinhBK(double* rds,double** X, double** C,double* Y,

double** G,int N,int n) {

double* qk = new double[N]; for(int i=0;i<N;i++)

rds[i]=1/sqrt(2*N); int k=0; while(k<N) { qk[k]=0; XacDinh_G(G,X,C,rds,N,n,k); for(int i=0;i<N;i++)

qk[k]=qk[k]+TriTuyetDoi(G[i][k]); if(qk[k]>q) rds[k]=rds[k]*alpha; else if(qk[k]<q*alpha) rds[k]=rds[k]*lamda; else k++; } }

//Kiểm tra xem thuật toán lặp đã hội tu chưa bool HoiTu_W(double* W1,double* W2,int N) { double ht; ht=TriTuyetDoi(W1[0]-W2[0]); for(int i=1;i<N;i++) { if(ht<TriTuyetDoi(W1[i]-W2[i])) ht=TriTuyetDoi(W1[i]-W2[i]);

// Het vong lap se tra ve gia tri max } // cua ||Wk-Wk-1|| theo Chuan 1;

ht=(q/(1-q))*ht; if(ht<epsilon) return true; else return false; }

// Xác định các trọng số kết nối

void XacDinhW(double* W,double** G,double* Y,int N) {

double** Buf_W = new double*[2]; for(i=0;i<2;i++)

Buf_W[i]=new double[N]; for(i=0;i<N;i++)

Buf_W[0][i]=Y[i]; //khoi tao gia tri tuy y cho Wo

int k=1;

while(1) {

Nhan_2_MaTran(G,Buf_W[0],Buf_W[1],N);

for(i=0;i<N;i++)

Buf_W[1][i]=Buf_W[1][i]+Y[i];

if(HoiTu_W(Buf_W[1],Buf_W[0],N)==true) break;

else

for(i=0;i<N;i++) {

Buf_W[0][i]=Buf_W[1][i]; Buf_W[1][i]=0; } k++; } for(i=0;i<N;i++) W[i]=Buf_W[1][i]; delete Buf_W; In_ThamSo("thamso.txt"); }

//Module chính của chương trình (Module Huấn luyện) {

// Phan khai bao cac bien

double** X; // Cac moc dau vao

double** C; // Cac tam cua ham ban kinh

double** G; // Gia tri Cac ham ban kinh tinh duoc

double* W; // Cac trong so ket noi

double* Y; // Gia tri cua cac moc noi suy

double* rds; // Ban kinh

int N=NhapN(); // So moc

int n=SoChieu(); // So chieu

// Khoi tao bo nho cho cac con tro W=new double[N+1]; Y=new double[N+1]; rds=new double[N+1]; X=new double*[N+1]; C=new double*[N+1]; G=new double*[N+1]; for(i=0;i<N;i++) {

X[i]=new double[n];

C[i]=new double[n];

}

for(i=0;i<N;i++) G[i]=new double[N];

NhapX(X,N,n); // luu cac moc vao mang X NhapY(Y,N); // luu cac moc vao mang X XacDinhTam(X,C,N,n); // Xac dinh cac tam cua mang

XacDinhBK(rds,X,C,Y,G,N,n); // Xac dinh cac ban kinh tuong ung voi tam XacDinhW(W,G,Y,N); // Xac dinh trong so ket noi

In_1_Chieu(W,N,"W.txt"); // In ket qua ra file In_1_Chieu(rds,N,"rds.txt");

In_2_Chieu(C,N,n,"tam.txt");

PDF Merger

Merger! To remove this page, please register your program!

Go to Purchase Now>>

 Merge multiple PDF files into one

 Select page range of PDF to merge

 Select specific page(s) to merge

Một phần của tài liệu (LUẬN VĂN THẠC SĨ) Mạng nơron RBF và ứng dụng (Trang 64)

Tải bản đầy đủ (PDF)

(81 trang)