模型的稀疏性是指在模型中,存在大部分元素为零或接近零,只有少数元素包含重要信息的情况。在机器学习和深度学习中较为常见,例如在自然语言处理(NLP)中,嵌入层将词汇映射到高维空间,每次训练只更新一小部分词向量,导致梯度在大部分维度上为零;推荐系统中的用户-物品交互矩阵等输入数据本身就是稀疏的;使用 ReLU 激活函数也可能导致稀疏梯度,因其会把所有负值输入设置为 0。
在大语言模型中,如论文提出的 Q-Sparse 方法,通过对模型的激活值进行“稀疏化”,即只保留最重要的一部分激活值,其他置为零,可大大减少计算量和内存使用,且几乎不影响模型性能。
对于优化器,如 Adam 优化器,它对于稀疏梯度特别有效,结合了 Momentum 和自适应学习率,能捕捉稀疏信号并避免学习率过快下降,在处理稀疏数据场景如 NLP 和一些稀疏特征的机器学习任务中表现优异,但算力消耗比 SGD 高,默认参数通常能取得不错效果,特殊情况仍需调整超参数。
$$2^{\mathbf{H}(\text{LM})}=2^{\mathbf{H}(P,Q)}=\text{Perplexity(LM)}$$这个其实很好记忆,就是假如一个LM模型的熵是4.7比特,那么就相当于每次生成下个词的时候扔一个24.7=25.99面的骰子。这个25.99就是Perplexity反过来如果一个LM模型的Perplexity是31.1,那么相当于每次生成下个词的时候扔一个31.1面的骰子,这个LM模型的熵是$$\log_2 31.1=4.95$$比特每次扔骰子的面越少,说明这个LM预测越确定性地倾向于某个token,对自然语言做了某些压缩,学到了non-trival的东西注意这里的底可以从2换成e,只要保持跟熵的定义一致即可此外关于前文的Bits per Word(BPW)或者Bits per Character(BPC),我理解其实跟$$\mathbf{H}(P,Q)$$是一回事儿,只是BPW是word-level,BPC是character level。(看到很多文章说的是有额外对序列长度求平均,例如[资料1](https://link.zhihu.com/?target=https%3A//stats.stackexchange.com/questions/211858/how-to-compute-bits-per-character-bpc)和[资料2](https://zhuanlan.zhihu.com/p/424162193),小A不是特别理解,还请理解的小伙伴赐教。)
这篇论文提出了一种名为Q-Sparse的新方法,可以让大语言模型在推理时更加高效。主要做法是对模型的激活值进行"稀疏化",也就是只保留最重要的一部分激活值,其他的置为零。这样可以大大减少计算量和内存使用,而且几乎不影响模型的性能。研究人员还发现了稀疏化模型的一些规律,比如最佳的稀疏程度等。他们在各种场景下测试了这个方法,包括从头训练、继续训练现有模型,以及微调等,都取得了不错的效果。特别是,这个方法可以和其他的优化技术结合,比如低比特量化,有望大大提高大语言模型的效率。[heading2][IMAGDressing-v1:可定制的虚拟试衣](https://imagdressing.gi[content]腾讯的研究虚拟穿衣(Virtual Dressing,VD)。这项任务旨在生成可自由编辑的人物图像,其中服装是固定的,但其他元素(如面部、姿势和背景)可以根据需要进行调整。同时,开发了一个名为"综合匹配度评估指标"(Comprehensive Affinity Metric Index,CAMI)的评价体系,用于衡量生成图像与参考服装之间的一致性。IMAGDressing-v1的一大优势是它可以与其他AI模型扩展插件(如ControlNet和IP-Adapter)无缝集成,进一步提高生成图像的多样性和可控性。
Adam是一种非常流行的优化器,它对于稀疏梯度特别有效,因为它结合了Momentum(帮助累积过去的非零梯度,从而增强稀疏信号)和自适应学习率(对不同频率的特征进行不同程度的更新)。这两个特点使得Adam在处理稀疏梯度时,既能够捕捉到稀疏信号,又能够避免学习率过快下降,从而在许多稀疏数据场景下,比如NLP和一些稀疏特征的机器学习任务中表现优异。稀疏梯度稀疏梯度是指在梯度向量中,大部分元素都是零或接近零,而只有少数元素包含重要的信息。这种情况在机器学习和深度学习中相当常见,特别是在处理自然语言处理(NLP)、推荐系统、以及某些类型的图像处理任务时。在NLP中,经常使用嵌入层将词汇映射到高维空间。在一个大词汇表中,每次训练只更新一小部分词向量,导致梯度在大部分维度上为零。而在许多实际应用中,输入数据本身就是稀疏的,比如推荐系统中的用户-物品交互矩阵。除此之外,使用ReLU激活函数也可能会导致稀疏梯度,因为它会把所有负值的输入设置为0。更新规则:Adam的优缺点:由于每个参数都有独立的学习率,Adam非常适合处理稀疏梯度和非稳定目标,在很多深度学习中都适用。但由于需要计算过去梯度的一阶和二阶矩衰减,算力消耗要比SGD要高。通常Adam在默认参数就能取得不错的效果,但在特殊情况下仍然需要调整超参数。使用方法:tf.keras.optimizers.Adam(learning_rate=0.001)