Bất kểmột mô hình nào cũng cần phải được đánh giá và kiểm tra trước khi đưa vào áp dụng thực tế. Chúng ta sẽlàm việc này bằng cách chia tập dữ liệu đã được chuẩn hóa thành ba tập dữ liệu con gồm: tập huấn luyện (training set), tập đánh giá (validation set), và tập kiểm tra (testing set). Tập dữliệu là tập con lớn nhất ( thường chiếm tới 70%) dùng đểhuấn luyện và thiết lập các tham sốcủa mạng. Tập đánh giá ( thường chiếm 20%) được sử dụng với mục đích kiểm định xem mô hình học đã thực sự tốt hay chưa. Nếu chưa tốt thì tiến hành học lại. Tập kiểm tra (thường chiếm 10%) dùng để kiểm tra độchính xác của mô hình trước khi chúng được đưa vào áp dụng thực tế. Một mô hình mạng noron tốt là mô hình mà cho tỉ lệlỗi với tập test ở mức chấp nhận được. Hình vẽ dưới đây thể hiện tỉ lệ kích thước giữa các tập huấn luyện, kiểm tra và kiểm chứng [9].
Hình 4.2 – Tỷlệ kích thước giữa các tập huấn luyện [9]
Hiện tượng overfitting [3], [9] thường xảy ra khi tập huấn luyện không đủ độ tổng quát. Nói theo cách khác, có tương đối ít các mẫu quan sát về các mối tương quan giữa các tham sốcủa mô hình vì thếmà mô hình có khả năng ghi nhớcác mẫu riêng lẻ hơn là tổng quát hóa các mẫu. Với mạng nơ ron, số trọng số liên kết và kích thước tập huấn luyện có ảnh hướng quyết định đến nguy cơ overfitting. Sốtrọng sốliên kết càng lớn hơn kích thước của tập huấn luyện, thì mạng càng có khả năng ghi nhớ tốt các mẫu riêng lẻ. Kết quả là khả năng tổng quát hóa trên tập kiểm chứng bị mất dẫn tới khả năng dự báo của mô hình giảm đi rõ rệt.
Để ngăn chặn nguy cơ overfitting (hiện tượng khả năng học của mạng là rất tốt nhưng khả năng tổng quát hóa của mạng là kém, tức là mạng dự đoán tốt với những dữ liệu đã được huấn luyện nhưng lại tỏ ra kém hiệu quả khi dữ liệu mới vào mô hình) thì kích cỡcủa tập huấn luyện ít nhất phải bằng 5 lần sốtrọng sốliên kết [5].
4.2.5. Xácđịnh cấu trúc mạng
Số lượng tầng ẩn
Những tầng ẩn cung cấp cho mạng năng lực đểtổng quát hóa.
Trên lí thuyết, chỉcần 1 lớp cũng đủ tương đương với bất kì hàm liên tục nào.
Hơn thế, việc tăng số lượng tầng ẩn làm tăng khả năng overfitting và tăng thời gian tính toán [9].
Số lượng nơ ron tầng vào và tầng ẩn
Không có công thức chung nào giúp chỉ ra số nơ ron tầng ẩn thích hợp cho mọi bài toán. Sựlựa chọn số nơ ron ẩn thích hợp phụthuộc rất nhiều vào kinh nghiệm. Tuy nhiên cũng có một số gợi ý mà các nhà nghiên cứu đưa ra giúp chúng ta có những bước chọn thuận lợi.
Một mô hình mạng nơ ron ba lớp với n nơ ron ởtầng vào và m nơ ron ở tầng ra thì số nơ ron ở tầng ẩn có thểbằng: √ × . Baily và Thompson thì đề nghị rằng số nơ ron của tầng ẩn bằng khoảng 75% số nơ ron của tầng vào. Theo Katz [7] thì cho rằng số nơ ron ẩn tối ưu gấp 1.5 đến 3 lần số nơ ron tầng vào.
Các gợi ý trên cho thấy việc lựa chọn số nơ ron của tầng ẩn phụthuộc hoàn toàn vào số nơ ron của tầng vào, điều này khiến mô hình mạng dễ rơi vào trạng thái overfitting. Giải pháp được đưa ra là tăng kích thước tập huấn luyện, nếu điều này không thể thực hiện thì có thểnâng giới hạn số nơ ron tầng vào. Như thế số lượng trọng sốliên kết ít nhất bằng một nửa sốlần huấn luyện.
Tuy nhiên, lựa chọn được số lượng nơ ron ẩn tốt nhất vẫn là ởthực nghiệm.
Số nơ ron tầng ra
Trong các bài toán dự báo tài chính, số nơ ron tầng ra luôn luôn là 1. Việc sửdụng nhiều giá trị đầu ra sẽtạo ra kết quảthấp hơn so với một mạng nơ ron với một đầu ra [6]. Lý do là một mạng nơ ron được huấn luyện bằng cách chọn trọng số với bất kì số lượng nơ ron đầu ra nào đều đã được tối ưu. Có thêm nhiều đầu ra làm tăng không gian lưu trữ cũng như khả năng tính toán.
Hàm truyền
Hầu hết các mô hình mạng nơ ron đều sửdụng hàm truyền sigmoid, hàm này vẫn tỏ ra khá hiệu quả và đơn giản, phù hợp với mô hình dự đoán của chúng ta.
Sau đây là một số kết quảvề độhội tụ của mạng nơ ron với một sốbộgiá trị tham số cho trước. Trong mỗi hình này, đường mầu xanh serie 1 là các giá trị thực tế của đối
tượng cần huấn luyện trong mạng nơ ron, đường mầu hồng serie 2 là các giá trị dự đoán khi sửdụng mô hình mạng [9].
Hình 4.3 –Độhội tụ: 3 tầng, 20 nơ ron ẩn, 50 bước
Hình 4.4 –Độhội tụ: 3 tầng, 20 nơ ron ẩn, 100 bước
Hình 4.6 –Độhội tụ: 3 tầng, 50 nơ ron ẩn, 5 bước
Hình 4.7 –Độhội tụ: 3 tầng, 50 nơ ron ẩn, 50 bước
Hình 4.3, 4.4, 4.5 chỉ ra sựhội tụkhi sửdụng mô hình mạng nơ ron 3 tầng với 20 nơ ron ẩn và số bước thực hiện lần lượt là 50, 100, 300. Ta nhận thấy mạng cho kết quả hội tụcao khi số bước thực hiện lớn đối với các mô hình có cùng số tầng ẩn và số nơ ron ẩn. Khi tăng số nơ ron ẩn, mạng hội tụ nhanh hơn, số bước thực hiện ít hơn. Điều này thấy rõ trong hình 4.6 và 4.7. Với 50 nơ ron ẩn, mạng chỉ cần 50 bước thực hiện để đạt được độ hội tụ tương đương với mô hình mạng sửdụng 20 nơ ron ẩn và 300 bước thực hiện.
4.2.6. Xác định tiêu chuẩn đánh giá
Việc xác định tiêu chuẩn đánh giá chính là xác định hàm lỗi để căn cứ vào đó đánh giá mô hình mạng có thực sự tốt hay không. Có rất nhiều hàm lỗi có thể sử dụng được nhưng trong khóa luận này tôi sửdụng sai sốtrung bình bình phương (root mean squared error) để đánh giá. Công thức của sai số trung bình bình phương được đánh giá bởi phương trình:
= 1 ( − ) Trong đó:
Pjlà giá trị được dự đoán cho mẫu thứj Tjlà giá trịthực của mẫu thứj
n là sốmẫu
Sau khi xác định được hàm lỗi chúng ta có thểsửdụng 2 chiến lược [4] sau để kiểm chứng. Mục đích của chúng ta là thu được mô hình có sai sô trung bình bình phương E là nhỏnhất.
Chiến lược cửa sổ tăng trưởng (growing window)
Hoặc có thểsửdụng cửa sổ trượt (Sliding window) :
1. Cho chuỗi Rh(1),Rh(2), . . . ,Rh(n) và thời gian t (t < n)
2. Xây dựng mô hình dự đoán với tập dữ liệu huấn luyện Rh(1),Rh(2), . . . ,Rh(t−1)
3. LẶP
a. Dự đoán giá trị của Rh(t) b. Ghi lại tỉ lệ lỗi dự đoán
c. Thêm Rh(t) vào tập huấn luyện
d. Xây dựng mô hình mới với tập huấn luyện mới e. Đặt t = t + 1
4.2.7. Huấn luyện mạng nơ ron
Huấn luyện mạng nơ ron có nghĩa là học các mẫu từ dữ liệu. Mục tiêu của huấn luyện là tìm ra được tập trọng sốliên kết giữa các nơ ron sao cho hàm lỗi (hàm giá) là nhỏ nhất. Nếu một mô hình không rơi vào trạng thái overfiting thì tập trọng số liên kết có thể cung cấp khả năng tổng quát hóa tốt. Thuật toán lan truyền ngược sai số như đã giới thiệu ở chương 2 là thuật toán phổbiến và hiệu quảnhất đểhuấn luyện mạng. Tuy nhiên, thuật toán này cũng không đảm bảo có được một cực tiểu toàn cục, thuật toán có thểbị mặc kẹt vào một cực tiểu địa phương nào đó.
Có hai vấn đề mà ta quan tâm khi huấn luyện mạng noron đó là tiêu chuẩn dừng và tốc độhọc.
Tiêu chuẩn dừng
Thuật toán lan truyền ngược không thể xác định được là đã hội tụ hay chưa, và như vậy không có một tiêu chuẩn tuyệt đối nào cho việc dừng của thuật toán. Tuy nhiên vẫn có một số tiêu chuẩn có thể coi là chấp nhận được. Dưới đây tôi xin giới thiệu hai tiêu chuẩn dừng [2]:
Tiêu chuẩn thứnhất dựa vào sự ổn định của hàm giá (được xác định trong công thức (2.2)) quanh một giá trị nào đó. Chúng ta có tiêu chuẩn hội tụ như sau:
Mạng noron được xem là hội tụkhi tỷlệlỗi tuyệt đối của lỗi bình phương trung bình
1. Cho chuỗi Rh(1),Rh(2), . . . ,Rh(n), thời gian t
và kích thước cửa sổ w
2. Xây dựng mô hình với tập dữ liệu huấn luyện Rh(t−w−1), . . . ,Rh(t−1)
3. LẶP
a. Dự đoán giá trị cho Rh(t) b. Ghi lại tỉ lệ lỗi dự đoán
c. Thêm Rh(t) vào tập huấn luyện và xóa Rh(t−w−1) ra khỏi tập huấn luyện
d. Xây dựng mô hình mới với tập huấn luyện mới e. Đặt t = t + 1
Tỷ lệ lỗi bình phương trung bình được coi là đủ nhỏ nếu nó nằm trong giới hạn từ 0.1 đến 1 phần trăm trong một lần huấn luyện. Nhưng tiêu chuẩn này có hạn chếlà có thể dẫn đến sựkết thúc vội vàng của quá trình học.
Tiêu chuẩn thứ hai để xác định điểm dừng cho việc huấn luyện mạng là khi độ lớn Euclide của vector gradient đạt tới một ngưỡng gradient đủ nhỏ. Tuy nhiên tiêu chuẩn này thời gian học dài và phải tính toán vector gradient.
Ngoài hai tiêu chuẩn đã nêu, còn có phương pháp vừa học vừa kiểm tra tính năng nhận dạng trên một tập dữliệu mẫu kiểm tra khác với tập hợp tích lũy. Trong trường hợp này, thuật toán được xem là hội tụ khi nó tích lũy đủ lâu và khả năng nhận dạng trên tập kiểm tra đạt tới một giá trị cho phép nào đó.
Tốc độhọc
Về mặt lý tưởng, tất cả các neron trong mạng nên học với cùng một tốc độ. Mức cuối cùng của mạng thường có gradient cục bộ lớn hơn các mức ở phía trước. Như vậy tốc độ học nên được gán một giá trị nhỏ hơn. Các noron nhiều đầu vào nên có một tham sốtốc độhọc nhỏ hơn để giữ một thời gian học tương tự nhau cho tất cảcác noron trong mạng.
Tốc độ học nhận giá trị trong khoảng [0, 1]. Trong suốt quá trình huấn luyện, tốc độ học quá cao làm cho các trọng số liên kết thay đổi lớn dẫn đến mạng không ổn định. Ngược lại tốc độ học quá thấp thì sự thay đổi trọng sốliên kết chậm, quỹ đạo không gian trọng số càng trơn. Tuy nhiên điều này lại làm cho việc học bịchậm lại
Hầu hết các chương trình mô hình mạng đều để mặc định giá trị tốc độhọc. Tốc độ học khởi tạo có miền ưu tiên khá rộng từ 0.1 đến 0.9. Việc lựa chọn một tốc độ học phù hợp cũng sẽ làm tăng khả năng của mạng noron lên khá nhiều.
4.2.8. Triển khai
Triển khai được coi như là bước cuối cùng của việc thiết kế mô hình mạng nơ ron, nhưng thực tế yêu cầu việc triển khai phải được chú ý trước khi tập hợp dữliệu. Dữliệu, tiêu chuẩn đánh giá, thời gian huấn luyện đều phải được định hướng trong môi trường mà mạng nơ ron sẽ được triển khai. Hầu hết các nhà cung cấp phần mềm mạng nơ ron đều
hình. Nếu không có sẵn phần mềm, mạng nơ ron cũng có thể được tạo ra dễdàng khi hiểu kiến trúc của nó, hàm truyền và trọng sốliên kết.
Một ưu điểm của mạng nơ ron là khả năng thích ứng với sự thay đổi của môi trường qua sựhuấn luyện tuần hoàn. Khi mạng được triển khai, hiệu năng của mạng sẽ giảm dần nếu không được huấn luyện lại nhưng không có nghĩa hiệu năng sẽ được duy trì như các biến độc lập. Do đó phải thường xuyên huấn luyện lại mạng trong suốt quá trình thử nghiệm trên mô hình cuối cùng.
4.3 Tổng kết
Như vậy chương này tôi đã giới thiệu hoàn chỉnh tám bước thiết kếmột mạng noron gồm: chọn lựa các biến, thu thập dữliệu, tiền xửlý dữliệu, phân hoạch dữliệu, xác định cấu trúc mạng, xác định tiêu chuẩn đánh giá, huấn luyện mạng, thực thi trong thực tế. Một mô hình mạng noron cho bài toán dựbáo cũng đã được trình bày. Từnhững kiến thức đó chúng ta hoàn toàn có thểbắt tay xây dựng được một mạng noron thành một ứng dụng dự báo giá chứng khoán cụthể. Trong chương tới đây, tôi sẽgiới thiệu vềquá trình xây dựng của tôi.
Chương 5. XÂY DỰNG CHƯƠNG TRÌNH VÀ
ĐÁNH GIÁ
Trong chương này tôi sẽ đềcập đến quá trình xây dựng phần mềm dựa trên hai phần mềm mã nguồn mở là weka [10] và jstock [11]đồng thời đánh giá mô hình mà phần mềm sử dụng với một vài mô hình dự đoán khác. Phần mềm sẽ được xây dựng trên ngôn ngữ java [2] với môi trường phát triển là neatbean [13]
5.1. Vài nét về các phần mềm nguồn mở được sử dụng
Rất nhiều phần mềm nguồn mở có chất lượng, tính ứng dụng cao đã và đang được cộng động sử dụng ngày một nhiều, có thể kể đến như: hệ điều hành linux, trình duyệt firefox …. Chính vì điều này đã thôi thúc tôi xây dựng phần mềm của mình dựa trên nền tảng của các phần mềm mã nguồn mở.
5.1.1. Weka
Thực tế là không có một lược đồ học máy nào thích hợp cho tất cả những vấn đề khai phá dữliệu. Việc xây dựng một hệthống dựa trên kỹthuật học máy tổng quát là một điều không tưởng. Xuất phát từthực tế đó, thư việnweka đã được ra đời nhằm hỗtrợ xây dựng các phần mềm có khả năng phân tích và hỗtrợra quyết định [8].
Weka là thư viện chứa một bộtập hợp kỹthuật, thuật toán và công cụxửlý dữliệu và thuật toán học máy rất đa dạng. Nó được thiết kế để chúng ta có thể áp dụng nhanh chóng những thuật toán trên những tập dữliệu mới theo các cách khác nhau một cách linh hoạt. Thư viện này hỗtrợ cho toàn bộ quá trình khai phá dữ liệu ở trong thực tế bao gồm chuẩn bịdữliệu đầu vào, đánh giá thống kê lược đồhọc, và trực quan hóa dữliệu đầu vào và kết quả của quá trình học. Cùng với rất nhiều thuật toán học khác nhau là các công cụ tiền xử lý dữ liệu cũng được xây dựng trong weka. Weka cho phép người dùng so sánh các thuật toán với nhau và xác định cái nào là phù hợp nhất với vấn đề đang thực hiện [8].
Weka được phát triển ở đại học Waikato, New Zealand. Tên weka được viết tắt từ cụm từWaikato Environment for Knowledge Analysis. Nóđược viết bằng ngôn ngữJava
và chạy được trên hầu hết các môi trường, đã được thử nghiệm trên Linux, Windows, Macintosh.
Weka bao gồm những phương pháp cho tất cảnhững vấn đềkhai phá dữliệu chuẩn: hồi quy (regression), phân lớp (classification), phân cụm (clustering), khai phá luật kết hợp (association rule mining) và chọn lựa thuộc tính (attribute selection). Tất cả thuật toán sẽ lấy đầu vào ở trong dạng của một bảng quan hệ đơn lưu trong file có đuôi mở rộng là arff
Giao diện chính của weka có cho phép người dùng có thểchọn lựa 4 kiểu giao diện khác nhau đểthao tác.
Hình 5.1 – Giao diện chính của weka
Explorer : giao diện đồ họa, cho phép truy xuất vào tất cả tiện ích của nó bằng cách sửdụng trình lựa chọn và thay đổi các tham số
Knowledge Flow:cho phép thiết kế, cấu hình cho xửlý dòng dữliệu.
Experimenter : cho phép tự động xử lý dễ dàng phân loại, lọc với các tham số khác nhau
Simlpe CLI: cho phép truy xuất thông qua các câu lệnh
Có thể tải phần mềm và tài liệu hướng dẫn tại trang web http://www.cs.waikato.ac.nz/ml/weka/. Trong hầu hết những ứng dụng khai phá dữ liệu, thành phần học máy chỉ là phần nhỏ của hệ thống phần mềm lớn. Vì vậy, để viết ứng dụng khai phá dữ liệu chúng ta phải truy cập vào chương trình trong weka bằng những
đoạn mã lệnh trong chương trình của chúng ta. Trên cơ sở đó, khóa luận này tôi sẽ dùng