100天搞定機器學習|Day35 深度學習之神經網絡的結構

100天搞定機器學習|Day1數據預處理編程

100天搞定機器學習|Day2簡單線性迴歸分析網絡

100天搞定機器學習|Day3多元線性迴歸機器學習

100天搞定機器學習|Day4-6 邏輯迴歸ide

100天搞定機器學習|Day7 K-NN函數

100天搞定機器學習|Day8 邏輯迴歸的數學原理學習

100天搞定機器學習|Day9-12 支持向量機設計

100天搞定機器學習|Day11 實現KNN3d

100天搞定機器學習|Day13-14 SVM的實現cdn

100天搞定機器學習|Day15 樸素貝葉斯blog

100天搞定機器學習|Day16 經過內核技巧實現SVM

100天搞定機器學習|Day17-18  神奇的邏輯迴歸

100天搞定機器學習|Day19-20 加州理工學院公開課:機器學習與數據挖掘

100天搞定機器學習|Day21 Beautiful Soup

100天搞定機器學習|Day22 機器爲何能學習?

100天搞定機器學習|Day23-25 決策樹及Python實現

100天搞定機器學習|Day26-29 線性代數的本質

100天搞定機器學習|Day 30-32 微積分的本質

100天搞定機器學習|Day33-34 隨機森林

本文爲3Blue1Brown之《What is a Neural Network?》學習筆記

觀看地址:bilibili.com/video/av15532370

這集Grant大佬假設你們都沒有神經網絡的基礎,爲新手講解神經網絡基本概念,讓你們再據說神經網絡學習的時候,能夠明白到底是什麼意思。大佬選擇經典的多層感知器(MLP)結構解決手寫數字識別問題,理由是理解了經典原版,才能更好地理解功能強大的變種,好比CNN和LSTM。

首先看看神經元和他們是怎麼鏈接的

神經元能夠理解爲一個裝着0到1之間數字的容器。以28*28輸入圖像每個像素爲例,每個原點都是一個神經元,其中數字表明對於像素的灰度值,0表示純黑,1表示純白,這個數字在神經網絡裏稱做「激活值」。

image

這784個神經元就組成了網絡的第一層,最後一層的十個神經元表明0-9這十個數,一樣的,他們的激活值也在0-1之間,表明了輸入圖像對應哪一個數字的可能性。網絡中間層被稱爲隱含層,能夠看作黑箱,數字識別的具體工做就在這裏完成,這裏加了兩層隱含層,每層有16個神經元——隨便設置的,只是爲了顯得好看,後期還能夠再調整。

image.gif

神經網絡處理信息的核心機制正是如此,一層的激活值經過必定的運算,得出下一層的激活值。上面也提到784個神經元表明的是數字圖案,那麼下一層激活值也會產生某些特殊的圖案,最終在輸出層最亮的神經元表示神經網絡的選擇。

image

咱們再看看如何訓練,爲何這種層狀結構就能識別數字呢?

咱們能夠把數字進行拆解,理想情況下但願倒數第二層的各個神經元能夠分別對應上一個筆畫。

image

再來看隱含層第一層,當輸入爲9或8的上面帶圈的數字時,某個神經元的激活值就會接近1,但願全部這種位於圖像頂部的圓圈圖案都能點亮這個神經元,這樣,從第三次到輸出層,咱們只須要學習哪些部件能組合出哪一個數字便可。

image

可是如何識別圓圈呢?同理能夠把它拆分紅更細微的問題。

image

因而咱們但願網絡第二層的各個神經元對應這些短邊,第二層就能把全部關聯短邊的八到十個神經元都點亮,接着就能點亮對於頂部圓圈和長豎條的神經元。

image

而後咱們看看連線的做用

如何讓第二層(隱含層的第一層)中的這一個神經元可以可以識別出圖像的這一塊區域是否存在一條邊?

image

咱們設計讓第二層的某一個神經元能正確識別圖像中的這塊區域裏是否存在一條邊。

image

咱們拿出第一層(輸入層/第0層)的激活值,並賦上權重(要關注區域的權重爲正值,不然爲0),這樣對全部像素值求加權和,就只會累加關注區域的像素值了。

image

綠色爲正值,紅色爲負值,顏色越暗表示權重越接近0

image

因此想要識別是否存在一條邊,只須要給周圍一圈的像素都賦予負權重

image

計算的加權值可使任意大小的

image

可是咱們須要的是將其壓縮到0-1之間

image

這裏就須要Sigmoid函數了,這就是激活函數。

image

激活值實際上就是一個對加權之和到底有多正的打分,可是有時加權之和大於0時,也不想點亮神經元,好比想要加權和大於10時才讓他激發,這裏就還須要加上一個偏置值,保證不隨便激發。

image

權重告訴咱們第二個神經元關注什麼樣的像素圖案

bias告訴咱們加權和要多大才能讓神經元的激發有意義

image

這裏有13000多個參數須要調整,因此這裏所謂的學習就是找到正確的權重和偏置。剛開始講到咱們把神經元看做是數字容器,可是這些數字取決於輸入的圖像,因此把神經元看過一個函數才更準確,它的輸入是上一層全部神經元的輸出,它的輸出是一個0-1之間的值。其實整個神經網絡也是一個函數,輸入784個值,輸出10個值。不過它是一個包含了13000個權重、偏置參數的極其複雜的函數。

image

image

須要注意的是,機器學習尤爲是神經網絡運算與線性代數是密不可分的,以前有過介紹,請移步:

100天搞定機器學習|Day26-29 線性代數的本質

image

神經網絡中須要大量的矩陣乘法和sigmoid映射運算

image

這種運算方式,很是適合編程,好比能夠用Python的numpy很簡單的實現。

image

最後須要一提的是,如今神經網絡基本再也不使用sigmoid了,比較流行的是ReLU(線性整流函數)。

image

相關文章
相關標籤/搜索