一、深度學習——神經網絡

一、神經網絡

1.神經網絡

  • 定義:人工神經網絡(Artificial Neural Network,ANN)也簡稱為神經網絡(NN),是一種模仿生物神經網絡結構和功能的計算模型。人腦可以看作是一個生物神經網絡,由眾多的神經元連接而成。各個神經元傳遞復雜的電信號,樹突接收到輸入信號,然后對信號進行處理,通過軸突輸出信號。

  • 神經網絡中信息只向一個方向移動,即從輸入節點向前移動,通過隱藏節點,再向輸出節點移動。其中基本部分是:

    • 輸入層:即輸入x的那一層
    • 輸出層:即輸出y的那一層
    • 隱藏層:輸入層和輸出層之間都是隱藏層
  • 特點:

    • 同一層神經網絡之間沒有連接
    • 第N層的每個神經元和第N-1層的所有神經元相連,這就是全連接神經網絡(full connected,fc)
    • 第N-1層神經元的輸出就是第N層神經元的輸入
    • 每個連接都有一個權重值(w系數和b系數)

2.激活函數

  • 激活函數用于對每層的輸出數據(加權和數據)進行變換,進而為整個網絡注入了非線性因素。此時,神經網絡就可以擬合各種曲線
    • 沒有引入非線性因素的網絡等價于使用一個線性模型來擬合
    • 通過給網絡輸出增加激活函數,實現引入非線性因素,使得網絡模型可以逼近任意函數,提升網絡對復雜問題的擬合能力

(1)sigmiod函數

  • 公式:f(x)=11+e?xf(x) = \frac{1}{1+e^{-x}}f(x)=1+e?x1?

  • 求導公式:KaTeX parse error: {equation} can be used only in display mode.

  • 缺點:當神經網絡的激活處于0, 1位置時,其梯度幾乎為0,容易導致梯度消失,此時網絡參數將更新極其緩慢,或者無法更新

  • 一般來說,sigmoid網絡在5層之類就會產生梯度消失現象。而且,該激活函數并不是以0為中心,所以在實踐中很少使用這種激活函數,sigmoid函數一般只用于二分類的輸出層

(2)tanh激活函數

  • 公式:f(x)=1?e?2x1+e?2xf(x) = \frac{1-e^{-2x}}{1+e^{-2x}}f(x)=1+e?2x1?e?2x?
  • 求導公式:KaTeX parse error: {equation} can be used only in display mode.
  • 其輸出值域是(-1, 1),值域范圍更大,使之更適合于神經網絡的輸入層和隱藏層
  • 與sigmoid相比,它是以0為中心的,且梯度相對于sigmoid大,使得其收斂速度要比sigmoid快,減少迭代次數,但當輸入值較大時,會導致梯度消失的問題
  • 使用時:可在隱藏層使用tanh函數,在輸出層使用sigmoid函數

(3)ReLU激活函數

  • 是目前使用最多的一種激活函數

  • 公式:f(x)=max(0,x)f(x)=max(0, x)f(x)=max(0,x)

  • 求導公式:KaTeX parse error: {equation} can be used only in display mode.

  • 激活函數將小于0的值映射為0,而大于0的值則保持不變,它更加重視正信號,而忽略負信號,這種激活函數運算更為簡單,能夠提高模型的訓練效率

  • 當x<0時,ReLU導數為0,而當x>0時,則不存在飽和問題。所以,ReLU能夠在x>0時保持梯度不衰減,從而緩解梯度消失問題。然而,隨著訓練的推進,部分輸入會落入小于0的區域,導致對應權重無法更新,這種現象被稱為“神經元死亡”

  • ReLU是目前最常用的激活函數。與sigmoid相比,ReLU的優勢是:采用sigmoid函數,計算量大(指數運算),反向傳播球誤差梯度時,計算量相對大,而采用ReLU激活函數,整個過程的計算量節省很多。sigmoid函數反向傳播時,很容易出現梯度消失的情況,從而無法完成深度網絡的訓練。ReLU會使一部分神經元的輸出為0,這樣就造成了網絡的稀疏性(網絡變得簡單),并且減少了參數的相互依存關系,緩解了過擬合問題的發生

