Tại sao phải sử dụng chức năng kích hoạt phi tuyến trong mạng nơ ron truyền bá?


139

Tôi đã đọc một số điều trên mạng thần kinh và tôi hiểu nguyên tắc chung của mạng lưới thần kinh một lớp. Tôi hiểu sự cần thiết của các lớp quảng cáo, nhưng tại sao các hàm kích hoạt phi tuyến được sử dụng?

Câu hỏi này được theo sau bởi câu hỏi này: Đạo hàm của chức năng kích hoạt được sử dụng để truyền bá là gì?


câu trả lời hay nhất trong tất cả ở đây về trí tuệ nhân tạo
eusoubrasileiro

Câu trả lời:


167

Mục đích của chức năng kích hoạt là giới thiệu phi tuyến tính vào mạng

lần lượt, điều này cho phép bạn mô hình hóa một biến trả lời (còn gọi là biến mục tiêu, nhãn lớp hoặc điểm số) thay đổi phi tuyến tính với các biến giải thích của nó

phi tuyến tính có nghĩa là đầu ra không thể được sao chép từ tổ hợp tuyến tính của các đầu vào (không giống với đầu ra làm cho một đường thẳng - từ này là affine ).

Một cách khác để nghĩ về nó: không có chức năng kích hoạt phi tuyến tính trong mạng, NN, cho dù nó có bao nhiêu lớp, sẽ hoạt động giống như một tri giác một lớp, bởi vì việc tổng hợp các lớp này sẽ cung cấp cho bạn một chức năng tuyến tính khác (xem định nghĩa ở trên).

>>> in_vec = NP.random.rand(10)
>>> in_vec
  array([ 0.94,  0.61,  0.65,  0.  ,  0.77,  0.99,  0.35,  0.81,  0.46,  0.59])

>>> # common activation function, hyperbolic tangent
>>> out_vec = NP.tanh(in_vec)
>>> out_vec
 array([ 0.74,  0.54,  0.57,  0.  ,  0.65,  0.76,  0.34,  0.67,  0.43,  0.53])

Một chức năng kích hoạt phổ biến được sử dụng trong backprop ( tiếp tuyến hyperbol ) được đánh giá từ -2 đến 2:

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


15
Tại sao chúng ta muốn loại bỏ tuyến tính?
corazza

17
Nếu dữ liệu chúng ta muốn mô hình là phi tuyến tính thì chúng ta cần tính đến dữ liệu đó trong mô hình của chúng ta.
Doug

38
Một câu trả lời: << cho dù có bao nhiêu lớp sẽ hoạt động giống như một perceptron duy nhất (vì các hàm tuyến tính được cộng lại chỉ cung cấp cho bạn một hàm tuyến tính). >> . Đẹp!
Tự trị

12
Đây là một chút sai lệch - như eski đã đề cập, các chức năng kích hoạt tuyến tính được chỉnh sửa là cực kỳ thành công và nếu mục tiêu của chúng tôi chỉ là mô hình hóa / các hàm gần đúng, loại bỏ phi tuyến tính ở tất cả các bước không nhất thiết phải là câu trả lời đúng. Với đủ các mảnh tuyến tính, bạn có thể tính gần như bất kỳ hàm phi tuyến tính nào với độ chính xác cao. Tôi thấy đây là một lời giải thích tốt về lý do tại sao các đơn vị tuyến tính được chỉnh sửa hoạt động: stats.stackexchange.com/questions/141960/ mẹo
tegan

11
@tegan Các hàm kích hoạt tuyến tính chỉnh lưu là phi tuyến tính. Tôi không chắc bình luận của bạn có liên quan gì đến câu trả lời.
endolith

49

