導航:首頁 > 網路共享 > svm和神經網路哪個難

svm和神經網路哪個難

發布時間:2023-08-17 10:21:51

❶ 識別數字,bp神經網路演算法,卷積神經網路演算法,svm演算法,adaboost演算法哪種好

看數字圖片而定。如果圖片較小並且質量還不錯,那麼通過2層的神經網路就能勝任。
對於MNIst數據集(28*28的手寫數字),2層神經網路准確率可達99%,svm也有98%以上。
以上實現非常簡單,matlab已經有現成工具箱。

卷積神經網路通常用於更加復雜的場合,閉合是被圖像內容等。在MNIST數據集上cnn可達99.7%准確率,但是實現起來較為復雜,需要通過開源框架caffe,keras等進行編程。

如果對准確率要求沒有達到小數點後兩位的程度,用簡單的svm,神經網路,softmax等調調參數就行了。

❷ 神經網路淺談

人工智慧技術是當前炙手可熱的話題,而基於神經網路的深度學習技術更是熱點中的熱點。去年穀歌的Alpha Go 以4:1大比分的優勢戰勝韓國的李世石九段,展現了深度學習的強大威力,後續強化版的Alpha Master和無師自通的Alpha Zero更是在表現上完全碾壓前者。不論你怎麼看,以深度學習為代表的人工智慧技術正在塑造未來。

下圖為英偉達(NVIDIA)公司近年來的股價情況, 該公司的主要產品是「圖形處理器」(GPU),而GPU被證明能大大加快神經網路的訓練速度,是深度學習必不可少的計算組件。英偉達公司近年來股價的飛漲足以證明當前深度學習的井噴之勢。

好,話不多說,下面簡要介紹神經網路的基本原理、發展脈絡和優勢。

神經網路是一種人類由於受到生物神經細胞結構啟發而研究出的一種演算法體系,是機器學習演算法大類中的一種。首先讓我們來看人腦神經元細胞:

一個神經元通常具有多個樹突 ,主要用來接受傳入信息,而軸突只有一條,軸突尾端有許多軸突末梢,可以給其他多個神經元傳遞信息。軸突末梢跟其他神經元的樹突產生連接,從而傳遞信號

下圖是一個經典的神經網路(Artificial Neural Network,ANN):

乍一看跟傳統互聯網的拓撲圖有點類似,這也是稱其為網路的原因,不同的是節點之間通過有向線段連接,並且節點被分成三層。我們稱圖中的圓圈為神經元,左邊三個神經元組成的一列為輸入層,中間神經元列為隱藏層,右邊神經元列為輸出層,神經元之間的箭頭為權重。

神經元是計算單元,相當於神經元細胞的細胞核,利用輸入的數據進行計算,然後輸出,一般由一個線性計算部分和一個非線性計算部分組成;輸入層和輸出層實現數據的輸入輸出,相當於細胞的樹突和軸突末梢;隱藏層指既不是輸入也不是輸出的神經元層,一個神經網路可以有很多個隱藏層。

神經網路的關鍵不是圓圈代表的神經元,而是每條連接線對應的權重。每條連接線對應一個權重,也就是一個參數。權重具體的值需要通過神經網路的訓練才能獲得。我們實際生活中的學習體現在大腦中就是一系列神經網路迴路的建立與強化,多次重復的學習能讓迴路變得更加粗壯,使得信號的傳遞速度加快,最後對外表現為「深刻」的記憶。人工神經網路的訓練也借鑒於此,如果某種映射關系出現很多次,那麼在訓練過程中就相應調高其權重。

1943年,心理學家McCulloch和數學家Pitts參考了生物神經元的結構,發表了抽象的神經元模型MP:

符號化後的模型如下:

Sum函數計算各權重與輸入乘積的線性組合,是神經元中的線性計算部分,而sgn是取符號函數,當輸入大於0時,輸出1,反之輸出0,是神經元中的非線性部分。向量化後的公式為z=sgn(w^T a)(w^T=(w_1,w_2,w_3),a=〖(a_1,a_2,a_3)〗^T)。

但是,MP模型中,權重的值都是預先設置的,因此不能學習。該模型雖然簡單,並且作用有限,但已經建立了神經網路大廈的地基

1958年,計算科學家Rosenblatt提出了由兩層神經元組成(一個輸入層,一個輸出層)的神經網路。他給它起了一個名字–「感知器」(Perceptron)

