\documentclass[a4paper]{article}
\usepackage[fontset=fandol]{ctex}
\usepackage{amsmath, amssymb}
\usepackage{graphicx}
\usepackage[margin=2.5cm]{geometry}
\usepackage[most]{tcolorbox}
\usepackage{etoolbox}
\usepackage{listings}
\usepackage{hyperref}
\usepackage{booktabs}
\usepackage{subcaption}
\usepackage{float}

\newtcolorbox{knowledgebox}[1]{
    enhanced, colback=blue!5!white, colframe=blue!75!black, colbacktitle=blue!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, attach boxed title to top left={yshift=-2mm, xshift=2mm},
    boxrule=1pt, sharp corners
}
\newtcolorbox{importantbox}[1]{
    enhanced, colback=yellow!10!white, colframe=yellow!80!black, colbacktitle=yellow!80!black,
    coltitle=black, fonttitle=\bfseries, title=#1, sharp corners
}
\newtcolorbox{warningbox}[1]{
    enhanced, colback=red!5!white, colframe=red!75!black, colbacktitle=red!75!black,
    coltitle=white, fonttitle=\bfseries, title=#1, sharp corners
}

\lstset{
    language=Python, basicstyle=\ttfamily\small, keywordstyle=\color{blue},
    stringstyle=\color{red!60!black}, commentstyle=\color{green!60!black},
    breaklines=true, frame=single, numbers=left, numberstyle=\tiny\color{gray},
    captionpos=b, extendedchars=false
}

\newcommand{\notetitle}{[CS25] Recipe for Training Helpful Chatbots --- Nazneen Rajani, HuggingFace}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{Fall 2023}
\newcommand{\videochannel}{Stanford CS25: Transformers United}
\newcommand{\videopublishdate}{Fall 2023}
\newcommand{\videoduration}{$\sim$1h}
\newcommand{\videourl}{}
\newcommand{\videocoverpath}{cover.jpg}
\newcommand{\repourl}{https://github.com/hqhq1025/ai-course-notes}


% Footer with repo info
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyfoot[C]{\thepage}
\fancyfoot[R]{\footnotesize\color{gray}\href{\repourl}{AI Course Notes}}
\renewcommand{\headrulewidth}{0pt}
\renewcommand{\footrulewidth}{0pt}

\begin{document}

\begin{titlepage}
\centering
{\Large 课程笔记\par}
\vspace{1.2cm}
{\huge\bfseries \notetitle\par}
\vspace{0.8cm}
{\large \noteauthors\par}
\vspace{0.3cm}
{\large \notedate\par}
\vspace{1.2cm}

\ifdefempty{\videocoverpath}{
{\small 请在生成笔记时填入视频封面图的本地路径。\par}
}{
\includegraphics[width=0.82\textwidth,height=0.45\textheight,keepaspectratio]{\videocoverpath}\par
}

\vfill
\begin{tcolorbox}[width=0.9\textwidth, colback=black!2!white, colframe=black!60, sharp corners]
\textbf{视频作者/频道}：\videochannel\par
\textbf{发布日期}：\videopublishdate\par
\textbf{视频时长}：\videoduration\par
\textbf{视频链接}：
\ifdefempty{\videourl}{}{\textbf{视频链接}：\href{\videourl}{\nolinkurl{\videourl}}\par}\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}

\tableofcontents
\newpage

%% --- 正文内容开始 --- %%

\section{引言：H4 项目背景}

Nazneen Rajani 是 HuggingFace 的研究科学家，曾领导 H4 团队。H4 代表 \textbf{H}elpful、\textbf{H}armless、\textbf{H}onest 和 \textbf{H}uggy——目标是在开源预训练模型之上复现 ChatGPT 的对齐``秘方''。

\begin{knowledgebox}{对齐三步曲}
OpenAI 在 InstructGPT 论文中提出的经典三步流程：
\begin{enumerate}
\item \textbf{监督微调}（SFT）：在高质量指令-响应对上微调预训练模型
\item \textbf{奖励建模}（RM）：训练奖励模型学习人类偏好
\item \textbf{强化学习}（RLHF）：用 PPO 算法根据奖励模型优化策略
\end{enumerate}
\end{knowledgebox}

\section{监督微调（SFT）}

\subsection{数据选择}

SFT 阶段的核心问题是``用什么数据''。H4 团队系统评估了多个开源指令数据集：

\begin{itemize}
\item \textbf{Open Assistant}：社区众包的多轮对话数据
\item \textbf{Databricks Dolly}：员工编写的指令-响应对
\item \textbf{Self-Instruct / Alpaca}：模型生成的合成指令数据
\end{itemize}

\begin{importantbox}{数据质量 $>$ 数据数量}
实验表明，1 万条高质量人工标注数据的效果可以超过 10 万条低质量合成数据。质量体现在：指令多样性、响应准确性、格式一致性。
\end{importantbox}

\subsection{SFT 训练细节}

