03 CS224n 学习笔记(一):词向量与语言模型
1. 独热向量计算机不能直接理解词语,因此需要先把词转换成数值。最简单的方法之一是独热编码(One-hot Encoding)。假设词表中只有“我”“爱”“你”三个词,可以把它们分别表示为: 123我 → [1, 0, 0]爱 → [0, 1, 0]你 → [0, 0, 1] 独热向量中只有一个位置为 1,其余位置都为 0。这里的下标表示词在词表中的编号,而不是词在句子中的位置。 这种表示方法简单直接,也方便计算机处理,但它有一个明显的问题:任意两个不同词的独热向量彼此正交,无法直接体现词语之间的语义关系。例如,从这些向量本身看不出“我”和“你”比“我”和“苹果”更接近。 为了让词语之间能够建立语义联系,可以把每个词映射成一个低维、稠密并且可学习的向量,这就是词嵌入(Word Embedding)。Word2Vec 是学习词嵌入的一类经典方法。 2. Word2Vec 与 Skip-gramWord2Vec 的基本想法来自分布假说:经常出现在相似上下文中的词,往往具有相近的含义。 Word2Vec 主要包含 CBOW 和 Skip-gram 两种训练方式。本文讨论 CS224n...
02 Transformer算法
1. Transformer 整体架构经典 Transformer 采用 Encoder–Decoder 架构。Encoder 负责理解输入序列,Decoder 则结合已经生成的内容与 Encoder 输出,逐个预测后续 Token。 整个模型的数据流可以概括为: 输入 Token 先经过 Embedding,从离散 ID 转换为连续向量。 位置编码为向量注入 Token 的先后顺序。 Encoder 使用多头自注意力提取输入序列的上下文表示。 Decoder 先通过带掩码的自注意力读取已生成内容,再通过交叉注意力读取 Encoder 输出。 Decoder 的结果经过线性层,得到目标词表中每个 Token 的预测分数。 后文统一使用以下符号: 符号 含义 $B$ Batch Size,批大小 $S$ 源序列长度,即 Encoder 的 Token 数量 $T$ 目标序列长度,即 Decoder 的 Token 数量 $d_{\text{model}}$ 每个 Token 的特征维度 $h$ 注意力头的数量 $d_k$ 每个注意力头中 Que...
01 从数据生成到模型保存的完整二分类流程
本文通过一个简单的二维二分类任务,记录使用 PyTorch 完成数据准备、模型创建、训练、验证和模型保存的完整流程。 1. 基础流程1.1 数据准备首先随机生成两组 Tensor 数据:将第一组数据的中心移动到 (-1, -1),将第二组数据的中心移动到 (1, 1)。随后使用 torch.randperm() 打乱样本顺序,并通过 TensorDataset 和 DataLoader 将数据封装成批次,供后续训练和验证使用。 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455# 1. 准备数据class_0 = torch.randn(500,2) * 0.6class_0 += torch.tensor([-1.0,-1.0])class_1 = torch.randn(500,2) * 0.6class_1 += torch.tensor([1.0,1.0])feature = torch.cat( [class_0,...