地州電視網(wǎng)站建設(shè)流程惠東seo公司
記得17年第一次閱讀深度學(xué)習(xí)相關(guān)文獻(xiàn)及代碼覺(jué)得不是很順暢,做客戶端開(kāi)發(fā)時(shí)間久了,思維慣性往往覺(jué)得比較迷茫。
而且文章中涉及的數(shù)學(xué)公式及各種符號(hào)又覺(jué)得很迷惑,雖然文章讀下來(lái)了,代碼也調(diào)試過(guò)了,意識(shí)里并沒(méi)有輕松的感覺(jué),隔段時(shí)間再看,腦子里又是空空如也。
其實(shí)目前來(lái)看,深度學(xué)習(xí)的底層邏輯很簡(jiǎn)單,只是當(dāng)時(shí)完全迷失在了數(shù)學(xué)邏輯的符號(hào),公式推導(dǎo),及代碼對(duì)應(yīng)層面,對(duì)于神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)的精髓并未完全把握。
我嘗試著就自己的理解,極簡(jiǎn)化其中的數(shù)學(xué)邏輯,闡述最簡(jiǎn)單的神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)模型具體原理,不會(huì)涉及什么Tensorflow,卷積神經(jīng)網(wǎng)絡(luò)這些經(jīng)常聽(tīng)到的概念,就是很樸素的語(yǔ)言。
可以參考 Michael Nielsen 的經(jīng)典文章 Neural Networks and Deep Learning
神經(jīng)網(wǎng)絡(luò) - Hello Wrold
具體神經(jīng)網(wǎng)絡(luò)緣由介紹很多,此處就不冗余跳過(guò),從一個(gè)最簡(jiǎn)單的問(wèn)題開(kāi)始
上面的手寫(xiě)數(shù)字,計(jì)算機(jī)如何識(shí)別 就是神經(jīng)網(wǎng)絡(luò)中的 Hello World
比如手寫(xiě)體數(shù)字 3, 如何識(shí)別出 羅馬數(shù)字3
解決輸入問(wèn)題
抽象
先把這個(gè)Hello World看做一個(gè)黑盒,輸入就是一個(gè)手寫(xiě)體的數(shù),也就是一張圖
我們把 上圖中的 圈計(jì)為一個(gè)神經(jīng)元,圈中標(biāo)注 0 ~ 1 范圍的數(shù)字,表明神經(jīng)元被激活的強(qiáng)度
手寫(xiě)體數(shù)字9 就被劃分為 28*28 個(gè)小單元,也就是784個(gè)神經(jīng)元
每個(gè)神經(jīng)元中標(biāo)注的數(shù)字,就是圖中對(duì)應(yīng)像素的灰度值
可以理解為相應(yīng)位置的神經(jīng)元被激活的強(qiáng)度
0表示純黑像素,1表示純白像素
激活強(qiáng)度,暫時(shí)命個(gè)名 - Activation (激活值)
變換
把這784個(gè)神經(jīng)元經(jīng)過(guò)以下變換
其中,中間的兩層暫時(shí)當(dāng)做大黑盒,黑盒里面就進(jìn)行著處理識(shí)別數(shù)字的具體工作
最左邊的一層 784 個(gè)神經(jīng)元
最右邊的一層神經(jīng)元,激活值也為 0~1,表明輸入的圖像 是具體某一個(gè)羅馬數(shù)字的可能性
至于中間為啥兩層,每層16個(gè)神經(jīng)元,可以認(rèn)為就這么著,重在理解模型為主
最終構(gòu)成了一個(gè)神經(jīng)網(wǎng)絡(luò),這個(gè)網(wǎng)絡(luò)包含了 784+16+16+10 個(gè)神經(jīng)元
網(wǎng)絡(luò)認(rèn)知
我們認(rèn)知手寫(xiě)數(shù)字的邏輯可能是這樣的
數(shù)字整體拆分成 幾個(gè)大的部分
每個(gè)部分進(jìn)一步拆分成小一點(diǎn)的筆畫(huà)
中間一層 對(duì)應(yīng)著 拆分的較大的部分
較右邊的一層 對(duì)應(yīng)著 筆畫(huà)部分
神經(jīng)元 - 神經(jīng)元
那么,如何拆分部件,怎么拆分才是正確的呢,而且輸入圖像,也就是784個(gè)神經(jīng)元 與 網(wǎng)絡(luò)中間的黑盒又是如何工作的?
就著這個(gè)網(wǎng)絡(luò),可能我們直觀的邏輯就是希望這樣
比如,手寫(xiě)體數(shù)字7 中的 水平一部分,中間較粗明亮的水平部分,如何提取出來(lái)
為了簡(jiǎn)單,拆分的大組件 用一個(gè)神經(jīng)元表示
其中 橫 組件邊緣較 暗的部分,也就是 輸入層橫 邊緣激活值較低的神經(jīng)元, 對(duì)第二層 對(duì)應(yīng) 橫組件的 那個(gè)神經(jīng)元 作用就弱,具體表現(xiàn)就是 第一層的神經(jīng)元連過(guò)來(lái)的線就弱一些
第一層其余的神經(jīng)元(跟橫無(wú)關(guān)的神經(jīng)元) 此刻 練過(guò)來(lái)的線 甚至可能看不見(jiàn),影響微乎其微
w表示 - 神經(jīng)元之間的連線強(qiáng)弱
a表示 - 神經(jīng)元的激活值
此時(shí),這個(gè)裝著 橫 的神經(jīng)元的激活值 就是 w1a1 + w2a2 + … + w784*a784
前面說(shuō)過(guò),每個(gè)神經(jīng)元的激活值 在 0~1之間
但此時(shí) 得到的這個(gè) 代表 橫 的神經(jīng)元的激活值 可能為任意值,并不在0~1之間
為了讓 激活值 能繼續(xù) 收斂在 0~1之間,用到Sigmoid 函數(shù)
這個(gè) 裝著 橫 的神經(jīng)元 并不能隨便激發(fā),必須有個(gè)門(mén)檻,過(guò)門(mén)檻才能激發(fā),比如這個(gè)門(mén)檻為1,才能激發(fā)
Sigmoid(w1a1 + w2a2 + … + w784*a784 - 1), 正好對(duì)應(yīng) 超過(guò)上圖中的 標(biāo)注點(diǎn),神經(jīng)元激發(fā)
最終 Sigmoid(w1a1 + w2a2 + … + w784*a784 + bias), bias 就是 上面的 -1
抽象網(wǎng)絡(luò)關(guān)系
這是線性代數(shù)中的矩陣 相乘
整個(gè)網(wǎng)絡(luò)中 包含的
開(kāi)關(guān)變量總數(shù):78416 + 1616 + 1610 + 162 + 10 = 13002
也就是 總權(quán)重開(kāi)關(guān):78416 + 1616 + 16*10 = 12960
總bias開(kāi)關(guān):16*2 + 10 = 42
接下來(lái)就是 這 13000 個(gè)開(kāi)關(guān)變量 的設(shè)置問(wèn)題了,可以認(rèn)為 這個(gè)黑盒函數(shù) 有 13000 個(gè)變量,要對(duì)這13000個(gè)變量求解,得到一個(gè)完全函數(shù),然后使用這個(gè)函數(shù) 就可以得到 識(shí)別結(jié)果了
求解的過(guò)程就是 學(xué)習(xí)的過(guò)程
未完,待續(xù) 深度學(xué)習(xí)基礎(chǔ)(二)-梯度下降