淺度解讀-(未完成版)淺層神經網絡-深層神經網絡

在這里插入圖片描述

文章目錄

    • 淺層神經網絡的前向傳播
      • 計算流程
        • 矩陣在運算時形狀的變化
    • 激活函數的作用
      • 為什么要有激活函數
    • 反向傳播
    • 深層神經網絡
      • 參數
      • 超參數
      • 參數初始化
      • ·初始化權重的值選擇

淺層神經網絡的前向傳播

計算流程

線性變換-神經元a1
線性變換-神經元a2
線性變換-神經元a3
線性變換-神經元a4
線性變換
第一層
第二層
輸入特征x
激活函數(z)
sigmoid(z)激活函數
輸入特征x
激活函數(z)
sigmoid(z)激活函數

第一個激活函數是為了把線性變換的各條線變成更便于擬合的,具有非線性特征的線
第二個線性變換是為了把這些具有非線性特征的線擬合成一條線
第二個激活函數是為了把結果限制在0-1之間

與單神經元相比,不同在于每個不同的神經元對相同的輸入有不同權
在這里插入圖片描述
n*m n為隱層神經元個數,m為輸入的特征x的數目

  • 這是W權重的矩陣
輸入的特征xx1x2x3xm
神經元
a1
a2
a3
a4
an

而在單神經元中www僅有一行

矩陣在運算時形狀的變化

n是隱層神經元的個數,m是特征x的數目(一個樣本里有m個x),M是樣本數目n是隱層神經元的個數,m是特征x的數目(一個樣本里有m個x),M是樣本數目n是隱層神經元的個數,m是特征x的數目(一個樣本里有mx),M是樣本數目

  • 前向過程計算:

第一步,各神經元線性代換第一步,各神經元線性代換第一步,各神經元線性代換
z[1]=W[1]x+b[1](形狀:(n,M)=(n,m)?(m,M)+(M,1))z^{[1]} = W^{[1]}x + b^{[1]} (形狀:(n,M) = (n,m) * (m,M) + (M,1))z[1]=W[1]x+b[1](形狀:(n,M)=(n,m)?(m,M)+(M,1))

第二步,對各神經元的代換結果進行激活函數(z)第二步,對各神經元的代換結果進行激活函數(z)第二步,對各神經元的代換結果進行激活函數(z)
a[1]=σ(z[1])(形狀:(n,M))a^{[1]} = \sigma(z^{[1]}) (形狀:(n,M))a[1]=σ(z[1])(形狀:(n,M))

第三步,對各個神經元的激活函數(z)結果進行線性代換第三步,對各個神經元的激活函數(z)結果進行線性代換第三步,對各個神經元的激活函數(z)結果進行線性代換
z[2]=W[2]a[1]+b[2](形狀:(1,M)=(1,n)?(n,M)+(1,M))z^{[2]} = W^{[2]}a^{[1]} + b^{[2]} (形狀:(1,M) = (1,n) * (n,M) + (1,M))z[2]=W[2]a[1]+b[2](形狀:(1,M)=(1,n)?(n,M)+(1,M))

第四步,對匯總的線性代換進行σ(z)第四步,對匯總的線性代換進行\sigma(z)第四步,對匯總的線性代換進行σ(z)
a[2]=σ(z[2])(形狀:(1,M))a^{[2]} = \sigma(z^{[2]}) (形狀:(1,M))a[2]=σ(z[2])(形狀:(1,M))

  • 第一步的結果(n,M),一個樣本占一列
輸入的樣本M1M2M3MM
神經元
a1線性代換的結果
an
  • 第二步的結果(n,M),一個樣本占一列
輸入的樣本M1M2M3MM
神經元
a1σ(線性代換的結果)\sigma(線性代換的結果)σ(線性代換的結果)
an
  • 第三步的結果,一個樣本占一格
輸入的樣本M1M2M3MM
各個神經元的σ(z)\sigma(z)σ(z)結果σ(z)\sigma(z)σ(z)線性代換的結果
  • 第四步的結果,一個樣本占一格
