Trước tiên, tôi nhận ra lỗi cho lớp chập bên dưới để đơn giản cho mảng một chiều (đầu vào) có thể dễ dàng được chuyển sang đa chiều sau đó:
Chúng tôi giả sử ở đây rằng có độ dài là các đầu vào của đối thứ . lớp, là kích thước hạt nhân của trọng số biểu thị mỗi trọng lượng theo và đầu ra là .
Do đó chúng ta có thể viết (lưu ý tổng từ 0):
trong đó và chức năng kích hoạt (ví dụ sigmoidal). Với điều này, bây giờ chúng ta có thể xem xét một số hàm lỗi và hàm lỗi tại lớp chập (lớp trước của bạn) được cung cấp bởi N l - 1 m w w i x l x l i = m - 1 Σ một = 0 w một y l - 1 một + i y l i = f ( x l i ) f E ∂ E / ∂ y l i ∂ Eyl - 1Nl - 1mwwTôixtôi
xtôiTôi= ∑a = 0m - 1wmộtyl - 1a + i
ytôiTôi= f( xtôiTôi)fE∂E/ ∂ytôiTôi. Bây giờ chúng tôi muốn tìm ra sự phụ thuộc của lỗi trong một trọng số trong (các) lớp trước:
trong đó chúng ta có tổng trên tất cả các biểu thức trong đó xảy ra, đó là . Cũng lưu ý rằng chúng tôi biết thuật ngữ cuối cùng phát sinh từ thực tế là mà bạn có thể thấy từ phương trình đầu tiên.
Để tính toán độ dốc, chúng ta cần biết thuật ngữ đầu tiên, có thể được tính bằng:
∂E∂wmột= ∑a = 0N- m∂E∂xtôiTôi∂xtôiTôi∂wmột= ∑a = 0N- m∂E∂wmộtyl - 1tôi + một
wmộtN- m∂xtôiTôi∂wmột= yl - 1tôi + một∂E∂xtôiTôi= ∂E∂ytôiTôi∂ytôiTôi∂xtôiTôi= ∂E∂ytôiTôi∂∂xtôiTôif( xtôiTôi)
trong đó một lần nữa thuật ngữ đầu tiên là lỗi trong lớp trước và chức năng kích hoạt phi tuyến.
f
Có tất cả các thực thể cần thiết, giờ đây chúng ta có thể tính toán lỗi và truyền lại hiệu quả cho lớp quý giá:
Lưu ý rằng bước cuối cùng có thể được hiểu dễ dàng khi viết xuống -s wrt -s. Việc đề cập đến một maxtrix trọng lượng chuyển đổi ( ).
δl - 1một= ∂E∂yl - 1Tôi= ∑a = 0m - 1∂E∂xtôitôi - một∂xtôitôi - một∂yl - 1Tôi= ∑a = 0m - 1∂E∂xtôitôi - mộtwfl i p p e dmột
xtôiTôiyl - 1Tôifl i p p e dT
Do đó, bạn chỉ có thể tính toán lỗi trong lớp tiếp theo bằng (bây giờ trong ký hiệu vectơ):
δtôi= ( wtôi)Tδl + 1f'( xtôi)
mà trở thành một lớp xoắn và lấy mẫu con:
nơi hoạt động tuyên truyền lỗi thông qua lớp gộp tối đa.
δtôi= u p s a m p l e ( ( wtôi)Tδl + 1) f'( xtôi)
u p là một m p l e
Xin vui lòng thêm hoặc sửa chữa tôi!
Để tham khảo xem:
http://ufldl.stanford.edu/tutorial/supervised/ConvolutionalNeuralNetwork/
http://andrew.gibiansky.com/blog/machine-learning/convolutional-neural-networks/
và để triển khai C ++ (không cần cài đặt):
https://github.com/nyanp/tiny-cnn#supported-networks