5.2.1. Phƣơng pháp địa phƣơng
Các phƣơng pháp địa phƣơng thƣờng lƣu lại các mẫu (các điểm đã biết). Các mẫu này đƣợc lƣu lại cho đến khi một tập mẫu mới cần đƣợc phân lớp. Mỗi lần bắt gặp một phân lớp mẫu mới, mối quan hệ với các mẫu đã đƣợc lƣu trữ trƣớc đây lại đƣợc kiểm tra để gán cho hàm mục tiêu một giá trị tƣơng ứng với trƣờng hợp mẫu mới này.
Các phƣơng pháp địa phƣơng có thuận lợi là thay vì chỉ ƣớc lƣợng hàm mục tiêu một lần cho toàn bộ không gian mẫu, thì các phƣơng pháp này có thể ƣớc lƣợng hàm mục tiêu một cách cục bộ cho mỗi tập mẫu mới đƣợc phân lớp.
Tuy nhiên các phƣơng pháp địa phƣơng cũng có những hạn chế. Hầu hết các tính toán đều xảy ra ở lúc phân lớp hơn là khi lần đầu tiên bắt gặp các mẫu huấn luyện, điều này khiến cho chi phí tính toán cao và đôi khi không đáp ứng kịp với yêu cầu đặt ra (nhƣ yêu cầu về thời gian). Hạn chế tiếp theo là các phƣơng pháp địa phƣơng xem xét điển hình mọi thuộc tính của các ví dụ khi cố gắng tìm ra các ví dụ huấn luyện tƣơng tự đã đƣợc lƣu trữ. Nếu khái niệm mục tiêu chỉ dựa trên một vài trong nhiều thuộc tính có giá trị thì các ví dụ mà thật sự tƣơng tự có thể cách nhau một khoảng cách lớn.
5.2.2. Mạng MLP
Mạng MLP có ƣu điểm là với số nơron tầng ẩn thích hợp, có thể xấp xỉ hàm tùy ý với sai số trung bình bình phƣơng < cho trƣớc. Tuy nhiên mạng MLP khi
đƣa vào bài toán này có hạn chế là thời gian huấn luyện lâu (trong trƣờng hợp số lƣợng mốc huấn luyện lớn và cần đƣa ra kết quả nhanh thì MLP khó đáp ứng đƣợc). Trong kiến trúc mạng MLP, số nơron tầng ẩn chƣa tìm đƣợc phƣơng pháp phù hợp để xác định, kết quả nội suy phụ thuộc nhiều vào giá trị khởi tạo ban đầu.
5.2.3. Dùng RBF và phƣơng pháp lặp
Đề tài trình bày một phƣơng pháp tiếp cận, giải quyết bài toán nội suy đƣa ra ở trên thông qua mạng nơron RBF. Mạng nơron RBF này đƣợc cải tiến, tối ƣu tốc độ hội tụ và độ sai số bằng đề xuất “Thuật toán học lặp cho mạng RBF”.
Mạng RBF đề xuất đƣợc huấn luyện bằng một thuật toán 2 pha với hàm cơ sở bán kính dạng Gauss. Trong pha thứ nhất, tham số ảnh hƣởng của hàm cơ sở bán kính đƣợc xác với sự cân đối giữa đặc tính tổng quát hóa và tốc độ hội tụ của pha sau. Tiếp theo, các trọng số tầng ra đƣợc xác định nhờ tìm điểm bất động của ánh xạ co. Nhờ ƣu điểm của ánh xạ co, thuật toán có thời gian chạy nhanh, dễ ƣớc lƣợng sai số và song song hóa. Thực nghiệm cho kết quả tốt kể cả khi số mốc nội suy lớn.
Mạng RBF này đƣợc trình bày trong Chƣơng 3 của đề tài. Trong chƣơng tiếp theo, đề tài giới thiệu một chƣơng trình máy tính để kiểm tra hoạt động của mạng RBF đƣợc xây dựng theo đề xuất ở trên và đƣợc áp dụng cho bài toán nội suy mốc quan trắc đƣợc phát biểu trong chƣơng hiện tại.
5.3. Ứng dụng chƣơng trình máy tính
Nhƣ ta đã biết, tập (file) số liệu ban đầu của các biến trƣờng khí tƣợng thu đƣợc từ các trạm quan trắc rời rạc và phân bố một cách ngẫu nhiên. File số liệu quan trắc này có cấu trúc nhƣ sau:
Trong đó:
Số liệu quan trắc bao gồm 4 thuộc tính: Vĩ độ (x), Kinh độ (y), Độ cao (h) và Nhiệt độ (f). Trong file số liệu ở trên, 4 thuộc tính trên đƣợc sắp xếp vào các cột theo thứ tự tƣơng ứng. Nhƣ vậy mỗi số liệu quan trắc sẽ nằm trên một dòng và trên dòng đó là 4 thuộc tính của số liệu quan trắc.
Đây sẽ là file số liệu sử dụng để huấn luyện mạng RBF trong bài toán.
5.3.2. Đọc dữ liệu vào
Chƣơng trình máy tính sẽ thực hiện đọc file số liệu quan trắc để chuẩn bị sẵn sàng cho thuật toán huấn luyện.
Dƣới đây là dạng biểu đồ vị trí của số liệu quan trắc:
(Nhìn vào biểu đồ ở trên ta dễ dàng nhận thấy hầu hết các điểm quan trắc tập trung nhiều quanh diện tích thuộc lãnh thổ Việt Nam và phần phía Bắc).
Ngay khi đọc file số liệu quan trắc, chƣơng trình máy tính có thể thống kê thông tin về số liệu quan trắc trong file nhƣ: Tổng số số liệu, khoảng giá trị của các thuộc tính số liệu quan trắc.
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)