Câu hỏi cũ, nhưng tôi muốn rời khỏi suy nghĩ của mình (bất kỳ ai sửa tôi nếu tôi sai).
Tôi nghĩ bạn đã trộn lẫn các khái niệm về các chức năng linear model
và loss
hoặc error
. Perceptron là định nghĩa một mô hình tuyến tính, do đó, nó định nghĩa một dòng/máy bay/siêu máy bay mà bạn có thể sử dụng để phân tách các lớp của bạn.
Thuật toán Perceptron chuẩn nén tín hiệu đầu ra của bạn, đem lại cho -1 hoặc 1:
yhat = signal(w * X + w0)
Điều này là tốt và cuối cùng sẽ hội tụ nếu dữ liệu của bạn là linearly separable
.
Để cải thiện điều này, bạn có thể sử dụng một sigmoid
mịn hàm tổn thất trong khoảng [-1, 1]:
yhat = -1 + 2*sigmoid(w * X + w0)
mean_squared_error = (Y - yhat)^2
Sau đó sử dụng tối ưu hóa số như Gradient Descent để giảm thiểu các lỗi trên toàn bộ dữ liệu của bạn . Ở đây w0, w1, w2, ..., wn là các biến của bạn.
Bây giờ, nếu dữ liệu gốc của bạn không phải là linearly separable
, bạn có thể biến đổi theo cách làm cho nó có thể phân tách tuyến tính và sau đó áp dụng bất kỳ mô hình tuyến tính nào. Điều này đúng bởi vì mô hình là linear on the weights
.
Điều này về cơ bản là những gì các mô hình như SVM làm theo mũ trùm làm để phân loại dữ liệu phi tuyến tính của bạn.
PS: I'm learning this stuff too, so experts don't be mad at me if i said some crap.
* "nếu chúng ta có một tổ chức phi tuyến tính đánh giá chức năng giống như một sigmoid ..." "Đó không phải là sự thật cả." * Khá như vậy kể từ hàm sigmoid không có ý nghĩa nhiều, nhưng tôi tin rằng Tôi đã đưa ra một ví dụ về hàm đánh giá phi tuyến tính trong đó một trình phân loại nhị phân phức tạp hơn sẽ hoạt động; xem câu trả lời của tôi nếu quan tâm. – ninjagecko
Chức năng bạn đã đề xuất sẽ hoạt động, nhưng nó không thể được xử lý bởi một perceptron duy nhất. xem bình luận về câu trả lời khác. –