1 分類問題與迴歸問題
分類問題預測的是類別,模型的輸出是概率分佈(即每一個類別都有其對應的概率大小,我們選取概率最大的類別即可)
迴歸問題預測的是值,模型的輸出是一個實數值
2 目標函數
幾乎所有的機器學習算法最後都歸結爲求解最優化問題,以達到我們想讓算法達到的目標。爲了完成某一目標,需要構造出一個“目標函數”來,然後讓該函數取極大值或極小值,從而得到機器學習算法的模型參數。如何構造出一個合理的目標函數,是建立機器學習算法的關鍵,一旦目標函數確定,接下來就是求解最優化問題,這在數學上一般有現成的方案。梯度下降法”,“牛頓法”,“凸優化”等等。
通過目標函數可以逐步的調整參數,使得目標函數逐漸變小的過程,即模型逐漸優化到最佳的過程
目標函數可以幫助衡量模型的好壞
2.1 分類問題的目標函數
需要衡量目標類別與當前預測的差距
三分類問題輸出例子:[0.2, 0.7, 0.1]
三分類真實類別:2-> one_hot -> [0, 0, 1]
One-hot編碼,把正整數變爲向量表達
定義:生成一個長度不小於正整數的向量,只有正整數的位置處爲1,其餘位置都爲0(上面例子中的正整數爲2,長度必須大於等於2,在下標2的位置處爲1,其餘爲0)
這樣的操作可以把一個類別的離散值變成一個分佈,然後我們有了兩個分佈,一個是預測值的分佈,一個是真實值的分佈;我們可以通過這兩個分佈計算他們的差距
損失函數和代價函數是同一個東西,目標函數是一個與他們相關但更廣的概念。
目標函數是 損失代價函數+正則化項(函數J(f))(正則化項是爲了防止過擬合,減小函數模型的複雜度)
分類問題的損失代價函數:
平方差損失
平方差損失舉例:
預測值:[0.2, 0.7, 0.1]
真實值:[0, 0, 1]
損失函數值:[(0-0)^2 + (0-0.7)^2 + (1-0.1)^2] * 0.5 = 0.65
交叉熵損失
2.2 迴歸問題的目標函數
預測值與真實值的差距
損失代價函數:平方差損失 絕對值損失
3 激活函數
激活函數是神經網絡節點中的輸入數據和輸出數據之間的一種關係.
例如: f(x) = x ,像這類激活函數就表示上層對輸入到神經節點中的數據之和 不做任何處理直接當做輸出給下一層使用
同時我們可以將一些非線性函數作爲激活函數解決非線性問題
常見的激活函數如下:
4 歸一化 Normalization
概念: 把數據變成(0,1)或者(1,1)之間的小數。主要是爲了數據處理方便提出來的,把數據映射到0~1範圍之內處理,更加便捷快速.
特點: 均值爲0,方差是1
歸一化的兩種方法:
批歸一化 Batch Normalization
前面的歸一化都是在輸入層數據進行歸一化操作,我們可以在網絡中間層進行處理,在網絡中間層我們可以將每一節點的輸入值都進行歸一化操作,這樣就被稱作爲批歸一化BN處理.
BN可以作爲神經網絡的一層,放在激活函數(如Relu)之前。即每一層的激活值都會先做歸一化處理
5 Dropout
我們在前向傳播的時候,讓某個神經元的激活值以一定的概率p停止工作,這樣可以使模型泛化性更強,因爲它不會太依賴某些局部的特徵.也就是說在模型訓練的過程中隨機的停止使用某些神經元來訓練模型防止模型記住樣本.
dropout的作用:
防止過擬合
模型在訓練集上表現很好,甚至正確率到100%,在測試集上表現較差,正確率可能很低;究其原因,是因爲模型的相關參數較多,導致模型記住了樣本,不能泛化和通用