CS 229 - 机器学习


深度学习速查表
Star

原创内容 Afshine AmidiShervine Amidi
翻译: spin6lock, Yijia Jin. 由 朱小虎 审阅

神经网络

神经网络是一类按层结构搭建的模型。常用的神经网络包括卷积神经网络和递归神经网络。

架构 ― 下表列举了用来描述神经网络架构的词汇:

Illustration

已知 $i$ 是网络的第 $i$ 层,$j$ 是网络的第 $j$ 层,我们有:

\[\boxed{z_j^{[i]}={w_j^{[i]}}^Tx+b_j^{[i]}}\]

我们用 $w$, $b$, $z$ 分别表示权重,偏差和输出。


激活函数 ― 激活函数被用在隐含单元之后来向模型引入非线性复杂度。比较常见的如下所示:

逻辑函数(Sigmoid) 双曲正切函数(Tanh) 线性整流函数(ReLU) 带泄露线性整流函数(Leaky ReLU)
$g(z)=\displaystyle\frac{1}{1+e^{-z}}$ $g(z)=\displaystyle\frac{e^{z}-e^{-z}}{e^{z}+e^{-z}}$ $g(z)=\textrm{max}(0,z)$ $g(z)=\textrm{max}(\epsilon z,z)$
with $\epsilon\ll1$
Illustration Illustration Illustration Illustration

交叉熵损失 ― 在神经网络中,交叉熵损失 $L(z,y)$ 通常如下定义:

\[\boxed{L(z,y)=-\Big[y\log(z)+(1-y)\log(1-z)\Big]}\]

学习率 ― 学习率,通常记为 $\alpha$ 或 $\eta$ ,表示权重更新的速度。它可以被修复或自适应改变。现阶段最常用的方法是一种调整学习率的算法,叫做Adam。


反向传播 ― 反向传播是一种通过考虑实际输出和期望输出来更新神经网络中权重的方法。权重 $w$ 的导数由链式法则计算,模式如下:

\[\boxed{\frac{\partial L(z,y)}{\partial w}=\frac{\partial L(z,y)}{\partial a}\times\frac{\partial a}{\partial z}\times\frac{\partial z}{\partial w}}\]

作为结果,权重更新如下:

\[\boxed{w\longleftarrow w-\alpha\frac{\partial L(z,y)}{\partial w}}\]

更新权重 ― 在一个神经网络中,权重如下所示更新:
- 第一步 : 分出第一批次的训练数据。
- 第二步 : 通过前向传播来得到相关损失。
- 第三步 : 通过反向传播损失来得到梯度。
- 第四步 : 利用梯度更新网络的权重。


随机丢弃(Dropout) ― 随机丢弃是一种通过丢弃神经网络单元来防止训练数据过拟合的技术。实际上,神经元以概率 $p$ 被丢弃或以概率 $1-p$ 被保留。


卷积神经网络

卷积神经网络要求 ― 记 $W$ 为输入图像尺寸,$F$ 为卷积层神经元尺寸,$P$ 为零填充的大小,那么给定的输入图像能够容纳的神经元数目 $N$ 为:

\[\boxed{N=\frac{W-F+2P}{S}+1}\]

批量规范化 ― 它是超参数 $\gamma, \beta$ 标准化样本批$\{x_i\}$.的一个步骤。将我们希望修正这一批样本的均值和方差记作 $\mu_B, \sigma_B^2$,会得到:

\[\boxed{x_i\longleftarrow\gamma\frac{x_i-\mu_B}{\sqrt{\sigma_B^2+\epsilon}}+\beta}\]
它通常在非线性层之前和全连接/卷积层后应用,目的是允许更高的学习率和减少初始化的强相关。


递归神经网络

门控的种类 ― 在一个典型的递归神经网络中有多种门控结构:

输入门 忘记门 门控 输出门
要不要写入单元? 要不要清空单元? 在单元写入多少? 从单元泄露多少?

LSTM ― 长短期记忆网络是递归神经网络的一种,它可以通过增加“遗忘”门控来避免梯度消失问题。


强化学习和控制

强化学习的目标是让代理学习如何在环境中进化。

定义

马尔可夫决策过程 ― 一个马尔可夫决策过程(MDP)是一个5维元组 $(\mathcal{S},\mathcal{A},\{P_{sa}\},\gamma,R)$,即:
- $\mathcal{S}$ 是状态的集合
- $\mathcal{A}$ 是动作的集合
- $\{P_{sa}\}$ 是对于 $s$ 属于 $\mathcal{S}$ 并且 $a$ 属于 $\mathcal{A}$ 的状态转换概率
- $\gamma\in[0,1[$ 是折扣系数
- $R:\mathcal{S}\times\mathcal{A}\longrightarrow\mathbb{R}$ 或 $R:\mathcal{S}\longrightarrow\mathbb{R}$ 是算法希望最大化的回报函数


策略 ― 策略 $\pi$ 是映射状态到动作的$\pi:\mathcal{S}\longrightarrow\mathcal{A}$函数。

注意:如果对于一个指定的状态 $s$ 我们完成了行动 $a=\pi(s)$,我们认为执行了一个指定的策略 $\pi$。


价值函数 ― 对于一个指定的策略 $\pi$ 和指定的状态 $s$,我们定义如下价值函数$V^{\pi}$:

\[\boxed{V^\pi(s)=E\Big[R(s_0)+\gamma R(s_1)+\gamma^2 R(s_2)+...|s_0=s,\pi\Big]}\]

贝尔曼方程 ― 最优贝尔曼方程描述了最优策略 $\pi^*$ 的价值方程$V^{\pi^*}$:

\[\boxed{V^{\pi^*}(s)=R(s)+\max_{a\in\mathcal{A}}\gamma\sum_{s'\in S}P_{sa}(s')V^{\pi^*}(s')}\]

注意:我们注意到对于一个特定的状态$s$的最优策略 $\pi^*$ 是:

\[\boxed{\pi^*(s)=\underset{a\in\mathcal{A}}{\textrm{argmax}}\sum_{s'\in\mathcal{S}}P_{sa}(s')V^*(s')}\]

值迭代算法 ― 值迭代算法分为两步:

1) 首先我们初始化值:

\[\boxed{V_0(s)=0}\]

2) 我们通过之前的值进行迭代:

\[\boxed{V_{i+1}(s)=R(s)+\max_{a\in\mathcal{A}}\left[\sum_{s'\in\mathcal{S}}\gamma P_{sa}(s')V_i(s')\right]}\]

极大似然估计 ― 状态转移概率的极大似然估计如下:

\[\boxed{P_{sa}(s')=\frac{\#\textrm{状态 }s\textrm{ 下进行动作 }a\textrm{ 并且进入状态 }s‘\textrm{ 的次数}}{\#\textrm{状态 }s\textrm{ 下进行动作 }a\textrm{ 的次数}}}\]

$Q$ 学习 ― $Q$ 学习是一种 $Q$ 的无模型(model-free)估计,如下所示:

\[\boxed{Q(s,a)\leftarrow Q(s,a)+\alpha\Big[R(s,a,s')+\gamma\max_{a'}Q(s',a')-Q(s,a)\Big]}\]