目录
什么是end-to-end
广义的理解
狭义理解
个人观点
什么是end-to-end
end-to-end(端到端)是一个新的名词,那么什么是端到端呢?
从字面意思理解就是:raw data 丢进去,期望的输出吐出来,拿去训练就能得到好看的结果。就像是一个黑盒,直接把原始数据输入神经网络的一端,从另一端得出我们需要的结果。
广义的理解
端到端指的是输入是原始数据,输出是最后的结果,原来输入端不是直接的原始数据,而是在原始数据中提取的特征,这一点在图像问题上尤为突出,因为图像像素数太多,数据维度高,会产生维度灾难,所以原来一个思路是手工提取图像的一些关键特征,这实际就是就一个降维的过程。
那么问题来了,特征怎么提?
特征提取的好坏异常关键,甚至比学习算法还重要,举个例子,对一系列人的数据分类,分类结果是性别,如果你提取的特征是头发的颜色,无论分类算法如何,分类效果都不会好,如果你提取的特征是头发的长短,这个特征就会好很多,但是还是会有错误,如果你提取了一个超强特征,比如染色体的数据,那你的分类基本就不会错了。
这就意味着,特征需要足够的经验去设计,这在数据量越来越大的情况下也越来越困难。
于是就出现了端到端网络,特征可以自己去学习,所以特征提取这一步也就融入到算法当中,不需要人来干预了。
经典机器学习方式是以人类的先验知识将raw数据预处理成feature,然后对feature进行分类。
分类结果是否取决于特征的好坏。所以过去的机器学习专家将大部分时间花在设计feature上,那是的机器学习有个更合适的名字
叫feature engineering.
后来人们发现,利用神经网络,让网络自己学习如何抓取feature效果更佳。于是兴起了represntation learning,这种方式对数据的拟合更佳灵活。
网络进一步加深,多层次概念的representation learning将识别率达到了另一个新高度,于是你听到了高机器学习的人都知道的名字:deep learning.实质多层次的特征提取器与识别器统一训练和预测的网络。
end-to-end的好处:通过缩减人工预处理和后续处理,尽可能使模型从原始输入到最终输出,使模型更多客源根据数据自欧东调节的空间,增加模型的整体契合度。
上述观点是从”是否需要人共提取raw feature”这个维度来理解end-to-end(端到端)的,有人工干预就是非端到端,反义,就是端到端。
狭义理解
个人认为上述观点不是非常准确的的,斯认为end-to-end与raw feature没有逻辑关系。因此,本人把上述的理解称为广义上的理解。个人把自己对end-to-end的理解称为狭义上的理解。
斯是研究视觉的,下面从目标检测的角度,来谈谈自己对end-to-end的理解
非end-to-end方法:
目前目标检测领域,效果最好,影响力最大的还是RCNN那一套框架,这种方法需要先在图像中提取可能含有目标的候选框(region proposal), 然后将这些候选框输入到CNN模型,让CNN判断候选框中是否真的有目标,以及目标的类别是什么。在我们看到的结果中,往往是类似与下图这种,在整幅图中用矩形框标记目标的位置和大小,并且告诉我们框中的物体是什么。
这种标记的过程,其实是有两部分组成,一是目标所在位置及大小,二是目标的类别。在整个算法中,目标位置和大小其实是包含在region proposal的过程里,而类别的判定则是在CNN中来判定的。目标位置检测与类别判断是分两个阶段进行的,而非结合在一起进行的,与上述所谓的(raw feature)没有任何关系。(个人观点)
end-to-end方法:
end-to-end方法的典型代表就是有名的yolo。前面的方法中,CNN本质的作用还是用来分类,定位的功能其并没有做到。而yolo这种方法就是只通过CNN网络,就能够实现目标的定位和识别。也就是原始图像输入到CNN网络中,直接输出图像中所有目标的位置和目标的类别。这种方法就是end-to-end(端对端)的方法,一端输入我的原始图像,一端输出我想得到的结果。只关心输入和输出,中间的步骤全部都不管。
个人观点
ent-to-to的本质是你要解决的问题是多阶段的或多步的(跟raw feature没啥关系)。如果分阶段学习的话,第一阶段的最优解不能保证第二阶段的问题达到最优。端到端把他们堆在一起来进行优化,确保最后阶段的解达到最优。
标签:end,feature,raw,神经网络,理解,CNN,端到 From: https://blog.51cto.com/u_13206712/5839953