微博收藏(机器学习探讨)(二)

来源:互联网 发布:世界纹身大师 知乎 编辑:程序博客网 时间:2024/05/16 08:59

Jeremy Lin

1.0 关于深度学习与工程师的讨论

@龙星镖局 感受:

1)深度学习真成了,80%机器学习工程师失业;

2)大规模机器学习依赖数据、架构,算法其次;

3)NLP是深度学习的前沿阵地,Dean,Bengio,Jordan都不会错过;

4)机器学习门槛太低,编程能力才是码农的最后防线;

5)大数据研究将会呈现巨头垄断的格局,大家赶紧找好山头。

@Arber:同意 2)3),对1)4)则存怀疑,基础架构越发达,工程师的角色则会靠近业务层,也越能发挥价值,不是写程序的价值,而是解决问题的价值。5)么,数据在哪里,机会就在哪里。

@明风Andy:回复@Arber:2,3也不同意,算法实现的好坏和精妙度,分布式环境更加重要。图像比NLP更加适合深度学习

@美人她爹: 基本上一个东西如果复杂到需要一个团队来处理,就没啥新意了。团队创意效率胆识都远低于个人。芯片操作系统网站生物工程都是例子。大公司死于自己建立的复杂性,这是一个孤胆英雄的时代

@爱可可-爱生活:[赞] 工程上分工细化的团队是必要的,核心技术方面更需要独当一面的孤胆英雄,否则也很难真正沉淀下去

@yhchuan:1.真成了应该会更繁荣,为啥都失业?就像是说软件工程真成了,程序员都要下岗。2.数据和架构成熟之后,不同应用的不同算法难道不是核心问题?3.NLP。。。不是说太结构化的数据不适用DL?4.ML门槛低?会写hello world就可以说精通编程了,所以编程其实门槛更低。5.巨头垄断各行各业都有,唯一同意的

@asker2:回复@诸神善待民科组: 深度学习现在才刚开始发展。靠一个general的多层RBM或者autoencoder是不够的。就像word embedding,靠简单的word2vec也是不够的。更复杂,更强大的模型还等着被机器学习研究者开发出来

       @张俊林say:NLP确实是除了图像音频外的DL前沿探索区


2.0 小数据VS大数据 by BAOJIE

今后几年的趋势应该是小数据颠覆大数据,不是深度学习

1) 我觉得无论是从技术还是市场,到了拼系统的程度,就只有数据奴隶主,主要是大的数据奴隶主才能搞。但是这反而是颠覆他们的机会。因为他们的规模依赖他们的渠道和市场(不然哪里来那么多免费数据浪费)。但是现实市场中大多数问题并不需要这么大规模。这会是一个典型的创新者的窘境;

2) 绝大多数的机器学习问题的制约瓶颈不是算法,也不是系统,而是数据。能到拼系统阶段的都是土豪了,大多数公司还没到这个奢侈的阶段就死了。在此阶段前,只要数据好,什么烂算法和烂系统都能somehow work。但是数据是最贵的,上量贵,清理贵。找一个理解数据,算法和系统的人更贵;

3)对于大多数的芸芸众生,去追谷歌脸书这些巨头的风恐怕有些李德主义。算法的好坏取决与成本,取决与规模。对于占大多数的中小型机器学习问题,恐怕“小数据”方法才是关键,就是用最低的成本,尽可能的利用小的数据规模和机器规模,尽可能的利用先验知识,尽可能的缩短投入产出周期;

4)和大多数其他工程问题一样,制约技术选型的不是一个技术酷不酷,而是看它全周期的投入成本和维护成本。投入成本不仅要看机器成本,更主要是人力成本。采用成熟技术有助于降低成本,前沿技术向下渗透速度并不会那么快。深度学习和历史上的神经网络一样,维护成本并不低,不会是万灵药;

5)我说的可能是偏见,不一定对:今后几年的趋势应该是小数据颠覆大数据,Smart Data超越Big Data。系统的可解释性,可读性,可维护性,可进化性。数据的自描述性,多能性。结构化数据(含知识图谱)与非结构化数据的混合。我觉得这些都是可能的突破点,因为它们着眼于Value,降低成本。


