李巨集毅機器學習-學習筆記

世有因果知因求果發表於2018-11-13

function set就是model

機器學習3大步驟:

1. 定義模型(function)集合

2. 指定模型(function)好壞的評價指標

3. 通過演算法選擇到最佳的模型(function)

alphago下棋模型抽象為棋局向下一步的分類問題:

減少擁有label的data用量的方法:

1. semi-supervised learning:使用部分核心擁有label的data以及大量沒有label的data

2.transfer learing

structure learning:

結構化學習輸出的是有結構內容的東西,比如機器翻譯,語音識別,物體框檢測

reinforcement learning:

強化學習。learning from critics。比如,alphago, 下了500步後卻敗北了,機器只知道這個結果,自己去總結。

我們知道supervised learning中會告訴機器哪個是對的(learning from teacher),而強化學習不會告訴做的對錯,

terms術語

注意:包含2次或者高次的多項式模型也屬於線性model,因為引數對model的輸出是線性關係。$y=\omega _1x+ \omega_2x^2+b$

學習率自適應adam演算法

 

hidden factor存在的象徵

選擇模型function,喂以data時評估結果是一般機器學習的流程。但是我們很有可能對資料本身的特徵研究不夠,遺漏掉重要特徵,那麼自然效果不佳。這時domain knowledge就顯得很重要了。

 

error誤差來自於何處?

bias and variance of estimator

假設一個隨機變數x的期望為$\mu$,方差為$\sigma ^2$,我們通過樣本來估計其期望和方差。

$\bar X = \frac {1}{N} \sum_{n=1}^{N}x^{(n)}$ 是總體期望的無偏(non-biased)估計,原因是:

$E(\bar X) = \frac {1}{N} \sum_{n=1}^{N}E(x^{(n)})=\frac {1}{N}\cdot N \mu = \mu$

而其樣本方差$s^2 = \frac {1}{N} \sum_{n=1}^{N}(x^{(n)}-\bar X)^2$卻是biased有偏估計:

原因是:

$E(s^2) = \frac {1}{N} \sum_{n=1}^{N}E((x^{(n)}-\bar X)^2)= \frac {N-1}{N}\sigma ^2 \neq \sigma ^2$

 

機器學習中模型選擇時本質上是針對樣本資料做引數估計,而一組樣本對應一個引數估計,對應一個最優模型;但是用統計的視角來看,當我們取另外一組樣本時,引數估計必然不同,也就是最優模型就會不同。模型也可以看著是一個隨機變數$X$的函式,它也是一個隨機變數,我們記著$F$,每次實驗獲取樣本資料訓練出來的模型$f$都是$F$期望最佳目標的一個value,這就存在bias或者variance.

什麼時候bias大?

什麼時候variance大?

針對bias大的情況,如何處理:增加更多的輸入feature,使用更加複雜的模型

針對variance大的情況: 增加更多的data, regularization正則處罰

generative model

從training data中首先計算出來各自類別下出現某特定$x$的概率,隨後使用貝葉斯公式,我們可以計算給定$x$,其屬於某個類別的概率$p$。另一方面,根據全概率公式,經由手上的資料data分佈,我們又可以計算出$P(x)$的概率分佈模型,這樣我們就可以人為在該概率分佈模型下采樣獲取相應資料$x$,因此,我們稱這類基於貝葉斯,全概率等公式定義的model為生成式模型。

deep learning

Given network structure, define a function set.

對於深度學習來說,由於feature engineering可以由網路自己來學習和處理,那麼問題的難度由機器學習中的特徵工程轉換為神經網路網路結構的架構設計,比如需要多少層次,每一層需要多少個單元。。。

微分兩種型別鏈式法則

x_train,y_train資料的堆疊

水平軸為sample number,縱軸為feature個數

為什麼需要deep?

有理論證明只需要一層網路就能表示出任何的函式,那麼為什麼我們還需要deep network呢?有以下幾個原因:

同樣函式表示單層網路所需要的神經元數量遠遠大於多層級聯網路,這個類似於使用單層的邏輯閘電路造電腦一樣,理論上是可行的,但是實際上由於所需邏輯閘電路太過龐大,無法實現;

單層網路由於神經元數量更多,則意味著需要更多的data才能達到比較滿意的結果。

deep learning除錯技術

當training data上的結果不理想時:

網路並不是越深效果越好,比如看下圖,隨著網路深度的提高而導致即使在training data上學習效果也非常差,因此並不是由於網路複雜度的增加而導致的overfitting,我們必須調查其根本原因。

產生該問題可能的一個原因是sigmoid啟用函式導致的梯度消失問題。vanishing gradient problem.

梯度消失問題vanishing gradient problem

梯度消失問題可以這樣理解:由於sigmoid啟用函式具有壓縮輸入到很小的-1到+1之間的功能,我們在網路的前幾層,即使權重$\omega$的變化值$\Delta  \omega$很大,經過後續sigmoid函式的層層壓縮到最後影響到的loss函式變化極其微小,也就是$\frac {\partial L}{\partial \omega}$幾乎為0非常小,出現了梯度消失。

為此我們需要更換啟用函式,保持梯度不會消失,網路可以正常學習訓練。

relu啟用函式解決了梯度消失問題

有max操作時其微分如何計算????

CNN的特性

卷積filter可以視為全連線層的子集,一個filter的每個神經元其權重相同,根據stride滑窗大小分別連線著不同的輸入畫素點,

大大減少了引數數量,而一個卷積層neuro的個數決定本層輸出個數

tf.reduce_mean,reduce_sum等

 

相關文章