輸入的樣本M1M2M3MM
σ(z)\sigma(z)σ(z)線性代換的結果σ(第三步線性代換)\sigma(第三步線性代換)σ(第三步線性代換)線性代換的結果,最終的預測概率

激活函數的作用

就是非線性變換

為什么要有激活函數

線性變換1-神經元a1
線性變換1-神經元a2
線性變換1-神經元a3
線性變換1-神經元a4
線性變換2
輸入特征x
激活函數(z)
sigmoid(z)激活函數

線性變換1 根據權重數據化到各個神經元,
線性變換2 將各個神經元非線性化后的結果線加上偏置后,擬合(加)成一條線,最終根據這條線σ(z)\sigma(z)σ(z)進行預測
隱層中有n神經元,最終就是n條激活函數的線擬合
在這里插入圖片描述

如果不加激活函數,那么神經元就僅僅做線性變換,以AlexNet為例,這個神經網絡就會成為一個線性回歸模型。而一個線性回歸模型對于復雜非線性任務的處理能力是十分有限的。因此,我們需要添加非線性的激活函數,在神經網絡的輸入輸出之間形成非線性映射,讓網絡能力更為強大。

僅線性變化得到的,擬合(加起來)效果不如激活函數得到的非線性線的擬合
在這里插入圖片描述

反向傳播

是單個神經元的反向傳播的疊加

單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
單神經元梯度求法
輸入層
輸入層
輸入層
輸入層
輸入層
最終的那個神經元

深層神經網絡

與淺層神經網絡相同,只是隱層部分由多層神經元構成

在這里插入圖片描述

提取圖片文字內容如下:

參數

參數即是我們在過程中想要模型學習到的信息(模型自己能計算出來的),例如W[l],b[l],而超參數(hyper parameters)即為控制參數的學習的一些信息(需要人經驗判斷)。超參數的改變會導致最終得到的參數W[l],b[l]的改變。

超參數

典型的超參數有:
? 學習速率:a學習速率:a學習速率:a

? 迭代次數:N迭代次數:N迭代次數:N

? 隱藏層的層數:L隱藏層的層數:L隱藏層的層數:L

? 每一層的神經元個數:n[1],n[2],...每一層的神經元個數:n^{[1]},n^{[2]},...每一層的神經元個數:n[1]n[2]...

? 激活函數g(z)的選擇激活函數g(z)的選擇激活函數g(z)的選擇

參數初始化

· 為什么要隨機初始化權重
權重初始化隨機,防止因相同變化始終相同
如果在初始時將兩個隱藏神經元的參數設置為相同的大小,那么兩個隱藏神經元對輸出單元的影響也是相同的,通過反向梯度下降去進行計算的時候,會得到同樣的梯度大小,所以在經過多次迭代后,兩個隱藏層單位仍然是對稱的。無論設置多少個隱藏單元,其最終的影響都是相同的,那么多個隱藏神經元就沒有了意義。

在初始化的時候,W參數要進行隨機初始化,不可以設置為0。b因為不存在上述問題,可以設置為0。

以2個輸入,2個隱藏神經元為例:
W=np?random?randn(2,2)?0.01W=np \cdot random \cdot randn(2,2)*0.01W=np?random?randn(2,2)?0.01
b=np?zeros((2,1))b=np \cdot zeros((2,1))b=np?zeros((2,1))

·初始化權重的值選擇

在tanh中初始權重要小一點,使其在0附近,是激活函數變化敏感的區域
這里將W的值乘以0.01(或者其他的常數值)的原因是為了使得權重W初始化為較小的值,這是因為使用sigmoid函數或者tanh函數作為激活函數時,W比較小,則Z=WX+b所得的值趨近于0,梯度較大,能夠提高算法的更新速度。而如果W設置的太大的話,得到的梯度較小,訓練過程因此會變得很慢。

ReLU和Leaky ReLU作為激活函數時不存在這種問題,因為在大于0的時候,梯度均為1。

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

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

相關文章