3.0 @陈天奇怪:cxxnet和大规模深度学习
在今年发布的两个机器学习项目中,cxxnet是最精彩的一个。因为它包含了我们团队可以发挥到的机器学习和系统的各个方面的极致: 除了前沿的深度学习之外,它的两个独到特点也是让我们在设计实现中最为享受的

1) 灵活的公式支持和极致的C++模板编程;
深度神经网络的实现大致分两类:以python为主的编程效率派和以c++为核心的为代表的追逐性能派。前者支持直接tensor的计算,而后者往往需要给每个神经网络的层和更新公式编写独立的cuda kernel。编程效率派认为机器学习程序员应该是写公式来达到代码最大的可读性和易改写性。而很多以C++为核心的代码之所以没有支持非常灵活的张量计算,是因为因为运算符重载和临时空间的分配会带来效率的降低。
cxxnet的核心mshadow在这两者之间做了一个平衡。使得我们在不损失效率的前提下可以通过模板编程技术允许开发者编写和matlab/numpy类似的代码,并且在编译时自动展开成优化的kernel。其背后的expressiontemplate技术是我最喜欢的c++ trick之一。非常值得最求效率抽象和优美的同学了解。
因为采用了mshadow作为核心,直接导致cxxnet的各种实现可以非常简单可读,编写一份代码就可以在GPU和CPU上面跑。使得其在代码简洁和可扩展上更加容易。
2) 通用的并行参数共享和更新方案
多卡和多机计算一直是大规模机器学习中一个让人兴奋的话题。提到神经网络并行,最让我头疼的是可以选择的方案很多,而都涉及到不同的hack。单机多卡到底是用P2P,还是拷贝到内存,是用stream开始开多线程。分布式到底是用parameter server,MPI还是自己写一个框架。可以选择的方法很多。设计出一个分布式的代码不难,困难的是如何让并行的接口自然的独立出来,使得其不会影响其它部分的实现。经过不断地考虑,最终我决定采用了mshadow-ps这样一个统一的参数共享接口。
简单的说,mshadow-ps是一个GPU的异步parameter server接口(应该也是目前为止唯一一个,因为GPU线程模型和CPU不同,原有的的ps库并不能直接用于GPU)。异步通信对于神经网络的更新非常重要。在backprop算法中,我们很早就可以获得梯度并且进行梯度同步,而只有到下一次forward到对应层的时候才会需要这个weight。
我和limu合作设计了ps风格的三个接口来解决这样的同步问题,Push/PullReq和Pullwait。当获backprop得梯度的时候直接调用push把梯度发送出去,并且调用pullreq请求结果。Push和Pullreq都是异步操作,背后会有单独的线程同时完成数据拷贝同步,以及拷回的操作。而当我们需要weight之前在调用Pullwait来等待可能没有完成的操作。这样简单的三个接口,使得我们可以经过很少的改动就可以设计出多卡和分布式的神经网络来,并且在调用这些接口的时候完全不需要关系同步的实现是什么。
值得一提的是,这样的编程模式把多GPU,分布式以及各个通信框架直接结合起来。mshadow-ps支持单机多卡的GPU PS,以及基于parameter-server的分布式PS实现。同样的也可以很容易MPI来支持多机通信。使得一个统一的接口,可以完成从单机多卡到分布式各种后端实现的支持。并且因为高效的异步通信,使得我们可以在alexnet上面达到linearspeedup(注:并行的难度在于计算和通信的时间比,weight少更加复杂的网络反而更加容易线性加速,而alexnet是非常困难的例子)。
经过团队里面大家不断地努力,cxxnet的V2终于可以和大家见面了。除了上述介绍的技术亮点之外,还有各种好玩的特性。现在把特点总结如下:
1. 轻量而齐全的框架: 我们尽力维持最小的依赖库实现最多的功能。推荐环境下仅需要CUDA, OpenCV, MKL或BLAS即可编译。
2. 强大的统一的并行计算接口:基于mshadow-ps的并行计算接口采用了一份代码解决了多GPU,多机的异步同步。同步和计算重叠,在多份测试中均可以得到线性加速比。
3. 易于扩展的代码结构:cxxnet计算核心由mshadow提供。Mshadow使用户可以编写numpy/matlab风格的代码,但仍具备手动优化cuda 代码的灵活性。CPU和GPU共享同一份代码,在编译期间通过模板自动翻译成CUDA/MKL调用。
另外一些特性包括:
4.CuDNN支持:Nvidia原生卷积支持,可加速计算30%!
5.及时更新的最新技术:我们将及时跟进学术界的动态,例如现在已经支持MSRA的ParametricRelu和Google的Batch Normalization
6.Caffe模型转换:支持将训练好的Caffe模型直接转化为cxxnet模型(本周内上线!)
7.方便的语言接口:在Python中直接进行训练,方便可视化。Matlab也将很快提供
我们相信可以通过最简洁清晰的代码来完成高效的C++深度神经网络实现。我们也欢迎对于系统和机器学习有兴趣的同学加入到项目中来。


