2016-06-14 14 views
6

Tôi quan tâm đến việc tìm hiểu về các mạng thần kinh, và như một ví dụ, tôi đã thử với tập dữ liệu sau đây đã được bắt nguồn từ thực nghiệm.Làm cách nào để xác thực đầu ra được cung cấp bởi Mạng Neural Probabilistic trong MATLAB?

Tôi đang sử dụng vectơ đầu vào sau cho mạng nơron của mình;

X = [1 1; 1 2; 1 3; 1 4; 4 1; 4 2; 4 3; 4 4; 7 1;7 2; 7 3; 7 4]'; 
Tc = [1 1 2 3 1 1 2 2 1 1 2 2]; 

Tôi muốn chia dữ liệu đầu vào thành ba lớp, được mô tả bằng vector đầu vào Tc. Sau đó, tôi chuyển đổi các chỉ số lớp mục tiêu Tc thành vectơ T và giá trị spread mà tôi đang sử dụng là 1.

Sử dụng hàm newpnn trong MATLAB, tôi nhận được ranh giới quyết định cho ba lớp.

Tôi có nghi ngờ về việc xác thực nếu ranh giới quyết định là phù hợp. Tôi xác nhận đầu ra với một dữ liệu duy nhất X =[2;3.55] thuộc về lớp 2. Nó được mô tả bằng dấu chấm đen trong ô đầu ra. Màu xanh dương là loại 1. Màu vàng là vùng thuộc lớp 2. Màu đỏ là loại 3.

Như được thể hiện trong cốt truyện, dự đoán của mạng nơron được tìm thấy là lớp 2, trùng với lớp thực tế của bộ.

Vì vậy, điều đó có nghĩa là mạng nơron của tôi là chính xác và được xác thực không?

P.S. Tôi có một sự hiểu biết cơ bản về mạng nơron. Ngoài ra, tôi hiểu khái niệm về việc có nhiều ví dụ đào tạo và các bộ xác nhận hợp lệ hơn. Tôi đang mong đợi một câu trả lời phục vụ cho các chi tiết có sẵn, vì tôi không thể nhận được nhiều dữ liệu hơn bằng thực nghiệm.

enter image description here

+1

Vâng, với thông tin bạn đã cung cấp, câu trả lời có vẻ là "Có, NN của bạn đã được xác nhận, bạn đã làm một công việc tốt". Tuy nhiên, lưu ý rằng việc đào tạo và kiểm tra của bạn có vẻ giống hệt nhau (bằng cách xem 2 ô trên cùng), do đó, tất nhiên bạn sẽ có câu trả lời đúng. Hãy thử xác thực NN của bạn với các giá trị mà havent đã được sử dụng trong đào tạo. –

+0

@AnderBiguri cảm ơn câu trả lời của bạn. Mặc dù, ngay sau khi đăng câu hỏi này, tôi cảm thấy khá ngu ngốc khi hỏi nó. Tôi biết dữ liệu đào tạo là rất ít cho bất kỳ loại đào tạo kết luận.Tôi đã sử dụng phép nội suy khối để có được nhiều điểm dữ liệu hơn (120). Tôi giữ 100 để đào tạo mạng và 20 để thử nghiệm. Bây giờ dự đoán đã trở nên khá tuyệt vời. Tỷ lệ chính xác là khoảng 98%. Tôi đoán, câu hỏi này đã được giải quyết, nhưng vì tôi đã tuyên bố tiền thưởng cho câu hỏi này, tôi không thể xóa câu hỏi này. Cảm ơn một lần nữa cho câu trả lời của bạn. – rcty

Trả lời

1

Hmm, tôi nghĩ rằng bạn không hiểu cũng đã xác nhận là trong nhiệm kỳ của mạng lưới thần kinh. Bạn không thể kiểm tra mạng của bạn chỉ với một mẫu. Vì vậy, tôi sẽ cố gắng dạy cho bạn những gì tôi biết về việc xác nhận các mạng thần kinh. Đó là một quá trình thống kê lâu dài liên quan đến một số phản xạ về "dữ liệu thế giới thực", "hành vi mong đợi", ... Bạn không thể xác thực điều gì đó giống như 10-20 dữ liệu và một điểm xác thực.

