Danh sách đầy đủ các chức năng kích hoạt trong các mạng thần kinh với ưu / nhược điểm


94

Có tài liệu tham khảo nào cung cấp danh sách đầy đủ các chức năng kích hoạt trong các mạng thần kinh cùng với ưu / nhược điểm của chúng (và lý tưởng nhất là một số gợi ý cho các ấn phẩm mà chúng đã thành công hoặc không thành công)?


Tôi không biết đủ về ANN, nhưng trừ khi các chức năng kích hoạt khác nhau đáng kể về hình dạng, sẽ rất khó để phân biệt chúng. Để thảo luận về một tình huống tương tự, bạn có thể thấy câu trả lời của tôi ở đây: Sự khác biệt giữa mô hình logit và probit .
gung

1
không, nó làm cho một sự khác biệt khá lớn
Viliami

vi.wikipedia.org/wiki/Activation_feft là một tài nguyên tốt; bạn có thể sử dụng nhiều thứ khác, bao gồm sin(x), xem openreview.net/pdf?id=Sks3zF9eg .
Piotr Migdal

Để xem Hướng dẫn bằng video về các chức năng kích hoạt, hãy truy cập: quickkt.com/tutorials/art bát
intellect / deep

Câu trả lời:


144

Tôi sẽ bắt đầu lập một danh sách ở đây những cái tôi đã học cho đến nay. Như @marcodena đã nói, ưu và nhược điểm là khó khăn hơn vì chủ yếu chỉ là heuristic học được từ việc thử những thứ này, nhưng tôi ít nhất có một danh sách những thứ chúng không thể làm tổn thương.

Đầu tiên, tôi sẽ xác định rõ ràng ký hiệu để không nhầm lẫn:

Ký hiệu

Ký hiệu này là từ cuốn sách của Neilsen .

Mạng thần kinh Feedforward là nhiều lớp tế bào thần kinh được kết nối với nhau. Nó nhận một đầu vào, sau đó đầu vào "nhỏ giọt" qua mạng và mạng nơ ron trả về một vectơ đầu ra.

Chính thức hơn, gọi kích hoạt (còn gọi là đầu ra) của nơron trong lớp , trong đó là phần tử trong vectơ đầu vào. j t h i t h a 1 j j t hajijthithaj1jth

Sau đó, chúng ta có thể liên kết đầu vào của lớp tiếp theo với trước đó thông qua mối quan hệ sau:

aji=σ(k(wjkiaki1)+bji)

Ở đâu

  • σ là chức năng kích hoạt,
  • k t h ( i - 1 ) t h j t h i t hwjki là trọng lượng từ tế bào thần kinh trong lớp đến tế bào thần kinh trong lớp ,kth(i1)thjthith
  • j t h i t hbji là độ lệch của nơron trong lớp vàjthith
  • j t h i t haji đại diện cho giá trị kích hoạt của nơron trong lớp .jthith

Đôi khi chúng ta viết để thể hiện , nói cách khác, giá trị kích hoạt của nơ ron trước khi áp dụng chức năng kích hoạt .k ( w i j ka i - 1 k ) + b i jzjik(wjkiaki1)+bji

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

Để ký hiệu ngắn gọn hơn chúng ta có thể viết

ai=σ(wi×ai1+bi)

Để sử dụng công thức này để tính toán đầu ra của mạng feedforward cho một số đầu vào , hãy đặt , sau đó tính , Trong đó là số lớp.a 1 = I a 2 , a 3 , Mạnh , a m mIRna1=Ia2,a3,,amm

Chức năng kích hoạt

(sau đây, chúng tôi sẽ viết thay vì để dễ đọc)e xexp(x)ex

Danh tính

Còn được gọi là một chức năng kích hoạt tuyến tính.

aji=σ(zji)=zji

Danh tính

Bươc

