CS231n-2017 Lecture6訓練神經網絡(一)筆記

本節主要講的是模型訓練時的算法設計

數據預處理:

關于數據預處理,我們有常用的3個符號,數據矩陣X,假設其尺寸是[N\times D],N是數據樣本的數量,D是數據的維度

均值減法(Mean subtraction):

是預處理最常用的形式,它對數據中每個獨立特征減去其該獨立特征在所有樣本中的平均值

對于圖片來說,更常見的時對所有像素都減去所有像素值的平均值,也可以在3個顏色通道上分別操作

歸一化(Normalization):

指將數據的所有維度都歸一化,使其數值范圍都近似相等

這個操作的意義在于當不同維度的輸入特征具有不同的數值范圍(或計量單位)且差異較大時,可以避免傳播時部分特征相關的權重的梯度過大

在圖像處理中,由于像素的數值范圍幾乎是一致的,所以額外進行這個預處理步驟就顯得沒有那么必要

歸一化的兩種方法:

第一種方法:

對數據做0中心化處理,然后對每個維度都除以其維度對應的標準差

X_{norm} = \frac{X-\bar{X}}{S}

其中S為X的標準差

第二種方法:

對每個維度都做歸一化,使得每個維度的最大值和最小值是1和-1

X_{norm} = 2\times \frac{X-X_{min}}{X_{max} - X_{min}}-1

PCA與白化(Whitening):

我們可以對協方差矩陣進行SVD(奇異值分解),并利用奇異值分解來減小數據矩陣的size

這里先來復習一下SVD

SVD的描述如下:

奇異值:

A是秩為r的m\times n?的矩陣,則A^T A是對稱矩陣且可以正交對角化,則A^TA的特征值\lambda_i > 0, 1\leq i \leq r,設對應的特征向量為{v_1,v_2,...,v_n}, 則規定奇異值\sigma_i = \sqrt{\lambda_i},且\sigma_i = ||Av_i||

奇異值分解:

矩陣A同上,那么存在一個矩陣\Sigma = \begin{bmatrix} D & 0\\ 0 & 0 \end{bmatrix},其中D的對角元素是A的前r個奇異值,滿足排序\sigma_1 \geq \sigma_2 \geq ... \geq \sigma_r > 0,且存在一個m\times m?的正交矩陣U和一個n\times n?的正交矩陣V,使得A = U\Sigma V^T

其中

u_i = \frac{1}{\sigma_i}Av_i?是U的第i個列向量,當m>n時,多余的u自行補充單位向量,使U滿足正交矩陣

v_i和上面提到的意義一致,構成V的第i個列向量

PCA過程:

原理:

X_1,X_2,...,X_m表示以x_1,x_2,...,x_m為樣本觀測值的是隨機變量,如果能找到c_1,c_2,...,c_m,使得Var(c_1X_1+c_2X_2+...+c_mX_m)的值達到最大,就表明了這m個變量的最大差異,當然需要規定\sum_{i=1}^{m}c_i^2 = 1,否則Var可以是無窮大

這個解[c_1,c_2,...,c_m]^T是m維空間的一個單位向量,代表一個方向,稱之為主成分方向

一般來說代表原來m個變量的主成分不止一個,但不同主成分信息之間不能相互包含,即兩個主成分的協方差應為0

即:

F_i = \sum_{k=1}^{m}c_{ik}x_k表示第i個主成分

C_i = [c_i1,c_i2,...,c_im]^T要使Var(F_i)達到最大,又要有C_{i+1}C_i垂直,且使F_{i+1}達到最大,以此類推,至多可以得到m個主成分

步驟:

1.先對數據進行0中心化處理,然后計算協方差矩陣R(這里也是相關系數矩陣),假設size為[m\times m]

R的第(i,j)個元素是第i個維度和第j個維度的協方差,所以可以知道,這個矩陣是一個方陣,且是對角矩陣,且對角線上的元素,比如第(i,i)個元素,恰好是第i維特征的方差。且該矩陣是半正定矩陣

2.計算出R的特征值\lambda_1 \geq \lambda_2 \geq ... \geq \lambda_m,以及對應的標準正交化特征向量u_1,u_2,...,u_m,其中u_j = [u_{1j},u_{2j},...,u_{mj}]^T

