Giới thiệu
Bước một
Tôi đã viết một mạng nơ ron backpropegating tiêu chuẩn, và để kiểm tra nó, tôi quyết định đặt nó lên bản đồ XOR.
Đó là mạng 2-2-1 (có chức năng kích hoạt tanh)
X1 M1
O1
X2 M2
B1 B2
Để thử nghiệm, tôi tự thiết lập nơ-ron giữa (M1) thành cổng AND và nơ-ron dưới (M2) thành cổng OR (cả đầu ra 1 nếu đúng và -1 nếu sai).
Bây giờ, tôi cũng tự thiết lập kết nối M1-O1 thành -.5, M2-O1 thành 1 và B2 là -.75
Vậy nếu M1 = 1 và M2 = 1, tổng là (-0,5 +1 -0,75 = -.25) tanh (0,25) = -0,24
nếu M1 = -1 và M2 = 1, tổng là ((-0,5) * (- 1) +1 -0,75 = .75) tanh (0,75) = 0,63
nếu M1 = -1 và M2 = -1, tổng là ((-0,5) * (- 1) -1 -0,75 = -1,25) tanh (1,25) = -0,8
Đây là một kết quả tương đối tốt cho "lần lặp đầu tiên".
Bước hai
Sau đó tôi đã tiến hành sửa đổi các trọng số này một chút, và sau đó huấn luyện chúng bằng thuật toán lan truyền lỗi (dựa trên độ dốc giảm dần). Trong giai đoạn này, tôi giữ nguyên các trọng số giữa các nơ ron đầu vào và giữa, và chỉ sửa đổi các trọng số giữa giữa (và sai lệch) và đầu ra.
Để thử nghiệm, tôi đặt các trọng số là và .5 .4 .3 (tương ứng cho M1, M2 và độ lệch)
Ở đây, tuy nhiên, tôi bắt đầu có vấn đề.
Câu hỏi của tôi
Tôi đặt tốc độ học tập của mình thành .2 và để chương trình lặp qua dữ liệu đào tạo (ABA ^ B) cho 10000 lần lặp trở lên.
Hầu hết thời gian, các trọng số hội tụ đến một kết quả tốt. Tuy nhiên, đôi khi, các trọng số đó hội tụ đến (giả sử) 1.5, 5.7 và .9 dẫn đến đầu ra +1 (chẵn) thành đầu vào {1, 1} (khi kết quả phải là -1).
Có thể đối với một ANN tương đối đơn giản có giải pháp để không hội tụ hoàn toàn hoặc có lỗi trong quá trình triển khai của tôi không?