徹底理解BP之手寫BP圖像分類你也行

徹底理解BP之手寫BP圖像分類你也行

轉自:https://zhuanlan.zhihu.com/p/397963213

第一節:用矩陣的視角,看懂BP的網絡圖

1.1、什么是BP反向傳播算法

  • BP(Back Propagation)誤差反向傳播算法,使用反向傳播算法的多層感知器又稱為BP神經網絡。BP是當前人工智能主要采用的算法,例如你所知道的CNN、GAN、NLP中的Bert、Transformer,都是BP體系下的算法框架。
  • 理解BP對于理解網絡如何訓練很重要
  • 在這里我們采用最簡單的思路理解BP。確保能夠理解并且復現

1.2、矩陣乘法

  • 參考:https://www.cnblogs.com/ljy-endl/p/11411665.html

img

1.3、感知機

  • 感知機模擬了神經元突觸的信息傳遞

img

1.4、感知機-矩陣表示

  • 用矩陣的視角來定義感知機結構

img

1.5、感知機-多個樣本

  • 當a、b是第一個,x、y是第二個樣本時

img

1.6、感知機-增加偏置

  • 關于偏置的存在,考慮y = kx + b直線公式,若b=0,則退化為y = kx,此時表達的直線必定過0點,無法表達不過0點的直線,所以偏置在這里非常重要

img

1.7、感知機-多個樣本,并增加偏置(樣本維度增加)

img

1.8、感知機-多個輸出,同一個樣本(輸出維度增加)

  • 討論增加一個輸出時的樣子

img

1.9、感知機-多個樣本,多個輸出(樣本、輸出維度同時增加)

  • 當樣本維度,和輸出維度同時增加時

img

1.10、關于廣播機制

  • 對于矩陣A和B的元素操作(點乘、點加、點除等等)。廣播機制約定了,假設A是1x5,B是3x5,則約定把A在行方向復制3份后,再與B進行元素操作,同理可以發生在列上,或發生在B上

img

1.11、以下是動畫

  • 解釋維度增加時,矩陣表示的差異

img


img


img


img

1.12、鍛煉一下

  • 注意這里沒有考慮激活的存在
  • 是否和你想的一樣?

img


img


  • 再回過頭看BP的圖,你看懂了嗎?學會了用矩陣的視角看這種了嗎?
  • 這種圖通常省略了偏置和激活,實際中都存在偏置和激活

img

第二節:BP在干嘛,到,函數的最小化

  • BP到底干了嘛,函數最小化是什么?

2.1 實際例子,理解樣本書、特征數

img

2.2 理解BP的意義

  • 當我們明白了,特征可以逐層映射到結論時,輸入特征和結論可以收集得到。權重該怎么來呢?對,BP就是在給定輸入特征和輸出結論后,告訴你中間權重應該取值多少是合適的

img

2.3 樣本1

  • 這里分析了單位帶來的問題

img

2.4 樣本2

img

2.5 發生誤差

  • 這里著重強調輸入特征、推測結果、結論之間的關系

img


img

- 通過推測結果和真實情況之間的誤差,反向傳遞到模型中,促使模型做出調整,使得推測結果更接近真實情況。用到的方法即誤差反向傳播算法(BP,Back Propagation)

2.6 定義誤差度量方式

  • 注意,分類問題二元交叉熵更合適,這里為了簡化

img

