学习迁移

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

三世轮回 提交于 2019-12-24 02:59:31
  在前面的文章中,我们通常是拿到一个任务,譬如图像分类、识别等,搜集好数据后就开始直接用模型进行训练,但是现实情况中,由于设备的局限性、时间的紧迫性等导致我们无法从头开始训练,迭代一两百万次来收敛模型,所以这个时候迁移学习就派上用场了。 什么是迁移学习?   迁移学习通俗来讲,就是运用已有的知识来学习新的知识,核心是找到已有知识和新知识之间的相似性,用成语来说就是举一反三。由于直接对目标域从头开始学习成本太高,我们故而转向运用已有的相关知识来辅助尽快地学习新知识。比如,已经会下中国象棋,就可以类比着来学习国际象棋;已经会编写Java程序,就可以类比着来学习C#;已经学会英语,就可以类比着来学习法语;等等。世间万事万物皆有共性,如何合理地找寻它们之间的相似性,进而利用这个桥梁来帮助学习新知识,是迁移学习的核心问题。 为什么需要迁移学习? 满足深度学习训练数据量的数据太少。对于一个机器学习的任务,譬如分类,如果数据量过小,我们是否一定要上深度学习呢?其实不必然。如果在实际的生产过程中,能够用规则就能得到好的效果的就用规则,能够用简单的模型就用简单的模型,我们常听到的“奥卡姆剃刀”其实就是这个意思,减少模型的复杂度,能够从某种程度上避免过拟合的情况。那么对于小量数据集,没有必要一定需要用深度学习的方法来做。同样,如果要对一个新任务分类,或者识别,搜集不了大量的正负样本,怎么训练呢?

如何自学一个领域?这里有一份全指南

帅比萌擦擦* 提交于 2019-12-14 11:10:56
编者按:本文来自微信公众号“L先生说”(ID:lxianshengmiao),作者Lachel。 以前写过不少跟学习相关的文章,但大都是集中于某个点,欠缺系统性。 今天,我想通过这篇详细的文章,把「学习」这个问题,简单梳理一下。 当然,这是一个巨大的话题,难免挂一漏万。以后有机会,再慢慢补充,形成一整个关于学习的系列。 希望能够帮到你。 框架 不少读者朋友问过我「刚刚入门一个领域,什么都不懂,怎么学?」我的回答永远都是一样的: 一定要先从搭框架开始。 什么叫搭框架呢?简而言之,就是给你的大脑一个铺垫,让它准备好,告诉它:在未来的日子里,我们将会大量吸收这个领域的知识,请做好理解和储存它们的准备。 举个例子:当你撰写一份策划方案、报告时,你第一步是不是先有一个整体构思,列一个大纲:我先写什么,然后写什么,最后写什么 —— 接下去才开始动手? 学习也是一样的。如果缺少了框架,你所有获取的知识,就只是碎片信息而已。它们会孤零零地漂浮在记忆里,难以稳固存在,也难以被你所调用、组织、整合。 那么,如何搭建框架,令我们的学习更加体系化呢? 我建议的方法,是去搜寻这个领域相关的经典教材,大约3-5本。然后读一遍 —— 无需一字不漏地精读,这太花时间了。大致翻一遍、通读一遍,就可以。 在这个过程中,你需要思考和回答这三个问题: What:这个领域研究的对象是什么?有哪些主要流派和分支

迁云的那些事

北城余情 提交于 2019-12-13 10:18:47
云的时代: 云时代已经到来,在选择云之后,企业首要的问题是选择什么样的方式迁移上云?这会影响企业的迁移周期和迁移后的业务服务品质,所以迁移时一定要按照一定的方法论和流程,而不是盲目的迁移。最基本的也要遵守这五个过程:计划,设计,迁移,运营及优化,在这套方法论里面您可以按您们的实际业务情况进行微调。 所有云厂商里面,AWS拥有最完善的迁移方法论。例如:CAF(采用云框架),LandingZone,Well-architected(良好的架构)和三天迁移培训课程,这些能使您意识到使用云会是一种什么样的模式,解决您在使用过程中的疑问。 个人认为一个AWS初级用户学习CAF的方法论更为关键,这样可以让您对云有更深次的使用体验。 借鉴我们过往的经验, 我们建议客户在AWS上有小量的应用后,再来研读Well-architected ,Well-architected中的专业术语较多,建议可以进行初步的了解后,进行简单的应用实践,后期在实践过程中不断的巩固知识点,以掌握该部分的精髓。当然也有缩短学习时间的方法,那就是选择有经验的AWS Partner做一次详细的讲解以及陪您们一起上云实践,他们会根据您企业的业务运行状况告诉您们什么是最佳实践。 实践分享: 根据我们经历过大量迁移的实践总结,让我们一起分享在迁移过程中,最为关键的两个阶段,分别是计划和设计。它们是整个迁移中最为基础的部分

