- 博客(69)
- 收藏
- 关注
原创 为什么在进行 softmax 之前需要对 attention 进行 scaled(为什么要除以 dk 的平方根),并使用公式推导讲解过
越大,则点积结果的方差越大,点积的数值分布范围就越广。而由于 softmax 对于输入数据特别敏感,如果输入的过大,则容易趋于 one-hot 向量,导致梯度消失,若输入过小,则 softmax 又会趋于平均,信息不明显。,使得注意力集中在很少一部分 token 上,训练不稳定。那么一个自然的做法就是把方差稳定到1,做法是将点积除以。这段话的意思是,假设q 和 k 都是独立随机变量,均值为 0,方差为 1,那么他们点乘后均值为 0,方差为。我对此进行详细解释。
2025-04-19 22:35:46
465
原创 Transformer 计算 attention 的时候为什么选择点乘而不是加法?两者在计算复杂度和效果上有什么区别
Additive Attention 对每对 (q, k) 都要分别计算 tanh(Wq + Wk),不适合并行。注意点:虽然 Additive Attention 对小模型可能略有优势,但。点乘 attention 可以很容易扩展到多头、矩阵化结构。更适合大模型(如 BERT、GPT)中的高维表示。点乘是标准矩阵乘法,适合批量化、GPU 加速。直接对 Q 和 K 做矩阵乘法(内积),尤其是在现代深度学习框架和硬件上。q 是 Query,k 是 Key。虽然表面上复杂度一样,但。(尤其在 GPU 上)
2025-04-18 16:51:54
539
原创 为什么 Transformer 中 Q 和 K 使用不同的权重矩阵来生成,为什么不能使用同一个值进行自身的点乘?
因为 Q 和 K 代表不同的语义,Q 代表查询向量,K 代表值向量,代表不同的语义信息,我们的目的是要对于每一个查询,在众多值向量中找出与其相匹配的值。如果 Q 和 K 是一样的,那就变成了“我拿我自己和我自己比”——相当于做了一个很“自恋”的注意力,没法捕捉跨词之间的依赖关系。是一个“自相关矩阵”,注意力值会变得特别不区分词之间的差异(因为每个词对自己会有非常高的相似度,其他可能都很低)。你会看每个人的关键词,和你的问题匹不匹配,匹配得越好,你就越想听他讲(这就是 attention 权重)。
2025-04-16 22:39:34
788
原创 为什么 Transformer 要使用多头注意力机制?
举个例子,如果要看一幅画,就不能简单地只关注例如颜色,还要关注到结构,风格,纹理等特征。在 Transformer注意力机制中,每个“头”就是一个独立的注意力机制,分别从输入中学习到不同的表示方式。简而言之,多头注意力机制可以让模型从不同的在空间中并行地捕捉到不同的特征关系,从而更全面,更灵活地理解序列中的信息。原始输入 X 先被线性变换成多个不同的 Query、Key、Value。所有头的结果拼接起来,再通过一个线性层整合。
2025-04-16 21:42:14
370
原创 怎么区分 LayerNorm 和 BatchNorm?
LayerNorm 是对每个样本自己的所有特征进行归一化,而 BatchNorm 归一化的是同一特征在多个样本上的值(即:跨 batch,在 batch 维度上计算均值和方差)。
2025-04-14 14:56:37
168
原创 BP神经网络反向传播推导
BP(Backpropagation)神经网络反向传播算法是深度学习中最基础的算法之一,它用于训练前馈神经网络(如MLP)中的权重参数。反向传播核心就是利用链式法则(Chain Rule)逐层计算梯度,然后通过梯度下降不断调整网络参数,直到损失函数收敛。激活函数设为 sigmoid(也可以用 ReLU/tanh)。• 隐藏层(Hidden Layer):激活前为。• 输出层(Output Layer):激活前为。• 输入层(Input Layer):输入。目标是计算每层参数的梯度,用于梯度下降优化。
2025-04-09 12:40:36
400
原创 计算 Feature Map 的size
• 如果 padding = 1,就在每一边加 1 行像素,整个宽度多了 2(左边+右边)。• 因为卷积核要在图像里“完整滑动”,每次卷积都要占据 K 个像素。• 如果 stride = 1,每次移动 1 像素,就能滑更多次;• 如果 stride = 2,每次移动 2 像素,就少滑一半。• 我们从第一个位置就开始滑了,它也算一次卷积,所以。超出边界就不能滑了,所以正好是 3 次,和公式对得上!的卷积核,步幅 S = 1,填充 P = 0。• 如果 padding = 0,就是不加边框。
2025-04-07 23:01:50
703
原创 如何计算卷积的复杂度、卷积层的参数量
这也就是为什么输入图像的的 H 和 W 不能算入参数量,因为它们是输入数据,是送进网络的图像/特征图,它。• 步长 stride = 1,padding 保持尺寸不变(输出还是 64x64)),卷积核大小是k✖️k,则对于每个输入的 channel,(浮点运算次数),指的是模型运行时需要执行多少次。• 输出通道数(输出特征图的深度):64。• 输出特征图大小:224 ✖️ 224。(每次卷积一个输出像素时乘加一次)个卷积核),所以还需要相乘,得到。(Parameters):是。输出通道数(即卷积核个数)
2025-04-06 23:38:59
1845
原创 BN测试和训练时有什么不同, 在测试时怎么使用?
在测试时,数据通常是一次性输入模型,batch size 可能为 1 或者非常小,这会导致当前 batch 的统计量(均值和方差)非常不稳定。:滑动均值和方差通过结合历史数据的统计量,提供了一个更为稳定的全局估计,这有助于在整个训练过程中产生更一致的推理结果。:使用训练中计算得到的滑动均值和滑动方差,而不再使用当前 batch 的均值和方差。:每个 mini-batch 计算新的均值和方差,并且更新滑动均值和滑动方差。会不断计算当前 batch 的均值(mean)和方差(variance)。
2025-04-05 23:14:57
888
原创 BN 层的作用, 为什么有这个作用?
想象你在一个楼梯上训练爬楼,如果每一层的高度都在不断变(有的高有的矮),你会训练得很累;BN 就像把每一层都“规范化”为标准的高度,让你更容易上楼。• 这一步确保即使你归一化了,也不会失去模型拟合能力(BN 不是简单的“压缩”,而是“规范+再建”)。• 对 mini-batch 的每个神经元,减去均值、除以标准差,使输出是均值为 0、方差为 1。——这是深度神经网络中非常重要的一环,它大大改善了网络的训练速度、稳定性和收敛效果。• 导致该层“适应不过来”,训练变慢,甚至梯度消失或爆炸。
2025-04-05 22:28:07
1126
原创 CNN 中感受野/权值共享是什么意思?
• 感受野:就像你眼睛能看到的范围,站得越高,看得越远(越深的神经元,感受野越大)。• 卷积核就像“探测器”(滤镜),它在图上滑来滑去,找某个特征(比如边缘、角点)。,就是看输入图像的一个 3×3 小窗口得出的结果,这个 3×3 就是它的感受野。• 随着卷积层堆叠,感受野会越来越大,因为每一层“看到”的区域更大了。• 如果你用一个 3×3 卷积核去处理图像,那么卷积结果中。• 中间的 3×3 区域 × 同样的这组权重 → 输出像素2。• 左上角的 3×3 区域 × 这组权重 → 输出像素1。
2025-04-05 22:19:19
567
原创 CNN 里面能自然起到防止过拟合的办法
• CNN 中的卷积核只连接输入图像的一小块区域(感受野),而不是像全连接层那样与所有像素相连。天然就具有防止过拟合(overfitting)的作用,不完全依赖额外的正则化手段。• 池化降低了特征图的空间维度,保留了主要特征,减少了对局部噪声的敏感性。• 这减少了参数数量,降低模型复杂度,从而降低了过拟合的风险。模型学的是“狗的眼睛和耳朵”,不是“狗一定在图像左上角”。• 因为卷积的滑动窗口特性,CNN 对于图像的平移不敏感。模型不去学所有细节,只学局部有用的信息,少记死记硬背。
2025-04-05 21:49:10
522
原创 为什么卷积神经网络适用于图像和视频?
我们常听说“卷积神经网络(CNN)擅长图像和视频”,但其实 CNN 的核心本质。特征出现在哪都能被识别(比如猫耳在左上角 or 右下角),可以用 3D 卷积或时序 CNN 来处理。图像中像素之间局部关系强(比如边缘、纹理)用同一组参数提取所有区域特征,减少参数量。卷积核在整张图上滑动。
2025-04-05 21:02:39
377
原创 怎么计算感受野? 怎么增加感受野?
比如你在第5层的一个神经元,其感受野大小是11×11,意思是它对原始输入图像的11×11区域有响应。每次都在原来的基础上加 (k-1)(因为 stride=1,乘积项为1)。• 实际上,靠近中心区域对输出影响最大,边缘很弱 → 称为“有效感受野”;• k_i:第 i 层卷积核的大小(kernel size),考虑了前面所有层的卷积核大小和步长对感受野的“放大”作用。• s_i:第 i 层的步长(stride)上一层的感受野——已经“看”的区域。• R_i:第 i 层的感受野大小。
2025-04-05 20:45:00
1178
原创 如何理解resnet和全连接网络?
ResNet(Residual Network)是深度神经网络中非常重要的一种结构,由何恺明等人提出,广泛应用于图像识别、视频处理、点云、NLP 等领域。:聪明地“猜测误差”,只学习前一层与目标之间的差距(残差),如果什么都不用学,它就学一个恒等映射(identity),不破坏已有信息。:ResNet 学的是“差值” F(x) = H(x) - x,比直接学 H(x) 更容易。ResNet 使得网络可以更深(如 ResNet-152),并且性能更好。,允许输入直接绕过一部分网络,与输出相加。
2025-04-04 14:15:29
551
原创 讲一下resblock的跳跃连接,以及连接前后的shape保持(通过padding保持shape不变)
• kernel_size:卷积核的大小(例如 3×3,此时 kernel_size=3),可以让梯度直接从后面的层传播回前面的层,使深度网络更容易优化。• padding:填充的像素数,使得输入和输出尺寸一致。具有 stride=1, padding=1,因此。• stride:步幅,决定滑动窗口移动的步长。解决了深度网络的梯度消失问题。• ReLU(y) 作为最终输出。直接把 x 传递到输出端。ResBlock 的核心是。:输入特征图的高度和宽度。:输出特征图的高度和宽度。,使深度网络更易训练。
2025-04-03 21:32:37
1084
原创 unet结构, 为什么要下采样, 上采样?
• 在解码器中,利用转置卷积或上采样操作将特征图的尺寸恢复到原始的 256 \times 256,同时通过跳跃连接引入高分辨率的特征,以便精确恢复细节。:经过下采样后,图像的空间分辨率降低,特征图的尺寸变小。:上采样在解码器中不仅是恢复分辨率,还通过跳跃连接保留了细节信息,有助于提高分割任务的精确度,特别是在分割边界或小区域时。使得网络能够恢复图像的空间细节和结构,同时将高级特征与低级特征结合,进行精细化的输出。:上采样通过将高层的抽象特征与低层的细节特征结合,帮助模型恢复图像的精细结构。
2025-04-03 21:14:34
1864
原创 ResNet的结构特点以及解决的问题是什么?
ResNet 通过残差模块允许构建非常深的网络,比如 ResNet-152,甚至可以训练更深的网络而不会出现退化问题。,即网络学习的是输入与输出之间的“残差”(而不是直接学习输出),这种方式有助于缓解深度神经网络中的训练问题。ResNet 通过残差连接,使得梯度能够直接通过网络流动,从而减少了训练时的计算时间。ResNet 通过引入。其中 F(x) 是网络的卷积层操作,而 x 是输入,残差连接直接将输入加到输出上,提供了直接的路径。,通过减少计算量,使得更深的网络能够高效计算,同时保持了高性能。
2025-04-03 15:31:06
1015
原创 Max Pooling 如何传递梯度(反向传播)?
过程中,Max Pooling 层的梯度传递方式与全连接层、卷积层不同。由于 Max Pooling 是一种。这样,Max Pooling 在反向传播时不会破坏梯度流,同时保留关键特征信息。从一个 2 \times 2 区域中选取最大值。,它不会像全连接层或卷积层那样进行权重更新,而是。,它获得全部梯度,其余位置的梯度设为 0。• 反向传播时,我们只需要把梯度传递到。,它不会有权重更新,只负责梯度传递。,其余位置的梯度设为 0。,其他位置的梯度设为 0。,用于反向传播恢复梯度。
2025-04-03 15:00:30
442
原创 Dropout 是什么
(每个值服从 Bernoulli(p) 分布,即以概率 p 取 1,以 1-p 取 0)。,但为了保证激活值的一致性,所有神经元的输出要乘以 p(或在训练时放大 1/p)。:每次迭代都会随机选择不同的子集进行训练,类似于集成学习。,通常 p ∈ [0.5, 1])保留每个神经元,:强制模型学习更鲁棒的特征,避免过拟合。进行学习,降低对个别特征的依赖,,因为每次训练都使用不同的子网络。,可能会丢弃过多信息,导致欠拟合。,让模型不依赖某些特定神经元,• h 是神经元的原始激活值,随机丢弃神经元,防止过拟合。
2025-04-03 14:54:08
1413
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
1