详细摘要 摘要
生成:2025-05-15 22:21摘要详情
- 音频文件
- Stanford CS224N: NLP w/ DL | Spring 2024 | Lecture 7 - Attention, Final Projects and LLM Intro
- 摘要类型
- 详细摘要
- LLM 提供商
- openai
- LLM 模型
- gemini-2.5-pro-exp-03-25
- 已创建
- 2025-05-15 22:21:43
摘要内容
概览/核心摘要 (Executive Summary)
本讲座首先回顾了机器翻译 (MT) 的评估方法,重点介绍了 BLEU (Bilingual Evaluation Understudy) 得分作为最常用的自动评估指标。BLEU 通过计算机器翻译结果与人工参考译文之间 N-gram (通常为1-4 gram) 的重叠度来评分,并设有对过短翻译的惩罚机制。讲座提及,尽管 BLEU 有其局限性(如无法完全捕捉语义等价性),但在快速迭代中仍广泛使用。统计机器翻译的进展曾一度停滞,直至2014年神经机器翻译 (NMT) 的出现,并在2016年后凭借注意力机制 (Attention) 的引入实现了性能的巨大飞跃,目前 NMT 系统在 BLEU 得分上常能达到50-60分。
注意力机制是本次讲座的核心技术点,也是课程作业(如作业三)的关键内容。它解决了传统编码器-解码器模型中信息瓶颈问题,允许解码器在生成每个词时关注源句的不同部分。讲座详细阐述了注意力机制的原理、计算步骤(计算注意力得分、Softmax归一化、加权求和得到上下文向量)及其多种实现方式(点积注意力、乘法/双线性注意力、加性注意力等),并指出缩放点积注意力 (Scaled Dot-Product Attention) 是当前 Transformer 等模型中的主流。注意力机制不仅提升了 NMT 性能,还增强了模型的可解释性,并成为现代神经网络的基石。
最后,讲座详细介绍了课程的期末项目要求,并在此过程中间接引入了大型语言模型 (LLM) 的核心概念及其在现代自然语言处理中的应用。学生可选择默认项目(实现和实验一个最小化的 BERT 模型进行情感分析)或自定义项目。项目团队规模为1-3人,大团队预期完成更多工作。强调了“价值增值” (value add) 的重要性,即便是使用现有代码或模型,也需清晰说明自己的贡献。项目提案需包括对一篇关键研究论文的批判性评述和新增的伦理考量部分。计算资源方面,提到了 GCP、Together AI 等提供的有限支持,并鼓励学生利用 Colab Pro、Kaggle Notebooks 等工具。讲座还讨论了寻找研究课题的途径,并指出当前 NLP 研究趋势已转向利用大型预训练模型 (LPMs) 进行微调或上下文学习,建议学生关注参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT) 等轻量级方法。
机器翻译 (MT) 评估
评估的必要性与挑战
- 需要有效方法来判断机器翻译系统的好坏。
- 人工评估是“黄金标准”,但耗时耗力,不适用于快速迭代和训练。
- 自动评估方法被提出,其中 BLEU (Bilingual Evaluation Understudy) 是最常见的一种。
BLEU 得分详解
- 提出者:IBM,是最早提出的自动评估 MT 的方法之一。
- 核心思想:比较机器翻译输出与一个或多个人工参考译文之间的 N-gram(通常是1到4-gram)重叠度。
“the more overlap you have, the better.”- 最初设想使用多个参考译文以覆盖翻译的多样性,但实践中也常用单个参考译文。
- 计算:涉及匹配 N-gram,并对过短的翻译进行惩罚(避免系统只翻译简单部分来刷高精度分)。
- 分数范围:理论上0-100。
- 20多分:大致能理解原文意思。
- 30-40多分:翻译质量显著提升。
- 神经机器翻译系统目前常能达到50-60分。
- 局限性:
- 翻译多样性:一个句子有多种正确的翻译方式,可能使用不同词汇和语序,BLEU 可能因用词与参考译文不符而给优质翻译低分。
- 表面匹配:可能因为词语匹配而得分,即使这些词在句子中的作用完全错误(尽管高阶 N-gram 匹配一定程度上缓解此问题)。
机器翻译发展历程与 BLEU 得分表现
- 统计短语翻译 (Statistical Phrase-Based Translation):
- 由 IBM 在90年代末开创,2000年代被 Google Translate 等采用。
- 到2010年代中期,进展基本停滞。
- 基于句法的统计机器翻译 (Syntax-Based SMT):
- 约2005-2014年,被认为是提升翻译质量(尤其针对语序差异大的语言对,如中英、德英)的关键。
- 但实际进展缓慢,
“the truth is it sort of didn't really work.”
- 神经机器翻译 (NMT):
- 2014年出现初步尝试。
- 2015年在评测中尚不及最佳传统方法。
- 2016年,NMT 性能超越其他方法,并展现出更陡峭的提升曲线。
“it was just on this much, much steeper slope of getting way, way better.”- 目前 NMT 系统在 BLEU 得分上表现优异,常见50-60分。
注意力机制 (Attention)
提出动机
- 传统编码器-解码器模型(如基于 LSTM 的 NMT)将源句所有信息压缩到一个固定长度的隐藏状态向量中。
“everything useful about this sentence has to be stuffed into that one vector.”- 这对于长句(如40个词)来说是一个巨大的信息瓶颈。
- 这种机制与人类翻译时会回顾源句特定部分的行为不符。
- 目标是让神经网络能够在解码的每一步关注源句的不同部分,按需获取信息。
注意力机制的核心思想与流程
- 在解码器的每一步,建立与编码器各隐藏状态的直接连接。
- 流程概述:
- 比较与计算得分:解码器当前隐藏状态 (query) 与编码器所有位置的隐藏状态 (keys/values) 进行比较,计算注意力得分。
- 归一化:将注意力得分通过 Softmax 函数转换为概率分布(注意力权重)。
- 加权求和:使用注意力权重对编码器的隐藏状态进行加权平均,得到上下文向量 (attention output)。
- 组合与输出:将上下文向量与解码器当前隐藏状态结合,用于生成目标词。
- 重复此过程直至翻译结束。
- 讲座中提到,有时也会将前一时间步的注意力输出作为当前时间步的额外输入(例如在作业三中会这样做)。
注意力机制的数学表达 (以点积注意力为例)
- 编码器隐藏状态序列:
h_1, h_2, ..., h_N - 解码器在时间步
t的隐藏状态:s_t - 注意力得分 (Attention Scores)
e_ti:score(s_t, h_i)- 最简单的方式是点积:
e_ti = s_t^T h_i
- 最简单的方式是点积:
- 注意力权重 (Attention Weights)
α_ti:α_ti = softmax(e_ti)(对所有i进行 Softmax) - 上下文向量 (Context Vector / Attention Output)
a_t:a_t = Σ_i α_ti h_i - 最终输出:将
a_t和s_t拼接起来([a_t; s_t]),再通过一个线性层和 Softmax 生成下一个词的概率分布。
注意力机制的益处
- 显著提升 NMT 性能:Bădanu 等人 (2014) 提出的使用注意力机制的 NMT 系统,在计算资源远少于同期 Google 纯 LSTM 大模型的情况下取得了更好或相当的结果。
“Attention significantly improved NMT performance. Essentially, every neural machine translation system since has used attention.”
- 更符合人类直觉:模拟了人类翻译时回顾源文本的行为。
- 解决信息瓶颈:不再需要将源句所有信息压缩到单一向量中。
- 缓解梯度消失问题:通过直接连接到编码器的所有隐藏状态,提供了“捷径”。
- 提供可解释性:通过可视化注意力权重,可以了解模型在翻译特定词时关注源句的哪些部分。
“it gives you some interpretability... you can basically see what it's translating at different time steps.”
- 课程关键内容:该机制是课程后续作业(如作业三)的核心考察内容之一。
注意力得分的多种计算方式
除了基础的点积注意力,还存在其他计算 score(s_t, h_i) 的方法:
1. 点积注意力 (Dot-Product Attention):s_t^T h_i
* 简单,但假设 s_t 和 h_i 的维度和对应位置的语义可以直接匹配。
* LSTM 的隐藏状态包含多种信息(当前输出、未来预测等),直接点积可能不够优化。
2. 乘法/双线性注意力 (Multiplicative/Bilinear Attention - Luong et al., 2015):s_t^T W h_i
* 引入一个可学习的权重矩阵 W,允许模型学习 s_t 和 h_i 不同部分之间的关联。
* 参数量为 dim(s_t) * dim(h_i),若维度高则参数多。
3. 缩放点积注意力 (Scaled Dot-Product Attention):
* 将参与计算的两个向量(如解码器状态和编码器状态)分别通过线性变换投影到较低维空间,然后在该低维空间进行点积。
* 这种方法也与使用低秩矩阵的双线性注意力相关联,并且是 Transformer 模型中使用的核心注意力机制。
4. 加性注意力 (Additive Attention - Bădanu et al., 2014):v^T tanh(W_1 s_t + W_2 h_i)
* 使用一个小型前馈神经网络计算得分,W_1, W_2, v 均为可学习参数。
* 这是最早提出的注意力形式之一。
* 计算上比点积或乘法注意力更复杂和慢。
* 讲者认为“additive attention”命名奇怪,更像一个小型神经网络。
* 实践中的选择:尽管关于加性注意力和双线性注意力孰优孰劣曾有讨论,但目前缩放点积注意力因其高效性在实际中胜出,并广泛应用于 Transformer 等模型。
注意力机制的通用性
- 注意力机制最初为 NMT 发明,但它是一种通用技术。
- 可应用于任何需要从一系列向量值中根据一个查询向量选择性提取信息的场景。
“anywhere where you have a vector of values, a vector query, and you can use attention to then sort of get a weighted average of the values which finds relevant information that you can use to improve your performance.”- 后续讲座将介绍 Transformer 中的自注意力 (self-attention)。
关于位置信息
- 在基于 RNN 的编码器-解码器结构中使用注意力时,通常不需要显式的位置信息编码。
- RNN 本身按顺序处理输入,其隐藏状态已隐含位置和上下文信息。
- 位置信息的重要性在 Transformer 模型中才凸显,因为 Transformer 本身不包含序列顺序的概念。
关于期末项目 (Final Projects)
项目基本信息
- 权重:占课程总成绩的 49%。
- 合作与荣誉准则:
- 允许使用他人编写的代码,但必须明确注明来源 (give references or URLs)。
- 重点考察学生自己完成的“价值增值” (value add)。下载运行优秀模型并不能算作高价值贡献,需要进行深入分析、理解其工作原理或探究其不足。
- 特别强调了项目提案中新增的伦理考量 (ethical considerations) 部分,要求学生思考其工作的潜在社会影响及缓解措施。
- 团队规模:1至3人。
- 鼓励组队,可以完成更有趣的项目。
- 期望:更大规模的团队应能完成更多的工作量。评分时会考虑团队大小。
- 虽然顶尖项目可能来自优秀的单人成果,但对于多人团队,若未能完成与其规模相称的工作(如模型对比、数据集扩展、消融实验等),评分会受影响。
- 项目共享:允许项目与其它课程或研究助理 (RA) 工作共享,但需告知,且期望完成更多工作量。
- 寻求指导:鼓励与授课教师和助教 (TAs) 讨论。助教的专业领域信息已在 Office Hours 页面列出。
项目类型选择
学生有两种选择:
1. 默认期末项目 (Default Final Project):
* 内容:构建和实验一个最小化的 BERT (Bidirectional Encoder Representations from Transformers) 实现。
* 完成部分 BERT 实现。
* 针对情感分析任务进行微调并获得数据结果。
* 开放式扩展:鼓励学生在此基础上进行创新,如结合释义 (paraphrasing)、对比学习 (contrastive learning)、低秩适应 (Low-Rank Adaptation, LoRA) 等。
* 适用人群:缺乏研究经验、不确定研究方向、或偏好有明确指导和目标(提供排行榜)的学生。
* 讲者估计约一半学生会选择默认项目,包括一些最初想做自定义项目但中途改变主意的学生。
2. 自定义期末项目 (Custom Final Project):
* 适用人群:对特定主题或研究想法充满热情、已在进行相关工作、希望独立尝试新事物、或享受从零开始定义研究目标、寻找数据和工具的完整研究体验的学生。
* 主题限制:项目必须实质性地涉及人类语言 (human language) 和神经网络 (neural networks)。
* 可以结合其他模态(如视觉语言模型、音乐与语言),但人类语言必须是核心部分。
* 可以探索非神经网络方法与神经网络的对比,但神经网络必须是研究的一部分。
评分与计算资源
- 评分:两种项目类型都有机会获得高分和最佳项目奖。
- 计算资源:
- 今年的云服务赞助不如往年慷慨,部分原因是大型语言模型 (LLM) 成功导致的 GPU 短缺。
- Google Cloud Platform (GCP):每人 $50 信用额度,可用于作业3、4和期末项目。
- 免费初始额度:新用户通常可以在各大云平台获得。
- 云端 Notebooks:
- Google Colab:提供有限免费 GPU。建议付费获取 Colab Pro (约 $10/月) 以获得更好的 GPU 访问。
- AWS SageMaker Studio Lab。
- Kaggle Notebooks:通常提供比免费 Colab 更好的 GPU 访问。
- 低成本 GPU 提供商:
- Modal:每月提供一定量免费 GPU 使用。
- Vaai [转录原文如此]。
- 大型语言模型 API 访问:
- Together AI:提供每人 $50 的 API 访问额度,用于大型语言模型。额度消耗取决于模型大小(7B 模型可处理大量 token,更大模型则消耗快)。
- 相关 GPU 选项的详细文档已发布在 Ed 平台。
项目提案 (Project Proposal)
- 每个团队提交一份。
- 主要组成部分:
- 研究论文评述 (Review of a key research paper):
- 针对项目主题,选择一篇关键研究论文进行2页的评述。
- 目标:批判性思考论文的贡献、新颖性、局限性、未考虑的方面、方法是否令人信服、与相关工作的异同、以及是否启发了新的研究思路。
“The goal is for you to be thinking critically about this research paper.”- 避免简单复述摘要和引言。
- 项目计划 (Project Plan):
- 阐述项目目标、拟采用的方法、模型、数据集、以及评估方法。
- 关键:明确将使用的数据和评估指标。
- 伦理考量 (Ethical Considerations):
- 新增要求,撰写一段关于项目若在现实世界部署可能面临的潜在伦理挑战及缓解措施。
- 研究论文评述 (Review of a key research paper):
- 总长度:最多4页。
- 评分侧重:大部分分数来自论文评述,项目计划部分主要提供形成性反馈。
- 基线 (Baseline):必须设立一个合适的基线进行比较,以证明所提出方法的有效性。例如,文本相似度任务的简单基线可以是词向量平均后的点积。
项目里程碑 (Project Milestone)
- 项目中期的进度检查。
- 核心要求:完成基本设置,能够运行一些东西(例如基线模型),表明数据和框架已就绪,可以产出初步结果。
期末报告 (Final Report)
- 评估依据:主要基于项目报告(类似会议论文),除非代码存在重大问题。
- 长度:最多8页。
- 典型结构:摘要 (Abstract)、引言 (Introduction)、相关工作 (Related Work)、模型 (Model)、数据 (Data)、实验与结果 (Experiments and Results)、分析 (Analysis)、结论 (Conclusion)。
寻找研究课题与数据来源 (Custom Projects)
- 课题来源:
- 个人兴趣驱动:从自身遇到的问题或感兴趣的技术出发。
- 项目类型:
- 任务解决型:针对特定任务(如从国务院文件中提取信息)改进或提出解决方案。
- 方法创新型:提出新的神经网络结构或技术,并验证其效果。
- 基于大型语言模型 (LLM) 的项目:利用 LLM 进行上下文学习、构建更复杂的 LLM 程序等。
- 分析/可解释性项目:探究模型内部机制(如 mechanistic interpretability)、模型在特定语言现象(如隐喻理解)上的行为。
- 理论项目(较少见):如分析词向量估计算法的稳定性。
- 文献与资源:
- 往年 CS224N 项目报告。
- ACL Anthology (NLP 论文库)。
- 机器学习顶会论文 (NeurIPS, ICML, ICLR)。
- arXiv 预印本服务器。
- 原创性:鼓励学生从自己的领域或观察到的有趣文本数据中发掘独特问题。
- 排行榜 (Leaderboards):可以提供思路,但可能导致增量式工作。寻找与主流略有差异的“不同点”往往能产生更具原创性的研究。
当前 NLP 研究趋势与项目建议
- 研究范式转变:
- 早期深度学习复兴时 (约2010年代初),许多工作致力于改进模型架构,学生项目也常能从零构建接近 SOTA 的系统。
- 近五年,由于大型预训练模型 (LPMs) 的出现,从零构建并超越这些大模型的难度极大。
- 当前主流:多数研究工作(包括专业研究者)都基于现有的大型预训练模型进行。
- 对项目的影响:
- 对于大多数实际应用型项目,推荐使用 Hugging Face Transformers 库加载预训练模型,并在其基础上进行开发。
- 从零构建架构:仅在小规模、探索性的架构研究(如验证新非线性激活函数)中较为合理。
- 关注点:
- 规模与可行性:需考虑计算资源限制,避免尝试复现需要极大规模算力(如
“32 A100s for a month”)的研究。 - 轻量级方法:关注参数高效微调 (Parameter-Efficient Fine-Tuning, PEFT) 等方法。
- 使用闭源 LLM API (如 GPT-4, Gemini, Claude):
- 允许通过 API 进行实验,但无法自行训练此类规模的模型。
- 即使是开源大模型(如 Llama 70B),也难以在普通学生 GPU 上加载运行(Llama 7B 或许可以)。
- 项目思路:上下文学习、提示工程、构建 LLM 应用、模型行为分析(如偏见、类比推理能力等)。
- 再次强调“价值增值”:项目不应仅仅是“用 GPT-4 处理数据并得到好结果”,而应清晰展示学生在研究设计、分析或方法创新上的独特贡献。
- 规模与可行性:需考虑计算资源限制,避免尝试复现需要极大规模算力(如