\chapter{相关理论基础}

本章介绍后续章节所依赖的理论基础，包括深度学习的基本原理、卷积神经网络、
循环神经网络与强化学习，并结合图示、表格与公式给出必要的数学表述。

\section{深度学习基本原理}

\subsection{神经网络基本结构}

神经网络由若干层神经元堆叠而成。单个神经元先对输入做加权求和，再经激活函数得到输出
\begin{equation}
  y = \sigma\left(\sum_{i=1}^{n} w_i x_i + b\right)
  \label{eq:neuron}
\end{equation}
其中 $w_i$ 为权重，$b$ 为偏置，$\sigma(\cdot)$ 为激活函数。

多层网络把前一层的输出作为后一层的输入，逐层计算得到最终结果。设第 $l$ 层的权重矩阵为
$W^{(l)}$、偏置向量为 $b^{(l)}$，则该层的激活值为
\begin{equation}
  a^{(l)} = \sigma\left(W^{(l)} a^{(l-1)} + b^{(l)}\right)
  \label{eq:forward}
\end{equation}
整个网络的结构如图~\ref{fig:mlp} 所示。

\begin{figure}[htbp]
  \centering
  \includegraphics[width=0.55\linewidth]{duck}
  \caption{前馈神经网络结构示意图}
  \label{fig:mlp}
\end{figure}

\subsection{反向传播算法}

反向传播用于计算损失函数对各层参数的梯度。定义第 $l$ 层的误差项为损失对该层加权输入的偏导
\begin{equation}
  \delta^{(l)} = \frac{\partial C}{\partial z^{(l)}}
  \label{eq:delta}
\end{equation}

误差项由输出层向前逐层递推，相邻两层之间满足
\begin{equation}
  \delta^{(l)} = \left( \left( W^{(l+1)} \right)^{\top} \delta^{(l+1)} \right) \odot \sigma'\left( z^{(l)} \right)
  \label{eq:bp}
\end{equation}
其中 $\odot$ 表示逐元素相乘。

得到误差项后，参数的梯度可按链式法则写出，并沿梯度反方向更新
\begin{equation}
  W^{(l)} \leftarrow W^{(l)} - \eta \, \delta^{(l)} \left( a^{(l-1)} \right)^{\top}
  \label{eq:update}
\end{equation}
其中 $\eta$ 为学习率。学习率过大会引起震荡，过小则收敛缓慢。

\subsection{常用激活函数}

激活函数为网络引入非线性。常用的三种激活函数及其表达式如表~\ref{tab:activation} 所示。

\begin{table}[htbp]
  \centering
  \caption{常用激活函数及其特点}
  \label{tab:activation}
  \begin{tabular}{lll}
    \toprule
    名称 & 表达式 & 特点 \\
    \midrule
    Sigmoid & $\sigma(x) = \dfrac{1}{1 + e^{-x}}$ & 输出范围 $(0,1)$，易饱和 \\
    Tanh & $\tanh(x) = \dfrac{e^{x} - e^{-x}}{e^{x} + e^{-x}}$ & 输出零均值，仍会饱和 \\
    ReLU & $\mathrm{ReLU}(x) = \max(0, x)$ & 计算简单，缓解梯度消失 \\
    \bottomrule
  \end{tabular}
\end{table}

其中 ReLU 因计算代价低且能有效缓解深层网络的梯度消失问题，在卷积网络中应用最为广泛，
其函数图像如图~\ref{fig:relu} 所示，对应的导数为
\begin{equation}
  \mathrm{ReLU}'(x) =
  \begin{cases}
    1, & x > 0 \\
    0, & x \le 0
  \end{cases}
  \label{eq:relu}
\end{equation}

由式~\ref{eq:relu} 可见，正半轴导数恒为 1，梯度可无衰减回传，这正是 ReLU 缓解
梯度消失的原因；而负半轴导数为 0，会使该区域的神经元不再更新。

