如何让训练神经网络不无聊?试试迁移学习和多任务学习

简介:

训练深度神经网络是一个乏味的过程。更实际的方法,如重新使用训练好的网络解决其他任务,或针对许多任务使用相同的网络。这篇文章中,我们会讨论两个重要的方法:迁移学习和多任务学习。

迁移学习

在迁移学习中,我们希望利用源任务学到的知识帮助学习目标任务。例如,一个训练好的图像分类网络能够被用于另一个图像相关的任务。再比如,一个网络在仿真环境学习的知识可以被迁移到真实环境的网络。

总的来说,神经网络迁移学习有两种方案:特征提取和微调。迁移学习一个典型的例子就是载入训练好VGG网络,这个大规模分类网络能将图像分到1000个类别,然后把这个网络用于另一个任务,如医学图像分类。

如何让训练神经网络不无聊?试试迁移学习和多任务学习

1特征提取:

特征提取是针对目标任务把一个简单的分类器加在源任务上预训练的网络上,将预训练的网络作为特征提取器。仅有添加的分类器的参数需要更新,预训练的网络的参数不变。这能使新任务从源任务中学习到的特征中受益。但是,这些特征更加适合源任务。

2微调:

微调允许学习目标任务时修改预训练的网络参数。通常,在预训练的网络之上加一个新的随机初始化的层。预训练网络的参数使用很小的学习率更新防止大的改变。通常会冻结网络底层的参数,这些层学到更通用的特征,微调顶部的层,这些层学到更具体的特征。同时,冻结一些层能够减少需要训练的参数的数量,避免过拟合问题,尤其时在目标任务数据量不够大的情况下。实践中,微调胜过特征提取因为他针对新的任务优化了预训练的网络。

迁移学习的基本情形:

迁移学习可以分为4种情形基于以下两个因素:1)目标任务数据集的大小,2)源任务与目标任务的相似度:

情形1:目标数据集很小,目标任务与源任务相似:这种情况使用特征提取,因为目标数据集小容易造成过拟合。

情形2:目标数据集很小,目标任务与源任务不同:这时我们微调底层网络,并移除高层网络。换句话说,我们使用较早的特征提取。

情形3:目标数据集很大,目标任务与源任务相似:我们有了大量的数据,我们可以随机初始化参数,从头开始训练网络。然而,最好还是使用预训练的网络初始化参数并微调几层。

情形4:目标数据集很大,目标任务与源任务不同。这时,我们微调大部分层甚至整个网络。

多任务学习

多任务学习的主要目标是通过使用多个任务的样本优化网络的参数改进任务的性能。例如,我们希望有一个网络可以根据输入的脸部图像区分是男性还是女性,同时可以预测这个人的年龄。这时,我们有两个相关的任务,一个是二分类,一个是回归任务。显然两个任务是相关的,对一个任务的学习可以改进另外一个任务。

如何让训练神经网络不无聊?试试迁移学习和多任务学习

一个简单的网络设计实例,可以在任务和任务之间共享一部分网络。共享部分学习任务通用的中间表达,有助于这些共同的学习任务。另一方面,针对特定的学习任务,特定的头部会学习如何使用这些共享表达。


原文发布时间为:2018-05-29

本文来自云栖社区合作伙伴“雷锋网”,了解相关信息可以关注“雷锋网”。

相关文章
|
30天前
|
机器学习/深度学习
大模型开发:解释卷积神经网络(CNN)是如何在图像识别任务中工作的。
**CNN图像识别摘要:** CNN通过卷积层提取图像局部特征,池化层减小尺寸并保持关键信息,全连接层整合特征,最后用Softmax等分类器进行识别。自动学习与空间处理能力使其在图像识别中表现出色。
24 2
|
1月前
|
机器学习/深度学习 算法 数据挖掘
神经网络训练失败的原因总结 !!
神经网络训练失败的原因总结 !!
42 0
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
【PyTorch实战演练】AlexNet网络模型构建并使用Cifar10数据集进行批量训练(附代码)
56 0
|
30天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
【PyTorch实战演练】使用Cifar10数据集训练LeNet5网络并实现图像分类(附代码)
53 0
|
1天前
|
SQL 安全 测试技术
2021年职业院校技能大赛“网络安全”项目 江西省比赛任务书—B模块
B模块涵盖安全事件响应和网络数据取证,涉及多项应用安全挑战。任务包括使用nmap扫描靶机、弱口令登录、生成反弹木马、权限验证、系统内核版本检查、漏洞源码利用、文件名和内容提取等。此外,还有Linux渗透测试,要求访问特定目录下的文件并提取内容。应用服务漏洞扫描涉及服务版本探测、敏感文件发现、私钥解密、权限提升等。SQL注入测试需利用Nmap扫描端口,进行SQL注入并获取敏感信息。应急响应任务包括处理木马、删除恶意用户、修复启动项和清除服务器上的木马。流量分析涉及Wireshark数据包分析,查找黑客IP、枚举测试、服务破解等。渗透测试任务涵盖系统服务扫描、数据库管理、漏洞利用模块搜索等。
8 0
|
11天前
|
机器学习/深度学习 数据采集 算法
|
14天前
|
JavaScript Java 测试技术
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
30 0
基于Java的网络类课程思政学习系统的设计与实现(源码+lw+部署文档+讲解等)
|
30天前
|
机器学习/深度学习 算法 PyTorch
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
【PyTorch实战演练】深入剖析MTCNN(多任务级联卷积神经网络)并使用30行代码实现人脸识别
54 2
|
1月前
|
机器学习/深度学习 开发者
论文介绍:基于扩散神经网络生成的时空少样本学习
【2月更文挑战第28天】论文介绍:基于扩散神经网络生成的时空少样本学习
14 1
论文介绍:基于扩散神经网络生成的时空少样本学习
|
1月前
|
机器学习/深度学习 存储 人工智能
一文带你了解神经网络是如何学习预测的
一文带你了解神经网络是如何学习预测的
21 0

热门文章

最新文章