论文笔记 —— 《A Survey on Transfer Learning》

若如初见. 提交于 2019-12-13 04:44:07
论文笔记 ——《A Survey on Transfer Learning》 知识点 迁移学习存在的领域:最显著的是数据挖掘(例如ACM KDD、IEEE ICDM和PKDD)、机器学习(例如ICML、NIPS、ECML、AAAI和IJCAI)以及机器学习和数据挖掘的应用(例如ACM SIGIR、WWW和ACL) 。 域差异:用不同的特征空间或边际分布概率来刻画,即两个指标 特征 、 分布 。 域相关:两个域的特征空间之间存在显式或隐式关系。 负迁移:知识迁移对目标学习产生负面影响。 目前关于迁移学习的大多数工作都集中在应该迁移什么以及如何迁移上,方法是隐式地假设源域和目标域是相互关联的。大多数现有的迁移学习算法都专注于改进源和目标域或任务之间不同分布的泛化,假设源域和目标域之间的特征空间是相同的。 归纳迁移学习 inductive transfer learning: 无论源域和目标域是否相同,目标任务都与源任务不同。 在这种情况下,需要目标域中的(大量/没有)标记数据来 诱导 目标域中使用的目标预测模型。 转导迁移学习 transductive transfer: 源任务和目标任务是相同的,而源域和目标域是不同的 (则分特征/分布两种情况不同)。在这种情况下,目标域中没有可用的标记数据,而源域中有很多可用的标记数据。 无监督迁移学习 unsupervised transfer

迁移学习与Fine tune

北战南征 提交于 2019-12-11 16:18:32
一句话总结: 迁移学习:冻结预训练模型的全部卷积层,只训练自己定制的全连接层 Fine tune:冻结预训练模型的部分卷积层(通常是靠近输入的多数卷积层),训练剩下的卷积层(通常是靠近输出的部分卷积层)和全连接层。 相关链接 https://blog.csdn.net/u013841196/article/details/80919857 https://blog.csdn.net/lonely_dark_horse/article/details/53896837 来源: CSDN 作者: 凭鼎山人 链接: https://blog.csdn.net/fengshengwei3/article/details/103493312

图像风格迁移原理

拥有回忆 提交于 2019-12-06 13:09:05
所谓 图像风格迁移 ,是指利用算法学习著名画作的风格,然后再把这种风格应用到另外一张图片上的技术。著名的图像处理应用Prisma是利用风格迁移技术,普通用户的照片自动变换为具有艺术家风格的图片。 一、图像风格迁移的原理 1、原始图像风格迁移的原理   在学习原始的图像风格迁移之前,可以在先看看ImageNet图像识别模型VGGNet( 微调(Fine-tune)原理 )。事实上,可以这样理解VGGNet的结构:前面的卷积层是从图像中提取“特征”,而后面的全连接层把图片的“特征”转换为类别概率。其中,VGGNet中的浅层(如conv1_1,conv1_2),提取的特征往往是比较简单的(如检测点、线、亮度),VGGNet中的深层(如conv5_1,conv5_2),提取的特征往往比较复杂(如有无人脸或某种特定物体)。   VGGNet本意是输入图像,提取特征,并输出图像类别。图像风格迁移正好与其相反, 输入的是特征,输出对应这种特征的图片 ,如下图所示:       具体来说,风格迁移使 用卷积层的中间特征还原出对应这种特征的原始图像 。如下图所示,先选取一幅原始图像,经过VGGNet计算后得到各个卷积层的特征。接下来,根据这些卷积层的特征,还原出对应这种特征的原始图像。       下面的a、b、c、d、e分别为使用conv1_2、conv2_2、conv3_2、conv4_2

迁移学习简介

坚强是说给别人听的谎言 提交于 2019-12-06 10:19:12
# 迁移学习笔记 ## 迁移学习简介 ### 迁移学习 1. 迁移学习的** 定义 **是具有将在以前的领域/任务中学习到的知识和技能应用到新的领域/任务中的能力的系统。 2. 迁移学习里有两个非常重要的** 概念 **: ** 域(Domain) ** :可以理解为某个时刻的某个特定领域,比如书本评论和电视剧评论可以看作是两个不同的domain ** 任务(Task) ** :就是要做的事情,比如情感分析和实体识别就是两个不同的task 3. 迁移学习的** 关键点 **: - 研究可以用哪些知识在不同的领域或者任务中进行迁移学习,即不同领域之间有哪些共有知识可以迁移。 - 研究在找到了迁移对象之后,针对具体问题所采用哪种迁移学习的特定算法,即如何设计出合适的算法来提取和迁移共有知识。 - 研究什么情况下适合迁移,迁移技巧是否适合具体应用,其中涉及到负迁移的问题。 4. 迁移学习的意义 大数据与少标注 大数据与弱计算 普适化与个性化 特定应用需求 ### 迁移学习研究领域 <img src="/Users/xzhmacbookpro/Library/Application Support/typora-user-images/image-20191127095318217.png" alt="image-20191127095318217" style="zoom: 50%;"