4.0 Eric Xing(CMU教授)的DNN-discussion

目前大数据主要分两派:DL派和ML派,两派之间有融合也有对立,比如Jordan教授就不碰DL,也有HILTON,LECUN教授坚守DL,当然吴恩达,ERIC XING属于两边都沾边!这个PPT很好对比两者 DNN-discussion.pdf



5.0 深度学习综述与建议

谷歌科学家、Hinton亲传弟子Ilya Sutskever的深度学习综述及实际建议 比较喜欢其中关于tricks的建议:包括data, preprocessing, minibatches, gradient normalization, learning rate, weight initialization, data augmentation, dropout和ensemble。

文章地址


6.0

@梁斌penny

那天推特一个美军(好像是高级研究员)来清华报告,他们的打法套路是:做事之前,先确定主要技术指标,自动测评工具做起来。再把任务分阶段,每个阶段内部,try大量学术界产业界的方法,大量try,留下work且快的,其他扔掉。最后整体系统就会好。东西用不用完全不看是不是best paper出的,只看实验结果.


7.0 关于DL使用实机、场合的论文

文章《New to deep learning? Here are 4 easy lessons from Google》
关于深度学习使用的时机、场合和方法,来自Google的Greg Corrado给出一些建议:即使它能行,也未必是最佳方案;量体裁衣就好,并非要有大平台才能做;足够的数据还是很必要的;DL并非真的基于大脑工作机制

文章地址


8.0 关于DL的reading list

My deep learning reading list
主要是顺着Bengio的PAMI review的文章找出来的。包括几本综述文章,将近100篇论文,各位山头们的Presentation。全部都可以在google上找到。
BTW:由于我对视觉尤其是检测识别比较感兴趣,所以关于DL的应用主要都是跟Vision相关的。在其他方面比如语音或者NLP,很少或者几乎没有。个人非常看好CNN和Sparse Autoencoder,这个list也反映了我的偏好,仅供参考。
文章地址

评论:
@夏粉_百度:个人建议通过读一些材料后,掌握深度学习本质后(比如能说清楚它的优缺点,在理论体系中的坐标位置),少量时间用于更新进展,更多时间应该花在思考上,比如如何改进和应用。我们提出的首个大规模稀疏特征上的深度学习算法DANOVA就是不断思考的结果,比人工特征效率提升千倍。欢迎加入resume@baidu.com

@阿邦dd:回复@图像视觉研究:直接跑他们的代码吧。。觉得dl文章那么多,也就是从imagenet那篇开始成为state-of-art的,在之前的dl方法,性能都不行
        @图像视觉研究:回复@阿邦dd:确实,现在是边看文章边研究代码,收获比光看文章要大很多


9.0 Pedro Domingos. A Few Useful Things to Know about Machine Learning.
论文地址:http://vdisk.weibo.com/s/hxqSZfjTE0X
翻译版本:机器学习的那些事 译者:刘知远 
译文地址:http://www.360doc.com/content/13/1020/18/7673502_322833764.shtml

评论:

@张栋_机器学习
这篇文章是我读过的最好的机器学习文章之一:总结了 “机器学习实践中学到的 12 条教训” 这些教训在任何教课书里都无法学到,只有在实践和具体应用中能体会到,非常珍贵! 
          @龙星镖局 Domingos 可是机器学习领域的大拿,他的很多工作也都是比较实用的,比如Markov Logic,meta-cost,Sum-Product Networks 等等。 另外,清华大学@刘知远THU 研究员翻译的中文版也很到位。

