Vấn đề ReLU sắp chết trong các mạng nơ-ron là gì?


119

Đề cập đến các ghi chú khóa học Stanford về Mạng thần kinh chuyển đổi để nhận dạng trực quan , một đoạn văn nói:

"Thật không may, các đơn vị ReLU có thể dễ vỡ trong quá trình luyện tập và có thể" chết ". Ví dụ, một gradient lớn chảy qua nơron ReLU có thể khiến các trọng số cập nhật theo cách mà nơ ron sẽ không bao giờ kích hoạt lại bất kỳ điểm dữ liệu nào nữa. xảy ra, sau đó độ dốc chảy qua đơn vị sẽ mãi mãi bằng 0 kể từ thời điểm đó. Nghĩa là, các đơn vị ReLU có thể chết không hồi phục trong quá trình đào tạo vì chúng có thể bị loại bỏ đa tạp dữ liệu. Ví dụ, bạn có thể thấy rằng có đến 40 % mạng của bạn có thể bị "chết" (tức là các nơ-ron không bao giờ kích hoạt trên toàn bộ tập dữ liệu đào tạo) nếu tốc độ học tập được đặt quá cao. Với một cài đặt thích hợp của tốc độ học, điều này ít xảy ra hơn. "

Cái chết của tế bào thần kinh ở đây có nghĩa là gì?

Bạn có thể vui lòng cung cấp một lời giải thích trực quan bằng các thuật ngữ đơn giản hơn.


2
Ai đó có thể tìm thấy một tài liệu tham khảo cho một số bài báo khoa học về "tế bào thần kinh chết"? Vì đây là kết quả đầu tiên trên các nỗ lực của google, sẽ thật tuyệt nếu câu hỏi này được chỉnh sửa với một tham chiếu.
Marek idek

chúng ta có thể ngăn chặn sự thiên vị bằng cách thường xuyên hóa để giải quyết vấn đề này?
Len

