近日,Mate Labs 聯(lián)合創(chuàng)始人兼 CTO 在 Medium 上撰文《Everything you need to know about Neural Networks》,從神經(jīng)元到 Epoch,扼要介紹了神經(jīng)網(wǎng)絡的主要核心術語。
理解什么是人工智能,以及機器學習和深度學習如何影響它,是一種不同凡響的體驗。在 Mate Labs 我們有一群自學有成的工程師,希望本文能夠分享一些學習的經(jīng)驗和捷徑,幫助機器學習入門者理解一些核心術語的意義。
神經(jīng)元(節(jié)點)—神經(jīng)網(wǎng)絡的基本單元,它包括特定數(shù)量的輸入和一個偏置值。當一個信號(值)輸入,它乘以一個權重值。如果一個神經(jīng)元有 4 個輸入,則有 4 個可在訓練中調(diào)節(jié)的權重值。
?
?
神經(jīng)網(wǎng)絡中一個神經(jīng)元的運算
?
連接—它負責連接同層或兩層之間的神經(jīng)元,一個連接總是帶有一個權重值。訓練的目標是更新這一權重值以降低損失(誤差)。
?
偏置(Offset)—它是神經(jīng)元的額外輸入,值總是 1,并有自己的連接權重。這確保即使當所有輸入為 0 時,神經(jīng)元中也存在一個激活函數(shù)。
激活函數(shù)(遷移函數(shù))—激活函數(shù)負責為神經(jīng)網(wǎng)絡引入非線性特征。它把值壓縮到一個更小范圍,即一個 Sigmoid 激活函數(shù)的值區(qū)間為 [0,1]。深度學習中有很多激活函數(shù),ReLU、SeLU 、TanH 較 Sigmoid 更為常用。更多激活函數(shù),請參見《一文概覽深度學習中的激活函數(shù)》。
?
各種激活函數(shù)
?
基本的神經(jīng)網(wǎng)絡設計
輸入層—神經(jīng)網(wǎng)絡的第一層。它接收輸入信號(值)并將其傳遞至下一層,但不對輸入信號(值)執(zhí)行任何運算。它沒有自己的權重值和偏置值。我們的網(wǎng)絡中有 4 個輸入信號 x1、x2、x3、x4。
隱藏層—隱藏層的神經(jīng)元(節(jié)點)通過不同方式轉(zhuǎn)換輸入數(shù)據(jù)。一個隱藏層是一個垂直堆棧的神經(jīng)元集。下面的圖像有 5 個隱藏層,第 1 個隱藏層有 4 個神經(jīng)元(節(jié)點),第 2 個 5 個神經(jīng)元,第 3 個 6 個神經(jīng)元,第 4 個 4 個神經(jīng)元,第 5 個 3 個神經(jīng)元。最后一個隱藏層把值傳遞給輸出層。隱藏層中所有的神經(jīng)元彼此連接,下一層的每個神經(jīng)元也是同樣情況,從而我們得到一個全連接的隱藏層。
輸出層—它是神經(jīng)網(wǎng)絡的最后一層,接收來自最后一個隱藏層的輸入。通過它我們可以得到合理范圍內(nèi)的理想數(shù)值。該神經(jīng)網(wǎng)絡的輸出層有 3 個神經(jīng)元,分別輸出 y1、y2、y3。
輸入形狀—它是我們傳遞到輸入層的輸入矩陣的形狀。我們的神經(jīng)網(wǎng)絡的輸入層有 4 個神經(jīng)元,它預計 1 個樣本中的 4 個值。該網(wǎng)絡的理想輸入形狀是 (1, 4, 1),如果我們一次饋送它一個樣本。如果我們饋送 100 個樣本,輸入形狀將是 (100, 4, 1)。不同的庫預計有不同格式的形狀。
權重(參數(shù))—權重表征不同單元之間連接的強度。如果從節(jié)點 1 到節(jié)點 2 的權重有較大量級,即意味著神將元 1 對神經(jīng)元 2 有較大的影響力。一個權重降低了輸入值的重要性。權重近于 0 意味著改變這一輸入將不會改變輸出。負權重意味著增加這一輸入將會降低輸出。權重決定著輸入對輸出的影響力。
?
前向傳播
前向傳播—它是把輸入值饋送至神經(jīng)網(wǎng)絡的過程,并獲得一個我們稱之為預測值的輸出。有時我們也把前向傳播稱為推斷。當我們饋送輸入值到神經(jīng)網(wǎng)絡的第一層時,它不執(zhí)行任何運算。第二層接收第一層的值,接著執(zhí)行乘法、加法和激活運算,然后傳遞至下一層。后續(xù)的層重復相同過程,最后我們從最后一層獲得輸出值。
反向傳播
反向傳播—前向傳播之后我們得到一個輸出值,即預測值。為了計算誤差我們對比了帶有真實輸出值的預測值。我們使用一個損失函數(shù)(下文提及)計算誤差值。接著我們計算每個誤差值的導數(shù)和神經(jīng)網(wǎng)絡的每個權重。反向傳播運用微分學中的鏈式法則,在其中我們首先計算最后一層中每個誤差值的導數(shù)。我們調(diào)用這些導數(shù)、梯度,并使用這些梯度值計算倒數(shù)第二層的梯度,并重復這一過程直到獲得梯度以及每個權重。接著我們從權重值中減去這一梯度值以降低誤差。通過這種方式我們不斷接近局部最小值(即最小損失)。
?
學習率—訓練神經(jīng)網(wǎng)絡的時候通常會使用梯度下降優(yōu)化權重。在每一次迭代中使用反向傳播計算損失函數(shù)對每一個權重的導數(shù),并從當前權重減去導數(shù)和學習率的乘積。學習率決定了更新權重(參數(shù))值的快慢。學習率應該盡可能高而不會花費太多時間達到收斂,也應該盡可能低從而能找到局部最優(yōu)。
?
精度和召回率
準確率—測量值對標準(或已知)值的接近程度。
精度—兩個測量值之間的接近程度,表示測量的可重復性或可再現(xiàn)性。
召回率(敏感度)—全部相關實例中被恢復的相關實例的比率。
?
Tp 指真正,Tn 指真負,F(xiàn)p 指假正,F(xiàn)n 指假負。
混淆矩陣—維基百科的解釋是:
機器學習領域和統(tǒng)計分類問題中,混淆矩陣(也稱為誤差矩陣/error matrix)是一個算法性能的可視化表格,通常在監(jiān)督學習中使用(無監(jiān)督學習中混淆矩陣通常稱為匹配矩陣,/matching matrix)。矩陣的每一行表示一個預測類,每一列表示一個真實類(或相反)。使用真實的名詞使其易于解讀,能簡單地看出系統(tǒng)對兩個類別的混淆程度(即將一個類別的物體標記為另一個)。
?
?
混淆矩陣
收斂—隨著迭代次數(shù)增加,輸出越來越接近具體的值。
正則化—用于克服過擬合問題。正則化過程中通過添加一個 L1(LASSO)或 L2(Ridge)規(guī)范到權重向量 w(通過給定算法學習到的參數(shù))上以「懲罰」損失項:
L(損失函數(shù))+λN(w)—這里的λ是正則項,N(w)是 L1 或 L2 規(guī)范。
歸一化—數(shù)據(jù)歸一化是將一個或多個屬性縮放至 0 到 1 的范圍的過程。當不知道數(shù)據(jù)分布或分布不是高斯分布(鐘形曲線)()的時候,歸一化是很有用的,可加速學習過程。
全連接層—一個層所有的節(jié)點的激活函數(shù)值作為下一層的每個節(jié)點的輸入,若這對所有的層都成立,則稱這些層為全連接層。
?
全連接層
損失函數(shù)/代價函數(shù)—損失函數(shù)計算單個訓練樣本的誤差,代價函數(shù)是整個訓練集的損失函數(shù)的平均。
「mse」—平均方差
「binary_crossentropy」—二分類對數(shù)損失(logloss)
「categorical_crossentropy」—多分類對數(shù)損失(logloss)
模型優(yōu)化器—優(yōu)化器是一種搜索技術,用于更新模型的權重。
SGD—隨機梯度下降,支持動量算法。
RMSprop—適應性學習率優(yōu)化方法,由 Geoff Hinton 提出。
Adam—適應性矩估計(Adam)并同樣使用了適應性學習率。
性能指標—用于測量神經(jīng)網(wǎng)絡性能的指標,例如,準確率、損失、驗證準確率、驗證損失、平均絕對誤差、精度、召回率和 f1 分數(shù)等等。
批大小—一次前向/反向傳播中適用的樣本數(shù),批大小越大,占用的內(nèi)存量越大。
訓練 epochs—模型在訓練數(shù)據(jù)集上重復訓練的總次數(shù)。
一個 epoch = 全部訓練實例的一次前向和一次反向傳播。
評論