\begin{figure}[htbp]
  \centering
  \begin{tikzpicture}[scale=1.5, font=\fontsize{10.5pt}{12.6pt}\selectfont]
    \draw[-latex] (-1.3,0) -- (1.9,0) node[right] {$x$};
    \draw[-latex] (0,-0.3) -- (0,1.5) node[left] {$y$};
    \draw[very thick, red] (-1.3,0) -- (0,0) -- (1.4,1.4);
  \end{tikzpicture}
  \caption{ReLU 激活函数图像}
  \label{fig:relu}
\end{figure}

\section{卷积神经网络}

\subsection{卷积操作}

卷积神经网络通过局部连接与权重共享提取空间特征。二维卷积操作可以表示为
\begin{equation}
  (f * g)(i, j) = \sum_{m} \sum_{n} f(m, n) \cdot g(i - m, j - n)
  \label{eq:conv2d}
\end{equation}

在 CNN 中，卷积层的输出为
\begin{equation}
  y_{ij} = \sigma\left( \sum_{m} \sum_{n} w_{mn} \cdot x_{(i+m)(j+n)} + b \right)
  \label{eq:convout}
\end{equation}
卷积核在输入特征图上滑动，同一组权重在整个特征图上重复使用，因此参数量远小于全连接层。

\subsection{池化操作}

池化操作用于降低特征图的空间维度，减少计算量并增强平移不变性。常用的池化方式包括
最大池化与平均池化，分别取窗口内的最大值与平均值
\begin{equation}
  y_{ij} = \max_{(m,n) \in R_{ij}} x_{mn}, \qquad
  y_{ij} = \frac{1}{|R_{ij}|} \sum_{(m,n) \in R_{ij}} x_{mn}
  \label{eq:pool}
\end{equation}
其中 $R_{ij}$ 为第 $(i,j)$ 个池化窗口覆盖的区域，$|R_{ij}|$ 为该区域内的元素个数。
两种池化的效果对比如图~\ref{fig:pool} 所示。

\begin{figure}[htbp]
  \centering
  \begin{subfigure}[b]{0.45\linewidth}
    \centering
    \includegraphics[width=\linewidth,page=1]{abc}
    \caption{最大池化}
    \label{fig:pool-max}
  \end{subfigure}
  \hfill
  \begin{subfigure}[b]{0.45\linewidth}
    \centering
    \includegraphics[width=\linewidth,page=2]{abc}
    \caption{平均池化}
    \label{fig:pool-avg}
  \end{subfigure}
  \caption{两种池化方式的对比}
  \label{fig:pool}
\end{figure}

\subsection{典型网络结构}

随着网络加深，研究者提出了多种改进结构以缓解退化与梯度消失问题。几种典型结构的
特点如表~\ref{tab:cnn} 所示。

\begin{table}[htbp]
  \centering
  \caption{几种典型卷积网络结构的对比}
  \label{tab:cnn}
  \begin{tabular}{cccc}
    \toprule
    网络    & 层数 & 核心思想                        & 提出年份 \\
    \midrule
    AlexNet & 8    & 使用 ReLU 与 Dropout            & 2012     \\
    VGG     & 19   & 用小卷积核堆叠替代大卷积核        & 2014     \\
    ResNet  & 152  & 引入残差连接，缓解深层退化        & 2015     \\
    \bottomrule
  \end{tabular}
\end{table}

\section{循环神经网络}

\subsection{RNN 基本结构}

循环神经网络（Recurrent Neural Network, RNN）是处理序列数据的重要模型。RNN 通过
引入循环连接，使网络具有记忆功能。其隐藏状态按时刻递推，输出由当前隐藏状态决定
\begin{equation}
  h_t = \tanh\left( W_h h_{t-1} + W_x x_t + b \right), \qquad y_t = W_y h_t + b_y
  \label{eq:rnn}
\end{equation}
其中 $x_t$ 为 $t$ 时刻的输入，$h_{t-1}$ 为上一时刻的隐藏状态。
若进一步考虑输出层，则 RNN 的完整前向传播可写为
\begin{equation}
  \begin{aligned}
    h_t &= \tanh(W_h h_{t-1} + W_x x_t + b_h), \\
    \hat{y}_t &= \mathrm{softmax}(W_o h_t + b_o).
  \end{aligned}
