Loading... # 2021.8.9 周记 ## 上一周的学习内容 ### 1. 生成式对抗网络 - GAN #### 基本概念 - Generator 的概念模型 生成器能将已知结构的简单分布转换成复杂的分布, 例如将一个 low-dim 的向量, 通过 Generator 转化为 high-dim 的向量. - Discriminator 以生成图像为例, 将 Generator 的输出图像转换成一个数字, 表示输出图像的真实性强弱, 越大表示越真实. Discriminator 的架构可以由自己决定, 可以是 CNN, Transformer 等, 只要产生自己想要的输入输出即可. #### GAN 的基本思想 Generator 和 Discriminator 是对抗关系(Adversarial). 随着 Generator 的不断进化, Discriminator也会不断进步. 在不断对抗的过程中, 生成的图像会不断的符合预期. #### GAN 的算法 1. 初始化 Generator 和 Discriminator 2. 对于每一次的迭代训练: - 固定 Generator - $G$ 不变, 只更新 Discriminator - $D$. 训练 Discriminator 的目的是分辨真正与生成两者之间的差异. 对于 Discriminator 来说, 这是可以是一个回归问题, 也可以是一个分类问题. - 固定 Discriminator - $D$ 不变, 只更新 Generator - $G$. 不断训练 Generator, 使其生成更真实的图像, 使其能够骗过 Discriminator (让 Discriminator 输出的值越大越好) 3. 不断重复第2步, 知道产生期望的内容. > 可以将 Generator 和 Discriminator 合并起来看作是一个巨大的整体网络. > > $$ > \vec{x} \to \boxed{\text{NN Generator}} \to \boxed{\text{image}} \to \boxed{\text{Discriminator}} \to \text{scalar} > $$ > > 更新 Generator 的时候就只更改前面几层, 更新 Discriminator 的时候就只更改后面几层. #### GAN 的理论 Generator 可以使用 $$ G^*= arg \min_g Div(P_G, P_{data}) $$ 来表示, 表示计算 $P_G$ 与 $P_{data}$ 这两个分布之间的距离, 找一个 Generator 尽量使该距离小. Divergence 可以用来衡量生成与真实的相似度. 因为不知道两个分布的具体样貌, 直接计算比较困难, 但是可以通过采样(Sampling)来解决. 计算Divergence 与 Discriminator 相关: - 定义 $V(D, G)$: 将图片 $y$ 放入 Discriminator 中, - 若 $y$ 来自于真实数据集 $P_{data}$ 中时, $V(D, G)$ 较大 - 若 $y$ 来自于产生数据集 $P_{G}$ 中时, $V(D, G)$ 较小 - 找出最大的 $V(D, G)$, 使其更贴近真实图像. 即 $D^*=arg \max_D V(D, G)$ - 因为 $\max_D V(D, G)$ 与 Divergence 有关, 所以可以用 $\max_D V(D, G)$ 代替 $Div(P_G, P_{data})$, 就实现不用知道 $P_G$ 和 $P_{data}$ 的具体样貌 就可以计算 Divergence. > 计算 $\max_D V(D, G)$ 的数值与 JS Divergence 有关. JS Divergence存在一些问题: > > - $P_G$ 与 $P_{data}$ 的分布通常是不重叠的 > - $P_G$ 与 $P_{data}$ 是高维空间在低维空间的形态(Manifold) > - 采样的数量不够多, 无法重叠 > 对于两个不重叠的 $P$, 结果将会是一个常数 $\log2$, 可以通过 Wasserstein Distance(推土距离)来解决 #### WGAN WGAN 是用 Wasserstein Distance 取代 JS distance 的 GAN. $$ \max_{D\in\text{1-Lipschitz}} E_{x \sim P_{data}}[D(x)]-E_{x \sim P_{G}}[D(x)] $$ > $D$ 应该是一个平滑的函数. > 解决这个问题通常使用Spectral Normalizarion. #### Discriminator 效能评估 *Inception Score* 输入图像 $x$, 经过图片分类系统, 得出一个几率分布 $P(y|x)$, 分布越集中则表明生成的图片越接近于真实图片. $$ x \to \boxed{\text{Off-the-shelf Image Classifier}} \to P(y|x) $$ - x: image - y: class, output of CNN 只采用 $P(y|x)$ 会产生一些问题, 比如: - Mode Collapse - Mode Dropping ##### 判断生成图片的多样性 每一张照片经过图片辨识系统后, 产生几率分布 $P(y^i, x^i)$. 将这些几率分布做平均, 即: $$ P(y) = \frac{1}{N}\sum_i P(y^i|x^i) $$ - $P(y)$ 越小, 平均之后的分布越平坦, 图片的多样性较好. ### 2. 集成学习 #### 集成学习 集成学习(ensemble learning): - 概念: 通过构建并结合多个学习器来完成学习任务 - 又称: 多分类器学习(multi-classifier system), 基于委员会的学习(committee-based learning) - 结构: 先产生一组 `个体学习器(individual learner)`, 再用某种策略将它们结合起来. 通常集成的个体学习器只包含同种类型, 称其为同质(homogeneous). 不同则为异质(heterogeneous) - 目的: 通过多个学习器的结合, 常可获得比单一学习器显著优越的泛化性能 - 类型: 根据个体学习器之间的依赖关系区分 - 强依赖: 必须串行生成的序列化方法, Boosting - 不存在强依赖: 可同时生成的并行化方法, Bagging和`随机森林(Random Forest)` > 个体学习器是为了解决同一个问题训练出来的, 不可能相互独立. 个体学习器的 **准确性** 和 **多样性** 本身是存在冲突的 #### Boosting > Boosting 是一族可将弱学习器升为强学习器的算法, 关注如何降低偏差 算法逻辑: - 先从初始训练集训练处一个基学习器 - 再根据基学习器的表现对训练样本分布进行调整, 使得先前基学习器做错的训练样本在后续受到更多关注 - 然后基于调整后的样本分布来训练下一个学习器 - 如此重复进行, 直至学习器数目达到预先指定的T值, 最终将这T个基学习器进行加权结合 > Boosting 族算法最著名的代表是 AdaBoost. > TODO: AdaBoost 算法基于加性模型的推导 #### Bagging 和随机森林 - 目的: 集成学习的目的是为了将多个弱学习器结合起来得到泛化性能更强的集成 - 需求: 获得更好的集成效果, 需要将其中的每个个体学习器尽可能独立 - 方法: 从样本数据集中产生出不同的训练子集, 并同时需要保证训练数据的一定数量 *Bagging*: 利用自助采样法[^1]通过样本数据集,产生 $T$ 个含 $m$ 个训练样本的采样集, 然后基于每个采样集训练出一个基学习器, 再将这些基学习器进行结合. *随机森林*: 随机森林是以决策树为基学习器构建Bagging集成的基础上, 进一步在决策树的训练过程中引入随机属性选择. #### 结合策略 常见的结合策略: - 平均法: 通常用于数值型输出 $h_i(\boldsymbol{x}) \in \mathbb{R}$ - 简单平均法: $H(\boldsymbol{x}) = \frac{1}{T}\sum_{i=1}^{T}h_i(\boldsymbol{x})$ - 加权平均法: $H(\boldsymbol{x})=\sum_{i=1}^Tw_ih_i(\boldsymbol{x})$ - 个体学习器性能相近时宜用简单平均法, 性能相差较大时宜使用加权平均法. - 投票法: 通常用于分类任务. - 绝对多数投票法(majority voting) - 相对多数投票法(plurality voting) - 加权投票法 (weighted voting) - 学习法: 通过另一个学习器来进行结合 - Stacking ### 3. 通过 Torch 实现线性回归模型 代码: https://github.com/beiyanpiki/mlbook/blob/main/notebooks/001%20%E7%BA%BF%E6%80%A7%E5%9B%9E%E5%BD%92%E6%A8%A1%E5%9E%8B.ipynb ## 本周学习计划 1. 周志华 《机器学习》 Ch.9 聚类 2. 李宏毅2021春机器学习课程 自监督式学习,自编码器 3. 看论文 4. 尝试自己实现一些模型的代码 [^1]: 2.2.3节 最后修改:2021 年 08 月 19 日 © 允许规范转载 赞 0 如果觉得我的文章对你有用,请随意赞赏