深度學(xué)習(xí)是機器學(xué)習(xí)中的一個重要的方向,深度學(xué)習(xí)其實就是神經(jīng)網(wǎng)絡(luò)學(xué)習(xí),這里“深度”就是說神經(jīng)網(wǎng)絡(luò)中眾多的層。 那么深度學(xué)習(xí)是用來干嘛的呢?簡單說,那就是... 分類關(guān)于什么是機器學(xué)習(xí)的解釋,Quora上有一個買菜大媽都能看的懂的回答。翻譯一下就是,吃遍南山區(qū)所有芒果的大媽,自己總結(jié)出個大顏色黃的比較好吃,所以買芒果的時候,直接挑選了這種。那什么是機器學(xué)習(xí)呢,就是你告訴機器每一個芒果的特征(顏色,大小,軟硬等),并且告訴機器其輸出(好不好吃),剩下的就等機器去學(xué)習(xí)出一套規(guī)則,這些芒果就是你的訓(xùn)練集。而當(dāng)你再丟芒果進去的時候,已然熟悉基本法的機器就會直接告訴你這個芒果好不好吃,這種能自動對輸入的東西進行分類的機器,就叫做分類器。 分類器的目標就是讓正確分類的比例盡可能高。一般我們需要首先收集一些樣本,人為標記上正確分類結(jié)果,然后用這些標記好的數(shù)據(jù)訓(xùn)練分類器,訓(xùn)練好的分類器就可以在新來的特征向量上工作了。 神經(jīng)元我們再來看看神經(jīng)網(wǎng)絡(luò)是怎么工作的。 最簡單地把這兩組特征向量分開的方法是什么呢?當(dāng)然是在兩組數(shù)據(jù)中間畫一條豎直線,直線左邊是-,右邊是+,分類器就完成了。以后來了新的向量只要代入公式,h = ax + b ,凡是落在直線左邊的都是-,落在右邊的都是+。這是二維空間的分類,而當(dāng)特征有很多種時,我們就要在n維空間做分類,大家可以想象一下,就是用一個n-1維超平面把n維空間一分為二,兩邊分屬不同的兩類,,這種分類器就叫做神經(jīng)元,a是權(quán)值,a0是偏移。 這么一畫是不是就很像人腦的神經(jīng)元呀,我們就用這些神經(jīng)元組成網(wǎng)絡(luò)去學(xué)習(xí)訓(xùn)練集的數(shù)據(jù),求出最優(yōu)的權(quán)值(weights)和偏置(biases)以便最終正確地分類。 神經(jīng)網(wǎng)絡(luò)上圖就是一個簡單神經(jīng)網(wǎng)絡(luò)的架構(gòu),網(wǎng)絡(luò)中最左邊的一層被稱作輸入層,其中的神經(jīng)元被稱為輸入神經(jīng)元(input neurons)。最右邊的一層是輸出層(output layer),包含的神經(jīng)元被稱為輸出神經(jīng)元(output neurons)。網(wǎng)絡(luò)中間的一層被稱作隱層(hidden layer),在一些網(wǎng)絡(luò)中往往有多個隱層。我們可以看到,輸入向量連到許多神經(jīng)元上,這些神經(jīng)元的輸出又連到一堆神經(jīng)元上,這一過程可以重復(fù)很多次。數(shù)值向量在不同神經(jīng)元之間傳導(dǎo)。 但是,我們剛剛分析了神經(jīng)元,神經(jīng)元的變換是完全的線形的,如果神經(jīng)網(wǎng)絡(luò)的每層都只是做線性變換,多層輸入疊加后也還是線性變換。因為線性模型的表達能力不夠,所以需要激活函數(shù)來引入非線性因素。舉個栗子,常用的激活函數(shù)sigmoid函數(shù),可以將實數(shù)壓縮到[0,1]之間。激活函數(shù)是神經(jīng)網(wǎng)絡(luò)強大的基礎(chǔ),好的激活函數(shù)(根據(jù)任務(wù)來選擇)還可以加速訓(xùn)練。 接下來,確定了神經(jīng)網(wǎng)絡(luò)的連接方式、網(wǎng)絡(luò)的層數(shù)、每層的節(jié)點數(shù),建好網(wǎng)絡(luò)模型之后,我們要開始學(xué)習(xí)這個神經(jīng)網(wǎng)絡(luò)的每個連接上的權(quán)值了。 訓(xùn)練網(wǎng)絡(luò)(training)訓(xùn)練過程就是用訓(xùn)練數(shù)據(jù)的input經(jīng)過網(wǎng)絡(luò)計算出output,再和label計算出loss,再計算出gradients來更新weights的過程。label就是訓(xùn)練集里預(yù)先加上的分類標記,loss就是你算出的結(jié)果與正確結(jié)果(正確為1,錯誤為0)的誤差,或者叫損失。 那么training其實就是通過梯度下降法盡可能縮小loss的過程。如下圖所示,我們希望loss值可以降低到右側(cè)深藍色的最低點。 具體步驟如下:
PS 以上理論知識和公式來自斯坦福大學(xué)計算機視覺實驗室推出的課程CS231n: Convolutional Neural Networks for Visual Recognition 調(diào)戲Tensorflow Playground接下來,摩拳擦掌想要試一試深度學(xué)習(xí)的朋友們可以試著調(diào)戲一下TensorFlow Playground。TensorFlow游樂場是一個通過網(wǎng)頁瀏覽器就可以訓(xùn)練的簡單神經(jīng)網(wǎng)絡(luò),并實現(xiàn)了可視化訓(xùn)練過程的工具。下圖就是TensorFlow游樂場默認設(shè)置的截圖。 左邊的每組數(shù)據(jù),都是不同形態(tài)分布的一群點。每一個點,都與生俱來了2個特征:x1和x2,表示點的位置。數(shù)據(jù)中的點有2類:橙色和藍色。我們這個神經(jīng)網(wǎng)絡(luò)的目標,就是通過訓(xùn)練,知道哪些位置的點是橙色、哪些位置的點是藍色。如何確定網(wǎng)絡(luò)結(jié)構(gòu)呢?到底用不用隱層呢?還是一個隱層?兩個隱層或更多?每個層的尺寸該多大?這些都可以在TP上調(diào)整,而且立刻就能看到直觀的結(jié)果??烊ピ囋嚢蓗 |
|
來自: 西北望msm66g9f > 《AI》