当前位置: 首页 > news >正文

(1)深度学习基础知识(八股)——常用名词解释

1. FC

FC全称是Fully Connect全连接层,也被称为Linear Layer线性层。

它的核心是:每个输入神经元 与 每个输出神经元 都要通过权重连接,适用于将输入特征映射到高维或者低维空间。

数学表示

对于一个输入向量x\in \mathbb{R}^{n},FC的计算方式是:

y=Wh+b

  • W\in \mathbb{R}^{m\times n}是权重矩阵(m 是输出维度,n 是输入维度)。
  • b\in \mathbb{R}^{m}是偏置向量。 

 代码表示

示例一:

import torch
import torch.nn as nn# 定义一个全连接层(输入维度是3,输出维度是5)
fc_layer=nn.Linear(in_features=10,out_features=5)# 输入数据(batch_size=3, 特征维度=10)
x = torch.randn(3, 10)  
# 前向计算
output = fc_layer(x)  # 输出形状: (3, 5)

示例二:

# 定义一个FC层(输入512维,输出2048维)
fc = nn.Linear(3, 2)
x = torch.randn(3, 10, 512)  # (batch_size, seq_len, d_model)
fc = nn.Linear(512, 2048)     # 输入维度=512,输出维度=2048
output = fc(x)                # 输出形状: (3, 10, 2048)

注意

nn.Linear 的设计会自动处理高维输入,仅对最后一个维度进行线性变换,而保持其他维度不变。

若输入 x 的形状为 (D1, D2, ..., Dn, in_features),则输出形状为 (D1, D2, ..., Dn, out_features)

2. MLP

MLP全称是MultiLayer Perceptron,多层感知机。

MLP  =  输入层  +  隐藏层(至少一层)+  输出层

每一层包含多个神经元,层与层之间全连接FC(Fully Connected)。

数学表示

3层MLP,也就是单隐藏层的MLP:

h=\sigma (W_1x+b_1),y=W_2h+b_2

输入 → FC → ReLU → FC → 输出

  • x 是输入,h 是隐藏层输出,y 是最终输出。
  • σ 是非线性激活函数。

 代码表示

