Nguy cơ đặt tất cả các trọng số ban đầu về 0 trong Backpropagation


30

Tại sao nó nguy hiểm để khởi tạo trọng lượng với số không? Có ví dụ đơn giản nào chứng minh điều đó không?


Có vẻ như mạng XOR 2-1 cổ điển là ví dụ điển hình, nhưng tôi sẽ đánh giá cao một số lý luận lý thuyết.
dùng8078

1
Một câu trả lời chung chung, có thể hoặc không thể áp dụng ở đây, là bất cứ khi nào trọng số mới là bội số của trọng số cũ thì trọng số bằng 0 không thể thay đổi. Điều đó gây tử vong cho việc học.
Nick Cox

Đã có sẵn câu trả lời tốt cho lý do tại sao không khởi tạo trọng số về không. Liên kết sau sẽ đưa ra một số ánh sáng hơn về 'nên chọn trọng lượng ban đầu như thế nào?' staff.itee.uq.edu.au/janetw/cmc/ch chương /BackProp / index2.html Hy vọng nó sẽ giúp những người đọc khác.
doer_uvc

@NickCox các trọng số ở đây là bội số của lớp trọng số tiếp theo và lớp cuối cùng không phải là bội số của bất kỳ trọng số nào khác - vì vậy điều này không áp dụng được ở đây.
David Refaeli

Câu trả lời:


21

chỉnh sửa xem bình luận của alfa dưới đây. Tôi không phải là một chuyên gia về mạng lưới thần kinh, vì vậy tôi sẽ trì hoãn anh ta.

Sự hiểu biết của tôi khác với các câu trả lời khác đã được đăng ở đây.

Tôi khá chắc chắn rằng backpropagation liên quan đến việc thêm vào các trọng số hiện có, không nhân lên. Số tiền bạn thêm được quy định bởi quy tắc delta . Lưu ý rằng wij không xuất hiện ở phía bên phải của phương trình.

Hiểu biết của tôi là có ít nhất hai lý do chính đáng để không đặt trọng số ban đầu về 0:

  • Đầu tiên, mạng lưới thần kinh có xu hướng bị mắc kẹt trong cực tiểu cục bộ, do đó, nên cung cấp cho chúng nhiều giá trị bắt đầu khác nhau. Bạn không thể làm điều đó nếu tất cả bắt đầu từ 0.

  • Thứ hai, nếu các nơ-ron bắt đầu có cùng trọng lượng, thì tất cả các nơ-ron sẽ theo cùng một độ dốc và cuối cùng sẽ luôn làm điều tương tự như nhau.


6
"Số tiền bạn thêm được quy định bởi quy tắc delta. Lưu ý rằng wij không xuất hiện ở phía bên phải của phương trình." - Điều này chỉ đúng với các mạng thần kinh không có lớp ẩn! Nhưng bạn đã đề cập đến hai điểm khác, đó là những lập luận tốt chống lại việc khởi tạo ANN với trọng số bằng nhau .
alfa

1
Tôi nghĩ đó chủ yếu là lý do thứ hai - ví dụ: trong một mạng chuyển tiếp nguồn cấp dữ liệu cơ bản được kết nối đầy đủ, nếu mỗi lớp được khởi tạo với cùng trọng số, thì như bạn đề xuất, tất cả các nút đều theo cùng một đường dẫn và là dự phòng. Ấn tượng của tôi là hầu hết các mạng có nhiều hơn một số tính năng sẽ không đấu tranh với cực tiểu địa phương. Ngoài ra, khởi tạo ngẫu nhiên một mình không ngăn được mạng bị kẹt, nhưng việc lặp lại sử dụng các khởi tạo ngẫu nhiên khác nhau sẽ cho bạn biết liệu một lần lặp cụ thể có vấn đề cực tiểu cục bộ hay không (tôi nghĩ điều này được ngụ ý, nhưng không rõ ràng).
Tahlor

lý do thứ 2 là sai? open.wolframcloud.com/env/ trên
user3180

đầu vào khác nhau phá vỡ đối xứng trọng lượng
dùng3180

bạn thêm các đạo hàm và các đạo hàm là phép nhân được sử dụng thông qua quy tắc chuỗi.
David Refaeli

7

Nếu bạn nghĩ rằng các trọng số là linh mục, như trong một mạng Bayes, thì bạn đã loại trừ khả năng những đầu vào đó có thể ảnh hưởng đến hệ thống. Một cách giải thích khác là backpropagation xác định tập các trọng số giúp giảm thiểu chênh lệch bình phương có trọng số giữa mục tiêu và các giá trị quan sát (E). Sau đó, làm thế nào bất kỳ thuật toán giảm độ dốc có thể được định hướng theo cách xác định hướng của hệ thống? Bạn đang đặt mình vào một điểm yên của không gian tham số.


1
Đây là câu trả lời tốt nhất. Đó là một điểm yên ngựa. Các thuật toán tối ưu hóa dựa trên backpropagation thường sẽ dừng ngay lập tức. Để tính toán độ dốc, chúng tôi nhân các đồng bằng với trọng số và kết quả sẽ luôn bằng không.
alfa

