乾貨拿走:MATLAB人工神經網絡教程

2021-02-19 聯科大數據

深度學習在這些年是非常熱門的話題,特別是在計算機視覺應用方面,也許你會在新聞上有所耳聞並感到好奇。那麼現在的問題是,該如何入手?今天帶來一篇人工神經網絡的快速入門教程。

MNIST 數據集

我們當中有許多人想在一個具體的例子中開始入手。那我就寫一個手把手快速教程,我們用一個常用的 MINIST 手寫數字數據集作為例子以使教程比較直觀的、易理解。Kaggle 剛好也在數字識別教程中使用這個數據集。你需要從 「Get the Data」 頁面中下載這些數據集:

train.csv – 訓練數據

test.csv – 測試數據

當你已經將上述文件下載到當前文件夾時,將訓練數據和測試數據都加載進 MATLAB,測試數據用於生成你的提交。

tr = csvread('train.csv', 1, 0); % 讀文件 train.csv sub = csvread('test.csv', 1, 0); % 讀文件 test.csv

第一列是數據集中每個樣本字符的正確標籤,每行一個樣本。剩餘的列中,每行表示一個28×28的手寫字符的圖像,所有像素都放在一行中,而不是原本的矩陣格式。如果要使字符可視化,我們需要將這些行重新組織成28×28的矩陣。 reshape 操作是按列進行的,所以除非你需要對數據進行轉置,否則可以用 reshape 函數實現這字符的可視化。

figure                                          colormap(gray)                                  for i = 1:25                                        subplot(5,5,i)                                  digit = reshape(tr(i, 2:end), [28,28])';        imagesc(digit)                                  title(num2str(tr(i, 1)))                    end

準備數據

你可以使用神經網絡工具箱中的模式識別應用nprtool 。這個應用需要兩個數據集:

標籤的取值範圍是0到9,但由於MTLAB中的下表是從1開始的,所以我們可以用「10」表示「0」。

1 2 3            :0

數據集中的樣本是按列保存而不是按行保存的,所以你需要對數據進行轉置。然後,你需要將數據集分割,保留1/3的數據用作模型評估,僅用2/3的數據來訓練我們的人工神經網絡模型。

n = size(tr, 1);                    targets  = tr(:,1);                 targets(targets == 0) = 10;         targetsd = dummyvar(targets);       inputs = tr(:,2:end);               inputs = inputs';                   targets = targets';                 targetsd = targetsd';               rng(1);                             c = cvpartition(n,'Holdout',n/3);   Xtrain = inputs(:, training(c));    Ytrain = targetsd(:, training(c));  Xtest = inputs(:, test(c));         Ytest = targets(test(c));           Ytestd = targetsd(:, test(c));      

 使用神經網絡工具箱中的圖形界面應用(GUI APP)

你可以通過鍵入命令 nnstart 來打開神經網絡的啟動圖形界面。

進入啟動界面後,可以通過單擊模式識別工具來打開神經網絡模式識別工具。你也可以通過命令 nprtool 來直接打開它。

單擊歡迎頁面上的「Next」(下一步),進入「Select Data」(數據選擇)界面。

選擇Xtrain作為輸入,Ytrain為訓練目標。

單擊「Next」(下一步),進入「Validation and Test Data」(數據驗證和檢查)界面。採用默認設置並再次單擊「Next」(下一步)。這一操作會將數據分割70個-15個-15個樣本,分別作為訓練、驗證和測試集。

在「Network Architecture」(網絡結構)界面,修改隱層神經元(hidden neurons)的個數值為100,並再次單擊「Next」。

在「Train Network」(網絡訓練)界面,單擊「Train」(訓練)按鈕開始訓練。訓練結束後,單擊「Next」。跳過「Evaluate Network」(驗證網絡)並點擊下一步。

在「Deploy Solution」(結果部署)界面,選擇「MATLAB Matrix-Only Function」(MATLAB矩陣函數)並保存生成的編碼。我將它保存為myNNfun.m。

