4. Cải thiện tính tổng quát hoá
4.2. Early Stopping
Trong kỹ thuật này, dữ liệu chia thành ba tập con. Tập thứ nhất là tập huấn luyện, dùng để tính gradient và cập nhật trọng số, ngưỡng của mạng. Tập thứ hai là tập phê chuẩn. Sai số trên tập này được giám sát trong suốt quá trình huấn luyện. Sai số phê chuẩn thường giảm trong giai đoạn đầu huấn luyện. Tuy nhiên khi mạng bắt đầu quá khít dữ liệu, sai số trên tập phê chuẩn thường bắt đầu tăng. Khi sai số phê chuẩn tăng sau một số vòng lặp, huấn luyện sẽ ngừng, trọng số và ngưỡng ở cực tiểu sai số phê chuẩn sẽ được trả lại.
Sai số tập kiểm tra không sử dụng trong quá trình huấn luyện, nhưng sử dụng để so sánh giữa các mô hình khác nhau.
Early Stopping có thể sử dụng trên bất kỳ hàm huấn luyện nào.
5. Kết luận
Backpropagation có thể huấn luyện mạng feedforward với nhiều hàm truyền khác nhau. Khái niệm backpropagation dựa trên quá trình xử lý bằng cách lấy đạo hàm của sai số mạng. Quá trình xử lý này sử dụng nhiều chiến lược tối ưu hóa khác nhau.
Cấu trúc mạng đa lớp không bị bài toán ép buộc hoàn toàn. Số ngõ vào mạng do bài toán qui định cũng như số nơron trong lớp ngõ ra. Tuy nhiên số lớp ẩn và kích thước của các lớp do người thiết kế chọn.
Mạng hai lớp có hàm truyền sigmoid/ linear có thể biểu diễn bất kỳ hàm nào nếu lớp sigmoid có đủ nơron.
Có nhiều thuật toán huấn luyện backpropagation khác nhau. Chúng khác nhau về cách tính toán, dung lượng bộ nhớ và không có thuật toán nào là tốt nhất đối với mọi trường hợp.
HÀM MÔ TẢ
Traingd Gradient descent cơ bản. Đáp ứng chậm, sử dụng trong chế độ incremental.
Traingdm Gradient descent có quán tính. Thường nhanh hơn traingd, có thể sử dụng trong chế độ nấc.
Traingdx Tốc độ học thay đổi. Huấn luyện nhanh hơn traingd nhưng chỉ có thể sử dụng trong chế độ batch.
Trainrp Resillient backpropagation. Đây là thuật toán huấn luyện chế độ batch đơn giản, có độ hội tụ nhanh và ít tốn bộ nhớ.
Traincgf Thuật toán conjugate gradient Fletcher – Reeves. Ít tốn bộ nhớ nhất trong các thuật toán conjugate gradient.
Traincgp Thuật toán conjugate gradient Polak –Ribiére. Yêu cầu bộ nhớ nhiều hơn traincgf, đối với một số bài toán có độ hội tụ nhanh.
Traincgb Thuật toán conjugate gradient Powell – Beale. Yêu cầu bộ nhớ lớn hơn traincgp, tốc độ hội tụ nhanh hơn.
Trainscg Thuật toán Scaled Conjugate Gradient. Đây là thuật toán conjugate gradient duy nhất không yêu cầu định hướng tìm.
mỗi vòng lặp, nhưng thường hội tụ sau một vài phép lặp.
Trainoss Phương pháp one step secant. Đây là phương pháp kết hợp giữa phương pháp conjugate gradient và phương pháp quasi – Newton.
Trainlm Thuật toán Levenberg - Marquardt. Thuật toán huấn luyện nhanh đối với mạng có kích thước vừa phải, có tính chất giảm bộ nhớ khi tập huấn luyện lớn.
Trainbr Thuật toán chuẩn tổng quát hóa Bayesian. Là giải thuật huấn luyện Levenberg - Marquardt được sửa đổi, tạo ra mạng tốt hơn, giảm sự phức tạp để mạng hội tụ.
CHƯƠNG 4: GIỚI THIỆU VỀ JOONE
1. Giới thiệu chung
Xuất phát từ ý tưởng xây dựng một framework để tạo ra một cách tiếp cận mới trong việc ứng dụng mạng nơron nhân tạo. Tác giả Paolo Marrone đã và đang phát triển JOONE - Java Object Oriented Neural Engine - một bộ máy thiết kế, đào tạo và ứng dụng mạng nơron nhân tạo xây dựng trên ngôn ngữ lập trình hướng đối tượng Java. Đây là một dự án phần mềm mở của cộng đồng mã nguồn mở SourceForce do Paolo Marrone đứng đầu.
JOONE là một bộ Java framework để xây dựng và chạy các ứng dụng trí tuệ nhân tạo dựa trên mạng nơron. Các ứng dụng của JOONE có thể được xây dựng trên một máy đơn, được đào tạo trên môi trường phân tán và chạy trên bất kỳ thiết bị nào (thiết bị cầm tay, máy tính để bàn...).
Tất cả các thành phần (components) của JOONE đều được thiết kế theo các tiêu chí: tính thống nhất, tính đa luồng (multithreading), tính tham số (parameterization), tính chia đoạn (serialization). Tất cả các tiêu chí này nhằm đảm bảo sự ổn định, sự mở rộng và cuối cùng đạt đến những đặc tính chuẩn của ngành trí tuệ nhân tạo.
Các ứng dụng trên JOONE được xây dựng dựa tren các thành phần (components) dễ dàng kết nối, thuận tiện sử dụng và ổn định. Các thành phần này có thể được phát triển có thể được phát triển lên và cũng có thể sử dụng chúng bởi các chuyên gia trí tuệ nhân tạo để thiết kế ra các mạng nơron thích ứng.
Trên thực tế vẫn tồn tại vấn đề lớn cần giải quyết đó là cần tìm ra một mạng nơron phù hợp nhất cho một vấn đề cụ thể mà không bị rơi vào các cực tiểu địa phương (local minima) và cuối cùng cấn tìm ra một kiến trúc mạng tốt nhất. JOONE có thể đơn giản hoá việc khởi tạo mạng lúc ban đầu và đào tạo một mạng được thiết kế theo phương thức có chỉ đạo hoặc không chỉ đạo.
JOONE còn là một bộ máy có khả năng dễ dàng đào tạo một cách phân tán và dễ dàng sử dụng từ xa bởi những người sử dụng. Đây là một ý tưởng lớn đang được các lập trình viên tham gia vào dự án nguồn mở này đang thực thi. Có thể lấy một ví dụ như một công ty bảo hiểm đang đào tạo một mạng nơron nhân tạo về vấn đề ước lượng rủi ro theo các trường hợp đã xãy ra, đồng thời nó có khả năng truy cập từ xa để lấy các thông tin dự báo từ các thiết bị không dây như điện thoại di động, PDA để sử dụng nó. Điều đó là hoàn toàn có thể khi công nghệ Java hoàn toàn hỗ trợ lập trình không dây (mobile computing and wireless computing) và JOONE được thiết kế trên