机器学习学习笔记2(李宏毅网课)

机器学习学习笔记2(李宏毅网课)

一、深度学习

  • Fully Connected Feedforward Network
    相邻层的每一个神经元都相互之间连接
     其包含有输入层、隐藏层、输出层。
  • 深度的含义:即为有多个隐藏层
    输入输出关系如下:(注意表达为矩阵的形式)
  • Loss Function的形式为Label与输出之间的Cross Entropy: 求解的方法仍然是用gradient descent的方法。

二、反向传播

  • 基础知识前提:链式法则
  • 目的:是为了解决求解cross entropy时gradient descent的更简便的算法
    求解loss function时问题如下: 求解梯度问题分为了前向传播和后向传播两个问题: 前向传播问题简单,直接求导即可。
    后向传播求解导数时,从最后一层不断向前面的layer推导导数。便形成了所谓的反向传播。

三、卷积神经网络(CNN)

  • 卷积神经网络的概念:前面介绍的是全连接的神经网络,而卷积神经网络意思是并非每一个神经元都进行了连接,仅有部分相连。所需要的参数便大大减少,一定程度上可以减少overfitting的情况。
  • 为什么图像适合卷积神经网络:1.因为图像的feature可能只有图片的一小部分 2.相同的feature出现再图像的不同部分可以share神经网络
  • 一个卷积层包括了:1、convolution 2.max pooling(一个矩阵中选出并仅保留参数最大的那一个),可以叠加多个卷积层。 最终,输出层需要做flatten,将所有的维度拉直,最终仍然是用一个fully connected network层中。
    convolution实现了上述图片的两个特性,而max pooling实现的是subsamplling。
    一个CNN的filter如下:
  • CNN中的数量关系:1.一个image的长和宽若分别为2525 由一个33的filter过后便为一个2323的image。即维度减少了filter的维度-1。 2.一个convoluton层有几个filter,那么便会有几个feature的层。即若有3个filter,那么经过这一层的convolution处理之后,tensor便为32323。 3.maxpooling中的数量关系:若为一个22的maxpooling,即为2*2中便会选出一个最大,那么image的长和宽直接折半。
  • What does CNN learn?
    定义一个filter的activation: aijk为filter矩阵中的entry。现在我们想要求解一个image的输入x,希望让这个filter的activation最大。
    当考虑输出层时: 后面的式子为基于数字识别为白纸黑字先验的regulization
  • Deep Dream:将某一个hidden layer的正值更大,而负值更小,便可以夸大这个hidden layer预设想要看到的图像。

三、为什么要“深度”学习

深层次网络相较于一层的网络而言,错误率会更小。
原因如下:深层网络相当于一个模块化的工作:等价于写了很多子函数,并有层次地将其链接起来。效率相较于单层网络更高。

四、循环神经网络(RNN)

  • RNN的概念:hidden layer的输出被保存在memory中,并可将其考虑作为其他层的输入。
  • 具体实现例子:LSTM(Long short-term Memory) 上图结构便为一个神经元,同样其应该为deep。
    该神经元有四个输入:1.数据输入 2.另外3个向量分别控制input gate, forget gate, output gate。
  • RNN的loss function仍然是与lable的vector做互信息的结果,仍然是用gradient descent的方法。
  • RNN network较难train的原因是其error surface非常陡峭,入下图所示 原因:因为参数多次重复使用,就如1.011000与0.991000,较小的误差便会导致结果相差很大。
  • LSTM 可以解决gradient vanish的问题(解决梯度很平的问题,但陡峭问题无法解决)因为其memory cell是当前输入与之前memory的相加,之前存在的数据不会被洗掉。(保证forget gate较大的bias ,较多时候是不会洗掉memory的值的。

五、集成(Ensemble)

方法一、bagging

适用的场合为:bias较好,但容易overfitting。
具体方法为:训练出多个模型,最终average或者voting的方法。

方法二、boosting

  • 目的是我为了提升week classifer的性能。让错误率为50%的model可以降为0%。
  • 基本想法为找到另外一个complementary的f2来辅助f1降低错误率。实现的方法主要:1、在不同的数据集上训练 2、re-weighting trainning data。
  • 1.定义错误率: μ \mu μ为权重,Z为权重和
    2.首先,假定weight均为1,然后调整weight使在该数据集上错误率 ε \varepsilon ε降低到50%,分类正确的权重除以d,分类错误的权重乘上d。求解出来的d结果如下(省略了数学推导): 接下来,在新的data set上用修改后的weight参数训练新的weight,不断重复相同的工作。
  • 输出层分类器的最终错误率 ε \varepsilon ε 数学上可以证明,不断找comentary函数,其最终的错误率一定会越来越小。
  • Boost的错误率: 为了减小错误率,等价于解决一下问题: 首先,上图的相同方向,意味着这二者的乘积为越大越好,暂时忽略 α \alpha αt,求出该情况下的ft。然后根据该ft,求解L(g)对于 α \alpha αt的偏微分为0的 α \alpha αt,便可不断更新g。可以求解出 α \alpha αt为下式:

方法三:stacking

多个模型训练完成之后:输出层为使用一个regression之类的自动classify。用于判定前面模型的好坏,赋予不同的权重。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值