(4)Softmax函數

  • softmax用于多分類過程中,它是二分類函數sigmoid在多分類上的推廣,目的是將多分類的結果以概率形式呈現出來

  • 公式:softmax(zi)=ezi∑jejzsoftmax(z_i)=\frac{e^{z_i}}{\sum_je^z_j}softmax(zi?)=j?ejz?ezi??

    • ziz_izi?:輸出層中每個神經元加權和(logits)
  • Softmax就是將網絡輸出logits通過softmax函數,就映射成為(0,1)的值,而這些值的累和為1,那么我們將它理解成概率,選取概率最大(也就是值對應最大的節點),作為我們的預測目標類別

(5)激活函數的選擇方法

對于隱藏層

  1. 優先選擇ReLU激活函數
  2. 如果ReLU效果不好,那么嘗試其他激活,如Leaky ReLU等
  3. 如果你使用了ReLU,需要注意一下Dead ReLU問題,避免出現大的梯度導致過多的神經元死亡
  4. 少使用sigmoid激活函數,可以嘗試使用tanh激活函數

對于輸出層

  1. 二分類問題選擇sigmoid激活函數
  2. 多分類問題選擇softmax激活函數
  3. 回歸問題選擇identity激活函數(恒等激活)

3.參數初始化

優先選擇kaiming和xavier初始化方式

(1)初始化www

  • 均勻分布初始化:權重參數初始化從區間均勻隨機取值。即在(?1d,1d)(-\frac{1}{\sqrt d}, \frac{1}{\sqrt d})(?d?1?,d?1?)均勻分布中生成當前神經元的權重,其中d為每個神經元的輸入數量
  • 正態分布初始化:隨機初始化從均值為0,標準差是1的高斯分布中取樣,使用一些很小的值對參數W進行初始化

(2)初始化bbb

  • 全0初始化:將神經網絡中的所有權重參數初始化為0
  • 全1初始化:將神經網絡中的所有權重參數初始化為1
  • 固定值初始化:將神經網絡中的所有權重參數初始化為某個固定值

(3)初始化方法改進

  1. kaiming初始化,也叫做HE初始化
    • HE初始化分為正態分布的HE初始化,均勻分布的HE初始化
      • 正態分布的HE初始化:stddev=2fan_instddev = \sqrt{\frac{2}{fan\_in}}stddev=fan_in2??
      • 均勻分布的HE初始化:從[-limit, limit]中的均勻分布中抽取樣本,limit是6fan_in\sqrt{\frac{6}{fan\_in}}fan_in6??
      • fan_infan\_infan_in輸入神經元個數
  2. xavier初始化,也叫做Glorot初始化
    • Glorot初始化分為正態分布的xavier初始化,均勻分布的xavier初始化
      • 正態化的xavier初始化:stddev=2fan_in+fan_outstddev=\sqrt{\frac{2}{fan\_in+fan\_out}}stddev=fan_in+fan_out2??
      • 均勻分布的Xavier初始化:從[-limit, limit]中的均勻分布中抽取樣本,limit是6fan_in+fan_out\sqrt{\frac{6}{fan\_in+fan\_out}}fan_in+fan_out6??
      • fan_infan\_infan_in是輸入神經元個數,fan_outfan\_outfan_out是輸出的神經元個數

4.神經網絡搭建和參數計算

(1)模型搭建

  • 在pytorch中定義深度神經網絡其實就是層堆疊的過程,繼承自nn.Module,實現兩個方法
    • _init\_ 方法中定義網絡中的層結構,主要是全連接層,并進行初始化
    • forward方法,在實例化模型的時候,底層會自動調用該函數。該函數中可以定義學習率,為初始化定義的layer傳入數據等。

(2)網絡參數量的統計方法

  • 統計每一層中的權重w和偏置b的數量
from torchsummary import summary
……
summary(my_modelll, input_size=(3, ), batch_size = 8)for name, para in my_model.named_parameters():print(name)print(para)

5.神經網絡優缺點

  • 優點
    • 精度高,性能優于其他機器學習方法,甚至在某些領域超過了人類
    • 可以近似任意的非線性函數隨之計算機硬件的發展
    • 近年來在學界和業界受到了熱捧,有大量的框架和庫可調
  • 缺點
    • 黑箱,很難解釋模型是怎么工作的
    • 訓練時間長,需要大量的算力
    • 網絡結構復雜,需要調整超參數
    • 小數據集上表現不佳,容易發生過擬合

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

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

