CNN用来处理传统的图像数据,而GNN模仿了CNN,希望能够处理CNN处理不了的结构化数据。
具体地说:CNN用一个可学习的卷积核提取每个卷积滑窗内的特征,也就是说在每个卷积滑窗内加权求和每个像素特征得到一个特定的值。而GNN由于每个节点的邻居数量不一样,无法直接定义统一大小的滑窗,因此在每个节点的邻居范围内,去节点特征的平均值,然后再经过线性变换得到更为精细的节点特征。与CNN不太一样的地方是:CNN的卷积核是可以学习的参数,而GNN(以GCN为例)的卷积核是对于每个节点周围邻居特征取平均。这样会导致最终CNN可以堆叠多层达到很好的特征提取效果,但是GNN堆叠多层往往会出现过度平滑的问题。
CNN只关注像素特征层面的信息提取,而GNN多了一个邻接关系,多了一个维度的信息,往往能够提高模型的结果。在医学影像中,大脑的fRMI数据可以看作图像并用CNN来分类。但是各个脑区之间的关联性对于判断整个大脑的病变程度非常重要。主流的做法是将fRMI中的脑区数据提取出来,并且根据各个脑区之间的关联紧密程度构建脑区节点之间的邻接矩阵,以此构建出整个graph。因此用GNN对大脑的fRMI影像构成的graph进行提取特征和分类,可以很好地捕获大脑脑区之间的结构信息,生成更为高质量的大脑特征进行最终的分类。
还有一些场景下,数据只能方便的抽象成graph结构,例如社交数据和分子数据。以分子数据为例,原子作为节点,原子之间的化学键作为原子之间的邻接矩阵,很容易构成一个包含节点特征矩阵和节点邻接矩阵的graph,这样抽象出来的数据更适合用GNN类型的算法处理。
Low bits压缩再用于CNN推理当属该下的推理优化技术主流。
将本是Float32类型的乘法或乘加计算使用INT8类型来做可一次批量(SIMD指令集)执行更多的计算,从而有效提升CNN推理的计算性能。它也是当下CPU能够在性能与成本上战胜GPU并牢牢占据
深度学习模型推理市场90%以上份额的主要原因所在。
最近Facebook推出并开源了fbgemm,它即主要使用INT8计算来代替本来Float32做的事情,在牺牲小部分模型精度的情况下(做得好可控制在1%以内,亦取决于用户自身对性能与速率之间的取舍),可
达到相对于FP32模型近1~2x的提升。模型权重所占size也是大大降低。
推本溯源,fbgemm里所用的low-bits压缩技术本质上与18年年初Google tensorflow-tflite所用的方法并无二致。而这一方法则在此篇blog要讲的paper中曾一一揭示。
Quantization技术用于深度学习模型推理优化早已有之,并非此paper先创。
但早先的Quantization技术用于推理多是在取得fp32计算训练好的模型参数权重之后,再对权重进行quantization,然后即使用scale过后的int8(or uint8)权重与op输入feature maps(亦经scale后变
为了low-bits的表示)进行原本由fp32类型进行的乘法或乘加计算,如此执行所用的ops以完成整个模型推理过程。
而这一inference过程本质上与fp32 train时进行的forward的计算有较大区别的,毕竟在使用fp32类型进行forward/backward计算是并无引入任何scale之类的东西。这样train出来的weights经由quantized
inference显然会有较大的精度损失风险。为了避免较大精度损失,成功地在fp32 train时考虑进入scaling的影响,作者们设计了一种与quantization inference相辅相成的带有simulated quantization的
训练机制。在我看来它显然是本篇与之前的quantization方法有最大不同的地方。
下图a为正式部署时的INT8 quantization计算示例;而图b则为使用引入了simulation quantization的op训练时的计算机制;图c则为与fp32相比,此方法在近乎同等精度下所或得的模型性能提升。
下面我们将分别讲述用于部署时的Quantized inference计算过程及方法和引入了simulated quantization的training的计算机制。
经典CNN中,无论GEMM的矩阵乘法运算还是Convolution的乘加计算都是使用fp32进行的。如若我们要使用INT8类型来几乎无损地模型此以过程(只是INT8与FP32位数表示上的损失我们肯接受,其它则试图避免),
那么首先就要在数学上力图走通。
如下为数学上使用low-bits(int8)来代替FP32的计算过程。
首先,我们想在分别使用low-bits(int8)与FP32表示的模型权重及feature map特征之间建立一个简单的单对单映射,如下公式一所示。
其中r表示fp32表示;q则是low-bit(如int8)表示;S则是自low-bit(int8)到fp32的scale变换,它是个常数,跟具体所变换的tensor相关;Z为零点shift,用于使q的某数值对应于r中的00。
由上面公式我们可知,每个fp32类型的tensor可由如下的一个low-bit类型的quantization tensor所表示。
下面,我们将看下如何使用int类型来等价表示本由fp32类型完成的矩阵乘法计算。准备好了,大波公式来袭!!!
上述公式2,3,4,5的推理一目了然,我们有了上小节中公式1中表示过的fp32与int类型之间的映射关系后,这些都是顺理成章的事。有个初中数学的基本就差不多明白如何自公式2至公式4,5的了。
在最终的公式4计算中,可以看出除了与M的乘法计算需要使用浮点数计算外,其它已经都可以使用int类型计算来搞定了。那么如何将它也搞成更高效率的int计算呢?于是大招来了,下面的近似变换
还是有点trick的,想搞懂的话可能还是要多读上几遍。
首先来自Googlers们的强大经验(我们自己大致亦可感觉出),M一般会是个介于0-1的浮点小数。于是自然是就可将它表示为如下公式6的形式。
公式6是如何来的呢?如果读者诸君曾在课程中做过十进制与二进制之间表示变换的练习题的话,显然会更容易理解它。如若没有做过,呃,那么好好思索一番吧,你会有顿悟的那一刻的:)。
在公式6中,2 -n 这一部分计算可简单用int类型的右移指令来搞定。那么其值在05-1之间的M 0 怎么办呢?
我们可以使用一个32位的INT类型来表示此一值在05-1之间的M 0 。试想将M 0 乘以2 32 则是一个至少为2 31 的整数,如此它就至少可拥有31位的表示精度,因此使用一个INT32类型来表示M 0 还是
很能保证精度的。(当然理解此一近似同样要求读者对类型表示等基础计算机知识有些了解。。)
由上节中的讨论,我们已经可以完全使用INT类型计算来完成矩阵乘法了,它在上节中的最终形式为公式4。
而在矩阵乘法中如果一直按照公式4那样,我们要完成2N 3 减法,同时要使用INT16来表示每对INT8的乘积。
而如果对它进行如下一系列合理、等价的数学变形,我们可得到公式7,并发现其中真正computing intensive的即是公式9表示的INT8乘法计算。
一般Conv或GEMM计算后我们会有bias加或ReLu等activation函数计算。
在经典的fp32前向推理优化中,我们都会考虑将这些memory-intensive的计算与前面compute-intensive的计算fusion起来一块进行,以减少对memory-bandwidth的需求。
在int类型计算中显然也要考虑进去此种fusion layer的影响。
首先,对于bias加,我们可以使用如下的公式10与公式11即使用INT32表示int8乘积之后的加和,然后同时使用INT32来表示bias。在与float32 bias计算映射时,它使用的sclae为
weights tensor scale (S 1 ) 与input feature map tensor scale(S 2 )之间的乘积。
对于像ReLu这样的Activation,我们可考虑直接在INT输出的feature map上针对某一INT threshold值进行。在此不细表,不是很难,详情可见论文。
在training的时候引入了scale的机制,即将原来fp32表示的权重与feature map同样scale到与INT同样的range里面(进行一种近似的前向forward计算)。
如下为training时前向计算的scaling机制。
其它本质上在Quantization inference时,我们也是如此获得S与Z的,只是在这里一切皆是用FP32来表示。
即拿到一tensor(weight可feature map),先将其参数限定在某一固有范围内(a,b),即quantization range,对weights而言,a为min(W),b为max(w),对input而言,因为
变动范围较大,所以使用一种smooth average 的机制来计算相应的a与b;然后使用quantization level来对其进行scale factor计算。
一般在INT中我们使用INT8的话quantization level就是256。
在最终的q计算中貌似是没干啥,其实我们在浮点运算中,这样除了一下,进行了data rounding to integer,然后再乘回去一切其它已经不同了,那样特别小的位数显然已经被清了零。
ok,到了可以进一步总结的时候了。下面的算法过程基本理清了此一quantization机制的整体操作步骤。
熟悉tensorflow API的可以看下如下用于构建traing graph及inference graph的过程表示。
本来还有点BN fusion的东西,可以一说,可老婆在喊饿唉,所以只能结束掉先闪人了。。读者君有兴趣自己去翻吧,如果真有兴趣要使用此技术的话,毕竟都读到这了。
文本分类问题: 给定文档p(可能含有标题t),将文档分类为n个类别中的一个或多个
文本分类应用: 常见的有垃圾邮件识别,情感分析
文本分类方向: 主要有二分类,多分类,多标签分类
文本分类方法: 传统机器学习方法(贝叶斯,svm等),深度学习方法(fastText,TextCNN等)
本文的思路: 本文主要介绍文本分类的处理过程,主要哪些方法。致力让读者明白在处理文本分类问题时应该从什么方向入手,重点关注什么问题,对于不同的场景应该采用什么方法。
文本分类的处理大致分为 文本预处理 、文本 特征提取 、 分类模型构建 等。和英文文本处理分类相比,中文文本的预处理是关键技术。
针对中文文本分类时,很关键的一个技术就是中文分词。特征粒度为词粒度远远好于字粒度,其大部分分类算法不考虑词序信息,基于字粒度的损失了过多的n-gram信息。下面简单总结一下中文分词技术:基于字符串匹配的分词方法、基于理解的分词方法和基于统计的分词方法 [1]。
1,基于字符串匹配的分词方法:
过程:这是 一种基于词典的中文分词 ,核心是首先建立统一的词典表,当需要对一个句子进行分词时,首先将句子拆分成多个部分,将每一个部分与字典一一对应,如果该词语在词典中,分词成功,否则继续拆分匹配直到成功。
核心: 字典,切分规则和匹配顺序是核心。
分析:优点是速度快,时间复杂度可以保持在O(n),实现简单,效果尚可;但对歧义和未登录词处理效果不佳。
2, 基于理解的分词方法:基于理解的分词方法是通过让计算机模拟人对句子的理解 ,达到识别词的效果。其基本思想就是在分词的同时进行句法、语义分析,利用句法信息和语义信息来处理歧义现象。它通常包括三个部分:分词子系统、句法语义子系统、总控部分。在总控部分的协调下,分词子系统可以获得有关词、句子等的句法和语义信息来对分词歧义进行判断,即它模拟了人对句子的理解过程。这种分词方法需要使用大量的语言知识和信息。由于汉语语言知识的笼统、复杂性,难以将各种语言信息组织成机器可直接读取的形式,因此目前基于理解的分词系统 还处在试验阶段 。
3,基于统计的分词方法:
过程:统计学认为分词是一个 概率最大化问题 ,即拆分句子,基于语料库,统计 相邻的字组成的词语出现的概率 ,相邻的词出现的次数多,就出现的概率大, 按照概率值进行分词 ,所以一个完整的语料库很重要。
主要的统计模型有: N元文法模型(N-gram),隐马尔可夫模型(Hidden Markov Model ,HMM),最大熵模型(ME),条件随机场模型(Conditional Random Fields,CRF)等。
1, 分词 : 中文任务分词必不可少,一般使用jieba分词,工业界的翘楚。
2, 去停用词:建立停用词字典 ,目前停用词字典有2000个左右,停用词主要包括一些副词、形容词及其一些连接词。通过维护一个停用词表,实际上是一个特征提取的过程,本质 上是特征选择的一部分。
3, 词性标注 : 在分词后判断词性(动词、名词、形容词、副词…),在使用jieba分词的时候设置参数就能获取。
文本分类的核心都是如何从文本中抽取出能够体现文本特点的关键特征,抓取特征到类别之间的映射。 所以特征工程很重要,可以由四部分组成:
1,基于词袋模型的特征表示:以词为单位(Unigram)构建的词袋可能就达到几万维,如果考虑二元词组(Bigram)、三元词组(Trigram)的话词袋大小可能会有几十万之多,因此基于词袋模型的特征表示通常是极其稀疏的。
(1)词袋特征的方法有三种:
(2)优缺点:
2,基于embedding的特征表示: 通过词向量计算文本的特征。(主要针对短文本)
4,基于任务本身抽取的特征:主要是针对具体任务而设计的,通过我们对数据的观察和感知,也许能够发现一些可能有用的特征。有时候,这些手工特征对最后的分类效果提升很大。举个例子,比如对于正负面评论分类任务,对于负面评论,包含负面词的数量就是一维很强的特征。
5,特征融合:对于特征维数较高、数据模式复杂的情况,建议用非线性模型(如比较流行的GDBT, XGBoost);对于特征维数较低、数据模式简单的情况,建议用简单的线性模型即可(如LR)。
6,主题特征:
LDA(文档的话题): 可以假设文档集有T个话题,一篇文档可能属于一个或多个话题,通过LDA模型可以计算出文档属于某个话题的概率,这样可以计算出一个DxT的矩阵。LDA特征在文档打标签等任务上表现很好。
LSI(文档的潜在语义): 通过分解文档-词频矩阵来计算文档的潜在语义,和LDA有一点相似,都是文档的潜在特征。
这部分不是重点,传统机器学习算法中能用来分类的模型都可以用,常见的有:NB模型,随机森林模型(RF),SVM分类模型,KNN分类模型,神经网络分类模型。
这里重点提一下贝叶斯模型,因为工业用这个模型用来识别垃圾邮件[2]。
1,fastText模型: fastText 是word2vec 作者 Mikolov 转战 Facebook 后16年7月刚发表的一篇论文: Bag of Tricks for Efficient Text Classification [3]。
模型结构:
改进:注意力(Attention)机制是自然语言处理领域一个常用的建模长时间记忆机制,能够很直观的给出每个词对结果的贡献,基本成了Seq2Seq模型的标配了。实际上文本分类从某种意义上也可以理解为一种特殊的Seq2Seq,所以考虑把Attention机制引入近来。
过程:
利用前向和后向RNN得到每个词的前向和后向上下文的表示:
词的表示变成词向量和前向后向上下文向量连接起来的形式:
模型显然并不是最重要的: 好的模型设计对拿到好结果的至关重要,也更是学术关注热点。但实际使用中,模型的工作量占的时间其实相对比较少。虽然再第二部分介绍了5种CNN/RNN及其变体的模型,实际中文本分类任务单纯用CNN已经足以取得很不错的结果了,我们的实验测试RCNN对准确率提升大约1%,并不是十分的显著。最佳实践是先用TextCNN模型把整体任务效果调试到最好,再尝试改进模型。
理解你的数据: 虽然应用深度学习有一个很大的优势是不再需要繁琐低效的人工特征工程,然而如果你只是把他当做一个黑盒,难免会经常怀疑人生。一定要理解你的数据,记住无论传统方法还是深度学习方法,数据 sense 始终非常重要。要重视 badcase 分析,明白你的数据是否适合,为什么对为什么错。
超参调节: 可以参考 深度学习网络调参技巧 - 知乎专栏
一定要用 dropout: 有两种情况可以不用:数据量特别小,或者你用了更好的正则方法,比如bn。实际中我们尝试了不同参数的dropout,最好的还是05,所以如果你的计算资源很有限,默认05是一个很好的选择。
未必一定要 softmax loss: 这取决与你的数据,如果你的任务是多个类别间非互斥,可以试试着训练多个二分类器,也就是把问题定义为multi lable 而非 multi class,我们调整后准确率还是增加了>1%。
类目不均衡问题: 基本是一个在很多场景都验证过的结论:如果你的loss被一部分类别dominate,对总体而言大多是负向的。建议可以尝试类似 booststrap 方法调整 loss 中样本权重方式解决。
避免训练震荡: 默认一定要增加随机采样因素尽可能使得数据分布iid,默认shuffle机制能使得训练结果更稳定。如果训练模型仍然很震荡,可以考虑调整学习率或 mini_batch_size。
知乎的文本多标签分类比赛,给出第一第二名的介绍网址:
NLP大赛冠军总结:300万知乎多标签文本分类任务(附深度学习源码)
2017知乎看山杯 从入门到第二
王俊凯作为零零后的偶像我感觉他在零零后中的影响是非常的大的,在我身边的零零后中做问卷调查的话,如果问卷调查的孩子有十个的话,那么八九个孩子都是喜欢tfboys的。
我觉得现在零零后的小孩儿已经开始成长进入了青少年的阶段。最小的零零后也应该已经上小学二年级了。
我觉得这个时段的孩子是非常的难管教的,因为他们正在处于从儿童期到成年期过渡的青春期,所以呢,整个人的人生观价值观还不是很健全。所以在这个阶段的孩子们呢,都喜欢迷恋一些男明星,比如像是tfboys那样的。
我觉得现在正在处于青春期上年期的孩子们,就和当年的我们是一样的,我们当年也是在青春期的时候疯狂的追星,每个人都有在这个年龄时候的体验。
所以我现在特别的能理解,现在的小孩儿,为什么在追星?我觉得追星是一种常态吧,如果说你追的偶像是非常积极向上的,就像王俊凯这样的孩子,我觉得还是可以向他学习的。
所谓偶像,就是一个积极向上的正面形象。
我的小表妹,他就是零零后,非喜欢欢tfboys,我觉得tfboys在人生中简直就是一个非常正面的形象啊!
我记得她现在正在上小学四年级左右吧。非常的喜欢王俊凯。每次我问他要什么生日礼物的时候,她都会跟我说要王俊凯的海报或者是王俊凯的周边之类的东西,我觉得现在的小孩真的是太疯狂了。
之前我的小表妹的学习成绩并不是非常的好,每次都在班里考倒数的样子。自从他喜欢上王俊凯之后,他就把头发剪成了王俊凯那样,虽然她是一个女生。
后来呢,因为我跟她说了一句王俊凯学习挺好的,你为什么学习不好呢,他就跟我说奋发努力的向上学习啦。
我记得那段时间她特别的积极,因为有偶像王俊凯的支持,所以呢,他就开始好好学习,每天都开始问我作业怎么做。不会的知识点也开始问我啦,我当时特别奇怪,以为是一句玩笑话呢,但是小孩竟然当真啦!
虽然小表妹在一个暑假的学习中,并没有获得巨大的进步,但是我感觉他的进步还是很大的,因为有王俊凯的支持。
后来呢,她下一年级的期末考试中,我感觉她的成绩真的是突飞猛进啦,一直从全班的倒数逆袭到了全班中上游的程度。
我觉得我小表妹的事例让我非常惊讶。
之前我对追星的小孩儿有一种非常大的偏见,感觉他们就是青春期的时候不懂事儿,想喜欢一些男明星,然后做一个精神的寄托,但是后来我感觉偶像是真的有一些积极的力量在里边的。
所以我觉得王俊凯作为一个偶像来说是非常有影响力的。为什么说他有影响力呢?因为现在小孩儿都喜欢他那样的类型。
现在的零零后都把偶像当成是自己的人生奋斗的目标。如果就正面积极的作用来讲呢,我觉得王俊凯的影响力在零零后中也是非常大的。
基本使用 使用 TensorFlow, 你必须明白 TensorFlow: 使用图 (graph) 来表示计算任务 在被称之为 会话 (Session) 的上下文 (context) 中执行图 使用 tensor 表示数据 通过 变量 (Variable) 维护状态 使用 feed 和 fetch 可以为任意的操作
哈哈遇到一个好适合回答的问题。你问为什么看到现在很多的模型都是在这几个上面修改的,基础模型的演进方案Bolei讲的非常清楚,我从我在工业界一年多的角度补充几点,有下面几个原因
1 那是因为你看到的大部分是公开的论文,公开的论文需要一个标准的baseline及在baseline上改进的比较,因此大家会基于一个公认的baseline开始做实验大家才比较信服。常见的比如各种检测分割的问题都会基于VGG或者Resnet101这样的基础网络。而这类型paper很多,就会有种业内只有这几个模型的错觉
2 发表论文的同学多数是在校的phd同学,首先大家有强大的科研压力和ddl的压力,时间和精力只允许大家在有限的范围探索。因此基于vision问题的特性进行各种模型和算法方案的改进肯定是更有novelty(也是更符合发paper的思路),所以有限的精力就放在了另外的方面而继续沿用目前VGG/GoogleNet/AlexNet/Resnet这样的baseline
3 进行基本模型的改进需要大量的实验和尝试,很有可能投入产出比比较小。能做到Kaiming ResNet这样的工作真是需要大量的实验积累加强大的灵感,真是偶像。我们大部分人自己的实验过程,很多之前预想的可能会work的idea经过尝试可能提升有限(失望脸,没法毕业怎么办)。基于我们今年参与ImageNet的经历来讲,对于深度学习,很大部分可以提升性能的点在于一些对于细节的精确把握。因此你可以看到许多排名靠前的队伍最后讲的关键技术点似乎都是tricks。而这样精确细节的把握是需要大量的时间和计算资源的,往往在学校不可行。因此有大量计算资源的比如香港中文大学,我司商汤科技,公安三所,海康等成绩靠前。PS,我们之后会公布我们今年参加ImageNet Scene Parsing比赛拿到第一的技术方案(paper+code+model),实际构成是一些insights(可以写paper的技术点)加大量的tricks(好像不太容易写paper)。敬请期待
自Alexnet于2012年的ILSVRC大赛中奋勇夺魁后,ConvNet就不可抑制地大发展了起来。2014年新的一届ILSVRC大赛中Googlenet与VGG的身影分外亮眼。Googlenet相对VGG而言在网络结构上有了更新的突破,不过其复杂度也大大增加了。VGG相对Googlenet虽然精度略逊些,但其整体网络框架还是延续了Alexnet及更早的Lenet等的一贯思路,此外还更深入的探讨了ConvNet深度对模型性能可能的影响。由于其整个网络结构的简单、强大,VGG16/VGG19曾一度广泛被用作各种检测网络框架像Faster-RCNN/SSD等的主干特征提取网络,直到Resnet提出之后,它才渐渐完成了其历史使命,退居二线了。。不过至今仍有许多计算机视觉领域内的任务会考虑VGG的网络设计来构建其新的应用网络模型。
下表所示为VGG论文当中实验过的几种ConvNet结构。它们其本采用了3x3的Conv kernel,pad/stride为1,只是在其中的若干Conv层后会置MaxPool层来作特征的上采样以高度抽象特征,节省后续的计算。然后在每个网络的最后则是同其它分类网络一样的若干个FCs层及Softmax(注意,在更为近代的Resnet/Googlenet系列模型当中已经去掉了参数非常多,计算量大的FC层,而改用了更好使的Average Pool层)。在这些网络结构中,VGG16与VGG19(表中的D网络与E网络)最为受人欢迎,它们在各大Frameworks上训练好的模型参数在网上都可公开获得。
作者表明虽然两个级联的3x3 conv或三个级联的3x3 conv分别在理论上等价于一个5x5 conv及一个7x7 conv。不过它们所具的模型参数(9 C^2与27 C 2)则分别要少于后两者的数目(分别为25C 2与49C^2)。同时作者实验表明更深(层数更多)而非更宽(conv channels更多)的网络有着自动规则自己参数的能力,因此有着更好的学习能力。(呵呵,这恐怕亦是一炼金术中招数,难有理论支撑吧,多半是作者在此种VGG类型网络中得到的经验总结)。
同Alexnet一样,也是用SGD对网络进行训练。其训练中用到的超参数像Learning rate/Dacay factor等与Alexnet也几乎一样。训练中用到的输入增强,VGG也是使用了一样的image shift及Random crop两种技术。
不过对于输入的维度,VGG分别实验了两种方法。一种是采用固定的维度输入,论文中分别尝试了256x256与384x384两种输入维度。另外一种则是采用了多维度训练及每次输入从一个维度范围内([256, 512])进行选择,resize后再用于进行训练。这种方法显然会受模型最后的几个FCs层的限制,因此作者特意将第一个FC改为了7x7的conv,后两个FC则改为了1x1的conv,最后如Googlenet那样接上了一个Average Pool层对得到的1000个(Imagenet共有1000类)score maps进行channel级加总,最后再用softmax层处理就得到了1000类的概率分布。
推理时VGG将完整的image直接通过训练好的VGG模型,其中在multi-scal训过的VGG上它最终后先得到一个1000个channels的score maps,然后经Average Pool层再得到最终的1000类的概率分布。作者实验了曾被证明较为成功的multi-crop进行预测,然后再对其求平场的方式,发现效果并不明显,提升精度有限,而且会带来较大的计算量。
作者在论文中的实验结果是使用了4个GPUs作多节点数据并行训练得到的。
首先下表为多种不同深度的VGG网络所分别具有的分类精度比较。可以看出最深的VGG16与VGG19表现突出。不过作者实验也表明若使用此类结构再进进一步对网络加深,那么其分类精度也不会再进一步提升了。换言之对于VGG类型的3x3 single scale conv叠加的网络而言,19层是它的天花板,再向上加层已无意义。
下表为VGG网络与当时其它的分类网络的结果比较。
作者本来就是基于Caffe完成的此网络实现。因此这里我们也使用caffe下的模型描述来分析下它的结构。
首先是它的基本输入层,与Alexnet网络一样。其用于完成数据增强的工作多是在transform里面完成,可见它只是用了Mirror镜像处理增强,此外就是以227x227的size对原图进行切割,在真正灌入网络之前还会使用已有的dataset mean file对进行归一化操作。
以下是它网络的基本组成成分。差不多就是Conv(3x3)+ReLu+LRN或者Conv(3x3)+ReLu+LRN+Pool(2x2)。注意后来更先进的分类网络已经纷纷抛弃了LRN而改用了更好的BN。
与Alexnet一样,在第一个参数量较多的FC层后也用了dropout来防止模型在训练当中出现过拟合。
然后就是最后的FC及用于训练的SoftmaxLoss层和用于推理的Accuracy层。
在有抑郁的地方,艺术似乎常常伴随着——有时是伟大的艺术。爱伦坡,波洛克,米开朗基罗,海明威,济慈,高更,狄更斯和布莱克都是著名的创作艺术家。他们都患有抑郁症。
但是抑郁症和艺术有什么关系呢?在某种程度上,抑郁是导致创作过程的原因,还是让艺术家在任何创作领域更容易抑郁?几十年来,心理学家和精神病医生一直在研究和思考这个问题。大多数人认为抑郁确实在创造性产出中起着作用。批评者不同意这种观点:这些研究关注的是非常特殊的高成就者群体,他们依靠轶事作为证据。然而,随着研究基础的扩大,再次证明艺术、创造力和抑郁可能有一定的相关性:根据CNN 2014年1月的一份报告,研究人员
艺术家如何应对抑郁
因为有创造力的人往往高度自觉,他们似乎花更多的时间思考自己的失败、恐惧、不安全感和失望。作为想象力丰富的理想主义者,他们很容易想象到生活、生活水平和满足感的不同。此外,如果艺术家像许多有创造力的人一样,有很强的社会意识,他们可能会花很多时间去想象世界上社会、政治和经济问题的可能解决方案。不幸的是,他们梦想的解决方案可能并不总是切实可行的。
抑郁症可能是一种衰弱的状态,但它往往是一个警告信号和呼救。换句话说,它需要行动。艺术能力强的人自然会转向艺术来表达自己的情感。他们的抑郁可能不是艺术的原因,但可能是艺术的动机或应对机制。这有助于解释为什么这么多有创造力的抑郁症患者能够保留如此令人印象深刻的创意作品。
欢迎分享,转载请注明来源:浪漫分享网
评论列表(0条)