Tại sao tanh hầu như luôn luôn tốt hơn sigmoid như một chức năng kích hoạt?


33

Trong khóa học Mạng thần kinh và Deep Learning của Andrew Ng trên Coursera , ông nói rằng sử dụng hầu như luôn luôn thích hợp hơn là sử dụng .tanhsigmoid

Lý do anh đưa ra là các kết quả đầu ra sử dụng trung tâm khoảng 0 thay vì 0,5 và điều này "làm cho việc học cho lớp tiếp theo dễ dàng hơn một chút".tanhsigmoid

  1. Tại sao tập trung vào tốc độ học tập đầu ra của kích hoạt? Tôi giả sử anh ta đề cập đến lớp trước như học tập xảy ra trong backprop?

  2. Có bất kỳ tính năng khác làm cho thích hơn? Độ dốc dốc chậm trễ biến mất độ dốc?tanh

  3. Có bất kỳ tình huống mà sẽ thích hợp hơn?sigmoid

Toán học nhẹ, câu trả lời trực quan ưa thích.


13
Hàm sigmoid có dạng hình chữ S (do đó có tên). Có lẽ bạn đang nói về hàm logistic . Ngoài quy mô và vị trí, hai bản chất là giống nhau: . Vì vậy, lựa chọn thực sự là bạn muốn đầu ra trong khoảng hay khoảngex1+exlogistic(x)=12+12tanh(x2)(1,1)(0,1)
Henry

Câu trả lời:


21

Yan LeCun và những người khác tranh luận trong BackProp hiệu quả rằng

Sự hội tụ thường nhanh hơn nếu trung bình của mỗi biến đầu vào trên tập huấn luyện gần bằng không. Để thấy điều này, hãy xem xét trường hợp cực đoan trong đó tất cả các đầu vào là dương. Trọng số của một nút cụ thể trong lớp trọng lượng đầu tiên được cập nhật theo số lượng tỷ lệ với trong đó là lỗi (vô hướng) tại nút đó và là vectơ đầu vào (xem phương trình (5) và (10)). Khi tất cả các thành phần của vectơ đầu vào là dương, tất cả các cập nhật về trọng số đưa vào một nút sẽ có cùng dấu (tức là dấu ( )). Do đó, các trọng số này chỉ có thể giảm hoặc tăng cùng nhauδxδxδcho một mẫu đầu vào nhất định. Do đó, nếu một vectơ trọng lượng phải thay đổi hướng, nó chỉ có thể làm như vậy bằng cách zigzagging không hiệu quả và do đó rất chậm.

Đây là lý do tại sao bạn nên bình thường hóa đầu vào của mình để mức trung bình bằng không.

Logic tương tự áp dụng cho các lớp giữa:

Heuristic này nên được áp dụng ở tất cả các lớp, điều đó có nghĩa là chúng ta muốn trung bình của các đầu ra của một nút gần bằng 0 vì các đầu ra này là các đầu vào cho lớp tiếp theo.

Postscript @craq làm cho thời điểm đó trích dẫn này không có ý nghĩa cho ReLU (x) = max (0, x) mà đã trở thành một chức năng kích hoạt phổ biến rộng rãi. Mặc dù ReLU không tránh được vấn đề ngoằn ngoèo đầu tiên được đề cập bởi LeCun, nhưng nó không giải quyết được điểm thứ hai này bởi LeCun, người nói rằng điều quan trọng là phải đẩy trung bình về 0. Tôi rất muốn biết LeCun nói gì về điều này. Trong mọi trường hợp, có một bài báo gọi là Batch Normalization , được xây dựng dựa trên công việc của LeCun và đưa ra một cách để giải quyết vấn đề này:

Người ta đã biết từ lâu (LeCun et al., 1998b; Wiesler & Ney, 2011) rằng đào tạo mạng hội tụ nhanh hơn nếu đầu vào của nó được làm trắng - tức là biến đổi tuyến tính thành không có phương tiện và phương sai đơn vị, và bị phân rã. Khi mỗi lớp quan sát các đầu vào được tạo ra bởi các lớp bên dưới, sẽ rất thuận lợi để đạt được sự làm trắng giống nhau của các đầu vào của mỗi lớp.


Nhân tiện, video này của Siraj giải thích rất nhiều về các chức năng kích hoạt trong 10 phút vui vẻ.


@elkout nói "Lý do thực sự mà tanh được ưa thích so với sigmoid (...) là các dẫn xuất của tanh lớn hơn các dẫn xuất của sigmoid."

Tôi nghĩ rằng đây là một vấn đề không. Tôi chưa bao giờ thấy đây là một vấn đề trong văn học. Nếu nó làm phiền bạn rằng một đạo hàm nhỏ hơn một đạo hàm khác, bạn có thể mở rộng nó.

Hàm logistic có hình dạng . Thông thường, chúng tôi sử dụng , nhưng không có gì cấm bạn sử dụng giá trị khác cho để làm cho các công cụ phái sinh của bạn rộng hơn, nếu đó là vấn đề của bạn.σ(x)=11+ekxk=1k


Nitpick: tanh cũng là một hàm sigmoid . Bất kỳ chức năng nào có hình chữ S là một sigmoid. Những gì các bạn đang gọi sigmoid là chức năng logistic. Lý do tại sao chức năng logistic phổ biến hơn là lý do lịch sử. Nó đã được sử dụng trong một thời gian dài hơn bởi các nhà thống kê. Bên cạnh đó, một số cảm thấy rằng nó hợp lý hơn về mặt sinh học.


1
Bạn không cần một trích dẫn để chỉ ra rằng , chỉ là phép tính trung học. Chúng tôi biết rằng điều này là đúng vì , vì vậy bạn chỉ cần tối đa hóa a bậc hai lõm. có thể được xác minh bằng cách kiểm tra. maxxσ(x)<maxxtanh(x)
σ(x)=σ(x)(1σ(x))0.25
0<σ(x)<1
tanh(x)=sech2(x)=2exp(x)+exp(x))1.0
Sycorax nói Phục hồi lại

Ngoài ra, tôi đã nói rằng trong hầu hết các trường hợp, các dẫn xuất của tanh lớn hơn các dẫn xuất của sigmoid. Điều này xảy ra chủ yếu khi chúng tôi ở khoảng 0. Bạn được chào đón xem liên kết này và câu trả lời rõ ràng được cung cấp ở đây câu hỏi mà họ cũng nói rằng các dẫn xuất của thường lớn hơn các dẫn xuất của . tanhsigmoid
ekoulier

chờ đợi ... nghe có vẻ hợp lý, nhưng nếu các lớp giữa nên có đầu ra trung bình bằng 0, làm thế nào ReLU hoạt động tốt như vậy? Đó không phải là một mâu thuẫn sao?
craq

@ekoulier, đạo hàm của lớn hơn là một vấn đề không phải là vấn đề. Bạn chỉ có thể mở rộng quy mô nếu nó làm phiền bạn. tanhsigmoid
Ricardo Cruz

@craq, điểm tốt, tôi nghĩ đó là một lỗ hổng trong tranh luận của LeCun. Tôi đã thêm một liên kết đến bài viết chuẩn hóa hàng loạt trong đó nó thảo luận thêm về vấn đề đó và làm thế nào để cải thiện nó. Thật không may, bài báo đó không so sánh relu với tanh, nó chỉ so sánh relu với logistic (sigmoid).
Ricardo Cruz

14

Không nhất thiết là nó tốt hơn . Nói cách khác, nó không phải là trung tâm của một phiên bản kích hoạt làm cho nó tốt hơn. Và ý tưởng đằng sau cả hai chức năng là như nhau, và chúng cũng có chung một "xu hướng". Không cần phải nói rằng hàm được gọi là phiên bản thay đổi của hàm .sigmoidtanhsigmoid

Lý do thực sự mà được ưa thích so với , đặc biệt là khi nói đến dữ liệu lớn khi bạn thường gặp khó khăn trong việc tìm kiếm tối thiểu cục bộ (hoặc toàn cầu), đó là các dẫn xuất của lớn hơn các dẫn xuất của . Nói cách khác, bạn giảm thiểu chức năng chi phí của mình nhanh hơn nếu bạn sử dụng làm kết nối kích hoạt.tanhsigmoidtanhsigmoidtanh

Nhưng tại sao tiếp tuyến hyperbol có dẫn xuất lớn hơn? Chỉ cần cung cấp cho bạn một trực giác rất đơn giản, bạn có thể quan sát biểu đồ sau:

Sigmoid vs Hyperbolic Tiếp tuyến

Thực tế là phạm vi nằm giữa -1 và 1 so với 0 và 1, làm cho chức năng trở nên thuận tiện hơn cho các mạng thần kinh. Ngoài ra, nếu tôi sử dụng một số phép toán, tôi có thể chứng minh rằng:

tanhx=2σ(2x)1

Và nói chung, chúng tôi có thể chứng minh rằng trong hầu hết các trường hợp .|tanh(x)x|>|σ(x)x|