Một chức năng kích hoạt tuyến tính có thể được sử dụng, tuy nhiên trong những dịp rất hạn chế. Trong thực tế để hiểu các chức năng kích hoạt tốt hơn, điều quan trọng là phải nhìn vào bình phương nhỏ nhất bình thường hoặc đơn giản là hồi quy tuyến tính. Hồi quy tuyến tính nhằm mục đích tìm các trọng số tối ưu dẫn đến hiệu ứng dọc tối thiểu giữa các biến giải thích và biến mục tiêu, khi kết hợp với đầu vào. Nói tóm lại, nếu đầu ra dự kiến ​​phản ánh hồi quy tuyến tính như được hiển thị bên dưới thì các hàm kích hoạt tuyến tính có thể được sử dụng: (Hình trên). Nhưng như trong hình thứ hai bên dưới hàm tuyến tính sẽ không tạo ra kết quả mong muốn: (Hình giữa). Tuy nhiên, một hàm phi tuyến tính như dưới đây sẽ tạo ra kết quả mong muốn:

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

Các chức năng kích hoạt không thể là tuyến tính vì các mạng thần kinh có chức năng kích hoạt tuyến tính chỉ có hiệu quả sâu một lớp, bất kể kiến ​​trúc của chúng phức tạp đến mức nào. Đầu vào cho mạng thường là biến đổi tuyến tính (đầu vào * trọng lượng), nhưng thế giới thực và các vấn đề là phi tuyến tính. Để làm cho dữ liệu đến phi tuyến, chúng tôi sử dụng ánh xạ phi tuyến gọi là chức năng kích hoạt. Chức năng kích hoạt là chức năng ra quyết định xác định sự hiện diện của một tính năng thần kinh cụ thể. Nó được ánh xạ từ 0 đến 1, trong đó 0 có nghĩa là không có tính năng này, trong khi một có nghĩa là sự hiện diện của nó. Thật không may, những thay đổi nhỏ xảy ra trong các trọng số không thể được phản ánh trong các giá trị kích hoạt bởi vì nó chỉ có thể mất 0 hoặc 1. Do đó, các hàm phi tuyến phải liên tục và khác biệt giữa phạm vi này. Một mạng lưới thần kinh phải có khả năng nhận bất kỳ đầu vào nào từ -infinite đến + vô hạn, nhưng nó có thể ánh xạ nó tới một đầu ra nằm trong khoảng từ {0,1} hoặc giữa {-1,1} trong một số trường hợp - do đó, cần cho chức năng kích hoạt. Phi tuyến tính là cần thiết trong các chức năng kích hoạt vì mục tiêu của nó trong mạng nơ ron là tạo ra ranh giới quyết định phi tuyến thông qua các kết hợp phi tuyến tính của trọng số và đầu vào.


1
+ Một, sau đó có thể suy ra rằng hàm phi tuyến được sử dụng để thiết lập một ranh giới hoàn hảo?
SIslam

1
Đúng chính xác. Chỉ cần sản xuất 0 hoặc 1, nó có thể tạo ra 0,4 hoặc 0,78, làm cho nó liên tục vượt qua phạm vi ranh giới.
chibole

3
Một mạng lưới thần kinh phải có khả năng nhận bất kỳ đầu vào nào từ -infinite đến + vô hạn, nhưng nó có thể ánh xạ nó tới một đầu ra nằm trong khoảng từ {0,1} hoặc giữa {-1,1} ... nó nhắc nhở tôi hạn chế của ReLU là nó chỉ nên được sử dụng trong các lớp Ẩn của Mô hình mạng thần kinh.
Mây Cho

21

Nếu chúng ta chỉ cho phép các chức năng kích hoạt tuyến tính trong một mạng thần kinh, thì đầu ra sẽ chỉ là một phép biến đổi tuyến tính của đầu vào, không đủ để tạo thành một hàm xấp xỉ hàm phổ quát . Một mạng như vậy chỉ có thể được biểu diễn dưới dạng nhân ma trận và bạn sẽ không thể có được các hành vi rất thú vị từ một mạng như vậy.

