Tôi đã tự hỏi mình câu hỏi này trong nhiều tháng. Các câu trả lời trên CrossValidated và Quora đều liệt kê các thuộc tính đẹp của hàm sigmoid logistic, nhưng tất cả có vẻ như chúng ta đã đoán được hàm này một cách khéo léo. Những gì tôi đã bỏ lỡ là sự biện minh cho việc lựa chọn nó. Cuối cùng tôi đã tìm thấy một phần trong mục 6.2.2.2 của cuốn sách "Deep Learning" của Bengio (2016) . Theo cách riêng của tôi:
Nói tóm lại, chúng tôi muốn logarit của đầu ra của mô hình phù hợp để tối ưu hóa dựa trên độ dốc của khả năng ghi nhật ký của dữ liệu huấn luyện.
Động lực
- Chúng tôi muốn một mô hình tuyến tính, nhưng chúng tôi không thể sử dụng trực tiếp dưới dạng .z=wTx+bz∈(−∞,+∞)
- Để phân loại, sẽ hợp lý khi giả định phân phối Bernoulli và mô hình hóa tham số của nó trong .θP(Y=1)=θ
- Vì vậy, chúng ta cần ánh xạ từ sang để thực hiện phân loại.z(−∞,+∞)[0,1]
Tại sao chức năng sigmoid logistic?
Cắt bằng mang lại độ dốc bằng không cho bên ngoài . Chúng ta cần một độ dốc mạnh bất cứ khi nào dự đoán của mô hình sai, bởi vì chúng ta giải quyết hồi quy logistic với độ dốc giảm dần. Đối với hồi quy logistic, không có giải pháp dạng đóng.zP(Y=1|z)=max{0,min{1,z}}z[0,1]
Hàm logistic có đặc tính tốt là không điều chỉnh độ dốc không đổi khi dự đoán của mô hình sai, do chúng tôi sử dụng Ước tính khả năng tối đa để phù hợp với mô hình. Điều này được hiển thị dưới đây:
Đối với lợi ích bằng số, Ước tính khả năng tối đa có thể được thực hiện bằng cách giảm thiểu khả năng log âm của dữ liệu đào tạo. Vì vậy, chức năng chi phí của chúng tôi là:
J(w,b)=1m∑i=1m−logP(Y=yi|xi;w,b)=1m∑i=1m−(yilogP(Y=1|z)+(yi−1)logP(Y=0|z))
Vì , chúng ta có thể tập trung vào trường hợp . Vì vậy, câu hỏi là làm thế nào để mô hình cho rằng chúng ta có .P(Y=0|z)=1−P(Y=1|z)Y=1P(Y=1|z)z=wTx+b
Các yêu cầu rõ ràng cho hàm ánh xạ đến là:fzP(Y=1|z)
- ∀z∈R:f(z)∈[0,1]
- f(0)=0.5
- f nên là wrt đối xứng xoay , tức là , do đó việc lật các dấu hiệu của các lớp không ảnh hưởng đến hàm chi phí.(0,0.5)f(−x)=1−f(x)
- f nên không giảm, liên tục và khác biệt.
Những yêu cầu này được đáp ứng bằng cách thay đổi kích thước các hàm sigmoid . Cả và đáp ứng chúng. Tuy nhiên, các hàm sigmoid khác nhau về hành vi của chúng trong quá trình tối ưu hóa dựa trên độ dốc của khả năng ghi nhật ký. Chúng ta có thể thấy sự khác biệt bằng cách cắm hàm logistic vào hàm chi phí của chúng tôi.f(z)=11+e−zf(z)=0.5+0.5z1+|z|f(z)=11+e−z
Độ bão hòa choY=1
Với và , chi phí của một mẫu phân loại sai (ví dụ ) là:P(Y=1|z)=11+e−zY=1m=1
J(z)=−log(P(Y=1|z))=−log(11+e−z)=−log(ez1+ez)=−z+log(1+ez)
Chúng ta có thể thấy rằng có một thành phần tuyến tính . Bây giờ, chúng ta có thể xem xét hai trường hợp:−z
- Khi lớn, dự đoán của mô hình là chính xác, vì . Trong hàm chi phí, thuật ngữ xứng với đối với lớn . Do đó, nó gần như hủy bỏ dẫn đến chi phí gần như bằng không cho mẫu này và độ dốc yếu. Điều đó có ý nghĩa, vì mô hình đã dự đoán đúng lớp.zY=1log(1+ez)zz−z
- Khi nhỏ (nhưng lớn), dự đoán của mô hình không chính xác, vì . Trong hàm chi phí, thuật ngữ tiệm cận thành cho nhỏ . Do đó, chi phí tổng thể cho mẫu này là khoảng , có nghĩa là độ dốc wrt là khoảng . Điều này giúp cho mô hình dễ dàng sửa chữa dự đoán sai của nó dựa trên độ dốc không đổi mà nó nhận được. Ngay cả đối với rất nhỏ , không có bão hòa xảy ra, điều này sẽ gây ra độ dốc biến mất.z|z|Y=1log(1+ez)0z−zz−1z
Độ bão hòa choY=0
Ở trên, chúng tôi tập trung vào trường hợp . Với , hàm chi phí hoạt động tương tự, chỉ cung cấp độ dốc mạnh khi dự đoán của mô hình sai.Y=1Y=0
Đây là hàm chi phí cho :J(z)Y=1
Đây là chức năng softplus lật theo chiều ngang. Với , đó là hàm softplus.Y=0
Lựa chọn thay thế
Bạn đã đề cập đến các lựa chọn thay thế cho hàm sigmoid logistic, ví dụ . Được chuẩn hóa thành , điều này có nghĩa là chúng ta mô hình .z1+|z|[0,1]P(Y=1|z)=0.5+0.5z1+|z|
Trong MLE, hàm chi phí cho sau đó sẽ làY=1
J(z)=−log(0.5+0.5z1+|z|) ,
trông như thế này:
Bạn có thể thấy, độ dốc của hàm chi phí ngày càng yếu hơn đối với .z→−∞