CNN 入門講解:什麼是標準化(Normalization)?

此文章首發於

卷積神經網路(CNN)入門講解?

zhuanlan.zhihu.com圖標

----------------------------分割線------------------------------------------------------------

大家在看一些機器學習或者深度學習的文章時,在數據預處理的時候,會不會經常看到一個步驟:

(輸入數據-數據均值)/數據標準差

初學者的你可能就直接略過了

因為你覺得它就是一個簡單的線性變換,並沒有多複雜

但是

就像愛因斯坦的相對論:

E = mc^2

大道至簡

這個數據預處理的步驟在機器學習或者深度學習裡面,都是重中之重

其實,它是標準化(Normalization)的一種


今天的內容:

當然,標準化的方法這是最常用的。

Z-score 怎麼用python 代碼實現:

實現時有2種不同的方式:

(1),使用sklearn.preprocessing.scale()函數,直接將數據進行標準化。

(2),使用sklearn.preprocessing.StandardScaler類,其優點可以保存訓練數據中的參數(均值、方差),也可以直接使用其對象轉換(transform)其測試集數據。

標準化的方法有很多,還有歸一化,規範化等,具體都可以在 網上找到答案

其他參考資料:

【原】關於使用sklearn進行數據預處理 -- 歸一化/標準化/正則化?

www.cnblogs.com圖標數據標準化的方法與意義 - CSDN博客?

blog.csdn.net圖標

----------------------------分割線------------------------------------------------------------

下面我們來看看,在CNN中,我們為什麼要給圖像做標準化

很多時候我們的訓練圖片會出現下面的情況:

大家看上面兩隻豬,對於人來說,它就是兩隻一樣的豬,只是圖片的灰度或者曝光度不一樣罷了,於是我們都給它們都標註為社會人

咋一看,好像沒毛病

但是,雖然我們人眼看沒毛病,可是機器看的方式和我們不一樣,他們看的是對應圖片的像素值

由於曝光的,灰度等各種原因,他們像素值其實不一樣,那麼經過卷積層後,他們的特徵很可能不一樣

於是神經網路就尷尬了,特徵都不一樣,為啥標籤都一樣呢?

這樣,迷惑的神經網路就不知道怎麼對權值進行訓練了

另一種情況:

當然,我上面就是舉了兩個例子,還有很多情況需要進行標準化才能解決,標準化常用的是Z-Score, 記住,這是要減去自己數據的均值和除以自己的標準差(不是方差)

大家在用Fine-tune pretrained model,比如Imagenet, 程序裡面經常是減去的Imagenet的均值和方差,這樣是不對的,大家在跑程序的時候要注意了。

在公眾號里回復:標準化,可以獲得全部高清PPT哦!!

關於標準化在機器學習方面的應用,可以參考下面資料:

nnetInfo文章瀏覽?

nnetinfo.com圖標parkson:R--數據標準化、歸一化、中心化處理?

zhuanlan.zhihu.com圖標

網上有很多,大家可以自己找找。

希望大家多多點贊,謝謝啦。

有問題,歡迎提問。

推薦閱讀:

TAG:卷積神經網路CNN | 人工智慧 | 標準化 |