類神經網路訓練 批次標準化 (Batch Normalization)

更新於 發佈於 閱讀時間約 2 分鐘

Q: 通常我們在找參數的過程中會發現,我們有沒有辦法改善error surface,讓他看起來不那麼複雜?!

A: 我們可以通過Batch Normalization解決這個問題。


在調整兩個參數的error surface中,w1與w2的斜率差異過大,才會造成error surface的圖形太過複雜。所以我們可以想想,怎麼樣讓w1與w2產生變化時,loss的變化不會很大,這樣就可以將error surface簡單化?


假設有一個function: y = w1x1+w2x2,如果x1的值很小(像是x1 = 1, 2),x2的值很大(像是x2 = 1000, 2000),則每當w1變化時,y的變化也會很小,但x2變化時,y的變化就會變大,這樣就會造成error surface很複雜。

-> 所以如果我們可以讓x1與x2的變化同步,就能讓error surface簡單化。

-> Feature normalization就可以解決這樣的問題。


Feature Normalization

首先,我們根據不同的dimension,求出每個dimension的平均值mean, 標準差standard deviation。

之後,將該dimension的所有值,放入normalization的公式,得到新的值:

i = xi - m / σi,再放回原本的feature內。

透過這樣的方法,loss在計算時,收斂的速度就會快很多,訓練也會順利很多。


但這有個問題,就是在機器學習中,通常都是非常大量的數據在訓練,這會太過龐大。

所以我們通常會以一個batch作為基準去計算normalization。

-> 這就是Batch Normalization。


除此之外,我們也要注意的是,在normalization之後,還是會通過與參數W的計算或是sigmoid的計算,得到新的值,這樣的值有可能造成原本侷限在0~1的值被放大到差異化加大。所以適時也要為計算完的數值再次做normalization。


Testing normalization value

但我們在訓練完進到testing環節,很多時候沒辦法等一個batch size的資料量都完整後才進行normalization,所以通常pytorch在進行normalization時,會計算moving average,透過已經算出來的batch average,評估出目前的平均值應該是多少。

計算方法: u = pu + (1-p)ut

u: 到目前為止算出來的平均

ut:第t個batch的平均

p: 由我們自己設定的hyperparameter(pytorch設定為0.1)

透過這樣的方式,我們能得到moving average的平均值u, 與標準差σ

可以直接透過這樣的方式計算出batch normalization。



