2010-05-23 45 views
7

Tôi đang tạo một công cụ để dự đoán thời gian và chi phí của các dự án phần mềm dựa trên dữ liệu trong quá khứ. Công cụ này sử dụng mạng nơ-ron để thực hiện điều này và cho đến nay, kết quả là đầy hứa hẹn, nhưng tôi nghĩ tôi có thể thực hiện tối ưu hóa nhiều hơn chỉ bằng cách thay đổi các thuộc tính của mạng. Có vẻ như không có bất kỳ quy tắc hoặc thậm chí nhiều thực hành tốt nhất khi nói đến các thiết lập này vì vậy nếu bất cứ ai có kinh nghiệm có thể giúp tôi, tôi sẽ đánh giá cao nó.Cài đặt mạng Neural để đào tạo nhanh

Dữ liệu đầu vào được tạo thành từ một loạt các số nguyên có thể tăng lên cao như người dùng muốn đi, nhưng phần lớn sẽ dưới 100.000 tôi có thể nghĩ. Một số sẽ thấp tới 1. Chúng là các chi tiết như số lượng người trong dự án và chi phí của một dự án, cũng như chi tiết về các thực thể cơ sở dữ liệu và các ca sử dụng.

Có tổng cộng 10 đầu vào và 2 đầu ra (thời gian và chi phí). Tôi đang sử dụng Tuyên truyền đàn hồi để đào tạo mạng. Hiện tại nó có: 10 nút đầu vào, 1 lớp ẩn với 5 nút và 2 nút đầu ra. Tôi đang đào tạo để có được dưới một tỷ lệ lỗi 5%.

Thuật toán phải chạy trên máy chủ web vì vậy tôi đã đưa ra một biện pháp để dừng đào tạo khi có vẻ như nó không đi đâu cả. Điều này được đặt thành 10.000 lần lặp lại đào tạo.

Hiện tại, khi tôi cố gắng đào tạo nó với một số dữ liệu khác nhau một chút, nhưng trong giới hạn của những gì chúng tôi mong đợi người dùng đưa vào đó, phải mất một thời gian dài để đào tạo, đạt đến giới hạn 10.000 lần lặp lại và hơn nữa.

Đây là lần đầu tiên tôi sử dụng mạng thần kinh và tôi thực sự không biết điều gì sẽ xảy ra. Nếu bạn có thể cho tôi một số gợi ý về loại cài đặt nào tôi nên sử dụng cho mạng và cho giới hạn lặp lại, tôi sẽ đánh giá cao nó.

Cảm ơn bạn!

Trả lời

10

Trước hết, cảm ơn bạn đã cung cấp rất nhiều thông tin về mạng của mình! Dưới đây là một vài gợi ý sẽ cho bạn hình ảnh rõ ràng hơn.

  • Bạn cần chuẩn hóa đầu vào của mình. Nếu một nút nhìn thấy giá trị trung bình 100.000 và một nút khác chỉ 0,5, bạn sẽ không thấy tác động tương đương từ hai đầu vào. Đó là lý do tại sao bạn sẽ cần phải bình thường hóa chúng.
  • Chỉ 5 nơron ẩn cho 10 nút đầu vào? Tôi nhớ đọc ở đâu đó mà bạn cần ít nhất gấp đôi số lượng đầu vào; thử 20+ tế bào thần kinh ẩn. Điều này sẽ cung cấp cho mô hình mạng thần kinh của bạn khả năng phát triển một mô hình phức tạp hơn. Tuy nhiên, quá nhiều tế bào thần kinh và mạng của bạn sẽ chỉ ghi nhớ tập dữ liệu đào tạo.
  • Khả năng truyền lại đàn hồi tốt. Chỉ cần nhớ rằng có những thuật toán đào tạo khác ra khỏi đó như Levenberg-Marquardt.
  • Bạn có bao nhiêu bộ đào tạo? Các mạng thần kinh thường cần một tập dữ liệu lớn để có thể thực hiện các dự đoán hữu ích.
  • Cân nhắc thêm yếu tố động lượng vào thuật toán tăng tốc của bạn để tăng tốc mọi thứ nếu bạn chưa làm như vậy.
  • Đào tạo trực tuyến có xu hướng tốt hơn để đưa ra dự đoán tổng quát hơn là đào tạo theo đợt. Các trọng số cập nhật trước đây sau khi chạy mọi tập huấn luyện thông qua mạng, trong khi sau đó cập nhật mạng sau khi vượt qua mọi tập dữ liệu. Đó là cuộc gọi của bạn.
  • Dữ liệu của bạn có bị rời rạc hoặc liên tục không? Mạng thần kinh có xu hướng hoạt động tốt hơn với các chức năng liên tục 0 s và 1 s. Nếu nó là cũ, tôi khuyên bạn nên sử dụng chức năng kích hoạt sigmoid. Sự kết hợp giữa các chức năng kích hoạt tanhlinear cho các lớp ẩn và đầu ra có xu hướng thực hiện tốt công việc với dữ liệu thay đổi liên tục.
  • Bạn có cần lớp ẩn khác không? Điều này có thể hữu ích nếu mạng của bạn đang xử lý ánh xạ bề mặt đầu vào-đầu ra phức tạp.
+0

Cảm ơn tất cả thông tin! 1. Tôi nghĩ về việc chuẩn hóa các đầu vào, nhưng tôi không biết làm thế nào để làm điều đó khi một giá trị không có tối đa và một số giá trị có thể khác nhau rất nhiều. 2. Tôi đã thử với 20 nơ-ron ẩn và đã mất hơn 5 giờ thay vì vài giây cho một số dữ liệu. Có vẻ như trên 10 thì không tốt. 4. Số lượng bộ dữ liệu tùy thuộc vào số lượng người dùng đăng nhập. Chúng tôi đang sử dụng khoảng 5. 5. Chúng tôi đang sử dụng khung mạng thần kinh được gọi là Encog, tôi sẽ xem xét thay đổi động lượng, nhưng tôi không biết nếu có thể. – danpalmer

+0

6. Một lần nữa, tôi không biết làm thế nào khuôn khổ đề với đào tạo trực tuyến, tôi sẽ xem xét điều này. 7. Dữ liệu là tất cả liên tục và tôi đã thiết lập kích hoạt tuyến tính trên tất cả mọi thứ bởi vì tôi sẽ tưởng tượng đó là cách kết quả nên thay đổi với đầu ra. 8. Giống như điểm 2, tôi thấy rằng với 2 lớp nó đã đạt đến giới hạn áp đặt của tôi rất nhiều và mất nhiều thời gian để chạy. – danpalmer

+0

Lol. Tôi nên ở trên giường quá, Cao đẳng vào ngày mai. Tôi đã thêm một chút bình thường. Nó không lớn, nhưng tất cả các giá trị tập dữ liệu sẽ nằm trong khoảng từ 0 đến 1 và các dự đoán sẽ không cao hơn nhiều. Tôi đã tăng tốc độ đào tạo 18000% trên một điều. Tôi sẽ tiếp tục thử nghiệm và thử thực hiện một số biện pháp khác, nhưng bây giờ nó là một kết quả tuyệt vời. Cảm ơn bạn rất nhiều vì đã giúp đỡ của bạn! – danpalmer

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