Làm thế nào để gradient lan truyền trong một mạng thần kinh tái phát không được kiểm soát?


8

Tôi đang cố gắng hiểu làm thế nào rnn có thể được sử dụng để dự đoán trình tự bằng cách làm việc thông qua một ví dụ đơn giản. Đây là mạng đơn giản của tôi, bao gồm một đầu vào, một nơron ẩn và một đầu ra:

nhập mô tả hình ảnh ở đây

Tế bào thần kinh ẩn là hàm sigmoid và đầu ra được coi là đầu ra tuyến tính đơn giản. Vì vậy, tôi nghĩ rằng mạng hoạt động như sau: nếu đơn vị ẩn bắt đầu ở trạng thái svà chúng tôi đang xử lý một điểm dữ liệu là một chuỗi có độ dài , , thì:( x 1 , x 2 , x 3 )3(x1,x2,x3)

Tại thời điểm 1, giá trị dự đoán, , làp1

p1= =bạn×σ(wS+vx1)

Tại thời điểm 2, chúng tôi có

p2= =bạn×σ(w×σ(wS+vx1)+vx2)

Tại thời điểm 3, chúng tôi có

p3= =bạn×σ(w×σ(w×σ(wS+vx1)+vx2)+vx3)

Càng xa càng tốt?

Rnn "không được kiểm soát" trông như thế này:

nhập mô tả hình ảnh ở đây

Nếu chúng ta sử dụng một tổng số thuật ngữ lỗi vuông cho hàm mục tiêu, thì nó được định nghĩa như thế nào? Trên toàn bộ chuỗi? Trong trường hợp nào chúng ta sẽ có một cái gì đó như ?E= =(p1-x1)2+(p2-x2)2+(p3-x3)2

Có phải trọng số chỉ được cập nhật khi toàn bộ chuỗi được xem xét (trong trường hợp này là chuỗi 3 điểm)?

Đối với độ dốc liên quan đến các trọng số, chúng ta cần tính toán , tôi sẽ cố gắng thực hiện đơn giản bằng cách kiểm tra 3 phương trình cho ở trên, nếu mọi thứ khác có vẻ đúng. Bên cạnh việc thực hiện theo cách đó, điều này không giống như lan truyền ngược vanilla đối với tôi, bởi vì các tham số tương tự xuất hiện trong các lớp khác nhau của mạng. Làm thế nào để chúng ta điều chỉnh cho điều đó?dE/dw,dE/dv,dE/dbạnpTôi

Nếu bất cứ ai có thể giúp hướng dẫn tôi qua ví dụ đồ chơi này, tôi sẽ rất cảm kích.


Tôi nghĩ có gì đó không đúng với hàm lỗi, bạn có thể lấy làm thuật ngữ phần tử thứ hai và bạn phải so sánh nó với , trong trường hợp hoàn hảo, chúng phải bằng nhau. Trong chức năng lỗi của bạn, bạn chỉ cần so sánh đầu vào và đầu ra của mạng. p1x2
itdxer

Tôi nghĩ rằng đó có thể là trường hợp. Nhưng làm thế nào là lỗi được xác định cho phần tử dự đoán cuối cùng, ? p3
Fequish

Câu trả lời:


1

(x1,x2,x3)(t1,t2,t3)

t1= =x2, t2= =x3, t3= =x4

x4NN-1N-1

Nếu chúng ta sử dụng một tổng số thuật ngữ lỗi vuông cho hàm mục tiêu, thì nó được định nghĩa như thế nào?

bạnvw

E= =ΣtEt= =Σt(tt-pt)2

Có phải trọng số chỉ được cập nhật khi toàn bộ chuỗi được xem xét (trong trường hợp này là chuỗi 3 điểm)?

Có, nếu sử dụng tuyên truyền trở lại qua thời gian thì tôi tin như vậy.

E

  • zttz1= =wS+vx1
  • ytty1= =σ(wS+vx1))
  • y0= =S
  • δt= =Ezt

Sau đó, các dẫn xuất là:

Ebạn= =ytEv= =ΣtδtxtEw= =Σtδtyt-1

t[1, T]T

δt= =σ'(zt)(bạn+δt+1w)

tthtthEtE-Et

Ezt= =Etytytzt+(E-Et)zt+1zt+1ytytztEzt= =ytzt(Etyt+(E-Et)zt+1zt+1yt)Ezt= =σ'(zt)(bạn+(E-Et)zt+1w)δt= =Ezt= =σ'(zt)(bạn+δt+1w)

Bên cạnh việc thực hiện theo cách đó, điều này không giống như lan truyền ngược vanilla đối với tôi, bởi vì các tham số tương tự xuất hiện trong các lớp khác nhau của mạng. Làm thế nào để chúng ta điều chỉnh cho điều đó?

Phương pháp này được gọi là lan truyền ngược qua thời gian (BPTT), và tương tự như lan truyền ngược theo nghĩa là nó sử dụng ứng dụng lặp lại của quy tắc chuỗi.

Một ví dụ chi tiết hơn nhưng phức tạp hơn cho RNN có thể được tìm thấy trong Chương 3.2 của 'Ghi nhãn trình tự được giám sát với Mạng thần kinh tái phát' của Alex Graves - thực sự rất thú vị!


0

Lỗi mà bạn mô tả ở trên (sau khi sửa đổi mà tôi đã viết trong phần bình luận bên dưới câu hỏi) bạn chỉ có thể sử dụng như một lỗi dự đoán tổng thể, nhưng bạn không thể sử dụng nó trong quá trình học tập. Trên mỗi lần lặp, bạn đặt một giá trị đầu vào trong mạng và nhận một đầu ra. Khi bạn nhận được đầu ra, bạn phải kiểm tra kết quả mạng của mình và truyền lỗi đến tất cả các trọng số. Sau khi cập nhật, bạn sẽ đặt giá trị tiếp theo theo thứ tự và đưa ra dự đoán cho giá trị này, hơn là bạn cũng tuyên truyền lỗi và cứ thế.

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.