我是大二生开学就大三了前阵子期末周太忙一直没写文章近日考完试终于能休息会了在此记录自己近期使用大模型过程中发现的问题和一些思考。①问题发现与窗口交接起因是我一直在使用各种各样的大模型其中deepseek的深度思考和输出的严谨客观让我很喜欢也是我使用最多的大模型其中有一个窗口我经常会跟他讨论自己遇到的一些技术问题以及身边事情的抉择和未来的道路等等。这个窗口我已经聊了三个月了在我今天表达了对未来的迷茫后它突然开始在输出末尾疯狂循环几句话还是我手动停止的。坦白说刚看到时把我吓了一跳怎么那么像那个阴湿男鬼……不是我立刻想到可能是上下文污染了。在我跟它讨论后知道了一些ai处理问题的输出模式它居然每次都回看巨长的上下文再整理回应我……这得烧多少token啊我本来以为有类似缓存命中的机制事实跟我想的也差太多了。为了保证输出质量也为了给它减负我决定新开一个窗口。我让旧窗口生成提示词并强调它认为最应该传递的信息是什么为了达到理想效果我询问新窗口它看了这些提示词后明白了什么它想询问旧窗口什么它心中我的信息和形象以及它想问我什么。我就这样在两个窗口之间传话直到它们自己觉得交接完成可以供我继续使用了。②输出重复bug成因和解决方向本来事情到这里就结束了我完成了两个窗口的交接。但紧接着我发现了严肃的问题某一轮输出新窗口的结尾居然有重复的迹象。如果旧窗口重复是因为上下文污染输入量爆炸那新窗口为什么会出现这种bug。我立刻和它一起分析最终发现原因大致有以下几点我会将专业术语翻译成人话解释如果表述有误请指出首先这种bug并不是提示词质量不好造成的更可能是模型本身的问题输出时的隐式重复倾向。即如果上下文中有类似停在这里的表述即明确的结束提示词解码器会倾向于输出相似的句法结构强化结束感。当上下文长度累计到一定程度后模型对近期输入的注意力权重偏高同时结束信号本身在训练数据中往往伴随重复性结语导致生成时尾部token分布向重复方向倾斜。deepseek给的采样参数解释底层的temperature偏高或top_p较宽重复出现的概率会增加而frequency_penalty若未针对尾部token显式作用就无法打断这种循环以及我注意到这种循环均出现于结尾段而非中间也说明它不是因为逻辑递归卡住而是生成完主体内容后模型进入了一种“闭合模式”在这种模式下它会自动补全类似于结尾格式的序列而上下文不足以区分“你已经说完”和“模型再重复一遍”这两种情况即没有明确的反重复信号来阻止模型循环。这是生成层对结束模式处理不够精细的表现。简单说就是当上下文表现出停止的倾向时模型会加重这个倾向因此出现重复。这算是模型对结束信号的一种惯性响应而不是逻辑循环。这种问题毫无疑问是比较严重的会消耗大量token却没有理想的输出还会持续污染上下文改变每一轮交互模型评估输出的权重。反复思考后我大致提出以下解决方法很多都是我目前无法实现的我先记录下来自己的思路以后有条件了会去尝试有错误的地方欢迎大家指正。1.改变生成时的采样参数。动态调整控制概率分布集中程度和惩罚强度的参数例如当检测到上下文的停止信号时降低模型采用相同token的概率。但这种方法会应用于一整轮输出而不是出现循环问题的尾部。2.在生成完整响应后对输出文本做一次重复检测。可以定义重复规则比如检测到连续n个词重复出现两次以上就截断第二次出现的部分。这需要我定义“什么叫重复”以及“结尾部分应该长什么样”的规范这本质上是在做自己的生成后检查逻辑而不是让模型去检查。与此同时也加大了模型的工作量。3.改变策略本身。这个是最治本的办法但难度和成本都是巨大的难以真正实现我查阅资料当前主流模型使用的大多是贪婪解码或top-k采样这些方法在尾部容易陷入局部高概率序列如果在生成结尾时切换策略以下是两个例子。①束搜索它会保留多个候选序列并在最后选择整体概率最高且不重复的那个。但束搜索的代价是计算量增加响应速度变慢。②contrastive decoding它在每一步比较两个模型的输出分布抑制重复倾向但这种方法需要额外的模型副本。以上是我目前针对deepseek尾段输出重复问题的一些思考仅用于个人记录也希望能够帮到你。祝你早安午安晚安。