0%

博博的客

一些学习记录、题解和偶尔冒出来的想法。

45 Posts
5 Categories
12 Tags

Attention Rollout

论文来源:Quantifying Attention Flow in Transformers

问题提出

一般来说,我们直接用的是raw attention map,也就是取最后一层中 CLS token对各个patch的Attention权重,将它们画成热力图。但是最后一层中的Patch token已经和前面的Transformer层相互交换过信息。因此最后一层的Attention map只能告诉你最终的CLS 从导数第二层的哪些token中读取了信息,理论上不能告诉你最终的CLS中有多少信息最初来源于输入图像的每一个Patch

展开阅读全文 »

训练小技巧

解决训练稳定性

问题 核心问题 主要技巧
学习率为什么不能始终不变 每一步应该走多远? Scheduler、Warmup
Batch 如何影响梯度 当前梯度到底有多可信? Batch Size、梯度噪声
显存不足时如何模拟大 Batch 放不下更多样本怎么办? Gradient Accumulation
如何防止单次更新失控 极端梯度会不会破坏模型? Gradient Clipping
网络在第一次更新前为何已经可能失败 参数起点为什么重要? Initialization、激活函数、残差连接
深层网络中的特征尺度为何会漂移 中间表示如何保持稳定? BatchNorm、LayerNorm、RMSNorm

前面的就不讲了,也许从梯度下降到优化器会联想到。我详细讲讲最后的三个归一化

展开阅读全文 »

从代码到图

抽象语法树

AST强调程序由哪些结构嵌套组成。它不保留所有表面语法细节,例如括号、分号和部分语法糖。

论文中将AST描述为有序树:其中内部节点通常是操作符或语法结构,叶节点通常是常量、标识符等操作数。

展开阅读全文 »

从梯度下降到优化器

从Loss到梯度更新

模型的输出取决于参数,因此参数也间接取决于参数,训练的目标可以表示成:在所有可能的参数组合中,寻找一组能够使Loss尽可能小的参数。

从几何上来说,如果模型只有一个参数w,那么可以将Loss化成一条曲线,训练过程相当于在曲线上寻找最低点。如果模型有两个参数,那么此时Loss类似于一个高低起伏的曲面,参数组合决定我们位于曲面的哪个位置。拓展到高维空间,Loss则是这个高位空间中的一个标量。

展开阅读全文 »

项目标题:

细粒度图像分类挑战

项目背景:

细粒度图像分类的目标,是区分同一超级类别下外观高度相似的多个子类别。与普通图像分类相比,细粒度分类不能只依赖整体轮廓或主体语义,还需要识别花蕊形态、花瓣边缘、局部纹理和颜色分布等细微视觉差异。这些能够区分相似类别的关键局部区域,通常称为判别性区域

展开阅读全文 »

损失函数

Loss的意义

一个模型可以看成一个带参数的函数:

其中 x 是输入,$\theta$ 是模型参数,$\hat{y}$是模型输出, $y$ 是标签也就是说我们希望模型给出的结果。训练的目的就是寻找一组更合适的参数 $\theta$ ,让y_hat更接近 y(argmin)。但模型自己不可能知道自己输出的合不合适,因此我们需要一个量来评价“这个输出到底有多差”。这个量就是Loss

展开阅读全文 »

一文讲通机器学习的距离、相似度和分布散度

在机器学习中,我们经常需要回答一个基础问题:

两个对象到底有多相似,或者多不同?

这里的对象可以是两个特征向量,也可以是两张图片的embedding、两个句子的语义表示,甚至是两个概率分布

展开阅读全文 »

部署joern

当然最快的方法是发送给codex或者cc:help me to install joern on this machine for all users.

joern需要运行在linux系统的JDK19环境下,先安装JDK19

1
wget https://download.java.net/java/GA/jdk19.0.2/fdb695a9d9064ad6b064dc6df578380c/7/GPL/openjdk-19.0.2_linux-x64_bin.tar.gz
展开阅读全文 »