【LLM基础教程】从序列切分到上下文窗口01_为什么序列建模必须切分数据

从序列切分到上下文窗口:语言模型如何在有限历史中学习01—为什么序列建模必须切分数据

​ 自然语言文本本质上是长度不定的连续序列。在训练神经网络语言模型(如 RNN / LSTM,乃至后来的 Transformer)时,我们会遇到一个非常现实的工程限制:

  • 模型一次只能处理固定长度的序列
  • 无法将整篇长文本直接作为一个输入样本

​ 因此,在训练语言模型之前,必须将原始长文本切分成多个长度一致的小子序列(subsequences),再将这些子序列组织成小批量(batch)进行训练。

​ 本文将系统梳理序列建模中常见的数据切分策略,并重点对比:

  • 理论上的滑动窗口

  • 实践中更常用的随机采样与顺序采样

    同时给出完整代码实现与设计动机,帮助你从“原理理解”过渡到“工程实践”。

1. 语言建模本质上是“逐 token 的预测任务”

​ 真实世界中的文本往往非常长,例如整本小说《The Time Machine》。而在语言建模任务中,我们通常采用自回归建模方式

  • 在时间步ttt,模型根据历史x<t=(x1,⋯ ,xt−1)x_{<t}=(x_1, \cdots, x_{t-1})x<t=(x1,,xt1)预测下一个 tokenxtx_txt

  • 每个时间步都对应一个预测任务

2. 模型一次只能看到有限长度的上下文

​ 无论是传统的 RNN,还是现代的大语言模型(LLM),模型在一次前向计算中:只能接收固定长度的输入序列。这个长度通常记为KaTeX parse error: Expected 'EOF', got '_' at position 14: T = \text{num_̲steps}

​ 也就是说,哪怕原始文本再长,模型在某一次训练或推理时,也只能基于最近的TTT个 token 进行预测

​ 这就带来了一个不可回避的现实约束:
长文本≠模型可直接处理的输入 \text{长文本} \ne \text{模型可直接处理的输入} 长文本=模型可直接处理的输入

3. 序列切分:把长文本变成可学习的监督样本

​ 因此,对于一条很长的序列,我们必须先对其进行切分:

  • 将原始文本拆分为多个长度为TTT的子序列
  • 每一个子序列,都会对应一个训练样本
  • 每个样本的目标,都是预测该子序列中“下一个 token 序列”

​ 从监督学习的角度来看,这一步的本质是:通过切分长序列,构造大量 「局部上下文 → 下一个 token」的训练样本。

​ 也正是在这一过程中,“序列切分策略”成为连接语言建模理论与工程实现的关键环节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值