NNDL&机器学习笔记

记录新思想

Posted by chongjg on October 7, 2021

NNDL《神经网络与深度学习》及西瓜书《机器学习》笔记

B站网课链接

书、课件等

NNDL&机器学习笔记

  • NNDL《神经网络与深度学习》

    • 学生提问

      • ==为什么要使用logistic函数(而不是其他函数)进行分类?==(第三章提问)
      • ==为什么正则化不约束bias?==(第四章提问)
      • 为什么resnet网络效果好(第五章提问)
        • 缓解了梯度消失的问题
        • 实际模型深度很浅,也许可以看作很多个浅模型的集成
      • 序列到序列模型训练的时候,可以使用teach force的方法,也就是生成序列时的输入是target而不是前一时刻的输出
        • 这个方法的问题就是测试的时候如果一个预测出现较大偏差后面的预测都会受到较大影响
      • 递归神经网络能构建多叉树吗
    • 思考题

      • $\mathrm{softmax}$回归解二分类问题相当于没有偏置的$\mathrm{logistic}$回归(第三章思考题)
      \[y_1=\mathbf w_1^\mathrm T\mathbf x\\ y_2=\mathbf w_2^\mathrm T\mathbf x\\ p_1=\frac{\exp(y1)}{\exp(y1)+\exp(y2)}=\frac{1}{1+\exp((\mathbf w_2^\mathrm T-\mathbf w_1^\mathrm T)\mathbf x)}\\ p_2=1-p_1\]
      • 稳健性:对输入/参数加扰动,泛化性:在新的分布上的样本上
    • 学习笔记

    • 交叉熵及KL散度(Kullback-Leibler Divergence)(第三章)

      • ==TODO 信息论看书 TODO==

      • 自信息(Self Information):一个随机事件所包含的信息量 $I(x)=-\log p(x)$

      • 熵:随机变量$X$自信息的数学期望,用来衡量一个随机事件的不确定性,对于分布$p(x)$

        \[H(X)=-\sum_{x\in \mathcal X}p(x)\log p(x)\]
      • 熵编码:在对分布$p(y)$的符号进行编码时,熵$H(p)$是理论上最优的平均编码长度,这种编码方式称为熵编码

        理解

      • KL散度定义:用概率分布$q$来近似$p$时所造成的信息损失量

      \[\begin{align} \mathrm {KL}(p,q)&=H(p,q)-H(p)\\ &=\sum_xp(x)\log \frac{p(x)}{q(x)} \end{align}\]
    • 通用近似定理的理解(第四章)

      • 机器之心-在理解通用近似定理之前,你可能都不会理解神经网络
      • 如果使用分段函数显然可以以任意精度近似有界闭集函数,使用类似的思想,考虑每个神经元像分段函数分段一样去拟合,于是对于单个神经元,要求输入$\mathbf x\in[\mathbf x_l,\mathbf x_r]$的时候输出$y=y_0$,而输入$\mathbf x\notin[\mathbf x_l,\mathbf x_r]$的时候输出$y=0$,实际上也就是输入在一个区间时神经元激活,不在时被抑制,即找到超平面把输入区间划分开来
      • 上面的输入区间不好划分,可以做个差分,也就是对于单个神经元,要求$\mathbf x\in[\mathbf x_l,\infty)$时$y=\Delta y$,$\mathbf x\in(-\infty,\mathbf x_l]$时$y=0$,这样就可以通过一个高斜率的超平面将区间划分开来了
      • 基于这样的通用近似定理,其实可以发现神经网络的近似能力并没有表现出智能,如果真的按照这样的方式去进行近似,虽然能够有很好的近似效果,但是不具备任何泛化能力,且需要的神经元数量是非常庞大的,几乎不可能在实际中使用。
    • $1\times 1$卷积作用(第五章)

      • 实际上是把特征图在深度上进行了加权求和
    • 残差网络(第五章)

      • 期望一个非线性单元$f(\mathbf x,\theta)$去逼近目标函数$h(\mathbf x)$,发现当$h(\mathbf x)=\mathbf x$时拟合困难,于是将目标函数拆成两部分,恒等函数和残差函数,转而使用$f(\mathbf x,\theta)$去逼近残差函数。

        \[\begin{align} h(\mathbf x)&=\underbrace{\mathbf x}_{恒等函数}+\underbrace{(h(\mathbf x)-\mathbf x)}_{残差函数}\\ &=\mathbf x+f(\mathbf x,\theta) \end{align}\]
      • 由于$\mathbf x$的存在,$\frac{\partial h(\mathbf x)}{\partial \mathbf x}=\mathbf 1+\frac{\partial f(\mathbf x,\theta)}{\partial\mathbf x}$,可以有效避免梯度消失的问题

    • 循环神经网络的通用近似定理(第六章)==TODO==


  • 西瓜书《机器学习》

    • 第六章 支持向量机

      • 任意样本点$\mathbf x$到超平面$(\mathbf w,b)$的距离可写为

        \[|r|=\frac{|\mathbf w^\mathrm T\mathbf x+b|}{||\mathbf w||}\]

        证明:

        超平面方程:

        \[\mathbf w ^\mathrm T\mathbf x+b=0\]

        显然向量$\mathbf w$与该超平面垂直(向量$\mathbf t$与超平面平行充要条件为$\mathbf w^\mathrm T\mathbf t=0$)

        则有

        \[\mathbf w^\mathrm T(\mathbf x+r\frac{\mathbf w}{||\mathbf w||})+b=0\\ r||\mathbf w||=-(\mathbf w^\mathrm T\mathbf x+b)\]
      • 支持向量机中的核技巧应用不是直接将样本从样本空间转换到特征空间,因为特征空间的维度可能很高,甚至是无穷维,为了避开这个障碍,不是直接进行转换,而是设置一个核函数表示两个样本在特征空间中的距离(不关注如何转换到特征空间)

        \[\kappa(\mathbf x_i,\mathbf x_j)=<\phi(\mathbf x_i),\phi(\mathbf x_j)>=\phi(\mathbf x_i)^\mathrm T\phi(\mathbf x_j)\]

        如高斯核:

        \[\kappa(\mathbf x_i,\mathbf x_j)=\exp(-\frac{||\mathbf x_i-\mathbf x_j||^2}{2\sigma^2})\]
    • 第十章 降维与度量学习

      • $k$-近邻学习

        • 工作机制:给定测试样本,与某种距离度量,找出训练集中与其最靠近的$k$个训练样本,然后基于这$k$个“邻居”的信息来进行预测。
          • 比如分类任务中,经常使用”投票法“,回归任务中经常使用“平均法”
        • 没有显式的训练过程
        • $k$是一个重要的超参数
        • 考虑$k=1$的$k$近邻分类器
          • image-20211022161922229
      • 低维嵌入(只保留部分特征值)

        • 现实应用中属性维度经常成千上万,几乎不可能满足密采样条件

        • 事实上,高维情况下出现的数据样本稀疏、距离计算困难(难以确定每个维度的重要性)等问题,是所有机器学习方法共同面临的严重障碍,被称为“维度灾难”

        • 降维:通过某种数学变换将原始高维属性空间转变为一个低维的“子空间”,在这个子空间中样本密度大幅提高,距离计算也变得容易。即高维空间中的一个低维“嵌入”(embedding)

        • image-20211022170350157

        • 多维缩放(Multiple Dimensional Scaling, MDS):降低维度的同时保持高维空间的距离

          • 总共$m$个样本${\mathbf x_i}$,原始空间的距离矩阵为$\mathbf D$,设降维后的向量矩阵为$\mathbf Z$,使矩阵$\mathbf Z$去中心化(即每一个维度减去其均值)

            • 令$\mathbf B=\mathbf Z^\mathrm T\mathbf Z$,由于$\mathbf Z$去中心化,有$\sum_i \mathbf z_i=\mathbf 0, \sum_i \mathbf B_{i,j}=\sum_j\mathbf B_{i,j}=\mathbf 0$

              通过$\mathbf D$求解$\mathbf B$

              对$\mathbf B$矩阵进行特征值分解即可得到$\mathbf B=\mathbf {V\Lambda V}^\mathrm T$,得到$\mathbf Z=\mathbf \Lambda^{1/2}\mathbf V^\mathrm T$

              通过选择少数最大的几个特征值构成对角阵来实现降维的目的

      • 主成分分析

      • \[\begin{align} L&=\parallel \mathbf {DD}^\mathrm T\mathbf X-\mathbf X\parallel_F^2\\ &=\mathrm{tr}\Big((\mathbf {DD}^\mathrm T\mathbf X-\mathbf X)^\mathrm T(\mathbf {DD}^\mathrm T\mathbf X-\mathbf X)\Big)\\ &=\mathrm{tr}\Big((\mathbf X^\mathrm T\mathbf {DD}^\mathrm T-\mathbf X^\mathrm T)(\mathbf {DD}^\mathrm T\mathbf X-\mathbf X)\Big)\\ &=\mathrm{tr}\Big(\mathbf X^\mathrm T(\mathbf{DD}^\mathrm T-\mathbf I)^2\mathbf X\Big)\\ &=\mathrm{tr}\Big(\mathbf X^\mathrm T(\mathbf{DD}^\mathrm T\mathbf{DD}^\mathrm T-2\mathbf{DD}^\mathrm T+\mathbf I)\mathbf X\Big)\\ &=\mathrm{tr}\Big(\mathbf X^\mathrm T(\mathbf I-\mathbf{DD}^\mathrm T)\mathbf X\Big)\\ &=\mathrm{tr}\Big(\mathbf X^\mathrm T\mathbf X-\mathbf X^\mathrm T\mathbf {DD}^\mathrm T\mathbf X\Big) \end{align}\]
      • \[\min_\mathbf D\ \mathrm{-tr}(\mathbf X^\mathrm T\mathbf{DD}^\mathrm T\mathbf X)\\ \mathrm{s.t.}\ \mathbf D^\mathrm T\mathbf D=\mathbf I\\ \mathbf{XX}^\mathrm T\mathbf D=\lambda\mathbf D\]
      • 核化线性降维

        • 核化线性降维
      • 流形学习
        • 等度量映射
          • “流形”是在局部与欧氏空间同胚的空间,换言之,它在局部既有欧氏空间的性质,能用欧氏距离来进行距离计算。
          • 假设邻近样本在低维空间中的距离与原高维空间接近
        • 局部线性嵌入
          • 使降维后依然保持邻域内样本之间的线性关系

          • \[L=\frac{1}{2}\parallel \mathbf x-\mathbf{Nw}\parallel_2^2+\lambda (\mathbf 1-\mathbf w^\mathrm T\mathbf 1^k)\\ \frac{\partial L(\mathbf w,\lambda)}{\partial \mathbf w}=-\mathbf N^\mathrm T(\mathbf x-\mathbf {Nw})-\lambda\mathbf 1^k\\\]
      • 度量学习(距离度量学习)

        • 事实上,每个低维空间对应了样本属性上定义的一个距离度量,寻找合适的空间实质上就是在寻找一个合适的距离度量
        • 直接学习出一个合适的距离度量就是度量学习的基本动机