知识星球上的小知识点

pic1

3月19号

  1. 降维一般指的是数据,而稀疏一般指的是参数向量.PCA是数据本身冗余性降维,而L1是根据预测值去选择相关特征,出发点不同。
  2. YOLO模型预训练时ImageNet像素减半,测试像素扩大一倍?我觉得应该是使能检测出更小物体.
  3. 机器翻译中是否存在数据不平衡的问题?一般如何解决?机器翻译中存在着这些问题,现在流行的做法是Transfermer的方式,也是最近Yan Lecun 提出的半监督学习.就是充分发挥数据集的资源,从过去的预测未来,到从未来预测过去,把数据蕴含的内容全部挖掘出来.
  4. 在用faster RCNN训练一组图片,几次迭代后会出现Nan的情况,这是出现了梯度爆炸,输入图像需要进行归一化,不要用0-255.
  5. 模型中“变量的重要程度”和”变量对目标变量的相关性”不等价?相关性定义有比如说皮尔逊相关性,是一种线性指标,如y=x^2,y=x,两个模型的x的一样重要,但是相关性不一样.
  6. 在Logistic Regression 中,如果同时加入L1和L2范数,会产生什么效果??
  7. 是否所有聚类算法需要对数据进行标准化或归一化?一般涉及到空间距离计算的,需要进行归一化或标准化.其他情况,具体问题具体分析.
  8. 最新的比较实用的分类网络——fishernet.

3月20号

  1. 什么是熵,熵怎么求?
    熵是一种不确定度的度量,后俩香农引进了信息熵,可以认为是系统有序化程度的一个度量.
    常见熵的定义:$H(X)=-\sum_xp(x)logp(x)$
    联合熵:两个随机变量X,Y的联合分布,可以形成联合熵joint entropy
    条件熵:$H(Y|X)=\sum_x p(x)\sum_y p(y|x)log p(y|x)=\sum_{x,y}p(x,y)logp(y|x) $
    相对熵KL散度:$D(p||q)=\sum_xp(x)log\frac{p(x)}{q(x)}$
    互信息:$I(X,Y)=\sum_{x,y}p(x,y)log\frac{p(x,y)}{p(x)p(y)}$
  2. 为什么图像处理通常用CNN?卷积核是如何提取特征的?为什么卷积核能够提取特征?
    CNN具有权值共享和稀疏连接特点,相比全连接神经网络,可以保留图像的空间信息,同时可以大幅降低训练参数的数量
    卷积核如何提取特征?
    卷积核相当于传统图像处理里的滤波器,它能与图像对应位置上的像素作点积提取得到该位置的特征
    为什么卷积核能够提取信息?
    与传统的滤波器不同卷积核上的值是通过学习得到的,他能通过反向传统学习到的参数值使得loss值下降.从而再次使用卷积核得时候认为提取到得特征是对我们有用的,能降低loss的
  3. batch_size如何影响测试正确率
    我所了解的是对测试,没有什么影响.往往会对train有影响.train时的batch_size大一点往往会快一点,但是可能会超内存.当然也并非越大越好,也是需要一点点调参的。

  4. L0、L1、L2正则化
    L0正则化用来计算非零参数的个数来作为正则化项,以防止过拟合.但是L0正则化很难求解,是一个NP难问题,因此一般采用L1正则化。
    L1正则化在实际中往往替代L0正则化,来防止过拟合.人称Lasso。
    目的是约束模型参数的绝对值大小之和.
    L2正则,是对各个参数的平方和再求平方根.它可以使W的每个元素都很小,都接近于0.但与L1范数不一样,它不会是每个元素为0,而是只是接近0.(或说是稠密的接近0)人称岭回归.
    实际上正则化参数等价于参数引入先验分布,使得模型复杂度变小(缩小解空间)。

异常检测算法

检验数据是否有录入错误以及有不合常理的数据的过程.忽视异常值的存在是十分危险的,不加剔出地把异常值包括进数据地计算分析过程中,对结果会产生不良影响,重视异常值地出现,分析其产生地原因,常常成为发现问题进而改进决策的契机.

  1. IForest思想
    该方法属于非参数化的无监督方法,即不用定义数学模型也不需要标记的训练.对于如何查找哪些点是否容易被孤立(isolated),iForest使用了一套非常高效的策略.假设我们用一个随机超平面来切割(split)数据空间(data space),切一次可以生成两个子空间.之后我们继续用随机超平面来切割每个子空间,循环下去,直到每个子集空间里面只有一个数据点为止.直观上来讲,我们可以使用那些密度很高的簇是可以被切很多次才会停止切割,但是那些密度很低的点很容易很早的停到一个子空间.
  2. IForest算法步骤
    IForest由t个iTree(isolation tree)孤立树组成,每个iTree是一个二叉树结构,其实现步骤如下:
    (1)从训练数据中随机选择若干个样本点作为subsample,放入树的根节点
    (2)随机选择一个特征作为新节点,在当前特征数据中随机产生一个切割点p——切割点产生于当前节点数据中指定维度的最大值和最小值之间
    (3)从此切割点生成一个超平面,然后将当前节点数据空间划分为2个子空间:把指定维度里小于p的数据放在当前节点的左孩子,把大于等于p的数据放在当前节点的右孩子.
    (4)在孩子节点中递归步骤(2)和(3),不断构造新的孩子节点,直到孩子结点中只有一条数据(无法再继续切割)或孩子节点已经达到树的限定高度.

获得t个iTree后,iForest训练就结束,然后我们可以用生成的iForest来评估测试数据了.对于一个训练数据x,我们令其遍历每一棵树iTree,然后计算x最终落在每个树的第几层(x在树的高度),最后我们可以得出x在每棵树的高度平均值h(x).此时我们用下面公式计算样本点x的异常概率

其中m为样本个数.c(m)的表达式为

其中$\zeta是欧拉常数$,s(x,m)的取值范围是[0,1],取值越接近1,则异常点的概率越大.
pic2
个人见解:

  1. iForest具有线性时间复杂度.每棵树可以互相独立生成.通常树的数量越多,算法越稳定.
  2. iForest不适用于特别高维的数据,优于每次切数据空间都是随机选取一个维度,建完树后仍然有大量的维度信息没有使用,导致算法可靠性降低.高维空间还可能存在大量噪音维度或无关维度,影响树的构建.
  3. iForest近对Global Anomaly 敏感,即全局稀疏点敏感,不擅长处理局部相对稀疏点(local Anomaly)
-------------本文结束感谢您的阅读-------------