則得到m個主成分,第i個主成分為

F_i = \sum_{k=1}^{m}u_{ik}x_k,其中x_k已經被歸一化了

3.計算前j個主成分的累計貢獻率:

\frac{\sum_{k=1}^{j}\lambda_k}{\sum_{k=1}^{m}\lambda_k}

取定貢獻率一個閾值,比如75%,進而解得j,從而確定保留j個主成分

4.最后我們保留j個主成分代替之前的m個X進行分析即可,也就是把維度m降低到了j

實際計算中,我們常用SVD代替步驟2的特征分解(計算效率更高),也就是先對數據矩陣進行標準化,然后直接對數據矩陣D進行SVD分解(跳過計算協方差矩陣這一步),然后用SVD的V里的v_i替代上文的u_i\lambda_i就取D^TD\lambda_i,假設最后保留j個主成分,其對應的向量為[v_1,v_2,...,v_j],則降維后的矩陣變成Z\times[v_1,v_2,...,v_j]

優點:

通常使用PCA降維后的數據訓練神經網絡的性能會更好,同時節省時間和儲存器空間

白化:

目的是為了讓數據具有以下特性:

1.均值為0,數據分布的中心在原點

2.單位協方差,所有維度的方差為1

3.無相關性,不同維度之間完全獨立,協方差為0

步驟:

1.中心化,減去均值

2.計算協方差矩陣

3.對協方差矩陣進行特征值分解

4.對每個維度除以其特征值的平方根,在除的時候,為了防止分母為0,需要添加一個小常量

PCA與白化通常不用于卷積神經網絡

預處理重要規則:

對于訓練集/驗證集/測試集,我們在中心化的時候,只采用集合內有的樣本所產生的統計特征量進行預處理,比如,對訓練集進行預處理的時候,只用訓練集的均值/方差;對驗證集、測試集同理

權重初始化:

小隨機數初始化:

由于數據經過了恰當的歸一化處理,可以假設所有權重數值大約一半為正數,一半為負數,則其期望應為0,但又不能全為0,因為神經元之間是不對稱的,所以,我們可以將權重初始化為小的數值,隨機且不相等,通常的隨機是從基于0均值和標準差為1的高斯分布中生成隨機數。但不是小數值就一定會得到好的結果,因為這樣會導致反向傳播時出現非常小的梯度,從而很大程度地減小反向傳播中的梯度信號

使用\frac{1}{\sqrt{n}}?來校準方差

上述的做法存在一個問題,隨著輸入數據量的增大,隨機初始化神經元的輸出數據分布中的方差也在增大,因此,我們需要將其除以輸入數據量的平方根,來調整其方位,使其輸出的方差歸一化到1

證明過程如下:

Var(s) = Var(\sum_{i}^{n}w_ix_i)

=\sum_{i}^{n}(w_ix_i)

=\sum_{i}^{n}\{[E(w_i)]^2Var(x_i)+E(x_i^2)Var(w_i)+Var(x_i)Var(w_i)\}

=\sum_{i}^{n}Var(x_i)Var(w_i)

=(nVar(w))Var(x)

第三個等號到第四個等號用到了E(x_i) = E(w_i) = 0

所以,如果想要s和x有一樣的方差,就需要滿足nVar(w) = Var(\sqrt{n}w) = 1,又我們之前是由標準差為1的高斯分布隨機取得w,所以Var(w) = 1,所以我們只要令w = \frac{1}{\sqrt{n}}w即可

稀疏初始化(Sparse initialization):

將所有權重矩陣設為0,但為了打破對稱性,每個神經元都要與下一層固定數目(經典連接數目是10個)的神經元隨機連接(權重由小的高斯分布生成)

偏置的初始化:

通常將偏置初始化為0,這是因為隨機數權重矩陣已經打破了對稱性,對于ReLU非線性激活函數,有人喜歡用0.01這樣的小數值常量作為所有偏置的初始值,認為這樣做能夠使所有的ReLU單元一開始就激活

批量歸一化(Batch Normalization):

