机器学习-5

本文来自于网易云课堂

迁移学习

深度学习中最强大的一个理念是可以从一个任务中学到知识,并将这些知识应用到另一个独立的任务中。比如说你训练了一个神经网络可以识别猫的图片,这个神经网络的知识或者部分知识可以用来阅读x射线扫描图。这就是所谓的迁移学习。
这里写图片描述
假设你已经训练好一个图像识别神经网络,比如说识别猫,如果你想要将学习到的知识应用到其他任务中,比如说识别x射线扫描图,你可以做的是把神经网络最后的输出层以及最后一层的权重删掉,然后为最后一层重新赋予随机权重,然后让他在放射诊断数据上训练。具体来说,在第一阶段训练过程中,当你进行图像识别训练时,你可以训练神经网络的所有常用参数,然后你就得到了一个能够做图像识别的网络。训练了这个网络之后,要实现迁移学习,你现在要做的是把数据集换成新的x,y对,你要做的就是初始化最后一层的权重。然后,在这个新数据集上重新训练网络。要用放射科的数据重新训练有几种做法,经验规则是,如果你的数据量较小,你可能只需要重新训练最后一层的权重,并保持其他参数不变。如果你的数据量很多,你可以重新训练神经网络中所有的层。如果你重新训练神经网络中所有参数,那么在图像识别数据的初期训练阶段,有时称为预训练,为你在用图像识别数据来预先初始化或者预训练神经网络的权重。然后,如果你以后更新所有权重,然后在放射科数据上训练,有时这个过程叫做微调。

为什么这么做有效果呢?有很多低层次的特征比若说边缘检测,曲线检测等,从非常大的识别数据库中学得这些能力,可能有助于你的学习算法在放射科诊疗中做的更好。算法学到了很多信息,包括结构信息,图像形状的信息等,其中一些知识可能会有用。所以学会了图像识别,他就能知道不同图像的组成部分是怎样的,学到点,曲线等知识,这些知识可能会帮助你处理放射科的数据。
这里写图片描述
再比如你已经搭建了一个语音识别神经网络,你想将其应用到唤醒词系统中去,比如说’你好百度’,就会将百度的设备唤醒。要想这么做,你必须将输出层去掉,然后加上新的一层或者几层网络,然后把新的数据对放进去进行训练。
那么迁移学习什么时候会起作用呢?迁移学习起作用的场合是迁移来源问题有很多数据而迁移目标问题只有少量数据。例如,假如图像识别任务中有100万个样本,这个数据量很大,可以使神经网络学得低层次特征,但是对于放射科数据,你可能只有100个样本,所以你从图像识别中学到的很多知识都可以迁移并且帮你增强放射科识别任务的能力。所以你可以利用迁移学习从数据量大的地方转移到数据量小的地方,但是反过来就没有意义了。
这里写图片描述
总结一下,什么时候迁移学习有意义呢?对于任务A和B,A要迁移到B,第一是A和B都有相同的输入,比如说都是图像识别或者都是语音识别。第二是A要比B的数据量多得多。第三如果你觉得A的低级特征对B有帮助,那么迁移学习的意义就更大一些。

多任务学习

