深度學習——神經網絡1

一、神經網絡

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/news/913571.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/913571.shtml
英文地址,請注明出處:http://en.pswp.cn/news/913571.shtml

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

相關文章

ipmitool 使用簡介(ipmitool sel list ipmitool sensor list)

常用IPMI命令擴展使用ipmitool查看傳感器信息ipmitool是一個用于管理IPMI&#xff08;Intelligent Platform Management Interface&#xff09;設備的命令行工具&#xff0c;可用于監控服務器硬件狀態&#xff0c;包括傳感器數據。運行以下命令可以列出所有傳感器信息&#xff…

小米YU7預售現象深度解析:智能電動汽車的下一個范式革命

小米YU7預售現象深度解析&#xff1a;智能電動汽車的下一個范式革命一、預售數據創造三項行業新紀錄 2025年6月26日的小米YU7發布會&#xff0c;不僅刷新了智能汽車預售速度&#xff0c;更揭示了新時代的消費心理變遷&#xff1a; &#xff08;1&#xff09;訂單爆發速度史無前…

xlog-Android15適配之16KB對齊

背景 前兩天查看Google play控制臺突然發現有告警&#xff0c;一看原來是要求必須盡快適配Android15。 過程 先看了一下網上的資料&#xff0c;Android15適配 發現對我的apk基本上沒有什么影響&#xff0c;除了 動態庫必須16KB對齊這一項。 最簡單查看apk是否16KB對齊的方法…

Crazyflie支持MATLAB/Simulink控制 基于NOKOV度量動捕系統實現

Crazyflie支持MATLABSimulink控制 基于NOKOV度量動捕系統實現 一、動捕軟件VRPN配置 以動捕軟件版本XINGYING 4.2.0.5495為例&#xff0c;其他版本同理。打開動捕軟件&#xff0c;連接上鏡頭。單擊菜單欄下的視圖->數據廣播。在數據廣播中的VRPN流下&#xff0c;將單位下拉…

Windows 系統安裝與使用 Claude Code 全攻略

Claude Code 作為一款高效的 AI 編程輔助工具&#xff0c;深受開發者青睞&#xff0c;但由于其本身不支持 Windows 文件系統&#xff0c;在 Windows 系統上使用需要借助 WSL&#xff08;適用于 Linux 的 Windows 子系統&#xff09;。下面為你詳細介紹在 Windows 系統上安裝和使…

如何用Python編程計算權重?

1. 加權平均中的權重計算&#xff08;已知權重值&#xff09; 如果已知各元素的權重&#xff0c;直接用權重乘以對應值后求和。 # 示例&#xff1a;計算加權平均分&#xff08;權重之和為1&#xff09; scores [80, 90, 70] # 各項分數 weights [0.3, 0.5, 0.2] # 對應權重…

WinUI3入門16:Order自定義排序

初級代碼游戲的專欄介紹與文章目錄-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代碼都將會位于ctfc庫中。已經放入庫中我會指出在庫中的位置。 這些代碼大部分以Linux為目標但部分代碼是純C的&#xff0c;可以在任何平臺上使用。 源碼指引&#xff1a;github源…

Java 面向對象三大特性詳解:封裝、繼承與多態,掌握OOP核心思想

作為一名Java開發工程師&#xff0c;你一定知道&#xff0c;封裝&#xff08;Encapsulation&#xff09;、繼承&#xff08;Inheritance&#xff09;和多態&#xff08;Polymorphism&#xff09; 是面向對象編程&#xff08;Object-Oriented Programming, OOP&#xff09;的三大…

WPS中配置MathType教程

項目場景&#xff1a;在WPS中使用MathType問題描述&#xff1a;MathPage.wll或MathType.dll文件找不到問題原因分析&#xff1a;在C盤wps中的startup中有mathpage.wll,但配置不可用而我的WPS安裝在E盤&#xff0c;并且桌面圖標啟動路徑也是E盤路徑下的WPS路徑&#xff0c;所以不…

基于模板設計模式開發優惠券推送功能以及對過期優惠卷進行定時清理

1.模板設計模式&#xff1a;模板設計模式是一種常見的設計模式&#xff0c;主要作用是對 具體操作的 共有代碼塊進行提取&#xff0c;提升代碼復用性。那么說道代碼復用性&#xff0c;首先想到的是抽象類而不是接口。因為抽象類的本質就是為了代碼復用&#xff0c;抽象類既可以…

