Tại sao các trọng số của mạng RNN / LSTM được chia sẻ theo thời gian?


20

Gần đây tôi đã trở nên quan tâm đến các LSTM và tôi đã rất ngạc nhiên khi biết rằng các trọng số được chia sẻ theo thời gian.

  • Tôi biết rằng nếu bạn chia sẻ các trọng số theo thời gian, thì chuỗi thời gian đầu vào của bạn có thể là một độ dài thay đổi.

  • Với trọng lượng được chia sẻ, bạn có ít thông số hơn để đào tạo.

Theo hiểu biết của tôi, lý do người ta sẽ chuyển sang LSTM so với một số phương pháp học tập khác là vì bạn tin rằng có một loại cấu trúc / sự phụ thuộc theo thời gian / tuần tự trong dữ liệu của bạn mà bạn muốn tìm hiểu. Nếu bạn hy sinh độ dài thay đổi 'sang trọng' và chấp nhận thời gian tính toán dài, thì RNN / LSTM không có trọng số chung (nghĩa là cứ mỗi bước bạn có trọng lượng khác nhau) sẽ hoạt động tốt hơn hay tôi thiếu thứ gì?

Câu trả lời:


17

Câu trả lời được chấp nhận tập trung vào khía cạnh thực tế của câu hỏi: nó sẽ đòi hỏi nhiều tài nguyên, nếu có các tham số không được chia sẻ. Tuy nhiên, quyết định chia sẻ các tham số trong RNN đã được đưa ra khi bất kỳ tính toán nghiêm trọng nào là một vấn đề (những năm 1980 theo wiki ), vì vậy tôi tin rằng đó không phải là đối số chính (mặc dù vẫn còn hiệu lực).

Có những lý do thuần túy để chia sẻ tham số:

  • Nó giúp trong việc áp dụng mô hình cho các ví dụ có độ dài khác nhau. Trong khi đọc một chuỗi, nếu mô hình RNN sử dụng các tham số khác nhau cho mỗi bước trong quá trình đào tạo, nó sẽ không khái quát hóa để không nhìn thấy các chuỗi có độ dài khác nhau.

  • Thông thường, các chuỗi hoạt động theo các quy tắc tương tự trên toàn chuỗi. Chẳng hạn, trong NLP:

                                                     "Vào thứ hai, tuyết rơi"

                                                     "Đó là tuyết vào thứ hai"

... Hai câu này có nghĩa giống nhau, mặc dù các chi tiết nằm trong các phần khác nhau của chuỗi. Chia sẻ tham số phản ánh thực tế rằng chúng tôi đang thực hiện cùng một nhiệm vụ ở mỗi bước, do đó, chúng tôi không phải học lại các quy tắc tại mỗi điểm trong câu.

LSTM không khác biệt theo nghĩa này, do đó nó cũng sử dụng các tham số được chia sẻ.


4
Đây là lý do quan trọng hơn nhiều so với câu trả lời được chấp nhận!
jlh

Tôi tin rằng câu trả lời của tôi đã bị nhầm lẫn ở đây. Tôi đã nói rằng sẽ cần nhiều tài nguyên tính toán hơn mà không cần chia sẻ trọng số, nhưng điều này không nhằm mục đích chính. Đặc biệt, tôi cũng đã viết rằng một mô hình không có trọng lượng được chia sẻ sẽ linh hoạt hơn rất nhiều và do đó dễ bị thừa hơn. Chia sẻ trọng lượng theo thời gian là một cách để vượt qua điều này. Như đã chỉ ra ở đây, chiến lược này tương ứng với 'trước' mà các quy tắc tương tự được áp dụng tại mỗi dấu thời gian. Vì vậy, hai câu trả lời không bất đồng.
dùng20160

12

Quan điểm 'trọng số được chia sẻ' xuất phát từ suy nghĩ về RNN khi các mạng tiếp theo không được kiểm soát theo thời gian. Nếu các trọng số khác nhau tại từng thời điểm, đây sẽ chỉ là một mạng tiếp liệu. Nhưng, tôi cho rằng một cách khác để suy nghĩ về nó sẽ là một RNN có trọng số là một hàm thay đổi theo thời gian (và điều đó có thể cho phép bạn giữ khả năng xử lý các chuỗi có độ dài thay đổi).

Nếu bạn đã làm điều này, số lượng tham số sẽ tăng tuyến tính với số bước thời gian. Đó sẽ là một vụ nổ lớn của các tham số cho các chuỗi có độ dài đáng kể. Nó thực sự sẽ làm cho mạng mạnh hơn, nếu bạn có tài nguyên tính toán khổng lồ để chạy nó và dữ liệu lớn để hạn chế nó. Đối với các chuỗi dài, nó có thể sẽ không thể tính toán được và bạn sẽ bị thừa. Trong thực tế, mọi người thường đi theo hướng ngược lại bằng cách chạy backpropagation cắt ngắn theo thời gian, điều này chỉ hủy kết nối mạng trong một khoảng thời gian ngắn, thay vì toàn bộ chuỗi. Điều này được thực hiện cho tính khả thi tính toán. Điều thú vị là, RNN vẫn có thể tìm hiểu cấu trúc thời gian vượt quá độ dài cắt ngắn, bởi vì các đơn vị định kỳ có thể lưu trữ bộ nhớ từ trước đó.


Nếu bạn không chia sẻ trọng lượng, bạn vẫn có trạng thái tế bào tồn tại theo thời gian. Một LSTM không được kiểm soát với trọng lượng thời gian duy nhất sẽ trông giống như một mạng lưới cấp dữ liệu trong đó mỗi "lớp" sẽ đại diện cho một lát cắt thời gian, nhưng mỗi "lớp" sẽ có thông tin trạng thái ô đến. Nó sẽ giống như một feedforward, nhưng với việc bổ sung trạng thái tế bào.
beeCwright

0

Tôi nghĩ vì các RNN với các đợt tái phát ẩn (và trọng số được chia sẻ thời gian) tương đương với Máy Turing phổ dụng, cho phép chúng có các trọng số khác nhau cho các bước thời gian khác nhau không làm cho chúng mạnh hơn.


Bạn có thể giải thích những gì bạn có nghĩa là "mạnh mẽ"? Tham chiếu đến Turing Machines cho thấy những gì bạn có trong đầu có thể hoàn toàn khác so với những gì có nghĩa trong thống kê.
whuber

Các RNN được sử dụng để xử lý chuỗi dữ liệu. Một trong những loại phổ biến nhất của chúng có một chuỗi là đầu vào và tạo ra một chuỗi khác là đầu ra (chẳng hạn như các hệ thống dịch ngôn ngữ). Tôi nói rằng họ mô hình RNN M1 mạnh hơn họ M2 mô hình RNN khác, nếu có vấn đề (chẳng hạn như ánh xạ một tập hợp các chuỗi đầu vào thành một chuỗi các chuỗi đầu ra) có một mô hình m1 trong M1 có thể giải quyết vấn đề này nhưng không có mô hình nào trong M2 có thể giải quyết vấn đề đó.
Hossein
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.