SVM(支持向量機)屬於神經網路範疇嗎?
Corina Cortes和Vapnik那篇引用了一萬七千多次的文章標題很好地回答了這個問題:
Support-Vector Networks
不過其實沒必要糾結名字的。。。
具體地說,線性SVM的計算部分和一個單層神經網路一樣,就是一個矩陣乘積。SVM的關鍵在於它的Hinge Loss以及maximum margin的想法。其實這個loss也是可以用在神經網路里的(參見object detection的R-CNN方法)。
對於處理非線性數據,SVM和神經網路走了兩條不同的道路:神經網路通過多個隱層的方法來實現非線性的函數,有一些理論支持(比如說帶隱層的神經網路可以模擬任何函數),但是目前而言還不是非常完備;SVM則採用了kernel trick的方法,這個在理論上面比較完備(RKHS,簡單地說就是一個泛函的線性空間)。兩者各有好壞,神經網路最近的好處是網路設計可以很靈活,但是老被人說跳大神;SVM的理論的確漂亮,但是kernel設計不是那麼容易,所以最近沒有那麼熱了。
另外八卦一下,神經網路的大佬Yann LeCun和SVM大佬Vapnik很久以前就關係不錯,Yann的主頁上還可以找到他們一起搞怪的圖片(搜「all your bayes」):Fun Stuff
最近Vapnik又去Facebook Research了,大家都好有research的基情啊。哦不,激情啊。
不是
不是.
原文鏈接: 神經網路與支持向量機的故事
可以認為神經網路與支持向量機都源自於感知機(Perceptron)。感知機是由Rosenblatt發明的線性分類模型(1958年)。感知機對線性分類有效,但現實中的分類問題通常是非線性的。
神經網路與支持向量機(包含核方法)都是非線性分類模型。1986年,Rummelhart與McClelland發明了神經網路的學習演算法Back Propagation。後來,Vapnik等人於1992年提出了支持向量機。神經網路是多層(通常是三層)的非線性模型,支持向量機利用核技巧把非線性問題轉換成線性問題。
可以說神經網路是通過多個感知器(Perceptron)的組合疊加來解決非線性的分類問題. 而SVM通過核函數視圖非線性的問題的數據集轉變為核空間中一個線性可分的數據集.
另外, 神經網路非常依賴參數. 比如學習率, 隱含層的結構與節點個數. 參數的好壞會極大影響神經網路的分類效果. 而SVM是基於最大邊緣的思想, 只有少量的參數需要調整.
贊同賈揚清的回答,因為最近正好試圖把SVM嫁接到NN上面,我再做點補充吧。
這兩者都可以看做是一個loss function+f(x)的形式。其中x是輸入。
1,當這個loss function是hinge loss和maximum margin,f(x)是線性函數w*x+b(其中w和b就是喜聞樂見的SVM權重和bias)的時候,那麼這個結構就是線性SVM
2,當這個loss function是cross categorical entropy(或者其他什麼的奇奇怪怪的函數),f(x)是一堆堆疊的非線性隱藏層的時候,那麼這個結構就是神經網路。
從上面看得出來,可以把線性SVM考慮做f(x)是單層線性隱藏層,loss function是hinge和max margin的特殊形式的線性神經網路。當然這是最簡單的線性SVM的case,加了核函數的非線性SVM就是一個instance-based learner了,就跳出這個範疇了。
事實上也有把SVM的loss function嫁接到NN上面的,效果還不錯(http://deeplearning.net/wp-content/uploads/2013/03/dlsvm.pdf),看了這篇paper就更能理解兩者為什麼是互通的了屬於,shallow neural network!
不是,但是SVM可以被當作有一個隱含層的模型,隱含層代表的是支持向量,輸出其實就是支持向量的相似度加權,這個經常被用來證明SVM是淺層模型,用來和深度學習對比
感覺要看怎麼說吧。SVM可以看作是單隱含層網路(Single hidden layer neural network),神經網路是多層的,(Multiple )。
線性SVM隱含層線性擬和,加了核,可以擬和非線性。
神經網路利用多層激活函數擬和。
極限學習機(extremely learning machine),介於二者中間,他的理論基礎是有限數量的非線性無限可微函數就可以擬和輸入數據。相當於是核函數選擇更多了。仍屬於單層。
三者都要解決approximation capability 問題。
剛好今天看到論文里有關於這個說明,順便貼張圖。
圖來自基於支持向量機的迴轉乾燥窯生產過程建模與能耗優化研究--《中南大學》2010年博士論文
The Perceptron does not try to optimize the separation "distance". As long as it finds a hyperplane that separates the two sets, it is good. SVM on the other hand tries to maximize the "support vector", i.e., the distance between two closest opposite sample points.
The SVM typically tries to use a "kernel function" to project the sample points to high dimension space to make them linearly separable, while the perceptron assumes the sample points are linearly separable.
Difference between a SVM and a perceptron
不是
svm算是一種神經網路,包括neural networks雜誌也會登svm的文章
不是。明天起來再和大家進一步討論。
推薦閱讀: