在當(dāng)今AI時代中,CNN和RNN都被廣泛關(guān)注,并且有很多相關(guān)討論,而最基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)DNN,它的研究和曝光度卻相對較少。DNN是所有其它神經(jīng)網(wǎng)絡(luò)的基礎(chǔ),所以對它有一定了解是必要的。本文為大家詳細(xì)介紹了傳統(tǒng)機(jī)器學(xué)習(xí)的基本概念和神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu),以及如何設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)讓神經(jīng)網(wǎng)絡(luò)表達(dá)出樸素貝葉斯和決策樹這兩大傳統(tǒng)算法模型。
何宇健,《Python與機(jī)器學(xué)習(xí)實戰(zhàn)》作者,來自北京大學(xué)數(shù)學(xué)系,有多年P(guān)ython開發(fā)經(jīng)驗,在GitHub上擁有并維護(hù)著一個純Python編寫的機(jī)器學(xué)習(xí)算法庫(180個stars,100個forks)。曾在創(chuàng)新工場AI工程院負(fù)責(zé)研發(fā)適用于結(jié)構(gòu)化數(shù)據(jù)的新型神經(jīng)網(wǎng)絡(luò)。希望這種設(shè)計能讓大家從直觀上感受到神經(jīng)網(wǎng)絡(luò)的強(qiáng)大。
分享開始
機(jī)器學(xué)習(xí)的基本概念與神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
樸素貝葉斯、決策樹算法簡介以及它和神經(jīng)網(wǎng)絡(luò)的關(guān)系
具體的實現(xiàn)說明,以及可以做出改進(jìn)與創(chuàng)新
大家好,我是何宇健。在當(dāng)今的AI時代中,CNN和RNN都被廣泛關(guān)注,并且有很多相關(guān)討論,’而最基礎(chǔ)的神經(jīng)網(wǎng)絡(luò)DNN,它的研究和曝光度卻相對比較少。DNN是所有其它神經(jīng)網(wǎng)絡(luò)的基礎(chǔ),所以對它有一定了解是必要的。有些同學(xué)可能對機(jī)器學(xué)習(xí)相關(guān)概念不熟悉,因此分享的所有內(nèi)容都從最基礎(chǔ)的開始講起。
分享主要內(nèi)容通過設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)來讓神經(jīng)網(wǎng)絡(luò)表達(dá)出樸素畢葉思和決策樹這兩大傳統(tǒng)算法模型。希望這種設(shè)計能讓大家從直觀上感受到神經(jīng)網(wǎng)絡(luò)的強(qiáng)大。
機(jī)器學(xué)習(xí)的基本概念及神經(jīng)網(wǎng)絡(luò)的基本結(jié)構(gòu)
本次分享涉及的問題都是有監(jiān)督學(xué)習(xí)問題。所謂有監(jiān)督學(xué)習(xí),就是對一個模型來說,它的輸入都會對著一個目標(biāo)。最終目的是模型的輸出和目標(biāo)盡可能接近。
機(jī)器學(xué)習(xí)術(shù)語
特征向量:模型接受的輸入通常稱為特征向量,用字母X代指。
標(biāo)簽:模型擬合的目標(biāo)通常稱為標(biāo)簽,用字母Y代指。
樣本:通常聽到的“樣本”概念是特征向量+標(biāo)簽的組合,用d=(x,y)代指
數(shù)據(jù)集:就是很多個樣本的集合,通常用D=(d1,d2,...dn)代指。
損失函數(shù):計算單個樣本上模型的“損失”的函數(shù)。
代價函數(shù):計算整個數(shù)據(jù)集上模型的“代價”的函數(shù)。
接下里進(jìn)入神經(jīng)網(wǎng)絡(luò)正題的討論。
神經(jīng)網(wǎng)絡(luò)包含輸入層,隱藏層,輸出層。在說有多少層神經(jīng)網(wǎng)絡(luò)時,我們不會把第一層算入其中,也就是輸入層。
層與層之間的溝通方式
每一層的每個神經(jīng)元都會和下一層中的每個神經(jīng)元連接,這種方式稱為全連接。在數(shù)學(xué)公式中,這種全連接稱為矩陣乘法。線性映射和激活函數(shù)是神經(jīng)網(wǎng)絡(luò)的基本運算單元。
偏置量:打破對稱性
除非數(shù)據(jù)集本身是中心對稱,否則現(xiàn)在的神經(jīng)網(wǎng)絡(luò)就不可能學(xué)到數(shù)據(jù)集背后的規(guī)律。現(xiàn)在的神經(jīng)網(wǎng)絡(luò)只能學(xué)到中心對稱的規(guī)律。
神經(jīng)網(wǎng)絡(luò)的基本算法
前向傳導(dǎo)算法,它是神經(jīng)網(wǎng)絡(luò)計算模型輸出的過程。就是一步步將當(dāng)前值往前傳,往前計算。
梯度下降法,神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練的算法。梯度下降中的梯度就是使得函數(shù)值上升最快的方向,我們的目的是最小化損失函數(shù),如果梯度是使得函數(shù)值上升最快的方向,那么負(fù)梯度方向是使得函數(shù)值下降的方向。
神經(jīng)網(wǎng)絡(luò)和傳統(tǒng)機(jī)器學(xué)習(xí)算法的對比
傳統(tǒng)機(jī)器學(xué)習(xí)貝葉斯
樸素貝葉斯思想:出現(xiàn)概率越大的樣本就是越好的樣本。知道思想后, 如何具體進(jìn)行操作呢,如何估計出樸素貝葉斯公式中涉及到的概率呢?它會用頻率估計概率的方法來把各個概率都估計出來,說的直白點就是數(shù)數(shù)。
事實證明我們確實能通過一個數(shù)據(jù)集把樸素貝葉斯模型生成出來。
下面來看看如何用神經(jīng)網(wǎng)絡(luò)來表達(dá)生成出來的樸素貝葉斯模型。樸素貝葉斯里面用到非常多乘法,而線性模型里面全都是加法,此時會想到用到對數(shù)函數(shù)log。
我們證明了樸素貝葉斯是線性模型,而神經(jīng)網(wǎng)路能退化為線性模型,從而意味著神經(jīng)網(wǎng)路能將樸素貝葉斯表達(dá)出來。
接下來介紹決策樹和神經(jīng)網(wǎng)路關(guān)系。同樣會證明神經(jīng)網(wǎng)路能將決策樹表達(dá)出來。
決策樹很簡單,它會先把特征向量空間劃分為一個一個互不相交的子空間,劃分完之后會給子空間打標(biāo)簽。做預(yù)測的時候,會根據(jù)輸入的X,看它是屬于哪個子空間,然后將相應(yīng)的標(biāo)簽輸出給它。
決策樹也有很多問題,但只要給了數(shù)據(jù)集,不出現(xiàn)同一個特征向量對應(yīng)兩種不同標(biāo)簽的情況,那么決策樹是百分百可以將數(shù)據(jù)集的所有樣本擬合正確。因為他只需要不斷將子空間細(xì)分就可以了。
設(shè)計神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)以表達(dá)出決策樹的算法
設(shè)計的關(guān)鍵思想總結(jié)為以下三點:
第一個隱藏層能表達(dá)出決策樹的中間節(jié)點所對應(yīng)的超平面。
第二個隱藏層能夠表達(dá)出各個決策路徑
第二個隱藏層和輸出層之間的權(quán)值矩陣能夠表達(dá)出各個葉節(jié)點。
我們可以看到,第二個隱藏層和輸出層之間的權(quán)值矩陣確實能夠表達(dá)出各個葉節(jié)點。因此也完成了決策樹往神經(jīng)網(wǎng)絡(luò)的轉(zhuǎn)化。
具體實現(xiàn)與改進(jìn)創(chuàng)新
如何進(jìn)行具體的實現(xiàn)以及改進(jìn)和創(chuàng)新。事實證明確實可以將傳統(tǒng)算法轉(zhuǎn)化為神經(jīng)網(wǎng)絡(luò),但是這種轉(zhuǎn)化是否真正有意義呢?通過改變決策樹對應(yīng)的神經(jīng)網(wǎng)絡(luò)的激活函數(shù),其實可以得到一些有意思的結(jié)果。可以關(guān)注AI研習(xí)社看直播視頻回放。
決策樹轉(zhuǎn)換為神經(jīng)網(wǎng)絡(luò)的例子
右邊的結(jié)果不一定更好,但至少從直觀上看邊界可能更舒服一點。
總結(jié)
聯(lián)系客服