Nên học về Support Vecto Machine hay Neural Network?


#1

Các bác có kinh nghiệm so sánh giúp e 2 món SVM và NN với. E đã học bài 13 (hết Categories Neural Network) và các bài sau đến SVM bài 20 thì thấy khó hiểu dần. Bây giờ muốn tập trung học 1 phương pháp (cái còn lại có team mình lo) thì chọn phương pháp nào đây? Các bác so sánh giúp e ưu, nhược, khó khăn, thuận lợi, ứng dụng… nhé. Cảm ơn các bác!!!


#2

Sao k phải là cả 2 vây ???


#3

Nếu sau này bạn có dùng đến DeepLearning thì bạn sẽ phải học NeuralNet vì CNN,RNN,… thì cũng là Neural Net. Cuối 1 CNN thì có thể có 1 vài Fully Connected Layer và Softmax để Classiy luôn hoặc cũng có thể dùng 1 CNN để extract features và cho vào SVM để classify.

Nếu bạn làm việc với dữ liệu có features như dữ liệu về thảm họa titanic chẳng hạn, bạn có thể feed luôn vào SVM để classify, tuy nhiên với dữ liệu dạng ảnh khuôn mặt hay văn bản thì bạn sẽ dùng đến các model khác chẳng hạn CNN để extract features (embeddings) rồi mới feed vào SVM hay 1 Fully Connected Neural Networks rồi dùng softmax để có thể classify được.


#4

Mình làm về xử lý ảnh nên quan điểm của mình có hơi lệch lạc. Mình có sử dụng DL và SVM trong phân lớp và detect. Mình sử dụng SVM của OpenCV và DL của tensorflow, pytorch, keras và dlib. Mình thấy với bài toán phân lớp đơn giản SVM cho kết quả khá tốt. Nhưng SVM có 1 nhược điểm mình ko suy ra được trong lý thuyết và cũng ko chắc là do SVM mà có thể là do mình. Đó là vấn đề về dung lượng mô hình. Không biết tại sao nhưng khi cho nhiều data hơn vào mô hình thì dung lượng (memory) của mô hình tăng lên khá nhanh và khá nhiều. Ngoài ra chất lượng mô hình chỉ đạt được đến 1 giới hạn nhất định. Với những bài toán phân lớp phức tạp, SVM ko thể xử lý được. Tuy nhiên, tư tưởng phân lớp của svm dc kế thừa khá nhiều trong DL đặc biệt là các bài toán nhận diện. Đối với DL, kết quả classify nó thay đổi theo dung lưongj mô hình. Phần lớn các mô hình dung lưonjg nhỏ, mục đích xây dựng để chạy trên diện thoại cho chất lượng khá tồi. Nhưng các mô hình lớn hơn, thì cho chất lưongj tốt hơn. Tuy nhiên, cái này khá tốn tài nguyên, việc chạy mô hình thì mình thương đẩy lên server chứ ko cho chạy local ( như svm). Nhưng mà nó ko bị overhead như svm, tăng dữ liệu ko tăng dung lượng mô hình.

Đối với bài toán detect, mình từng test HOG + SVM vs deep learning. SVM chỉ có tác dụng nếu vật thể của bạn có biên dạng bên ngoài, còn dL thì ko quan trọng lắm. Biên dạng bên ngoài thì bạn có thể hiểu như kiểu là data của bạn có đường bao tương đối giống nhau ấy( ví dụ như detect ô tô). Nhưng với những vật thể có biên dạng phức tạp hơn thì bắt buộc phải sử dụng dl. DL ko phụ thuộc vào biên dạng. Mình ko đưa ra ví dụ đc vì vấn đề mình gặp phải là ở dự án trong cty. Ngoài ra, mình nghĩ bạn nên học cả 2. Việc học lý thuyết thì tốt, nhưng mà mình nghĩ có nhiều người quá coi trọng lý thuyet. Mình nghĩ bạn hiểu được là bạn có những công cụ nào, sử dụng như thế nào, giới hạn của từng công cụ mà bạn có và nên dùng cái nào trong bài toán thực tế nào mới là điều quan trọng. Các kết quả lý thuyết( trong các paper) khi thí nghiệm với thực tế đều có sự sai khác( lớn bé tùy vào cách họ thí nghiệm trong paper).