1. 感知機(jī)
要理解神經(jīng)網(wǎng)絡(luò),首先我們先來理解感知機(jī)。感知機(jī)是一個簡單的算法,給定n維向量x (x1, x2, ..., xn)作為輸入,通常稱作輸入特征或簡單特征,輸出為0或者1。
數(shù)學(xué)上我們定義以下函數(shù):
當(dāng) wx + b > 0 時,f(x)=1
當(dāng) wx + b < 0 時,f(x)=0
這里,w是權(quán)重向量,w·x是向量w和x的點積,b是偏差。事實上wx + b定義了一個邊界超平面,你可以設(shè)置w和b的值來改變它的位置。如果所給的點(x)在超平面(直線)之上,則結(jié)果為正,否則結(jié)果為負(fù)。但是感知機(jī)只能表示確定答案而不能表示非確定性答案。下面有一個動圖可以幫助理解感知機(jī)。


如果我們知道w和b就能回答1或者0,尋找w和b的過程就是神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程
2. 模型
Keras的原始構(gòu)造模塊是模型(model),模型有很多,其中最簡單的模型被稱為序貫(Sequential)模型。
Sequential模型是多個神經(jīng)網(wǎng)絡(luò)層的線性堆疊,也就是“一條路走到黑”。
- 可以通過向Sequential模型傳遞一個layer的list來構(gòu)造該模型
from keras.models import Sequential
from keras.layers import Dense, Activation
model= Sequential([
Dense(32, units=784),
Activation('relu'),
Dense(10),
Activation('softmax'),
- 也可以通過.add()方法一個個的將layer加入模型中
model = Sequential()
model.add(Dense(32, input_shape=(784,)))
model.add(Activation('relu'))
3. 神經(jīng)網(wǎng)絡(luò)層(Layer)與多層感知機(jī)
神經(jīng)網(wǎng)絡(luò)中有許多的層,你可以向你的模型中加入各種各樣的層,這里僅介紹神經(jīng)網(wǎng)絡(luò)中最簡單的Dense層(全連接層)
“全連接”表示上一層的每一個神經(jīng)元,都和下一層的每一個神經(jīng)元是相互連接的。這里,每一層神經(jīng)元就是上一節(jié)所說的感知機(jī)??梢杂上旅娴膱D幫助理解。
多層神經(jīng)網(wǎng)絡(luò)構(gòu)成了多層感知機(jī)

4. 激活函數(shù)
4.1 感知機(jī)訓(xùn)練方案中存在的問題
當(dāng)沒有神經(jīng)網(wǎng)絡(luò)的時候,神經(jīng)元對數(shù)據(jù)的處理就是基于權(quán)重和偏移做線性變換。線性變換很簡單,但是限制了對復(fù)雜任務(wù)的處理能力。沒有激活函數(shù)的神經(jīng)網(wǎng)絡(luò)就是一個線性回歸模型。

感知機(jī)不能表現(xiàn)出“一點一點”的漸進(jìn)學(xué)習(xí)行為,它是突變的,它的結(jié)果只有0和1。如果我們需要得到一個0到1之間的值,感知機(jī)就不能勝任了。
于是我們需要一個更平滑的東西,一個從0到1逐漸變化不間斷(連續(xù)可導(dǎo))的函數(shù)。這就是激活函數(shù)。激活函數(shù)做的非線性變換可以使得神經(jīng)網(wǎng)絡(luò)處理非常復(fù)雜的任務(wù)。
4.2 激活函數(shù)——sigmoid
sigmoid函數(shù)的定義如下:
將
z = wx + b作為sigmoid函數(shù)的輸入,如果z = wx + b是非常大的正值,那么sigmoid函數(shù)趨于1,如果z = wx + b是非常大的負(fù)值,那么sigmoid函數(shù)趨于0。這和感知機(jī)具有類似的行為,但它的變化是漸進(jìn)的,這正是我們想要的。
4.3 softmax——sigmoid函數(shù)的拓展
softmax把一些輸入映射為0-1之間的實數(shù),并且歸一化保證和為1,因此多分類的概率之和也剛好為1。
softmax 與 k個二元分類器 的區(qū)別:
如果你在開發(fā)一個音樂分類的應(yīng)用,需要對k種類型的音樂進(jìn)行識別,那么是選擇使用 softmax 分類器呢,還是使用 logistic 回歸算法建立 k 個獨立的二元分類器呢?
這一選擇取決于你的類別之間是否互斥,例如,如果你有四個類別的音樂,分別為:古典音樂、鄉(xiāng)村音樂、搖滾樂和爵士樂,那么你可以假設(shè)每個訓(xùn)練樣本只會被打上一個標(biāo)簽(即:一首歌只能屬于這四種音樂類型的其中一種),此時你應(yīng)該使用類別數(shù) k = 4 的softmax回歸。(如果在你的數(shù)據(jù)集中,有的歌曲不屬于以上四類的其中任何一類,那么你可以添加一個“其他類”,并將類別數(shù) k 設(shè)為5。)
如果你的四個類別如下:人聲音樂、舞曲、影視原聲、流行歌曲,那么這些類別之間并不是互斥的。例如:一首歌曲可以來源于影視原聲,同時也包含人聲 。這種情況下,使用4個二分類的 logistic 回歸分類器更為合適。這樣,對于每個新的音樂作品 ,我們的算法可以分別判斷它是否屬于各個類別。