Vấn đề độ dốc biến mất có thể được giải quyết bằng cách nhân đầu vào của tanh với một hệ số không?


7

Theo hiểu biết của tôi, vấn đề độ dốc biến mất xảy ra khi đào tạo mạng nơ ron khi độ dốc của mỗi chức năng kích hoạt nhỏ hơn 1 sao cho khi hiệu chỉnh được truyền ngược qua nhiều lớp, sản phẩm của các gradient này trở nên rất nhỏ.

Tôi biết có những giải pháp khác như chức năng kích hoạt chỉnh lưu , nhưng câu hỏi của tôi là tại sao chúng ta không thể đơn giản sử dụng một biến thể của chức năng tanh thường được sử dụng .

Nếu chức năng kích hoạt có dạng thì độ dốc tối đa có thể là . Do đó, nếu chúng ta không còn có trường hợp sản phẩm của độ dốc nhất thiết phải về 0.tanh(nx)nn>1

Có một số lý do tại sao một chức năng kích hoạt như vậy sẽ thất bại?


Chà, nếu bạn sử dụng các đợt nhỏ - như hiện nay - trong đào tạo DNN, thì xác suất / thống kê / ngẫu nhiên sẽ nhập chắc chắn. Một nguồn dễ hiểu cho vấn đề này là cuốn sách Neural Networks và Deep Learning của Nielsen. Làm thế nào về việc bạn chạy một số thử nghiệm để tự xác minh điều này và báo cáo những gì bạn tìm thấy ở đây sau?
Tuyền

câu hỏi meta ở đây - Tôi tin rằng bây giờ tôi đã giải quyết câu hỏi này (xem câu trả lời của tôi bên dưới) nhưng vẫn có một phần thưởng cho nó - nếu đó là một lựa chọn tôi rất vui lòng đưa nó cho những người đã trả lời trước đó, nhưng Tôi tự hỏi liệu có một quy ước nào ở đây không - nếu có ai muốn làm gọn gàng và giải đáp câu trả lời của tôi thì họ cũng hoan nghênh điều đó!
Zephyr

1
Có khá nhiều tài nguyên đề xuất sử dụng . . . Tôi luôn cho rằng đó là một ý tưởng tương tự như chuẩn hóa hàng loạt - về việc tạo ra sự phân phối lý tưởng hơn các tính năng trong các lớp ẩn, bao gồm cả hiệu ứng trên độ dốc. 1.7159tanh(23x)
Neil Slater

@NeilSlater - bạn có đề nghị tham khảo nào không?
Zephyr

Không thực sự, nhưng tìm kiếm "1.7159 tanh" và bạn sẽ thấy nó là một biến thể thường được sử dụng
Neil Slater

Câu trả lời:


9

Bạn nói đúng. Đối với , phép nhân các đạo hàm không nhất thiết phải về 0, vì mỗi đạo hàm có thể có tiềm năng lớn hơn một (tối đa ).n>1n

Tuy nhiên, vì mục đích thực tế, chúng ta nên tự hỏi làm thế nào dễ dàng để duy trì tình trạng này (giữ cho phép nhân các dẫn xuất từ ​​số không)? Điều này hóa ra khá khó so với ReLU, điều này mang lại đạo hàm = 1, đặc biệt là bây giờ, khi đó cũng có khả năng nổ gradient .

Giới thiệu

Giả sử chúng ta có các đạo hàm (đứng cho độ sâu ) được nhân với nhau như sau mỗi đánh giá ở các giá trị khác nhau đến . Trong mạng nơ-ron, mỗi là tổng đầu ra có trọng số từ lớp trước, ví dụ .KK

g=f(x)x|x=x1f(x)x|x=xK
x1xKxihx=wth

Khi tăng, chúng tôi muốn biết những gì cần thiết để ngăn chặn sự biến mất của . Ví dụ: đối với trường hợp chúng ta không thể ngăn chặn điều đó bởi vì mỗi đạo hàm nhỏ hơn một, ngoại trừ , tức là Tuy nhiên, có một hy vọng mới dựa trên đề xuất của bạn. Đối với , đạo hàm có thể tăng lên , tức là Kg

