1. 程式人生 > >C#中的深度學習(三):理解神經網路結構

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

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

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

ML是AI的一個分支,它試圖通過歸納一組示例而不是接收顯式指令來讓機器找出如何執行任務。ML有三種正規化:監督學習、非監督學習和強化學習。在監督學習中,一個模型(我們將在下面討論)通過一個稱為訓練的過程進行學習,在這個過程中,它會提供示例輸入和正確輸出。它瞭解資料集示例中哪些特性對映到特定輸出,然後能夠在一個稱為預測的階段預測新的輸入資料。在無監督學習中,模型通過分析資料之間的關係來學習資料的結構,而不涉及任何其他過程。在強化學習中,我們建立模型,通過試驗和錯誤技術,隨著時間的推移學習和改進。

ML中的模型是什麼?模型是一個簡單的數學物件或實體,它包含一些關於AI的理論背景,以便能夠從資料集學習。在監督學習中流行的模型包括決策樹、向量機,當然還有神經網路。

神經網路是按堆疊的形狀分層排列的。除了輸入層和輸出層之外,每一層的節點都接收來自上一層節點的輸入,也可以接收來自下一層節點的輸入,同樣也可以向上一層和下一層節點發送訊號或輸出。

在一個神經網路中,我們總是存在輸入和輸出層,可能有一個或多個隱藏層。

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

對於神經網路中的每條邊都有一個關聯的權重值,這是對於每個節點都有關聯的值。例如,輸入層中每個節點的值可以來自與資料集中的影象相關聯的畫素值輸入陣列。為了計算下一層節點的值,我們計算連線到該節點的輸入的加權和。這就是傳遞函式。一旦計算出這個值,它就被傳遞給另一個稱為啟用函式的函式,該函式根據閾值確定該節點是否應該觸發到下一層。有些啟用函式是二進位制的,有些則有多個輸出。

通常在神經網路的末尾,我們有一個啟用函式,它對傳遞到輸入層的資料進行分類(做出決定)。在硬幣識別的情況下,它將決定影象中硬幣的類別或型別。神經網路中的學習過程可以僅僅看作是對其權重的調整,以便為每個給定的輸入獲得預期的輸出。一旦對模型進行了訓練,得到的權重就可以被儲存下來。

當一個神經網路有一個以上的隱藏層時,我們將其稱為深度學習(DL)。DL是一套依賴於神經網路且不止一個隱藏層的技術。擁有多個隱藏層的原因是提供比單一隱藏層神經網路更準確的結果。實踐證明,深度神經網路比單層神經網路能產生更快更準確的結果。你新增到你的神經網路的每一層都有助於從資料集學習複雜的特徵。

神經網路包含許多需要調整以獲得更好效能的引數。為了能夠檢查引數優化的有效性和神經網路本身的效能,我們留出很大一部分的原始資料集(通常大於70%)作為訓練集,使用其他驗證(測試)組。驗證集也幫助我們防止過度擬合,這發生在一個模型學習太好一組非常相似的物件資料集,使它太適合這個資料和不適合新資料。

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

歡迎關注我的公眾號,如果你有喜歡的外文技術文章,可以通過公眾號留言推薦給我。

 

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

&n