ps:了解一些新的概念和知识,是自己的理解,不一定正确,如有不对,欢迎指正~

了解了卷积神经网络之后我们再来了解几个东西

残差学习

从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。但是,实际上却并非如此。

纵轴是错误率,可以看到56层的深度,比20层还要差。这是一个神经网络的瓶颈。
何恺明博士提出了残差学习来解决这个问题。
我们假设当输入为x的时候,学习到的特征为H(x),我们定义F(x)=H(x)-x为残差,我们让下一层的输入为F(x)+x,那么如果残差是0的时候,下一层的输入就是x了,也就意味着做了一个恒等映射。这样可以保证,最起码增加深度的时候,这个网络不会退化,因为他最差就什么也不学,相当于没加。而且一般残差不会为0,这样我们就可以保证在输入特征的基础上学到新的特征。如图是残差模块的示意图。

ResNet网络参考了VGG19网络,在其基础上进行了修改,加入了残差单元,在各项比赛摘得桂冠。

RNN

RNN,循环神经网络。与CNN最大的不同就是RNN具有“记忆”能力。RNN擅长处理序列数据(具有前后顺序关系的)。
这是如何做到的呢,传统的神经网络输入一句话,得到一个结果。在输入一句话,再得到一个结果。那么想象一下对话的场景,如果你和一个人工智能对话,他不能只根据你说的这句话,输出一个结果,这样不够智能,如果他能把之前的对话都记录下来,然后你的每一句话,都根据之前的所有对话得出回答。这才更智能,更像是人与人的聊天。所以,RNN的做法就是每一次学习的时候,把上一次的状态加进来一起学习。这就让他有了“记忆”功能。

GAN

GAN(生成式对抗网络,Generative adversarial network)。GAN可以生成不存在于真实世界的数据,用于图像生成和数据增强。模型通过框架中两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。
以图像为例子,假设我们有两个网络,G(Generator)和D(Discriminator)。

  • G是一个生成图片的网络,它接收一个随机的噪声z,通过这个噪声生成图片,记做G(z)。
  • D是一个判别网络,判别一张图片是不是“真实的”。输出1为真,反之为0.
    在训练过程中,生成网络G的目标就是尽量生成真实的图片去欺骗判别网络D。而D的目标就是尽量把G生成的图片和真实的图片分别开来。这样,G和D构成了一个动态的“博弈过程”。
    最后博弈的结果是什么?在最理想的状态下,G可以生成足以“以假乱真”的图片G(z)。对于D来说,它难以判定G生成的图片究竟是不是真实的,因此D(G(z)) = 1。这样我们的目的就达成了:我们得到了一个生成式的模型G,它可以用来生成图片。

迁移学习

我们都知道,表现好的有监督学习必然需要大量的标注数据,注数据是一项枯燥无味且花费巨大的任务,如何充分利用之前标注好的数据,同时又保证在新的任务上的模型精度呢?所以有了迁移学习。
目前尚无统一的对于迁移学习的定义。从广义上讲,只要我们利用了已有的知识、模型、结构来帮助我们达成在目标数据上的学习目标,那么这一过程就可称之为迁移学习。

了解两种方式:

  • 把已经训练好的网络的权重参数拿来,当作你的网络的初始化,然后拿你的数据,在此基础上进行训练学习。
  • 直接把别人训练好的权重参数拿来,当作你的权重参数。后面的全连接层自己来写,完成你的任务。

知识蒸馏

知识蒸馏指的是将复杂模型(teacher)中学到的知识迁移到简单模型(student)中去。
一般来说,我们认为teacher模型具有强大的能力和表现,而student模型则体量很小。通过知识蒸馏,希望student模型能尽可能逼近亦或是超过teacher模型,从而用更少的复杂度来获得类似的预测效果,实现模型的压缩和量化

上面说的迁移学习,一般认为模型的参数保留了模型学到的知识,常见的迁移学习的方式就是在一个大的数据集上先做预训练,然后使用预训练得到的参数在一个小的数据集上做fine-tuning(两个数据集往往领域不同或者任务不同),例如先在Imagenet上做预训练,然后在COCO数据集上做检测。

蒸馏神经网络想做的事情,本质上很接近迁移学习。(知识蒸馏开山之作:Hinton的Distilling the Knowledge in a Neural Network。)论文中,作者认为可以将模型看成是黑盒子,知识可以看成是输入到输出的映射关系。因此,我们可以先训练好一个teacher网络,然后将teacher的网络的输出结果 q作为student网络的目标,训练student网络,使得student网络的结果pred接近q。
所以,整个做法就是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。从而将一个网络的知识转移到另一个网络,也可以将多个网络学到的知识转移到一个网络中去。

end-to-end

如果看早几年15年左右的论文,经常出现这个词语,说端到端的神经网络,现在貌似不多了。因为现在很多都是端到端的网络。
端到端指的是输入是原始数据,输出是最后的结果
非端到端就是说:输入端不是直接的原始数据,而是在原始数据中提取的特征。

