Chức năng Softmax vs Sigmoid trong phân loại Logistic?


63

Điều gì quyết định lựa chọn chức năng (Softmax vs Sigmoid) trong phân loại Logistic?

Giả sử có 4 lớp đầu ra. Mỗi hàm trên đưa ra xác suất của mỗi lớp là đầu ra chính xác. Vì vậy, cái nào để lấy một phân loại?


16
Hàm softmax không có gì khác ngoài việc khái quát hóa sigmoid, vì vậy nó không hoàn toàn rõ ràng ý của bạn về "softmax so với sigmoid."
DSaxton

2
Đó là trường hợp với sigmoid. Khi chúng ta sử dụng sigmoid, một lớp có xác suất và lớp kia có xác suất . exp(βTx)/(exp(βTx)+1)1/(exp(βTx)+1)
DSaxton

3
Các poster reddit đang làm cho một sự khác biệt mà tôi nghĩ là sai hoặc ít nhất là không liên quan. Việc một trong các lớp có trọng số hay không chỉ là vấn đề thay đổi điểm số, điều này không ảnh hưởng đến xác suất.
DSaxton


3
"Tôi không hoàn toàn rõ ý của bạn khi nói" softmax so với sigmoid. "" ngay bên dưới tiêu đề, có phần chính của câu hỏi - rất dễ bỏ lỡ, tôi biết. Ngoài ra, đây là một tiêu đề tốt để hướng các truy vấn google đến đây để trả lời chính xác những gì được hỏi.
michael

Câu trả lời:


77

Hàm sigmoid được sử dụng cho hồi quy logistic hai lớp, trong khi đó hàm softmax được sử dụng cho hồi quy logistic đa giác (còn gọi là MaxEnt, hồi quy logistic đa thức, hồi quy softmax, Phân loại Entropy tối đa).


Trong hồi quy logistic hai lớp, các xác suất dự đoán như sau, sử dụng hàm sigmoid:

Pr(Yi=0)=eβXi1+eβ0XiPr(Yi=1)=1Pr(Yi=0)=11+eβXi

Trong hồi quy logistic đa giác, với các lớp , các xác suất dự đoán như sau, sử dụng hàm softmax:K

Pr(Yi=k)=eβkXi 0cKeβcXi

Người ta có thể quan sát rằng hàm softmax là một phần mở rộng của hàm sigmoid đối với trường hợp đa giác, như được giải thích dưới đây. Chúng ta hãy xem hồi quy logistic đa giác, với các :K=2

Pr(Yi=0)=eβ0Xi 0cKeβcXi=eβ0Xieβ0Xi+eβ1Xi=e(β0β1)Xie(β0β1)Xi+1=eβXi1+eβXiPr(Yi=1)=eβ1Xi 0cKeβcXi=eβ1Xieβ0Xi+eβ1Xi=1e(β0β1)Xi+1=11+eβXi

với . Chúng tôi thấy rằng chúng tôi có được xác suất giống như trong hồi quy logistic hai lớp bằng cách sử dụng hàm sigmoid. Wikipedia mở rộng thêm một chút về điều đó.β=(β0β1)


1
Tôi ngây thơ trong cái này, nhưng tôi thấy điều này rất nhiều thời gian = - (0 − 1) Điều gì có thể giải thích cho nó? Theo như tôi biết trong Sigmoids sẽ là một vectơ. Và họ thường là một cho chạy. Sau đó, làm thế nào β0 và β1 đến trong hình?
Ishan Bhatt

1
@IshanBhatt bình luận này có thể giúp đỡ.
Tom Hale

thật kỳ lạ, tôi vẫn có thể hồi quy thành đa kính chỉ bằng sigmoid :)
datdinhquoc

15

Trên thực tế, chúng tương đương, theo nghĩa là người ta có thể biến thành người khác.

Giả sử rằng dữ liệu của bạn được biểu thị bằng một vectơ , có kích thước tùy ý và bạn đã tạo một trình phân loại nhị phân cho nó, sử dụng một phép biến đổi affine theo sau là softmax:x

(z0z1)=(w0Tw1T)x+(b0b1),
P(Ci|x)=softmax(zi)=eziez0+ez1,i{0,1}.

Hãy biến đổi nó thành một bộ phân loại nhị phân tương đương sử dụng một sigmoid thay vì softmax. Trước hết, chúng tôi phải quyết định đâu là xác suất mà chúng tôi muốn sigmoid xuất ra (có thể dành cho lớp hoặc ). Lựa chọn này hoàn toàn tùy ý và vì vậy tôi chọn lớp . Sau đó, phân loại của tôi sẽ có dạng:C0C1C0

