Caffe深度学习框架作者贾扬清online内容分享II

2、讨论

2.1、caffe算法与结构

  • multi-gpu其实是在最近的model,比如说googlenet上,只需要model
    parallelism就可以了,因为参数的数量很少:)。
    caffe内部的Convolution计算是图像拉伸成向量进行的计算,这种方式会比普通的方法和fft的方法计算更快吗?放大点说,caffe做了哪些算法上的优化使得计算速度比较快呢?
答:那个其实是我的weekend hack,所以推荐大家用其他的优化,比如说cudnn等等。说实话写caffe的时候我没太关注速度。在神经网络的训练过程中,如何能够并行或者说更快地计算?主要是靠两点吧,一个是写更快的code(比如说用cudnn优化convolution),一个是写并行计算的框架(这方面我推荐用MPI入手,因为MPI虽然没有fault tolerance等等的好处,但是并行非常简单,可以作为最开始的测试)。使用gpu对计算性能进行优化,这个更多的是在code层面上调速度了,如果有兴趣的话,nvidia的nvprof应该会很有帮助。目前,caffe也有很多的branch,比如对分布式的支持,可以在parallel branch里面找到。
  • 目前dl近几年在siamese nets distances结构上的进展如何?研究思路如何?”
 答:Yann Lecun有paper:Learning a Similarity Metric Discriminatively with Application to Face Verification讲这个,值得看看。
  • dl能实现FFT吗?
答: facebook其实有fft的code,参见fbfft。
  • facebook是利用了FFT去快速计算,不是我问的意思。用傅立叶变换其实是提取了频域特征,根据应用的不同,最优的变换不一定是FT,可能是时频变换、分数阶FT等等变换。那么问题就来了:利用深度学习算法,能否学习到最优的时频特征表出?如果可以,是不是可以把信号处理里面的固定分析方法都扔掉?
答:这个我就的确不是专家了,我觉得这个有点类似于model design的问题,深度学习相当于也是设计了一大类的model,然后在这一类model当中寻找最优的,所以如果有一些oracle knowledge(比如说已有的固定分析的经验)可以知道如何rectify数据,我觉得应该还是有帮助的。
  • 用caffe纯粹做分类的话(前向),需要softmax层吗?看代码有个pro层和softmax一样吗?
答:不是很清楚pro层是哪个,不过也可以用logistic,任何传统的分类函数应该都是可以的。对于,softmax_layer和softmax_loss_layer的区别,softmax_layer是做softmax变换(就是把输入的score变成sum to 1的概率值), softmax_loss是计算prediction和true label之间的cross entropy loss function
  • 现在也有用权值不共享的卷积网络的,请问这个和权值共享网络分别更适合什么样的问题?
答:权值不共享的问题是参数太多,所以不是很好控制overfit,一般都是在网络的后期做locally connected,这对一些问题(比如说face)是个很好地tradeoff,但是还是得实际应用来测试:)
  • 用hdf5layer实现多label的过程不是很清楚,举个例子说,比如,输入低分辨图像,label是高分辨图像,这种有没有详细一点的教程,或者师兄能不能简单提一下?
答:这个主要就是要设计一个input层能够输出不同的top blob,其实caffe在这一点上做的不是很好(因为太关注classification了),可能看一下这些典型的输入层的实现会有帮助。
  • caffe能否在多个层都连接loss函数,同时进行反向传播?
答:可以的,关键是要处理好gradient merge的问题,其他都是OK的。
  • caffe实现多层loss反向传播,即在prototxt里,每一层后加上需要的loss函数,那么caffe最终的反向传播会是怎样进行的?
答:应该是这样的,每一层后面需要一个split层,把这一层的输入变成两个blob,一个继续往下传播,一个输入到loss层里面。在backprop的时候,split层会把这两条路径的gradient加起来。对于loss是什么了,比如说googlenet用到了几个branch来inject softmax,所以基本上还是要寻找和问题相关的loss term。
  • 用SGD的时候,收敛充分的前提下,不同的学习率衰减策略是不是结果都差不多?
答:恩,一般会差不多。
  • autoencoder 模型中,单个隐含层和多隐层 模型,效果差别很多啊吗?
答:这个可能和具体实现有关,隐层多了以后,representation power增加,很可能会提升效果,但是也可能会overfit,所以需要更仔细的training。

2.2、caffe工程与应用

  • 目前Caffe主要面对CV或图像的任务,但是也可以做nlp。那在移动端用深度学习可以实现实时人脸检测么?
