1_3《深度学习500问》基础篇

(仅对书中部分内容进行摘录和补充)

第一章 数学基础

理解张量(麻辣烫 x,tensor √)

  • 标量(scalar)没有方向,也称为0阶张量(Tensors of rank 0)
  • 向量每个分量只由一个基向量构成,也称为1阶张量(Tensors of rank 1)
  • 考虑固体物体中某点的受力情况,空间表示需要引入1组(3个)基向量来表示一个向量,受力表示也需要引入1组(3个)基向量来表示第二个向量,共3x3个基向量组合
  • 如果想要表示所有的平面与平面上的力的组合,需要9个分量,每个分量有2个下标(index)来表示该分量由哪两个基向量组合构成。例:$A_{xx}$表示在法线为$x$方向的平面上的方向为$x$方向的力
  • 这9个分量与9个基向量组合共同组成了2阶张量(Tensors of rank 2)
  • 以此类推,3阶张量(Tensors of rank 3)需要3x3x3=27组基向量

张量所描述的物理量是不随观察者或者说参考系而变化的,当参考系变化时(基向量变化),其分量也会相应变化,最后结果就是基向量与分量的组合(张量)保持不变

缺乏实数上分布的先验知识,默认选择正态分布总是不会错的, 理由如下:

  • 中心极限定理告诉我们, 很多独立随机变量均近似服从正态分布, 现实中很多复杂系统都可以被建模成正态分布的噪声, 即使该系统可以被结构化分解.
  • 正态分布是具有相同方差的所有概率分布中, 不确定性最大的分布, 换句话说, 正态分布是对模型加入先验知识最少的分布

第二章 机器学习基础

​常用分类算法的优缺点:

算法 优点 缺点
Bayes 贝叶斯分类法 1)所需估计的参数少,对于缺失数据不敏感。 <br>2)有着坚实的数学基础,以及稳定的分类效率。 1)需要假设属性之间相互独立,这往往并不成立。(喜欢吃番茄、鸡蛋,却不喜欢吃番茄炒蛋)。 <br>2)需要知道先验概率。 <br>3)分类决策存在错误率。
Decision Tree 决策树 1)不需要任何领域知识或参数假设。 <br>2)适合高维数据。 <br>3)简单易于理解。 <br>4)短时间内处理大量数据,得到可行且效果较好的结果。 <br>5)能够同时处理数据型和常规性属性。 1)对于各类别样本数量不一致数据,信息增益偏向于那些具有更多数值的特征。 <br>2)易于过拟合。 <br>3)忽略属性之间的相关性。 <br>4)不支持在线学习。
SVM支持向量机 1)可以解决小样本下机器学习的问题。 <br>2)提高泛化性能。 <br>3)可以解决高维、非线性问题。超高维文本分类仍受欢迎。 <br>4)避免神经网络结构选择和局部极小的问题。 1)对缺失数据敏感。 <br>2)内存消耗大,难以解释。 <br>3)运行和调参略烦人。
KNN K近邻 1)思想简单,理论成熟,既可以用来做分类也可以用来做回归; <br>2)可用于非线性分类; <br>3)训练时间复杂度为O(n); <br>4)准确度高,对数据没有假设,对outlier不敏感; 1)计算量太大。 <br>2)对于样本分类不均衡的问题,会产生误判。 <br>3)需要大量的内存。 <br>4)输出的可解释性不强。
Logistic Regression 逻辑回归 1)速度快。 <br>2)简单易于理解,直接看到各个特征的权重。 <br>3)能容易地更新模型吸收新的数据。 <br>4)如果想要一个概率框架,动态调整分类阀值。 特征处理复杂。需要归一化和较多的特征工程。
Neural Network 神经网络 1)分类准确率高。 <br>2)并行处理能力强。 <br>3)分布式存储和学习能力强。 <br>4)鲁棒性较强,不易受噪声影响。 1)需要大量参数(网络拓扑、阀值、阈值)。 <br>2)结果难以解释。 <br>3)训练时间过长。
Adaboosting 1)adaboost是一种有很高精度的分类器。 <br>2)可以使用各种方法构建子分类器,Adaboost算法提供的是框架。 <br>3)当使用简单分类器时,计算出的结果是可以理解的。而且弱分类器构造极其简单。 <br>4)简单,不用做特征筛选。 <br>5)不用担心overfitting。 对outlier比较敏感

线性判别分析 LDA

第三章 深度学习基础

损失函数 Center Loss

增大 Batch_Size 的优缺点分析

  • 内存利用率提高,矩阵乘法的并行化效率提高;但可能爆内存
  • 一次 epoch所需的迭代次数减少;但达到同样的精度耗时更长
  • Batch_Size 越大,其确定的下降方向越准,但边际收益是递减的

批归一化(Batch Normalization,BN)算法的优点:

  • 减少了人为选择参数。在某些情况下可以取消或减少 dropout 和 L2 正则项
  • 减少了对学习率的要求。不同的学习率选择下,算法都够快速训练收敛
  • 破坏原来的数据分布,一定程度上缓解过拟合
  • 减少梯度消失,加快收敛速度,提高训练精度

Weight Normalization 和 Batch Normalization 的比较:

  • Weight Normalization 是对网络参数/权值$W$ 进行 normalization
  • Batch Normalization 是对网络某一层输入数据进行 normalization
  • 相比于 BN,WN 不依赖 minibatch,不需要额外的存储空间来保存 mini batch 的均值和方差,速度快/额外的计算开销小,但更需要注意初始参数值的选择
  • BN 不适用于动态的网络结构、RNN网络、噪声敏感的强化学习、生成模型(GAN,VAE),但 WN 适用;相比于 BN ,WN 引入的噪声要更少一些

图像中的常用数据增强方法:

  • Color Jittering:对颜色的数据增强:图像亮度、饱和度、对比度变化
  • PCA Jittering:首先按照RGB三个颜色通道计算均值和标准差,再在整个训练集上计算协方差矩阵,进行特征分解,得到特征向量和特征值,用来做PCA Jittering;
  • Random Crop:采用随机图像差值方式,对图像进行裁剪、缩放;包括Scale Jittering方法(VGG及ResNet模型使用)或者尺度和长宽比增强变换;
  • Random Scale:尺度变换;Horizontal/Vertical Flip:水平/垂直翻转;
  • Shift:平移变换;Rotation/Reflection:旋转/仿射变换;
  • Noise:高斯噪声、模糊处理;Label Shuffle:类别不平衡数据的增广

在训练过程中,每一层的输入分布会随着前一层参数的变化而变化(通过层层叠加,高层的输入分布变化会非常剧烈),这种现象称之为 Internal Covariate Shift,简称 ICS

  • ICS 会导致每个神经元的输入数据不再是“独立同分布”
  • 上层参数需要不断适应新的输入数据分布,降低学习速度
  • 下层输入的变化可能趋向于变大或者变小,上层落入饱和区,导致学习早停
  • 每层的更新都会影响到其它层,因此每层的参数更新策略需要尽可能的谨慎

往年同期文章