【vben3源碼解讀】【useEcharts】【VueUse】詳解useEcharts這個hooks的作用與相關庫的使用(VueUse)

源代碼 import type { EChartsOption } from echarts;import type { Ref } from vue;import type { Nullable } from vben/types;import type EchartsUI from ./echarts-ui.vue;import { computed, nextTick, watch } from vue;import { usePreferences } from vben/preference…

報錯 400 和405解決方案

今天出了好多這個錯誤,Uncaught (in promise) AxiosError {message: Request failed with status code 400 , name: AxiosError , code: ERR_BAD_REQUEST , config: {…}, request: XMLHttpRequest, …}反正就是前后端的參數不匹配,要不就是請求方式不…

Java源碼的前端編譯

Java源碼的前端編譯 歡迎來到我的博客:TWind的博客 我的CSDN::Thanwind-CSDN博客 我的掘金:Thanwinde 的個人主頁 0.前言 當一份Java代碼寫好時,將其進行編譯,運行,并不是簡單把這個Java源碼從頭到尾執行…

JWT6報錯誤 kid empty unable to lookup correct key

JWT5和jwt6在加密和解密和時候還明些區別的 ,在5中,是不需要這個kid的,加解都不需要。但6中是需要這個keyId。 所以在使用的時候要做個區別,參考下面鏈接: ThinkPhp5.0.24 JWT報錯 ‘“kid“ empty, unable to lookup…

高效學習之一篇搞定分布式管理系統Git !

一、Git是什么1.Git是目前世界上最先進的分布式版本管理系統 2.工作原理/流程workspace:工作區 Index/Stage:暫存區 Repository:倉庫區(本地倉庫) Remote:遠程倉庫二、SVN和Git的最主…

AdsPower API 新增查詢環境 Cookies 接口,自動化更進一步!

你是不是有過這樣的經歷?賬號在 AdsPower 環境中已經成功登錄,但你還要花時間手動導出 Cookies、再整理處理,過程繁瑣、效率低下。 現在,我們上線了 API 查詢環境 Cookies 的接口,支持通過 API 直接獲取已登錄環境的 …

Craftium游戲引擎中的客戶端同步機制解析

Craftium游戲引擎中的客戶端同步機制解析 craftium A framework for creating rich, 3D, Minecraft-like single and multi-agent environments for AI research based on Minetest 項目地址: https://gitcode.com/gh_mirrors/cr/craftium 游戲狀態同步的核心問題 在分…

spring cloud負載均衡之FeignBlockingLoadBalancerClient、BlockingLoadBalancerClient

本文主要分析被 FeignClient 注解的接口類請求過程中負載均衡邏輯&#xff0c;流程分析使用的源碼版本信息如下&#xff1a;<spring-boot.version>3.2.1</spring-boot.version><spring-cloud.version>2023.0.0</spring-cloud.version>背景 平常我們代碼…

提示工程(Prompt Engineering)研究進展

提示工程(Prompt Engineering)研究進展 以及它如何幫助大語言模型(LLMs)和視覺語言模型(VLMs)更好地工作。用簡單的話說,就是通過設計巧妙的“提示”(比如指令、例子),讓模型在不修改內部參數的情況下,更精準地完成各種任務,比如回答問題、推理、生成內容等。 文檔…

【ARM】AI開發板A7處理器JTAG實現指南

一、文檔背景盡管開發板原廠提供了相關文檔&#xff0c;但可能缺乏對 A7 處理器 JTAG 功能的詳細說明。這可能會導致以下問題&#xff1a;開發人員難以理解和利用 A7 處理器的基本功能&#xff0c;阻礙調試和開發進度。在進行Uboot移植過程中&#xff0c;無法應用圖形界面的調試…

FPGA(一)Quartus II 13.1及modelsim與modelsim-altera安裝教程及可能遇到的相關問題

零.前言 在學習FPGA課程時&#xff0c;感覺學校機房電腦用起來不是很方便&#xff0c;想著在自己電腦上下載一個Quartus II 來進行 基于 vhdl 語言的FPGA開發。原以為是一件很簡單的事情&#xff0c;沒想到搜了全網文章發現幾乎沒有一個完整且詳細的流程教學安裝&#xff08;也…

