AI知识库

53AI知识库

学习大模型的前沿技术与行业应用场景


大模型幻觉无法避免实证分析:Mistral AI-Pixtral12b开源及文本分块Late Chunking优化思路
发布日期:2024-09-12 14:32:57 浏览次数: 1790 来源:老刘说NLP


今天是2024年9月12日,星期四,北京,天气阴

本文来看三个点:

一个是20240911大模型侧相关早报回顾,社区例行活动,对跟进前沿有直接帮助。

另一个是关于文本embedding进展,Late Chunking,很简单的一个trick,用来照顾长文本,但前提是需要有一个长文文本模型,代价较高。

第三个是关于大模型幻觉不可避免的数学验证,这个论证实验很有意义,有理有据,值得大家警醒。

供大家一起参考并思考。

一、20240911大模型侧相关早报回顾

我们来关注昨日大模型进展早报,这是社区主要集中在开源进展、关于文本embedding进展、关于大模型下游训练数据选择、大模型幻觉,以及一些实践项目,文字版见社区。

其中,关于多模态方面进展。

Mistral AI发布模型pixtral-12b-240910:https://github.com/mistralai/mistral-common/releases/tag/v1.4.0,https://huggingface.co/mistral-community/pixtral-12b-240910

基础模型方面,使用Mistral Nemo 12B,视觉适配器 (Vision Adapter) 参数量4亿,使用GeLU(Gaussian Error Linear Unit,用于视觉适配器)和2D RoPE(二维旋转位置编码,用于视觉编码器);

架构方面,采用40层、14,336个隐藏维度大小和32个注意力头,配备了400M的专用视觉编码器,支持1024x1024图像尺寸和 24个隐藏层的高级图像处理。

性能方面,在开源模型的对比上,榜单上效果还不错。

另一个是语音方面开源进展。TTS模型Fish Speech,最近发布1.4版本,使用70万小时的多语言数据进行训练,适用于英语、中文、韩语、日语、法语、德语、阿拉伯语和西班牙语八种语言:https://github.com/fishaudio/fish-speech,huggingface.co/spaces/fishaudio/fish-speech-1

在部署要求上,GPU 内存: 4GB (用于推理), 8GB (用于微调)

微调脚本:https://speech.fish.audio/zh/finetune/

推理脚本:https://speech.fish.audio/zh/inference/#2-token

二、文本embedding-trick:Late Chunking

先来看提出背景,

在传统的文本处理中,为了提高检索效率,文本通常会被分割成更小的块,然后分别进行编码。

但这种方法可能会导致上下文信息的丢失,从而影响嵌入向量的质量。

例如:

Figure 1 展示了在传统的文本块编码方法中,上下文信息丢失的问题。在这个例子中,一个关于柏林的维基百科文章被分割成了几个文本块。可以看到,像“its”和“the city”这样的短语实际上是在指代“Berlin”,而“Berlin”这个词只在第一句话中提到。

这种分割方式会导致以下问题:

  1. 嵌入模型在处理后续文本块时,很难将“its”和“the city”这样的代词或短语与它们所指代的实体“Berlin”联系起来。
  2. 由于缺乏上下文信息,嵌入模型生成的向量表示质量较低,无法准确捕捉到这些短语与“Berlin”之间的关系。
  3. 这会影响文本块的语义表示,进而影响基于这些向量进行的文本检索任务的性能。

最近的工作 《Late Chunking: Contextual Chunk Embeddings Using Long-Context Embedding Models》,https://arxiv.org/abs/2409.04701,https://arxiv.org/html/2409.04701v1,一种名为“late chunking”的新方法,用于改善文本检索系统中的文本块(chunk)嵌入表示。

现在来看实现路径,从基本实现思想上看,

“late chunking”方法的核心思想是利用长文本嵌入模型首先对整个长文本的所有标记(tokens)进行编码,然后在转换器模型之后、平均池化(mean pooling)之前进行文本块的分割。这样,每个文本块的嵌入都能够捕捉到整个文本的上下文信息,从而在各种检索任务中取得了更好的结果,而且不需要额外的训练。

