深度學習前置知識

文章目錄

  • 介紹
  • 數據操作
      • 張量
      • 張量的定義
      • 1. **張量的維度(Rank)**
      • 2. **張量的形狀(Shape)**
    • 簡單的數據預處理(插值
  • 線性代數
  • 微積分
  • 概率論
    • 1. 基本概念
      • (1) 隨機試驗與事件
      • (2) 概率公理(Kolmogorov公理)
    • 2. 概率公式
      • (1) 條件概率
      • (2) 全概率公式
      • (3) 貝葉斯定理
    • 3. 隨機變量與分布
      • (1) 隨機變量類型
      • (2) 常見分布
      • (3) 期望與方差
    • 4. 極限定理
      • (1) 大數定律
      • (2) 中心極限定理(CLT)
    • 5. 聯合分布與獨立性
      • (1) 聯合概率
      • (2) 獨立性
      • (3) 協方差與相關系數

課程學習自李牧老師B站的視頻和網站文檔

https://zh-v2.d2l.ai/chapter_preliminaries

介紹

深度學習是機器學習的一種,可以做計算機視覺,可以做自然語言處理

  • 在圖片分類出現了較大的突破
  • 可以物體檢測和分割
  • 可以樣式遷移(類似換背景
  • 可以人臉合成(隨機生成的
  • 可以文字生成圖片
  • 文字生成模型(AI大模型

image-20250715224044732

數據操作

N維數組時機器學習和神經網絡的主要數據結構

  • 0-d:標量(1.0這樣的一個類別
  • 1-d:向量(【1.0,2.7,3.4】這樣的一個特征向量
  • 2-d:矩陣(一個樣本,也就是特征矩陣

image-20250716161237375

訪問元素:

  • 【1:】把第一行拿出來
  • 【::3】每三行一跳

張量

張量的定義

  • 標量:0維張量,例如一個數字(如 5)。
  • 向量:1維張量,例如 [1, 2, 3]。
  • 矩陣:2維張量,例如 [[1, 2], [3, 4]]。
  • 高維張量:3維或更高,例如表示圖像的張量(寬×高×通道)。

1. 張量的維度(Rank)

  • 維度指的是張量的軸(axes)數量,表示張量是幾維的。
  • 例如:
    • 0維:標量(如 5),無軸。
    • 1維:向量(如 [1, 2, 3]),1個軸。
    • 2維:矩陣(如 [[1, 2], [3, 4]]),2個軸。
    • 3維及以上:高維張量(如 [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]),3個軸或更多。
  • 維度也叫階(rank),例如2維張量的階是2。

2. 張量的形狀(Shape)

  • 形狀是一個元組,描述張量在每個軸上的元素數量。

  • 例如:

    • 標量:形狀是 ()(空元組)。
    • 向量 [1, 2, 3]:形狀是 (3,),表示1個軸有3個元素。
    • 矩陣 [[1, 2], [3, 4]]:形狀是 (2, 2),表示2行2列。
    • 3維張量 [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]:形狀是 (2, 2, 2),表示2個矩陣,每個矩陣2行2列。
    import torch# 標量(0維)
    scalar = torch.tensor(5)
    print(scalar.shape)  # 輸出:torch.Size([])# 向量(1維)
    vector = torch.tensor([1, 2, 3])
    print(vector.shape)  # 輸出:torch.Size([3])# 矩陣(2維)
    matrix = torch.tensor([[1, 2], [3, 4]])
    print(matrix.shape)  # 輸出:torch.Size([2, 2])# 3維張量
    tensor_3d = torch.tensor([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
    print(tensor_3d.shape)  # 輸出:torch.Size([2, 2, 2])
    

    x.reshape函數只改變張量的形狀

    tensor.zeros創建全0的張量

    cat函數將張量連結在一起

    image-20250716170406414

    x.sum()函數求和

    兩個張量維度一樣,但形狀不一樣,可以通過廣播機制執行(每個張量自動復制自己比另一個張量低的形狀

image-20250716170709329

python用id標識元素地址,類似指針,在pytorch中有一些原地操作的函數

原地操作直接修改張量的值,而不是返回一個新張量。

在 PyTorch 中,原地操作通常以方法名后加下劃線 _ 標記,例如 .add_()、.mul_()。

轉換為numpy張量

A = X.numpy()
B = torch.tensor(A)
type(A), type(B)
(numpy.ndarray, torch.Tensor)

簡單的數據預處理(插值

假設我們有這樣的一個csv文件

import pandas as pddata = pd.read_csv(data_file)
print(data)NumRooms Alley   Price
0       NaN  Pave  127500
1       2.0   NaN  106000
2       4.0   NaN  178100
3       NaN   NaN  140000

這里我們使用插值的方式處理,假設price可能缺失,我們就把它單獨分出來作為output,其他作為input

input中如果是數值類,則將NaN替換為其他數的平均值

inputs, outputs = data.iloc[:, 0:2], data.iloc[:, 2]
inputs = inputs.fillna(inputs.mean())
print(inputs)NumRooms Alley
0       3.0  Pave
1       2.0   NaN
2       4.0   NaN
3       3.0   NaN

如果是字符類,我們采用數字01來代替存在

inputs = pd.get_dummies(inputs, dummy_na=True)
print(inputs)NumRooms  Alley_Pave  Alley_nan
0       3.0           1          0
1       2.0           0          1
2       4.0           0          1
3       3.0           0          1

線性代數

一些基本的概念

image-20250716221305746

image-20250716221332397

image-20250716221343157

對某一維求和,其實就是沿著選擇的方向做一個壓縮

保持維度:用 keepdim=True 保留求和后的維度,便于后續操作

image-20250716223911595

image-20250716224047151

微積分

在深度學習中,我們“訓練”模型,不斷更新它們,使它們在看到越來越多的數據時變得越來越好。 通常情況下,變得更好意味著最小化一個損失函數(loss function), 即一個衡量“模型有多糟糕”這個問題的分數。 最終,我們真正關心的是生成一個模型,它能夠在從未見過的數據上表現良好。 但“訓練”模型只能將模型與我們實際能看到的數據相擬合。 因此,我們可以將擬合模型的任務分解為兩個關鍵問題:

  • 優化(optimization):用模型擬合觀測數據的過程;
  • 泛化(generalization):數學原理和實踐者的智慧,能夠指導我們生成出有效性超出用于訓練的數據集本身的模型。

image-20250717131902559

image-20250717132251674

偏導數:假如y有多個變量x1,x2,x3等,對其中一個變量求導,其余變量視為常數

梯度:對每個變量求偏導數,結果合成一個向量

image-20250717133710176

image-20250717133913252

image-20250717140422115

fx是一個輸入x1和x2這兩個向量得到一個標量(固定結果,可能數數字)的標量函數,而x可能是向量,求標量函數關于向量的梯度,其實就是說求fx這函數的每個x的偏導數

鏈式法則求導

image-20250717134624935

image-20250717141948255

image-20250717142114585

反向需要把正向存儲的中間結果拿過來用

非標量反向傳播依賴自動微分工具(如 PyTorch 的 .backward()),手動推導需注意維度匹配。

梯度累積可能需要清零(如 optimizer.zero_grad())。

計算圖的概念:

image-20250717141648417

分離計算:假如我們希望將y視為一個常數,可以引入變量u

x.grad.zero_()
y = x * x
u = y.detach()
z = u * xz.sum().backward()
x.grad == u

由于記錄了y的計算結果,我們可以隨后在y上調用反向傳播, 得到y=x*x關于的x的導數,即2*x

x.grad.zero_()
y.sum().backward()
x.grad == 2 * x

使用自動微分的一個好處是: 即使構建函數的計算圖需要通過Python控制流(例如,條件、循環或任意函數調用),我們仍然可以計算得到的變量的梯度。 在下面的代碼中,while循環的迭代次數和if語句的結果都取決于輸入a的值。

def f(a):b = a * 2while b.norm() < 1000:b = b * 2if b.sum() > 0:c = belse:c = 100 * breturn c
a = torch.randn(size=(), requires_grad=True)
d = f(a)
d.backward()

概率論

1. 基本概念

(1) 隨機試驗與事件

  • 樣本空間Ω={所有可能結果}\Omega = \{\text{所有可能結果}\}Ω={所有可能結果}
    例:擲骰子的樣本空間 Ω={1,2,3,4,5,6}\Omega = \{1, 2, 3, 4, 5, 6\}Ω={1,2,3,4,5,6}
  • 事件A?ΩA \subseteq \OmegaA?Ω,如“擲出偶數”對應 A={2,4,6}A = \{2, 4, 6\}A={2,4,6}

(2) 概率公理(Kolmogorov公理)

對任意事件 AAA

  1. 非負性:P(A)≥0P(A) \geq 0P(A)0
  2. 規范性:P(Ω)=1P(\Omega) = 1P(Ω)=1
  3. 可列可加性:若 A1,A2,…A_1, A_2, \dotsA1?,A2?, 互斥,則 P(?iAi)=∑iP(Ai)P\left(\bigcup_{i} A_i\right) = \sum_i P(A_i)P(?i?Ai?)=i?P(Ai?)

2. 概率公式

(1) 條件概率

P(A∣B)=P(A∩B)P(B)(P(B)>0)P(A \mid B) = \frac{P(A \cap B)}{P(B)} \quad (P(B) > 0) P(AB)=P(B)P(AB)?(P(B)>0)

(2) 全概率公式

B1,B2,…,BnB_1, B_2, \dots, B_nB1?,B2?,,Bn?Ω\OmegaΩ 的劃分:
P(A)=∑i=1nP(A∣Bi)P(Bi)P(A) = \sum_{i=1}^n P(A \mid B_i) P(B_i) P(A)=i=1n?P(ABi?)P(Bi?)

(3) 貝葉斯定理

P(Bi∣A)=P(A∣Bi)P(Bi)∑jP(A∣Bj)P(Bj)P(B_i \mid A) = \frac{P(A \mid B_i) P(B_i)}{\sum_j P(A \mid B_j) P(B_j)} P(Bi?A)=j?P(ABj?)P(Bj?)P(ABi?)P(Bi?)?


3. 隨機變量與分布

(1) 隨機變量類型

  • 離散型X∈{x1,x2,…}X \in \{x_1, x_2, \dots\}X{x1?,x2?,}
  • 連續型X∈RX \in \mathbb{R}XR,概率密度函數 f(x)f(x)f(x) 滿足 P(a≤X≤b)=∫abf(x)dxP(a \leq X \leq b) = \int_a^b f(x) dxP(aXb)=ab?f(x)dx

(2) 常見分布

分布名稱概率質量/密度函數參數
伯努利分布P(X=k)=pk(1?p)1?kP(X=k) = p^k (1-p)^{1-k}P(X=k)=pk(1?p)1?kk∈{0,1}k \in \{0,1\}k{0,1}
二項分布P(X=k)=(nk)pk(1?p)n?kP(X=k) = \binom{n}{k} p^k (1-p)^{n-k}P(X=k)=(kn?)pk(1?p)n?kk≤nk \leq nkn
泊松分布P(X=k)=λke?λk!P(X=k) = \frac{\lambda^k e^{-\lambda}}{k!}P(X=k)=k!λke?λ?λ>0\lambda > 0λ>0
正態分布f(x)=1σ2πe?(x?μ)22σ2f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}}f(x)=σ2π?1?e?2σ2(x?μ)2?μ,σ\mu, \sigmaμ,σ

(3) 期望與方差

  • 期望E[X]=∑xP(x)\mathbb{E}[X] = \sum x P(x)E[X]=xP(x)∫xf(x)dx\int x f(x) dxxf(x)dx
  • 方差Var(X)=E[(X?E[X])2]\text{Var}(X) = \mathbb{E}[(X - \mathbb{E}[X])^2]Var(X)=E[(X?E[X])2]

4. 極限定理

(1) 大數定律

1n∑i=1nXi→PE[X]當?n→∞\frac{1}{n} \sum_{i=1}^n X_i \overset{P}{\to} \mathbb{E}[X] \quad \text{當} \ n \to \infty n1?i=1n?Xi?PE[X]?n

(2) 中心極限定理(CLT)

∑i=1nXi?nμσn→dN(0,1)\frac{\sum_{i=1}^n X_i - n\mu}{\sigma \sqrt{n}} \overset{d}{\to} N(0, 1) σn?i=1n?Xi??nμ?dN(0,1)


5. 聯合分布與獨立性

(1) 聯合概率

  • 離散型:P(X=x,Y=y)P(X=x, Y=y)P(X=x,Y=y)
  • 連續型:fX,Y(x,y)f_{X,Y}(x,y)fX,Y?(x,y)

(2) 獨立性

XXXYYY 獨立 ?\iff? P(X,Y)=P(X)P(Y)P(X,Y) = P(X)P(Y)P(X,Y)=P(X)P(Y)fX,Y(x,y)=fX(x)fY(y)f_{X,Y}(x,y) = f_X(x) f_Y(y)fX,Y?(x,y)=fX?(x)fY?(y)

(3) 協方差與相關系數

  • 協方差Cov(X,Y)=E[(X?E[X])(Y?E[Y])]\text{Cov}(X,Y) = \mathbb{E}[(X-\mathbb{E}[X])(Y-\mathbb{E}[Y])]Cov(X,Y)=E[(X?E[X])(Y?E[Y])]
  • 相關系數ρX,Y=Cov(X,Y)σXσY∈[?1,1]\rho_{X,Y} = \frac{\text{Cov}(X,Y)}{\sigma_X \sigma_Y} \in [-1, 1]ρX,Y?=σX?σY?Cov(X,Y)?[?1,1]

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

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

相關文章

XSS學習總結

一.XSS概述 跨站腳本攻擊&#xff08;Cross-Site Scripting&#xff0c;XSS&#xff09;是一種常見的網絡安全漏洞&#xff0c;攻擊者通過在網頁上注入惡意腳本代碼&#xff0c;從而在用戶的瀏覽器上執行惡意操作。這些腳本可以是 JavaScript、HTML 或其他網頁腳本語言。一旦用…

計算機網絡中:傳輸層和網絡層之間是如何配合的

可以把網絡層和傳輸層想成一個“快遞系統”&#xff1a; 網絡層&#xff08;IP 層&#xff09; 郵政系統&#xff1a;只負責把“包裹”&#xff08;IP 數據報&#xff09;從 A 地搬到 B 地&#xff0c;不保證順序、不保證不丟、不保證不重復。傳輸層&#xff08;TCP/UDP 層&am…

【NLP輿情分析】基于python微博輿情分析可視化系統(flask+pandas+echarts) 視頻教程 - 用戶登錄實現

大家好&#xff0c;我是java1234_小鋒老師&#xff0c;最近寫了一套【NLP輿情分析】基于python微博輿情分析可視化系統(flaskpandasecharts)視頻教程&#xff0c;持續更新中&#xff0c;計劃月底更新完&#xff0c;感謝支持。今天講解用戶登錄實現 視頻在線地址&#xff1a; …

Redis主從復制數據同步實現原理詳細介紹

文章目錄一、主從復制的概念二、全量復制&#xff08;完整重同步&#xff09;三、增量復制&#xff08;部分重同步&#xff09;1. 增量復制的核心思想2. 增量復制的實現3. 復制偏移量&#xff08;replicationoffset&#xff09;4. 復制積壓緩沖區&#xff08;replicationbacklo…

docker 軟件bug 誤導他人 筆記

DockerDesktopInstaller.exe install --installation-dirX:\AI-AI\docker\pro\ 由于 Docker官方隨便修改安裝命令&#xff0c;這個在4.4一下是無法使用的&#xff0c;存在誤導他人

Python 進階(六): Word 基本操作

目錄 1. 概述2. 寫入 2.1 標題2.2 段落2.3 表格2.4 圖片2.5 樣式 3. 讀取 1. 概述 Word 是一個十分常用的文字處理工具&#xff0c;通常我們都是手動來操作它&#xff0c;本節我們來看一下如何通過 Python 來操作。 Python 提供了 python-docx 庫&#xff0c;該庫就是為 Wo…

OpenLayers 入門指南【三】:API概要

目錄一、官方文檔二、核心類三、總結一、官方文檔 首頁右側有四個欄目分別是 Docs(文檔):也可以理解為使用指南&#xff0c;涵蓋一下四個模塊 Quick Start(快速入門)&#xff1a;介紹如何快速引入并使用OpenLayers快速構建一個地圖應用FAQ(問答)&#xff1a;介紹一些常見問題的…

JAVA面試寶典 -《Kafka 高吞吐量架構實戰:原理解析與性能優化全攻略》

&#x1f680; Kafka 高吞吐量架構實戰&#xff1a;原理解析與性能優化全攻略 隨著大數據技術在日志收集、埋點監控、訂單流處理等場景的普及&#xff0c;Kafka 已成為流處理架構中的核心組件。它之所以能在海量數據場景下保持高吞吐、低延遲&#xff0c;源于其在架構層面和底…

把sudo搞壞了怎么修復:報錯sudo: /etc/sudo.conf is owned by uid 1000, should be 0

今天部署 NFS 的時候一不小心給/etc目錄下所有的文件都所有者給改了&#xff0c;然后使用sudo的時候就出現了下面的問題&#xff1a; sudo: /etc/sudo.conf is owned by uid 1000, should be 0 sudo: /etc/sudo.conf is owned by uid 1000, should be 0 sudo: /etc/sudoers i…

VUE前端項目開發1.0.1版本

項目包含用戶權限管理、表單提交、數據上傳下載、儀表盤可視化等功能&#xff0c;非常適合新手從零開始學習Vue3前端開發&#xff0c;下述包含所有開發源代碼&#xff0c;敬請食用 廢話少說先上圖: 登陸界面: 儀表盤管理系統: 用戶管理: 對于普通用戶只有儀表盤和個人信息界…

低代碼平臺能否完全取代傳統前端開發

低代碼平臺不能完全取代傳統前端開發&#xff0c;主要原因包括靈活性有限、性能優化能力不足、復雜定制需求難以實現。 低代碼平臺盡管能快速開發出相對標準化的應用&#xff0c;但在處理復雜、個性化的業務需求時&#xff0c;明顯表現出不足。尤其在需要精細化控制UI界面、高性…

Git 中如何比較不同版本之間的差異?常用命令有哪些?

回答重點1&#xff09; git diff <commit1> <commit2> &#xff1a;比較兩個指定的提交之間的差異。2&#xff09; git diff <branch1> <branch2> &#xff1a;比較兩個分支之間的差異。3&#xff09; git diff <path> &#xff1a;比較工作目錄…

MySQL 8.0 OCP 1Z0-908 題目解析(32)

題目125 Choose three. Identify three functions of MySQL Enterprise Monitor. □ A) Analyze query performance. □ B) Start a logical backup. □ C) Determine the availability of monitored MySQL servers. □ D) Centrally manage users. □ E) Start a MySQL Enterp…

Spring處理器和Bean的生命周期

Spring處理器和Bean的生命周期Spring處理器是對Bean對象的的開發可以對BeanDifinition進行操作&#xff0c;例如動態添加、修改BeanDefinition、動態修改Bean。&#xff0c;也可以在Bean對象創建后對Bean對象進行代理增強。注意&#xff1a;對于處理器要又一個正確的認知&#…

Spring Framework源碼解析——BeanFactory

版權聲明 本文原創作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl1. BeanFactory 概述 BeanFactory 是 Spring IoC 容器的最基礎接口&#xff0c;它定義了獲取、配置和管理 Bean 的核心方法。它是 Spring 框架中容器體系的頂層接口之一&#…

C# 計算梯形面積和周長的程序(Program to calculate area and perimeter of Trapezium)

梯形是至少有一對邊平行&#xff0c;其他兩條邊可以不平行的四邊形。平行邊稱為梯形的底&#xff0c;其他兩條邊稱為梯形的腿。平行邊之間的垂直距離稱為梯形的高。公式 &#xff1a; 梯形面積&#xff1a; 0.5 * (a b) * h梯形周長&#xff1a; a b c d例子&#xff1a; 輸…

【計算機考研(408)- 數據結構】數組和特殊矩陣

數組和特殊矩陣 數組 數組的定義 數組是由n(n>1)個相同類型的數據元素構成的有限序列。每個數據元素稱為一個數組元素&#xff0c;每個元素在n個線性關系中的序號稱之為該元素的下標&#xff0c;下標的取值范圍稱為數組的維界。 數組是[[線性表]]的推廣&#xff0c;一維數組…

Agent架構與工作原理:理解智能體的核心機制

Agent架構與工作原理&#xff1a;深入理解智能體的核心機制 AI Agent的核心組成部分 一個完整的AI Agent通常由以下幾個核心模塊組成&#xff1a; 1. 規劃模塊&#xff08;Planning Module&#xff09; 規劃模塊是Agent的"大腦"&#xff0c;負責制定行動策略。它接收…

解決vscode中vue格式化后縮進太小的問題,并去除分號 - 設置Vetur tabSize從2到4,設置prettier取消分號semi

效果圖 左邊原來的&#xff0c;右邊是設置后的效果 實現步驟 安裝插件 Vetur 安裝插件 prettier Vscode > 文件 > 首選項 > 設置 搜索vetur > 找到比較下面的“Vetur > Format > Options: Tab Size” > 設置縮進為4 在附近找到“Vetur > Format: De…

計算機發展史:電子管時代的輝煌與局限

在計算機的發展歷程中&#xff0c;電子管時代猶如一顆璀璨的流星&#xff0c;短暫卻耀眼。它接過了機械計算裝置的接力棒&#xff0c;以電子管為核心元件&#xff0c;開啟了計算機的電子化征程&#xff0c;為后續的計算機發展奠定了堅實的基礎。這段從 20 世紀 40 年代到 50 年…