赞
踩
ps:了解一些新的概念和知识,是自己的理解,不一定正确,如有不对,欢迎指正~
了解了卷积神经网络之后我们再来了解几个东西
从经验来看,网络的深度对模型的性能至关重要,当增加网络层数后,网络可以进行更加复杂的特征模式的提取,所以当模型更深时理论上可以取得更好的结果。但是,实际上却并非如此。
纵轴是错误率,可以看到56层的深度,比20层还要差。这是一个神经网络的瓶颈。
何恺明博士提出了残差学习来解决这个问题。
我们假设当输入为x的时候,学习到的特征为H(x),我们定义F(x)=H(x)-x为残差,我们让下一层的输入为F(x)+x,那么如果残差是0的时候,下一层的输入就是x了,也就意味着做了一个恒等映射。这样可以保证,最起码增加深度的时候,这个网络不会退化,因为他最差就什么也不学,相当于没加。而且一般残差不会为0,这样我们就可以保证在输入特征的基础上学到新的特征。如图是残差模块的示意图。
ResNet网络参考了VGG19网络,在其基础上进行了修改,加入了残差单元,在各项比赛摘得桂冠。
RNN,循环神经网络。与CNN最大的不同就是RNN具有“记忆”能力。RNN擅长处理序列数据(具有前后顺序关系的)。
这是如何做到的呢,传统的神经网络输入一句话,得到一个结果。在输入一句话,再得到一个结果。那么想象一下对话的场景,如果你和一个人工智能对话,他不能只根据你说的这句话,输出一个结果,这样不够智能,如果他能把之前的对话都记录下来,然后你的每一句话,都根据之前的所有对话得出回答。这才更智能,更像是人与人的聊天。所以,RNN的做法就是每一次学习的时候,把上一次的状态加进来一起学习。这就让他有了“记忆”功能。
GAN(生成式对抗网络,Generative adversarial network)。GAN可以生成不存在于真实世界的数据,用于图像生成和数据增强。模型通过框架中两个模块:生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。
以图像为例子,假设我们有两个网络,G(Generator)和D(Discriminator)。
我们都知道,表现好的有监督学习必然需要大量的标注数据,注数据是一项枯燥无味且花费巨大的任务,如何充分利用之前标注好的数据,同时又保证在新的任务上的模型精度呢?所以有了迁移学习。
目前尚无统一的对于迁移学习的定义。从广义上讲,只要我们利用了已有的知识、模型、结构来帮助我们达成在目标数据上的学习目标,那么这一过程就可称之为迁移学习。
了解两种方式:
知识蒸馏指的是将复杂模型(teacher)中学到的知识迁移到简单模型(student)中去。
一般来说,我们认为teacher模型具有强大的能力和表现,而student模型则体量很小。通过知识蒸馏,希望student模型能尽可能逼近亦或是超过teacher模型,从而用更少的复杂度来获得类似的预测效果,实现模型的压缩和量化。
上面说的迁移学习,一般认为模型的参数保留了模型学到的知识,常见的迁移学习的方式就是在一个大的数据集上先做预训练,然后使用预训练得到的参数在一个小的数据集上做fine-tuning(两个数据集往往领域不同或者任务不同),例如先在Imagenet上做预训练,然后在COCO数据集上做检测。
蒸馏神经网络想做的事情,本质上很接近迁移学习。(知识蒸馏开山之作:Hinton的Distilling the Knowledge in a Neural Network。)论文中,作者认为可以将模型看成是黑盒子,知识可以看成是输入到输出的映射关系。因此,我们可以先训练好一个teacher网络,然后将teacher的网络的输出结果 q作为student网络的目标,训练student网络,使得student网络的结果pred接近q。
所以,整个做法就是先训练一个teacher网络,然后使用这个teacher网络的输出和数据的真实标签去训练student网络。从而将一个网络的知识转移到另一个网络,也可以将多个网络学到的知识转移到一个网络中去。
如果看早几年15年左右的论文,经常出现这个词语,说端到端的神经网络,现在貌似不多了。因为现在很多都是端到端的网络。
端到端指的是输入是原始数据,输出是最后的结果
非端到端就是说:输入端不是直接的原始数据,而是在原始数据中提取的特征。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。