f(x)=tanh(x)
x=0
f(x)x=tanh(x)x=1tanh2(x)<1 for x0
f(x)=tanh(nx)n>1
f(x)x=tanh(nx)x=n(1tanh2(nx))<n for x0.

Khi nào lực cân bằng?

Bây giờ, đây là cốt lõi của phân tích của tôi:

Cần bao xa để di chuyển từ để có đạo hàm nhỏ hơn để hủy bỏ đó là đạo hàm tối đa có thể?x01nn

Các xa nhu cầu di chuyển ra khỏi , thì càng khó để tạo ra một dẫn xuất dưới đây , do đó, càng dễ dàng để ngăn chặn sự nhân từ biến mất. Câu hỏi này cố gắng phân tích sự căng thẳng giữa tốt của gần với 0 và xấu xa 0. Ví dụ: khi cân bằng tốt và xấu , chúng sẽ tạo ra một tình huống như Hiện tại, tôi cố gắng lạc quan bằng cách không xem xét các lớn tùy ý , vì thậm chí một trong số họ có thể đưa gần tùy ý về 0.x01n x xx

g=n×n×1n×n×1n×1n=1.
xig

Đối với trường hợp đặc biệt của , bất kỳ kết quả dẫn xuất , do đó, gần như không thể giữ cân bằng (ngăn khỏi biến mất) khi độ sâu tăng, ví dụ n=1|x|>0<1/1=1gK

g=0.99×0.9×0.1×0.9950.

Đối với trường hợp chung của , chúng tôi tiến hành như sau Vậy với , đạo hàm sẽ nhỏ hơn . Do đó, về mặt nhỏ hơn một, nhân hai dẫn xuất tại vàn>1

tanh(nx)x<1nn(1tanh2(nx))<1n11n2<tanh2(nx)11n2<|tanh(nx)|x>t1(n):=1ntanh1(11n2)or x<t2(n):=t1(n)=1ntanh1(11n2)
|x|>t1(n)1nx1R|x2|>t1(n)n>1tương đương với một đạo hàm tùy ý cho , tức là Nói cách khác,n=1
(tanh(nx)x|x=x1R×tanh(nx)x|x=x2,|x2|>t1(n))tanh(x)x|x=z,zR{0}.

K cặp dẫn xuất được đề cập cho cũng có vấn đề như các dẫn xuất cho .n>1Kn=1

Bây giờ, để xem cách dễ dàng (hoặc khó) để có , hãy vẽ biểu đồ và (ngưỡng được vẽ cho liên tục ).|x|>t1(n)t1(n)t2(n)n

Như bạn có thể thấy, để có đạo hàm , khoảng lớn nhất đạt được là , vẫn còn hẹp! Khoảng này là , nghĩa là , đạo hàm sẽ nhỏ hơn . Lưu ý: khoảng cách lớn hơn một chút là có thể đạt được nếu được phép liên tục.1/nn=2[0.658,0.658]|x|>0.6581/2n

Dựa trên phân tích này, bây giờ chúng ta có thể đi đến kết luận:

Để ngăn chặn từ biến mất, khoảng một nửa hoặc hơn của 's cần phải được bên trong một khoảng thời gian nhưgxi[0.658,0.658]

do đó, khi các dẫn xuất của chúng được ghép với nửa kia, phép nhân của mỗi cặp sẽ cao hơn một ( tốt nhất là không có nào ở xa các giá trị lớn), tức là Tuy nhiên, trên thực tế, có khả năng có hơn một nửa số bên ngoài hoặc một vài có giá trị lớn, gây ra biến mất về không. Ngoài ra, có một vấn đề với quá nhiều gần bằng 0x

(f(x)x|x=x1R×f(x)x|x=x2[0.658,0.658])>1
x[0.658,0.658]xgx