\end{equation}

\subsection{LSTM 与 GRU}

标准 RNN 在序列较长时容易出现梯度消失或爆炸。长短期记忆网络通过输入门、遗忘门与
输出门控制信息的流动
\begin{equation}
  \begin{aligned}
    f_t &= \sigma\left( W_f \left[ h_{t-1}, x_t \right] + b_f \right) \\
    i_t &= \sigma\left( W_i \left[ h_{t-1}, x_t \right] + b_i \right) \\
    o_t &= \sigma\left( W_o \left[ h_{t-1}, x_t \right] + b_o \right)
  \end{aligned}
  \label{eq:lstm}
\end{equation}

门控循环单元则把三个门简化为更新门与重置门两个，在保持性能的同时减少了参数量。
三种结构的对比如表~\ref{tab:rnn} 所示。

\begin{table}[htbp]
  \centering
  \caption{RNN、LSTM 与 GRU 的结构对比}
  \label{tab:rnn}
  \begin{tabular}{lccc}
    \toprule
    结构 & 门控数量 & 参数量 & 长序列表现 \\
    \midrule
    RNN  & 0 & 最少 & 较差 \\
    LSTM & 3 & 最多 & 好   \\
    GRU  & 2 & 中等 & 好   \\
    \bottomrule
  \end{tabular}
\end{table}

\section{强化学习基本原理}

\subsection{马尔可夫决策过程}

强化学习通常建模为马尔可夫决策过程，由状态集、动作集、转移概率与奖励函数构成。
在策略 $\pi$ 下，状态价值函数定义为折扣回报的期望
\begin{equation}
  V^{\pi}(s) = \mathbb{E}_{\pi}\left[ \sum_{k=0}^{\infty} \gamma^{k} r_{t+k} \,\middle|\, s_t = s \right]
  \label{eq:value}
\end{equation}
其中 $\gamma \in [0,1)$ 为折扣因子，用于权衡当前奖励与未来奖励。

价值函数满足贝尔曼方程，把当前时刻的期望回报拆成即时奖励与下一时刻价值之和
\begin{equation}
  V^{\pi}(s) = \sum_{a} \pi(a \mid s) \sum_{s'} p(s' \mid s, a) \left[ r(s,a,s') + \gamma V^{\pi}(s') \right]
  \label{eq:bellman}
\end{equation}

\subsection{Q 学习算法}

Q 学习直接估计动作价值函数 $Q(s,a)$，不需要知道环境模型。它按时序差分误差更新，
用下一时刻的最大动作价值作为当前估计的目标
\begin{equation}
  Q(s_t, a_t) \leftarrow Q(s_t, a_t) + \alpha \left[ r_t + \gamma \max_{a'} Q(s_{t+1}, a') - Q(s_t, a_t) \right]
  \label{eq:qlearning}
\end{equation}
其中 $\alpha$ 为学习率。当动作空间或状态空间连续时，可以用函数逼近代替查表。

\subsection{深度 Q 网络}

深度 Q 网络用神经网络参数化动作价值函数 $Q(s,a;\theta)$，通过最小化时序差分误差训练
\begin{equation}
  L(\theta) = \mathbb{E}\left[ \left( r_t + \gamma \max_{a'} Q(s_{t+1}, a'; \theta^{-}) - Q(s_t, a_t; \theta) \right)^{2} \right]
  \label{eq:dqn}
\end{equation}
其中 $\theta^{-}$ 为目标网络的参数，定期从当前网络复制，以减小训练过程中的震荡。

\section{本章小结}

本章介绍了深度学习与强化学习的基本原理，给出了神经元模型、前向传播、反向传播、
卷积与池化、循环网络以及价值函数与 Q 学习的数学表述，并通过图示与表格对比了
典型网络结构的特点，为后续章节的算法设计提供理论依据。