如果你單擊「Next」並進入「Save Results」(結果保存)界面,你可以保存所創建的模型和對應腳步。我將這個簡單的腳本保存為myNNscript.m。

這是你通過圖片識別工具創造的人工神經網絡模型圖表。他有784個輸入神經元, 100個隱藏層神經元,以及10個輸出層神經元。

你的人工神經網絡模型學會了通過訓練權重來生產正確的輸出。

W在圖中代表權重,B代表偏置單元,他們是個體神經元的一部分。 隱藏層中的單個神經元看起來像是784個輸入數據和相應的權重, 1個偏置單元和10個輸出。

可視化已學習權重

如果你看myNNfun,m,或像IW1_1和x1_step1_keep之類的變量,他們表示你的人工神經網絡模型通過訓練得到的權重。 因為我們有784個輸入數據和100個神經元, 在全層中1權重會變成100 x 784的矩陣。 讓我們將它們可視化.。這就是我們的神經元學習的成果!

計算分類精確度

現在您準備使用 myNNfun.m 來預測在 Xtest 伸出的數據的各種標籤並將它們和在 Ytest裡的實際標籤相比較。以防遇到不可見數據,那就給你提供了一次逼真的預測表演機會。這也是評價指標Kaggle用來打分的。

首先,您將看到網絡的實際輸出,它顯示每個可能的標籤出現的概率。您只需選擇最有可能的標籤作為您的預測標籤,然後將其與實際標籤進行比較。您應該看到95%的分類精確度。

Ypred = myNNfun(Xtest); Ypred(:, 1:5) [~, Ypred] = max(Ypred); sum(Ytest == Ypred) / length(Ytest)

網絡體系結構

您可能注意到,人工神經網絡模型生成於模式識別工具,而該工具只有一個隱藏層。如果您願意,您可以構建一個具有更多層的自定義模型,但是這種簡單的架構足以解決大多數常見問題。

你可能會問的下一個問題是,我是如何選擇100個當做隱藏神經元數目。一般的經驗法則是在輸入神經元的數目784個和輸出神經元的數目10個之間選擇一個數字,我只是隨意地選擇了100個。這意味著如果嘗試其他值,您可能會做得更好。這次我們已變成的方式做這件事間。採用myNNscript.m 會方便些——要做參數掃描的話,你可以簡單地改寫腳本。

現在,讓我們畫出分類精度相對隱層神經元數量的變化。

figureplot(sweep, scores, '.-')xlabel('number of hidden neurons')ylabel('categorization accuracy')title('Number of hidden neurons vs. accuracy')

看起來這個簡單的人工神經網絡模型在250個神經元附近獲得了最好的結果,最好的分類精度在0.96左右。

如您所見,如果您增加隱藏神經元的數量,您將獲得更高的精度,但隨後某個時刻精度會降低(由於權重的隨機初始化,您的結果可能會有所不同)。 當您增加神經元數量時,您的模型將能夠捕獲更多的特徵,但是如果您捕獲的特徵太多,那麼最終您的模型會過度擬合訓練數據,並且對於看不見的數據訓練得不好。 讓我們用300個隱藏神經元來檢查學習的權重。 你會看到更多的細節,但你也會看到更多的噪音。

現在你已經對人工神經網絡有了一些直覺——該網絡能自動根據輸入數據記錄下一切相關特性,並生成一個映射到輸出數據標籤的稀疏表示。如果我們把輸入數據作為目標值情形又如何?那樣你就不再需要訓練標籤了,並將其轉化為無監督學習法。這就是眾所周知的自編碼,也就變成了一個深度學習網絡的構建塊。有一個很好的有關自編碼的例子,是其專門用於深度神經網絡的數字分類 頁面上,該頁面就是神經網絡工具箱文檔的頁面,而該文檔也使用MNIST數據集。更多詳情,史丹福大學提供了一個很好的 UFLDL 教程,該教程也使用相同的數據集和基於MATLAB的入門代碼。