2.7 轉換為函數最小化問題

  • 歸根結底是為了知道誤差最小時, [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-YuRuTYw4-1657805811986)(https://www.zhihu.com/equation?tex=%5Ctheta)] 的取值,如何得到最合適的權重?
  • 這里提到,BP告訴我們,采用 [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-HfClaXwG-1657805811986)(https://www.zhihu.com/equation?tex=%5Ctheta)] 的負梯度方向,關于負梯度方向,請看后面分析

img

2.8 函數最小化舉例1

img

2.9 函數最小化舉例2

  • 為什么是適當的很小步長,因為梯度方向告訴我們函數上升最快的方向,但是并沒有人告訴我們,距離最小值有多遠,那么我們只能走很小的一步。然后再看看梯度方向,繼續走很小一步。多次迭代后,找到最小值。如果步長太大,其結果是在中間震蕩,無法收斂。所以是超參數,經驗值

img

第三節:矩陣求導的推導和結論

  • 既然BP可以用矩陣描述,那么反向求導時,則需要處理矩陣求導。這是簡化BP理解的一個關鍵,一定不要用單個值的方式去理解他,太繞了,還難以實現

3.1 導數定義

  • 資料:https://www.cnblogs.com/lingjiajun/p/9895753.html

img

3.2 f(x)=ax時的導數

img

3.3 f(x)=x^2時的導數

img

3.4 使用梯度下降求解sqrt(a)

img

- 有了導數值,我們可以使用梯度下降(負梯度方向更新)法,迭代找到誤差函數的極小值位置,今兒找到我們想要的解


  • 步驟如下:

img


  • 代碼部分如下:

img

3.5 擴展閱讀,使用牛頓法求解sqrt(a)

  • 牛頓法更新時,采用的是x = x - 一階導/二階導,速度比梯度下降法快不少,但是他要求解二階導很難計算

img

3.6 矩陣求導,定義操作

  • 定義基本操作,模擬誤差計算函數,使用矩陣表達

img

3.7 定義誤差函數error

img

3.8 匯總error的定義

img

3.9 error對A的偏導數

img

3.10 error對B的偏導數

img

3.11 矩陣求導結論

img

第四節:代碼實現

4.1 介紹

  • 對于C++
  1. 既然是基于矩陣操作,則首先要實現基于C++的矩陣類。這里matrix.hpp解決矩陣操作問題(矩陣的元素操作、廣播等)
  2. 由于C++矩陣乘法效率問題,可以考慮引用OpenBLAS庫
  3. 工程實現代碼請訪問:https://github.com/shouxieai/bp-cpp
  • 對于Python
  1. 直接利用Numpy可以輕易實現矩陣操作、廣播、元素乘法
  2. Python中Numpy的矩陣操作,已經進行了優化

IDE采用VSCode,編譯采用Makefile,若要配置Makefile和vscode的開發環境,請訪問:使用Makefile配置標準工程環境

4.2 圖像矩陣化

img

img


4.3 訓練邏輯

  1. 加載mnist數據集為矩陣,分別有:
  • 訓練集圖像:50000 x 784
  • 訓練集標簽:50000 x 1
  • 測試集圖像:10000 x 784
  • 測試集標簽:10000 x 1

\2. 預處理數據

    • 將訓練集圖像轉換為浮點數,并做歸一化
      • 將訓練集標簽轉換為onehot熱獨編碼,變為50000 x 10
      • 將測試集圖像轉換為浮點數,并做歸一化
      • 將測試集標簽轉換為onehot熱獨編碼,變為10000 x 10

\3. 初始化部分

    • 初始化超參數,隱藏層數量定為1024,迭代次數10輪,動量0.9,批次大小256

      • 定義4個權重,分別是

        • 輸入映射到隱層(input_to_hidden):784 x 1024
          • 隱層偏置(hidden_bias):1 x 1024
          • 隱層到輸出層(hidden_to_output):1024 x 10
          • 輸出層偏置(output_bias):1 x 10
      • 初始化權重,使用凱明初始化fan_in + fan_out,偏置初始化為0

\4. 前向部分 - forward

    • 從訓練集中,隨機選擇batch個樣本記為x(batch x 784)。選擇對應的onehot標簽記為y(batch x 10)

      • 以x乘以映射矩陣(input_to_hidden),然后加上隱層偏置,再對結果做激活。作為隱層輸出,這里采用relu函數為激活

        • hidden_act = (x @ input_to_hidden + hidden_bias).relu()
      • 以hidden_act乘以映射矩陣(hidden_to_output),然后加上輸出層偏置,再對結果做激活。作為輸出層的輸出值。這里采用sigmoid函數做激活

        • probability = (hidden_act @ hidden_to_output + output_bias).sigmoid()
      • 使用probability和y計算交叉熵損失,并打印損失

\5. 反向部分 - backward

    • 計算loss對所有權重的梯度,例如先計算對括號內的導數,然后鏈式求導往前遞推直至所有權重梯度計算出來,這里利用矩陣求導
      • 對所有權重,和其梯度值,執行SGDMomentum算法更新權重。該算法相比前面講的增加了動量因素。稍微公式不一樣

\6. 循環迭代,直至迭代次數滿足定義次數后結束并儲存模型

PPT課件下載

點擊下載

原稿地址

徹底理解,BP反向傳播算法,矩陣思維你更好懂 | 手寫AI

視頻講解

崔更,規劃中,B站主頁地址:https://space.bilibili.com/1413433465/

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

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

相關文章

h5頁面禁止復制_H5移動端頁面禁止復制技巧

前言:業務需要,需要對整個頁面禁止彈出復制菜單。在禁止的頁面中加入以下css樣式定義* {-webkit-touch-callout:none;/*系統默認菜單被禁用*/-webkit-user-select:none;/*webkit瀏覽器*/-khtml-user-select:none;/*早起瀏覽器*/-moz-user-select:none;/*…

梯度下降法和牛頓法計算開根號

梯度下降法和牛頓法計算開根號 本文將介紹如何不調包,只能使用加減乘除法實現對根號x的求解。主要介紹梯度下降和牛頓法者兩種方法,并給出 C 實現。 梯度下降法 思路/步驟 轉化問題,將 x\sqrt{x}x? 的求解轉化為最小化目標函數&#xff…

匯博工業機器人碼垛機怎么寫_全自動碼垛機器人在企業生產中的地位越來越重要...

全自動碼垛機器人在企業生產中的地位越來越重要在智能化的各種全自動生產線中,全自動碼垛機器人成了全自動生產線的重要機械設備,在各種生產中發揮著不可忽視的作用。全自動碼垛機器人主要用于生產線上的包裝過程中,不僅能夠提高企業的生產率…

kmeans手寫實現與sklearn接口

kmeans手寫實現與sklearn接口 kmeans簡介 K 均值聚類是最基礎的一種聚類方法。它是一種迭代求解的聚類分析算法。 kmeans的迭代步驟 給各個簇中心 μ1,…,μc\mu_1,\dots,\mu_cμ1?,…,μc? 以適當的初值; 更新樣本 x1,…,xnx_1,\dots,x_nx1?,…,xn? 對應的…

小說中場景的功能_《流浪地球》:從小說到電影

2019年春節賀歲檔冒出一匹黑馬:國產科幻片《流浪地球》大年初一上映后口碑、票房雙豐收:截至9日下午,票房已破15億,并獲得9.2的高評分。著名導演詹姆斯卡梅隆通過社交媒體對我國春節期間上映的科幻影片《流浪地球》發出的祝愿&…

線性回歸與邏輯回歸及其實現

線性回歸與邏輯回歸及其實現 回歸與分類 預測值定性分析,即離散變量預測時,稱之為分類;預測值定量分析,即連續變量預測時,稱之為回歸。 如預測一張圖片是貓還是狗,是分類問題;預測明年的房價…

hbase 頁面訪問_HBase

HBase 特點 海量存儲 Hbase 適合存儲 PB 級別的海量數據,在 PB 級別的數據以及采用廉價 PC 存儲的情況下,能在幾十到百毫秒內返回數據。這與 Hbase 的極易擴展性息息相關。正式因為 Hbase 良好的擴展性,才為海量數據的存儲提供了便利。 2&…

深入理解L1、L2正則化

深入理解L1、L2正則化 轉自:【面試看這篇就夠了】L1、L2正則化理解 一、概述 正則化(Regularization)是機器學習中一種常用的技術,其主要目的是控制模型復雜度,減小過擬合。正則化技術已經成為模型訓練中的常用技術&a…

rk3128屏幕占空比參數設置_瑞芯微RK3128芯片怎么樣 性能全面解讀

最近,筆者聽說一款搭載瑞芯微RK3128芯片方案的盒子問市了,打聽了一下才知道還真有其事,這款上市的RK3128盒子叫做開博爾M1,報價229元,這個價位在如今的四核網絡機頂盒市場可謂是不多見,但是這款芯片的性能怎…

機器學習中的概率模型

機器學習中的概率模型 轉自:https://zhuanlan.zhihu.com/p/164551678 機器學習中的概率模型 概率論,包括它的延伸-信息論,以及隨機過程,在機器學習中有重要的作用。它們被廣泛用于建立預測函數,目標函數,以…

訪問云服務器儲存的mp4_訪問云服務器儲存的mp4

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":6,"count":6}]},"card":[{"des":"云服務器 ECS(Elastic Compute Service)是一…

先驗、后驗、似然

先驗、后驗、似然 先驗分布、后驗分布和似然函數 本節轉自:先驗分布、后驗分布、似然估計這幾個概念是什么意思,它們之間的關系是什么? 通俗解釋 先驗分布:根據一般的經驗認為隨機變量應該滿足的分布。先驗分布是你瞎猜參數服從啥…

max std value 宏_Rust Macro/宏 新手指南

Rust語言最強大的一個特點就是可以創建和利用宏/Macro。不過創建 Rust宏看起來挺復雜,常常令剛接觸Rust的開發者心生畏懼。這片文章 的目的就是幫助你理解Rust Macro的基本運作原理,學習如何創建自己的 Rust宏。相關鏈接:在線學編程 - 匯智網…

高斯分布及其極大似然估計

高斯分布及其極大似然估計 高斯分布 一維高斯分布 一維高斯分布的概率密度函數為: N(μ,σ2)12πσexp?(?(x?μ)22σ2)N(\mu,\sigma^2)\frac{1}{\sqrt{2\pi}\sigma}\exp(-\frac{(x-\mu)^2}{2\sigma^2}) N(μ,σ2)2π?σ1?exp(?2σ2(x?μ)2?) 多維高斯分布…

農林資金 大數據審計案例_大數據審計:現狀與發展

大數據審計:現狀與發展【摘要】傳統手工環境下,審計人員常用的審計方法包括檢查法、觀察法、重新計算法、外部調查法、分析法、鑒定法等。隨著信息技術的發展,被審計單位的運行越來越依賴于信息化環境。信息化環境下審計工作發生了巨大的變化…

商標45類分類表明細表_2019版注冊商標分類表,商標注冊45類范圍明細

注冊商標的時候都是要確定具體的產品或服務的,目前我國商標分類是用《類似商品和服務區分表–基于尼斯分類第十一版》2019年版這本分類書。這本分類表也是全球通用的分類表,商標分類總共有45個類別,1-34類是產品類、35-45類是服務類。這45個大…

高維高斯分布基礎

高維高斯分布基礎 多位高斯分布的幾何理解 多維高斯分布表達式為: p(x∣μ,Σ)1(2π)p/2∣Σ∣1/2e?12(x?μ)TΣ?1(x?μ)p(x|\mu,\Sigma)\frac{1}{(2\pi)^{p/2}|\Sigma|^{1/2}}e^{-\frac{1}{2}(x-\mu)^{T}\Sigma^{-1}(x-\mu)} p(x∣μ,Σ)(2π)p/2∣Σ∣1/21?…

angularjs sill 創建項目_開源項目——博客項目MyBlogs.Core,基于.NET 5

個人博客站項目源碼,高性能低占用的博客系統,這也許是我個人目前寫過的性能最高的web項目了 。目前日均處理請求數80-120w次,同時在線活躍用戶數30-100人,數據量累計已達到100多萬條,數據庫Redis網站主程序同時運行在一…

懷舊服推薦配置_【懷舊服】狂暴戰P4畢業裝備推薦

在懷舊服開啟P4階段之后,狂暴戰玩家的輸出也得到了進一步的提升。當然,狂暴戰想要打出足夠的傷害離不開對應的裝備,現在就給大家介紹下狂暴戰P4階段的BIS裝備。散件裝備狂暴戰在這一階段依舊有非常不錯的散件裝備,個人建議玩家入手…

高斯混合模型GMM及EM迭代求解算法(含代碼實現)

高斯混合模型GMM及EM迭代求解算法(含代碼實現) 高斯分布與高斯混合模型 高斯分布 高斯分布大家都很熟悉了,下面是一元高斯分布的概率密度函數(Probability Density Function,PDF): P(x)N(μ,…