Nói chung, khi bạn dạy một mạng lưới thần kinh bạn nên có 3 bộ:

  • Người đầu tiên, công tác đào tạo thiết là đầu vào của thuật toán được sử dụng để thiết lập các trọng của các mạng khác nhau. Nó chỉ là một loại dữ liệu bắt buộc được sử dụng để chạy thuật toán.
  • Tập thứ hai, xác nhận thiết lập được sử dụng để chọn đúng thuật toán cho vấn đề của bạn và giảm overfitting. Nó so sánh hiệu suất của những cái khác nhau và để chọn tốt nhất (cái được trang bị sẽ không có hiệu suất tốt chút nào).
  • Bộ kiểm tra : đó là giai đoạn cuối cùng. Sau khi đã chọn thuật toán và tham số của nó, bạn sử dụng một tập dữ liệu mới (lấy từ thế giới thực) và bạn kiểm tra xem nó có thực hiện những gì nó là phải làm (nó giống như một thử nghiệm kết hợp).

(nguồn: https://stats.stackexchange.com/questions/19048/what-is-the-difference-between-test-set-and-validation-set)

Ví dụ, chúng tôi đang xây dựng một thuật toán sử dụng để kiểm tra xem một người "có một số cơ hội để trở nên giàu có". Đây là cách bạn sẽ thực hiện và hợp lệ mạng thần kinh của bạn.

  1. Đầu tiên, chúng tôi hỏi 10 000 người nếu họ giàu hay không và chúng tôi kiểm tra một số thông số (tuổi, địa điểm, ...). Nó làm cho "tập dữ liệu gốc".
  2. Chúng tôi chia danh sách 10 000 người thành 3 bộ (6000 2000 và 2000): bộ đào tạo, bộ xác thực và bộ kiểm tra (lưu ý: tỷ lệ có thể thay đổi tùy theo quy trình xác thực).
  3. Chúng tôi áp dụng bộ học tập (6000 dữ liệu đầu tiên) và áp dụng cho các mạng nơron khác nhau để dạy chúng (hãy đặt tên cho chúng là A, B, C và D)
  4. Chúng tôi lấy bộ xác thực (2000 dữ liệu tiếp theo) để kiểm tra hiệu suất của bốn mạng. Đây là cách nó tránh overfitting. Giả sử rằng mạng A không phải là mạng, nó chỉ là một máy ghi âm. Nó ghi lại các dữ liệu khác nhau và các lớp của họ nhưng không thể dự đoán được gì cả. Đó là "thuật toán giả" sẽ cho kết quả 100% nếu chúng ta thực hiện kiểm tra xác thực với 6000 người đầu tiên nhưng sẽ hoàn toàn thất bại trong bài kiểm tra đó. Vì vậy, sau thử nghiệm đó, bạn có thể chọn "thuật toán tốt nhất". Hãy chọn C.
  5. Bây giờ, chúng tôi chạy C với phần còn lại của dữ liệu (bộ kiểm tra hoặc dữ liệu mới nếu có thể, nó luôn tốt hơn). Nếu chúng ta thấy rằng C có hành vi rất lạ và không thể đoán trước (có thể do một số lỗi của con người chẳng hạn như tạo bộ không thực sự độc lập hoặc vẫn chính xác, ví dụ nếu dữ liệu từ năm 1996), chúng tôi chọn một thuật toán khác hoặc chúng tôi cố gắng kiểm tra vấn đề với dữ liệu hoặc thuật toán là gì.

Đó là cách bạn có thể tạo một mạng thần kinh đáng tin cậy (đừng quên, hai vấn đề chính không kiểm tra kết quả cuối cùng và quá mức).

Khi ghi đè là khái niệm chính. Tôi sẽ cố gắng xác định nó một chút và đưa ra một ví dụ. Overfitting đang tạo một thuật toán có khả năng xây dựng các xấp xỉ rất gần nhưng không thể dự đoán được bất cứ thứ gì (cái mà tôi gọi là "thuật toán giả").

Hãy so sánh ví dụ như một nội suy tuyến tính và một đa thức (mức độ 1000000, mức độ rất cao) một. Thuật toán đa thức của chúng tôi có thể sẽ phù hợp với dữ liệu rất tốt (việc trang bị quá mức phù hợp chính xác với tất cả dữ liệu của chúng tôi). Nhưng, nó sẽ không thể dự đoán được gì cả. Ví dụ dưới đây, nếu chúng ta có trong bộ xác nhận của chúng tôi (trích xuất từ ​​dữ liệu thế giới thực) một điểm trong (2, -2) và (-1,2), chúng ta có thể giả định rằng nội suy đa thức của chúng ta được ghi rõ ràng rõ ràng. bởi vì nó gợi ý các giá trị như (-1,10) và (2,20). Tuyến tính phải gần hơn.

enter image description here

Tôi hy vọng nó sẽ giúp ích. (lưu ý rằng tôi không phải là chuyên gia trong miền đó nhưng tôi đã cố gắng đưa ra một câu trả lời dễ đọc và đơn giản, vì vậy nếu có bất kỳ điều gì sai, hãy bình luận :))

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