除了理解各種算法之外,還有一個實際問題就是如何第一時間生成輸入數據。有人曾花了很多時間準備MNIST數據集來保證其具有統一的大小,縮放,對比等。為了在實際應用中去使用你從這個數據集裡建立的模式,你必須能夠在新的數據上重複相同的處理模式。你自己是怎麼做這樣的準備的呢?

現在有一個有趣的視頻可告訴你如何使用一個網絡攝像頭來解決數獨謎題,該攝像頭使用不同的字符識別技術。沒用靜態圖像,使用現場直播來做這件事,他帶領你一步一步地完成前處理步驟。你一定查個明白: 使用網絡攝像頭解決數獨謎題.

將您的練習提交到Kaggle

通過簡單地接受除隱藏神經元數量之外的默認設置,您可以獲得96%的分類準確率。 第一次嘗試還不錯。 因為您使用Kaggle數據集,因此現在可以將結果提交給Kaggle。

n = size(sub, 1); % num of samplessub = sub'; % transpose[~, highest] = max(scores); % highest scoring modelnet = models{highest}; % restore the modelYpred = net(sub); % label probabilities[~, Label] = max(Ypred); % predicted labelsLabel = Label';                                     % transpose LabelLabel(Label == 10) = 0;                             % change '10' to '0'ImageId = 1:n; ImageId = ImageId'; % image idswritetable(table(ImageId, Label), 'submission.csv');% write to csv

您現在可以在Kaggle的項目提交頁面上提交submission.csv。

結語

在這個例子中,我們專注於使用手寫數字識別的具體例子來獲得對人工神經網絡的直觀理解。 我們沒有詳細介紹輸入權重和偏差單位如何組合,激活(activation )如何工作,如何訓練這樣一個網絡等等。但是現在您已經足夠了解在MATLAB中使用神經網絡工具箱來參與Kaggle競賽。

End.

聯科集團成立於2000年,致力以現代計算科技為客戶創造價值。我們以雲計算、 高性能計算、大數據和異構計算等技術, 為客戶解決海量數據處理、大規模計算、深度分析、人工智慧、無間斷服務等多種應用問題。我們的服務領域,包括金融工程(投資分析、風險管理、衍生物定價等)、商業智能(銷售預測、客戶管理、庫存管理等)、環境科技(氣象預報、暴雨及湍流預報、汙染分析與預測等)、智慧城巿(信息採集、信息分析、優化管理等)和網際網路應用(海量圖像處理、視頻儲存與傳送等)。我們也為各種規模的企業提供公共雲、私有雲和混合雲的解決方案。

如果您有相關需求,歡迎聯繫我們!

優秀案例如下:

專題分享——智慧檢察官系統(綜述)

專題分享——大數據下的智能選客(綜述)

專題分享——文本數據解決方案(綜述)

來源:36大數據

聲明:本公眾號部分信息來自網絡轉載,若無意中有侵犯您權益的信息,請聯繫我們,我們會在第一時間刪除!

