Tôi đang cố gắng tìm hiểu ứng dụng RNNs cấp cao để ghi nhãn theo trình tự thông qua (trong số những người khác) bài viết năm 2005 của Graves về phân loại âm vị.
Để tóm tắt vấn đề: Chúng tôi có một bộ huấn luyện lớn bao gồm các tệp âm thanh (đầu vào) của các câu đơn và thời gian bắt đầu được gắn nhãn chuyên gia, thời gian dừng và nhãn cho các âm vị riêng lẻ (bao gồm một số âm vị "đặc biệt" như im lặng, sao cho mỗi mẫu trong mỗi tệp âm thanh được gắn nhãn bằng một số ký hiệu âm vị.)
Lực đẩy của bài báo là áp dụng RNN với các ô nhớ LSTM trong lớp ẩn cho vấn đề này. (Anh ấy áp dụng một số biến thể và một số kỹ thuật khác để so sánh. Tôi hiện tại CHỈ quan tâm đến LSTM đơn hướng, để giữ cho mọi thứ đơn giản.)
Tôi tin rằng tôi hiểu kiến trúc của mạng: Một lớp đầu vào tương ứng với các cửa sổ 10 ms của các tệp âm thanh, được xử lý trước theo cách tiêu chuẩn để âm thanh hoạt động; một lớp ẩn của các tế bào LSTM và một lớp đầu ra với mã hóa một lần nóng của tất cả 61 biểu tượng điện thoại có thể.
Tôi tin rằng tôi hiểu các phương trình (phức tạp nhưng đơn giản) của chuyển tiếp và chuyển tiếp qua các đơn vị LSTM. Họ chỉ là tính toán và quy tắc chuỗi.
Điều tôi không hiểu, sau khi đọc bài báo này và một vài lần tương tự, là khi chính xác áp dụng thuật toán backpropagation và khi nào chính xác để cập nhật các trọng số khác nhau trong các nơ-ron.
Hai phương thức hợp lý tồn tại:
1) Backprop-khôn ngoan và cập nhật khung
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
- Apply backpropagation to this frame's error
- Update weights accordingly
At end of sentence, reset memory
load another sentence and continue.
hoặc là,
2) Backprop-khôn ngoan và cập nhật:
Load a sentence.
Divide into frames/timesteps.
For each frame:
- Apply forward step
- Determine error function
At end of sentence:
- Apply backprop to average of sentence error function
- Update weights accordingly
- Reset memory
Load another sentence and continue.
Lưu ý rằng đây là câu hỏi chung về đào tạo RNN bằng cách sử dụng giấy Graves làm ví dụ nhọn (và có liên quan đến cá nhân): Khi đào tạo RNN theo trình tự, liệu backprop có được áp dụng ở mọi dấu thời gian không? Là trọng lượng điều chỉnh mỗi dấu thời gian? Hoặc, trong một sự tương tự lỏng lẻo với đào tạo hàng loạt về các kiến trúc chuyển tiếp thức ăn nghiêm ngặt, các lỗi được tích lũy và tính trung bình trên một chuỗi cụ thể trước khi áp dụng cập nhật backprop và weight?
Hay tôi còn bối rối hơn tôi nghĩ?