avatar-img
1會員
37內容數
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
dab戴伯的沙龍 的其他內容
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
本文將介紹batch的定義與其在機器學習中的作用,以及不同batch size 的影響。同時也會講解Momentum動量在機器學習中的重要性。透過本文,您將清楚地瞭解batch、batch size和Momentum動量的概念以及其對機器學習的影響。
之前有提到有時我們在微分之後會得到gradient = 0的值,就以為我們已經找到最小值,但其實它只是local minima。 那這一節主要想跟大家分享我們要怎麼區分是不是Local Minima。
這篇文章介紹瞭如何使用sigmoid函數來解決函數過於簡單導致的模型偏差問題,並透過尋找函數和參數來逼近precise linear curve。另外,也講述瞭如何尋找讓損失函數最小的參數以及使用batch和反覆進行Sigmoid的方法。
機器學習是什麼? 簡單來說,機器學習就是訓練機器尋找Function的一段過程,而這個Function可以幫助我們解決我們遇到的問題,或是幫助我們
瞭解如何透過Regression實作Classification,使用one-hot vector表示不同的類別,並透過乘上不同的Weight和加上不同的bias來得到三個數值形成向量。同時通過softmax的方式得到最終的y'值,並探討使用Cross-entropy來計算類別的loss。
瞭解梯度下降算法中的學習速率調整,包括為什麼需要動態的學習速率、Root Mean Square、RMSProp、最常用的optimization策略Adam,以及如何進行Learning rate Scheduling。
本文將介紹batch的定義與其在機器學習中的作用,以及不同batch size 的影響。同時也會講解Momentum動量在機器學習中的重要性。透過本文,您將清楚地瞭解batch、batch size和Momentum動量的概念以及其對機器學習的影響。
之前有提到有時我們在微分之後會得到gradient = 0的值,就以為我們已經找到最小值,但其實它只是local minima。 那這一節主要想跟大家分享我們要怎麼區分是不是Local Minima。
這篇文章介紹瞭如何使用sigmoid函數來解決函數過於簡單導致的模型偏差問題,並透過尋找函數和參數來逼近precise linear curve。另外,也講述瞭如何尋找讓損失函數最小的參數以及使用batch和反覆進行Sigmoid的方法。
機器學習是什麼? 簡單來說,機器學習就是訓練機器尋找Function的一段過程,而這個Function可以幫助我們解決我們遇到的問題,或是幫助我們
你可能也想看
Google News 追蹤
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
本系列將討論 LLM 時代中,分散 ML workload 的各種方法。作為系列的第一篇,我們將提及 High-level 的概論,譬如分散式訓練的各種切法、Model Parallelism 的相依問題,以及改善 Network Topology 等課題。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們從 AI說書 - 從0開始 - 103 至 AI說書 - 從0開始 - 105 的努力,已經完成資料集前處理,現在需要定義一個函數來加載這些清理過的數據集,並在預處
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 xxx 提到,既然提到訓練,就表示要有一套衡量基準供大家遵守,有鑑於此,以下繼續介紹幾類衡量方式: MCC: 首先介紹 True (T) Positive (
前言 在閱讀《強化式學習:打造最強 AlphaZero 通用演算法》時,對一些看似基本,但是重要且會影響到之後實作的項目概念有點疑惑,覺得應該查清楚,所以搞懂後記錄下來,寫下這篇文章(應該說是筆記?)。 正文 下面這段程式碼: model = Sequential() model.add
Thumbnail
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
先前藉由加入提示詞控制畫面內容與品質後,發現圖像放大後細節感覺糊糊的,這篇就要來測試幾個增加細節的方法,測試使用的工作流是基於A1111算法的工作流,且使用固定種子。
Thumbnail
隨著理財資訊的普及,越來越多台灣人不再將資產侷限於台股,而是將視野拓展到國際市場。特別是美國市場,其豐富的理財選擇,讓不少人開始思考將資金配置於海外市場的可能性。 然而,要參與美國市場並不只是盲目跟隨標的這麼簡單,而是需要策略和方式,尤其對新手而言,除了選股以外還會遇到語言、開戶流程、Ap
Thumbnail
嘿,大家新年快樂~ 新年大家都在做什麼呢? 跨年夜的我趕工製作某個外包設計案,在工作告一段落時趕上倒數。 然後和兩個小孩過了一個忙亂的元旦。在深夜時刻,看到朋友傳來的解籤網站,興致勃勃熬夜體驗了一下,覺得非常好玩,或許有人玩過了,但還是想寫上來分享紀錄一下~
Thumbnail
特徵工程是機器學習中的核心技術,通過將原始數據轉換為有意義的特徵,以提升模型的準確性和穩定性。常見的特徵工程方法包括異常值檢測、特徵轉換、特徵縮放、特徵表示、特徵選擇和特徵提取。本文將深入探討這些方法的適用情況及具體實施流程,以幫助讀者有效利用特徵工程來優化機器學習模型表現。
Thumbnail
本系列將討論 LLM 時代中,分散 ML workload 的各種方法。作為系列的第一篇,我們將提及 High-level 的概論,譬如分散式訓練的各種切法、Model Parallelism 的相依問題,以及改善 Network Topology 等課題。
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 我們從 AI說書 - 從0開始 - 103 至 AI說書 - 從0開始 - 105 的努力,已經完成資料集前處理,現在需要定義一個函數來加載這些清理過的數據集,並在預處
Thumbnail
前言 讀了許多理論,是時候實際動手做做看了,以下是我的模型訓練初體驗,有點糟就是了XD。 正文 def conv(filters, kernel_size, strides=1): return Conv2D(filters, kernel_size,
Thumbnail
我想要一天分享一點「LLM從底層堆疊的技術」,並且每篇文章長度控制在三分鐘以內,讓大家不會壓力太大,但是又能夠每天成長一點。 延續 xxx 提到,既然提到訓練,就表示要有一套衡量基準供大家遵守,有鑑於此,以下繼續介紹幾類衡量方式: MCC: 首先介紹 True (T) Positive (
前言 在閱讀《強化式學習:打造最強 AlphaZero 通用演算法》時,對一些看似基本,但是重要且會影響到之後實作的項目概念有點疑惑,覺得應該查清楚,所以搞懂後記錄下來,寫下這篇文章(應該說是筆記?)。 正文 下面這段程式碼: model = Sequential() model.add
Thumbnail
在第一篇我講到一開始的圖像風格轉換,每產生一張圖片都得重新訓練,這對於使用上難免綁手綁腳,所以理所當然的下一步就是要解決這個問題,看看能不能只要訓練一次,就可以重複使用。
Thumbnail
最近有新的訂閱者加入, 想趁這個機會再分享一次學習心法與建議給第一次練習的讀者、同學們。 如果你本身已經很熟練演算法,那隨機挑題目練習ok,可以測試觀念是否正確,並且驗證寫code的效率與正確程度。 如果是剛畢業或還在學,以前沒有打過程式競賽。 想開始有系統地增強演算法&資料結構的能力
Thumbnail
解決電腦上遇到的問題、證明正確性、探討效率 並且很著重溝通,說服別人你做的事是正確且有效率的。 內容: 計算模型、資料結構介紹、演算法介紹、時間複雜度介紹。
Thumbnail
先前藉由加入提示詞控制畫面內容與品質後,發現圖像放大後細節感覺糊糊的,這篇就要來測試幾個增加細節的方法,測試使用的工作流是基於A1111算法的工作流,且使用固定種子。