相關焦點

  • MATLAB人工神經網絡教程
    今天帶來一篇人工神經網絡的快速入門教程。MNIST 數據集我們當中有許多人想在一個具體的例子中開始入手。那我就寫一個手把手快速教程,我們用一個常用的 MINIST 手寫數字數據集作為例子以使教程比較直觀的、易理解。Kaggle 剛好也在數字識別教程中使用這個數據集。
  • Python+Matlab+機器學習+深度神經網絡+理論+實踐+視頻+課件+源碼,附下載!
    第三部分就是深度神經網絡的內容了,你想知道的關於深度神經網絡的一切,都可以從裡面學到。值得一提的是,裡面還有matlab的機器學習教程,這絕對是乾貨啊有木有~除了今天的福利,小編之前還整理了很多關於人工智慧、機器學習和大數據的相關電子書籍,感興趣的小夥伴也可以作為參考!文章底部有往期福利,可點擊進行查看!以後還會有陸陸續續的乾貨全部分享給大家。
  • RBF神經網絡(Matlab)
    RBF神經網絡採用多維空間插值擬合技術,與BP誤差反饋神經網絡不同的是:1、無誤差反饋過程且通過最小二乘計算出權值;2、輸入層為各樣本與聚類中心的距離
  • 「人工神經網絡」人工神經網絡之BP算法
    人工神經網絡(Artificial Neural Network,ANN)是在受到了生物學的啟發後創建的,在某種程度上它是對生物大腦的一種模擬。人們仿照生物神經網絡的結構,使用簡單運算單元模擬神經元,並將大量運算單元按某種形式密集連接,便構成了人工神經網絡。結構如圖:人工神經網絡(ANN)模型帶有權重值(w1,w2,...
  • 生物神經網絡與人工神經網絡的遞歸性
    然而,隨著用於實際應用的人工神經網絡(ANN)越來越複雜,在某些方面更像生物神經網絡(BNNs),雖然整體上仍有很大不同) ,這種差異正在縮小。        深度學習社區所說的循環連接類似於神經科學社區所說的橫向連接。即,局部區域中的互連神經元。    在神經科學界,遞歸網絡是一種連接性很強的網絡,包括前饋、橫向和反饋連接。
  • 人工神經網絡與Stata應用
    人工神經網絡簡介1.1 基本介紹人工神經網絡(Artificial Neural Networks,簡寫為ANNs)是一種模仿動物神經網絡行為特徵,進行分布式並行信息處理的算法數學模型。這種網絡依靠系統的複雜程度,通過調整內部大量節點之間相互連接的關係,從而達到處理信息的目的,並具有自學習和自適應的能力。
  • 機器學習與人工神經網絡(一)
    近年來,機器學習 (Machine Learning) 中的「人工神經網絡 (Artificial Neural Network)」因能解決這個困境而變得越來越流行。除了在影像辨識、語言翻譯和預測未來等諸多應用上表現卓越成就之外,也在生物、醫學上對科學做出貢獻。讓我們來看看它是怎麼運作的。
  • BP神經網絡算法(附matlab程序)
    我在書上看見了一條神經網絡算法的定義(雖然很空洞);「神經網絡是具有適應性的簡單單元組成的廣泛並行互連的網絡,它的組織能夠模擬生物神經系統對真實世界物體所做出的交互反應」。神經元的工作機制是這樣的;如果某神經元的點位超過了一個「閾值」,那麼它就會被激活,即「興奮」起來,向其它神經元發送化學物質。神經網絡算法也是運用了這樣的機制。
  • 【技術 | 神經網絡在Matlab上的簡單實現(一)】
    人工神經網絡(Artificial Neural Networks,簡寫為ANNs)也簡稱為神經網絡(NNs)或稱作連接模型(Connection Model),它是一種模仿動物神經網絡行為特徵,進行分布式並行信息處理的算法數學模型。
  • 膠囊神經網絡研究現狀與未來的淺析
    介紹了卷積神經網絡的經典模型和深度學習中新型神經網絡模型——膠囊網絡以及其動態路由算法,並對比了二者的優劣性。對膠囊網絡的應用給予綜述,以圖像和文本兩方面來闡述膠囊網絡的應用領域和優勢所在。最後進行概括總結,並展望了膠囊網絡可能的改進方向。
  • 錢璐璐團隊打造DNA人工智慧神經網絡
    加州理工學院生物工程助理教授錢璐璐和她的同事們開發出了一種由DNA製成的人工神經網絡,可以正確地識別分子數字籤名。
  • matlab科研繪圖模板,拿走不謝【精品乾貨】
    模板的實現原理很簡單,就是通過修改matlab的相關默認設置即可完成,完整步驟如下:1、新建一個名為startup.m的matlab腳本文件,在該文件中添加所有與matlab科研繪圖屬性設置相關的命令;2、將添加所有自定義設置的startup.m文件複製粘貼到指定路徑,路徑如下:matlab
  • 【大白話科普①】人工神經網絡中的神經元
    在初識人工神經網絡之時,也被其非凡的名稱所困惑,相信有類似感覺的小夥伴一定不少。因此大白話科普系列上線了,我們將分多篇文章,逐一對人工智慧所涉及到的技術與數學原理進行大白話式的科普。不用擔心沒有數學基礎,小編偷偷告訴你,作者連高數的書長啥樣都不知道。
  • 從生物學到神經元:人工神經網絡 ( ANN ) 簡介
    人工神經網絡是深度學習的核心。讓我來看看人工神經網絡是如何發展的!這些技術似乎比人工神經網絡提供了更好的結果和更堅實的理論基礎,神經網絡的研究再次被擱置。我們現在目睹了對人工神經網絡的另一波興趣。這波浪潮會像以前一樣消滅嗎?好吧,這裡有一些充分的理由使我們相信這次是不同的,人們對人工神經網絡的重新有興趣將對我們的生活產生更深遠的影響:現在有大量數據可用於訓練神經網絡,並且在非常大和複雜的問題上,人工神經網絡通常優於其他機器學習技術。
  • matlab在數學建模中的應用 pdf版
    書中內容完全是根據數學建模競賽的需要而編排的,涵蓋了絕大部分數學建模問題的matlab求解方法。本書內容分上下兩篇。上篇介紹數學建模中常規方法的matlab實現,包括matlab交互、數據建模、程序繪圖、灰色預測、規劃模型等方法;還介紹了各種高級方法的matlab實現,包括遺傳算法、粒子群算法、模擬退火算法、人工神經網絡、小波分析、動態仿真、數值模擬等。
  • 火爆網絡的《神經網絡與深度學習》,有人把它翻譯成了中文版!
    ,第一時間送達今天給大家介紹一本非常好的深度學習入門書籍,就是《Neural Network and Deep Learning》,中文譯為《神經網絡與深度學習》。這是一本解釋人工神經網絡和深度學習背後核心思想的免費在線書籍。書籍在線地址:http://neuralnetworksanddeeplearning.com/about.html該書的作者是來自 Y Combinator Research 的研究員 Michael Nielsen,他也是⼀位量⼦物理學家、科學作家、計算機編程研究⼈員。
  • 深度 關於人工神經網絡,你應該知道的一切都在這裡了
    人工智慧的很多進步都是新的統計模型,其中絕大多數來自於一項稱作「人工神經網絡」(artificial neural networks)的技術,簡稱ANN。這種技術十分粗略地模擬了人腦的結構。值得注意的是,人工神經網絡和神經網絡是不同的。很多人為了方便起見而把「人工神經網絡」中的人工二字省略掉,這是不準確的,因為使用「人工」這個詞正是為了與計算神經生物學中的神經網絡相區別。
  • 【AI-波浪補償】用人工神經網絡實時預測單向海況的確定性波
    例如,每個分量都可以按照線性色散理論在空間中傳播,如下所示:3.2 人工神經網絡(ANN)人工神經網絡是一個計算系統,它根據給定的數據集建立輸入和輸出之間的相關性。圖3顯示了沿兩條陡度線的海洋狀態的可預測區域,背景輪廓為來自LWT模型的預測誤差和來自人工神經網絡模型的垂直條帶。類似的結果可以看出,對於平均陡度線,兩種模型的預測誤差是可比較的,而對於極限陡度線,人工神經網絡模型表現更好。與前一種探測情況類似,人工神經網絡模型在理論預測範圍內的預測誤差在20%以內。
  • 人工神經網絡在這六大領域的表現已經超越了人類
    打開APP 人工神經網絡在這六大領域的表現已經超越了人類 工程師黃明星 發表於 2018-06-22 07:55:00 五年前,
  • 神經網絡的六大應用
    其中,背後的人工神經網絡是最近AI行業飛速發展的基礎。現如今,研究人員進一步嘗試教機器人學會如何把一件事做到極致。機器人不同於能一心多用的人體,機器人必須以線性方式進行「思考」。然而,在某些領域,AI還是「打敗」了人類。深度神經網絡已經可以應用在交談、駕駛汽車,已經能夠打敗電子遊戲和圍棋冠軍,還能利用其繪製圖片,並進行科學發現。