1. 程式人生 > >神經網路模型無法正常工作時我們應該做什麼(系列)——資料標準化處理(Normalize)

神經網路模型無法正常工作時我們應該做什麼(系列)——資料標準化處理(Normalize)

前言

當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。那麼現在該如何來處理呢?
幸運的是我來啦!我列出了幾乎所有新手都會犯的錯誤,以及我自己和身邊一些學生在同樣情況下遇到過的問題:

  1. 沒有對資料進行標準化處理(Normalize)
  2. 沒有檢查結果(Results)
  3. 沒有對資料進行預處理(Preprocess)
  4. 沒有使用正則化方法(Regularlization)
  5. Batch Size 取值過大
  6. 學習率(Learning Rate)設定有誤
  7. 最後一層 Layer 使用了錯誤的啟用函式(Activation Function)
  8. 網路結構中包含了有害的梯度(Bad Gradient)
  9. 初始化網路權重(Network Weights)有誤
  10. 神經網路結構過深(Too Deep)
  11. 使用了錯誤數目的隱藏單元(Hidden Units)

資料標準化處理(Normalize)

What?

當使用神經網路進行訓練時,一個很重要的思考就是該怎樣對輸入資料進行標準化。這是不容質疑的一步,如果你沒有正確仔細的去做這件事,神經網路就可能無法正常執行。並且由於這一步比較重要,在深度學習領域已經預設為大家都知道,而在論文中很少提及,所以幾乎總是成為初學者無法理解的障礙。(譯者注:此處的 Normalize 原先翻譯為“歸一化”,後來在翻譯了整篇文章之後改為“標準化”,因為從操作方法來看並不是使用 sigmoid 類似函式對特徵值進行歸一化處理,而是對原始資料集進行減去平均值處理,一個例子就是在RGB影象卷積神經網路應用部分,原始RGB畫素值要減去均值再做後續處理

How?

一般來說,標準化意味著:從資料中減去平均值,然後將資料除以標準偏差。通常,這是針對每個輸入和輸出功能單獨完成,但可能需要經常對特徵資料集進行標準化處理,或者對某些特徵進行標準化處理時要特別小心。

Why?

標準化的最主要原因是,絕大多數神經網路的處理過程都假設輸入資料和輸出資料分佈平均值約為0,標準偏差約為1。像標準化這種假設深度學習文章中隨處可見,類似的包括像權重初始化,啟用函式,訓練網路的優化演算法等。

And?

一個未經訓練的網路的輸出值通常介於[-1, 1]。如果你想讓網路的輸出介於其他某個範圍(例如以位元組形式儲存的RGB影象範圍介於[0, 255]),那麼就會出現其他的一些問題。當開始進行訓練時,網路就會變得極其不穩定。假如網路的輸出值介於[-1, 1]之間,而期望值是255時,大部分訓練網路的尋優演算法(optimization algorithms)就會認為這是一個很大誤差(error)。這會計算得到很大的梯度值,同樣的訓練誤差就會發散(explode)。假如網路誤差並沒有發散,那麼網路的前面幾層結構也會是一種浪費,因為網路首先要學習怎樣將輸出值縮放並將其轉換為到所需的大致範圍。但是,當你對資料進行了標準化(在上述例子中,只需簡單用128/1)之後,這些問題都不復存在。
一般來說,神經網路中的特徵尺度(scale of featuer)也將決定它們的重要性。如果網路的輸出一個較大尺寸的特徵,那麼它與其他特徵相比就會有更大的誤差。同樣地,在輸入中有較大尺寸的特徵將會使其對網路引數有較大影響,並且類似於蝴蝶效應,對下游引起更大變化。由於這個原因,很多神經網路庫的自動標準化功能並不一定滿足特定任務要求,因為它們處理方式是在每個特徵的基礎上盲目地減去均值和除以標準差。比如,當你的資料有一個特徵範圍介於[0.0, 0.001]之間——可能由於它並不是一個重要的特徵,所以範圍很小(這種情況下,你就可能並不想重新縮放它),或者因為它有一些與其他特徵相比較小的單位?同樣,要謹慎對待範圍很小的特徵,因為它們的標準偏差(standard deviation)接近或者等於0—如果對它們進行標準化就會產生NaNs(not a number)等不穩定的元素。仔細地對這些問題進行思考是很有必要的:思考每個特徵(feature)代表了什麼,考慮把所有輸入特徵標準化為單位相等作為預處理過程。
我相信這是深度學習過程中真正需要使用者(human)介入的地方。

相關推薦

神經網路模型無法正常工作我們應該什麼系列——資料標準化處理Normalize

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。

神經網路模型無法正常工作我們應該什麼系列——正則化Regularlization

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新

神經網路模型無法正常工作我們應該什麼系列——初始化網路權重Initialized Network Weights

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。

神經網路模型無法正常工作我們應該什麼系列——Batch Size

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。

神經網路模型無法正常工作我們應該什麼系列——資料處理Preprocess

前言 當你進入深度學習領域,準備好深度神經網路,開始進行訓練時,遇到這樣一個大部分新手都會遇到的問題:你的神經網路沒法正常工作,而你不知道該如何去修正它。你去問你的老闆或者導師,他們也不知道該如何處理,因為在深度神經網路面前,他們和你一樣也是新手。

yii2-dynamicform外掛動態新增yii2-widget-select2外掛無法正常工作的解決方法

修改yii2-dynamic-form.js檔案,從第449行開始,將程式碼替換掉 // "kartik-v/yii2-widget-select2" var $hasSelect2 = $(widgetOptionsRoot.widgetItem).find

很抱歉,EXCEL遇到錯誤,使其無法正常工作,因此需要關閉EXCEL。是否希望我們立即修復?

sha log alt .com word 解決 soft 註冊 edi 出現以上情況解決方式: 按Windows +R,輸入“regedit”打開註冊表 找到以下鍵值:HKEY_CURRENT_USER\SOFTWARE\Microsoft\Office\16.0

K3組件無法正常工作!

clas mage bubuko class blog alt nbsp 技術 配置 K3客戶端提示 組件無法正常工作!所有組件均報錯。 配置中間層組件服務 K3組件無法正常工作!

Outlook 2016 自動發送/接收無法正常工作

服務器 Exchange 如果您的自動/發送接收由於某種原因停止工作,可能會非常令人沮喪,因為您必須記住手動執行發送/接收(F9)。如果您遇到Outlook無法自動發送或接收電子郵件的問題,可以嘗試以下幾項操作。#1 發送/接收 被停用這個解決方案在Outlook 2013中都適用於,在今天的Outl

【火爐煉AI】深度學習002-構建並訓練單層神經網路模型

【火爐煉AI】深度學習002-構建並訓練單層神經網路模型 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 前面我們介紹了神經網路的基本結構單元-感知器,現在我們再升一級,看看神經網路的基本結構和

【火爐煉AI】深度學習003-構建並訓練深度神經網路模型

【火爐煉AI】深度學習003-構建並訓練深度神經網路模型 (本文所使用的Python庫和版本號: Python 3.6, Numpy 1.14, scikit-learn 0.19, matplotlib 2.2 ) 前面我們講解過單層神經網路模型,發現它結構簡單,難以解決一些實際的比較複雜的問題,故而現

STM32板子斷開JTAG,串列埠無法正常工作

    遇到一個十分奇怪的故障,板子在JTAG連線的情況下,一切正常;當斷開JTAG的連線後,串列埠不在工作,經過各種排查;也查詢了一些網友的經驗:大致分為以下幾種情況: 1.STM32的BOOT配置不對,BOOT0,BOOT1沒有接到GND; 2.復位電路有問

27種神經網路模型的簡介

​ 【1】Perceptron§ 感知機 感知機是我們知道的最簡單和最古老的神經元模型,它接收一些輸入,然後把它們加總,通過啟用函式並傳遞到輸出層。 【2】Feed Forward(FF)前饋神經網路 前饋神經網路(FF),這也是一個很古老的方法——這種方法起源

神經網路模型

本文轉載自https://www.toutiao.com/i6432188985530909186/ 一文看懂25個神經網路模型 引言 在深度學習十分火熱的今天,不時會湧現出各種新型的人工神經網路,想要實時瞭解這些新型神經網路的架構還真是不容易。光是知道各式各樣的神

介紹一個快速確定神經網路模型中各層矩陣維度的方法

深度學習在設計神經網路結構時需要指定每個隱藏層權重矩陣、偏置項的維度,有的時候容易搞混淆,導致執行時產生維度不對的錯誤,特別是對於隱藏層既深又寬的網路,更容易出錯。下面以一個例項來說明怎麼簡單快速確定每一層各個矩陣的維度。 假設需要擬合的函式為:y=f(x)=WX+b。 損失函式:J(W,b) 其中 X

TensorFlow下構建高效能神經網路模型的最佳實踐

本文轉自:https://blog.csdn.net/qq_40027052/article/details/78485997 作者簡介:李嘉璇,《TensorFlow技術解析與實戰》作者,有處理影象、社交文字資料情感分析、資料探勘等實戰經驗。曾任職百度研發工程師,目前研究

AutoMl及NAS概述:更有效地設計神經網路模型工具

摘要: 還在為自己構建深度模型框架而抓耳饒腮嗎?AutoML及NAS瞭解下,能夠自動生成合適的模型結構,解脫你的雙手,善待你的頭髮。 隨著人工智慧的迅速發展,深度學習工具箱也發生比較大的變化,從之前受歡迎的Caffe到Tensorflow等框架,好的深度學習框架能

使用者畫像2使用keras框架搭建神經網路模型

import pickle import pandas as pd import tensorflow as tf import numpy as np import matplotlib.pyplot as plt from keras import back

瑞克斯平臺構建深度神經網路模型

網易有道公司上線一款“AI+口語練習”應用——有道口語,上線一週便榮登蘋果App Store新鮮APP推薦榜。有道口語定位於全年齡段的英語學習人群,旨在解決英語口語學習者“不敢說、不地道”痛點,基於有道自研的AI口語訓練產品,提供AI 語音評測及打分,通過場景的

使用python建立自己的第一個神經網路模型吧!

神經網路(NN),也被稱為人工神經網路(ANN),是機器學習領域中學習演算法的子集,大體上借鑑了生物神經網路的概念。目前,神經網路在計算機視覺、自然語言處理等領域應用廣泛。德國資深機器學習專家Andrey Bulezyuk說到,“神經網路正在徹底改變機器學習,因為它們能夠有效