答:人脸检测可能目前用传统方法还是很competitive的,但是做一些识别等等,我觉得目前的移动设备应该是可以支持的。DL也能和传统特征结合,即传统特征可以作为feature输入到网络里面,然后再继续做计算。
  • 对于多任务学习的DL有什么经验可以分享吗?
答:比如数据分布的均匀性的影响。数据分布均匀性一般都还是挺tricky的,实际操作上一般我觉得cap一些frequency(如果某一类太多了,就downsample一下)会使得training更好一些。
  • caffe能支持lstm、rnn的训练吗?另外,对于百度的dlmc您有什么看法?
答:Jeff Donahue有一个branch可以来做lstm,我自己在refactor的一些code应该也是可以的,但是因为公司review政策的缘故没法保证什么时候能release :) dmlc我觉得是个挺好的effort,在开源界看到更多中国学生的身影很兴奋!
  • 目前deep learning用在小数据集上有什么好的方法吗?在小数据集的问题上是不是可以通过减少网络的层数来减少过拟合?
答:小数据集基本上需要通过小的模型来防止overfit,当然如果数据集是图像等等,也可以通过finetuning。另外一个可能是直接手标更多数据,有时候糙快猛但是还挺好使的。
  • caffe对不同尺度的同一对象的分类和识别有哪些特殊的处理方法?
答:这个倒也不单是caffe的问题,在图像识别上如果需要处理不同尺度,一般就是做multi-scale的detection,可以参考一下selective search,R-CNN等等的工作。
  • 如果不使用matlab或python接口,直接在C++的caffe代码里对图像进行分类有什么好的方式吗,速度会不会比matlab和python更快?
答:我觉得速度应该差不多,因为matlab和python的overhead不会太大。(可以不使用python,直接使用c++, chrispher经过测试,速度差距还是很大的(至少一倍以上),python在预处理图像方面比较慢)。
  • CNN可以应用到对图像进行深度图提取吗?效果会怎样呢?
答:最近nyu应该有一篇stereo的文章,应该比较类似。
  • caffe的训练过程能否保持对象的旋转不变性怎样做到这点?
答:目前不是很好explicit地输入这样的constraint,主要还是靠data augmentation(输入各种旋转以后的图)来实现。
  • 怎么处理变长的图片,因为Conv对变长不明感,而且可以用Dynamic Pooling?
答:变长的图片可以用SPPNet这样的思路,最后做一个固定输出大小的pooling。
  • 用自己的数据(并不属于imagenet的1000个类)在imagenet训练的网络上做finetune时,发现怎么调整参数最后几乎都无法用来分类,这是什么原因呢?
答:这个可能需要看一下图片是否类似,比如说imagenet的模型用来做医学图像识别效果就很可能会不是很好,还是需要看这两个task的数据之间是否有相似性。
  • 用自己的数据集,且类型和和imagenet的类型不太一样(比如细胞类型),想用caff训练的话,最少得需要多少数据量,才比较好?
答:这个说不太好,所以最好还是先用一部分数据测试一下,然后你可以用从少到多的数据来训练,然后外推一下可能会需要多少数据。
  • DL中,能否预知到底学到了一个怎样的物理模型,来实现分类的?
答:目前比较困难,在图片上,大家做过一些有意思的实验来检测模型到底学了什么,可以参考karen simonyan的文章(用CNN来生成一个”最像”某一个类别的图像)
  • dl 在ctr预测上有什么好的论文或者资料么?
答:我不是很清楚,不过余凯师兄以前讲过百度用DL做CTR效果很好,所以还是很promising的。
  • 除了从分类结果看特征表出的优劣,有没有一种通行的方式去看特征表出的优劣?还有一个问题:lstm简直就是一个编码模型…以后机器学习的结构都要往电子工程上靠了吗?我觉得结构越来越复杂正背离dl的初衷了?
答:其实大家经常批评DL的问题就是说,我们从设计feature变成了设计model(我记得原话是jitendra malik讲的,我太八卦了)。所以这个的确也是一个难解的问题,兴许我们可以做一个算法来自动生成很多model然后evolve这些model?MIT曾经有一篇paper来自动学习网络的结构,但是目前state of the art的模型还经常靠手调。

贾扬清的个人主页:http://daggerfs.com/
转自:http://www.datakit.cn/blog/2015/06/12/online_meet_up_with_yangqing_jia.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值