Tôi nghĩ rằng đây là một câu trả lời tốt tại sao bất kỳ trọng lượng cụ thể nào không nên được khởi tạo ở mức 0. Nhưng đồng bằng có thể vẫn lan truyền trở lại - các trọng số trong lớp đầu ra không phụ thuộc vào các trọng số, vì vậy chúng tôi sẽ có các trọng số khác không ở đây sau lần cập nhật đầu tiên. Sau lần cập nhật tiếp theo, các trọng số khác không này sẽ được sử dụng với một delta để điều chỉnh các trọng số của lớp trước, v.v. Tôi nghĩ rằng vấn đề lớn hơn với việc khởi tạo một mạng có tất cả 0 là tất cả đều có cùng trọng lượng, trong mạng chuyển tiếp nguồn cấp dữ liệu cơ bản được kết nối đầy đủ của bạn, tương đương với việc có 1 nút trên mỗi lớp.
Tahlor

6

Trong mỗi lần lặp của thuật toán backpropagation của bạn, bạn sẽ cập nhật các trọng số bằng cách nhân trọng số hiện có với một delta được xác định bằng backpropagation. Nếu giá trị trọng lượng ban đầu là 0, nhân nó với bất kỳ giá trị nào cho delta sẽ không thay đổi trọng số, điều đó có nghĩa là mỗi lần lặp không ảnh hưởng đến các trọng số bạn đang cố gắng tối ưu hóa.


2
> bạn sẽ cập nhật các trọng số bằng cách nhân trọng số hiện có với một giá trị được xác định bằng cách truyền ngược - Tôi không nghĩ vậy, đó không chỉ là phép nhân.
dùng8078

1
Quan điểm chung của tôi là nếu các trọng số ban đầu bằng 0 thì chúng sẽ giữ ở mức 0 sau mỗi lần lặp lại của lan truyền ngược.
Idr

'Giá trị được xác định bởi backpropagation' là một delta (xem ví dụ trong bài viết gốc "Học biểu diễn bằng các lỗi truyền ngược", phương trình 7). Câu trả lời là phras kém nhưng nó không hoàn toàn sai.
alfa

1
Đây chỉ là một câu trả lời sai. Các trọng số sẽ thay đổi, nhưng chúng sẽ thay đổi cùng nhau. Điều này là xấu bởi vì tất cả các đơn vị ẩn sẽ giống hệt nhau trong suốt quá trình đào tạo và không có việc học có thể xảy ra.
Amin Sammara

Tôi nghĩ rằng điều này phụ thuộc vào chức năng kích hoạt. Nếu bạn chọn tanh, thì đầu ra cuối cùng sẽ là 0 và do đó, trọng số của lớp cuối cùng sẽ là 0 và tất cả các trọng số khác cũng vậy. Nhưng nếu bạn chọn một logit, đầu ra cuối cùng sẽ là và do đó độ dốc cuối cùng của trọng số sẽ là 0, và cuối cùng tất cả các trọng số khác cũng sẽ không bằng 0.θ(0)=0.5
David Refaeli

2

Đối với tôi, có vẻ như một lý do tại sao việc khởi tạo trọng số cho cùng một giá trị (không chỉ bằng 0) là vì lý do đó đối với bất kỳ lớp ẩn cụ thể nào, tất cả các nút trong lớp này sẽ có cùng một đầu vào và do đó sẽ giữ nguyên như nhau khác


1

Câu trả lời cho điều này không hoàn toàn là "Minima / Maxima cục bộ".

Khi bạn có nhiều hơn 1 Lớp ẩn và mọi trọng số đều bằng 0, cho dù thay đổi lớn / nhỏ trong Weight_i sẽ không gây ra thay đổi trong Đầu ra.

Điều này là do delta Weight_i sẽ được hấp thụ bởi Lớp ẩn tiếp theo.

Khi không có thay đổi trong Đầu ra, không có độ dốc và do đó không có hướng.

Điều này có chung đặc điểm với Minima / Maxima cục bộ, nhưng thực ra là do 0, khác biệt về mặt kỹ thuật


0

Vấn đề chính với việc khởi tạo tất cả các trọng số về 0 về mặt toán học dẫn đến các giá trị nơ-ron là 0 (đối với nhiều lớp) hoặc delta sẽ bằng không. Trong một trong những ý kiến ​​của @alfa trong các câu trả lời ở trên đã có một gợi ý được cung cấp, có đề cập rằng sản phẩm của trọng lượng và delta cần phải bằng không. Điều này về cơ bản có nghĩa là đối với độ dốc gốc, nó nằm trên đỉnh đồi ngay trên đỉnh của nó và nó không thể phá vỡ tính đối xứng. Sự ngẫu nhiên sẽ phá vỡ tính đối xứng này và người ta sẽ đạt đến mức tối thiểu cục bộ. Ngay cả khi chúng tôi làm phiền trọng lượng một chút, chúng tôi sẽ theo dõi. Tham khảo: Học từ dữ liệu Bài giảng 10.


0

Đó là một ý tưởng tồi vì 2 lý do:

  1. Nếu bạn đã kích hoạt sigmoid, hoặc bất cứ điều gì g(0)0

  2. tanhg(0)=0

Hãy chứng minh điều này (để đơn giản, tôi giả sử lớp đầu ra cuối cùng là 1 nơ ron):

tanh

LaLzL=WLaL1WL

dWL:=LWL=LaLaLzLzLWL
LaazLaazzWaL1dWLWL= =WL-αdWLnó sẽ di chuyển theo cùng một hướng. Và các lớp trước cũng vậy.

Điểm 2 có thể được chỉ ra từ thực tế là mộtL-1sẽ bằng không. Do đó của bạndWL vector sẽ đầy số không, và không thể học được.

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.