Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 74 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
74
Dung lượng
1,16 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên Tai ngay!!! Ban co the xoa dong chu nay!!! http://www.lrc-tnu.edu.vn/ ĐẠ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 MỤC LỤC 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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 CƠ BẢN VỀ MẠNG NƠRON 1.1 Lịch sử phát triển 1.2 Nơron sinh học mạng nơron sinh học 10 1.3 Nơron nhân tạo 10 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 Thủ tục học mạng nơron 15 1.5.1 Học tham số .15 1.5.2 Học cấu trúc .17 1.6 Một số ứng dụng mạng nơron 17 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 Cơ chế học mạng nơron truyền thẳng 21 2.4 Thuật toán lan truyền ngƣợc sai số (Back-Propagation) 22 2.4.1 Mơ tả thuật tố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 Một số thuật toán tối ƣu khác 39 2.5.1 Thuật toán giả luyện kim (Simulated annealing) .39 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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 42 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 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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 đƣợc 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 đƣợc 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 đƣợc thực tiễn chứng minh mạnh hiệu tốn dự báo, phân tích liệu Chúng đƣợc huấn luyện ánh xạ từ liệu vào tới liệu mà khơng 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, đƣợc huấn luyện thuật toán lan truyền ngƣợc đƣợ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 đƣợc coi nhƣ “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 đƣợc khuynh hƣớng thay đổi liệu với độ tin cậy định, nhà lãnh đạo đƣa đƣợc sách đắn cho quan, tổ chức Luận văn đƣợc 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ Đố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 tố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 tố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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 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ó đƣợ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ự nhƣ mạng Rosenblatt Luật học Widrow-Hoff đƣợc 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 đƣợc hạn chế nhƣng họ không thành cơng việc cải tiến luật học để dạy đƣợc 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 10 gần nhƣ bị đình lại suốt thập kỷ nguyên nhân khơng có đƣợc máy tính đủ mạnh để thực nghiệm Mặc dù vậy, có vài phát kiến quan trọng vào năm 70 Năm 1972, Teuvo Kohonen James Anderson độc lập phát triển loại mạng hoạt động nhƣ nhớ Stephen Grossberg tích cực việc khảo sát mạng tự tổ chức (Self_organizing networks) Vào năm 80, việc nghiên cứu mạng nơron phát triển mạnh mẽ với đời PC Hai khái niệm có liên quan đến hồi sinh là: 1) Việc sử dụng phƣơng pháp thống kê để giải thích hoạt động lớp mạng hồi quy (recurrent networks) đƣợc dùng nhƣ nhớ liên hợp (associative memory) cơng trình nhà vật lý học Johh Hopfield 2) Sự đời thuật toán lan truyền ngƣợc (back-propagation) để luyện mạng nhiều lớp đƣợc tìm vài nhà nghiên cứu cách độc lập nhƣ: David Rumelhart, James McCelland, Đó câu trả lời cho Minsky-Papert 1.2 Nơron sinh học mạng nơron sinh học Hệ thần kinh ngƣời có khoảng 1010 tế bào thần kinh đƣợc gọi nơron Mỗi nơron gồm có ba phần: thân nơron với nhân bên trong, đầu thần kinh hệ thống hình đầu thần kinh vào Độ lớn tín hiệu vào bị thay đổi đƣợc truyền qua khớp thần kinh có nhánh thần kinh vào Tỷ lệ biến đổi tín hiệu khớp thần kinh đƣợc gọi độ khuyếch đại khớp đƣợc gọi trọng số nơron Theo nghiên cứu sinh học, chức hệ thần kinh không phụ thuộc nhiều vào vai trò nơron đơn lẻ mà phụ thuộc vào cách mà toàn nơ ron đƣợc nối với nhau, gọi mạng nơron sinh học 1.3 Nơron nhân tạo Nơ ron nhân tạo mơ hình tốn học mô nơron sinh học Mỗi nơron nhân tạo đƣợc gọi đơn vị xử lý với chức năng: nhận tín hiệu vào từ đơn vị phía trƣớc (hay nguồn bên ngồi), tính tín hiệu từ tín hiệu vào lan truyền tín hiệu sang đơn vị khác[4] Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 60 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, cịn 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 quát hóa kém, q liệu sai số tăng Ngồ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 q dẫn đến tình trạng khả tổng quát hóa mạng Bởi vậy, số chu kỳ mẫu đƣa vào mạng cần đƣợc xem xét phải lớn ngƣỡng (từ vài nghìn vài chục nghìn lần) Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 61 Để xem xét, đánh giá đƣợc 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 đƣợc 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 đƣợc 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 đƣợc đế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), nhƣ 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 đƣợc 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ứ Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 62 KẾT LUẬN Mạng nơron đƣợc 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ƣ 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 đƣợc 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, nhƣ đƣợc huấn luyện tốt tập liệu đầy đủ hoàn thiện với tham số đƣợc 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 đƣợc 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 đƣợc đƣ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 đƣợc để xây dựng đƣợc mơ hình thích hợp Các phân tích tri thức thu thập đƣợc 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 đƣợc 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ó đƣợc khả nhƣ vậy, ta cần Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 63 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 ln trở ngại tốn thực tế, vậy, thuật toán cải tiến cần đƣợc áp dụng để tăng khả hội tụ mạng huấn luyện Luận văn đƣợc 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 cịn thiếu sót, tơi mong nhận đƣợc ý kiến đóng góp nhằm hồn thiện hiểu biết Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 64 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 65 [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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 66 PHỤ LỤC Mô tả nội dung cài đặt thuật toán lan truyền ngƣợc Mạng đƣợc huấn luyện thuật toán lan truyền ngƣợc Hàm lỗi trung bình bình phƣơng đƣợc sử dụng: E n tk 2k1 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ƣới 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 tố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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 67 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 nhƣ 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 - Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 68 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 δ đƣợc cho phƣơng trình: k yk tk đó, đơn vị lớp ẩn, lỗi δ đƣợc tính cơng thức: c j zj zj wkj k k Các đạo hàm tƣơng ứng với trọng số lớp ẩn lớp ra: E wij x j i 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 tố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 cài đặt nhƣ sau: Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 69 Public Sub calc_error(ByRef error) ' Hàm đƣợc 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) Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 70 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) Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 71 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 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 Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 72 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 xi forward_prop Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 73 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 = Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/ 74 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 đƣợc đƣa vào mạng để huấn luyện Số hóa Trung tâm Học liệu – Đại học Thái Nguyên http://www.lrc-tnu.edu.vn/