Các bước thiết kế mô hình

Một phần của tài liệu nguyên cứu và xây dựng hệ thống quản lý và dự đoán xu thế giá chứng khoán dựa trên nền tảng mã nguồn mở (Trang 35 - 64)

Không có một phương pháp chung nào để xác định cấu trúc phù hợp của mạng nơ ron cho từng bài toán. Việc thiết kế mạng nơ ron có thành công hay không phụ thuộc vào sự hiểu biết rõ ràng về vấn đề, có thể dựa vào thực nghiệm hoặc kinh nghiệm trong lĩnh vực đó.

Việc chọn lọc dữ liệu đầu vào và hiệu chỉnh trọng số là rất quan trọng trong mạng nơ ron. Nelson và Illingworth [9] đưa ra 8 bước trong việc thiết kế một mạng nơ ron như sau:

1. Chọn lựa các biến. 2. Thu thập dữ liệu 3. Tiền xử lý dữ liệu

4. Phân chia tập dữ liệu thành các tập: huấn luyện, kiểm tra, kiểm định. 5. Xác định cấu trúc mạng - - - - Số tầng ẩn Số các nơ ron ẩn Số các nơ ron đầu ra, Hàm chuyển

6. Xác định tiêu chuẩn đánh giá (hàm lỗi) 7. Huấn luyện mạng nơ ron

- - Tiêu chuẩn dừng Tốc độ “học” và tốc độ hội tụ 8. Triển khai 4.2.1. Chọn lựa các biến

Trong bất kỳ một bài toán nào cũng vậy chúng ta luôn phải xác định đầu vào (các biến) cho chúng. Trong bài toán dự báo chứng khoán này của tôi cũng thế, tôi cũng phải lựa chọn cho mình những biến đầu vào. Như tôi đã nói ở phần giới thiệu, có quá nhiều yếu tố ảnh hưởng đến tương lai của một mã chứng khoán, và chúng thường khá phức tạp, không có một quy luật củ thể nào. Khóa luận này tôi sẽ chỉ sử dụng giá chứng khoán tại các thời điểm trong quá khứ để dự đoán giá cho thời điểm mong muốn.

Như vậy dữ liệu của mô hình gồm một chuỗi các quan sát:

4.2.2. Thu thập dữ liệu

( )

Dữ liệu về giá chứng khoán trong bài toán được tôi thu thập bằng cách sử dụng một phần mềm mã nguồn mở là jstock. Phần mềm này có khả năng thu thập được rất nhiều chứng khóa của 24 nước trên thế giới. Chi tiết hơn về jstock tôi sẽ mô tả trong phần sau của khóa luận

4.2.3. Tiền xử lý dữ liệu

Dữ liệu thu thập được cần phải được xử lý cho phù hợp với đầu vào của mạng trước khi chúng được sử dụng. Theo như kiến thức mô tả về mạng noron ở chương 3, dư liệu sẽ gồm đầu vào và đầu ra thực sự. Trong bài toán này của tôi, đầu vào ở đây là k giá trị

chứng khoán trước đó (k được cho trước). Đầu ra là giá trị dự đoán cho thời điểm tương lai.

Rh(t+1) Rh(t) Rh(t-1) … Rh(t-k+1)

Với bài toán này, ta tổ chức dữ liệu theo chiều tiến của thời gian với cột đầu tiên là giá chứng khoán của thời điểm thứ k trước đó và các cột còn lại là giá trị chứng khoán tại các thời điểm tăng đần theo thời gian.

Bảng 4.1 – Tổ chức dữ liệu của mô hình

Như vậy với cách thức tổ chức này thì đầu ra chính là giá trị của cột cuối cùng.

4.2.4. Phân hoạch tập dữ liệu

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].

Rh(1) Rh(2) … Rh(k) Rh(k+1) Rh(2) Rh(3) …

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. Cả lý thuyết và kinh nghiệm làm việc đều chỉ ra rằng việc thiết kế mạng nơ ron quá 4 tầng (tầng đầu vào, tầng đầu ra và 2 tầng ẩn) sẽ không giúp cải thiện kết quả phân lớp.

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ì . 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 số nơ ron ở tầng ẩn có thể bằng: √ ×

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 đó:

Pj là giá trị được dự đoán cho mẫu thứ j

Tj là 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)

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)

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. ĐẾN KHI t = n

Hoặc có thể sử dụng cửa sổ trượt

(Sliding window) :

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

4. ĐẾN KHI t = n

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:

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 cung cấp một mô hình mạng đã được huấn luyện trong chương trình hoặc trong file cấ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

Một phần của tài liệu nguyên cứu và xây dựng hệ thống quản lý và dự đoán xu thế giá chứng khoán dựa trên nền tảng mã nguồn mở (Trang 35 - 64)

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

(64 trang)
w