深度学习 w b

在深度学习中,权重 w偏置 b 是神经网络的核心参数,它们的形态(shape)取决于网络结构和数据维度。以下是关于 w 和 b 的详细解析:

1. 数学表示与物理意义

  • 权重 w: 连接神经元之间的强度,决定输入信号的重要性。

    • 数学上是一个 矩阵,用于线性变换(如 \(y = wx + b\))。
    • 训练过程中通过反向传播自动学习得到。
  • 偏置 b: 调整神经元激活函数的阈值,增加模型的灵活性。

    • 数学上是一个 向量,每个神经元对应一个偏置值。

2. 不同层的 w 和 b 形态

假设:

  • 输入特征维度为 \(n_{\text{in}}\)
  • 输出特征维度为 \(n_{\text{out}}\)
  • 批量大小为 m
全连接层(Dense Layer)
  • 权重 w:形状为 \((n_{\text{in}}, n_{\text{out}})\)
  • 偏置 b:形状为 \((n_{\text{out}},)\)
  • 计算示例: 输入 x 形状为 \((m, n_{\text{in}})\),则输出 \(y = xw + b\),形状为 \((m, n_{\text{out}})\)。
卷积层(Convolutional Layer)
  • 权重 w :形状为 \((k, k, c_{\text{in}}, c_{\text{out}})\)
    • k:卷积核大小
    • \(c_{\text{in}}\):输入通道数
    • \(c_{\text{out}}\):输出通道数
  • 偏置 b:形状为 \((c_{\text{out}},)\)
  • 每个卷积核共享同一组 w 和 b
循环层(RNN/LSTM)
  • 权重 w:通常分为多个矩阵(如输入门、遗忘门等)。
  • 偏置 b:每个门对应一个向量。
  • 形态示例: LSTM 的隐藏状态维度为 h,则每个门的权重矩阵形状为 \((h, h)\) 或 \((n_{\text{in}}, h)\)。

3. 直观理解:以简单网络为例

假设一个 3 层神经网络:

  • 输入层:2 个神经元
  • 隐藏层:3 个神经元
  • 输出层:1 个神经元
第一层(输入→隐藏)
  • 权重 \(w_1\) : 形状为 \((2, 3)\),即:

    python

    运行

    复制代码
    w1 = [
      [w11, w12, w13],  # 连接输入层第1个神经元到隐藏层
      [w21, w22, w23]   # 连接输入层第2个神经元到隐藏层
    ]
  • 偏置 \(b_1\) : 形状为 \((3,)\),即:

    python

    运行

    复制代码
    b1 = [b1, b2, b3]  # 每个隐藏层神经元对应一个偏置
第二层(隐藏→输出)
  • 权重 \(w_2\) : 形状为 \((3, 1)\),即:

    python

    运行

    复制代码
    w2 = [
      [w1],  # 连接隐藏层第1个神经元到输出层
      [w2],  # 连接隐藏层第2个神经元到输出层
      [w3]   # 连接隐藏层第3个神经元到输出层
    ]
  • 偏置 \(b_2\) : 形状为 \((1,)\),即:

    python

    运行

    复制代码
    b2 = [b]  # 输出层神经元的偏置

4. 在代码中的表示

以 PyTorch 为例,定义一个简单的全连接层:

python

运行

复制代码
import torch.nn as nn

# 输入维度=2,输出维度=3
fc_layer = nn.Linear(in_features=2, out_features=3)

# 权重和偏置的形态
print(fc_layer.weight.shape)  # 输出: torch.Size([3, 2]) 即 (n_out, n_in)
print(fc_layer.bias.shape)    # 输出: torch.Size([3]) 即 (n_out,)

5. 初始化与训练后的状态

  • 初始化时:w 和 b 通常随机初始化(如高斯分布、均匀分布)。

    python

    运行

    复制代码
    # PyTorch默认初始化方式示例
    nn.init.xavier_uniform_(fc_layer.weight)  # Xavier初始化权重
    nn.init.zeros_(fc_layer.bias)             # 偏置初始化为0
  • 训练后:w 和 b 的值通过反向传播更新,最终收敛到能最小化损失函数的值。

6. 为什么需要偏置 b

  • 增加模型灵活性: 若无偏置,线性变换 \(y = wx\) 始终过原点,无法表示偏移。 偏置允许模型学习 \(y = wx + b\) 这样的更一般的线性关系。

  • 示例: 若目标函数为 \(y = 2x + 5\),则 \(w = 2\),\(b = 5\)。

总结

  • 权重 w

    • 矩阵,形状为 \((n_{\text{in}}, n_{\text{out}})\)
    • 控制输入与输出之间的映射关系
  • 偏置 b

    • 向量,形状为 \((n_{\text{out}},)\)
    • 调整神经元的激活阈值

理解 w 和 b 的形态对设计网络架构和调试训练过程至关重要。在实践中,现代深度学习框架(如 PyTorch、TensorFlow)会自动处理这些维度,开发者只需关注整体架构设计。

相关推荐
阿正的梦工坊1 天前
Megatron中--train-iters和--max_epochs两个参数介绍
人工智能·深度学习·自然语言处理
人工智能AI技术1 天前
【C#程序员入门AI】向量数据库入门:C#集成Chroma/Pinecone,实现AI知识库检索(RAG基础)
人工智能·c#
jl48638211 天前
打造医疗设备的“可靠视窗”:医用控温仪专用屏从抗菌设计到EMC兼容的全链路解析
大数据·运维·人工智能·物联网·人机交互
kiro_10231 天前
BGRtoNV12与NV12toBGR互转函数
人工智能·opencv·计算机视觉
码农三叔1 天前
(9-1)电源管理与能源系统:电池选择与安全
人工智能·嵌入式硬件·安全·机器人·能源·人形机器人
司沐_Simuoss1 天前
Text to SQL系统的千层套路~
数据库·人工智能·sql·语言模型·系统架构
北京阿法龙科技有限公司1 天前
工业场景下AR+AI图像识别:精准选型赋能运维与质检
运维·人工智能·ar
哥布林学者1 天前
吴恩达深度学习课程五:自然语言处理 第三周:序列模型与注意力机制(四)语音识别和触发字检测
深度学习·ai
才兄说1 天前
机器人租售怎么嵌?按流程节点
人工智能
logic_51 天前
关于VIT为啥可以用卷积代替第一层嵌入层
人工智能·神经网络·cnn