在之前的文章里面,我介紹了機器學(xué)習(xí)的很多經(jīng)典算法礁叔,其中有一個叫做『神經(jīng)網(wǎng)絡(luò)』的算法目前最受追捧乏矾,因為擊敗李世石的阿爾法狗所用到的算法實際上就是基于神經(jīng)網(wǎng)絡(luò)的深度學(xué)習(xí)算法茵臭。由于其算法結(jié)構(gòu)類似于人腦神經(jīng)結(jié)構(gòu),所以人們對他給予了厚望胧砰,希望通過神經(jīng)網(wǎng)絡(luò)算法實現(xiàn)真正的AI鳍鸵。
神經(jīng)網(wǎng)絡(luò)(Neural Network(NN))
一個典型的神經(jīng)網(wǎng)絡(luò)如下圖
其最基本的神經(jīng)元是由一個線性函數(shù)和一個非線性的激活函數(shù)組成:
這個線性函數(shù)與之前線性回歸是一樣的,而激活函數(shù)可以理解為將輸出的結(jié)果進(jìn)行調(diào)控尉间,比如使其保證在0和1之間偿乖。
與線性回歸一樣,神經(jīng)網(wǎng)絡(luò)實際上就是要訓(xùn)練找到合適的w 和 b哲嘲。與線性回歸一樣贪薪,使用梯度下降(Grident Dscent)法,即可得到最優(yōu) 的w和b眠副。
非線性的激活函數(shù)有很多類画切,如圖:
Sigmoid 是早期比較流行的,不過現(xiàn)在用的最多的是ReLu,為什么簡單的Relu能夠比看起來更加合理的Sigmoid 更加有效囱怕,并不是這篇筆記要探討的話題霍弹。至于為什么要用激活函數(shù)毫别,我想也很好理解,如果整個神經(jīng)網(wǎng)絡(luò)全是線性的話庞萍,那么無論這個網(wǎng)絡(luò)有多復(fù)雜拧烦,最終都只是一個線性的,然而我們這個世界上的事物用線性模型就都能解釋嗎钝计,顯然不行恋博。
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network (DNN))
深度神經(jīng)網(wǎng)絡(luò)實際上就是將神經(jīng)網(wǎng)絡(luò)進(jìn)行疊加,而中間層叫做隱藏層(Hiden layer), 隱藏層能夠分辨出淺層神經(jīng)網(wǎng)絡(luò)無法分辨的細(xì)節(jié)私恬。
前向傳播和反向傳播(Forward and Backward propagation)
前向傳播其實很簡單债沮,就是如何堆砌這個神經(jīng)網(wǎng)絡(luò),多少個Feature 輸入本鸣,多少層神經(jīng)網(wǎng)絡(luò)疫衩,每層多少個神經(jīng)元,每一層用什么激活函數(shù)荣德。
最困難的是反向傳播闷煤,類似于線性回歸一樣,我們的目的是要用合適的參數(shù)(W和b)使這個網(wǎng)絡(luò)涮瞻,或者說整個模型預(yù)測的值最接近真實的數(shù)值鲤拿,換句話說就是預(yù)測值與真實值的差距最小。這個求這個差值的函數(shù)我們叫代價函數(shù)(Cost Function), 而反向傳播就是通過預(yù)測結(jié)果署咽,向前倒推每一層W和b的導(dǎo)數(shù)近顷。通過這個導(dǎo)數(shù)我們就可以用梯度下降的方法訓(xùn)練出代價函數(shù)最小的W和b值。
反向傳播涉及到了微分宁否,和偏微分(偏導(dǎo))遞歸等數(shù)學(xué)原理窒升,雖然也不難,但是也并不在本文的討論范圍之內(nèi)慕匠。不過好消息是在現(xiàn)在流行的深度學(xué)習(xí)工具中饱须,比如在Tensorflow中, 我們只需要關(guān)心如何搭建這個網(wǎng)絡(luò)(前向傳播),工具會自動通過反向傳播計算最優(yōu)解台谊,所以這部分我想留在后續(xù)Tensorflow 的文章中詳細(xì)講解冤寿。
其實聽起來高大上的NN和DNN是不是很簡單。
相關(guān)文章
AI 學(xué)習(xí)筆記之——監(jiān)督學(xué)習(xí)一樸素貝葉斯(Supervised Learning)
首發(fā)steemit
歡迎掃描二維碼關(guān)注我的微信公眾號“tensorflow機器學(xué)習(xí)”青伤,一起學(xué)習(xí)督怜,共同進(jìn)步