對象的finalization機制Test1

Java語言提供了對象終止(finalization)機制來允許開發人員自定義對象被銷毀之前的處理邏輯。當垃圾回收器發現沒有引用指向一個對象時&#xff0c;通常接下來要做的就是垃圾回收&#xff0c;即清除該對象&#xff0c;而finalization機制使得在清除此對象之前&#xff0c;總會先…

RJ45 連接器(水晶頭)的引腳定義

RJ45連接器核心定義 【】物理結構 8個金屬觸點&#xff08;Pin 1至Pin 8&#xff09;的透明塑料插頭&#xff0c;帶塑料卡榫。 引腳編號規則 卡榫朝下&#xff0c;金屬觸點面向自己時&#xff1a; 最左側為 Pin 1 最右側為 Pin 8 順序&#xff1a;Pin 1 → Pin 2 → Pin 3 → P…

小架構step系列08:logback.xml的配置

1 概述 logback.xml配置文件的詳細配置&#xff0c;很多地方都說得比較細&#xff0c;本文主要從幾個重點來看一下原理&#xff0c;了解原理能夠幫助確定哪些應該配置&#xff0c;以及如何配置。 logback.xml是為打印日志服務的&#xff0c;打印的內容一般打印到控制臺(Conso…

STM32中SPI協議詳解

前言 在嵌入式系統中&#xff0c;設備間的數據傳輸協議多種多樣&#xff0c;SPI&#xff08;Serial Peripheral Interface&#xff0c;串行外設接口&#xff09;憑借其高速、全雙工、易用性等特點&#xff0c;成為連接STM32與高速外設&#xff08;如OLED屏、Flash芯片、AD轉換器…

TypeScript 接口全解析:從基礎到高級應用

TypeScript 接口全解析&#xff1a;從基礎到高級應用在 TypeScript 中&#xff0c;接口是定義數據結構和行為規范的強大工具&#xff0c;它能夠顯著提升代碼的可讀性、可維護性和類型安全性。本文將全面講解 TypeScript 接口的相關知識點&#xff0c;從基礎語法到高級特性&…

主存(DRAM)是什么?

主存&#xff08;DRAM&#xff09;是什么&#xff1f; 主存&#xff08;DRAM&#xff09;詳解 主存&#xff08;Main Memory&#xff09; 通常由 DRAM&#xff08;Dynamic Random Access Memory&#xff0c;動態隨機存取存儲器&#xff09; 構成&#xff0c;是計算機系統中用于…

Python 機器學習核心入門與實戰進階 Day 6 - 模型保存與加載(joblib / pickle)

? 今日目標 掌握如何將訓練好的模型持久化保存到文件熟悉兩種主流保存方式&#xff1a;joblib 和 pickle加載模型并應用于新數據預測實現完整的“訓練 → 保存 → 加載 → 預測”流程為后續部署做準備&#xff08;如 Flask、FastAPI&#xff09;&#x1f9f0; 一、模型保存工具…

【SigNoz部署安裝】Ubuntu環境部署SigNoz:Docker容器化監控的全流程指南

文章目錄前言1.關于SigNoz2.本地部署SigNoz3.SigNoz簡單使用4. 安裝內網穿透5.配置SigNoz公網地址6. 配置固定公網地址前言 在分布式架構主導的現代運維體系中&#xff0c;系統性能監控正面臨范式變革的關鍵轉折。當微服務架構遭遇服務雪崩、無服務器架構出現冷啟動延遲等復雜…

NV298NV312美光固態閃存NW639NW640

美光固態閃存技術全景解析&#xff1a;從NV298到NW640的深度探索近年來&#xff0c;美光科技憑借其在3D NAND閃存技術上的持續突破&#xff0c;推出了多款備受市場關注的固態硬盤產品。本文將從技術評測、產品對比、市場趨勢、用戶反饋及應用場景等多個維度&#xff0c;深入剖析…

2025.07.04【服務器】|使用萬兆網卡提升服務器間互聯速度,實現快速數據傳輸

文章目錄1. **萬兆網卡概述**2. **為什么選擇萬兆網卡**3. **萬兆網卡配置與安裝**3.1 **安裝網卡**3.2 **安裝驅動程序**3.3 **檢查網卡狀態**4. **配置網絡接口**4.1 **Linux 系統配置**4.2 **Windows 系統配置**5. **優化性能**5.1 **使用多線程傳輸**5.2 **開啟 TCP/UDP 窗…