機器學習就是找到一個我們人類無法寫出來的函式來完成各種任務
機器學習的任務
迴歸Regression:輸出是一個數值
例如:預測未來某一個時間PM2.5數值
分類Classification:輸出是選項
例如:輸出是否是電子郵件,Alphago輸出為棋盤的某一個位置
結構化學習Structured Learning:產生一個有結構的物件,例如產生一篇文章,寫一段文字
機器學習的步驟
Step1、寫出一個帶有未知引數的函式表示式(Function with Unknown Parameters):選用一個可能的函式表示式(Model)來表達輸入與輸出的關係,其中的未知引數稱為domain knowledge
Step2、Define Loss from Training Data:Loss是關於未知引數的函式
mean absolute error(MAE):就是採用預測值和標籤相減絕對值的方式來象徵誤差
mean square error(MSE):就是採用平方差的方式來象徵誤差
Step3、求解minL,例如gradient descent梯度下降,其中自己設定的引數(例如學習率)成為hyperparameters,還有local minima和global minima(區域性最小和全域性最小)
Step4、透過對真實資料的觀測,對原有的函式式子進行修改,例如增加週期性或者波動什麼的,可能會更加景區
Model Bias:由模型本身帶來的限制或者誤差,例如線性函式對於非線性的模型的學習始終不夠好
例如上圖,對於複雜的函式都可以用一個常數加上很多個藍色函式來構成,而就算是非線性
也可以透過取足夠多的點來逼近,從而應用上述方法,因此最關鍵的就是藍色函式如何表達,因此有了藍色函式我們就可以擬合我們希望得到的任何函式
因此就可以引入sigmoid函式,用於逼近我們想要的上方藍色函式,而各式各樣的藍色函式就是透過調整w,b,c從而改變它的形狀達到我們的要求
因此,我們就可以將線性函式轉換為具有更多特徵的函式,可以擬合各式各樣複雜的函式
引入神經網路:
用\(\theta\)向量來代表全部的引數構成的向量
因此就可以將這個函式重新代入上述機器學習步驟的Step1,作為我們需要預測的函式
同樣利用梯度下降的方式來進行。
由於訓練集有可能過大,那麼可以對訓練集進行劃分:
每次update都是對一個batch(一部分訓練集)去進行梯度下降(因為梯度下降的計算之中肯定需要計算樣本的求和,不同訓練集就會導致計算結果不一樣),所有訓練集過完就是一次epoch
Sigmoid也可以更換:
兩個ReLU函式疊加就形成了上圖那一個的函式形狀,而由於每一個sigmoid需要兩個ReLU,因此那裡是2i
引入神經元的層數,就是上述過程再進行迭代:
那麼每一個Sigmoid或者ReLU就是一個Neuron,整體就稱為Neural Network
也可以每一個稱為hidden layer,那麼整體就是Deep Network
層次越深越好嗎?並不是的,可能會出現overfitting,就是過擬合的問題,在測試集上更差
但是需要思考,為什麼要弄得很多層,一層然後非常多的layer不是也可以表達任何一個函式的形狀嗎?