感知器是當時首個可以學習的人工神經網路。Rosenblatt現場演示了其學習識別簡單圖像的過程,在當時引起了轟動,掀起了第一波神經網路的研究熱潮。

但感知器只能做簡單的線性分類任務。1969年,人工智慧領域的巨擘Minsky指出這點,並同時指出感知器對XOR(異或,即兩個輸入相同時輸出0,不同時輸出1)這樣的簡單邏輯都無法解決。所以,明斯基認為神經網路是沒有價值的。

隨後,神經網路的研究進入低谷,又稱 AI Winter 。

Minsky說過單層神經網路無法解決異或問題,但是當增加一個計算層以後,兩層神經網路不僅可以解決異或問題,而且具有非常好的非線性分類效果。

下圖為兩層神經網路(輸入層一般不算在內):

上圖中,輸出層的輸入是上一層的輸出。

向量化後的公式為:

注意:

每個神經元節點默認都有偏置變數b,加上偏置變數後的計算公式為:

同時,兩層神經網路不再使用sgn函數作為激勵函數,而採用平滑的sigmoid函數:

σ(z)=1/(1+e^(-z) )

其圖像如下:

理論證明: 兩層及以上的神經網路可以無限逼近真實的對應函數,從而模擬數據之間的真實關系 ,這是神經網路強大預測能力的根本。但兩層神經網路的計算量太大,當時的計算機的計算能力完全跟不上,直到1986年,Rumelhar和Hinton等人提出了反向傳播(Backpropagation,BP)演算法,解決了兩層神經網路所需要的復雜計算量問題,帶動了業界使用兩層神經網路研究的熱潮。

但好景不長,演算法的改進僅使得神經網路風光了幾年,然而計算能力不夠,局部最優解,調參等一系列問題一直困擾研究人員。90年代中期,由Vapnik等人發明的SVM(Support Vector Machines,支持向量機)演算法誕生,很快就在若干個方面體現出了對比神經網路的優勢:無需調參;高效;全局最優解。

由於以上原因,SVM迅速打敗了神經網路演算法成為主流。神經網路的研究再一次進入低谷, AI Winter again 。

多層神經網路一般指兩層或兩層以上的神經網路(不包括輸入層),更多情況下指兩層以上的神經網路。

2006年,Hinton提出使用 預訓練 」(pre-training)和「微調」(fine-tuning)技術能優化神經網路訓練,大幅度減少訓練多層神經網路的時間

並且,他給多層神經網路相關的學習方法賦予了一個新名詞–「 深度學習 」,以此為起點,「深度學習」紀元開始了:)

「深度學習」一方面指神經網路的比較「深」,也就是層數較多;另一方面也可以指神經網路能學到很多深層次的東西。研究發現,在權重參數不變的情況下,增加神經網路的層數,能增強神經網路的表達能力。

但深度學習究竟有多強大呢?沒人知道。2012年,Hinton與他的學生在ImageNet競賽中,用多層的卷積神經網路成功地對包含一千類別的一百萬張圖片進行了訓練,取得了分類錯誤率15%的好成績,這個成績比第二名高了近11個百分點,充分證明了多層神經網路識別效果的優越性。

同時,科研人員發現GPU的大規模並行矩陣運算模式完美地契合神經網路訓練的需要,在同等情況下,GPU的速度要比CPU快50-200倍,這使得神經網路的訓練時間大大減少,最終再一次掀起了神經網路研究的熱潮,並且一直持續到現在。

2016年基於深度學習的Alpha Go在圍棋比賽中以4:1的大比分優勢戰勝了李世石,深度學習的威力再一次震驚了世界。

神經網路的發展歷史曲折盪漾,既有被捧上神壇的高潮,也有無人問津的低谷,中間經歷了數次大起大落,我們姑且稱之為「三起三落」吧,其背後則是演算法的改進和計算能力的持續發展。

下圖展示了神經網路自發明以來的發展情況及一些重大時間節點。

當然,對於神經網路我們也要保持清醒的頭腦。由上圖,每次神經網路研究的興盛期持續10年左右,從最近2012年算起,或許10年後的2022年,神經網路的發展將再次遇到瓶頸。

神經網路作為機器學習的一種,其模型訓練的目的,就是使得參數盡可能的與真實的模型逼近。理論證明,兩層及以上的神經網路可以無限逼近真實的映射函數。因此,給定足夠的訓練數據和訓練時間,總能通過神經網路找到無限逼近真實關系的模型。