aji=σ(zji)={0if zji<01if zji>0

Bươc

Tuyến tính Piecewise

Chọn một số và , đó là "phạm vi" của chúng tôi. Mọi thứ nhỏ hơn phạm vi này sẽ là 0 và mọi thứ lớn hơn phạm vi này sẽ là 1. Mọi thứ khác được nội suy tuyến tính giữa. Chính thức: x tối đaxminxmax

aji=σ(zji)={0if zji<xminmzji+bif xminzjixmax1if zji>xmax

Ở đâu

m=1xmaxxmin

b=mxmin=1mxmax

Tuyến tính Piecewise

Sigmoid

aji=σ(zji)=11+exp(zji)

Sigmoid

Nhật ký bổ sung

aji=σ(zji)=1exp(exp(zji))

Nhật ký bổ sung

Lưỡng cực

aji=σ(zji)={1if zji<0   1if zji>0

Lưỡng cực

Sigmoid lưỡng cực

aji=σ(zji)=1exp(zji)1+exp(zji)
Sigmoid lưỡng cực

Tanh

aji=σ(zji)=tanh(zji)

Tanh

LeCun của Tanh

Xem Backprop hiệu quả .

aji=σ(zji)=1.7159tanh(23zji)

LeCun của Tanh

Thu nhỏ:

LeCun's Tanh thu nhỏ

Khó Tanh

aji=σ(zji)=max(1,min(1,zji))

Khó Tanh

Tuyệt đối

aji=σ(zji)=∣zji

Tuyệt đối

Bộ chỉnh lưu

Còn được gọi là Đơn vị tuyến tính chỉnh lưu (ReLU), Max hoặc Hàm Ramp .

aji=σ(zji)=max(0,zji)

Bộ chỉnh lưu

Sửa đổi của ReLU

Đây là một số chức năng kích hoạt mà tôi đã chơi với nó dường như có hiệu suất rất tốt cho MNIST vì những lý do bí ẩn.

aji=σ(zji)=max(0,zji)+cos(zji)

ReLU cos

Thu nhỏ:

ReLU cos thu nhỏ

aji=σ(zji)=max(0,zji)+sin(zji)

ReLU tội lỗi

Thu nhỏ:

ReLU sin thu nhỏ

Chỉnh lưu mịn

Còn được gọi là Đơn vị tuyến tính chỉnh lưu mịn, Smooth Max hoặc Soft plus

aji=σ(zji)=log(1+exp(zji))

Chỉnh lưu mịn

Đăng nhập

aji=σ(zji)=log(zji(1zji))

Đăng nhập

Thu nhỏ:

Logit thu nhỏ

Probit

aji=σ(zji)=2erf1(2zji1)
.

Trong đó là Hàm Lỗi . Nó không thể được mô tả thông qua các chức năng cơ bản, nhưng bạn có thể tìm ra các cách xấp xỉ nghịch đảo tại trang Wikipedia và đây .erf

Ngoài ra, nó có thể được thể hiện như là

aji=σ(zji)=ϕ(zji)
.

Trong đó là hàm phân phối tích lũy (CDF). Xem ở đây cho các phương tiện gần đúng này.ϕ

Probit

Thu nhỏ:

Tỷ lệ probit

Cô sin

Xem bồn rửa nhà bếp ngẫu nhiên .

aji=σ(zji)=cos(zji)
.

Cô sin

Softmax

Còn được gọi là số mũ bình thường hóa.

aji=exp(zji)kexp(zki)

Cái này hơi lạ vì đầu ra của một nơ-ron đơn lẻ phụ thuộc vào các nơ-ron khác trong lớp đó. Nó cũng khó tính toán, vì có thể là một giá trị rất cao, trong trường hợp đó có thể sẽ tràn. Tương tự, nếu là một giá trị rất thấp, nó sẽ tràn xuống và trở thành .zjiexp(zji)zji0

Để chống lại điều này, thay vào đó chúng tôi sẽ tính toán . Điều này cho chúng ta:log(aji)

log(aji)=log(exp(zji)kexp(zki))

log(aji)=zjilog(kexp(zki))

Ở đây chúng ta cần sử dụng thủ thuật log-sum-exp :

Hãy nói rằng chúng tôi đang tính toán:

log(e2+e9+e11+e7+e2+e5)

Trước tiên chúng tôi sẽ sắp xếp số mũ của chúng theo độ lớn để thuận tiện:

log(e11+e9+e5+e2+e2+e7)

Sau đó, vì là mức cao nhất của chúng tôi, chúng tôi nhân với :e11e11e11

log(e11e11(e11+e9+e5+e2+e2+e7))

log(1e11(e0+e2+e6+e9+e13+e18))

log(e11(e0+e2+e6+e9+e13+e18))

log(e11)+log(e0+e2+e6+e9+e13+e18)

11+log(e0+e2+e6+e9+e13+e18)

Sau đó chúng ta có thể tính biểu thức bên phải và lấy nhật ký của nó. Bạn có thể làm điều này vì số tiền đó rất nhỏ đối với , do đó, bất kỳ dòng nào về 0 sẽ không đủ quan trọng để tạo ra sự khác biệt. Sự cố tràn không thể xảy ra trong biểu thức bên phải vì chúng tôi được đảm bảo rằng sau khi nhân với , tất cả các quyền hạn sẽ là .log(e11)e110

Chính thức, chúng tôi gọi . Sau đó:m=max(z1i,z2i,z3i,...)

log(kexp(zki))=m+log(kexp(zkim))

Chức năng softmax của chúng tôi sau đó trở thành:

aji=exp(log(aji))=exp(zjimlog(kexp(zkim)))

Cũng như một sidenote, đạo hàm của hàm softmax là:

dσ(zji)dzji=σ(zji)=σ(zji)(1σ(zji))

Tối đa

Cái này cũng hơi khó. Về cơ bản, ý tưởng là chúng ta chia mỗi nơ-ron trong lớp cực đại của chúng thành nhiều nơ-ron phụ, mỗi nơ-ron có trọng lượng và thành kiến ​​riêng. Sau đó, đầu vào của một nơ-ron đi đến từng nơ-ron phụ thay vào đó, và mỗi nơ-ron phụ chỉ đơn giản xuất ra các của chúng (mà không áp dụng bất kỳ chức năng kích hoạt nào). Các của tế bào thần kinh có nghĩa là sau đó tối đa của tất cả các kết quả đầu ra của nó phụ neuron của.zaji

Chính thức, trong một tế bào thần kinh, nói rằng chúng ta có tế bào thần kinh phụ. Sau đón

aji=maxk[1,n]sjki

Ở đâu

sjki=ai1wjki+bjki

( là sản phẩm chấm )

Để giúp chúng tôi suy nghĩ về điều này, hãy xem xét ma trận trọng số cho lớp của mạng thần kinh đang sử dụng, giả sử, chức năng kích hoạt sigmoid. là một ma trận 2D, trong đó mỗi cột là một vectơ cho nơ ron chứa trọng số cho mỗi nơ ron trong lớp trước đó .WiithWiWjiji1

Nếu chúng ta sẽ có các nơ-ron phụ, chúng ta sẽ cần một ma trận trọng lượng 2D cho mỗi nơ-ron, vì mỗi nơ-ron phụ sẽ cần một vectơ chứa trọng lượng cho mỗi nơ-ron ở lớp trước. Điều này có nghĩa là hiện là ma trận trọng lượng 3D, trong đó mỗi là ma trận trọng lượng 2D cho một nơron . Và sau đó là một vectơ cho tế bào thần kinh phụ trong tế bào thần kinh có chứa trọng lượng cho mỗi tế bào thần kinh trong lớp trước .WiWjijWjkikji1

Tương tự, trong một mạng nơ ron đang sử dụng lại, giả sử, hàm kích hoạt sigmoid, là một vectơ có độ lệch cho mỗi nơ ron trong lớp .bibjiji

Để thực hiện điều này với các nơ-ron phụ, chúng ta cần một ma trận thiên vị 2D cho mỗi lớp , trong đó là vectơ có độ lệch cho mỗi subneuron trong tế bào thần kinh.biibjibjkikjth

Có một ma trận trọng số và một vectơ thiên vị cho mỗi nơ-ron sau đó làm cho các biểu thức trên rất rõ ràng, nó chỉ đơn giản áp dụng các trọng số của mỗi nơ-ron phụ cho các đầu ra từ lớp , sau đó áp dụng các thành kiến ​​của họ và lấy tối đa của chúng.wjibjiwjkiai1i1bjki

Mạng chức năng cơ sở xuyên tâm

Mạng chức năng cơ sở xuyên tâm là một sửa đổi của Mạng thần kinh Feedforward, trong đó thay vì sử dụng

aji=σ(k(wjkiaki1)+bji)

chúng ta có một trọng số cho mỗi nút trong lớp trước (như bình thường) và cũng có một vectơ trung bình và một vectơ độ lệch chuẩn cho mỗi nút trong lớp trước.wjkikμjkiσjki

Sau đó, chúng tôi gọi hàm kích hoạt của chúng tôi để tránh bị nhầm lẫn với các vectơ độ lệch chuẩn . Bây giờ để tính trước tiên chúng ta cần tính một cho mỗi nút trong lớp trước. Một lựa chọn là sử dụng khoảng cách Euclide:ρσjkiajizjki

zjki=(ai1μjki=(ai1μjki)2

Trong đó là phần tử của . Cái này không sử dụng . Ngoài ra, có khoảng cách Mahalanobis, được cho là hoạt động tốt hơn:μjkithμjkiσjki

zjki=(ai1μjki)TΣjki(ai1μjki)

Trong đó là ma trận hiệp phương sai , được định nghĩa là:Σjki

Σjki=diag(σjki)

Nói cách khác, là ma trận đường chéo với là các phần tử đường chéo. Chúng tôi định nghĩa và là các vectơ cột ở đây vì đó là ký hiệu thường được sử dụng.Σjkiσjkiai1μjki

Đây thực sự chỉ là nói rằng khoảng cách Mahalanobis được định nghĩa là

zjki=(ai1μjki)2σjki

Trong đó là phần tử của . Lưu ý rằng phải luôn dương, nhưng đây là một yêu cầu điển hình cho độ lệch chuẩn nên điều này không gây ngạc nhiên.σjkithσjkiσjki

Nếu muốn, khoảng cách Mahalanobis đủ chung để ma trận hiệp phương sai có thể được định nghĩa là các ma trận khác. Ví dụ: nếu ma trận hiệp phương sai là ma trận danh tính, khoảng cách Mahalanobis của chúng ta giảm xuống khoảng cách Euclide. là khá phổ biến, và được gọi là khoảng cách Euclide bình thường .ΣjkiΣjki=diag(σjki)

Dù bằng cách nào, một khi chức năng khoảng cách của chúng ta đã được chọn, chúng ta có thể tính toán thông quaaji

aji=kwjkiρ(zjki)

Trong các mạng này, họ chọn nhân với trọng số sau khi áp dụng chức năng kích hoạt vì lý do.

Điều này mô tả cách tạo một mạng Chức năng cơ sở xuyên tâm nhiều lớp, tuy nhiên, thường chỉ có một trong số các nơ-ron này và đầu ra của nó là đầu ra của mạng. Nó được vẽ dưới dạng nhiều nơ-ron vì mỗi vectơ trung bình và mỗi vectơ độ lệch chuẩn của một nơ-ron đơn lẻ đó được coi là một "nơ-ron" và sau đó tất cả các đầu ra này có một lớp khác lấy tổng của các giá trị được tính đó nhân với các trọng số, giống như ở trên. Chia nó thành hai lớp với một vectơ "tóm tắt" ở cuối có vẻ kỳ lạ đối với tôi, nhưng đó là những gì họ làm.μjkiσjkiaji

Cũng xem tại đây .

Chức năng cơ sở xuyên tâm Chức năng kích hoạt mạng

Gaussian

ρ(zjki)=exp(12(zjki)2)

Gaussian

Đa năng

Chọn một số điểm . Sau đó, chúng tôi tính khoảng cách từ đến :(x,y)(zji,0)(x,y)

ρ(zjki)=(zjkix)2+y2

Đây là từ Wikipedia . Nó không bị ràng buộc, và có thể là bất kỳ giá trị tích cực nào, mặc dù tôi tự hỏi liệu có cách nào để bình thường hóa nó.

Khi , giá trị này tương đương với tuyệt đối (với độ dịch chuyển ngang ).y=0x

Đa năng

Nghịch đảo đa năng

Tương tự như bậc hai, ngoại trừ lật:

ρ(zjki)=1(zjkix)2+y2

Nghịch đảo đa năng

* Đồ họa từ Đồ thị của intmath sử dụng SVG .


12
Chào mừng đến với CV. +6 đây là thông tin tuyệt vời. Tôi hy vọng chúng ta sẽ thấy nhiều hơn như thế trong tương lai.
gung

1
Ngoài ra còn có chức năng tuyến tính chỉnh lưu trơn tru của biểu mẫu và probit. log(1+exp(x))
Ghi nhớ

Được rồi, tôi nghĩ rằng tôi đã thêm Logit, Probit và log-log bổ sung, tuy nhiên tôi không hiểu sâu sắc về các chủ đề này, vì vậy tôi có thể đã hiểu nhầm dạng viết của chúng. Điều này có đúng không?
Phylliida

3
Đây sẽ là một bài báo thú vị với một danh sách các tài liệu tham khảo tốt đẹp. Ví dụ: arxiv.org/abs/1505.03654 . Hãy liên hệ với tôi nếu bạn quyết định viết một bài báo và muốn các tài liệu tham khảo khác.
Hunaphu

9
ai đó nên cập nhật điều này với Elu, Leaky ReLU, PReLU và RReLU.
Viliami

24

Một danh sách như vậy, mặc dù không đầy đủ: http://cs231n.github.io/neural-networks-1/

Các chức năng kích hoạt thường được sử dụng

Mỗi hàm kích hoạt (hoặc phi tuyến tính ) lấy một số duy nhất và thực hiện một phép toán cố định nhất định trên nó. Có một số chức năng kích hoạt bạn có thể gặp trong thực tế:

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

Trái: Sigmoid phi tuyến tính ép các số thực nằm trong khoảng giữa [0,1] Phải: Các phi tuyến tanh ép các số thực nằm trong phạm vi giữa [-1,1].

Sigmoid. Tính phi tuyến tính sigmoid có dạng toán học và được hiển thị trong hình trên bên trái. Như đã nói ở phần trước, nó lấy một số có giá trị thực và "ép" nó trong phạm vi từ 0 đến 1. Đặc biệt, các số âm lớn trở thành 0 và các số dương lớn trở thành 1. Hàm sigmoid đã được sử dụng thường xuyên trong lịch sử vì nó có một cách giải thích tốt là tốc độ bắn của một nơron: từ không bắn hoàn toàn (0) đến bắn hoàn toàn bão hòa ở tần số tối đa giả định (1). Trong thực tế, phi tuyến tính sigmoid gần đây đã không còn được ưa chuộng và nó hiếm khi được sử dụng. Nó có hai nhược điểm chính:σ(x)=1/(1+ex)

  • Sigmoids bão hòa và tiêu diệt gradient . Một đặc tính không mong muốn của tế bào thần kinh sigmoid là khi kích hoạt của tế bào thần kinh bão hòa ở đuôi 0 hoặc 1, độ dốc tại các vùng này gần như bằng không. Hãy nhớ lại rằng trong quá trình truyền bá, độ dốc (cục bộ) này sẽ được nhân với độ dốc của đầu ra của cổng này cho toàn bộ mục tiêu. Do đó, nếu độ dốc cục bộ rất nhỏ, nó sẽ "tiêu diệt" độ dốc một cách hiệu quả và hầu như không có tín hiệu nào sẽ truyền qua tế bào thần kinh đến trọng lượng của nó và đệ quy vào dữ liệu của nó. Ngoài ra, người ta phải hết sức thận trọng khi khởi tạo trọng lượng của các tế bào thần kinh sigmoid để ngăn ngừa bão hòa. Ví dụ, nếu trọng lượng ban đầu quá lớn thì hầu hết các tế bào thần kinh sẽ trở nên bão hòa và mạng sẽ hầu như không học được.
  • Đầu ra Sigmoid không phải là trung tâm không . Điều này là không mong muốn vì các nơ-ron trong các lớp xử lý sau này trong Mạng thần kinh (sẽ sớm có thêm thông tin này) sẽ nhận được dữ liệu không phải là trung tâm. Này có ý nghĩa về sự năng động trong gradient descent, bởi vì nếu các dữ liệu đi vào một tế bào thần kinh luôn luôn là tích cực (ví dụ elementwise trong )), sau đó gradient trên trọng lượng chí trong lan truyền ngược trở hoặc tất cả đều dương hoặc tất cả âm (tùy thuộc vào độ dốc của toàn bộ biểu thức x>0f=wTx+bwf). Điều này có thể giới thiệu động lực zig-zagging không mong muốn trong các bản cập nhật độ dốc cho các trọng số. Tuy nhiên, lưu ý rằng một khi các gradient này được thêm vào trong một loạt dữ liệu, bản cập nhật cuối cùng cho các trọng số có thể có các dấu hiệu khác nhau, phần nào giảm thiểu vấn đề này. Do đó, đây là một sự bất tiện nhưng nó có hậu quả ít nghiêm trọng hơn so với vấn đề kích hoạt bão hòa ở trên.

Tanh. Sự phi tuyến tính tanh được hiển thị trên hình ảnh bên phải. Nó đè một số có giá trị thực vào phạm vi [-1, 1]. Giống như tế bào thần kinh sigmoid, kích hoạt của nó bão hòa, nhưng không giống như tế bào thần kinh sigmoid, đầu ra của nó là không tập trung. Do đó, trong thực tế, phi tuyến tanh luôn được ưa thích hơn so với phi tuyến sigmoid. Cũng lưu ý rằng nơ-ron tanh chỉ đơn giản là một nơ-ron sigmoid có tỷ lệ, đặc biệt là các tổ chức sau: .tanh(x)=2σ(2x)1

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

Trái: Hàm kích hoạt Đơn vị tuyến tính chỉnh sửa (ReLU), bằng 0 khi x <0 và sau đó tuyến tính với độ dốc 1 khi x> 0. Phải: Một âm mưu từ Krizhevsky et al. (pdf) giấy cho thấy sự cải thiện 6 lần về độ hội tụ với đơn vị ReLU so với đơn vị tanh.

ReLU. Đơn vị tuyến tính chỉnh lưu đã trở nên rất phổ biến trong vài năm qua. Nó tính hàm . Nói cách khác, kích hoạt chỉ đơn giản là ngưỡng 0 (xem hình trên bên trái). Có một số ưu và nhược điểm khi sử dụng ReLUs:f(x)=max(0,x)

  • (+) Nó đã được tìm thấy để tăng tốc đáng kể (ví dụ: hệ số 6 trong Krizhevsky và cộng sự ) sự hội tụ của độ dốc dốc ngẫu nhiên so với các hàm sigmoid / tanh. Có ý kiến ​​cho rằng điều này là do dạng tuyến tính, không bão hòa của nó.
  • (+) So với các tế bào thần kinh tanh / sigmoid liên quan đến các hoạt động đắt tiền (hàm mũ, v.v.), ReLU có thể được thực hiện bằng cách đơn giản là đập một ma trận kích hoạt ở mức 0.
  • (-) Thật không may, các đơn vị ReLU có thể dễ vỡ trong quá trình huấn luyện 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 trên bất kỳ biểu dữ liệu nào nữa. Nếu điều này xảy ra, thì độ dốc chảy qua đơn vị sẽ mãi mãi bằng không kể từ thời điểm đó. Đó là, các đơn vị ReLU có thể chết không hồi phục trong quá trình huấn luyện 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ể "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 thiết lập đúng về tỷ lệ học tập, điều này ít xảy ra hơn.

Rò rỉ ReLU. ReLU bị rò rỉ là một trong những nỗ lực để khắc phục vấn đề "ReLU sắp chết". Thay vì hàm bằng 0 khi x <0, ReLU bị rò rỉ thay vào đó sẽ có độ dốc âm nhỏ (0,01 hoặc hơn). Nghĩa là, hàm tính trong đó là một hằng số nhỏ. Một số người báo cáo thành công với hình thức kích hoạt chức năng này, nhưng kết quả không phải lúc nào cũng nhất quán. Độ dốc trong vùng âm cũng có thể được tạo thành một tham số của mỗi nơ-ron, như đã thấy trong các nơ-ron PReLU, được giới thiệu trong Delving Deep vào Rectifier , bởi Kaiming He và cộng sự, 2015. Tuy nhiên, tính nhất quán của lợi ích giữa các nhiệm vụ hiện nay không rõ.f(x)=1(x<0)(αx)+1(x>=0)(x)α

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

Tối đa . Các loại đơn vị khác đã được đề xuất không có dạng chức năng trong đó tính phi tuyến tính được áp dụng trên sản phẩm chấm giữa trọng lượng và dữ liệu. Một lựa chọn tương đối phổ biến là tế bào thần kinh Maxout (được giới thiệu gần đây bởi Goodfellow và cộng sự ), khái quát hóa ReLU và phiên bản rò rỉ của nó. Tế bào thần kinh Maxout tính toán hàm . Lưu ý rằng cả ReLU và ReLU rò rỉ đều là trường hợp đặc biệt của mẫu này (ví dụ: đối với ReLU, chúng tôi cómax ( w T 1 x + b 1 , w T 2 x + b 2 ) w 1 , b 1 = 0f(wTx+b)max(w1Tx+b1,w2Tx+b2)w1,b1=0). Do đó, tế bào thần kinh Maxout được hưởng tất cả các lợi ích của đơn vị ReLU (chế độ hoạt động tuyến tính, không bão hòa) và không có nhược điểm của nó (chết ReLU). Tuy nhiên, không giống như các nơ-ron ReLU, nó nhân đôi số lượng tham số cho mỗi nơ-ron đơn lẻ, dẫn đến tổng số tham số cao.

Điều này kết thúc cuộc thảo luận của chúng tôi về các loại tế bào thần kinh phổ biến nhất và chức năng kích hoạt của chúng. Như một bình luận cuối cùng, rất hiếm khi trộn và kết hợp các loại nơ-ron khác nhau trong cùng một mạng, mặc dù không có vấn đề cơ bản nào khi làm như vậy.

TLDR : " Tôi nên sử dụng loại nơ ron nào? " Sử dụng phi tuyến tính ReLU, cẩn thận với tốc độ học tập của bạn và có thể theo dõi tỷ lệ các đơn vị "chết" trong mạng. Nếu điều này làm bạn lo lắng, hãy thử Leaky ReLU hoặc Maxout. Không bao giờ sử dụng sigmoid. Hãy thử tanh, nhưng hy vọng nó hoạt động kém hơn ReLU / Maxout.


Giấy phép: Giấy phép


MIT (MIT)

Bản quyền (c) 2015 Andrej Karpathy

Quyền này được cấp miễn phí cho bất kỳ người nào có được bản sao của phần mềm này và các tệp tài liệu liên quan ("Phần mềm") để xử lý Phần mềm mà không hạn chế, bao gồm nhưng không giới hạn quyền sử dụng, sao chép, sửa đổi, hợp nhất , xuất bản, phân phối, cấp phép lại và / hoặc bán các bản sao của Phần mềm và cho phép những người mà Phần mềm được cung cấp để làm như vậy, theo các điều kiện sau:

Thông báo bản quyền ở trên và thông báo cấp phép này sẽ được bao gồm trong tất cả các bản sao hoặc các phần quan trọng của Phần mềm.

PHẦN MỀM ĐƯỢC CUNG CẤP "NHƯ VẬY", KHÔNG CÓ ĐẢM BẢO CỦA BẤT K K LOẠI NÀO, RPR RÀNG HAY NGỤ Ý, BAO GỒM NHƯNG KHÔNG GIỚI HẠN ĐẢM BẢO ĐẢM BẢO TUYỆT VỜI, PHÙ HỢP ĐỐI VỚI MỘT MỤC ĐÍCH THAM GIA VÀ KHÔNG PHÙ HỢP. KHÔNG CÓ SỰ KIỆN NÀO NÊN CÁC TÁC GIẢ HOẶC NGƯỜI GIỮ BẢN QUYỀN ĐƯỢC TRÁCH NHIỆM PHÁP LÝ CHO BẤT K CL YÊU CẦU NÀO, TRÁCH NHIỆM HOẶC TRÁCH NHIỆM KHÁC, SAU KHI HOẠT ĐỘNG HỢP ĐỒNG HOẶC PHẦN MỀM HOẶC LIÊN QUAN ĐẾN PHẦN MỀM HOẶC LIÊN QUAN PHẦN MỀM.*

Các liên kết khác:


10

Tôi không nghĩ rằng một danh sách với ưu và nhược điểm tồn tại. Các chức năng kích hoạt phụ thuộc nhiều vào ứng dụng và chúng cũng phụ thuộc vào kiến ​​trúc của mạng thần kinh của bạn ( ví dụ ở đây bạn thấy ứng dụng của hai chức năng softmax, tương tự như chức năng sigmoid).

Bạn có thể tìm thấy một số nghiên cứu về hành vi chung của các chức năng, nhưng tôi nghĩ bạn sẽ không bao giờ có một danh sách xác định và dứt khoát (những gì bạn yêu cầu ...).

Tôi vẫn còn là một sinh viên, vì vậy tôi chỉ ra những gì tôi biết cho đến nay:

  • Ở đây bạn tìm thấy một số suy nghĩ về các hành vi của tanh và sigmoids với backpropagation. Tanh thì chung chung hơn, nhưng sigmoids ... (sẽ luôn có "nhưng")
  • Trong Mạng chỉnh lưu sâu thưa thớt Mạng lưới thần kinh của Glorot Xavier và cộng sự, họ tuyên bố rằng các đơn vị chỉnh lưu là hợp lý hơn về mặt sinh học và chúng hoạt động tốt hơn so với các mạng khác (sigmoid / tanh)

Đây là câu trả lời chính xác. Người ta có thể tạo ra một danh sách nhưng ưu và nhược điểm là hoàn toàn phụ thuộc vào dữ liệu. Trong thực tế, học các chức năng kích hoạt là hợp lý hơn nhiều trong lý thuyết. Lý do không có nhiều nghiên cứu tập trung vào nó là sigmoid "chỉ hoạt động". Cuối cùng, lợi ích duy nhất của bạn là tốc độ hội tụ thường không quan trọng
runDOSrun

4

Chỉ vì mục đích hoàn chỉnh cho câu trả lời tuyệt vời của Danielle, còn có những mô hình khác, trong đó một người ngẫu nhiên 'quay bánh xe' trên trọng lượng và / hoặc loại kích hoạt: máy trạng thái lỏng , máy học cực đoanmạng trạng thái tiếng vang .

Một cách để suy nghĩ về các kiến ​​trúc này: hồ chứa là một loại nhân như trong các SVM hoặc một lớp ẩn lớn trong FFNN đơn giản, nơi dữ liệu được chiếu tới một không gian siêu âm. Không có học tập thực tế, hồ chứa được tạo lại cho đến khi đạt được một giải pháp thỏa mãn.

Cũng thấy câu trả lời tốt đẹp này .


2

Một bài viết đánh giá các chức năng kích hoạt gần đây có thể được tìm thấy trong

" Các chức năng kích hoạt: So sánh các xu hướng trong thực tiễn và nghiên cứu cho việc học sâu " của Chigozie Enyinna Nwankpa, Winifred Ijomah, Anthony Gachagan và Stephen Marshall

Mạng lưới thần kinh sâu đã được sử dụng thành công trong các lĩnh vực mới nổi khác nhau để giải quyết các vấn đề phức tạp trong thế giới thực với các kiến ​​trúc có thể học sâu hơn (DL), đang được phát triển cho đến nay. Để đạt được các màn trình diễn hiện đại này, các kiến ​​trúc DL sử dụng các chức năng kích hoạt (AF), để thực hiện các tính toán đa dạng giữa các lớp ẩn và các lớp đầu ra của bất kỳ kiến ​​trúc DL cụ thể nào. Bài viết này trình bày một cuộc khảo sát về các AF hiện có được sử dụng trong các ứng dụng học sâu và nêu bật các xu hướng gần đây trong việc sử dụng các chức năng kích hoạt cho các ứng dụng học sâu. Điểm mới lạ của bài viết này là nó tập hợp phần lớn các AF được sử dụng trong DL và phác thảo các xu hướng hiện tại trong các ứng dụng và cách sử dụng các chức năng này trong các triển khai học tập sâu thực tế chống lại các kết quả nghiên cứu hiện đại. Việc biên dịch này sẽ hỗ trợ đưa ra các quyết định hiệu quả trong việc lựa chọn chức năng kích hoạt phù hợp và phù hợp nhất cho bất kỳ ứng dụng nào, sẵn sàng để triển khai. Bài viết này là kịp thời vì hầu hết các tài liệu nghiên cứu về AF đều nêu bật các kết quả và kết quả tương tự trong khi bài báo này sẽ là bài đầu tiên, để tổng hợp các xu hướng trong ứng dụng AF trong thực tế so với kết quả nghiên cứu từ tài liệu, được tìm thấy trong nghiên cứu sâu cho đến nay.

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.