Đối với , quá nhiều gần bằng 0 có thể dẫn đến một gradient lớn (có khả năng lên đến ) để di chuyển (nổ) các trọng số thành các giá trị lớn hơn ( ), tiếp tục di chuyển các thành các giá trị lớn hơn ( ) chuyển đổi các tốt thành (rất) xấu.n>1xg1nKwt+1=wt+λgxxt+1=wt+1tht+1x

Làm thế nào lớn là quá lớn?

Ở đây, tôi thực hiện một phân tích tương tự để xem

Cần bao xa để di chuyển từ để có đạo hàm nhỏ hơn để hủy bỏ các giả sử chúng rất gần với 0 và thu được độ dốc tối đa có thể?x01nK1K1 x

Để trả lời câu hỏi này, chúng tôi rút ra bất đẳng thức dưới đây

tanh(nx)x<1nK1|x|>1ntanh1(11nK)

cho thấy, ví dụ, đối với độ sâu và , một giá trị bên ngoài tạo ra đạo hàm . Kết quả này mang đến một trực giác về việc một vài khoảng 5-10 dễ dàng loại bỏ phần lớn các tốt như thế nào.K=50n=2[9.0,9.0]<1/249xx

Tương tự đường một chiều

Dựa trên các phân tích trước đây, tôi có thể cung cấp một sự tương tự định tính bằng cách sử dụng Chuỗi Markov gồm hai trạng thái và mô hình hóa hành vi động của gradient như sau[g0][g0]g

Khi hệ thống chuyển sang trạng thái , sẽ không có nhiều độ dốc để đưa (thay đổi) các giá trị trở lại trạng thái . Điều này tương tự như đường một chiều cuối cùng sẽ được thông qua nếu chúng ta dành đủ thời gian (thời gian đủ lớn) cho sự hội tụ đào tạo không xảy ra (nếu không, chúng tôi đã tìm ra giải pháp trước khi trải qua một độ dốc biến mất).[g0][g0]

Có thể phân tích nâng cao hơn về hành vi động của gradient bằng cách thực hiện mô phỏng trên các mạng thần kinh thực tế (có thể phụ thuộc vào nhiều tham số như hàm mất, độ rộng và độ sâu của mạng và phân phối dữ liệu) và đưa ra

  1. Một mô hình xác suất cho biết mức độ biến mất thường xuyên xảy ra dựa trên phân phối gradient hoặc phân phối chung ( , ) hoặc ( , ) hoặcgxgwg
  2. Một mô hình xác định (bản đồ) cho biết điểm ban đầu nào (giá trị ban đầu của trọng số) dẫn đến biến mất độ dốc; có thể đi kèm với quỹ đạo từ giá trị ban đầu đến giá trị cuối cùng.

Vấn đề độ dốc nổ

Chúng tôi đã đề cập đến khía cạnh "độ dốc biến mất" của . Ngược lại, đối với khía cạnh " độ dốc phát nổ ", chúng ta nên lo lắng về việc có quá nhiều gần bằng 0, có khả năng tạo ra độ dốc quanh , gây mất ổn định số. Trong trường hợp này, một phân tích tương tự dựa trên bất đẳng thức cho thấy với , khoảng một nửa hoặc nhiều hơn nên nằm ngoàitanh(nx)xnK

tanh(nx)x>1|x|<1ntanh1(11n)
n=2xi[0.441,0.441]gO(1)O(nK) . Điều này để lại một vùng thậm chí nhỏ hơn trên trong đó các hàm sẽ hoạt động tốt với nhau (không biến mất, cũng không phát nổ); nhắc nhở rằng không có vấn đề độ dốc phát nổ.RKK tanh(nx)tanh(x)


Đây là một câu trả lời đáng yêu - rất thích đọc nó! - điều đó nói rằng tôi còn lại với một câu hỏi còn sót lại: khi một mạng lưới thần kinh được đào tạo, và trọng lượng và thành kiến ​​khác nhau, liệu có công bằng không khi xem đây là một mẫu ngẫu nhiên của độ dốc? - nếu chúng ta giới hạn trạng thái bắt đầu ở trạng thái mà sản phẩm của độ dốc gần với sự thống nhất, thì rõ ràng là mạng sẽ tự nhiên di chuyển khỏi cấu hình hài hòa như vậy?
Zephyr