z=wTx+b,
P(C0|x)=σ(z)=11+ez,
P(C1|x)=1σ(z).

Các phân loại là tương đương nếu xác suất là như nhau, vì vậy chúng ta phải áp đặt:

σ(z)=softmax(z0)

Thay , và bởi biểu thức của họ về và và thực hiện một số đơn giản Thao tác đại số, bạn có thể xác minh rằng đẳng thức trên giữ nếu và chỉ khi và được đưa ra bởi:z0z1zw0,w1,w,b0,b1,bxwb

w=w0w1,
b=b0b1.

@null Ok, tôi nếu bạn hỏi vậy thì bạn không hiểu lời giải thích của tôi. Hãy để tôi giải quyết vấn đề cụ thể của bạn: nếu bạn nói với tôi rằng bạn đang cung cấp dữ liệu của mình cho một sigmoid, thì đó phải là số một chiều, . Khi cho nó vào một sigmoid, bạn có xác suất thuộc một trong hai lớp của bạn, ví dụ : . Khi đó, xác suất tồn tại trong là: . Bây giờ hãy thay thế sigmoid của bạn bằng một softmax. (Còn tiếp). xxC0P(C0|x)=σ(x)xC1P(C1|x)=1P(C0|x)=σ(x)
Đ ...

(Tiếp tục). Để áp dụng softmax cho bài toán phân loại với hai lớp, bạn cần chuyển dữ liệu một chiều của mình thành một vectơ hai chiều. Do đó, chúng ta cần phải xác định của chúng tôi và . Hãy chọn . Vì phải đáp ứng , nên chúng tôi có , vì vậy . Bây giờ, chúng ta có và . Sử dụng điều này, bạn có thể xác minh ngay rằng . w0w1w0=1w1w=w0w11=1w1w1=0z0=w0x=xz1=w1x=0σ(x)=softmax(z0)
Đ ...

Hơn nữa, bất kỳ sự kết hợp nào của và thỏa mãn (nghĩa là, ) sẽ dẫn đến kết quả chính xác như nhau. Điều này cho thấy softmax có một tham số dự phòng. Mặc dù điều này có vẻ ngu ngốc, nhưng thực tế nó là một thuộc tính thú vị, vì nó cho phép chuẩn hóa các tham số , điều này thúc đẩy sự ổn định về số của thuật toán học và suy luận. Nhưng đây chỉ là một bình luận thêm, không quan trọng để trả lời câu hỏi của bạn :)w0w1w=w0w11=w1w0wi
D ...

Cảm ơn rất nhiều. Tôi hiểu rồi. Trong nhận xét đầu tiên của bạn, xác suất có thể phải là . Bây giờ tôi hiểu ý tưởng đằng sau sự biến đổi là gì. P(C1|x)1σ(x)
null

Rất vui vì bạn đã hiểu nó;) Vâng, đó là một lỗi đánh máy, rõ ràng nó phải là . Cảm ơn đã chỉ ra điều đó! P(C1|x)=1σ(x)
Đ ...

8

Tôi đã nhận thấy mọi người thường được hướng đến câu hỏi này khi tìm kiếm có nên sử dụng sigmoid vs softmax trong các mạng thần kinh hay không. Nếu bạn là một trong những người xây dựng bộ phân loại mạng thần kinh, đây là cách quyết định nên áp dụng sigmoid hoặc softmax cho các giá trị đầu ra thô từ mạng của bạn:

  • Nếu bạn có một vấn đề phân loại đa nhãn = có nhiều hơn một "câu trả lời đúng" = các đầu ra KHÔNG loại trừ lẫn nhau, thì hãy sử dụng hàm sigmoid trên mỗi đầu ra thô một cách độc lập. Sigmoid sẽ cho phép bạn có xác suất cao cho tất cả các lớp học của bạn, một số trong số họ hoặc không ai trong số họ. Ví dụ: phân loại bệnh trong hình ảnh X quang ngực. Hình ảnh có thể chứa viêm phổi, khí phế thũng và / hoặc ung thư hoặc không có phát hiện nào trong số đó.
  • Nếu bạn có một vấn đề phân loại nhiều lớp = chỉ có một "câu trả lời đúng" = các đầu ra loại trừ lẫn nhau, thì hãy sử dụng hàm softmax. Softmax sẽ thực thi rằng tổng xác suất của các lớp đầu ra của bạn bằng một, do đó, để tăng xác suất của một lớp cụ thể, mô hình của bạn phải giảm tương ứng xác suất của ít nhất một trong các lớp khác. Ví dụ: phân loại hình ảnh từ tập dữ liệu MNIST của các chữ số viết tay. Một hình ảnh duy nhất của một chữ số chỉ có một danh tính thật - hình ảnh không thể là 7 và 8 cùng một lúc.