相關文章

【牛客算法】 小紅的奇偶抽取

文章目錄 一、題目介紹1.1 題目描述1.2 輸入描述1.3 輸出描述1.4 示例二、解題思路2.1 核心算法設計2.2 性能優化關鍵2.3 算法流程圖三、解法實現3.1 解法一:字符串分離法3.1.1 初級版本分析3.2 解法二:數學逐位構建法(推薦)3.2.1 優化版本分析四、總結與拓展4.1 關鍵優化技…

Maven 繼承:構建高效項目結構的利器

一、引言 Maven 是一個強大的項目管理工具&#xff0c;它通過標準化的項目結構和依賴管理極大地簡化了 Java 項目的開發流程。在 Maven 中&#xff0c;繼承是一種非常有用的功能&#xff0c;它允許我們創建一個父項目&#xff0c;其他子項目可以繼承這個父項目的配置信息&#…

Mysql組合索引的update在多種情況下的間隙鎖的范圍(簡單來說)

簡單來說&#xff0c;當 UPDATE 語句的 WHERE 條件使用了組合索引&#xff0c;并且需要鎖定不存在的“間隙”來防止幻讀時&#xff0c;就會產生間隙鎖。間隙鎖的范圍取決于 WHERE 條件如何利用組合索引&#xff0c;以及數據庫的隔離級別。 我們用圖書館的例子。比如&#xff1a…

什么是Apache Ignite的affinity(親和性)

在 Apache Ignite 中&#xff0c; affinity&#xff08;親和性&#xff09; 是一種用于控制數據分布和查詢性能的重要機制。它允許開發者指定數據如何在集群中的節點之間分布&#xff0c;從而優化數據訪問和查詢效率。以下是關于 affinity 的詳細解釋&#xff1a;數據親和性&a…

youtube圖論

dfs排序lifo & fifo存儲方式鄰接矩陣dijstra處理過的保存/更新&#xff0c;意味著一個節點避免了重復訪問bfs dfs

借助ssh實現web服務的安全驗證

背景 公有云服務器 http 服務 80端口&#xff0c;想做到安全訪問無須HTTPS 客戶端證書方便、快捷、安全 SSH 隧道 本地代理 使用 SSH 隧道將 HTTP 服務“隱藏”在 SSH 之后&#xff1a; # 客戶端建立隧道&#xff08;將本地 8080 轉發到服務器的 80 端口&#xff09; ssh…

狀態機在前端開發中的藝術:從理論到框架級實踐

文章目錄一 狀態機&#xff1a;復雜邏輯的終結者1.1 什么是狀態機&#xff1f;1.2 為何前端需要狀態機&#xff1f;二 狀態機核心概念深度解析2.1 有限狀態機&#xff08;FSM&#xff09;與分層狀態機&#xff08;HSM&#xff09;2.2 狀態機的數學表示三 前端開發中的狀態機實戰…

把word中表格轉成excle文件

把word中表格轉成excle文件 from docx import Document from openpyxl import Workbook from pathlib import Path# 打開 Word 文檔 document Document(./weather_report.docx) tables document.tables# 輸出文件路徑 output_file Path(./weather_report.xlsx)# 如果文件已存…

運維打鐵: 阿里云 ECS 實例的高效運維與管理

文章目錄思維導圖正文內容一、實例基礎管理1. 實例創建2. 實例配置調整3. 實例停止與啟動二、性能監控與優化1. 系統性能指標監控2. 磁盤 I/O 優化3. 網絡優化三、安全防護1. 防火墻設置2. 賬號安全管理3. 數據備份與恢復四、自動化運維1. 腳本自動化2. 使用云助手五、成本優化…

RV1126平臺(Buildroot Linux)+ SunplusIT SPCA2688 USB攝像頭 RTSP推流全流程復盤與問題解決記錄