核心思想是在網絡的每一層(尤其是全連接層/卷積層之后,激活函數之前),對輸入數據進行標準化處理,使其在訓練過程中保持相對穩定的分布,從而緩解梯度消失/爆炸,提高對初始化和學習率的魯棒性

步驟:

假設我們有一個mini_batch的數據輸入,size為m,對于每個神經元的輸入,我們都計算mini_batch的均值以及方差,并利用這個均值與方差對輸入進行標準化

正則化(Regularization):

控制神經網絡過擬合的方法之一

L2正則化:

對每個權重w,我們都向Loss中添加一項\frac{1}{2}\lambda w^2,系數為\frac{1}{2}?是因為這樣子梯度的系數就為1了,L2正則化的直觀理解是它對大數值的權重向量進行嚴厲的乘法,傾向于更加分散的權重向量,使網絡更傾向于使用所有輸入特征,而不是嚴重依賴于輸入特征中的某些小部分特征

使用L2正則化意味著所有的權重梯度都會有一個以w += -\lambda w的線性下降的方向成分

L1正則化:

對每個w我們向Loss加入\lambda |w|,L1正則化會讓權重向量在最優化的過程中變得稀疏(非常接近0),也就是說使用L1正則化后,神經元更傾向于使用輸入數據中最重要特征所構成的稀疏子集,同時對噪聲的輸入不敏感。

一般來說L2正則化的效果要優于L1正則化

最大范氏約束(Max norm constraints)

另一種形式的正則化,給每個神經元的權重向量的量級設定上限,并使用投影梯度下降來確保這一約束,即||\vec{w}||_2<c,其中c為常數,一般為3或4,這種正則化有一個好處,在學習率設置過高的時候,網絡中也不會出現數值爆炸,因為參數更新始終被限制

隨機失活(Dropout):

非常簡單且有效的正則化方法

實現方法:在訓練時,讓神經元以p(超參數)的概率被激活或者設置為0(失活)

在訓練過程中,可以認為是對完整的神經網絡中抽樣出一些子集,每次基于輸入數據只更新子網絡的參數(但子網絡并不是相互獨立的,它們都共享參數)

在測試過程中,不再使用隨機失活,而是使用整個神經網絡進行預測,可以理解為對數量巨大的子網絡做了模型集成(model ensemble),從而計算出一個平均的預測

前向傳播中的噪聲:

Dropout屬于網絡在前向傳播中具有隨機行為的方法,則會對真實分布產生一定的噪聲,可以通過分析法、數值法將噪聲邊緣化

分析法:

由于Dropout只在訓練時進行隨機失活,導致每個神經元對其接受的輸入x的期望是px。則在預測的時候,不再隨機失活,為了保證神經元能夠復現之前訓練的環境,來保證其預測的正確性,需要將其接受的每個輸入x乘上一個系數p,從而保證同樣的預測期望輸出

數值法:

抽樣出很多的子網絡,隨機選擇不同的子網絡進行前向傳播,最后對他們的預測取平均值

損失函數:

屬性分類:

之前講到的損失公式的前提,都是假設每個樣本只有一個正確的標簽,但如果每個樣本都可以有或沒有多個標簽,且標簽之間互不排斥呢?

這種情況下,我們需要為每個屬性創立一個獨立的二分類的分類器,并都對其采用一個Loss函數,最后將這多個Loss函數求和

或者,我們可以對每種屬性訓練一種獨立的邏輯回歸分類器

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/90765.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/90765.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/90765.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++ 中實現 `Task::WhenAll` 和 `Task::WhenAny` 的兩種方案

&#x1f4da; C 中實現 Task::WhenAll 和 Task::WhenAny 的兩種方案 引用&#xff1a; 拈朵微笑的花 想一番人世變換 到頭來輸贏又何妨日與夜互消長 富與貴難久長 今早的容顏老於昨晚C 標準庫異步編程示例&#xff08;一&#xff09;C TAP&#xff08;基于任務的異步編程…

【學習】Codeforces Global Round 15 C. Maximize the Intersections

