深度学习 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)会自动处理这些维度,开发者只需关注整体架构设计。

相关推荐
Mintopia12 分钟前
OpenClaw 对软件行业产生的影响
人工智能
陈广亮1 小时前
构建具有长期记忆的 AI Agent:从设计模式到生产实践
人工智能
会写代码的柯基犬1 小时前
DeepSeek vs Kimi vs Qwen —— AI 生成俄罗斯方块代码效果横评
人工智能·llm
Mintopia1 小时前
OpenClaw 是什么?为什么节后热度如此之高?
人工智能
爱可生开源社区2 小时前
DBA 的未来?八位行业先锋的年度圆桌讨论
人工智能·dba
叁两4 小时前
用opencode打造全自动公众号写作流水线,AI 代笔太香了!
前端·人工智能·agent
前端付豪5 小时前
LangChain记忆:通过Memory记住上次的对话细节
人工智能·python·langchain
strayCat232555 小时前
Clawdbot 源码解读 7: 扩展机制
人工智能·开源
程序员打怪兽5 小时前
详解Visual Transformer (ViT)网络模型
深度学习