1
@Zephyr Cảm ơn! Tôi nghĩ rằng bạn đang hướng tới một phân tích xác suất hoặc động của gradient. Tôi không có câu trả lời rõ ràng cho những câu hỏi này, dù sao tôi cũng đã thêm một số hướng về vấn đề này.
Esmailian

không sao đâu - tôi nghĩ đây là một bản đồ tuyệt đẹp trong một bước cho câu trả lời - nó trả về phía trước :)
Zephyr

3

Tôi đã vẽ những gì bạn đang đề cập trong hình dưới đây. Như bạn có thể thấy, bằng cách sử dụng một hệ số làm đầu vào của hàm tanh , bạn đang giới hạn phạm vi thay đổi của hàm đối với trục . Điều này có tác động tiêu cực. Lý do là mặc dù bạn đang làm cho độ dốc sắc nét hơn cho một khu vực rất nhỏ trong miền, bạn đang làm cho sự khác biệt của các điểm khác trong miền gần với không hơn. Vấn đề biến mất xảy ra do thực tế là đầu ra của các nơ-ron đi rất xa so với số 0 và chúng sẽ bị lệch về hai hướng. Sau đó, giá trị khác biệt rất nhỏ và do bắt đầu nhỏ hơn một và lớn hơn 0, nó thậm chí còn nhỏ hơn sau khi được nhân với các khác biệt giống như chính nó.x

nhập mô tả hình ảnh ở đây

Một câu hỏi hay khác có thể là bạn có giá trị hệ số nhỏ hơn một. Tôi đã minh họa rằng trong hình sau đây. Trong hình này, bạn đang thay đổi hàm theo cách bạn có sự khác biệt lớn hơn trước ở nhiều điểm của miền, nhưng một lần nữa, nó lại nhỏ hơn một. Điều này không có giá trị cho các mạng sâu.

nhập mô tả hình ảnh ở đây

Như tôi đã đề cập, trong cả hai trường hợp bạn sử dụng hệ số, đạo hàm sẽ nhỏ hơn một và không có giá trị đối với các mạng sâu.


1
các liên kết không hoạt động
oW_

tôi hiểu lập luận của bạn - và tôi nghĩ nó có ý nghĩa tốt - nhưng với tôi nó không rõ ràng rằng đó là vấn đề tương tự. Với hàm tanh (x), sản phẩm của nhiều độ dốc luôn giảm đi, trong khi với (ví dụ) tanh (2x), sản phẩm của độ dốc chắc chắn có thể biến mất, nhưng chúng cũng có thể nhận bất kỳ giá trị nào (tối đa 2 ^ n trong đó n là số lớp ẩn)
Zephyr

Vấn đề là với nó biến mất ở nhưng đối với thì nó biến mất ở . Bạn đang giới hạn chức năng. Sau một số bước, tế bào thần kinh của bạn sẽ được thiên vị cho từng diretions. tanh(n)1tanh(2n)1/2
Truyền thông

điều này có vẻ như là một đối số không hoàn chỉnh - với độ dốc <1 luôn luôn là một giá trị gần bằng 0 trong sản phẩm đảm bảo rằng tổng gần bằng 0 - khi độ dốc có thể lớn hơn 1, giá trị gần bằng 0 có thể được bù với nhiều giá trị> 1 - và tranh luận về trường hợp tanh (x) dựa trên giới hạn trên cứng, nhưng đối với trường hợp tanh (2x), chúng tôi rơi vào mức trung bình, một tuyên bố logic kém mạnh mẽ hơn nhiều - Tôi không nói kết luận trên là không chính xác, chỉ là nó đòi hỏi sự biện minh sâu sắc hơn - bạn có biết về bất kỳ nghiên cứu hoặc ví dụ liên quan nào không?
Zephyr

Tôi không hiểu những gì bạn muốn truyền đạt.
Truyền thông

