天天看點

ML基本概念

李宏毅老師的新課上起來是醍醐灌頂的程度,而且很新!

幫助我看懂了令人發愁的論文,您就是我的恩人!

會以虔誠的心好好學習的,ღ( ´・ᴗ・` )比心

目錄

什麼是機器學習

機器學習的任務:

鋪墊:機器學習的三個步驟(簡單版)

1. 寫一個帶有未知參數的函數​

2. 從訓練資料中定義損失

3. optimization優化:gradient decent梯度下降

Linear Model:

怎麼寫出更複雜的有位置參數的函數減少model bias?

1、通過piecewise linear分段函數拼起來得到函數

2、通過設定sigmoid函數中不同的cbw來制造不同的藍色function,把這些藍色function疊加起來制造不同的紅色curves,就可以制造出不同的分段函數的curves來逼近各式各樣不同的連續函數,就可以寫出一個很有彈性有未知參數的函數

複雜版

機器學習步驟1:複雜形式的函數重新定義如下:

機器學習步驟2:損失函數loss function随之變化(參數增多為b ct b w是以θ統一代表) 

 機器學習步驟3:優化這個新模型,找一組θ讓loss最小

模型可以做更多的變形

pytorch如何計算梯度?

什麼是機器學習

  • 機器學習是什麼,讓機器具備一個找函數的能力。如語音辨識(函數輸入語音,可以輸出文字)影像辨識(函數輸入圖檔,輸出文字)下棋(函數輸入目前的棋子位置,輸出下一步的位置)

機器學習的任務:

  • regression回歸:是指要找的函數輸出是一個scaler數值
  • classification分類:事先準備好的選項中得到輸出,AlphaGo也是一個多分類問題
  • structured learning結構化學習:機器不隻要産生數字或做一個選擇題,還要産生一個有結構的物件,學會創造,比如:畫一張圖、寫一篇文章,

鋪墊:機器學習的三個步驟(簡單版)

1. 寫一個帶有未知參數的函數
ML基本概念

2. 從訓練資料中定義損失

損失也是一個有參數的函數,損失函數

ML基本概念

的輸入是b和w,輸出是目前設定的數值的好壞程度

損失值的衡量有多種方法,根據情況選擇,如果真實值和預測值都是機率時可以用cross entropy交叉熵,本例為連續資料用于回歸問題使用的是Mean Square Error (MSE)均方誤差

試了很多的參數得到的等高線圖叫做error surface

ML基本概念

    3. optimization優化:gradient decent梯度下降

  • 随機選取初始w0 randomly pick values w&b
  • 求偏導計算斜率,learning rate:hyperparameter超參數,決定梯度下降的步長
  • update w iteratively不斷疊代更新w,直到最小值,可能會存在局部最小值local minimum

Linear Model:

直線不能拟合很多情況,線性模型存在Model bias

model bias:模型限制導緻的誤差

bias:無法拟合導緻的預測誤差

ML基本概念

線性模型存在model bias,需要更複雜的有位置參數的函數,可以使用sigmoid

ML基本概念

怎麼寫出更複雜的有位置參數的函數減少model bias?

解決辦法如圖:

ML基本概念

1、通過piecewise linear分段函數拼起來得到函數

ML基本概念

2、通過設定sigmoid函數中不同的cbw來制造不同的藍色function,把這些藍色function疊加起來制造不同的紅色curves,就可以制造出不同的分段函數的curves來逼近各式各樣不同的連續函數,就可以寫出一個很有彈性有未知參數的函數

ML基本概念

複雜版

機器學習步驟1:複雜形式的函數重新定義如下:

ML基本概念

機器學習步驟2:損失函數loss function随之變化(參數增多為b ct b w是以θ統一代表) 

 x:特征  e:誤差  y^真實值

ML基本概念

 機器學習步驟3:優化這個新模型,找一組θ讓loss最小

随機選取參數做梯度下降,不斷更新參數到理想位置

ML基本概念
ML基本概念

N筆資料分為多個B筆資料,每個B筆資料被稱為一個batch(随便分組)

為什麼要分組?

把每個batch求得的loss用來算gradient,用這個gradient來更新參數 稱為一次update,每次看完所有的batch成為一個epoch

ML基本概念

模型可以做更多的變形

兩個ReLU可以合成一個sigmoid,多個ReLU可以合成非常複雜的曲線來拟合資料

激活函數activation function

為什麼ReLU比較好?

ML基本概念

多個隐藏層->神經網絡->深度學習 

為什麼把ReLU或sigmoid反複用有什麼好處(為什麼是把神經網絡變深而不是排成一排變胖?)?(把這些函數排成一排也可以得到複雜的函數)

随着神經網絡層數的增加,準确度也在增加,過深容易出現過拟合

ML基本概念

 如何訓練很深的神經網絡?

本課由淺入深的講解了DeepLearning, 就是通過反複使用激活函數來得到各種複雜的函數來拟合各種情況,函數關系來幫助預測未知的情況。

學習了各種名詞在實際神經網絡中的作用。

重要理念,不要糾結為什麼要這樣要那樣,其實每個有疑問的地方都可以上手去調,沒有唯一和最優解。

标黃部分待解答

繼續閱讀