大綱
- 深度學(xué)習(xí)介紹
- 深度學(xué)習(xí)訓(xùn)練的技巧
- 神經(jīng)網(wǎng)絡(luò)的變體
- 展望
深度學(xué)習(xí)介紹
深度學(xué)習(xí)介紹
深度學(xué)習(xí)屬于機器學(xué)習(xí)的一種。介紹深度學(xué)習(xí)之前,我們先大致了解一下機器學(xué)習(xí)。
機器學(xué)習(xí),拿監(jiān)督學(xué)習(xí)為例,其本質(zhì)上是要找到一個函數(shù)映射:輸入數(shù)據(jù)(也就是訓(xùn)練樣本)通過函數(shù)映射(也就是我們的機器學(xué)習(xí)算法)到輸出空間上(也就是目標(biāo)值,如果是分類問題,映射到某一類上)。
$$Meachine Learning \approx LookingFor A Function.$$
那么我們?nèi)绾螐囊粋€函數(shù)空間里找到目標(biāo)函數(shù)呢?這里必然存在一個指標(biāo)來評價映射函數(shù)的好壞,比如說:準(zhǔn)確率,錯誤率等等。通過這個最優(yōu)化數(shù)據(jù)指標(biāo)我們就能找到 最好的映射函數(shù),也就是機器學(xué)習(xí)里的算法模型。
所以,機器學(xué)習(xí)模型訓(xùn)練過程主要有三個階段:
- 確定模型,從而確定函數(shù)映射空間;
- 將訓(xùn)練數(shù)據(jù)應(yīng)用于函數(shù)空間,對模型進(jìn)行訓(xùn)練;
-
找出最好的模型;
之后,我們可以將訓(xùn)練好的模型應(yīng)用到unseen data上(這也是我們最終的目的)。
圖像識別框架
這樣,我們也可以大致推斷出深度學(xué)習(xí)的構(gòu)建過程:

神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)由一系列神經(jīng)元通過相互連接而形成。因此,在深入理解神經(jīng)網(wǎng)絡(luò)之前,先了解一下什么是神經(jīng)元?
神經(jīng)元本質(zhì)上是一個簡單函數(shù),其函數(shù)形式為:
$$f = \sigma(z);$$
$$z = a_1w_1+a_2w_2+a_iw_i+...+a_Kw_K+b;$$
其中,$\sigma函數(shù)$屬于一個激活函數(shù),$z$是一個線性函數(shù),其結(jié)果可以是任意值,通過激活函數(shù),給模型帶來非線性因素,增加模型的表達(dá)能力;通常情況下,線性模型的表達(dá)能力不夠。
神經(jīng)元的$w_i$和$b$就是神經(jīng)元模型的訓(xùn)練參數(shù);參數(shù)不同,形成的神經(jīng)元也不相同。

神經(jīng)元的不同連接方式形成的網(wǎng)絡(luò)架構(gòu)也各不相同。神經(jīng)網(wǎng)絡(luò)的參數(shù)包括所有神經(jīng)元的$w_i(weights)$和$b(biases)$。
如果說,一個神經(jīng)元是一個簡單函數(shù)$function$,那么神經(jīng)網(wǎng)絡(luò)就是一個簡單函數(shù)集$a,function,set$.
深度學(xué)習(xí)中的“深度”是指神經(jīng)網(wǎng)絡(luò)的層數(shù)有很多。
神經(jīng)網(wǎng)絡(luò)可以用在識別手寫數(shù)字。

FAQ:
Q:設(shè)計神經(jīng)網(wǎng)絡(luò)時,多少層合適?每層多少個神經(jīng)元合適?
$$Trial;and;error + Intuition(隨緣,多試)$$
評測模型好壞goodness of function
以手寫數(shù)字識別為例,首先我們知道這是一個監(jiān)督學(xué)習(xí)問題;其訓(xùn)練數(shù)據(jù)為實現(xiàn)收集的手寫數(shù)字和標(biāo)簽;最終達(dá)到輸入一個手寫的數(shù)字能給出其所屬的類別(0-9)。
之前我們定義的函數(shù)集合,如何評價這個函數(shù)集合(模型)表現(xiàn)如何呢?所以需要定義一個評價指標(biāo)。這里定義的評價指標(biāo)為Loss函數(shù),指輸出值和真實值之間的差距(可以通過計算兩個值之間的距離來表示)。最終我們通過優(yōu)化在所有數(shù)據(jù)上的總損失Loss來找到最優(yōu)的模型!本質(zhì)上就是通過最小化Loss函數(shù)來找到最合適的$參數(shù)\theta^*$,從而確定最優(yōu)化的模型。
怎么找到最優(yōu)化的參數(shù)$\theta^* pick the best function$
最先引入腦海的方法就是窮舉法,把所有可能的取值都試一次。這種方法肯定不可取!因為,通常情況下深度學(xué)習(xí)模型層數(shù)不止3層,而每層的神經(jīng)元又有很多,導(dǎo)致最后要優(yōu)化的參數(shù)也是一個非常大的數(shù)字。
方法一:Gradient Descent 梯度下降算法

這種方法存在的一個問題:最后求解出來的最小值,不是全局最小值,而是局部最小值。
同時,由于初始的權(quán)重系數(shù)$w_i$是隨機選取的,導(dǎo)致最后的最優(yōu)化結(jié)果也各不相同。
方法二:Backpropagation 反向傳播算法
Caffe,TensorFlow等都支持的這種求解方法。
為什么模型總是越來越長,而不是越來越胖?
Deeper is Better.
一般而言,參數(shù)越多,模型表現(xiàn)效果越好。

實驗數(shù)據(jù)來自:Seide, Frank, Gang Li, and Dong Yu. "Conversational Speech Transcription
Using Context-Dependent Deep Neural Networks." Interspeech. 2011
對于任意的連續(xù)函數(shù)$f$,定義為:
$$f : R^N\to R^M$$
理論上來講,這種能由深度學(xué)習(xí)解決的問題,也可以通過有一個隱藏層的網(wǎng)絡(luò)模型來解決(給它足夠多的神經(jīng)元)。但是為什么不采用這種方法呢?
[圖片上傳失敗...(image-ef17b6-1523368731320)]
實驗效果并不好?為什么不好?
論文:Learning Functions: When Is Deep Better Than
Shallow(還沒有看!)一種理由是說deep models可以抽取更多的特征相比于Fat models。