机器学习:残差学习、RNN、GAN、迁移学习、知识蒸馏相关推荐

  1. 【李宏毅机器学习笔记】 17、迁移学习(Transfer Learning)

    [李宏毅机器学习笔记]1.回归问题(Regression) [李宏毅机器学习笔记]2.error产生自哪里? [李宏毅机器学习笔记]3.gradient descent [李宏毅机器学习笔记]4.Cl ...

  2. 机器不学习:初识迁移学习

    机器不学习 jqbxx.com-专注机器学习,深度学习,自然语言处理,大数据,个性化推荐,搜索算法,知识图谱 虽然我不是专门研究迁移学习的,但是作为一个AI研究者,就如题图吴老师所说,迁移学习极为重要 ...

  3. 吴恩达深度学习笔记(67)-迁移学习(Transfer learning)

    https://www.toutiao.com/a6644868806923518471/ 2019-01-11 07:36:41 迁移学习(Transfer learning) 深度学习中,最强大的 ...

  4. 整理学习之深度迁移学习

    迁移学习(Transfer Learning)通俗来讲就是学会举一反三的能力,通过运用已有的知识来学习新的知识,其核心是找到已有知识和新知识之间的相似性,通过这种相似性的迁移达到迁移学习的目的.世间万 ...

  5. 目标检测迁移学习_使用迁移学习检测疟疾

    目标检测迁移学习 Written by Francesco Palma and Isaac Rosat 由Francesco Palma和Isaac Rosat撰写 In this article, ...

  6. 【深度学习系列】迁移学习Transfer Learning

    在前面的文章中,我们通常是拿到一个任务,譬如图像分类.识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性.时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型, ...

  7. 深度学习《GAN模型学习》

    前言:今天我们来一起学习下GAN神经网络,上一篇博文我先用pytorch运行了几个网上的代码例子,用于生成MNIST图片,现在我才反过来写GAN的学习,这次反了过来,效果也是很显而易见的,起码有个直观 ...

  8. 迁移学习之深度迁移学习

    深度迁移学习即采用深度学习的方法进行迁移学习,这是当前深度学习的一个比较热门的研究方向. 深度学习方法对非深度方法两个优势: 一.自动化地提取更具表现力的特征: 二.满⾜了实际应用中的端到端 (End ...

  9. 【学习笔记】迁移学习分类

    什么是迁移学习 通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性,用成语来说就是举一反三.由于直接对目标域从头开始学习成本太高,我们故而转向运用已有的相关知识来辅助尽 ...

  10. Deep CARs:使用Pytorch学习框架实现迁移学习

    全文共13449字,预计学习时长26分钟或更长 图片来源:https://www.pexels.com/photo/vehicles-parked-inside-elevated-parking-lo ...

最新文章

  1. Android之工程目录介绍
  2. win7下的iis配置
  3. 利用Docker/Ansible实现轻量集群服务部署(视频演示+彩蛋)
  4. mysql 中文字段名_MySQL全文索引怎么做?| 教程分享
  5. sqlmap 注入方式、使用总结
  6. 解决 Qt5 报错 This application failed to start because it could not find or load the Qt platform plugin
  7. Suricata默认规则集相关
  8. 3-1 Aruba交换机实用配置-VSF 2020
  9. android记账app开发报告,【安卓开发】简单记账app功能实现开发-期末大作业个人总结...
  10. 咖啡加盟10年经验分享:咖啡店12种危机处理方式,提升回头客
  11. 块级元素、行内元素、行内块级元素的特点
  12. sql登录名和用户名_通过分配角色和权限来移动或复制SQL登录名
  13. 白杨SEO:从百度一下到抖音搜索关键词进行查找信息,挖掘用户需求的新机会你知道吗?
  14. #每天一篇论文#(216/365)Adaptive Tracking Control of Nonholonomic Mobile Manipulators Using Recurrent Neura
  15. 【C/C++】多维向量vector
  16. 偶遇Chrome浏览器“喔唷,崩溃啦”,错误代码(STATUS_STACK_BUFFER_OVERRUN)
  17. Eclipse开发工具的使用
  18. pta数据结构-线性表(判断题和选择题)
  19. RouterOS 固定IP接入上网设置教程(超详细)
  20. 全国计算机比赛ccf比赛时间,2019年全国青少年信息学奥林匹克相关通知

热门文章

  1. 用 CSS 隐藏页面元素
  2. ip pv uv及相应统计shell
  3. KVC 与 KVO 理解
  4. 关于使用FMDB往数据库里插入空字符串@后,再读出来是什么东西的问题
  5. 未能加载文件或程序集“****”或它的某一个依赖项。试图加载格式不正确的程序。解决方案总结...
  6. 分享一个查看JSON的程序
  7. 推荐:“创建MOSS2007自定义字段类型实例”
  8. 设计模式实现一个简单的缓存
  9. idea面板右下角的切换分支找不到
  10. com.github.pagehelper.PageHelper cannot be cast to org.apache.ibatis.plugin.Interceptor和oracle不识别