机器学习—迁移学习:使用其他任务中的数据

对于一个没有那么多数据的应用程序,迁移学习是一种奇妙的技术,它允许你使用来自不同任务的数据来帮助你的应用程序,迁移学习是如何工作的?

以下是迁移学习的工作原理 ,假设你想识别手写的数字0到9,但是你没有那么多手写数字的标记数据,你会发现一个由一百万张图像组成的非常大的数据集,猫、狗、汽车等照片,然后你可以从训练一个神经网络 开始,在这个由一百万张图像和一千个不同类别组成的大数据集上,训练算法作为输入,一个图像X,学会识别这一千个不同的类中的任何一个 ,在这个过程中,你最终学习神经网络第一层的参数W1B1,第二层参数W2B2,以此类推,对于输出层,应用迁移学习,然后你要做的是复制这个神经网络 ,在那里你会保存参数W1B1,W2B2,W3B3,W4B4,但是最后一层,你将消除输出层,代之以一个小得多的输出层 ,只有10个而不是1000个输出单位,这10个输出单元将对应于从到9类,你想让你的神经网络识别,请注意,参数W5B5是不能复制的,因为这一层的尺寸变了,所以你需要想出新的参数,你需要从0开始训练,而不仅仅是复制,之前的神经网络,在迁移学习中,你可以使用前四层的参数,真的所有的层,除了作为参数起点的最终输出层,在运行优化算法,例如梯度下降亚当优化算法,使用这个神经网络的值初始化参数,所以在细节上,如何训练神经网络参数有两种选择,选项一是只训练输出层参数,所以你可以取参数W1B1等等,从上往下的值是把它们固定好,甚至懒得换,使用像随机梯度下降这样的算法或者亚当优化算法只更新W5B5,降低成本函数, 通常用于学习识别这些数字0到9的成本函数,从这些数字的一个小训练集0到9,所以选项二是训练网络中的所有参数,包括W1B1一直到W5B5,但是前四层参数将被初始化,使用你在顶部训练的值,如果你有一个非常小的训练集,那么选择一可能会更好一点,但是如果你有一套比较大的训练集,选择二可能会更好一点,这种算法被称为迁移学习,因为直觉是通过学习识别猫,狗,汽车,人等,希望它能学到一些合理的参数,用于处理图像输入的早期层, 然后通过将这些参数转移到新的神经网络 ,新的神经网络一开始就把参数放在一个更好的地方,所以只要进一步学习,希望它最终能成为一个相当好的模型,在大数据集上进行首次训练的这两个步骤,然后在较小的数据集上进一步调优参数 ,在上面的这一步,用监督预训练的名字,当你在一个非常大的数据集上训练神经网络时,说一百万张不完全相关的任务的图像,第二步叫做微调,在那里,你将初始化的参数或监督预训练中的数据,然后进行梯度下降微调权重 ,以适应手写数字识别的具体应用,如果你有一个小的数据集,几十个,几百个,几千个,或者数万张手写数字的图像,能够从这一百万张不太相关的任务的图像中学习,实际上可以帮助你的学习算法的性能很大,迁移学习的一个好处是也许你不需要成为监督执行的人,许多神经网络的预训练 ,已经有研究人员在大图像上训练了神经网络,会在网上发布一个经过训练的神经网络,免费授权给任何人下载和使用 ,这意味着与其自己完成第一步,你可以下载一个神经网络,其他人可能花了几周的时间训练,然后用自己的输出层替换输出层 ,并执行选项一或选项二来微调神经网络 ,其他人已经进行了监督前培训,稍微微调一下,能够得到在你的任务中表现良好的神经网络,下载其他人训练并免费提供的预先训练模型,下载其他人训练并免费提供的预先训练的模型是一种技术,通过在机器学习社区中建立彼此的工作,我们都可以通过其他研究人员的慷慨来获得更好的结果,训练并在网上发布他们的神经网络。

