#P14793. [NERC 2025] LLM Training
[NERC 2025] LLM Training
Description
你被给予一个文本数据集。你的任务是训练 LLM(大型语言模型)并找到可能的最小损失。不开玩笑。
一个文本数据集是一个文本数组 。每个文本 是一个词元序列。我们将词元集合 定义为出现在至少一个文本 中的所有词元的集合。此外,对于每个文本 ,存在一个位置集合 。词元 由 LLM 生成当且仅当 ,由用户书写当且仅当 。
让我们将上下文大小为 的 LLM 定义为一个概率模型 ,它根据一个上下文 (一个长度在 到 之间(含)且元素来自 的序列)定义序列下一个词元的概率分布。因此概率模型 是一个庞大的概率表 ,对任意上下文 、 和任意词元 均有定义。条件 和 $\sum\limits_{\text{next} \in T} P_k(\text{next} | w) = 1$ 必须满足。
上下文大小为 的 LLM 的损失函数是为 定义的如下函数:
$$\mathcal{L}_k(P_k) \,\, = \,\, \sum_{i=1}^{n} \,\, \sum_{j\in L_i} \, -\log_2 P_k\!\left( \underbrace{t_i[j]}_{\text{下一个词元}} \ \middle|\ \underbrace{t_i[\max(1,j-k)\,..\,j-1]}_{\text{上下文}} \right)$$这里 是从第 个到第 个词元的子串, 是空字符串。因此,对于每个文本以及每个由 LLM 生成的词元,我们将该词元将被生成的概率的负对数(以 为底)加到损失中,该概率依赖于前 个词元的子串(或者如果前缀长度小于 ,则是整个前缀)。如果概率为零,我们假设负对数为 。该损失函数被称为基于 LLM 生成位置的(以 为底的)交叉熵损失。损失函数值 越小,LLM 越好。
对于每个 ,计算对于某些 —— 上下文大小为 的 LLM —— 可以获得的最小可能损失 。可以证明这个最小值是可达到的且不是无穷大。
Input Format
第一行包含一个整数 () —— 数据集中文本的数量。接下来是文本描述。
第 个文本描述的第一行包含一个整数 () —— 的长度 ()。
下一行包含 个字符串 , , , () —— 文本 的词元。每个词元由 ASCII 码在 到 之间的字符(可打印字符)组成。
下一行包含一个由 个字母 和 组成的字符串 ,它编码了集合 。所有字母为 的位置由 LLM 生成,所有字母为 的位置由用户书写。因此 。保证最后一个词元由 LLM 生成,即 。
保证所有 () 的 之和不超过 。
Output Format
输出 个实数:对于每个 ,输出所有可能的 —— 上下文大小为 的 LLM —— 的最小可能损失 。
如果你的答案的绝对误差或相对误差不超过 ,则将被接受;形式化地说,如果 是你的答案, 是出题人的答案,则应满足:。
4
5
1 + 1 = 2
UUUUL
5
1 + 2 = 3
UUUUL
5
2 + 1 = 3
UUUUL
5
2 + 2 = 4
UUUUL
6.000000000000
6.000000000000
4.000000000000
4.000000000000
0.000000000000
4
4
N E F <EOS>
LLLL
5
N E R C <EOS>
LLLLL
6
N E E R C <EOS>
LLLLLL
5
I C P C <EOS>
LLLLL
55.683674395584
12.490224995673
8.000000000000
8.000000000000
8.000000000000
8.000000000000
1
16
a b a c a b a d b a b d a b a c
ULLULLLLLLULLLLL
22.595941331507
12.464393446710
5.245112497837
2.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
0.000000000000
2
4
WA WA WA AC
LULL
4
AC AC WA AC
LLUL
5.509775004327
4.754887502163
4.000000000000
2.000000000000
Hint
翻译由 DeepSeek V3 完成
京公网安备 11011102002149号