Large Language Model Evaluation via Matrix Entropy

828 篇文章

已下架不支持订阅

本文探讨了大型语言模型(LLM)的评估,引入矩阵熵作为度量模型数据压缩能力和信息提取效率的新方法。研究显示矩阵熵在模型规模增大时遵循比例律,为理解模型性能提供新视角。同时,矩阵熵也被用于评估多模态LLM的对准质量,揭示了现代模型的良好对齐性。未来研究将继续扩展此方法的应用。

本文是LLM系列文章,针对《Large Language Model Evaluation via Matrix Entropy》的翻译。

摘要

大型语言模型(LLM)已经彻底改变了自然语言处理领域,将其强大的功能扩展到多模态领域。因此,为LLM的评估定义适当和多样化的指标至关重要。
在本文中,我们引入了矩阵熵,这是一种植根于信息论和几何原理的新度量,用于量化LLM中的数据压缩能力。它反映了模型提取相关信息和消除不必要元素的能力,从而深入了解语言模型的内在能力。具体来说,我们展示了它在单模态(语言)和多模态设置中的适用性。对于语言模型,我们的研究结果表明,当模型向上扩展时,表示的矩阵熵遵循比例律类型的约简,这是对传统损失比例律的补充。对于多模态环境,我们还提出了一种基于矩阵熵的评估方法来评估对准质量,我们发现现代大型多模态模型表现出良好的对准性能。我们的代码在https://github.com/waltonfuture/Matrix-Entropy可用。

1 引言

2 相关工作

3 前言

4 方法

5 LLM的实验

6 多模态LLM的实验

7 消融实验

8 结论

我们引入了矩阵熵,这是一种新的内在度量,反映了语言模型压缩”数据中的公共知识的程度

已下架不支持订阅

### Masked Language Model 损失函数详解 在掩码语言模型(MLM)中,损失函数的设计至关重要。该类模型的目标是在给定一部分被遮蔽的词的情况下,尽可能准确地预测这些词。为了实现这一目标,通常采用交叉熵作为损失函数。 对于每一个被遮蔽的位置 \(i\) ,假设词汇表大小为 \(V\) 。那么,在位置 \(i\) 的真实标签记作 \(y_i\) ,而模型对该位置上各个可能单词的概率分布预测则表示为 \(\hat{p}_i = (p_{i,1}, p_{i,2}, ..., p_{i,V})\) 。 因此,针对单个样本而言,其对应的交叉熵损失可以表达如下: \[ L_i = -\log(p_{i,y_i}) \] 当考虑整个批次的数据时,则总的损失可以通过求平均值得到: \[ L = \frac{1}{N}\sum^{N}_{n=1} L_n \] 其中 \(N\) 表示批处理数量。这种形式化的描述有助于理解如何衡量模型预测的质量以及指导参数更新过程[^2]。 值得注意的是,在实际应用过程中,并不是所有的token都会参与计算损失;只有那些真正被mask掉的部分才会贡献于最终的梯度下降优化方向。这不仅提高了训练效率,也使得模型能够更专注于学习上下文之间的关系而不是简单记忆输入序列[^1]。 ```python import torch.nn.functional as F def masked_language_model_loss(logits, labels, mask): """ logits: Tensor of shape [batch_size, seq_len, vocab_size], output from the model. labels: Tensor of shape [batch_size, seq_len], ground truth token ids. mask: Tensor of shape [batch_size, seq_len], binary tensor indicating where tokens are masked. Returns: loss: Scalar value representing average cross entropy loss over all masked positions. """ # Flatten everything to work with standard CrossEntropyLoss function which expects input and target tensors of size (minibatch,C). active_logits = logits.view(-1, logits.size(-1)) active_labels = labels.view(-1) active_mask = mask.view(-1) # Select only those elements that correspond to actual masks. filtered_logits = active_logits[active_mask == 1] filtered_labels = active_labels[active_mask == 1] # Compute mean cross-entropy loss across all non-zero entries in `filtered_labels`. loss = F.cross_entropy(filtered_logits, filtered_labels) return loss ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UnknownBody

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值