民科筆記 神經網路的本質

2022-10-10 22:21:13 字數 2652 閱讀 8260

筆記所有素材均**於網路

近來,深度神經網路在人工智慧領域被廣泛應用,還記得我在當初學習時走了不少彎路……

一些 「教程」 一上來就大談 「偏導數」 「矩陣」 之類的概念,讓人雲裡霧裡

這篇文章會嘗試講清楚最本質的東西,一種類似於直覺或哲學的東西,所以 不涉及計算。一旦你明白它的本質,如何計算應該是心中有數的……

(這是我本人的個人理解,若有什麼不對,望不吝指正)

什麼是神經網路?以及它解決了什麼?

一直以來,計算機都只能處理具有明確步驟 精確任務:例如加減乘除、查詢資料、求解方程等。但對於 模糊任務:手寫識別、分類、聊天對話等,卻無能為力……

乙個原因是:即使是乙個簡單的手寫數字識別任務,世界上最聰明的工程師也無法給一大堆 凌亂的畫素 與 抽象的數字 找到明確的關係

模糊任務處理本質是乙個 資料處理 問題,問題在於如何找到處理方法……

於是人們發明了 神經網路,用模型裡的引數表示出通用的資料處理流程

也就是說,只要找到合適的 模型引數,就可以把輸入的凌亂的資料(貓狗、評價文字等),變成抽象概念(貓、狗、好評度等)【下面看看 —— 什麼是模型?】

先讓我們看看乙個簡單 全連線神經網路 的結構:

由許多許多 人工神經元 (說是受人腦啟發,但更像是蹭熱度)組成,用於處理資料

訊號一層層的被傳遞、處理,最終產生輸出(但我們尚未知曉裡面發生了什麼)

(圖1)簡單全連線神經網路結構圖

而且,一大堆亂七八糟的連線,所以還是先看看 單神經元 結構圖:

(圖2)單人工神經元【可以看作乙個資料加工廠】

單神經元運算過程如下:

將對應的 輸入x 與對應的 權重w 相乘並求和(權重可以理解為重要程度)

將 加權和 加上 偏置b 送入 啟用函式 ,最後輸出……

現在再看(圖1)是否有了一些頭緒?那些寫著 +1 的圈圈就是 偏置b

這麼多東西怎麼來,一會兒再說……

而亂成一鍋粥的箭頭是 輸入與輸出的流向 和 權重,只要弄清什麼是 啟用函式 即可

啟用函式 顧名思義,是乙個函式。常用的是 leaky relu,影象如下:

leaky relu

leaky relu 的函式表示式很容易寫出來:

所以完整單神經元的表示式呼之欲出!

現在只要按照(圖1)的資料流向,將一層網路的輸出作為下層網路輸入,層層巢狀計算即可,最後一層便是整個網路的輸出

重點,啟用函式是固定的,在輸入確定的情況下,權重 與 偏置 決定著模型的輸出!這些東

就是模型的 引數,像網路層數,每層個數等叫 超引數,因為一旦確定一般不更改

因此我們所需要的便是找到合適的 引數,使得模型可以正確的將資料轉化為概念

假若我們有一張貓圖,應該如何將其輸入模型,看看它到底是不是貓呢?最簡單粗暴的方法就是把它變成黑白貓:從上到下,從左往右把所有畫素點的亮度值輸入進去……

假設有n個畫素點,那麼輸入層就有n個神經元

我們並不知道合適的引數是什麼,所以可以試著隨機初始化它們。但這樣的模型是不可以使用的,因為它完全在瞎搞,甚至可能把老鼠的判定為貓

我們構建網路模型的目的,是為了判定是否是貓,我們當然希望 準確率 越高越好!

而那數不盡的引數讓我們發愁:想象有一台機器,可以 計算模型的準確率,我們便可以依據這台神奇的機器來確定引數

旋鈕是引數,綠色的條是準確率

然後我們就可以 對每個引數 這樣做:

增大這個引數,如果 準確率提公升,說明我們做對了,嘗試 增大些

增大這個引數,如果 準確率降低,說明我們做錯了,嘗試 減小些

這便是 神經網路的奧秘 —— 根據引數對結果的影響,進行針對性調整。這個過程叫做 訓練

可能有人會問:梯度呢?偏導呢?網上一堆嚇人的概念那裡去了?【下面講 梯度 是什麼】

既然我們要根據每個引數對準確率的影響,來針對性調整。總不能人工乙個個調吧?

要想把這個過程 自動化,就要 定量衡量引數對準確率的影響!

同樣的改動大小,不同引數對準確率的影響不同,因此,可以 將影響定義為乙個比值:

當  被設定得越小,它就越接近所謂的 梯度(這事實上是數學上的極限值)

但是,準確率 怎麼得到?事實上,我們一般不用準確率作為標準,而是以 錯誤程度 為標準。請原諒我上文為了解釋清楚,故意偷換了標準……(本質是一樣的)

所以,上文的調整步驟應該變為:

增大這個引數,如果 錯誤程度 降低,說明我們做對了,嘗試增大些

增大這個引數,如果 錯誤程度 提公升,,說明我們做錯了,減少引數值

梯度的近似表達為:

現在,我們需要計算模型的 錯誤程度。假若模型最後只有乙個輸出 —— 是貓輸出1,否則為0

那麼,當輸入單張的時候,我們可以這樣計量 錯誤

為多個時,將所有的的錯誤求平均即可

(比如可以用0代表不是貓,1代表是貓)

這裡的 真實值 指的是模型 應該輸出的值 (而 真實值 確實需要人類手動提供……)

像這樣,用來衡量錯誤程度的標準,叫 損失函式!訓練的目的便是 讓損失函式值最小

把一堆貓圖輸入模型,有了人類提供的標籤,神經網路便可以知道自己與理想的差距。根據損失函式的指引,調整每乙個引數的大小,直至完全正確的達到預期!

對於最後一層有多個神經元的情況,你應該知道 什麼是正確的輸出,給模型乙個 標準答案,然後再用損失函式,衡量錯誤程度……

當然,有的時候也會出岔子,模型把我們給的所有資料 死記硬背 下來,導致它實際上效果不好。它沒有真正的做判斷,而是在 背答案,這種現象被稱之為 過擬合

人工神經網路本質理解

1 每一層的數學表達 y f w x b 其中x 是輸入向量,y 是輸出向量,b 是偏移向量,w 是權重矩陣,f 是啟用函式。每一層僅僅是把輸入x 經過如此簡單的操作得到y 2 數學理解一 用線性變換跟隨著非線性變化,將輸入空間投向另乙個空間。與支援向量機的原理相同。理解非線性轉化為線性 3 數學理...

神經網路筆記

感知機模型如下圖所示 輸入層接受多個二值輸入,輸出層提供乙個二值輸出 m p神經元 用數學公式來描述就是 y 0,1 jw jxj b 0 jwjx j b 0 這裡,y 是指輸出,xi 指輸入,wi 是輸入的權重,j 是輸入管腳個數,b是指偏移.多個感知機可以構成神經網路,如下圖 m p神經元的輸...

神經網路學習筆記

隱含層數越多,越容易擬合複雜函式 為了擬合複雜函式需要的隱含節點數目,基本上隨著隱含層數目的增加呈現指數下降的趨勢,也就是說層數越多,神經網路所需要的隱含節點可以越少。層數越深,概念越抽象,需要背誦的知識點 神經網路的隱含節點 就越少。但是,層數越多,容易出現過擬合以及引數難以除錯以及梯度瀰散的問題...