1

Đạo hàm của tanh (x) là sech (x) ^ 2, trong đó sech (x) = 2e ^ x / (1 + e ^ (2x)). Do đó, khi bạn thấy độ dốc giảm xuống 0, điều đó có nghĩa là x hội tụ đến +/- vô cùng. Nếu bạn xem xét tanh (nx), thì đạo hàm là n sech (nx) ^ 2 và sech (nx) ^ 2 hội tụ đến 0 nhanh hơn n hội tụ đến vô cùng, khi x hội tụ đến +/- vô cùng. Do đó, theo kinh nghiệm, nhân số đối số bằng n lớn hơn sẽ làm cho mọi thứ tồi tệ hơn.


0

Cảm ơn tất cả mọi người vì câu trả lời tuyệt vời của họ - họ thực sự đã giúp tôi suy nghĩ về vấn đề này - và tôi khuyên mọi người quan tâm đến vấn đề này - nhưng có một cách đơn giản hơn để trả lời:

Khi chúng ta thay thế bằng làm chức năng kích hoạt, chúng ta không thay đổi về hiệu suất của chức năng kích hoạt.tanh(x)tanh(nx)

Tất cả những gì chúng tôi đã làm là định cỡ lại tất cả các trọng số và thành kiến ​​của mạng - điều mà chúng tôi có thể tự do thực hiện. Điều này sẽ không ảnh hưởng đến hiệu suất của mạng, nhưng chắc chắn sẽ khởi tạo. Trước đây tôi đã tuyên bố rằng nó cũng sẽ không ảnh hưởng đến việc đào tạo - nhưng bây giờ tôi không chắc mình có thể nói điều này với sự tự tin hoàn toàn.


Nếu DNN thực sự tính toán mức tối thiểu toàn cầu của hàm chi phí thì Có, có lẽ bạn đã đúng. Tuy nhiên, trong thực tế, bạn sử dụng độ dốc gốc và nếu bạn sử dụng cách tiêu chuẩn thì bạn sẽ sửa một tỷ lệ học tập. Sau đó, yêu cầu của bạn cần giải thích. (Ngoại trừ nếu bạn cũng hủy bỏ tốc độ học tập và điểm ban đầu của quá trình giảm độ dốc.)
Tuyên

Chi tiết hơn về ý tôi muốn nói: Nếu f (\ alpha) là hàm chi phí do DNN cung cấp khi hàm kích hoạt của bạn là tanh (x), thì f (n \ alpha) là hàm chi phí tương ứng cho hàm kích hoạt tanh (nx ). Ở đây \ alpha là tập hợp các tham số của DNN. Bây giờ nếu bạn chạy phương thức giảm độ dốc (tiêu chuẩn), với tốc độ học tập \ delta và điểm ban đầu \ alpha _0, thì hai bước đầu tiên như sau: \ alpha _1 = \ alpha _0 - \ delta n \ nabla f (n \ alpha _0) và \ alpha _2 = \ alpha _1- \ delta n \ nabla f (n \ alpha _1). Như vậy, rõ ràng hành vi của hàm chi phí mới ...
Tuyền

... không giống như hàm chi phí cũ. Ngoại trừ nếu bạn chỉ nhìn vào cực tiểu toàn cầu, thì đúng là yêu cầu của bạn là đúng. Mặt khác, tôi không thấy yêu cầu của bạn hợp lý như thế nào và cần thêm lời giải thích. Ngay cả khi bạn thay đổi tỷ lệ học tập bằng n, mọi thứ vẫn khác nhau rất nhiều.
Tuyền

đây là một cuộc tranh luận thú vị và tôi đang xem xét nó - sẽ bỏ đánh dấu đây là câu trả lời vào lúc này - mặc dù câu hỏi nhanh - làm thế nào điều này không giống với việc chỉ định lại tỷ lệ học tập, \ delta?
Zephyr

1
Tôi thực sự đã nhận được dẫn xuất của mình sai - cảm ơn vì sự kiên nhẫn của họ!
Zephyr
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.