Tham khảo: để được giải thích chi tiết hơn về thời điểm sử dụng sigmoid so với softmax trong thiết kế mạng thần kinh, bao gồm các tính toán mẫu, vui lòng xem bài viết này: "Phân loại: Sigmoid so với Softmax."


-1

Thêm vào tất cả các câu trả lời trước - tôi muốn đề cập đến thực tế là bất kỳ vấn đề phân loại đa lớp nào cũng có thể được giảm xuống thành nhiều vấn đề phân loại nhị phân bằng phương pháp "một-tất cả", tức là có C sigmoids (khi C là số các lớp) và diễn giải mọi sigmoid có xác suất có thuộc lớp cụ thể đó hay không và lấy xác suất tối đa.

Vì vậy, ví dụ, trong ví dụ về chữ số MNIST, bạn có thể sử dụng softmax hoặc mười sigmoids. Thực tế đây là những gì Andrew Ng làm trong khóa học Coursera ML của mình. Bạn có thể kiểm tra ở đây cách Andrew Ng sử dụng 10 sigmoids để phân loại đa lớp (được chuyển thể từ Matlab thành python của tôi), và đây là sự thích ứng softmax của tôi trong python.

Ngoài ra, điều đáng chú ý là trong khi các hàm tương đương (với mục đích phân loại đa lớp), chúng khác nhau một chút trong cách thực hiện (đặc biệt là liên quan đến các dẫn xuất của chúng và cách biểu diễn y).

Một lợi thế lớn của việc sử dụng nhiều phân loại nhị phân (ví dụ Sigmoids) so với phân loại đa lớp đơn (ví dụ Softmax) - là nếu softmax của bạn quá lớn (ví dụ: nếu bạn đang sử dụng một từ nóng một cỡ từ 10K trở lên ) - nó có thể không hiệu quả để đào tạo nó. Thay vào đó, những gì bạn có thể làm là lấy một phần nhỏ trong tập huấn luyện của bạn và sử dụng nó để chỉ huấn luyện một phần nhỏ trong sigmoids của bạn. Đây là ý tưởng chính đằng sau Lấy mẫu tiêu cực .


Các hàm không tương đương vì mạng softmax bị hạn chế tạo phân phối xác suất trên các lớp dưới dạng đầu ra: vectơ không âm và tổng thành 1. Các đơn vị sigmoid không âm, nhưng chúng có thể tổng hợp với bất kỳ số nào từ 0 đến ; nó không phải là một phân phối xác suất hợp lệ. Sự khác biệt này là rất quan trọng để mô tả cách hai chức năng khác nhau. CC
Phục hồi lại

Định nghĩa tương đương của bạn là gì? Của tôi là: bạn có thể sử dụng hoặc để phân loại đa lớp mà không có vấn đề gì. Ngoài ra - bất kỳ phân loại đa lớp nào sử dụng softmax đều có thể được chuyển đổi thành phân loại nhị phân một so với tất cả sử dụng sigmoids. Tại sao tôi nên quan tâm đến việc phân phối kết quả đầu ra lên 1?
David Refaeli

Lập luận của bạn về phân loại đa nhãn cho thấy tại sao sigmoid và softmax không tương đương. Khi sử dụng softmax, việc tăng xác suất của một lớp sẽ làm giảm tổng xác suất của tất cả các lớp khác (vì tổng bằng 1). Sử dụng sigmoid, tăng xác suất của một lớp không làm thay đổi tổng xác suất của các lớp khác. Quan sát này là lý do mà sigmoid hợp lý để phân loại nhiều nhãn: một ví dụ duy nhất có thể thuộc về các lớpSum-to-1 cũng là lý do khiến softmax không phù hợp để phân loại nhiều nhãn. 0,1,2,,C
Phục hồi

Tôi bị mất bạn. Đối với tất cả các mục đích thực tế mà tôi biết, nhiều sigmoids = 1 softmax. Tôi thậm chí đã thêm trường hợp lấy mẫu âm tính, trong đó nhiều sigmoids thực sự có lợi thế hơn so với softmax.
David Refaeli
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.