C#中的深度學習(三):理解神經網絡結構

在這篇文章中,咱們將回顧監督機器學習的基礎知識,以及訓練和驗證階段包括哪些內容。數組

在這裏,咱們將爲不瞭解AI的讀者介紹機器學習(ML)的基礎知識,而且咱們將描述在監督機器學習模型中的訓練和驗證步驟。網絡

ML是AI的一個分支,它試圖經過概括一組示例而不是接收顯式指令來讓機器找出如何執行任務。ML有三種範式:監督學習、非監督學習和強化學習。在監督學習中,一個模型(咱們將在下面討論)經過一個稱爲訓練的過程進行學習,在這個過程當中,它會提供示例輸入和正確輸出。它瞭解數據集示例中哪些特性映射到特定輸出,而後可以在一個稱爲預測的階段預測新的輸入數據。在無監督學習中,模型經過分析數據之間的關係來學習數據的結構,而不涉及任何其餘過程。在強化學習中,咱們創建模型,經過試驗和錯誤技術,隨着時間的推移學習和改進。機器學習

ML中的模型是什麼?模型是一個簡單的數學對象或實體,它包含一些關於AI的理論背景,以便可以從數據集學習。在監督學習中流行的模型包括決策樹、向量機,固然還有神經網絡。函數

神經網絡是按堆棧的形狀分層排列的。除了輸入層和輸出層以外,每一層的節點都接收來自上一層節點的輸入,也能夠接收來自下一層節點的輸入,一樣也能夠向上一層和下一層節點發送信號或輸出。性能

在一個神經網絡中,咱們老是存在輸入和輸出層,可能有一個或多個隱藏層。學習

最簡單的NN是感知器,它是包含的輸入層和輸出層單個節點。測試

對於神經網絡中的每條邊都有一個關聯的權重值,這是對於每一個節點都有關聯的值。例如,輸入層中每一個節點的值能夠來自與數據集中的圖像相關聯的像素值輸入數組。爲了計算下一層節點的值,咱們計算鏈接到該節點的輸入的加權和。這就是傳遞函數。一旦計算出這個值,它就被傳遞給另外一個稱爲激活函數的函數,該函數根據閾值肯定該節點是否應該觸發到下一層。有些激活函數是二進制的,有些則有多個輸出。優化

一般在神經網絡的末尾,咱們有一個激活函數,它對傳遞到輸入層的數據進行分類(作出決定)。在硬幣識別的狀況下,它將決定圖像中硬幣的類別或類型。神經網絡中的學習過程能夠僅僅看做是對其權重的調整,以便爲每一個給定的輸入得到預期的輸出。一旦對模型進行了訓練,獲得的權重就能夠被保存下來。spa

當一個神經網絡有一個以上的隱藏層時,咱們將其稱爲深度學習(DL)。DL是一套依賴於神經網絡且不止一個隱藏層的技術。擁有多個隱藏層的緣由是提供比單一隱藏層神經網絡更準確的結果。實踐證實,深度神經網絡比單層神經網絡能產生更快更準確的結果。你添加到你的神經網絡的每一層都有助於從數據集學習複雜的特徵。code

神經網絡包含許多須要調整以得到更好性能的參數。爲了可以檢查參數優化的有效性和神經網絡自己的性能,咱們留出很大一部分的原始數據集(一般大於70%)做爲訓練集,使用其餘驗證(測試)組。驗證集也幫助咱們防止過分擬合,這發生在一個模型學習太好一組很是類似的對象數據集,使它太適合這個數據和不適合新數據。

在下一篇文章中,咱們將研究用於硬幣識別問題的卷積神經網絡,並將在Keras.NET中實現一個卷積神經網絡。

歡迎關注個人公衆號,若是你有喜歡的外文技術文章,能夠經過公衆號留言推薦給我。

 

原文連接:https://www.codeproject.com/Articles/5284227/Deep-Learning-in-Csharp-Understanding-Neural-Netwo

相關文章
相關標籤/搜索