2016-09-22 14 views
5

Tôi đang chơi với mạng nơron Tôi tự thực hiện: đó là một mạng chuyển tiếp tầm thường sử dụng RPROP làm thuật toán học là "dấu cộng" duy nhất so với thiết kế cơ bản.Mạng nơ-ron và chức năng XOR

Điểm số mạng giảm khi tôi kiểm tra MNIST hoặc khi tôi cố gắng nén hình ảnh, nhưng khi tôi cố gắng mô hình một cái gì đó đơn giản như hàm XOR, đôi khi trong quá trình học nó bị kẹt vào một minima cục bộ và bảng chân lý sau:

0 XOR 0 = 1.4598413968251171e-171 
1 XOR 0 = 0.9999999999999998 
0 XOR 1 = 0.9999999999999998 
1 XOR 1 = 0.5 

Thường kết quả sau khi đào tạo là chính xác, nhưng đôi khi 1 XOR 1 xuất phát 0,5 thay vì 1 như bình thường. Nó không thực sự luôn luôn xảy ra với XOR (1,1), nhưng với các đầu vào khác nữa. Là chức năng XOR "cổ điển" trong văn học tuyên truyền ngược, tôi tự hỏi điều gì đang xảy ra ở đây, đặc biệt là mạng của tôi dường như học các nhiệm vụ phức tạp hơn (nhưng có lẽ ít phi tuyến tính hơn).

Dự đoán hoang dã của tôi là đã xảy ra sự cố với các thành kiến.

Bất kỳ gợi ý nào?

Lưu ý 1: bố cục mạng bên trên là 2 | 3 | 1, nhưng không thay đổi nhiều khi tôi sử dụng nhiều đơn vị ẩn hơn, các nỗ lực học tập nhất định vẫn gặp sự cố.

Note 2: Tôi đưa việc thực hiện thành một Gist: https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d

+0

bạn đang sử dụng chức năng nào? bạn có thể chia sẻ không? – ACV

+0

Tôi chỉ cần thực hiện toàn bộ việc triển khai ở đây: https://gist.github.com/antirez/e45939b918868b91ec6fea1d1938db0d Đó là nội dung rất cơ bản. CHỈNH SỬA: chỉ cần thêm tệp tiêu đề. – antirez

+0

Trên thực tế thử nghiệm nhiều hơn tôi phát hiện ra rằng nó không chỉ XOR (1,1) mà không thành công, nhưng cũng có những người khác có thể sản lượng 0,5. – antirez

Trả lời

2

Vấn đề là do một lỗi trong việc thực hiện của tôi: đơn vị thiên vị của NN ngay trước đơn vị sản lượng đã không được tính toán một cách chính xác. Sau khi sửa mã, hàm XOR luôn được tính đúng.

Các vấn đề liên quan