使用 LLaMA 系列模型作为基座，关键超参数包括：学习率 2e-5、batch size 64、1--3 epoch（避免过拟合）。

\subsection{本章小结}
SFT 是对齐的基础，数据质量是决定性因素。

\section{奖励建模}

\subsection{偏好数据收集}

奖励模型的训练需要人类偏好数据：给定同一 prompt，由多个模型生成响应，人类标注员选择更好的那个。

\begin{importantbox}{Bradley-Terry 模型}
奖励模型通过 Bradley-Terry 模型将偏好排序转化为标量奖励：
$$P(y_w \succ y_l | x) = \sigma(r(x, y_w) - r(x, y_l))$$
其中 $r(x, y)$ 是奖励模型对 prompt $x$ 和响应 $y$ 的打分，$\sigma$ 为 sigmoid 函数。
\end{importantbox}

\subsection{数据规模}

\begin{warningbox}{奖励模型需要大量数据}
SFT 可能只需 1 万条数据，但奖励模型通常需要 10 万条以上的偏好对比数据。这是因为 RLHF 的采样效率较低——奖励模型需要在足够多样的响应对上学习细粒度的偏好信号。
\end{warningbox}

\subsection{本章小结}
奖励建模将主观的``好坏''判断量化为可优化的标量信号。

\section{RLHF：强化学习微调}

\subsection{PPO 训练流程}

\begin{enumerate}
\item 从 SFT 模型采样响应
\item 用奖励模型打分
\item 用 PPO 算法更新策略模型
\item 加入 KL 散度惩罚，防止策略偏离 SFT 模型太远
\end{enumerate}

$$\mathcal{L}_{\text{RLHF}} = \mathbb{E}_{x \sim \mathcal{D}, y \sim \pi_\theta}\big{[}r(x, y) - \beta \cdot D_{\text{KL}}(\pi_\theta \| \pi_{\text{ref}})\big{]}$$

其中 $\beta$ 控制 KL 惩罚强度，$\pi_{\text{ref}}$ 是 SFT 参考模型。

\subsection{DPO：直接偏好优化}

\begin{knowledgebox}{DPO 简化了 RLHF}
直接偏好优化（DPO）将 RLHF 的两步（训练奖励模型 + PPO 优化）合并为一步：直接在偏好数据上优化策略模型，无需显式的奖励模型。DPO 的训练稳定性更好，超参数更少。
\end{knowledgebox}

\subsection{本章小结}
RLHF 是对齐流程的核心环节，DPO 等方法正在简化这一过程。

\section{蒸馏与合成数据}

\subsection{知识蒸馏}

用更强的模型（如 GPT-4）生成响应，再用这些数据训练较小的模型。这种``蒸馏''方法在 Alpaca、Vicuna 等项目中被广泛使用。

\begin{warningbox}{蒸馏的局限性}
蒸馏模型往往在风格上模仿教师模型（如生成流畅的长回答），但在事实准确性上可能没有真正提升。Chatbot Arena 等评估表明，蒸馏模型的用户偏好得分可能被``风格分''抬高。
\end{warningbox}

\subsection{本章小结}
蒸馏是快速获取对齐能力的捷径，但不能替代真正的知识获取。

\section{评估方法}

\subsection{自动评估}

\begin{itemize}
\item \textbf{MT-Bench}：多轮对话基准，GPT-4 作为裁判
\item \textbf{AlpacaEval}：GPT-4/Claude 进行成对比较，报告胜率
\item \textbf{Chatbot Arena}：公开众包的 ELO 排行榜（LMSYS）
\end{itemize}

\begin{warningbox}{用 LLM 评估 LLM 的偏差}
GPT-4 作为评估器存在系统性偏差：偏好更长、更详细的回答，即使这些回答可能包含不准确的信息。人类评估与 GPT-4 评估的相关性约为 80\%，仍有显著差距。
\end{warningbox}

\subsection{人类评估}

H4 团队与 Scale AI 合作进行人类评估：生成所有模型组合的响应对（$\binom{n}{2}$），由人类标注员逐一比较，计算 ELO 评分。

\subsection{本章小结}
评估仍是对齐研究的最大瓶颈，自动指标和人类判断之间存在 gap。

\section{总结与延伸}

本讲系统介绍了开源社区复现 ChatGPT 对齐流程的实践经验。核心教训：(1) SFT 数据质量比数量重要；(2) RLHF 需要大量偏好数据且训练不稳定；(3) 评估仍是最大挑战。DPO 等新方法正在简化流程，但根本问题——``什么是好的回答''——仍需更深入的研究。

\subsection{拓展阅读}
\begin{itemize}
\item Ouyang et al., ``Training Language Models to Follow Instructions with Human Feedback'' (InstructGPT), 2022
\item Rafailov et al., ``Direct Preference Optimization: Your Language Model is Secretly a Reward Model'', 2023
\item Zheng et al., ``Judging LLM-as-a-Judge with MT-Bench and Chatbot Arena'', 2023
\end{itemize}

%% --- 正文内容结束 --- %%

\end{document}