題意&#xff1a;給出一個圓&#xff0c;順時針排布1~2*n&#xff0c;已知連了k條邊&#xff0c;問這個圓最好情況下有多少個線的交點&#xff0c;要求線與線之間不能有重復的連接點&#xff0c;也就是每個點只能被一條線連接 思路&#xff1a; 1.考慮沒有線的時候&#xff0…

圖論:Dijkstra算法

昨天介紹了最小生成樹的兩個算法&#xff0c;最小生成樹的兩個算法旨在求解無向有權圖中的最小代價聯通圖的問題&#xff0c;那么對于有向有權圖&#xff0c;從起點到終點的最小花費代價問題就可以用 Dijkstra 算法來解決而且Dijkstra算法可以求出來從起始點開始到所有節點的最…

WPFC#超市管理系統(2)顧客管理、供應商管理、用戶管理

超市管理系統3. 顧客管理3.1 顧客新增3.2 DataGrid樣式3.3 顧客刪除3.4 顧客修改4. 供應商管理4.1 供應商管理主界面4.2 新增供應商4.3 修改供應商5. 用戶管理5.1 用戶管理主界面5.2 新增用戶5.3 修改用戶總結3. 顧客管理 在CustomerView.xaml使用命令綁定方式添加頁面加載Loa…

Windows本地部署DeepSeek

1、Ollama1、下載Ollama安裝包https://ollama.com/download&#xff08;如果下載很慢 可以直接找我拿安裝包&#xff09;2、使用命令行安裝打開cmd 將下載的安裝包OllamaSetup.exe 放到想要安裝的目錄下。&#xff08;如果直接雙擊&#xff0c;會裝到C盤&#xff09;例如想裝到…

基于Python的新聞爬蟲:實時追蹤行業動態

引言 在信息時代&#xff0c;行業動態瞬息萬變。金融從業者需要實時了解政策變化&#xff0c;科技公司需要跟蹤技術趨勢&#xff0c;市場營銷人員需要掌握競品動向。傳統的人工信息收集方式效率低下&#xff0c;難以滿足實時性需求。Python爬蟲技術為解決這一問題提供了高效方…

阿里視頻直播解決方案VS(MediaMTX + WebRTC) 流媒體解決方案

背景&#xff1a; 公司采購了新的攝像頭&#xff0c;通過rtsp或者rtmp推流到云平臺&#xff0c;云平臺內部進行轉碼處理&#xff0c;客戶端使用HLS或HTTP-FLV播放&#xff0c;移動App可能使用HLS或私有SDK&#xff0c;超低延時則采用WebRTC。 技術選型&#xff1a; RTSP&…

day33:零基礎學嵌入式之網絡——TCP并發服務器

一、服務器1.服務器分類單循環服務器&#xff1a;只能處理一個客戶端任務的服務器并發服務器&#xff1a;可同時處理多個客戶端任務的服務器二、TCP并發服務器的構建1.如何構建&#xff1f;&#xff08;1&#xff09;多進程&#xff08;每一次創建都非常耗時耗空間&#xff0c;…

VR全景制作的流程?VR全景制作可以用在哪些領域?

VR全景制作的流程&#xff1f;VR全景制作可以用在哪些領域&#xff1f;VR全景制作&#xff1a;流程、應用與未來虛擬現實&#xff08;VR&#xff09;全景制作正迅速改變我們的感官體驗&#xff0c;使我們能夠身臨其境地探索虛擬世界&#xff0c;享受沉浸式的奇妙感受。那么&…

用LangChain重構客服系統:騰訊云向量數據庫+GPT-4o實戰

人們眼中的天才之所以卓越非凡&#xff0c;并非天資超人一等而是付出了持續不斷的努力。1萬小時的錘煉是任何人從平凡變成超凡的必要條件。———— 馬爾科姆格拉德威爾 目錄 一、傳統客服系統痛點與重構價值 1.1 傳統方案瓶頸分析 1.2 新方案技術突破點 二、系統架構設計&…

主要分布在腹側海馬體(vHPC)CA1區域(vCA1)的混合調諧細胞(mixed-tuning cells)對NLP中的深層語義分析的積極影響和啟示

腹側海馬體CA1區&#xff08;vCA1&#xff09;的混合調諧細胞&#xff08;mixed-tuning cells&#xff09;通過整合情感、社會關系、空間概念等多模態信息&#xff0c;形成動態的情景化語義表征&#xff0c;為自然語言處理&#xff08;NLP&#xff09;的深層語義分析提供了重要…