# RK RV1126平臺&#xff08;Buildroot Linux&#xff09; SunplusIT SPCA2688 USB攝像頭 RTSP推流全流程復盤與問題解決記錄一、平臺與需求- **硬件平臺**&#xff1a;Rockchip RV1126 - **操作系統**&#xff1a;基于Buildroot定制的Linux系統 - **USB攝像頭**&#xff1a;Su…

深入理解Java虛擬機:Java內存區域與內存溢出異常

前言Java虛擬機&#xff08;JVM&#xff09;的自動內存管理是其核心特性之一&#xff0c;它極大地簡化了開發者的工作&#xff0c;減少了內存泄漏和內存溢出的問題。本文將詳細介紹JVM的自動內存管理機制的內存區域與內存溢出異常問題&#xff0c;包括運行時數據區域、對象的創…

位圖入門算法191. 位1的個數

題目鏈接&#xff1a; 191. 位1的個數 - 力扣&#xff08;LeetCode&#xff09; 這道題讓我們找出一個數字中二進制中1的個數&#xff0c;這個題目我們就用1的&來解決&#xff0c;最后一位有0為0&#xff0c;都是1才是1&#xff0c;我們只需要判斷32次即可。 代碼如下&am…

[架構之美]虛擬機Ubuntu密碼重置

[架構之美]虛擬機Ubuntu密碼重置 當您在虛擬機中運行Ubuntu系統時&#xff0c;忘記密碼不再意味著數據丟失&#xff01;本文將詳細介紹可靠的密碼重置方法&#xff0c;幫助您快速恢復系統訪問權限。 一、虛擬機密碼重置原理與準備 1.1 為什么虛擬機重置密碼更容易 在虛擬機環…

kotlin中withContext,async,launch幾種異步的區別

在 Kotlin 協程中&#xff0c;withContext、async 和 launch 是常用的異步/并發操作函數&#xff0c;它們的主要區別在于用途和返回值&#xff1a;1. launch 作用&#xff1a;啟動一個新的協程&#xff0c;用于執行不返回結果的并發任務。使用場景&#xff1a;適合執行沒有返回…

git 報錯fatal: refusing to merge unrelated histories

解決方案在你操作命令后面加--allow-unrelated-histories 例如&#xff1a; git merge master --allow-unrelated-historiesgit pull或者git push報fatal: refusing to merge unrelated histories 同理&#xff1a; git pull origin master --allow-unrelated-histories

Android 13----在framworks層映射一個物理按鍵

基于Android 13.一、映射步驟確定要映射的物理按鍵值在kl文件中增加鍵值對在InputEventLabels.cpp增加AKEYCODE在keycodes.h中定義AKEYCODE值attrs.xml中增加KEYCODEKeyEvent.java中增加KEYCODE在PhoneManagerWindow等相關類中進行攔截處理相關KEYCODE&#xff0c;屬于具體的業…

【Java EE】Mybatis-Plus

1. 開始先進行和以前一樣的項目配置、數據庫連接配置&#xff0c;在這些基礎上&#xff0c;額外引入 Mybatis-Plus 依賴即可。<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-starter</artifactId><vers…

各版本操作系統對.NET支持情況(250707更新)

借助虛擬機和測試機&#xff0c;檢測各版本操作系統對.NET的支持情況。 安裝操作系統后&#xff0c;安裝相應運行時并能夠運行星塵代理或幸運四葉草為通過條件。 測試平臺&#xff1a;VMware Workstation 鏡像來源&#xff1a;MSDN I Tell You 參考&#xff1a; .NET Fram…

5-Kafka-replication(副本機制)概念

&#x1f504; Kafka 副本機制&#xff08;Replication&#xff09; 核心概念概念說明Replica (副本)分區的完整拷貝&#xff0c;分布在不同 BrokerReplication Factor副本總數&#xff08;含 Leader&#xff09;&#xff0c;生產環境建議 ≥3Leader Replica處理所有讀寫請求&a…

langgraph的ReAct應用

一、什么是langgraph的ReActLangGraph 中的 ReAct&#xff08;Reasoning Acting&#xff09;代理是一種結合推理與行動能力的 AI 代理架構&#xff0c;通過動態決策鏈實現復雜任務處理。以下是其核心要點及實踐指南。1、ReAct 代理的核心原理1.1工作流程&#xff1a;ReAct 代理…