10.图像自动标注技术的新进展

@微软亚洲研究院

近几年,各大科技公司围绕在图片自动标注技术上的尝试层出不穷。今年,在微软杰出科学家John Platt的带领下,该技术取得了新进展。其团队所开发的标注系统在用户盲测中,23.3%图片系统自动生成的描述比人为编辑的描述更被人认可。

地址

其他机构的研究成果:

百度和California大学:Explain Images with Multimodal recurrent neural networks.地址

University of Toronto:Unifying Visual-Semantic Embeddings with Multimodal Neural Language Models地址

Stanford 大学: Deep Visual-Semantic Alignments for Generating Image Descriptions地址

Long-term Recurrent Convolutional Networks for Visual Recognition and Description地址


11.

@王威廉

加州伯克利大学博士 Aria Haghighi 写了一篇超赞的数值优化博文,从牛顿法到拟牛顿法,再到BFGS以及L-BFGS

Numerical Optimization: Understanding L-BFGS

地址

图文并茂,还有伪代码,强烈推荐。

@陈如山: 他的这篇文章写的比较精简,我之前也写了几篇关于常用优化算法的文章,从 steepest descent 到 newton 再到 quasi-newton (包括 lbfgs),包含所有公式推导及部分收敛性分析和 python 代码 (可以画 contour 图)地址

其他相关的blog:地址

12.

@统计之都

Gilles Louppe的博士论文《随机森林:从理论到实践》 排版精美

地址


13.

@南大周志华: 这一波我们是走在Hinton前头了。distillation这个名字比较潮//@李楠__NaN:这个distillation不是什么新想法,@南大周志华 老师十多年前就提出了的 twice learning来抽取 ensemble中的knowledge O网页链接 O网页链接 在DeepLearning下换个马甲就出来混啦//@许家铭_CASIA#NIPS2014#Deep Learning workshop paper list have just been posted online by Andrew Ng, O网页链接 , 看Hinton神 和Dean神在Google的合作文章, Distilling Knowledge怎么翻译?知识蒸馏?知识抽取?。。特征压缩表示的另类叫法吗?


14.

@iB37
1)周志华CCL14讲述boosting及其抗过拟合性25年故事O网页链接 入手点集成学习大法好,转向AdaBoost.从89年Kearns(外公生于广州)和Valiant(图灵奖得主)问强弱学习等价否源起,到探寻AB的抗过拟合性:间隔派和统计派各展身手.最后他们的贡献 2)后续Hubel-Wiesel25年合作: 视觉处理 深度学习

Boosting 25 Years


15. 关于Kaggle的一些分享

(1)@王威廉 Kaggle各种机器学习竞赛的冠军及其他优胜者的源代码汇总:地址

(2)Kaggle的一些总结,特征工程分重要,模型越简单越好,很多leadboard上排名靠前的人overfitting了,模型融合永远是比赛不可或缺的手段。Learing form the best地址

(3)参加kaggle竞赛是怎样一种体验? 地址

(4)许家铭_CASIA:Kaggle深度采访CIFAR-10竞赛(2013/10-2014/10)网页链接 的获奖者Ben Graham, Phil Culliton, 和 Zygmunt Zajac网页链接 ,看CNN如何取胜图像分类任务,有大量经验Trick代码奉献。顺道拜访CNN的推动者 Yann LeCun 地址


16. 

机器学习入门资源不完全汇总

http://ml.memect.com/article/machine-learning-guide.html


17.

K-means是最常用的聚类算法之一:容易理解,实现不难,虽然会有local optimum,但通常结果也不差。但k-means也不是万金油,比如在一些比较复杂的问题和非线性数据分布上,k-means也会失败。普林斯顿博士David Robinson写了一篇不错的分析文章,介绍了几种k-means会失效的情形。

http://varianceexplained.org/r/kmeans-free-lunch/


本文地址:http://blog.csdn.net/linj_m/article/details/44488899
更多资源 请关注 博客:LinJM-机器视觉 微博:林建民-机器视觉


0 0