为什么迁移学习甚至有效呢?怎么能把通过识别猫、狗、汽车、人获得的参数用它来帮助你识别像手写数字这样不同的东西,这背后有一些直觉,如果你正在训练神经网络来检测,从图像中说出不同的物体,然后神经网络的第一层可以学习检测图像中的边缘,我们认为这些是图像中的低级特征,就是检测边缘,这些方块中的每一个都是单个神经元 学会了让我们学习将像素分组在一起以找到图像中的边缘,神经网络的下一层,然后学习将边缘分组以检测角点,所以,每一个都是一个神经元可能学会检测什么的可视化 ,学会探测一些简单的形状 ,就像角落,像这样的形状,神经网络的下一层可能已经学会了更复杂的,但仍然是一般的形状,如基本曲线,或者像这样的小形状,这就是为什么通过学习检测大量不同的图像,你在教线性网络检测边缘角和基本形状,这就是为什么通过训练神经网络探测各种各样的东西,比如猫、狗、汽车和人,你正在帮助它学习检测图像的这些非常通用的特征寻找边缘、角落、曲线、基本形状 ,这对许多其他计算机视觉任务很有用,预培训的一个限制,对于pre来说,图像类型X必须相同,训练和微调步骤,所以如果你想解决的最后一个任务是计算机视觉任务,预训练步骤也是在相同类型的输入上训练的神经网络,即所需尺寸的图像,反过来说,如果你的目标是建立一个语音识别系统来处理音频,那么预先对图像进行训练的神经网络可能对音频没有多大作用,相反,你想要一个对音频数据预先训练的神经网络,然后你对自己的音频数据集进行微调,其它类型的应用程序也是如此,你可以在文本数据上预先训练神经网络,如果你的应用程序具有相同的特性,请输入文本数据的X,然后你可以根据自己的数据微调神经网络进行总结。

这是迁移学习的两个步骤,一种是下载带有参数的 神经网络,在大型数据集上预先训练过的 ,具有与应用程序相同的输入类型 ,输入类型可以是图像、音频文本或者其他东西,或者如果你不想下载神经网络,也许你可以自己训练,但在实践中,如果你使用图像,说下在别人预先训练的神经网络更常见,然后根据自己的数据进一步训练或微调网络,如果你能得到一个神经网络,在大型数据集上预先训练,说一百万张图像,然后有时你可以使用一个小得多的数据集,可能有上千张照片,也许更小,可以根据自己的数据微调神经网络,得到了很好的结果,当它已经在一个更大的数据集上预先训练过,这种技术不是万能的,不可能让每个应用程序只在50张图像上工作,但它确实帮助很大,当应用程序的数据集不是那么大时,如果你在新闻上听说过先进的技术,像gpt3或者bert或者神经网络接受过Imagennets培训,这些实际上是神经网络的例子,其他人对非常大的图像数据集或文本数据集进行了预先训练,然后可以在其他应用程序上微调他们,如果你没有听说过gpt3或berto imagenet,那也没关系,你已经在机器学习文献中成功的应用了预训练,如果你没有听说过gpt3或鸟或金雀花,没关系,但是如果你有这些迁移学习在机器学习文献中的成功应用,迁移学习时机器学习社区分享思想和代码的方式之一,甚至参数彼此,因为多亏了研究人员预先训练了大型神经网络,并将参数免费发布在互联网上供其他人下载和使用,这使得任何人都可以拍摄模型,在机器学习中,有预先训练的微调潜在的小得多的数据集,所有人最终都建立在彼此的工作基础上,公开分享代码的想法,训练参数的方法是机器学习社区。

相关推荐
IT古董1 分钟前
【漫话机器学习系列】020.正则化强度的倒数C(Inverse of regularization strength)
人工智能·机器学习
进击的小小学生4 分钟前
机器学习连载
人工智能·机器学习
Trouvaille ~15 分钟前
【机器学习】从流动到恒常,无穷中归一:积分的数学诗意
人工智能·python·机器学习·ai·数据分析·matplotlib·微积分
dundunmm23 分钟前
论文阅读:Deep Fusion Clustering Network With Reliable Structure Preservation
论文阅读·人工智能·数据挖掘·聚类·深度聚类·图聚类
szxinmai主板定制专家32 分钟前
【国产NI替代】基于FPGA的4通道电压 250M采样终端边缘计算采集板卡,主控支持龙芯/飞腾
人工智能·边缘计算
是十一月末32 分钟前
Opencv实现图像的腐蚀、膨胀及开、闭运算
人工智能·python·opencv·计算机视觉
云空40 分钟前
《探索PyTorch计算机视觉:原理、应用与实践》
人工智能·pytorch·python·深度学习·计算机视觉
杭杭爸爸41 分钟前
无人直播源码
人工智能·语音识别
Ainnle2 小时前
微软 CEO 萨提亚・纳德拉:回顾过去十年,展望 AI 时代的战略布局
人工智能·microsoft
长风清留扬2 小时前
基于OpenAI Whisper AI模型自动生成视频字幕:全面解析与实战指南
人工智能·神经网络·opencv·计算机视觉·自然语言处理·数据挖掘·whisper