Hãy xem xét một nút trong mạng truyền lại (BP). Nó có nhiều đầu vào, và tạo ra một giá trị đầu ra. Chúng tôi muốn sử dụng sửa lỗi để đào tạo, do đó, nó cũng sẽ cập nhật trọng số dựa trên ước tính lỗi cho nút.
Mỗi nút có giá trị thiên vị, θ. Bạn có thể coi đây là trọng số đối với đầu vào nội bộ có giá trị 1.0 không đổi.
Kích hoạt là tổng kết các đầu vào có trọng số và giá trị thiên vị. Hãy tham khảo nút quan tâm của chúng tôi là j, các nút trong lớp trước với các giá trị của i và các nút trong lớp kế tiếp với các giá trị của k. Sự hoạt hóa của nút j của chúng tôi là sau đó:
ròng j = Σ i (o i × w ij) + θ j
Đó là, giá trị kích hoạt cho j là tổng của các sản phẩm đầu ra từ nút i và nút liên kết trọng số tương ứng i và j, cộng với giá trị thiên vị.
Sản lượng của nút j của chúng tôi là một chức năng chuyển giao các hoạt:
o j = f (net j)
f là thường hàm sigmoid.
f (net j) = 1/(1 + e -net j)
Các hàm sigmoid có một cách dễ dàng để xác định hàm đầu tiên:
f '(net j) = f (net j) × (1.0 - f (net j))
Dù hàm truyền chúng tôi sử dụng, chúng ta cần phải biết làm thế nào để tính phái sinh đầu tiên của mình. BP hoạt động theo độ dốc thông qua Chain Rule, vì vậy điều đó rất quan trọng. Phương trình trên sẽ khác với hàm truyền khác.
Cho đến nay, chúng tôi biết cách nhận các giá trị đầu vào, tính toán kích hoạt, tính toán đầu ra và tính toán đạo hàm đầu tiên của quá trình kích hoạt. Bây giờ chúng ta cần phải đối phó với các lỗi và điều chỉnh trọng lượng.
Giá trị được sử dụng để ước tính lỗi nút trong BP được gọi là δ. Δ cho một nút tỷ lệ với đạo hàm đầu tiên của kích hoạt của nút và một thuật ngữ lỗi mà nó nhận được. Có hai công thức cho thuật ngữ lỗi nhận được, một cho các nút đầu ra và một cho các nút ẩn.
quát,
δ = f '(net) × (lỗi nhận)
Đối với một nút đầu ra,
δ đầu ra = f' (net) × (t - o)
trong đó t là giá trị mong đợi ở nút đầu ra đó, và o là giá trị đầu ra thực tế của nút đầu ra đó.
Đối ẩn của chúng tôi nút j, nó là như thế này:
δ j = f '(net j) × Σ k (δ k × w jk)
δ cho nút j của chúng tôi, 2 j, là sản phẩm của đạo hàm đầu tiên của tran chức năng sfer cho thời gian kích hoạt tổng của các đồng bằng trong lớp tiếp theo (gần với đầu ra) nhân với mỗi giá trị của trọng lượng kết nối. Với điều đó trong tay, chúng ta có thể tính toán làm thế nào để điều chỉnh trọng lượng đi đến lớp trước của các nút (gần với đầu vào).
dw ij = L × o i × δ j
dw đây đại diện cho "sự thay đổi về trọng lượng", vì vậy những gì phương trình cho biết là sự thay đổi trong trọng lượng từ nút i đến nút j của chúng ta bằng sản phẩm của tham số học L (thường là giá trị tương tự cho tất cả các nút trong mạng), giá trị đầu ra của nút i và δ (cụm từ lỗi) cho nút j của chúng ta.
Điều chỉnh giá trị thiên vị tương tự như điều chỉnh trọng số.
dθ j = L × f (θ j) × δ j
dθ đây đại diện cho "sự thay đổi trong θ". Chúng ta phải áp dụng hàm truyền cho giá trị thiên vị θ j để lấy cụm từ như đầu ra từ nút. Nếu không, nó trông giống như phương trình khác.
Tôi nên lưu ý rằng việc tính toán các thay đổi trọng lượng phải được thực hiện trên toàn mạng và sau đó áp dụng các thay đổi sau khi tất cả những thay đổi đó được tính toán.
Đây là một câu hỏi khá rộng. Bạn có thể có may mắn hơn tại http://dsp.stackexchange.com. – mtrw
Bạn có thể tìm thấy một lời giải thích rất tốt, với hình ảnh, tại http://galaxy.agh.edu.pl/~vlsi/AI/backp_t_en/backprop.html –
Đó là một lời giải thích tuyệt vời Marc! Tôi không chắc chắn như vậy tôi hiểu bit bit mặc dù. Liệu df (e)/de có nghĩa là đạo hàm đối với toàn bộ tổng trọng số (e) hay chỉ là đầu vào của kết nối mà chúng ta đang cố cập nhật? Vì vậy, nói rằng nút có một chức năng kích hoạt tuyến tính, sẽ df (e)/de luôn luôn bằng 1 (f (e) = e -> df (e)/de = 1)? Hoặc nó sẽ luôn luôn bằng trọng lượng chúng tôi đang cập nhật (f (e) = w1x1 + w2x2 -> df (e)/dx1 = w1) –