具體做法:首先給所有權重參數賦上隨機值,然後使用這些隨機生成的參數值,來預測訓練數據中的樣本。假設樣本的預測目標為yp ,真實目標為y,定義值loss,計算公式如下:

loss = (yp -y) ^2

這個值稱之為 損失 (loss),我們的目標就是使對所有訓練數據的損失和盡可能的小,這就轉化為求loss函數極值的問題。

一個常用方法是高等數學中的求導,但由於參數不止一個,求導後計算導數等於0的運算量很大,所以常用梯度下降演算法來解決這樣的優化問題。梯度是一個向量,由函數的各自變數的偏導數組成。

比如對二元函數 f =(x,y),則梯度∇f=(∂f/∂x,∂f/∂y)。梯度的方向是函數值上升最快的方向。梯度下降演算法每次計算參數在當前的梯度,然後讓參數向著梯度的反方向前進一段距離,不斷重復,直到梯度接近零時截止。一般這個時候,所有的參數恰好達到使損失函數達到一個最低值的狀態。下圖為梯度下降的大致運行過程:

在神經網路模型中,由於結構復雜,每次計算梯度的代價很大。因此還需要使用 反向傳播 (Back Propagation)演算法。反向傳播演算法利用了神經網路的結構進行計算,不一次計算所有參數的梯度,而是從後往前。首先計算輸出層的梯度,然後是第二個參數矩陣的梯度,接著是中間層的梯度,再然後是第一個參數矩陣的梯度,最後是輸入層的梯度。計算結束以後,所要的兩個參數矩陣的梯度就都有了。當然,梯度下降只是其中一個優化演算法,其他的還有牛頓法、RMSprop等。

確定loss函數的最小值後,我們就確定了整個神經網路的權重,完成神經網路的訓練。

在神經網路中一樣的參數數量,可以用更深的層次去表達。

由上圖,不算上偏置參數的話,共有三層神經元,33個權重參數。

由下圖,保持權重參數不變,但增加了兩層神經元。

在多層神經網路中,每一層的輸入是前一層的輸出,相當於在前一層的基礎上學習,更深層次的神經網路意味著更深入的表示特徵,以及更強的函數模擬能力。更深入的表示特徵可以這樣理解,隨著網路的層數增加,每一層對於前一層次的抽象表示更深入。

如上圖,第一個隱藏層學習到「邊緣」的特徵,第二個隱藏層學習到「邊緣」組成的「形狀」的特徵,第三個隱藏層學習到由「形狀」組成的「圖案」的特徵,最後的隱藏層學習到由「圖案」組成的「目標」的特徵。通過抽取更抽象的特徵來對事物進行區分,從而獲得更好的區分與分類能力。

前面提到, 明斯基認為Rosenblatt提出的感知器模型不能處理最簡單的「異或」(XOR)非線性問題,所以神經網路的研究沒有前途,但當增加一層神經元後,異或問題得到了很好地解決,原因何在?原來從輸入層到隱藏層,數據發生了空間變換,坐標系發生了改變,因為矩陣運算本質上就是一種空間變換。

如下圖,紅色和藍色的分界線是最終的分類結果,可以看到,該分界線是一條非常平滑的曲線。

但是,改變坐標系後,分界線卻表現為直線,如下圖:

同時,非線性激勵函數的引入使得神經網路對非線性問題的表達能力大大加強。

對於傳統的樸素貝葉斯、決策樹、支持向量機SVM等分類器,提取特徵是一個非常重要的前置工作。在正式訓練之前,需要花費大量的時間在數據的清洗上,這樣分類器才能清楚地知道數據的維度,要不然基於概率和空間距離的線性分類器是沒辦法進行工作的。然而在神經網路中,由於巨量的線性分類器的堆疊(並行和串列)以及卷積神經網路的使用,它對雜訊的忍耐能力、對多通道數據上投射出來的不同特徵偏向的敏感程度會自動重視或忽略,這樣我們在處理的時候,就不需要使用太多的技巧用於數據的清洗了。有趣的是,業內大佬常感嘆,「你可能知道SVM等機器學習的所有細節,但是效果並不好,而神經網路更像是一個黑盒,很難知道它究竟在做什麼,但工作效果卻很好」。

人類對機器學習的環節干預越少,就意味著距離人工智慧的方向越近。神經網路的這個特性非常有吸引力。