Vậy tại sao giáo sư Ng lại nói rằng đó là một lợi thế để có đầu ra của hàm trung bình khoảng ? 0
Tom Hale

2
Đó không phải là thực tế rằng trung bình là khoảng 0 làm cho nhanh hơn. Thực tế là khoảng 0 có nghĩa là phạm vi cũng là vắt (so với khoảng 0,5 trong trường hợp ), dẫn đến các dẫn xuất lớn hơn, hầu như luôn dẫn đến sự hội tụ nhanh hơn đến mức tối thiểu. Tôi hy vọng rằng nó là rõ ràng bây giờ. Ng nói đúng rằng chúng tôi thích hàm vì nó nằm ở khoảng 0, nhưng anh ta không cung cấp sự biện minh hoàn chỉnh. tanhsigmoidtanh
ekoulier

Không định tâm là quan trọng hơn tỷ lệ , vì nó làm lệch phân phối kích hoạt và điều đó làm tổn hại đến hiệu suất. Nếu bạn mất và tỷ lệ học tập, nó sẽ học ngang bằng . 2xsigmoid(x) - 0.52xtanh
Maxim

@Maxim Cái "nó" nào làm lệch phân phối kích hoạt, không định tâm hoặc ? Nếu không định tâm là một điều tốt, tôi vẫn không cảm thấy rằng "tại sao" điều đó đã được trả lời. 2x
Tom Hale

3

Trả lời một phần của câu hỏi cho đến nay chưa được giải quyết:

Andrew Ng nói rằng việc sử dụng hàm logistic (thường được gọi là sigmoid) thực sự chỉ có ý nghĩa trong lớp cuối cùng của mạng phân loại nhị phân.

Vì đầu ra của mạng dự kiến ​​nằm trong khoảng từ đến , logistic là một lựa chọn hoàn hảo vì phạm vi của nó là chính xác . Không cần chia tỷ lệ và dịch chuyển của .01(0,1)tanh


Đối với đầu ra, hàm logistic có ý nghĩa nếu bạn muốn tạo xác suất, tất cả chúng ta có thể đồng ý về điều đó. Điều đang được thảo luận là tại sao tanh được ưa thích hơn chức năng logistic như là một kích hoạt cho các lớp giữa.
Ricardo Cruz

Làm thế nào để bạn biết đó là những gì OP dự định? Có vẻ như anh ta đang hỏi một câu hỏi chung.
Tom Hale

2

Tất cả chủ yếu phụ thuộc vào các đạo hàm của hàm kích hoạt, vấn đề chính của hàm sigmoid là giá trị cực đại của đạo hàm của nó là 0,25, điều này có nghĩa là cập nhật các giá trị của W và b sẽ nhỏ.

Mặt khác, chức năng tanh có đạo hàm lên tới 1.0, làm cho các cập nhật của W và b lớn hơn nhiều.

Điều này làm cho hàm tanh hầu như luôn luôn tốt hơn như một hàm kích hoạt (đối với các lớp ẩn) thay vì hàm sigmoid.

Để chứng minh điều này (ít nhất là trong một trường hợp đơn giản), tôi đã mã hóa một mạng lưới thần kinh đơn giản và sử dụng sigmoid, tanh và relu làm các hàm kích hoạt, sau đó tôi đã vẽ ra giá trị lỗi phát triển như thế nào và đây là những gì tôi nhận được.

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

Sổ ghi chép đầy đủ tôi đã viết ở đây https://www.kaggle.com/moriano/a-showcase-of-how-relus-can-speed-up-the-learning

Nếu nó giúp, đây là biểu đồ của các đạo hàm của hàm tanh và sigmoid (chú ý đến trục tung!)

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

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


(-1) Mặc dù đây là một ý tưởng thú vị, nhưng nó không tự đứng vững. Cụ thể, hầu hết các phương thức tối ưu hóa được sử dụng cho DL / NN là các phương thức gradient thứ tự đầu tiên, có tỷ lệ học tập . Nếu đạo hàm tối đa liên quan đến một chức năng kích hoạt quá nhỏ, người ta có thể dễ dàng tăng tốc độ học tập. α
Vách đá AB

Bạn không có nguy cơ không có một lộ trình học tập ổn định với tỷ lệ học tập cao hơn?
Juan Antonio Gomez Moriano

Vâng, nếu các công cụ phái sinh ổn định hơn, thì việc tăng tỷ lệ học tập sẽ ít có khả năng làm mất ổn định dự toán.
Vách đá AB

Đó là một điểm công bằng, bạn có một liên kết nơi tôi có thể tìm hiểu thêm về điều này?
Juan Antonio Gomez Moriano
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.