Điều tương tự cũng xảy ra đối với trường hợp tất cả các tế bào thần kinh đều có chức năng kích hoạt affine (tức là chức năng kích hoạt trên biểu mẫu f(x) = a*x + c , ở đâu aclà hằng số, là sự khái quát hóa của các chức năng kích hoạt tuyến tính), điều này sẽ dẫn đến sự chuyển đổi affine từ đầu vào sang đầu ra , điều đó cũng không thú vị lắm.

Một mạng nơ-ron rất có thể chứa các nơ-ron có chức năng kích hoạt tuyến tính, chẳng hạn như ở lớp đầu ra, nhưng chúng đòi hỏi công ty của các nơ-ron có chức năng kích hoạt phi tuyến tính trong các phần khác của mạng.

Lưu ý: Một ngoại lệ thú vị là độ dốc tổng hợp của DeepMind , trong đó họ sử dụng một mạng nơ ron nhỏ để dự đoán độ dốc trong đường truyền ngược được cung cấp các giá trị kích hoạt và họ thấy rằng họ có thể thoát khỏi việc sử dụng mạng thần kinh không có lớp ẩn và với chỉ kích hoạt tuyến tính.


1
Các hàm bậc cao hơn có thể được xấp xỉ bằng các hàm kích hoạt tuyến tính bằng nhiều lớp ẩn. Định lý xấp xỉ phổ quát là đặc trưng cho MLP chỉ có một lớp ẩn.
eski

Trên thực tế, tôi tin rằng bạn đã đúng trong tuyên bố của mình về các chức năng kích hoạt affine dẫn đến chuyển đổi affine, nhưng thực tế là việc chuyển đổi được học thông qua backpropagation (hoặc bất kỳ phương tiện nào khác) làm cho nó không hoàn toàn vô dụng đối với câu hỏi ban đầu.
eski

4
@eski Không, bạn không thể ước tính các hàm bậc cao hơn chỉ bằng các hàm kích hoạt tuyến tính, bạn chỉ có thể mô hình hóa tuyến tính (hoặc affine, nếu bạn có thêm một nút hằng trong mỗi lớp trừ các lớp cuối cùng), bất kể bạn có bao nhiêu lớp có.
HelloGoodbye

Có đúng không khi nói rằng mục đích chính của chức năng kích hoạt là cho phép mạng thần kinh tạo ra ranh giới quyết định phi tuyến tính?
stackoverflowuser2010

@ stackoverflowuser2010 Đó là một cách để xem xét nó. Nhưng có nhiều hơn một chức năng kích hoạt hơn như vậy. Bài viết của Wikipedia về các chức năng kích hoạt liệt kê một số chức năng kích hoạt, tất cả (nhưng một) trong số đó là phi tuyến và so sánh các phẩm chất khác nhau mà chức năng kích hoạt có thể có.
HelloGoodbye

9

Một mạng thần kinh chuyển tiếp nguồn cấp dữ liệu với kích hoạt tuyến tính và bất kỳ số lượng các lớp ẩn tương đương với chỉ một mạng thần kinh tuyến tính không có lớp ẩn. Ví dụ, hãy xem xét mạng nơ-ron trong hình có hai lớp ẩn và không kích hoạt nhập mô tả hình ảnh ở đây

y = h2 * W3 + b3 
  = (h1 * W2 + b2) * W3 + b3
  = h1 * W2 * W3 + b2 * W3 + b3 
  = (x * W1 + b1) * W2 * W3 + b2 * W3 + b3 
  = x * W1 * W2 * W3 + b1 * W2 * W3 + b2 * W3 + b3 
  = x * W' + b'

Chúng ta có thể thực hiện bước cuối cùng vì sự kết hợp của một số phép biến đổi tuyến tính có thể được thay thế bằng một phép biến đổi và sự kết hợp của một số thuật ngữ sai lệch chỉ là một sai lệch duy nhất. Kết quả là như nhau ngay cả khi chúng ta thêm một số kích hoạt tuyến tính.

Vì vậy, chúng ta có thể thay thế mạng lưới thần kinh này bằng một mạng lưới thần kinh một lớp. Điều này có thể được mở rộng thành ncác lớp. Điều này cho thấy việc thêm các lớp không làm tăng sức mạnh gần đúng của mạng lưới thần kinh tuyến tính. Chúng ta cần các hàm kích hoạt phi tuyến tính để xấp xỉ các hàm phi tuyến tính và hầu hết các vấn đề trong thế giới thực rất phức tạp và phi tuyến tính. Trong thực tế khi hàm kích hoạt là phi tuyến tính, thì một mạng nơ ron hai lớp với số lượng đơn vị ẩn đủ lớn có thể được chứng minh là một xấp xỉ hàm phổ quát.


5

"Bài báo hiện tại sử dụng Định lý Stone-Weierstrass và máy nghiền cosin của Gallant và White để thiết lập các kiến ​​trúc mạng đa cấp tiêu chuẩn sử dụng các hàm băm nhỏ có thể gần như bất kỳ chức năng nào quan tâm đến bất kỳ mức độ chính xác mong muốn nào, được cung cấp một cách chính xác đơn vị có sẵn. " ( Hornik et al., 1989, Mạng lưới thần kinh )

Ví dụ, hàm squashing là hàm kích hoạt phi tuyến ánh xạ tới [0,1] giống như hàm kích hoạt sigmoid.


3

Có những lúc một mạng tuyến tính thuần túy có thể cho kết quả hữu ích. Giả sử chúng ta có một mạng lưới gồm ba lớp với hình dạng (3,2,3). Bằng cách giới hạn lớp giữa chỉ có hai chiều, chúng ta có được kết quả là "mặt phẳng phù hợp nhất" trong không gian ba chiều ban đầu.

Nhưng có nhiều cách dễ dàng hơn để tìm các phép biến đổi tuyến tính của dạng này, chẳng hạn như NMF, PCA, v.v. Tuy nhiên, đây là trường hợp mạng nhiều lớp KHÔNG hoạt động giống như một perceptionron một lớp.


2

Để hiểu logic đằng sau các chức năng kích hoạt phi tuyến tính trước tiên, bạn nên hiểu tại sao các chức năng kích hoạt được sử dụng. Nói chung, các vấn đề trong thế giới thực đòi hỏi các giải pháp phi tuyến tính không tầm thường. Vì vậy, chúng ta cần một số chức năng để tạo ra sự phi tuyến tính. Về cơ bản những gì một chức năng kích hoạt làm là tạo ra sự phi tuyến tính này trong khi ánh xạ các giá trị đầu vào vào một phạm vi mong muốn.

Tuy nhiên, các hàm kích hoạt tuyến tính có thể được sử dụng trong các trường hợp rất hạn chế khi bạn không cần các lớp ẩn như hồi quy tuyến tính. Thông thường, việc tạo ra một mạng thần kinh cho loại vấn đề này là vô nghĩa vì không phụ thuộc vào số lượng các lớp ẩn, mạng này sẽ tạo ra một tổ hợp tuyến tính của các đầu vào có thể được thực hiện chỉ trong một bước. Nói cách khác, nó hoạt động như một lớp duy nhất.

Ngoài ra còn có một vài thuộc tính mong muốn hơn cho các chức năng kích hoạt như sự khác biệt liên tục . Vì chúng tôi đang sử dụng backpropagation, nên hàm chúng tôi tạo ra phải khác biệt tại bất kỳ điểm nào. Tôi thực sự khuyên bạn nên kiểm tra trang wikipedia để biết các chức năng kích hoạt từ đây để hiểu rõ hơn về chủ đề này.


2