軟考(軟件設計師)存儲管理—存儲空間管理,文件共享保護

一、文件存取方法 1. 順序存取&#xff08;Sequential Access&#xff09; 原理&#xff1a;按記錄寫入順序依次訪問特點&#xff1a; 讀操作&#xff1a;讀取當前位置&#xff0c;指針自動前移寫操作&#xff1a;追加到文件末尾 適用場景&#xff1a;磁帶設備、日志文件 #merm…

Thinkphp6中如何將macro方法集成到Request類中

在學習crmeb的時候發現他使用了一個macro的方法用在中間件中&#xff0c;于對macro進行了簡單的研究&#xff0c;發現這個方法可以在中間件中進行定義一些方法&#xff0c;然后讓后面的控制器進行使用。 如&#xff1a; 在授權的中間件中&#xff0c;定義了$request->macro…

Java List 使用詳解:從入門到精通

一、List 基礎概念1.1 什么是 List&#xff1f;List 就像是一個智能書架&#xff1a;可以按順序存放書籍&#xff08;元素&#xff09;每本書都有固定位置&#xff08;索引&#xff09;可以隨時添加、取出或重新排列書籍// 創建一個書架&#xff08;List&#xff09; List<S…

Java零基礎筆記06(數組:一維數組、二維數組)

明確: 程序是用來處理數據的, 因此要掌握數據處理的數據結構數組是編程中常用的數據結構之一&#xff0c;用于存儲一系列相同類型的元素。在Java中&#xff0c;數組是一種對象&#xff0c;可以存儲固定大小的相同類型元素的集合。1.一維數組數組是一個數據容器,可用來存儲一批同…

10倍處理效率提升!阿里云大數據AI平臺發布智能駕駛數據預處理解決方案

阿里云大數據AI平臺重磅發布智能駕駛數據預處理解決方案&#xff0c;可幫助汽車行業客戶實現構建高效、穩定的數據預處理產線流程&#xff0c;數據包處理效率相比自建可提升10倍以上&#xff0c;數據處理推理任務優化提速1倍以上&#xff0c;相同資源產能提升1倍[1]&#xff0c…

SAP HANA內存數據庫解析:特性、優勢與應用場景 | 技術指南

SAP HANA 是一款列式內存關系數據庫&#xff0c;集 OLAP 和 OLTP 操作于一體。相較于同類產品&#xff0c;SAP HANA 需要的磁盤空間更少&#xff0c;并且可擴展性高。SAP HANA 可以部署在本地、公有云或私有云以及混合場景中。該數據庫適用于各種數據類型的高級分析和事務處理。…

Openharmony4.0 rk3566上面rknn的完美調用

一 背景&#xff1a; 我們都知道如果要在android上面使用rknn推理模型需要按照如下的步驟&#xff1a; 詳細請參考筆者的文章&#xff1a;Android11-rk3566平臺上采用NCNN&#xff0c;RKNN框架推理yolo11官方模型的具體步驟以及性能比較-CSDN博客 簡而言之就是 模型轉換&#…

Java多線程知識小結:Synchronized

在Java中&#xff0c;synchronized 關鍵字是實現線程同步的核心工具&#xff0c;用于保證同一時刻只有一個線程可以執行被修飾的代碼塊或方法。以下從基本原理、鎖升級過程、應用場景及優化建議四個維度詳細解析&#xff1a; 一、基本原理 1. 同步的對象 synchronized 鎖的是對…

MTK項目wifi.cfg文件如何配置的Tput和功耗參數

下面的MTK參數主要與無線網絡(Wi-Fi)配置相關,特別是與WMM(Wi-Fi Multimedia)和功率控制相關的設置 WMM相關參數: WmmParamCwMax/WmmParamCwMin:定義競爭窗口的最大/最小值,這里設置為10/4,用于控制信道訪問的退避機制13 WmmParamAifsN:仲裁幀間間隔數,設置為3影響不同…