在迁移学习中,你的步骤是串行的,你从任务A中学到知识然后迁移给任务B,在多任务学习中,你是同时学习的,试图让神经网络同时做几件事,然后希望每个任务都能帮到其他任务。
这里写图片描述
假设你在开发无人驾驶汽车,可能需要都是检测不同物体,比如说行人车辆和停车标志。那么对于每个图像X(i),输出则不是一维的,而是多维的,如Y(i)=0,1,1,0,现在可以做的就是训练一个神经网络来预测这里的y值。
与softmax的主要区别是,softmax把单个标签分给单个样本,而多任务学习是单个样本有多个标签。如果你试图创建一个神经网络,输入一个图希望系统检测4个物体,那你做的就是多任务学习。另外你也可以训练多个不同的神经网络,而不是训练一个神经网络做4件事,但神经网络的一些早期特征在识别不同物体时都会用到。然后你会发现训练一个网络来做4件事比训练4个网络分别做4件事要好。
这里写图片描述
另一个细节,即使每张图只有部分标签也可以处理。对于某些样本,那些对数据做标签的人说图中有人但是没有车,但是没有标记是不是有停车标记,或者有没有红绿灯。即使是这样的训练集你可以训练同时做4个任务。训练的时候对于损失函数求和时就忽略掉没有标签的成分即可,只累加0和1的项。
那么多任务学习什么情况下才有意义呢?当三件事为真时,它是有意义的。第一任务可以共享低级特征。第二个准则没有那么绝对,所以不一定是对的。这个准则是说每个任务的数据都是相似的。第三个就是你可以训练一个足够大的网络能够同时做好所有的工作。研究员Rich Carona几年前发现相比单个神经网络识别单个任务,多任务学习会降低性能的唯一情况就是训练的神经网络不够大。
在实践中,多任务学习的频率要低于迁移学习。有许多迁移学习的应用,你需要解决一个问题,但数据量很少。所以你需要找一个数据量很多的相关问题来预先学习然后在迁移到目标应用中去。但多任务学习比较少见,就是你需要同时处理很多任务,都要做好。或许计算机视觉是一个例子,主要应用在物体检测中。

端到端学习

什么是端到端学习呢?简而言之,就是以前有一些数据处理系统,他们需要多个阶段的处理,端到端学习就是可以忽略所有这些不同的阶段,用单个神经网络代替它。以音频识别为例,给定一段音频x,映射到y,也就是音频的听写文本。传统上,语音识别需要很多阶段的处理,首先你需要提取一些特征(可以用MFCC算法),提取一些特征以后米可以利用机器学习的一些算法在音频片段中找到音位然后组成单词等。所以和这些有很多阶段的流水线来比,端到端学习做的就是,你训练一个巨大的神经网络,输入就是一段音频,输出直接就是一段文本。AI的一个有趣的社会学效应就是随着端到端深度学习系统开始表现的更好,有一些研究员花了大量时间或者事业生涯来设计流水线各个步骤,发了大量论文,而端到端学习只需要把训练集拿过来直接学到了X到Y的函数映射,直接绕过了其中很多步骤。对于这些研究员来说是相当难受的。事实证明,端到端深度学习的挑战之一是你可能需要大量数据才能让系统表现良好。比如说你有3000h的数据可以让旧的语音系统表现良好,那么如果你有10000或者100000小时数据,端到端学习方法就会很厉害了。所以当你数据量小时传统流水线方法也不错,通常做的更好,你需要大量的数据集才能让端到端系统真正散发耀眼光芒。
这里给出了百度人脸识别的例子。你从门禁那过,如果系统检测到你的脸就会让你通过而不再需要RFID工卡。那么怎样搭建这样的系统呢?这其实并不是一步完成的,因为每个人的位置不同,体型也不同。它是首先运行一个软件,首先检测到人脸,然后将人脸的部分放大居中,然后在喂到神经网络中去。通过这么简单的分步,第一步弄清脸在哪,第二步弄清脸是谁。研究人员发现这样分解成2个算法会得到更好的表现。
那么为什么两步法会更好呢?实际上有2个原因,一是你解决的两个问题,每一个实际上要简单的多。第二个是每个子问题的数据都很多。具体来说,有很多数据可以用在人脸识别训练。今天业界领先的人脸识别团队拥有数以亿计的图片,可以用来识别是否是同一个人。相比之下如果你想一步到位,这样x,y的数据就少的多,其中x是门禁系统拍摄的图像,y是那人的身份。因为你没有足够的数据来解决这个端到端的问题,但你却有足够的数据来解决分步骤的每个问题。而在机器翻译领域,因为有很多数据,所以端到端的学习很好用。

什么时候使用端到端学习系统

端到端学习的优缺点:
优点:
1.端到端系统是真的只让数据说话。
2.所需手工设计的组件更少
缺点:
1.真的需要大数据
2.它排除了可能有用的手工设计组件
这里写图片描述

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页