Một số câu trả lời tốt ở đây. Sẽ thật tốt khi chỉ ra cuốn sách "Nhận dạng mẫu và học máy" của Christopher M. Bishop. Đó là một cuốn sách đáng để tham khảo để hiểu sâu hơn về một số khái niệm liên quan đến ML. Trích từ trang 229 (phần 5.1):

Nếu các chức năng kích hoạt của tất cả các đơn vị ẩn trong mạng được coi là tuyến tính, thì đối với bất kỳ mạng nào như vậy, chúng ta luôn có thể tìm thấy một mạng tương đương mà không có các đơn vị ẩn. Điều này xuất phát từ thực tế là thành phần của các phép biến đổi tuyến tính kế tiếp tự nó là một phép biến đổi tuyến tính. Tuy nhiên, nếu số lượng đơn vị ẩn nhỏ hơn số lượng đơn vị đầu vào hoặc đầu ra, thì các phép biến đổi mà mạng có thể tạo ra không phải là các phép biến đổi tuyến tính tổng quát nhất có thể từ đầu vào sang đầu ra vì thông tin bị mất trong việc giảm kích thước tại đơn vị ẩn. Trong Phần 12.4.2, chúng tôi chỉ ra rằng các mạng của các đơn vị tuyến tính làm phát sinh phân tích thành phần chính. Tuy nhiên, nói chung, có rất ít sự quan tâm đến các mạng nhiều lớp của các đơn vị tuyến tính.


1

Như tôi nhớ - các hàm sigmoid được sử dụng vì đạo hàm của chúng phù hợp với thuật toán BP rất dễ tính toán, một cái gì đó đơn giản như f (x) (1-f (x)). Tôi không nhớ chính xác toán học. Trên thực tế, bất kỳ chức năng với các dẫn xuất có thể được sử dụng.


7
Hàm vẫn muốn tăng đơn điệu, như tôi nhớ. Vì vậy, không phải bất kỳ chức năng.
Novak

1

Một lớp NN của một số tế bào thần kinh có thể được sử dụng để tìm hiểu các vấn đề tuyến tính không thể tách rời. Ví dụ, hàm XOR có thể được lấy bằng hai lớp với chức năng kích hoạt bước.


0

Hãy để tôi giải thích cho bạn đơn giản nhất có thể:

Mạng nơ ron được sử dụng trong nhận dạng mẫu đúng? Và tìm mẫu là một kỹ thuật phi tuyến tính.

Giả sử vì mục đích tranh luận, chúng tôi sử dụng hàm kích hoạt tuyến tính y = wX + b cho mỗi nơ ron đơn lẻ và đặt một cái gì đó giống như nếu y> 0 -> lớp 1 khác lớp 0.

Bây giờ chúng ta có thể tính toán tổn thất của mình bằng cách sử dụng mất lỗi vuông và truyền lại nó để mô hình học tốt, đúng không?

SAI LẦM.

  • Đối với lớp ẩn cuối cùng, giá trị được cập nhật sẽ là w {l} = w {l} - (alpha) * X.

  • Đối với lớp ẩn cuối cùng thứ hai, giá trị được cập nhật sẽ là w {l-1} = w {l-1} - (alpha) * w {l} * X.

  • Đối với lớp ẩn cuối cùng thứ i, giá trị được cập nhật sẽ là w {i} = w {i} - (alpha) * w {l} ... * w {i + 1} * X.

Điều này dẫn đến việc chúng tôi nhân tất cả các ma trận trọng số với nhau do đó dẫn đến các khả năng: A) w {i} hầu như không thay đổi do độ dốc biến mất B) w {i} thay đổi đáng kể và không chính xác do nổ gradient C) w {i} thay đổi tốt đủ để cung cấp cho chúng tôi một số điểm phù hợp tốt

Trong trường hợp C xảy ra, điều đó có nghĩa là vấn đề phân loại / dự đoán của chúng tôi rất có thể là một hồi quy tuyến tính / logistic đơn giản dựa trên một và không bao giờ yêu cầu một mạng thần kinh ngay từ đầu!

