直接在数据的嵌入表示中进行增强,是一种高级的数据增强方法。嵌入是捕捉文本语义的稠密向量表示。这种方法不改变词语本身,而是细微地改变这些意义向量,以创建新的、有用的数据点。这项技术提供了生成多种变体的新途径,这些变体可能难以通过直接文本编辑或简单意译实现。为何要在嵌入空间中增强?在嵌入空间中操作数据有多个优点:语义控制: 它可以对生成数据的语义属性进行更细致的控制。您是在处理“意义”本身,而不仅仅是其表面形式。新颖变体: 它可以产生语义上合理但可能不易通过重新排列词语或使用基于规则的系统来构建的新颖数据点。平滑过渡: 插值等操作可以在不同的语义概念之间创建平滑的过渡,这对于生成分级数据或分析已知示例之间的空间很有价值。增强效果: 用这种方式增强的数据训练模型有时可以带来更有效的模型,因为它们学习处理细微的语义扰动。核心思想是,如果嵌入空间中的两个点彼此接近,则它们在语义上是相似的。通过在这个空间中进行受控移动,我们的目标是找到对应有意义且多样化文本的新点。嵌入空间增强的常用方法我们来看看进行这些“受控移动”的一些常用方法。1. 添加噪声最简单的方法之一是向现有嵌入添加少量随机噪声。想象一下,您有一个句子的嵌入向量 $e$。您可以通过以下方式创建新的嵌入 $e'$:$$e' = e + \epsilon$$这里,$\epsilon$ (epsilon) 是一个小的随机向量,通常从均值为零的高斯分布中抽取。此噪声的幅度是一个重要的超参数。噪声过小: 新的嵌入 $e'$ 将与 $e$ 几乎相同,导致解码后的文本很可能只是非常轻微的意译,甚至与原文相同。噪声过大: 新的嵌入 $e'$ 可能会漂移太远,远离任何有意义的概念,导致解码后文本不连贯或不相关。目标是添加恰到好处的噪声,以创建轻微但有意义的变体。这对于生成轻微的意译或使模型更具适应性以应对输入措辞上的细微变化特别有用。digraph G { rankdir=LR; node [shape=circle, style=filled, color="#adb5bd", fontcolor="#495057"]; edge [color="#495057"]; e [label="e", color="#74c0fc"]; e_prime_low_noise [label="e' (低噪声)", color="#a5d8ff"]; e_prime_high_noise [label="e' (高噪声)", color="#ffc9c9"]; center [label="", shape=point, width=0.01, height=0.01]; e -> center [style=invis]; center -> e_prime_low_noise [dir=none, label=" 小 ε", fontsize=10]; center -> e_prime_high_noise [dir=none, label=" 大 ε", fontsize=10]; {rank=same; e; center;} {rank=same; e_prime_low_noise; e_prime_high_noise;} }一个图表,展示了向嵌入 $e$ 添加噪声。小噪声使 $e'$ 保持接近,而大噪声可能使其远离。2. 插值和外推插值涉及到创建一个新的嵌入,该嵌入位于两个现有嵌入 $e_1$ 和 $e_2$ 之间的路径上。新的嵌入 $e_{new}$ 可以通过加权平均生成:$$e_{new} = \alpha \cdot e_1 + (1 - \alpha) \cdot e_2$$其中 $\alpha$ (alpha) 是一个混合系数,通常介于0和1之间(不包括0和1,以创建新的点)。如果 $\alpha = 0.5$,则 $e_{new}$ 恰好位于 $e_1$ 和 $e_2$ 的中间。$\alpha$ 的值越接近0,则 $e_{new}$ 越接近 $e_2$;值越接近1,则 $e_{new}$ 越接近 $e_1$。这项技术非常适合混合两段文本的语义内容。例如,如果 $e_1$ 代表“The cat is playful”(猫很顽皮),$e_2$ 代表“The dog is energetic”(狗很有活力),那么插值可能产生一个解码后类似于“The pet is lively”(宠物很活泼)的嵌入。外推类似,但使用超出 [0, 1] 范围的 $\alpha$ 值。例如,如果 $\alpha = 1.5$,则 $e_{new}$ 将是 $1.5 \cdot e_1 - 0.5 \cdot e_2$,沿着远离 $e_2$ 的方向,超出 $e_1$。这可以用来增强某些语义属性或分析语义趋势的延续,但它生成连贯性较差或超出分布的样本的风险更高。{"data":[{"x":[1, 5, 3],"y":[1, 3, 2],"mode":"markers+text","type":"scatter","text":["e1","e2","e_new (α=0.5)"],"textposition":"top right","marker":{"color":["#4dabf7","#fa5252","#20c997"],"size":[10,10,12]}},{"x":[1,5],"y":[1,3],"mode":"lines","type":"scatter","line":{"color":"#adb5bd","dash":"dot"}}],"layout":{"xaxis":{"title":"维度 1","range":[0,6],"gridcolor":"#e9ecef"},"yaxis":{"title":"维度 2","range":[0,4],"gridcolor":"#e9ecef"},"showlegend":false, "title":{"text":"e1 和 e2 之间的插值", "font":{"color":"#495057"}}, "paper_bgcolor":"#f8f9fa", "plot_bgcolor":"#f8f9fa", "font":{"color":"#495057"}}}插值创建一个新的嵌入 $e_{new}$,它是 $e_1$ 和 $e_2$ 的语义混合。3. 语义转换(基于类比的增强)这项技术涉及到将一个源自语义关系的“转换向量”应用于新的嵌入。经典的例子是“king - man + woman = queen”类比。找出关系向量: 计算 $v_{relationship} = \text{embedding}(\text{"king"}) - \text{embedding}(\text{"man"}) + \text{embedding}(\text{"woman"})$。这个向量大致捕捉了从“男性君主”到“女性君主”的转换。应用于新嵌入: 要找出“prince”(王子)的女性对应物,您可以计算: $e_{new} = \text{embedding}(\text{"prince"}) + (\text{embedding}(\text{"woman"}) - \text{embedding}(\text{"man"}))$ 或者更一般地,$e_{new} = e_{source} + v_{target_attribute} - v_{source_attribute}$。这允许进行有针对性的语义转变。例如,您可以创建向量来改变情感(例如,从积极到消极)、正式程度,甚至特定的事实属性,如果您的嵌入模型能够很好地捕捉它们。这种方法的成功高度依赖于嵌入的质量,以及期望的语义关系是否在线性嵌入空间中得到线性表示。4. 流形分析虽然上述方法更直接地作用于现有嵌入,但更复杂的方法旨在理解嵌入空间中数据的潜在流形或结构。受SMOTE(合成少数过采样技术)启发的方法可以进行调整,该技术最初用于表格数据。SMOTE的工作原理是选择一个少数类别实例,找到其k个最近邻,然后沿着连接实例与其部分或全部邻居的线段创建合成实例。 另一种方法是使用自动编码器。自动编码器学习将数据压缩到低维潜在空间(即嵌入),然后重建数据。通过从这个学习到的潜在空间中采样点,特别是从已知数据点之间的区域采样,然后对它们进行解码,您可以生成符合自动编码器学习到的潜在数据分布的新颖合成数据。如果自动编码器很好地捕捉了数据流形,这在生成多样化且合理样本方面可以比简单的噪声添加或插值更有效。从增强嵌入到文本一个重要步骤,通常也是一项重要挑战,是将这些新创建的嵌入向量转换回人类可读的文本。嵌入只是一个数字列表;它不是文本。以下是常用策略:在现有语料库中进行最近邻搜索:获取您的增强嵌入 $e'$。在一个大型的真实文本语料库中搜索其嵌入与 $e'$ 最接近(例如,使用余弦相似度)的句子。优点: 如果您有预嵌入的语料库,则实现简单。缺点: 生成的文本并非真正“新颖”;它是从现有句子中选取的。这限制了新颖性,并且可能无法完美匹配在嵌入空间中进行的细微改变。使用解码器模型:这是一种更强大的方法。您使用一个神经网络模型(一个“解码器”),该模型经过训练以嵌入作为输入并生成文本序列。这可以是预训练自动编码器的解码器部分,也可以是专门为这种“嵌入到文本”任务训练的序列到序列模型。优点: 可以生成全新的句子,反映增强嵌入的语义。提供了更大的灵活性和新颖性潜力。缺点: 需要训练或微调此类解码器。生成文本的质量高度依赖于解码器的能力。质量差的解码器即使从好的嵌入中也可能产生不合语法或无意义的输出。解码方法的选择与增强技术本身同样重要。目标是确保嵌入空间中的细微操作能够转化为有意义的高质量文本变体。优点与权衡在嵌入空间中进行增强提供了独特的优点:细粒度语义控制: 您更接近“意义”层面进行操作。新颖性: 有可能创建真正的新语义变体。平滑性: 插值可以沿着平滑的语义梯度生成数据。然而,也存在挑战:增强嵌入的意义性: 并非嵌入空间中的每个点都对应连贯的文本。可能会创建“僵尸嵌入”,它们在数学上有效,但无法解码成任何有意义的内容。解码质量: 转换回文本是一项非简单任务,并且可能成为质量瓶颈。计算成本: 与更简单的基于文本的增强相比,生成嵌入、执行向量操作,尤其是解码文本可能计算密集。对嵌入质量的依赖: 整个过程取决于您初始文本嵌入的质量。如果它们不能很好地捕捉语义,则增强就不会有意义。超参数敏感性: 噪声量、插值比例或转换向量的选择都是超参数,需要仔细调整和评估。何时考虑嵌入空间增强当出现以下情况时,这套技术特别有价值:您需要保留原始数据核心意义的细微语义变体。标准文本增强方法(如同义词替换或回译)产生的结果噪声过大、不合语法或多样性不足。您想系统地分析现有数据点周围的语义空间。您的目标是为高度依赖于理解细微语义区别的任务生成数据。您正在构建数据精炼系统,其中控制生成文本的特定属性很重要。通过操作这些稠密表示,我们超越了表面层次的文本操作,进入了一个可以塑造数据真正意义的空间。这为创建丰富、多样且有针对性的合成数据集提供了强大的工具,用于高级大语言模型开发,与本章的精炼主题很好地吻合。正如我们将在后续章节中看到,这些精炼的数据集随后可以纳入结构化学习路径,或用于生成偏好数据以进行模型对齐。