\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{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}{REINFORCE 算法在语言模型中的应用}
\newcommand{\noteauthors}{基于公开课程资料整理}
\newcommand{\notedate}{2025}
\newcommand{\videochannel}{五道口纳什}
\newcommand{\videopublishdate}{2025}
\newcommand{\videoduration}{约20分钟}
\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}{}{\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
\ifdefempty{\videourl}{}{\textbf{视频链接}：\href{\videourl}{\nolinkurl{\videourl}}\par}\par
\textbf{项目主页}：\href{\repourl}{\nolinkurl{\repourl}}\par
\end{tcolorbox}
\end{titlepage}
\tableofcontents\newpage

\section{引言}
本期将 REINFORCE 算法应用到语言模型中，实现一个简单效果：不管输入什么 prompt，模型输出都包含特定语义（如 ``mode）。

\section{Reward 环境设计}
\subsection{基于 Cosine Similarity 的 Reward}
\begin{importantbox}{Reward 定义}
\begin{enumerate}
  \item 语言模型 rollout 生成一个序列（句子）
  \item 计算该句子的 embedding
  \item 计算目标词（如 ``mode）的 embedding
  \item 两者的 cosine similarity 作为 reward
\end{enumerate}
\end{importantbox}

\section{REINFORCE 实现}
\subsection{算法流程}
\begin{enumerate}
  \item 从当前策略 $\pi_\theta$ 采样生成序列
  \item 计算每个序列的 reward（cosine similarity）
  \item 计算 PG Loss 并反向传播更新 $\theta$
\end{enumerate}

\subsection{本章小结}
REINFORCE 是最朴素的 PG 算法，可以直接应用于语言模型，将 RL 的概念落地到实际的文本生成任务中。

\section{工程提示：reward 设计要服务于训练反馈}
这节课虽然重点在 reward 环境设计与 REINFORCE 实现，但真正落地时最关键的问题是：reward 是否能稳定地区分“值得强化”和“不值得强化”的行为。如果 reward 太稀疏、太晚出现，或者和最终目标错位，再正确的策略梯度实现也会学得很慢。

\begin{warningbox}{常见环境设计误区}
\begin{itemize}
  \item 只有最终成功奖励，没有中间反馈，导致 credit assignment 太难
  \item 奖励过于密集，却没有约束正确方向，导致模型钻空子
  \item 环境状态不稳定，让同一动作在不同轮次得到冲突反馈
\end{itemize}
\end{warningbox}

\subsection{本章小结}
环境和 reward 设计决定了 RL 信号的质量。与其一味调算法，不如先确认奖励是否真的在推动目标行为出现。

\newpage
\section{总结与延伸}
\begin{enumerate}
  \item REINFORCE 可以直接用于语言模型的 RL 训练
  \item Reward 环境可以用 embedding similarity 定义
  \item 这是理解更复杂的 PPO/GRPO 的基础
\end{enumerate}
\end{document}