Cho dù NN của bạn có mạnh mẽ hay được điều chỉnh tốt như thế nào, nếu bạn sử dụng chức năng kích hoạt tuyến tính, bạn sẽ không bao giờ có thể giải quyết các vấn đề nhận dạng mẫu phi tuyến tính


-3

Đó hoàn toàn không phải là một yêu cầu. Trong thực tế, chức năng kích hoạt tuyến tính chỉnh lưu rất hữu ích trong các mạng thần kinh lớn. Việc tính toán độ dốc nhanh hơn nhiều và nó gây ra sự thưa thớt bằng cách đặt giới hạn tối thiểu là 0.

Xem phần sau để biết thêm chi tiết: https://www.academia.edu/7826776/Mathologists_Intuition_for_Performance_of_Rectified_Linear_Unit_in_Deep_Neural_Networks


Biên tập:

Đã có một số cuộc thảo luận về việc liệu chức năng kích hoạt tuyến tính được chỉnh sửa có thể được gọi là chức năng tuyến tính hay không.

Đúng, về mặt kỹ thuật nó là một hàm phi tuyến vì nó không tuyến tính tại điểm x = 0, tuy nhiên, vẫn đúng khi nói rằng nó là tuyến tính ở tất cả các điểm khác, vì vậy tôi không nghĩ rằng nó hữu ích cho nitpick ở đây,

Tôi có thể đã chọn chức năng nhận dạng và nó vẫn đúng, nhưng tôi đã chọn ReLU làm ví dụ vì sự phổ biến gần đây của nó.


8
Hàm kích hoạt tuyến tính được chỉnh lưu cũng là phi tuyến tính (mặc dù tên của nó). Nó chỉ là tuyến tính cho các giá trị tích cực
Plankalkül

4
Về mặt kỹ thuật, nó không chính xác trên toàn bộ miền, cụ thể là tại x = 0 (thực tế nó là tuyến tính cho x <0, vì f (x) = 0 là hàm tuyến tính). Nó cũng không khác biệt nên hàm gradient cũng không thể tính toán được hoàn toàn, nhưng trong thực tế, các kỹ thuật này rất dễ khắc phục.
eski

4
Anh ấy không chỉ đúng về mặt kỹ thuật, anh ấy còn đúng trong thực tế (hoặc đại loại như thế). Chính sự phi tuyến tính của ReLU làm cho chúng hữu ích. Nếu chúng là tuyến tính, thì chúng sẽ có chức năng kích hoạt trên biểu mẫu f(x) = a*x(vì đó là loại chức năng kích hoạt tuyến tính duy nhất), vô dụng như một chức năng kích hoạt (trừ khi bạn kết hợp nó với các chức năng kích hoạt phi tuyến tính ).
HelloGoodbye

10
Đơn vị tuyến tính chỉnh lưu (ReLU) không phải là tuyến tính và nó không chỉ là một "chi tiết nhỏ" mà mọi người đang gây ra, đó là một lý do quan trọng quan trọng về lý do tại sao nó hữu ích để bắt đầu. Một mạng nơ ron với ma trận danh tính hoặc một đơn vị tuyến tính thông thường được sử dụng làm hàm kích hoạt sẽ không thể mô hình hóa các hàm phi tuyến tính. Chỉ vì nó tuyến tính trên 0 không có nghĩa là nó thực sự là một hàm tuyến tính. ReLU bị rò rỉ là "tuyến tính" dưới 0, nhưng nó vẫn không phải là một hàm tuyến tính và chắc chắn không thể được thay thế bởi chức năng nhận dạng. Phi tuyến chắc chắn là một yêu cầu.
Essam Al-Mansouri

3
Đó thực sự là một khái niệm gọi là hàm tuyến tính piecewise.
eski
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.