1) 谷歌的TensorFlow開發了一個非常有意思的神經網路 入門教程 ,用戶可以非常方便地在網頁上更改神經網路的參數,並且能看到實時的學習效率和結果,非常適合初學者掌握神經網路的基本概念及神經網路的原理。網頁截圖如下:

2) 深度學習領域大佬吳恩達不久前發布的《 神經網路和深度學習 》MOOC,現在可以在網易雲課堂上免費觀看了,並且還有中文字幕。

3) 《神經網路於深度學習》(Michael Nielsen著)、《白話深度學習與TensorFlow》也是不錯的入門書籍。

❸ 分類II-神經網路和支持向量機

支持向量機可以做到全局最優,而神經網路容易陷入多重局部最優。libsvm和SVMLite都是非常流行的支持向量機工具,e1071包提供了libsvm的實現,klap包提供了對後者的實現。
SVM優勢在於利用了面向工程問題的核函數,能夠提供准確度非常高的模型,同時藉助正則項可以避免模型的過度適應,用戶不必擔心諸如局部最優和多重共線性難題,弊端是訓練測試速度慢,模型處理時間冗長,不適合規模龐大數據集。和神經網路一樣,都屬於黑盒演算法,結果較難解釋。另外如何確定合適核函數,也是一個難點,正則化也是需要考慮的問題。
gamma函數決定分離超平面的形狀,默認為數據維度的倒數,提高它的值通常會增加支持向量的數量。考慮到成本函數,默認值通常為1,此時正則項也是常數,正則項越大,邊界越小。

兩幅圖的比較說明,懲罰因子有較大影響。

擴展

除了選擇不同的特徵集和核函數,還可以藉助參數gamma以及懲罰因子來調整支持向量機的性能。tune.svm函數簡化了這個過程。

tuned.svm採用十折交叉來獲得每次組合的錯誤偏差,選擇誤差最低的最佳參數組合。使用這個組合再訓練一個支持向量機。

我們一般認為神經網路是非常高技術含量的東西,這里我們就學習下這個「高大上」的東西。其實,應該深度學習的技術含量高點,神經網路應該推出好多好多年了。

神經元的優勢是可檢測非線性關系,利用演算法的並行化實現對大數據集的高效訓練,無參模型,避免參數估計中的錯誤。不足是容易陷入局部最優,演算法訓練時間過長,可能過擬合。

圖中泛化權值接近於0,說明協變數對分類結果影響不大,若總體方差>1,則協變數對分類結果存在非線性影響。

compute函數還可以獲得每一層的輸出 compute(network, testset[-5]) 。

這個包提供了傳統的前饋反向傳播神經網路演算法的功能實現,neuralnet包實現了大部分神經網路演算法。

如果不指定type=class,默認輸出概率矩陣。

❹ SVM(支持向量機)屬於神經網路范疇嗎

支持向量機是什麼?SVM是英語「支持向量機」的縮寫,支持向量機是一種常見的識別方法。在機器學習領域,它是一種監督學習模式,通常用於模式識別、分類和回歸分析。


另外我想說的是,我們不管研究哪一個范圍的科技學術問題,都要從自身去構造一套完善的思考邏輯,列好一個思考網路,從一是什麼,二是什麼三是什麼一直往下走,這樣子才更有利於我們思考問題,希望我的回答對你有幫助。



閱讀全文

與svm和神經網路哪個難相關的資料

熱點內容
電腦網路代理什麼意思 瀏覽:784
計算機網路技術怎麼預習 瀏覽:563
人物標簽網路詞彙有哪些 瀏覽:316
劍俠情緣1網路版槍天和錘天哪個厲害 瀏覽:864
手機顯示微信連接不上網路 瀏覽:773
無線網路輸入端有哪些 瀏覽:972
多肉的網路促銷策略怎麼寫 瀏覽:618
網路沒有欠費電腦卻不能上網 瀏覽:77
網路安全與網路暴力的聯系 瀏覽:510
刀了是什麼意思網路 瀏覽:472
網路itv如何更改 瀏覽:266
無線網路忘記密碼也沒有二維碼 瀏覽:507
用友網路多少用戶 瀏覽:254
烽火路由器無線網路連接不上 瀏覽:332
神經網路如何上色 瀏覽:118
網路連接怎麼出問題了呀 瀏覽:291
電視和網路應該先安裝哪個 瀏覽:326
攝像頭連接不了網路是什麼問題 瀏覽:769
家庭如何接入網路 瀏覽:964
網路新聞人需要學哪些方面知識 瀏覽:825

友情鏈接