Nhận xét ứng dụng mạng nội suy RBF

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 68 - 81)

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

5.4. Nhận xét ứng dụng mạng nội suy RBF

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 68 - 81)

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

(81 trang)