ESP32的ADF詳解:6. Audio Processing的API

一、Downmix 1. 核心功能 將基礎音頻流和新加入音頻流混合為單一輸出流&#xff0c;支持動態增益控制和狀態轉換。輸出聲道數與基礎音頻一致&#xff0c;新加入音頻自動轉換聲道匹配。2. 關鍵特性聲道處理 輸出聲道數 基礎音頻聲道數新加入音頻自動轉換聲道&#xff08;如立體…

Qt(基本組件和基本窗口類)

一、基本組件1. Designer設計師為什么要上來先將這個東西呢&#xff0c;這個是QT外置的設計界面的工具&#xff0c;沒啥用&#xff0c;所以了解一下。我們用的多的是QT內置的界面設計&#xff0c;只需要我們雙擊我們創建的項目的.ui文件就可以進入這個界面&#xff0c;你對界面…

docker與k8s的容器數據卷

Docker容器數據卷 特性 docker鏡像由多個只讀層疊加而成&#xff0c;啟動容器時&#xff0c;Docker會加載只讀鏡像層并在鏡像棧頂部添加一個讀寫層。如果運行中的容器修改了現有的一個已經存在的文件&#xff0c;那么該文件將會從讀寫層下面的只讀層復制到讀寫層&#xff0c;該…

自然語言處理技術應用領域深度解析:從理論到實踐的全面探索

1. 引言:自然語言處理的技術革命與應用前景 自然語言處理(Natural Language Processing,NLP)作為人工智能領域的核心分支,正在以前所未有的速度改變著我們的數字化生活。從最初的規則基礎系統到如今基于深度學習的大語言模型,NLP技術經歷了從理論探索到實際應用的深刻變…

OpenGLRender開發記錄(二): 陰影(shadowMap,PCF,PCSS)

目錄已實現功能陰影shadowMapPCFPCSS實現shadowMapPCFPCSS陰影GitHub主頁&#xff1a;https://github.com/sdpyy1 OpenGLRender:https://github.com/sdpyy1/CppLearn/tree/main/OpenGL 已實現功能 除了上次實現IBL之外&#xff0c;項目目前新增了imGUI的渲染&#xff0c;更方便…

Linux:日志亂碼

1、Linux日志亂碼可能是XShell客戶端編碼沒設置為UTF-8引起的&#xff0c;按照以下步驟&#xff0c;設置終端格式&#xff1a;中文版&#xff1a;打開Xshell會話屬性&#xff08;文件→屬性→終端→編碼&#xff09;&#xff0c;選擇與服務器一致的編碼格式&#xff08;如UTF-8…

Rouge:面向摘要自動評估的召回導向型指標——原理、演進與應用全景

“以n-gram重疊量化文本生成質量&#xff0c;為摘要評估提供可計算標尺” Rouge&#xff08;Recall-Oriented Understudy for Gisting Evaluation&#xff09; 是由 南加州大學信息科學研究所&#xff08;ISI&#xff09;的Chin-Yew Lin 于2004年提出的自動文本摘要評估指標&am…

[STM32][HAL]stm32wbxx 超聲波測距模塊實現(HY-SRF05)

前言 在電子技術應用中,距離測量是一個常見且重要的需求。超聲波模塊因其測量精度較高、成本較低、易于使用等優點,被廣泛應用于機器人避障、液位檢測、智能停車系統等領域。該文主要講解以stm32wb芯片為主控,用HAL庫來對HY-SRF05超聲波模塊進行代碼編寫,實現基本的驅動和測…

MySQL 性能調優實戰指南:從診斷到優化全解析

引言在日常的數據庫運維工作中&#xff0c;我們經常需要對 MySQL 數據庫進行診斷和性能分析。本文將介紹一套全面的 MySQL 診斷腳本&#xff0c;適用于 MySQL 8.0&#xff08;兼容 8.0.15 及以上版本&#xff09;&#xff0c;涵蓋事務鎖分析、性能瓶頸定位、配置檢查、連接狀態…