標籤:

Google機器學習速總結

與幾個微信朋友一起學習了google機器學習速成課程,針對每周討論做一個小小的記錄。

第 1 課三分鐘課程介紹。

第 2 課介紹了監督學習的一些術語,如標籤 label,特徵 features,回歸(輸出連續值)與分類(輸出離散值)。

第 3 課以線性回歸為例介紹了機器學習的流程:定義預測函數,得到損失,梯度下降更新參數。

線性回歸的損失函數採用 Mean Square Error,Squared loss 也叫 L2 loss,L2 loss 比 L1 loss 更懲罰 outlier。

模型訓練的過程就是找到合適的參數似的損失不斷降低的過程,這個過程叫做 經驗風險最小化 empirical risk minimization ERM。

與經驗風險最小化對應的是 結構風險最小化 Structural risk minimization SRM,在保證模型預測能力的同時要求模型儘可能的簡單,即最小化 (loss + regularization), SRM 的提出是為了防止過擬合。

李航老師的《統計學習方法》中說,最大似然估計 MLE 屬於 ERM 範疇,最大後驗概率 MAP 屬於 SRM 範疇

第 4 課介紹了模型參數求解方法-梯度下降法:每次朝著負梯度方向更新參數。梯度是一個向量,有大小和方向,其每個元素是對相應權重的偏導數。對於線性回歸來說,loss 函數是凸函數,只有一個最小值(此點導數為 0 ),因此初始值不敏感,設置成隨機值或者 0 都可以。神經網路不是凸函數,有很多局部極小值點(想像裝蛋箱 egg crate), 因此依賴於初始值。

參數初始值有 He initialization, Xavier initialization 等

學習率 learning rate 是個重要的概念,它是一個超參數 Hyperparameter,其值太小則收斂速度慢,其值太大則可能不收斂,通常初始值為 0.001 (個人經驗,有待討論)

通常採取的是 mini-batch gradient descent,batch 大小 n 通常為 2 的冪次方(即 16,32,64,128,256等),而當 n=1 時叫做隨機梯度下降 stochastic gradient descent

Google 提供了 Tensorflow — Neural Network Playground 供可視化調參數,非常有意思。

第5課: 簡單的介紹了TensorFlow是什麼和它的API層級結構。TensorFlow不僅僅是一個用於構建機器學習模型的平台,它採用基於圖表的計算框架,可以用來編寫任何東西。TensorFlow Estimator API極大的簡化了模型的構建過程。它的API層級結構見下圖

第6課: 主要講了泛化(Generalization)的概念。泛化能力是評估模型性能的一個非常重要的指標。過擬合的模型通常過於複雜,往往泛化性能較差。此外,還介紹幾個基本假設:1、樣本之間不會相互影響,即樣本時從獨立同分布 (i.i.d) 的數據集中隨機抽取出來的;2、分布是平穩的,即分布在數據集中不發生變化

第7課: 在第6課介紹了泛化,第7課就開始講如何提高模型的泛化性能了。通常的做法就是把數據集拆分成訓練集和測試集,需要注意的幾點是:1、數據拆分前通常需要進行隨機化;2、測試集絕對不能用於訓練。通常來說,訓練集規模越大,模型的學習效果就越好;測試集規模越大,我們對評估指標的信心越充足,置信區間就越窄。如果數據集很小,就有可能需要進行交叉驗證之類的較為複雜的操作。

第8課: 通過將數據集劃分為訓練集和測試集,可以判斷給定模型能否很好地泛化到新數據。不過,當進行多輪超參數調整時,僅使用兩類數據可能不太夠。多次迭代的訓練、測試過程,有可能導致模型針對測試集的數據特性進行了過擬合。解決這個問題的方法就是新引入一個驗證集。迭代訓練過程,所有測試都在驗證集上進行。

增加驗證集之後,模型的開發過程就變成下面這個樣子:

二期課外討論:

問題一: 同一個數據樣本能同時出現在驗證集和訓練集中嗎?

不能

問題二:獨立同分布 表示 各個數據之間沒有依賴?

獨立同分布的意思就是任意兩個數據樣本需要來自同一個數據分布,但是相互之間不能有影響。

問題三:10-fold 交叉驗證具體過程是?

(1)英文名叫做10-fold cross-validation,用來測試演算法準確性,是常用的測試方法。

(2)將數據集分成十份,輪流將其中9份作為訓練數據,1份作為測試數據,進行試驗。每次試驗都會得出相應的正確率(或差錯率)。

(3)10次的結果的正確率(或差錯率)的平均值作為對演算法精度的估計,一般還需要進行多次10折交叉驗證(例如10次10折交叉驗證),再求其均值,作為對演算法準確性的估計。

reference: blog.csdn.net/kylinxu70

對話系統:

知識圖譜也並不能獨立於NLP存在,知識圖譜僅僅是用來查詢,推理;理解..還是需要NLP/U來做的

流程一般都是NLU理解,然後從知識圖譜資料庫查詢,最後NLG生成返回結果,最外層可以再套上asr和tts。規則也僅僅是替代NLU部分


推薦閱讀:

膠囊網路(Capsule Networks)學習資源匯總
利用Python,四步掌握機器學習
直覺版:CNN解讀part1
Andrew Ng機器學習week 2(Linear Regression)編程作業詳解
實現屬於自己的TensorFlow(三) - 反向傳播與梯度下降實現

TAG:機器學習 |