深度学习-迁移学习笔记

怎甘沉沦 提交于 2019-12-06 03:28:45
1.什么是迁移学习   迁移学习(Transfer Learning)是一种机器学习方法,就是把为任务 A 开发的模型作为初始点,重新使用在为任务 B 开发模型的过程中。迁移学习是通过从已学习的相关任务中转移知识来改进学习的新任务,虽然大多数机器学习算法都是为了解决单个任务而设计的,但是促进迁移学习的算法的开发是机器学习社区持续关注的话题。找到目标问题的相似性,迁移学习任务就是从相似性出发,将旧领域(domain)学习过的模型应用在新领域上。 2.为什么需要迁移学习    使用深度学习技术解决问题的过程中,最常见的障碍在于,因为模型有大量的参数需要训练,因此需要海量训练数据作支撑。虽然有大量的数据,但往往都是没有标注的,无法训练机器学习模型。人工进行数据标定太耗时。   在面对某一领域的具体问题时,通常可能无法得到构建模型所需规模的数据。普通人无法拥有庞大的数据量与计算资源。因此需要借助于模型的迁移。   借助迁移学习,在一个模型训练任务中针对某种类型数据获得的关系也可以轻松地应用于同一领域的不同问题。 3.迁移学习的基本问题有哪些? 基本问题主要有3个: How to transfer: 如何进行迁移学习?(设计迁移方法) What to transfer: 给定一个目标领域,如何找到相对应的源领域,然后进行迁移?(源领域选择) When to transfer:

【风格迁移】入门

元气小坏坏 提交于 2019-12-03 20:36:50
三种风格迁移方式 一、固定风格固定内容的普通风格迁移( A Neural Algorithm of Artistic Style ) 二、固定风格任意内容的快速风格迁移( Perceptual Losses for Real-Time Style Transfer and Super-Resolution ) 三、任意风格任意内容的极速风格迁移( Meta Networks for Neural Style Transfer ) 一、固定风格固定内容的普通风格迁移: 最原始的风格迁移的思路很简单,把图片当做可以训练的变量,通过优化图片来降低与内容图片的内容差异以及降低与风格图片的风格差异,迭代训练多次以后,生成的图片就会与内容图片的内容一致,同时也会与风格图片的风格一致。 从以下几个方面介绍:(1)VGG16;(2)内容;(3)风格;(4)噪声损失 (1)VGG16 我们首先使用预训练的 VGG16 模型对图像提取有用特征,这些特征可以帮助我们衡量两个图像的内容差异和风格差异。 (2)内容 我们进行风格迁移的时候,必须保证生成的图像与内容图像的内容一致性,不然风格迁移就变成艺术创作了。那么如何衡量两张图片的内容差异呢?很简单,通过 VGG16 输出的特征图来衡量图片的内容差异。 内容损失函数 \(loss_{content}\) : 其中 \(\hat{y}\) 是输入图像

迁移学习总结(One Shot Learning, Zero Shot Learning)

我们两清 提交于 2019-12-03 05:44:26
目录 目录 迁移学习 综述 Source Data 与Target Data 都有标签 Fine-tuning Multitask Learning Source Data 有标签Target Data 没有标签 Domain-adversarial training Zero-shot Learning Source Data没有标签 Target Data 有标签 Self-taught Learning Self-taught learning Source Data 与Target Data 都没有标签 Self-taught Clustering 迁移学习 综述 这段时间要做元学习相关的工作所以,首先对迁移学习了简单的学习分类,接下来会持续更新对于元学习论文的阅读还有理解。 以前接触最多的是图像的分类问题,我们将一个很大的数据集分为两个部分,一部分作为训练集,剩下的部分作为测试集。我们在训练集上面根据神经网络的基础算法比如back propagation 和 SGD算法对网络进行训练,训练结束之后用测试集对网络的泛化能力进行测试,通常用准确率表示。这就是简单的深度学习,这些学习任务的重点是训练出一个泛化能力很强的网络,由于是从相同的数据集里面抽离出来的,所以训练集还有测试集的种类都是相同的,没有多余的类。比如说,MNIST是一个简单的手写数字识别的库