其实现步骤为:


  1. 长文本编码: 使用支持长输入序列的嵌入模型(如jina-embeddings-v2)对整个长文本进行编码。这允许模型捕捉整个文本的上下文信息。

    1. 生成标记向量: 模型为文本中的每个标记生成一个向量表示,这些向量包含了整个文本的信息。

    1. 应用边界线索: 在输入文本的tokenize阶段确定边界线索,这些线索在获取标记级别的嵌入后用于文本块的分割。

    1. 平均池化(Mean Pooling): 在整个文本的标记向量序列上应用平均池化,以生成每个文本块的嵌入。这种池化是在文本块的上下文中进行的,确保每个块的嵌入都考虑了整个文本的信息。

    1. 生成文本块嵌入: 通过在标记向量序列的特定部分应用平均池化,生成每个文本块的嵌入。这些嵌入能够捕捉到整个文本的上下文信息。

    Figure 2 通过对比图示解释了“naive chunking”(简单分块)策略和“late chunking”(晚期分块)策略在文本嵌入过程中的不同之处。

    左侧:Naive Chunking(简单分块)

    • 在这种方法中,文本首先被分割成独立的块(例如,基于句子或固定长度)。
    • 然后,每个文本块独立地通过嵌入模型的转换器(transformer)层进行处理。
    • 每个块生成的嵌入向量是独立的,没有考虑到整个文本的上下文信息。
    • 这种方法的结果是生成了一系列独立同分布的文本块嵌入,每个嵌入只反映了其对应块内的信息,而没有考虑到块之间的上下文关系。

    右侧:Late Chunking(晚期分块)

    • 晚期分块策略首先将整个文本或尽可能多的文本输入到嵌入模型的转换器层。
    • 这会产生一个包含每个标记的向量表示序列,这些向量包含了整个文本的信息。
    • 然后,对这些标记向量序列的每个块应用平均池化(mean pooling),生成每个块的嵌入,这些嵌入考虑了整个文本的上下文。
    • 与简单分块不同,晚期分块创建的每个块嵌入都是“基于”之前的块的,也就是说,每个块的嵌入都考虑了它之前所有块的上下文信息。
    • 这种方法生成的块嵌入集合能够编码更多的上下文信息,因为每个块的嵌入都与整个文本的内容相关联。

    其中的chunk,每个都是之前预先分割好的。所以,整个思路其实也很粗暴。

    三、关于大模型幻觉不可避免的数学验证

    关于大模型幻觉,我们已经讨论了很多,而大家也越来越清醒的认识到,幻觉并不能消除。

    最近的工作 《LLMs Will Always Hallucinate, and We Need to Live With This》,https://arxiv.org/abs/2409.05746,https://arxiv.org/html/2409.05746v1,认为LLM结构固有的局限性导致其生成“幻觉”在数学上是不可避免的,尽管我们可以采取各种策略来尝试减少幻觉,但它们是 LLMs 固有的一部分,永远无法完全消除。

    先看几个观点:

    首先, 幻觉的不可避免性:作者认为,LLMs 中的幻觉不是偶然的错误,而是这些系统的基本特征。幻觉源于 LLMs 的数学和逻辑结构,因此无法通过架构改进、数据集增强或事实检查机制完全消除。

    其次,计算理论和哥德尔不完备性定理:文章利用计算理论和哥德尔的第一不完备性定理来说明 LLMs 在编译训练数据、事实检索、意图分类和文本生成等每个阶段都可能产生幻觉。

    最后,识别和减轻幻觉的策略:识别 LLM 幻觉和减轻幻觉的策略,包括思维链(Chain-of-Thought)提示、自我一致性、不确定性量化和忠实解释生成。

    总结

    本文主要来看三个点:

    一个是20240911大模型侧相关早报回顾,社区例行活动,对跟进前沿有直接帮助。

    另一个是关于文本embedding进展,Late Chunking,很简单的一个trick,用来照顾长文本,但前提是需要有一个长文文本模型,代价较高。

    第三个是关于大模型幻觉不可避免的数学验证,这个论证实验很有意义,有理有据,值得大家警醒。

    跟进前沿,并有更多深度思考,总是有意义的,大家可以持续跟进。



53AI,企业落地应用大模型首选服务商

产品:大模型应用平台+智能体定制开发+落地咨询服务

承诺:先做场景POC验证,看到效果再签署服务协议。零风险落地应用大模型,已交付160+中大型企业

联系我们

售前咨询
186 6662 7370
预约演示
185 8882 0121

微信扫码

与创始人交个朋友

回到顶部

 
扫码咨询