Đ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?
Đ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?
Câu trả lời:
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:
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:
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 :
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 đó.
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:
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:
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:
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:
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:
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."
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 .