Class MLP(nn.Module):def __init__(self,input_dim=10,hidden_dim=20,output_dim=5):super().__init__()self.layers=nn.Sequential(nn.Linear(input_dim,hidden_dim), # 第一层FCnn.ReLU(),                       # 激活函数nn.Linear(hidden_dim.output_dim) # 第二层FC)def forward(self,x):return self.layers(x)# 使用MLP
mlp=MLP()
x=torch.randn(3,10)
output=mlp(x)  # (3,5)

3. FFN

FFN全称是FeedForward Network,前馈神经网络,也称为多层感知器MLP(MultiLayer Perceptron)。

FFN 是一个更广义的概念,指 任何没有循环或反馈连接的神经网络,包括MLP。

Transformer中的FFN

在特Transformer中,FFN 特指一种 带有残差连接的两层全连接网络

数学表示

FFN(x)=ReLU(xW_1+b_1)W_2+b_2

  • 第一层:扩展维度(通常放大4倍),使用ReLU激活。
  • 第二层:压缩回原始维度。
  • 残差连接:FFN的输出会与输入相加(x+FFN(x))。

代码表示

import torch
import torch.nn as nn
class FFN(nn.Module):def __init__(self, d_model=512, d_ff=2048, dropout=0.1):super().__init__()# 第一层:扩展维度 (d_model → d_ff)self.fc1 = nn.Linear(d_model, d_ff)# 第二层:压缩回原始维度 (d_ff → d_model)self.fc2 = nn.Linear(d_ff, d_model)# 激活函数和Dropoutself.relu = nn.ReLU()self.dropout = nn.Dropout(dropout)def forward(self, x):# 残差连接保留原始输入residual = x# 第一层 + ReLU + Dropoutx = self.dropout(self.relu(self.fc1(x)))# 第二层x = self.fc2(x)# 残差连接 + Dropout(可选)x = self.dropout(x) + residual  # 原始Transformer论文中此处无Dropoutreturn x
# 使用示例
ffn = FFN(d_model=512, d_ff=2048, dropout=0.1)
x = torch.randn(3, 10, 512)  # (batch_size, seq_len, d_model)
output = ffn(x)

4、MLP 与 MLP的区别

在机器学习和深度学习中,MLP(多层感知机)和 FFN(前馈神经网络)在很大程度上可以视为同义词,都指代了一个具有多个层的前馈神经网络结构。

  • MLP(多层感知机)更偏向于表达 网络结构(多个全连接层)
  • FFN(前馈神经网络)更偏向于表达 数据以前馈的方式流动

MLP 和 FFN 通常指的是只包含全连接层 和激活函数的神经网络结构。这两者都是基本的前馈神经网络类型,没有包含卷积层或其他复杂的结构。


5、Logit

Logit 通常指 神经网络中最后一个隐藏层的输出,经过激活函数之前的值,例如:

  • 对于二分类问题,logit是指网络输出的未经过sigmoid函数处理的数据;
  • 对于多分类问题,logit是指网络输出的未经过softmax函数处理的数据。

数学表示

在分类任务中,假设模型有 C 个类别,Logit 是模型最后一层(通常是全连接层)的输出:

logits=[z_1,z_2,...,z_c]

  • z_i是模型对第 i 个类别的原始预测值(未归一化)。
  • 这些值可以是任意实数(正、负或零),范围不受限制。

Logit 与 概率的关系

多分类任务

 Logit 本身不是概率,但可以通过 Softmax 函数 转换为概率:

p_i=\frac{e^{z_i}}{\sum_{j=1}^{C}e^{z_j}}

Softmax 的作用:

  • 将 Logit 转换为概率分布(所有 pi之和为 1)。
  • 放大较大的 Logit,抑制较小的 Logit(指数运算的影响)。
代码表示
import torch
logits = torch.tensor([2.0, 1.0, 0.1])  # 模型输出的原始分数
probs = torch.softmax(logits, dim=0)     # 转换为概率
print("Logits:", logits)  # tensor([2.0000, 1.0000, 0.1000])
print("Probs:", probs)    # tensor([0.6590, 0.2424, 0.0986])

二分类任务

二分类任务中:Logit 是单个标量 z(不是向量)。通过 Sigmoid 转换为概率:

p=\sigma (z)=\frac{1}{1+e^{-z}}

代码表示
logit = torch.tensor([0.8])  # 模型输出的 Logit
prob = torch.sigmoid(logit)  # 转换为概率
print("Logit:", logit.item())  # 0.8
print("Prob:", prob.item())   # 0.6899

 6. NLL

NLL 全称是Negative Log_Likelihood 负对数似然,是机器学习中常用的损失i函数,主要用于分类任务。

核心思想:

  • 惩罚模型  预测的概率分布  与 真实标签 的 差异。
  • 越小越好(NLL 越小,模型预测越准)。

数学定义

给定:

  • 真实标签(one-hot 或类别索引):y;
  • 模型预测的概率分布(Softmax 输出):p NLL 的计算公式:

NLL=-logp(y)

代码表示

import torch
import torch.nn as nn
# 模型预测的 Logit(未归一化)
logits = torch.tensor([[2.0, 1.0, 0.1]])  # 1个样本,3个类别
# 真实标签(类别索引,假设是第0类)
target = torch.tensor([0])  # 真实类别是第0类
# 计算 Softmax 概率
probs = torch.softmax(logits, dim=1)  # tensor([[0.6590, 0.2424, 0.0986]])
# 计算 NLL
nll_loss = -torch.log(probs[0, target])  # -log(0.6590) ≈ 0.417
print("NLL Loss:", nll_loss.item())  # 输出: 0.417

与交叉熵损失关系

 在分类问题中,NLL 通常与交叉熵损失(Cross-Entropy Loss)等价使用。

7.  感受野

感受野receptive field 是卷积神经网络输出特征图上的像素点在原始图像上所能看到的(映射的)区域的大小,它决定了该像素对输入图像的感知范围(获取信息的范围)。

较小的感受野可以捕捉到更细节的特征,较大的感受野可以捕捉到更全局的特征。

计算公式

http://www.xdnf.cn/news/582049.html

相关文章:

  • # 深入解析BERT自然语言处理框架:原理、结构与应用
  • SSL/TLS证书申请与管理技术指南
  • 【QT】QT6设置.exe文件图标
  • 华为2025年校招笔试手撕真题教程(二)
  • C++ 日志系统实战第五步:日志器的设计
  • 搜维尔科技VR+5G教室建设方案,推动实现教育数字化转型
  • 5G基站选择±10ppm晶振及低相噪技术解析
  • 云原生微服务的前世今生
  • 5G 网络寻呼的信令及 IE 信息分析
  • paddlehub搭建ocr服务
  • 关于vue彻底删除node_modules文件夹
  • JMeter-Websocket接口自动化
  • Python 学习笔记
  • React19 项目开发中antd组件库版本兼容问题解决方案。
  • ubuntu中上传项目至GitHub仓库教程
  • 【数据结构与算法】LeetCode 每日三题
  • LeetCode 3356.零数组变换 II:二分查找 + I的差分数组
  • 精益数据分析(78/126):问题-解决方案画布的实战应用与黏性阶段关键总结
  • 华为云Flexus+DeepSeek征文 | 基于ModelArts Studio 的 DeepSeek API 实现行业深度搜索和分析
  • 平时使用电脑,如何去维护
  • VideoMAE论文笔记
  • 游戏引擎学习第305天:在平台层中使用内存 Arena 的方法与思路
  • 模拟退火算法求解01背包问题:从理论到实践的完整攻略
  • IPv4 地址嵌入 IPv6 的前缀转换方式详解
  • AUTOSAR AP 入门0:AUTOSAR_EXP_PlatformDesign.pdf
  • (高级)高级前端开发者指南:框架运用与综合实战
  • 《量子计算实战》PDF下载
  • 工业 / 农业 / AR 场景怎么选?Stereolabs ZED 双目3D相机型号对比与选型建议
  • 融合蛋白质语言模型和图像修复模型,麻省理工与哈佛联手提出PUPS ,实现单细胞级蛋白质定位
  • 边缘计算正在重新定义物联网的未来——你的设备还在“等云“吗?⚡