3
Dudes Tôi đã xoay sở để hồi sinh tế bào thần kinh Relu đã chết bằng cách đưa ra các giá trị ngẫu nhiên (phân phối bình thường) mới ở mỗi epoch cho trọng số <= 0. Tôi chỉ sử dụng phương pháp này cùng với trọng lượng đóng băng ở các độ sâu khác nhau khi việc đào tạo tiếp tục đến các kỷ nguyên cao hơn (I ' m không chắc đây có phải là cái mà chúng ta gọi là chuyển pha hay không) Bây giờ có thể sử dụng tỷ lệ học cao hơn, mang lại độ chính xác tổng thể tốt hơn (chỉ được thử nghiệm ở hồi quy tuyến tính). Nó thực sự dễ thực hiện.
boli

1
@boli, bạn có thể chia sẻ cho bạn thực hiện ở đây?
anu

Câu trả lời:


121

ReLU "chết" luôn xuất ra cùng một giá trị (bằng 0 khi nó xảy ra, nhưng điều đó không quan trọng) cho bất kỳ đầu vào nào. Có lẽ điều này được đưa ra bằng cách học một thuật ngữ thiên vị tiêu cực lớn cho trọng lượng của nó.

Đổi lại, điều đó có nghĩa là nó không có vai trò trong việc phân biệt giữa các đầu vào. Để phân loại, bạn có thể hình dung đây là mặt phẳng quyết định bên ngoài tất cả dữ liệu đầu vào có thể.

Khi ReLU kết thúc ở trạng thái này, không có khả năng phục hồi, vì độ dốc chức năng ở 0 cũng là 0, vì vậy việc học tập giảm dần độ dốc sẽ không làm thay đổi trọng số. Các ReLU "rò rỉ" với độ dốc dương nhỏ cho các đầu vào âm ( y=0.01xkhi x <0 nói) là một nỗ lực để giải quyết vấn đề này và tạo cơ hội phục hồi.

Các tế bào thần kinh sigmoid và tanh có thể gặp phải các vấn đề tương tự khi giá trị của chúng bão hòa, nhưng luôn có ít nhất một độ dốc nhỏ cho phép chúng phục hồi trong thời gian dài.


7
Nhận xét tốt và cũng đáng đề cập đến Đơn vị tuyến tính theo cấp số nhân (ELU) có thể giúp giải quyết vấn đề theo cách tốt hơn: arxiv.org/abs/1511,07289
padura

14
@alex: Vì thiên vị rất quan trọng đối với độ chính xác. Loại bỏ sự thiên vị cũng giống như nói rằng tất cả các mặt phẳng quyết định phải đi qua nguồn gốc - với một vài ngoại lệ, đây là một lựa chọn tồi. Trong thực tế, việc loại bỏ các thuật ngữ thiên vị trong một mạng thần kinh hoặc các mô hình liên quan (như hồi quy tuyến tính hoặc hồi quy logistic) thường có nghĩa là mô hình của bạn sẽ bị sai lệch! Đó là một trong số ít cách bạn có thể kết thúc với một mô hình vừa kém vừa phù hợp cùng một lúc ,,
Neil Slater

1
@Alex: Tôi nghĩ rằng việc thêm một thiên vị tích cực nhỏ vào ReLUs là điều phổ biến. Tôi không biết liệu điều đó có giúp "giải quyết vấn đề ReLU không" - có khả năng sẽ không thay đổi giá trị độ dốc rất nhiều (vì độ dốc là 1 hoặc 0 đối với ReLU và đó là khi nó có thể vượt quá mức 1 sai lệch bắt đầu nhỏ sẽ xuất hiện để tạo ra rất ít sự khác biệt). Hầu hết tôi nghĩ rằng đó chỉ là một mẹo để tăng thêm một chút thúc đẩy cho việc học ban đầu - nhưng điều đó có thể giúp bằng cách bắt đầu tốt hơn và thường có độ dốc thấp hơn sớm hơn.
Neil Slater

1
@max: Bạn đang thiếu phần "cho bất kỳ đầu vào" nào trong câu trả lời của tôi. Không có độ dốc nào sẽ chảy đến bất kỳ trọng lượng nào liên quan đến tế bào thần kinh "đã chết" trong mạng chuyển tiếp thức ăn, bởi vì tất cả các đường dẫn đến các trọng số đó đều bị cắt - không có đường dẫn nào khác để gradient chuyển sang tập con của trọng số cho đơn vị ReLU. Bạn có thể xem ReLU, ví dụ như CNN hoặc có trọng số được chia sẻ trong trường hợp tất cả các vị trí trong bản đồ tính năng sẽ cần về 0 cùng một lúc. Tuy nhiên, tôi xem đó là một ví dụ khác của "cho bất kỳ đầu vào".
Neil Slater

1
@anu: Theo độ dốc gốc. Độ dốc dương lớn, gây ra bởi một giá trị lỗi lớn, đến lượt nó có thể khiến một bước duy nhất của thuật ngữ sai lệch đủ lớn để nó "giết chết" tế bào thần kinh, để nó đạt đến trạng thái (cho trọng số và độ lệch) mà các đầu vào trong tương lai đến chức năng ReLU không bao giờ tăng trên 0.
Neil Slater

102

Chúng ta hãy xem xét ReLU (Đơn vị tuyến tính chỉnh lưu) trông như thế nào:

xn

zn=i=0kwiain
wiainxnReLU=max(0,zn)

Giả sử một biện pháp lỗi rất đơn giản

error=ReLUy

errorzn=δn={1zn00zn<0
wj
error=errorwj=errorzn×znwj=δn×ajn={ajnzn00zn<0

=xn

xnx

zn<0

ReLU=max(0.1x,x)nhập mô tả hình ảnh ở đây


Bạn không quên thuật ngữ thiên vị trong công thức nhập liệu vào bộ chỉnh lưu phải không?
Tom Hale

Tôi nghĩ rằng tôi đã làm theo ký hiệu của một số sách giáo khoa cho rằng a_0 = 1 cho tất cả các lớp và w_0 là sai lệch. Sự thiên vị không quan trọng vì vậy tốt hơn hết là bỏ qua nó
MohamedEzz 20/03/18

@MohamedEzz, tôi không hiểu quan điểm của bạn What if, for the input 𝑥𝑛, the current weights put the ReLU on the left flat side while it optimally should be on the right side for this particular input ?, nếu đầu vào là âm, độ dốc sẽ là 0? những gì tối ưu cho trường hợp này? bạn có thể vui lòng giúp đỡ để hiểu nó?
anu

1
Theo tối ưu, tôi có nghĩa là, nếu mạng để dự đoán tốt hơn cho đầu vào này thì cần phải điều chỉnh các trọng số để ReLU cho giá trị dương, nó sẽ không thể thực hiện điều chỉnh này do độ dốc 0 mà nó có trên mặt phẳng.
MohamedEzz

Câu trả lời tuyệt vời. Cảm ơn
David Refaeli

13

Các nơ ron ReLU đầu ra bằng 0 và có đạo hàm bằng 0 cho tất cả các đầu vào âm. Vì vậy, nếu các trọng số trong mạng của bạn luôn dẫn đến các đầu vào tiêu cực vào tế bào thần kinh ReLU, thì tế bào thần kinh đó thực sự không đóng góp cho việc đào tạo của mạng. Về mặt toán học, sự đóng góp độ dốc cho các cập nhật trọng lượng đến từ tế bào thần kinh đó luôn bằng không (xem Phụ lục toán học để biết một số chi tiết).

L(W)LLWL

Nói chung, những gì xảy ra phụ thuộc vào cách thông tin chảy qua mạng. Bạn có thể tưởng tượng rằng khi đào tạo diễn ra, các giá trị tế bào thần kinh tạo ra có thể trôi xung quanh và làm cho trọng lượng có thể tiêu diệt tất cả các luồng dữ liệu thông qua một số trong số chúng. (Tuy nhiên, đôi khi, họ có thể để các cấu hình không thuận lợi này do cập nhật trọng lượng trước đó trong mạng!). Tôi đã khám phá ý tưởng này trong một bài đăng trên blog về khởi tạo trọng lượng - cũng có thể góp phần vào vấn đề này - và mối quan hệ của nó với luồng dữ liệu. Tôi nghĩ rằng quan điểm của tôi ở đây có thể được minh họa bằng một cốt truyện từ bài viết đó:

Kích hoạt trong ReLU MLP với các chiến lược khởi tạo khác nhau

Biểu đồ hiển thị các kích hoạt trong Perceptionron nhiều lớp 5 lớp với các kích hoạt ReLU sau một lần đi qua mạng với các chiến lược khởi tạo khác nhau. Bạn có thể thấy rằng tùy thuộc vào cấu hình trọng lượng, đầu ra của mạng của bạn có thể bị tắt.

Phụ lục toán học

Lxj(i)jif(s)=max(0,s)sj(i)(i+1)i(i+1)

Lwjk(i)=Lxk(i+1)xk(i+1)wjk(i).

wjk(i)

xk(i+1)wjk(i)=f(sj(i))sj(i)sj(i)wjk(i)=f(sj(i))xj(i).

Từ điều này, bạn có thể thấy rằng nếu các đầu ra luôn âm, các trọng số dẫn đến nơ-ron không được cập nhật và nơ-ron không góp phần vào việc học.


giải thích tuyệt vời!, bạn có thể vui lòng giúp tôi hiểu làm Therefore, if your inputs are on roughly the same scale, a large step in the direction of the gradient can leave you with weights that give similar inputs which can end up being negative.thế nào trọng lượng đang trở nên tiêu cực nếu đầu vào được bình thường hóa?
anu

wλdwλdww

@JohnsonJia, tuyệt, tôi hiểu rồi :), cần làm rõ thêm một lần nữa, tại sao nó đặc biệt tệ trong trường hợp sai lệch so với cân nặng vì đóng góp tiêu cực có thể là cả về cân nặng & thiên vị, hãy sửa tôi nếu tôi sai.?
anu

z=wx+bbzx


4

"Dying ReLU" đề cập đến nơ ron tạo ra 0 cho dữ liệu của bạn trong tập huấn luyện. Điều này xảy ra vì tổng trọng lượng * đầu vào trong một nơron (còn gọi là kích hoạt ) trở thành <= 0 cho tất cả các mẫu đầu vào. Điều này khiến ReLU xuất ra 0. Vì đạo hàm của ReLU là 0 trong trường hợp này, không có cập nhật trọng lượng nào được thực hiện và nơ ron bị kẹt khi xuất 0.

Những điều cần lưu ý:

  1. Dying ReLU không có nghĩa là đầu ra của nơ-ron sẽ vẫn bằng không tại thời điểm thử nghiệm. Tùy thuộc vào sự khác biệt phân phối, điều này có thể hoặc không thể là trường hợp.
  2. Dying ReLU không chết vĩnh viễn. Nếu bạn thêm dữ liệu đào tạo mới hoặc sử dụng mô hình được đào tạo trước để đào tạo mới, những tế bào thần kinh này có thể sẽ hoạt động trở lại!
  3. Về mặt kỹ thuật Dying ReLU không phải xuất 0 cho TẤT CẢ dữ liệu đào tạo. Nó có thể xảy ra rằng nó xuất ra khác không cho một số dữ liệu nhưng số lượng kỷ nguyên không đủ để di chuyển trọng lượng đáng kể.
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.