柠檬少年|迁移学习—通俗易懂地介绍(常见网络模型pytorch实现)

题外话:不知不觉已经更新了二十篇微推 , 大家可能会发现怎么可能更新那么平凡 , 那是我之前在其他平台有发布过的博客 , 经过简单修改 , 顺便当作复习一遍了 。 之后的话肯定会持续更新 , 但肯定不会像之前那样日更啦 。
之后半年左右主要聚集于

  • 数据分析
  • 目标检测 Faster R-CNNSSDYOLO
  • NLP 基础
  • 推荐系统基础+工业落地应用
  • 算法/数据结构
  • kaggle、天池等部分竞赛项目
  • golang(区块链基础)
  • django web等其他实战
欢迎大家持续关注~一起进步!
前言你会发现聪明人都喜欢”偷懒”, 因为这样的偷懒能帮我们节省大量的时间, 提高效率. 还有一种偷懒是 “站在巨人的肩膀上”. 不仅能看得更远, 还能看到更多. 这也用来表达我们要善于学习先辈的经验, 一个人的成功往往还取决于先辈们累积的知识. 这句话, 放在机器学习中, 这就是今天要说的迁移学习了, transfer learning.
什么是迁移学习?迁移学习通俗来讲 , 就是运用已有的知识来学习新的知识 , 核心是找到已有知识和新知识之间的相似性 , 用成语来说就是举一反三 。 由于直接对目标域从头开始学习成本太高 , 我们故而转向运用已有的相关知识来辅助尽快地学习新知识 。 比如 , 已经会下中国象棋 , 就可以类比着来学习国际象棋;已经会编写Java程序 , 就可以类比着来学习C#;已经学会英语 , 就可以类比着来学习法语;等等 。 世间万事万物皆有共性 , 如何合理地找寻它们之间的相似性 , 进而利用这个桥梁来帮助学习新知识 , 是迁移学习的核心问题 。
为什么需要迁移学习?
柠檬少年|迁移学习—通俗易懂地介绍(常见网络模型pytorch实现)现在的机器人视觉已经非常先进了, 有些甚至超过了人类. 99.99%的识别准确率都不在话下. 这样的成功, 依赖于强大的机器学习技术, 其中, 神经网络成为了领军人物. 而 CNN 等, 像人一样拥有千千万万个神经联结的结构, 为这种成功贡献了巨大力量. 但是为了更厉害的 CNN, 我们的神经网络设计, 也从简单的几层网络, 变得越来越多, 越来越多, 越来越多… 为什么会越来越多?
因为计算机硬件, 比如 GPU 变得越来越强大, 能够更快速地处理庞大的信息. 在同样的时间内, 机器能学到更多东西. 可是, 不是所有人都拥有这么庞大的计算能力. 而且有时候面对类似的任务时, 我们希望能够借鉴已有的资源.
如何做迁移学习?
柠檬少年|迁移学习—通俗易懂地介绍(常见网络模型pytorch实现)这就好比, Google 和百度的关系, facebook 和人人的关系, KFC 和 麦当劳的关系, 同一类型的事业, 不用自己完全从头做, 借鉴对方的经验, 往往能节省很多时间. 有这样的思路, 我们也能偷偷懒, 不用花时间重新训练一个无比庞大的神经网络, 借鉴借鉴一个已经训练好的神经网络就行.
柠檬少年|迁移学习—通俗易懂地介绍(常见网络模型pytorch实现)比如这样的一个神经网络, 我花了两天训练完之后, 它已经能正确区分图片中具体描述的是男人, 女人还是眼镜. 说明这个神经网络已经具备对图片信息一定的理解能力. 这些理解能力就以参数的形式存放在每一个神经节点中. 不巧, 领导下达了一个紧急任务,
柠檬少年|迁移学习—通俗易懂地介绍(常见网络模型pytorch实现)要求今天之内训练出来一个预测图片里实物价值的模型. 我想这可完蛋了, 上一个图片模型都要花两天, 如果要再搭个模型重新训练, 今天肯定出不来呀.


推荐阅读