1. Trang chủ
  2. » Luận Văn - Báo Cáo

Mạng nơ ron truyền thẳng và ứng dụng trong dự báo lũ lụt

75 168 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 75
Dung lượng 1,93 MB

Nội dung

1 ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THƠNG TIN VÀ TRUYỀN THƠNG NGUYỄN XN HỊA MẠNG NƠ RON TRUYỀN THẲNG VÀ ỨNG DỤNG TRONG DỰ BÁO LŨ LỤT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH ĐẠI HỌC THÁI NGUYÊN TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THƠNG NGUYỄN XN HỊA MẠNG NƠ RON TRUYỀN THẲNG VÀ ỨNG DỤNG TRONG DỰ BÁO LŨ LỤT Chuyên Ngành: Khoa học máy tính Mã số : 60.48.01 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH NGƯỜI HƯỚNG DẪN KHOA HỌC TS Nguyễn Long Giang Thái Nguyên - 2014 LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH SÁCH BẢNG DANH SÁCH HÌNH VẼ MỞ ĐẦU Chương CÁC KHÁI NIỆM NƠRON CƠ BẢN VỀ MẠNG 1.1 Lịch sử phát triển 1.2 10 Nơron sinh học mạng nơron sinh học 1.3 10 Nơron nhân tạo 1.4 Mạng nơron nhân tạo 13 1.4.1 Khái niệm .13 1.4.2 Cấu trúc 13 1.4.3 Các đặc trưng mạng nơron 15 1.5 15 Thủ tục học mạng nơron 1.5.1 Học tham số .15 1.5.2 Học cấu trúc .17 1.6 17 Một số ứng dụng mạng nơron Chương MẠNG NƠRON TRUYỀN THẲNG VÀ THUẬT TOÁN LAN TRUYỀN NGƯỢC 19 2.1 Kiến trúc mạng nơron truyền thẳng 19 2.2 Khả thể mạng nơron truyền thẳng 20 2.3 21 Cơ chế học mạng nơron truyền thẳng 2.4 Thuật toán lan truyền ngược sai số (Back-Propagation) 22 2.4.1 Mô tả thuật toán BP 22 2.4.2 Sử dụng thuật toán BP .27 2.4.3 Một số cải tiến thuật toán BP 32 2.4.4 Nhận xét chung thuật toán BP 37 2.5 39 Một số thuật toán tối ưu khác 2.5.1 Thuật toán giả luyện kim (Simulated annealing) .39 2.5.2 Thuật giải di truyền 40 Chương ỨNG DỤNG MẠNG NƠRON TRUYỀN THẲNG TRONG DỰ BÁO DỮ LIỆU 3.1 Sơ lược ứng dụng mạng nơron dự báo liệu 42 3.2 Thu thập, phân tích xử lý liệu 42 3.2.1 Kiểu biến .43 3.2.2 Thu thập liệu .44 3.2.3 Phân tích liệu 45 3.2.4 Xử lý liệu 45 3.2.5 Tổng hợp 47 3.3 Chương trình dự báo liệu 48 3.3.1 Các bước q trình thiết kế xây dựng 48 3.3.2 Ứng dụng mạng nơron truyền thẳng nhiều lớp dự báo đỉnh lũ sông Trà Khúc trạm Sơn Giang 53 3.3.3 Chương trình dự báo liệu 56 3.4 Một số nhận xét 60 KẾT LUẬN .62 TÀI LIỆU THAM KHẢO 64 PHỤ LỤC 66 DANH SÁCH BẢNG Bảng 2.1 Thuật toán lan truyền ngược sai số (Thuật toán BP) 27 Bảng 2.2 Các hàm kích hoạt 29 DANH SÁCH HÌNH VẼ Hình 1.1 Đơn vị xử lý thứ j 11 Hình 1.2 Hàm tuyến tính (Identity Function) 12 Hình 1.3 Hàm bước nhị phân (Binary Step Function) 12 Hình 1.4 Hàm Sigmoid 13 Hình 1.5 Mạng nơron truyền thẳng nhiều lớp (Feed-Forward Neural Network) 14 Hình 1.6 Mạng hồi quy (Recurrent Neural Network) .14 Hình 1.7 Sơ đồ học có thầy .16 Hình 2.1 Mạng nơron truyền thẳng lớp 19 MỞ ĐẦU Dự báo liệu toán quan trọng khai phá liệu học máy nhằm tìm quy luật liệu Dự báo liệu mang lại nhiều lợi ích thiết thực phụ vụ người, giúp người nắm bắt quy luật vận động tự nhiên đời sống kinh tế xã hội Nguyên lý dự báo liệu dựa vào liệu lịch sử để xây dựng mơ hình nhằm dự báo liệu tương lai Có nhiều phương pháp dự báo liệu khác tùy thuộc vào đặc thù toán cụ thể nhiệm vụ khai phá liệu, điển hình phương pháp thống kê học máy, hệ chuyên gia, hệ hỗ trợ định Ngày nay, kho liệu ngày lớn, ngày phức tạp đa dạng Để xây dựng mơ hình dự báo hiệu liệu khổng lồ phức tạp này, nhà khoa học nỗ lực nghiên cứu phương pháp mô tư óc người nhằm xây dựng mơ hình dự báo hiệu nhất, đặc biệt phương pháp “học có thầy”, mạng nơron nhân tạo cơng cụ điển hình Mạng nơ ron nhân tạo lớp mơ hình tính tốn mơ hoạt động não người Các mơ hình sử dụng cấu trúc mạng đỉnh gọi nơ ron Các nơ ron xử lý tín hiệu số từ mơi trường bên ngồi nơ ron khác mạng gửi tới qua kết nối sau gửi tín hiệu đến nơ ron khác môi trường Mạng nơron truyền thẳng lớp mạng nơron nhân tạo thực tiễn chứng minh mạnh hiệu toán dự báo, phân tích liệu Chúng huấn luyện ánh xạ từ liệu vào tới liệu mà không yêu cầu liệu phải đầy đủ Trong số loại mạng tương đối phổ biến mạng nơron truyền thẳng nhiều lớp, huấn luyện thuật toán lan truyền ngược sử dụng nhiều Các mạng nơron có khả biểu diễn ánh xạ phi tuyến đầu vào đầu ra, chúng coi “bộ xấp xỉ đa năng” Việc ứng dụng loại mạng chủ yếu cho việc phân tích, dự báo, phân loại số liệu thực tế Đặc biệt việc dự báo khuynh hướng thay đổi liệu tác nghiệp quan, tổ chức kinh tế, xã hội, Nếu dự báo khuynh hướng thay đổi liệu với độ tin cậy định, nhà lãnh đạo đưa sách đắn cho quan, tổ chức Luận văn thực với mục đích tìm hiểu làm sáng tỏ số khía cạnh mạng nơron truyền thẳng nhiều lớp, thuật toán lan truyền ngược ứng dụng chúng để xây dựng mơ hình dự báo liệu thử nghiệm mơ hình với tốn dự báo đỉnh lũ sơng Trà Khúc trạm khí tượng Sơn Giang Đối tượng nghiên cứu luận văn tập (bảng) liệu mẫu lĩnh vực dự báo lũ lụt, bao gồm tập liệu huấn luyện (training), tập liệu kiểm tra (test) tập liệu xác nhận (validation) Mỗi bảng liệu bao gồm giá trị thuộc tính đầu vào (thuộc tính điều kiện) giá trị thuộc tính mong muốn (thuộc tính định) Phạm vi nghiên cứu lý thuyết mạng nơron truyền thẳng ba lớp, phạm vi nghiên cứu thực nghiệm xây dựng chương trình dự báo đỉnh lũ sơng Trà Khúc trạm khí tượng Sơn Giang cách áp dụng mơ hình mạng nơron truyền thẳng ba lớp Phương pháp nghiên cứu luận văn nghiên cứu lý thuyết nghiên cứu thực nghiệm Về nghiên cứu lý thuyết: luận văn thực tổng hợp khái niệm kết nghiên cứu mạng nơron truyền thẳng nhiều lớp vấn đề liên quan đến thuật toán lan truyền ngược Về nghiên cứu thực nghiệm: luận văn thực xây dựng mơ hình dự báo sử dụng mạng nơron truyền thẳng thử nghiệm mơ hình với toán cụ thể nhằm sáng tỏ vấn đề lý thuyết Bố cục luận văn gồm phần mở đầu ba chương nội dung, phần kết luận danh mục tài liệu tham khảo Chương trình bày khái niệm mạng nơron nhân tạo Chương trình bày mơ hình mạng nơron truyền thẳng nhiều lớp thuật toán lan truyền ngược sai số (Back-Propagation), gọi tắt thuật toán BP Chương trình bày vấn đề mơ hình mạng nơron dự báo xây dựng chương trình dự báo đỉnh lũ sơng Trà Khúc trạm khí tượng Sơn Giang Cuối cùng, phần kết luận nêu đóng góp luận văn, hướng phát triển 10 Chương CÁC KHÁI NIỆM CƠ BẢN VỀ MẠNG NƠRON 1.1 Lịch sử phát triển Dưới đưa mốc đáng ý lịch sử phát triển mạng nơron nhân tạo Cuối kỷ 19, phát triển chủ yếu cơng việc có tham gia ba ngành: Vật lý học, Tâm lý học, Thần kinh học nhà khoa học như: Hermann von Hemholtz, Ernst Mach, Ivan Pavlov Các cơng trình nghiên cứu chủ yếu sâu vào lý thuyết tổng quát Học (Learning), Nhìn (vision) Điều kiện (conditioning) khơng đưa mơ hình tốn học cụ thể để mơ tả hoạt động Nơron Bắt đầu vào năm 1940 với cơng trình Warrem McCulloch Walter Pitts Họ nguyên tắc, mạng nơron nhân tạo tính tốn hàm số học hay logic Tiếp theo Donald Hebb, ông phát biểu việc thuyết phản xạ cổ điển (classical conditioning) thực thuộc tính nơron riêng biệt Ơng nêu phương pháp học nơron nhân tạo Ứng dụng thực nghiệm nơron nhân tạo có vào cuối năm 50 với phát minh mạng perceptron luật học tương ứng Frank Rosenblatt Mạng có khả nhận dạng mẫu Điều mở nhiều hy vọng cho việc nghiên cứu mạng nơron Tuy nhiên giải số lớp hữu hạn tốn Cùng thời gian đó, Bernard Widrow Ted Hoff đưa thuật toán học sử dụng để dạy cho mạng nơron tuyến tính thích nghi, mạng có cấu trúc chức tương tự mạng Rosenblatt Luật học Widrow-Hoff sử dụng Tuy nhiên Rosenblatt Widrow-Hoff vấp phải vấn đề Marvin Minsky Seymour Papert phát Họ cố gắng cải tiến luật học mạng để vượt qua hạn chế họ không thành cơng việc cải tiến luật học để dạy mạng có cấu trúc phức tạp Do kết Minsky-Papert nên việc nghiên cứu mạng nơron 3.4 Một số nhận xét Mạng bị ảnh hưởng nhiều từ trạng thái khởi đầu tham số Trong trình học, mạng cố gắng điều chỉnh tham số cho tổng bình phương lỗi nhỏ Khả hội tụ mạng phụ thuộc vào tham số khởi đầu, khả tổng qt hóa lại phụ thuộc nhiều vào liệu đầu vào Nếu liệu đầu vào q nhiều dẫn tới tình trạng luyện mạng nhiều thời gian khả tổng qt hóa kém, q liệu sai số tăng Ngoài đặc trưng liệu, đặc trưng khác trình huấn luyện mạng cần quan tâm số lần thực điều chỉnh tham số mạng dẫn đến tình trạng khả tổng qt hóa mạng Bởi vậy, số chu kỳ mẫu đưa vào mạng cần xem xét phải lớn ngưỡng (từ vài nghìn vài chục nghìn lần) Để xem xét, đánh giá khả tổng quát hóa mạng, cần thực phân chia tập liệu thành tập: huấn luyện (training set) tập kiểm tra (test set) Tập liệu thử không đưa vào để kiểm tra hoạt động mạng để đảm bảo khách quan Đối với mạng nơron khả rơi vào điểm cực trị địa phương Như biết, thuật tốn Lan truyền ngược lỗi khơng đảm bảo cho ta điểm cực trị toàn cục Nếu rơi vào điểm cực trị địa phương, ta phải bắt đầu huấn luyện lại, điều khiến cho mạng nơron áp dụng thực tế tốn u cầu độ xác cao thời gian tối thiểu Do đó, giải pháp sử dụng hệ số học biến đổi hướng để vượt qua nhược điểm Ngồi ra, liệu phân bố khơng mẫu khả tổng qt hóa khơng tốt Mạng có khả khơng thể đạt đến trạng thái mong muốn, mà bỏ qua điểm cực trị Để tránh điều này, không nên đặt hệ số học lớn (cỡ 0.1 chẳng hạn), hệ số bước đà lớn (chẳng hạn = 0.5) (do đặc trưng thuật toán lan truyền ngược sử dụng tham số bước đà) Như nêu trên, để đảm bảo khả đạt đến điểm cực tiểu, số đơn vị lớp ẩn cần đủ lớn Tuy nhiên, số đơn vị lớp ẩn vượt ngưỡng khả tổng qt hóa mạng kém, lẽ sau huấn luyện mạng có xu hướng ghi nhớ tất mẫu học Khi đó, nên xem xét đến khả sử dụng thêm lớp ẩn với số nơron nhỏ (vài nơron) giảm bớt số nơron lớp ẩn thứ KẾT LUẬN Mạng nơron huấn luyện để xấp xỉ hàm mà không cần biết trước liên hệ đầu vào đầu Chúng hoạt động nhớ tự liên hợp cách sử dụng liệu đặc thù cho ứng dụng, toán lĩnh vực cụ thể Đó đặc trưng đem lại cho mạng nơron lợi mơ hình khác Trong luận văn này, thuộc tính mạng nơron truyền thẳng trình xác định đầu vào, kiến trúc mạng phục vụ cho toán cụ thể Luận văn xây dựng hệ chương trình dự báo liệu nhằm áp dụng vấn đề lý thuyết tìm hiểu Các thí nghiệm cho thấy, huấn luyện tốt tập liệu đầy đủ hoàn thiện với tham số lựa chọn cẩn thận kết dự báo đạt độ xác cao Chương trình cung cấp khả lưu lại tập tham số, trọng số độ lệch sau lần huấn luyện thành công nạp lại tham số để sử dụng dự báo liệu Tuy nhiên, luận văn xem xét đến khía cạnh tổng thể mạng nơron truyền thẳng nhiều lớp vấn đề dự báo liệu khoảng thời gian ngắn trung bình Cần nhấn mạnh rằng, để dự báo liệu cần sử dụng liệu lịch sử để huấn luyện liệu dự báo đầu vào (Ví dụ như: dự báo nhiệt độ ngày hơm sau, ) Người ta mạng nơron truyền thẳng nhiều lớp có khả tốt dự báo khoảng thời gian ngắn Mạng nơron truyền thẳng nhiều lớp sử dụng nhiều toán dự báo lĩnh vực khác: dự báo lượng sử dụng điện, nước, thị trường chứng khốn, lưu lượng giao thơng lượng sản phẩm bán chừng mối quan hệ đầu vào đầu thấy đưa vào mơ hình Tuy vậy, khơng tồn mơ hình chung thích hợp cho tất toán dự báo thực tế Đối với tốn, cần thực phân tích cặn kẽ, cụ thể liệu phạm vi sử dụng tri thức thu thập để xây dựng mơ hình thích hợp Các phân tích tri thức thu thập ln có ích việc lựa chọn đầu vào, mã hóa đầu vào định cấu trúc mạng, đặc biệt mà liệu lĩnh vực có giới hạn Thuật tốn lan truyền ngược chuẩn sử dụng việc huấn luyện mạng nơron truyền thẳng nhiều lớp chứng tỏ khả tốt chí tốn phức tạp Mặc dù vậy, để có khả vậy, ta cần nhiều thời gian để huấn luyện, điều chỉnh tham số mạng (thậm chí tốn có cấu trúc đơn giản) Điều trở ngại toán thực tế, vậy, thuật toán cải tiến cần áp dụng để tăng khả hội tụ mạng huấn luyện Luận văn thực nhằm làm sáng tỏ vấn đề lý thuyết mạng nơron truyền thẳng nhiều lớp, thuật toán lan truyền ngược, bước cần thực phân tích, thiết kế xây dựng ứng dụng cho toán dự báo liệu, đồng thời xây dựng chương trình ứng dụng nhằm mục đích thể vấn đề lý thuyết nêu Chắc chắn luận văn thiếu sót, tơi mong nhận ý kiến đóng góp nhằm hồn thiện hiểu biết TÀI LIỆU THAM KHẢO [1] Đ M Tường, Trí tuệ nhân tạo, NXB Khoa học Kỹ thuật, 2002 [2] Dipti Srinivasan, A C Liew, John S., P Chen, Short term forecasting using neural network approach, IEEE 91TH0374-9/91/0000-0012, pp 12-16, 1991 [3] Drucker H., Cun Y L., Improving Generalization Performance using Double Backpropagation, IEEE Transactions on neural netwoks, Vol 3, No 6, Nov 1992 [4] Hagan M T., Demuth H B., Beale M., Neural networks design, PWS Publishing Company, Boston, Ma, 1996 [5] Haykin, S., Neural networks, a comprehensive foundation, Macmillan New York, Ny 1994 [6] Kaastra, I., & Boyd, M - Designing a neural network for forecasting financial and economic time series - Neurocomputing 10 (1996), pp 215-236 [7] Kesmir C., Nussbaum A K., Schild H., Detours V., Brunak S., Prediction of proteasome cleavage motifs by neural networks, Protein engineering, Vol 15-No 4, pp 287-196, 2002 [8] Kolen J F., Pollack J B., Back Propagation is Sensitive to Initial Condition, Technical Report, Laboratory for artificial intelligence Research-The ohio State university [9] Lawrence S., C L Giles, a C Tsoj, What size Neural Netwwork Gives optimal Generalization? Convergence Properties of Backpropagation, Technical Report, Institute for Advanced Computer Studies - University of Maryland College Park, June 1996 [10] Morioka Y., Sakurai K., Yokoyama A Sekine Y., Next day peak load forecasting using a Multilayer neural network with an additional Learning, IEEE, 07803-1217-1/93, 1993 [11] Oh S.H., Lee Yj., A modified error function to improve the error BackPropagation algorithm for Multi-layer perceptrons, ETRI Journal Vol 17, No 1, April 1995 [12] Ooyen A V., Nienhuis B., Improving the Convergence of the BackPropagation Algorithm, Neural Networks, Vol 5, pp 465-471, 1992 [13] Poh, H L., Yao, J T., & Jašic T., Neural Networks for the Analysis and Forecasting of Advertising and Promotion impact - International Journal of intelligent Systems in accounting, Finance & Management (1998), pp 253-268 [14] Rao, Valluru B and Rao, Hayagriva V., C++ Neural Networks and Fuzzy Logic, MIS Press, 1993 [15] Ripley B.D., Pattern Recognition and Neural Networks, Cambridge university Press,1996 [16] Sullivan, R., Timmermann, A & White, H., Dangers of data-driven inference: the case of calendar effects in stock returns, Discussion Paper, University of California, San Diego, Department of economics, 7/1998 [17] Swingler K., Financial Predictions, Some Pointers, Pitfalls, and Common errors, Technical Report, Center for cognitive and computational neuroscience Stirling University, July 14, 1994 [18] Takashi O., Next day‟s peak load forecasting using an artificial neural network, IEEE 0-7803-1217-1/93, pp 284-289, 1993 [19] T Masters, Practical Neural Network Recipes in C++ Academic Press, Inc., 1993 [20] UdoSeiffert, Michaelis B., On the gradient descent in back-propagation and its substitution by a genetic algorithm, Proceedings of the IASTED International Conference Applied informatics 14-17/02/2000, InnsBruck, Austria [21] Vogl P T., Mangis J K., Zigler A K., Zink W T and Alkon D L., “Accelerating the convergence of the back-propagation method”, Biological Cybernetics, vol.59, pp 256-264, 09/1988 [22] Zupan J and Gasteiger J (1992), Neural networks for chemists, VCH PHỤ LỤC Mô tả nội dung cài đặt thuật toán lan truyền ngược Mạng huấn luyện thuật tốn lan truyền ngược Hàm lỗi trung bình bình phương sử dụng: n tk 2k1 E yk Như nêu trên, hàm chuyển đơn vị lớp ẩn hàm sigmoid: g x 1 e x Hàm có đặc trưng có ích đạo hàm biểu diễn dạng sau: g ' x g x g x Các hàm trên dễ dàng cài đặt với ngôn ngữ Visual Basic 6.0 hãng Microsoft Public Function sigmoid (x As Double) As Double If (x > 50) Then sigmoid = ElseIf (x < -50) Then sigmoid = Else sigmoid = / (1 + Exp(-x)) End If End Function Public Function sigmoidDerivative (x As Double) As Double sigmoidDerivative = x * (1 - x) End Function Bước thuật toán lan truyền ngược là: truyền xi (forward propagation) Public Sub forward_prop() Dim i As Integer, j As Integer, k As Integer Dim aTemp() As Double, aTmp() As Double ' Đặt đầu vào cho lớp ẩn layers(0).Set_Inputs inputs For i = To numOfLayers - layers(i).calc_out layers(i).getOutputs aTemp If i + < numOfLayers Then layers(i + 1).Set_Inputs aTemp End If Next End Sub Trong đó, hàm Set_Inputs, calc_out, getOutputs hàm thành phần lớp layers, lớp (class) dành biểu diễn cho lớp mạng Các hàm sau: Public Sub calc_out () Dim i, j, k As Integer Dim acc As Double acc = For j = To numOutputs - For i = To numInputs - k = i * numOutputs If Weights(k + j) * Weights(k + j) > 100000 Then Debug.Print "Trọng số tăng lớn !" Exit For End If outputs(j) = Weights(k + j) * inputs(i) + bias(j) acc = acc + outputs(j) Next If layerType = Then outputs(j) = acc ReDim Preserve predicted_values(j) predicted_values(j) = acc outValue = acc Else outputs(j) = sigmoid(acc) End If acc = Next End Sub Public Sub Set_Inputs (ByRef nIns) Dim i As Integer For i = To numInputs - inputs(i) = nIns(i) Next End Sub Public Sub getOutputs(ByRef nOut) Dim i For i = To numOutputs - ReDim Preserve nOut(i) nOut(i) = outputs(i) Next End Sub Bước thứ hai thuật toán lan truyền ngược lỗi (Backward propagation) Đối với đơn vị lớp ra, lỗi δ cho phương trình: k yk tk đó, đơn vị lớp ẩn, lỗi δ tính cơng thức: j zj zj c wkj k k Các đạo hàm tương ứng với trọng số lớp ẩn lớp ra: E wij j xi E wkj k zj Ta sử dụng thuật toán giảm theo gradient (gradient descent algorithm) với tham số bước đà để cập nhật trọng số: Public Sub backward_prop(ByRef tongLoi As Double) Dim i As Integer Dim OE() As Double ‘ Tính toán lỗi đầu layers(numOfLayers - 1).calc_error tongLoi For i = numOfLayers - To Step -1 ' Truyền ngược lỗi đầu lớp trước layers(i + 1).getBack_errors OE layers(i).setOutput_errors OE ‘ Thực tính tốn lỗi cho lớp layers(i).mid_calc_error Next End Sub Các hàm calc_error, getBack_errors, setOutput_errors, mid_calc_error hàm thuộc lớp (class) layers cài đặt sau: Public Sub calc_error(ByRef error) ' Hàm sử dụng cho lớp Dim i, j, k As Integer Dim acc As Double, total_error As Double acc = total_error = For j = To numOutputs - ReDim Preserve output_errors(j) output_errors(j) = expected_values(j) - outputs(j) total_error = total_error + output_errors(j) Next error = total_error For i = To numInputs - ReDim Preserve back_errors(i) k = i * numOutputs For j = To numOutputs - back_errors(i) = Weights(k + j) * output_errors(j) acc = acc + back_errors(i) Next back_errors(i) = acc acc = ' Lỗi lan truyền ngược lại nhân với đạo hàm hàm chuyển back_errors(i) = back_errors(i) * sigmoidDerivative(inputs(i)) Next End Sub Public Sub mid_calc_error() ' Sử dụng cho lớp ẩn Dim i, j, k As Integer Dim acc As Double acc = For i = To numInputs - ReDim Preserve back_errors(i) k = i * numOutputs For j = To numOutputs - back_errors(i) = Weights(k + j) * output_errors(j) acc = acc + back_errors(i) Next back_errors(i) = acc acc = ' Lỗi lan truyền ngược lại nhân với đạo hàm hàm chuyển back_errors(i) = back_errors(i) * sigmoidDerivative(inputs(i)) Next End Sub Public Sub setOutput_errors(OE) Dim i For i = To numOutputs – ReDim Preserve output_errors(i) output_errors(i) = OE(i) Next End Sub Public Sub getBack_errors(ByRef BE) Dim i For i = To numInputs - ReDim Preserve BE(i) BE(i) = back_errors(i) Next End Sub Sau lan truyền ngược lỗi từ đầu vào lớp trước, ta bắt đầu thực cập nhật trọng số: Public Sub update_weights() Dim i As Integer For i = To numOfLayers - layers(i).updateWeights learningRate, alpha Next End Sub Hàm updateWeights hàm thuộc lớp (class) layers thực cập nhật trọng số lớp: Public Sub updateWeights(ByVal beta As Double, ByVal alpha As Double) Dim i, j, k As Integer Dim delta As Double, deltaB As Double, avgDelta As Double ' Learning law: weight_change = beta * output_errors * input + ' alpha * past_deltas ' Cập nhật trọng số For i = To numInputs - k = i * numOutputs For j = To numOutputs - delta = beta * output_errors(j) * inputs(i) + alpha * past_deltas(k + j) Weights(k + j) = Weights(k + j) + delta ReDim Preserve cum_deltas(k + j) cum_deltas(k + j) = cum_deltas(k + j) + delta Next Next ' Cập nhật độ lệch For j = To numOutputs - deltaB = beta * output_errors(j) + alpha * past_deltas_B(j) bias(j) = bias(j) + deltaB ReDim Preserve cum_deltas_B(j) cum_deltas_B(j) = cum_deltas_B(j) + deltaB Next End Sub Các tham số past_deltas cum_deltas cập nhật chu kỳ huấn luyện bắt đầu thủ tục updateMomentum lớp (class) network Public Sub updateMomentum() Dim i For i = To numOfLayers - layers(i).updateMomentum Next End Sub Thủ tục thực chất tráo đổi giá trị cum_deltas past_deltas lớp Public Sub updateMomentum() Dim i, j, k „ Tráo đổi vector deltas swapVector past_deltas, cum_deltas swapVector past_deltas_B, cum_deltas_B For i = To numInputs - k = i * numOutputs For j = To numOutputs - ReDim Preserve cum_deltas(k + j) cum_deltas(k + j) = Next Next For j = To numOutputs - ReDim Preserve cum_deltas_B(j) cum_deltas_B(j) = Next End Sub Sau toàn thủ tục huấn luyện mạng nơron: Public Sub train() Dim tot_err As Double, num As Integer currentError = 0.9999 Dim MaxCycles As Integer, i As Integer, j As Double, k As Integer MaxCycles = 15000 i=0 j=0 tot_err = ReDim predictValue(numOfPatterns - 1) ReDim arrMSE(50) 'Hiển thị hình theo dõi lỗi đồ thị huấn luyện FrmPlot.Show mseUpdate.Show Do While True And Not stopTraining updateMomentum ‘ Lấy mẫu thứ i tập huấn luyện chuẩn bị sẵn get_patterns i ' Đặt vector thứ i cho mạng biết setNumPatterns i setStatusText 1, "Training " ' Truyền xuôi forward_prop predictValue(i) = layers(numOfLayers - 1).getoutValue ' Truyền ngược lỗi backward_prop currentError ' Tính tốn lỗi tot_err = tot_err + currentError * currentError Set_currentCycle CLng(j) ' Thực cập nhật trọng số update_weights ' Tăng số thứ tự vector mẫu đọc vào lên i=i+1 DoEvents If i = numOfPatterns Then ' Nếu kết thúc chu kỳ i=0 j=j+1 ' Tính tốn lỗi trung bình bình phương MSE = sqr(tot_err) / numOfPatterns ReDim Preserve arrMSE(UBound(arrMSE) + 1) arrMSE(UBound(arrMSE)) = MSE 'Thực cập nhật đồ thị 50 chu kỳ If NumOfCycles Mod 50 = Then FrmPlot.update mseUpdate.update DoEvents ReDim arrMSE(0) DoEvents End If If Abs(MSE) < errorToleranceRate Then 'Nếu lỗi trung bình bình phương nhỏ hệ số thứ lỗi 'thì kết thúc huấn luyện Set_currentCycle CLng(j) setcurrentError currentError DoEvents setstopTraining True End If MSE = tot_err = NumOfCycles = NumOfCycles + End If Loop setStatusText 1, "DONE!!!!!!!!!" 'Ghi lại ma trận trọng số write_weights setStatusText 2, "Cycle number: " & CStr(j) setStatusText 3, "Total error: " & Abs(currentError) Set_currentCycle CLng(j) FrmPlot.update DoEvents End Sub Các mẫu đưa vào mạng để huấn luyện ... .39 2.5.2 Thuật giải di truyền 40 Chương ỨNG DỤNG MẠNG N RON TRUYỀN THẲNG TRONG DỰ BÁO DỮ LIỆU 3.1 Sơ lược ứng dụng mạng n ron dự báo liệu 42 3.2 Thu... cấu trúc mạng quy việc tìm số nơ ron lớp ẩn Số nơ ron lớp ẩn Mạng n ron truyền thẳng có khả tổng quát hóa từ liệu mà học, nói cách khác, mạng n ron truyền thẳng có khả dự báo tốt Khả dự báo phụ... trị dự báo tương lai biến q trình Chương MẠNG N RON TRUYỀN THẲNG VÀ THUẬT TOÁN LAN TRUYỀN NGƯỢC 2.1 Kiến trúc mạng n ron truyền thẳng Để đơn giản tránh hiểu nhầm, mạng truyền thẳng xét chương mạng

Ngày đăng: 13/02/2019, 18:45

TỪ KHÓA LIÊN QUAN

w