Tôi có phù hợp với LSTM của mình không nếu tôi huấn luyện nó thông qua phương pháp cửa sổ trượt? Tại sao mọi người dường như không sử dụng nó cho LSTM?
Đối với một ví dụ đơn giản, giả sử rằng chúng ta phải dự đoán chuỗi ký tự:
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Có tệ không (hoặc tốt hơn?) Nếu tôi tiếp tục đào tạo LSTM của mình với các xe buýt nhỏ sau:
A B C D E F G H I J K L M N, backprop, erase the cell
B C D E F G H I J K L M N O, backprop, erase the cell
.... and so on, shifting by 1 every time?
Trước đây, tôi luôn đào tạo nó như:
A B C D E F G H I J K L M N, backprop, erase the cell
O P Q R S T U V W X Y Z, backprop, erase the cell
Thay vì thay đổi bởi một, thay vào đó, tốt hơn là trượt cửa sổ bằng 2 mục, v.v.? Điều đó có nghĩa là gì (về độ chính xác / quá mức)?
Ngoài ra, nếu tôi thực hiện phương pháp cửa sổ trượt trong mạng Feed-Forward, nó có dẫn đến tình trạng thừa không? Tôi sẽ cho là có, bởi vì mạng được tiếp xúc với cùng một vùng thông tin trong một thời gian rất dài. Ví dụ, nó được tiếp xúc E F G H I J K
trong một thời gian dài.
Biên tập:
Xin nhớ rằng trạng thái tế bào bị xóa giữa các đợt huấn luyện, vì vậy LSTM sẽ có "búa đập đầu" vào những thời điểm này. Không thể nhớ những gì trước OPQRSTUVWXYZ. Điều này có nghĩa là LSTM không thể biết rằng "O" tuân theo "M".
Vì vậy, tôi nghĩ (vì vậy toàn bộ câu hỏi của tôi), tại sao không đưa ra lô trung gian (chồng chéo) ở giữa ... và trong trường hợp đó tại sao không sử dụng nhiều xe buýt nhỏ chồng chéo - với tôi điều này sẽ cung cấp một khóa đào tạo mượt mà hơn? Cuối cùng, điều đó có nghĩa là một cửa sổ trượt cho một LSTM.
Một số thông tin hữu ích tôi đã tìm thấy sau khi câu trả lời được chấp nhận:
Từ đầu tiên của bản dịch tiếng Anh có lẽ tương quan cao với từ đầu tiên của câu nguồn. Nhưng điều đó có nghĩa là bộ giải mã phải xem xét thông tin từ 50 bước trước và thông tin đó cần được mã hóa bằng cách nào đó trong vector. Mạng thần kinh tái phát được biết là có vấn đề đối phó với các phụ thuộc tầm xa như vậy. Về lý thuyết, các kiến trúc như LSTM sẽ có thể giải quyết vấn đề này, nhưng trong thực tế, các phụ thuộc tầm xa vẫn còn có vấn đề.
Ví dụ, các nhà nghiên cứu đã phát hiện ra rằng việc đảo ngược chuỗi nguồn (đưa nó ngược vào bộ mã hóa) tạo ra kết quả tốt hơn đáng kể vì nó rút ngắn đường dẫn từ bộ giải mã đến các phần có liên quan của bộ mã hóa. Tương tự, cho ăn một chuỗi đầu vào hai lần dường như cũng giúp mạng ghi nhớ mọi thứ tốt hơn. Ví dụ: nếu một ví dụ đào tạo là "John về nhà", bạn sẽ đưa "John về nhà John về nhà" với mạng như một đầu vào.
Chỉnh sửa sau khi chấp nhận câu trả lời:
Vài tháng sau, tôi có xu hướng sử dụng phương pháp cửa sổ trượt hơn, vì nó sử dụng dữ liệu tốt hơn. Nhưng trong trường hợp đó, có lẽ bạn không muốn đào tạo BCDEFGHIJKLMNO ngay sau ABCDEFGHIJKLMNO. Thay vào đó, hãy xáo trộn các ví dụ của bạn, để dần dần và thống nhất "nhập" tất cả thông tin vào LSTM của bạn. Cung cấp cho nó HIJKLMNOPQRSTU sau ABCDEFGHIJKLMNO, vv Điều đó liên quan trực tiếp đến quên lãng thảm khốc. Như mọi khi, hãy theo dõi Xác thực và Kiểm tra được thiết lập chặt chẽ và dừng ngay khi bạn thấy lỗi của mình tăng dần
Ngoài ra, vấn đề "búa vào đầu" có thể được cải thiện, bằng cách sử dụng Độ dốc tổng hợp. Xem lợi ích của nó ở đây: (câu trả lời được liên kết thảo luận về lợi ích của chuỗi dài) /datascience//a/32425/43077