48

Có thể ai đó vui lòng giải thích cho tôi cách cập nhật độ lệch trong suốt quá trình truyền lại không?Làm thế nào để cập nhật sự thiên vị trong mạng ngược dòng thần kinh?

Tôi đã đọc khá nhiều sách nhưng không thể tìm thấy bản cập nhật thiên vị!

Tôi hiểu rằng sự sai lệch là đầu vào phụ của 1 với trọng lượng gắn liền với nó (đối với mỗi tế bào thần kinh). Phải có một công thức.

Cảm ơn bạn,

@msw

thú vị nhất. Cảm ơn bạn, tôi nghĩ rằng hai điểm tốt là: 1. "Thuộc tính" xấp xỉ phổ quát "của perceptrons đa lớp với các chức năng kích hoạt lớp ẩn thường được sử dụng nhất không giữ nếu bạn bỏ qua các điều khoản thiên vị. Nhưng Hornik (1993) cho thấy rằng điều kiện đủ cho thuộc tính xấp xỉ phổ quát mà không thiên vị là không có đạo hàm nào của hàm kích hoạt biến mất tại nguồn gốc, ngụ ý rằng với các hàm kích hoạt sigmoid thông thường, có thể sử dụng cụm lệch thiên vị cố định không thay vì độ lệch có thể đào tạo. " 2. Các thuật ngữ thiên vị có thể được học giống như trọng lượng khác." Vì vậy, tôi sẽ thể thêm vào một 'trọng lượng không đổi' hoặc đào tạo trọng lượng này giống như tất cả những người khác sử dụng gradient descent.

Tôi hiểu phải không?

+4

Đó là một câu hỏi lớn với câu trả lời đáng tiếc lớn. Đây là một điểm khởi đầu tốt: ftp://ftp.sas.com/pub/neural/FAQ2.html#A_bias – msw

+1

Đào tạo trọng lượng này giống như tất cả những người khác sử dụng gradient gốc – pberkes

+0

Thuật ngữ kỳ hạn là bắt buộc, giá trị thiên vị cho phép bạn thay đổi chức năng kích hoạt (chức năng sigmoid) ở bên trái hoặc bên phải. Các trọng số được sử dụng trong thuật ngữ thiên vị sẽ được thay đổi trong thuật toán tuyên truyền trở lại và sẽ được tối ưu hóa bằng cách sử dụng gradient descent hoặc kỹ thuật tối ưu hóa nâng cao như hàm fminunc trong Octave/Matlab. –

Trả lời

48

Tiếp theo các ký hiệu của Rojas 1996, chapter 7, lan truyền ngược tính hàm riêng của hàm lỗi E (chi phí aka, aka mất)

∂E/∂w[i,j] = delta[j] * o[i] 

nơi w[i,j] là trọng lượng của các kết nối giữa các nơron ij, j là một lớp cao hơn trong mạng hơn io[i] là đầu ra (kích hoạt) của i (trong trường hợp "lớp đầu vào", đó chỉ là giá trị của đối tượng địa lý i trong mẫu đào tạo đang được xem xét). Làm thế nào để xác định delta được đưa ra trong bất kỳ sách giáo khoa và phụ thuộc vào chức năng kích hoạt, vì vậy tôi sẽ không lặp lại nó ở đây.

Các giá trị này sau đó có thể được sử dụng trong các bản cập nhật trọng lượng, ví dụ:

// update rule for vanilla online gradient descent 
w[i,j] -= gamma * o[i] * delta[j] 

trong đó gamma là tỷ lệ học tập.

Quy tắc đối với trọng số thiên vị rất giống nhau, ngoại trừ việc không có đầu vào từ lớp trước đó. Thay vào đó, thiên vị là (theo lý thuyết) do đầu vào từ một tế bào thần kinh với một kích hoạt cố định 1. Vì vậy, nguyên tắc cập nhật trọng thiên vị là

bias[j] -= gamma_bias * 1 * delta[j] 

nơi bias[j] là trọng lượng của thiên vị trên neuron j, các nhân với 1 rõ ràng có thể được bỏ qua và gamma_bias có thể được đặt thành gamma hoặc với một giá trị khác. Nếu tôi nhớ lại chính xác, các giá trị thấp hơn được ưu tiên, mặc dù tôi không chắc chắn về lý giải về lý thuyết đó.

+0

Mọi người có bao gồm độ lệch ('1') ở lớp' l' khi kích hoạt lớp này không? Ý tôi là nếu có, thì cập nhật trọng số trong lớp 'l', bao gồm trọng số cho độ lệch của nó có thể được viết thành một công thức đơn:' w (l) - = gamma * chấm (delta (l + 1), o (l)) ', tôi có đúng không? – Jason

1

Số tiền bạn thay đổi mỗi trọng số và độ lệch riêng lẻ sẽ là đạo hàm từng phần của hàm chi phí của bạn liên quan đến từng trọng lượng riêng lẻ và từng mức độ lệch riêng lẻ.

∂C/∂(index of bias in network) 

Kể từ hàm chi phí của bạn có thể không rõ ràng phụ thuộc vào khối lượng và giá trị cá nhân (Chi phí có thể bằng (sản lượng mạng - đầu ra dự kiến)^2, ví dụ), bạn sẽ cần phải liên hệ các đạo hàm riêng của mỗi trọng lượng và thiên vị đối với một cái gì đó bạn biết, tức là giá trị kích hoạt (đầu ra) của tế bào thần kinh. Dưới đây là một hướng dẫn tuyệt vời để làm điều này:

https://medium.com/@erikhallstrm/backpropagation-from-the-beginning-77356edf427d

Hướng dẫn này bang thế nào để làm những điều rõ ràng, nhưng đôi khi có thể thiếu trên giải thích. Tôi thấy nó rất hữu ích để đọc chương 1 và 2 của cuốn sách này như tôi đọc hướng dẫn liên kết ở trên:

http://neuralnetworksanddeeplearning.com/chap1.html (cung cấp nền cần thiết cho câu trả lời cho câu hỏi của bạn)

http://neuralnetworksanddeeplearning.com/chap2.html (trả lời câu hỏi của bạn)

Về cơ bản, các thành kiến ​​được cập nhật theo cùng cách mà trọng số được cập nhật: thay đổi được xác định dựa trên độ dốc của hàm chi phí tại điểm đa chiều.

Hãy suy nghĩ về sự cố mạng của bạn đang cố gắng giải quyết như là cảnh quan của các ngọn đồi và thung lũng đa chiều (gradient). Cảnh quan này là một đại diện đồ họa về cách thay đổi chi phí của bạn với thay đổi trọng số và thành kiến. Mục tiêu của mạng thần kinh là đạt tới điểm thấp nhất trong cảnh quan này, qua đó tìm ra chi phí nhỏ nhất và giảm thiểu lỗi. Nếu bạn tưởng tượng mạng của bạn là một khách du lịch cố gắng đạt đến đáy của các gradient này (tức là Gradient Descent), thì số tiền bạn sẽ thay đổi mỗi trọng số (và độ lệch) có liên quan đến độ dốc của đường thẳng (gradient của hàm) rằng khách du lịch hiện đang đi xuống. Vị trí chính xác của khách du lịch được đưa ra bởi một điểm tọa độ đa chiều (weight1, weight2, weight3, ... weight_n), nơi thiên vị có thể được coi là một loại trọng lượng khác. Suy nghĩ về trọng số/thành kiến ​​của mạng khi các biến cho hàm chi phí của mạng làm rõ rằng ∂C/∂ (chỉ số thiên vị trong mạng) phải được sử dụng.

Các vấn đề liên quan