想下一些学习方面的资料,不知道有没有怀孕大家有没有什么好的网站推荐?学海网怎么样

国内报道的问题。&br&
据我所知,Andrew没有说过百度在深度学习上的发展已经超过了谷歌或苹果,下面是他在fb上的原话:&br&&img src=&/760a9af98af041be8912f7fed9afeadb_b.jpg& data-rawwidth=&629& data-rawheight=&780& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/760a9af98af041be8912f7fed9afeadb_r.jpg&&&img src=&/712fcf63e8ed4_b.jpg& data-rawwidth=&629& data-rawheight=&761& class=&origin_image zh-lightbox-thumb& width=&629& data-original=&/712fcf63e8ed4_r.jpg&&&br&
在上面一条FORBES的报道里人家也明确写着是在*语音识别领域*超过了谷歌苹果,不知道到国内怎么就变成“深度学习的发展超谷歌苹果”了。&br&
另外Andrew为人一向低调,不会像某些知乎大V整天扯皮黑别人。上次微软用CPU在ImageNet-22000上跑出了不错的结果,Andrew还专门转发称赞了一下。&br&&br&题外话I:最近Google在deep learning上的动静很大:让Jeff Dean转战large scale deep learning,又收购了DeepMind和计算机视觉巨牛Andrew Zisserman,加上之前的Geoff Hinton团队和Google Research的Pierre Semanet、贾扬清等,目前在人才方面似乎已经领先百度一截了。余凯(百度IDL的国内负责人)前几天也提到,今年谷歌大量采购GPU,总数已经超过了百度。
国内报道的问题。 据我所知,Andrew没有说过百度在深度学习上的发展已经超过了谷歌或苹果,下面是他在fb上的原话: 在上面一条FORBES的报道里人家也明确写着是在*语音识别领域*超过了谷歌苹果,不知道到国内怎么就变成“深度学习的发展超谷歌苹果”了。 另…
我建议去做深度学习,并且结合老板的背景。 看看对下面这些方向是否感兴趣(毕竟你自己在做,我不建议你去做,像搭建convonet,然后跟别人拼accuracy):&br&&br&深度学习领域很广,模型又很多,但是人们对“深度学习为什么会work& 仍然不是很清楚。比如用深度学习模型学出来的hidden units之间的关系是什么? 深度模型中每一层学出来的到底是什么,有什么关联? 为什么dropout会work, 怎么设计dropout使得学出来的模型更robust而且正确地分辨adversial example? 人们常说深度模型是universal approximation, 那有没有某些region是deep network不能capture的?
人们常常去搭建很复杂的模型用几百万或者几亿个参数,但真的有必要吗? 真的需要这么大的model capacity吗? (从这个问题可以引申出一些model compression的问题,就是能不能用更小的模型去approximate原有非常庞大的模型)。 深度模型的重点是representation (很容易想象出会跟数学里的representation theory会有点关系), Bengio等人强调好的representation是meaningful, invariant, abstract and disentangled, 那深度模型真的能学出这些吗? 可不可以从实验的角度做些针对性的分析? 能不能从理论的角度给出合理的解释? ....&br&&br&在这些分析和理论研究上会用到很多数学工具,比如信息论, 但不一定要数学背景非常好,如果能分析出有意思的现象,其实也很不错的。
比如这篇文章(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) 就用信息论的知识去分析高维数据, 你也可以想想怎么用这种思维去分析深度模型。 比如这篇文章(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) 是用group theory去分析为什么深度模型会work, 比如这篇(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& ) 分析model compression的问题, 比如(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& )分析每一层layer学出来的representation, 还有这篇(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&) 用复杂理论来分析dropout, 还有这篇(&a href=&///?target=http%3A//arxiv.org/abs/& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/abs/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a&)分析什么情况下深度模型会fail.....&br&&br&这种问题目前都是largely open,
可以好好想想怎么结合你们实验室的优势(比如信息论, 压缩感知..) 去解决这些深度学习方面非常重要而且根本的问题, 应该是个不错的博士课题。
我建议去做深度学习,并且结合老板的背景。 看看对下面这些方向是否感兴趣(毕竟你自己在做,我不建议你去做,像搭建convonet,然后跟别人拼accuracy):深度学习领域很广,模型又很多,但是人们对“深度学习为什么会work" 仍然不是很清楚。比如用深度学习模…
其他回答者资料给的很充足了,这里补充点类似于学习路径的东西。&br&&br&除了一些基础的机器学习知识,在学习和理解Deep Learning之前,需要先对于Neural Network和AutoEncoder这两个模型有所了解,特别是后者,AutoEncoder的隐藏层与输入层的关系、使用AutoEncoder来pre-training一个多层网络。&br&&br&下一步就是要理解『简单的增加神经网络深度』会遇到什么问题。比如diffusion of gradients,比如严重的over-fitting,比如计算时间开销。&br&继续下去,要知道这些问题的原因与解决办法,这一步就映射到神经网络向深度学习的发展过程,比如pre-training、dropout、ReLU等技术的出现以及我们现在有能力(计算能力、相对于以前的大数据量)处理深层网络。&br&到这里,初步理解通常意义的Deep Learning模型就是深度神经网络。&br&&br&&b&但是接下来的才是关键。&/b&&br&&br&&u&对于不同的应用方向,有不同的具体的DNN的模型,比如CNN之于图像,RNN之于NLP。&/u&&br&&br&这里以CNN为例子。CNN的特殊的一些地方在于:卷积、池化、子采样、白化、权值共享等等非常多的技术。每一个都是一个概念/方法。这是CNN所特有的。如何理解这些技术呢?&br&动手实现一个LeNet然后跑一下Minst数据集的手写识别(或者自己搞点图像数据),学以致用,会帮助建立好的直觉,甚至可能不懂的地方也慢慢理解了。&br&不过一个比较有趣的概念是 卷积。&br&&i&------这个地方说得不是很好,但是我也不知道怎么表达更清楚点------&/i&&br&卷积这个东西有很多种理解方式:比如信号处理的理解、数学/物理上的理解、或者我的理解 :-D&br&『个人现在持有的看法是,这些技术都围绕一个重要的观点:减少网络参数(包括卷积也是有这个功能的)。其实每一个技术,都有自己更具体的意义,但是有共性的地方』。&br&对于使用CNN,要知道现在最常用的方法:AlexNet等的pre-training+具体问题的fine-tuning这种手段:&b&&u&一定要读一下一些相关paper&/u&&/b&。&br&&br&最后推荐几个易用性强的库(也是好搭的):sklearn-theano, deeppy, keras。&br&最后,搭环境太痛苦了,特别是mac下caffe简直是折磨QAQ&br&&br&更新一下&br&今天在整理自己的微博收藏,一条一条看过去,发现以前收藏过的一篇文章蛮适合的(虽然我并没有读这篇文章...收藏嘛...你懂的...),链接是:&br&&a href=&///?target=http%3A//snippyhollow.github.io/blog//so-you-wanna-try-deep-learning/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&So you wanna try Deep Learning?&i class=&icon-external&&&/i&&/a&&br&&br&收藏之余,也给个赞吧~\(≧▽≦)/~
其他回答者资料给的很充足了,这里补充点类似于学习路径的东西。除了一些基础的机器学习知识,在学习和理解Deep Learning之前,需要先对于Neural Network和AutoEncoder这两个模型有所了解,特别是后者,AutoEncoder的隐藏层与输入层的关系、使用AutoEncoder…
更新:&br&&br&今年ICML的一篇文章提出了应对百度这种行为的解决办法
&a href=&///?target=http%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&5.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&文章提到,在机器学习的比赛中,参赛者重复提交结果,以此来拟合测试集。这篇ICML文章不止提出了解决方案,还对方案进行了理论分析,并且和Kaggle比赛进行了对比。&br&&br&&br&--------------------------------------------------&br&&br&我没参加过这个比赛,只是略有了解。读了原文&br&&a href=&///?target=http%3A//www.image-net.org/challenges/LSVRC/announcement-June-2-2015& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ImageNet Large Scale Visual Recognition Competition (ILSVRC)&i class=&icon-external&&&/i&&/a&&br&在这里翻译+解释给大家。&br&&br&&ul&&li&ImageNet比赛公开了训练数据、训练标签、测试数据,&b&不公开测试标签&/b&。&/li&&li&如果你参加比赛&/li&&ul&&li&你可以用&b&训练数据&/b&和&b&训练标签&/b&做交叉验证(cross validation),即将训练集随机划分为两部分,一部分训练,一部分验证,以此来调整你的超参数&/li&&li&然后把训练出来的模型用在测试数据上,预测测试数据的标签&/li&&li&最后将你的预测结果提交到比赛的服务器上,服务器会把你的结果与真实标签比较,告诉你你的成绩&/li&&/ul&&li&当然,如果你能够&b&无数次提交你的结果&/b&,就&b&相当于你获得了主办方隐藏的测试集&/b&,你可以根据服务器返回的值来调整你的超参数。&/li&&li&自然,主办方不会允许你这么做,否则比赛毫无意义。比赛会限制你的比赛账户提交结果的次数,保证测试标签不会被滥用。&/li&&li&聪明人一看就知道这规则有漏洞:&b&既然你限制我账号提交次数,那么我申请30个账号呗,挨个提交&/b&。好了,说到这,大家应该都明白了。&/li&&li&大家考gre 托福是否用过机经?这可是作弊哦!用机经和百度刷测试集性质完全一样,但好像少有人为自己使用机经感到羞耻,虽然明知这是考试作弊。大家都是指责ETS偷懒不换题。同理,比赛组织者要是换个测试集,肯定让恶意过拟合测试集的人很难堪。&/li&&li&百度这个组这样做,很不道德。但是到底违规了没有,真不好说。人家可以说:“我们确实是30个队伍,只不过共享了绝大部分代码,没共享参数啊。”谁让你比赛规则有空给人钻呢。&/li&&/ul&&br&---------------------------------------------------------------------------&br&&br&我个人觉得,这个比赛缺陷很严重:允许参赛者多次提交结果,使得参赛者有机会过拟合测试集。严格按照机器学习训练和测试的设定,应该只允许提交一次,然后主办方就应该换测试集。现在的榜刷的那么高,除了有新的技术,谁知道有没有过拟合的因素。那么问题来了:&br&&ul&&li&如果在半年内把测试标签摸了200次对其他人不公平,那麽长期做这比赛的人,合乎规定地在2年内摸了100多次,是否对其他人公平?&br&&/li&&li&规则有漏洞,是制定规则的人有问题,还是钻漏洞的人有问题?貌似天朝某些政策导致假离婚,大家谴责的是政策吧?&/li&&li&百度这个组靠小号多提交,就能刷到第一的话,这个比赛的规则和意义是否应该被质疑?&/li&&/ul&貌似参赛者都在尽力拟合测试集,百度这个组也只是这么做的而已,当然确实做得过分了。
更新:今年ICML的一篇文章提出了应对百度这种行为的解决办法 文章提到,在机器学习的比赛中,参赛者重复提交结果,以此来拟合测试集。这篇ICML文章不止提出了解决方案,还对方案进行了理论分析,并且和Kaggle比赛进行了对比。---------…
我觉得除了一些不太重要的细节之外,Naiyan的方法基本上已经非常close了。而且Alex在他的实验当中使用的也是Caffe的模型,Christopher使用的是DistBelief。&br&&br&主要的不同是除了梯度信息以外,google的方法在最底层的patch上加了一个reconstruction的正则项,来表示“什么样的patch是实际图像当中应该出现的呀”。这个正则可以自行发挥,比如说sparse coding什么的。我不知道能不能说Alex他们用了什么prior(其实没啥,但是公司总还是比较喜欢玩公司秘密什么的概念,所以大家等他们的paper吧)。Facebook的相关论文用了差不多的想法,他们是用adversarial example来生成和实际图像相似的分布。&br&&br&大图的话,基本上就是fully convolutional net:我们可以把224*224的模型做成fully convolutional的,然后就可以在大图上跑了:每次随机选一块地方update。如果要fancy一些,也可以先生成low resolution的,然后一点一点增加resolution,有点类似于Pyramid的想法。&br&&br& 更新:Alex把code开源了,code在这里:&br&&a href=&///?target=https%3A///google/deepdream& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&google/deepdream · GitHub&i class=&icon-external&&&/i&&/a&
我觉得除了一些不太重要的细节之外,Naiyan的方法基本上已经非常close了。而且Alex在他的实验当中使用的也是Caffe的模型,Christopher使用的是DistBelief。主要的不同是除了梯度信息以外,google的方法在最底层的patch上加了一个reconstruction的正则项,来…
逐一正面回应。&br&&blockquote&很明显的,以深度学习为主力的这一波人工智能浪潮,从我高三吹到了我大四毕业。&/blockquote&ML领域为期四五年的浪潮真的不算很长。世纪初兴起的 PGM 至今仍让无数researcher 生命不息,画圈不止。&br&&blockquote&很明显深度学习不可能处理复杂的任务,&br&&/blockquote&但是许多复杂的问题的解决是恰恰是通过子问题通过先验知识组合得到的。&br&&blockquote&虽然号称模拟大脑,但是几乎与认知科学的研究隔绝。&/blockquote&请参考 Wikipedia 原文:&br&&img src=&/6af6f0deffce0cc323f6b36f_b.jpg& data-rawwidth=&1164& data-rawheight=&872& class=&origin_image zh-lightbox-thumb& width=&1164& data-original=&/6af6f0deffce0cc323f6b36f_r.jpg&&&br&&blockquote&各大互联网公司都争先投入大量资源,连英伟达都加入战团。&/blockquote&部分同意,Nvida的加入主要是觉得 CNN 是GPU运算的一个很好的应用场合。&br&&blockquote&我感觉深度学习致命一点是不能应用在太多普通用户的产品上面,只适合搜索引擎和学术方面,现在主要的产品基本都是为搜索引擎服务的,普通的创业者根本没机会玩,数据不如大公司多,普通用户也没有那个需求。&/blockquote&。。。不知道多少人会哭晕在厕所。LZ请到 CVPR/ ICCV/ SIGIR/MM 等conference的proceeding 里自行搜索 Deep Learning 有多少应用。&br&&blockquote&深度学习既不会像图形操作界面或者互联网那样改变大部分人的生活,也不会像3D打印那样有改变生产方式的趋势,20年之内几乎不会减少白领的工作量。&/blockquote&PHD一枚,不懂得“商业模式”,不评论。&br&&blockquote&看来深度学习很精巧,结果很漂亮,实际华而不实。&br&&/blockquote&。。。结果漂亮,然后华而不实。LZ 确定自己没有表述错误么?
逐一正面回应。很明显的,以深度学习为主力的这一波人工智能浪潮,从我高三吹到了我大四毕业。ML领域为期四五年的浪潮真的不算很长。世纪初兴起的 PGM 至今仍让无数researcher 生命不息,画圈不止。很明显深度学习不可能处理复杂的任务,但是许多复杂的问题…
先了解个大概&a class=& wrap external& href=&///?target=http%3A///machine-learning/an-introduction-to-deep-learning-from-perceptrons-to-deep-networks& target=&_blank& rel=&nofollow noreferrer&& A Deep Learning Tutorial: From Perceptrons to Algorithms&i class=&icon-external&&&/i&&/a&&br&神经网络肯定是要学习的,主要是BP算法,可以看看PRML3、4、5三章,可先忽略其中的贝叶斯视角的解释。一些主要的算法理解要看具体的论文了,有个Matlab的程序不错,有基本算法的实现,见&a class=& wrap external& href=&///?target=https%3A///rasmusbergpalm/DeepLearnToolbox& target=&_blank& rel=&nofollow noreferrer&&rasmusbergpalm/DeepLearnToolbox · GitHub&i class=&icon-external&&&/i&&/a&。有一本系统的介绍深度学习的书,不过还没写完,样稿见&a class=& wrap external& href=&///?target=http%3A//www.iro.umontreal.ca/%7Ebengioy/dlbook/& target=&_blank& rel=&nofollow noreferrer&&DEEP LEARNING&i class=&icon-external&&&/i&&/a&。还有评论中提到的UFLDL教程:&a href=&///?target=http%3A//ufldl.stanford.edu/tutorial/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unsupervised Feature Learning and Deep Learning Tutorial&i class=&icon-external&&&/i&&/a&
先了解个大概神经网络肯定是要学习的,主要是BP算法,可以看看PRML3、4、5三章,可先忽略其中的贝叶斯视角的解释。一些主要的算法理解要看具体的论文了,有个Matlab的程序不错,有基本算法的实现…
要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,词向量就是用来将语言中的词进行数学化的一种方式。&br&&br&
一种最简单的词向量方式是
one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一个 1,其他全为 0, 1 的位置对应该词在词典中的位置。但这种词表示有两个缺点:(1)容易受维数灾难的困扰,尤其是将其用于 Deep Learning 的一些算法时;(2)不能很好地刻画词与词之间的相似性(术语好像叫做“词汇鸿沟”)。&br&&br&
另一种就是你提到 Distributed Representation 这种表示,它最早是 Hinton 于 1986 年提出的,可以克服 one-hot representation 的缺点。其基本想法是:&br&
通过训练将某种语言中的每一个词映射成一个固定长度的短向量(当然这里的“短”是相对于 one-hot representation 的“长”而言的),将所有这些向量放在一起形成一个词向量空间,而每一向量则为该空间中的一个点,在这个空间上引入“距离”,则可以根据词之间的距离来判断它们之间的(词法、语义上的)相似性了。&br&&br&
为更好地理解上述思想,我们来举一个通俗的例子:假设在二维平面上分布有 N 个不同的点,给定其中的某个点,现在想在平面上找到与这个点最相近的一个点,我们是怎么做的呢?首先,建立一个直角坐标系,基于该坐标系,其上的每个点就唯一地对应一个坐标 (x,y);接着引入欧氏距离;最后分别计算这个词与其他 N-1 个词之间的距离,对应最小距离值的那个词便是我们要找的词了。&br&&br&
上面的例子中,坐标(x,y) 的地位相当于词向量,它用来将平面上一个点的位置在数学上作量化。坐标系建立好以后,要得到某个点的坐标是很容易的,然而,在 NLP 任务中,要得到词向量就复杂得多了,而且词向量并不唯一,其质量也依赖于训练语料、训练算法和词向量长度等因素。&br&&br&
一种生成词向量的途径是利用神经网络算法,当然,词向量通常和语言模型捆绑在一起,即训练完后两者同时得到。用神经网络来训练语言模型的思想最早由百度 IDL (深度学习研究院)的徐伟提出。 这方面最经典的文章要数 Bengio 于 2003 年发表在 JMLR 上的 A Neural Probabilistic Language Model,其后有一系列相关的研究工作,其中包括谷歌 Tomas Mikolov 团队的 word2vec (&a href=&///?target=https%3A///p/word2vec/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&word2vec -
Tool for computing continuous distributed representations of words.&i class=&icon-external&&&/i&&/a&)。&br&&br&
最近了解到词向量在机器翻译领域的一个应用,报道(&a href=&///?target=http%3A///archives/5621& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&机器翻译领域的新突破&i class=&icon-external&&&/i&&/a&)是这样的:&br&&blockquote&&i&谷歌的 Tomas Mikolov 团队开发了一种词典和术语表的自动生成技术,能够把一种语言转变成另一种语言。该技术利用数据挖掘来构建两种语言的结构模型,然后加以对比。每种语言词语之间的关系集合即“语言空间”,可以被表征为数学意义上的向量集合。在向量空间内,不同的语言享有许多共性,只要实现一个向量空间向另一个向量空间的映射和转换,语言翻译即可实现。该技术效果非常不错,对英语和西语间的翻译准确率高达 90%&/i&。&/blockquote&
我读了一下那篇文章(&a href=&///?target=http%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&),引言中介绍算法工作原理的时候举了一个例子,我觉得它可以帮助我们更好地理解词向量的工作原理,特介绍如下:&br&
考虑英语和西班牙语两种语言,通过训练分别得到它们对应的词向量空间 E 和 S。从英语中取出五个词 one,two,three,four,five,设其在 E 中对应的词向量分别为 v1,v2,v3,v4,v5,为方便作图,利用主成分分析(PCA)降维,得到相应的二维向量 u1,u2,u3,u4,u5,在二维平面上将这五个点描出来,如下图左图所示。类似地,在西班牙语中取出(与 one,two,three,four,five 对应的) uno,dos,tres,cuatro,cinco,设其在 S 中对应的词向量分别为 s1,s2,s3,s4,s5,用 PCA 降维后的二维向量分别为 t1,t2,t3,t4,t5,将它们在二维平面上描出来(可能还需作适当的旋转),如下图右图所示:&br&&img src=&/469f1bba1ab261_b.jpg& data-rawwidth=&1211& data-rawheight=&445& class=&origin_image zh-lightbox-thumb& width=&1211& data-original=&/469f1bba1ab261_r.jpg&&观察左、右两幅图,容易发现:五个词在两个向量空间中的相对位置差不多,这说明两种不同语言对应向量空间的结构之间具有相似性,从而进一步说明了在词向量空间中利用距离刻画词之间相似性的合理性。
要将自然语言交给机器学习中的算法来处理,通常需要首先将语言数学化,词向量就是用来将语言中的词进行数学化的一种方式。 一种最简单的词向量方式是 one-hot representation,就是用一个很长的向量来表示一个词,向量的长度为词典的大小,向量的分量只有一…
Detection DeepInsight,Classification DeeperVision成员。&br&冠军的回答里信息量已经很大了,很多东西我就不再重复了。从中真是学到了不少东西,值得慢慢消化。&br&先来正面回答一下题主的问题,我昨天看到结果,尤其是classification的结果的时候,真的是大吃一惊。可以说这个结果真是大大超出我们的预料。Google非常棒!全明星阵容果然不是吹的。。。只有真正做过的人才知道,从11.2到6.7的难度是远远大于去年从15到11.2的。至于说什么计算机拥有了几岁小孩的智商,这种报道大家笑笑就好。不过我也觉得会信的人不会上知乎的。。。&br&&br&先说下我们用的工具,基本上就是yangqing开发的caffe。我们在之上实现了一些改进。至少对目前开展research而言,这份code是足够了的。&br&下面说说经验与教训:&br&1. Deep learning之所以叫deep learning,这是因为模型的深度真的非常重要。这一点上我们时间不够,没有完全exploit,有点以遗憾。我在之前的一个talk里有一些讨论,也可以分享给大家:&a href=&///?target=http%3A//winsty.net/talks/nonNN.pptx& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&winsty.net/talks/nonNN.&/span&&span class=&invisible&&pptx&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&2. 正如yangqing所说,模型的优化是一个重要而又非常困难的问题。我们这次在这个方面进行了一些有益的尝试。不同优化方法对结果的影响,比我想像得要大。我希望在这方面做ML做优化的同学多来关注一些,而不是只盯着convex的问题。真实的世界总不是那么完美的。&br&3. 尽信paper不如无paper,这世界上不work的paper远远多于work的paper,尤其是对于DL这种大坑。很多东西要自己亲自实现才会有感悟。&br&&br&除此之外,有一些有趣的观察和大家分享:&br&1. 来自Oxford的VGG组一直是传统计算机视觉方法(非DL)的支持者,这可以在他们去年比赛提交中得到验证,然而今年确实使用DL最暴力的几个队之一。由此可见,DL现在在CV界的统治地位。&br&2. 来自NUS颜水成老师组的队伍也很强悍!在detection比赛中,没有使用额外数据的情况下已经做到了mAP 37。如果使用他们的方法在classification数据上pretrain,鹿死谁手也不一定。&br&3. 除此之外,MSRA的SPP以及CUHK的队伍也都很值得关注!&br&4. 来自国内高校的队伍仍然与世界先进水平有显著的差距,大家要加油~&br&&br&另外一些不靠谱的预测:&br&1. 计算能力仍然是目前制约着模型性能的关键,经过几年的努力GPGPU已经得到了大家的一致认可。下一步多GPU,以及GPU集群是一个不可避免的趋势。现在cuda-convnet2已经做出了一些很好的尝试。&br&2. CNN虽然现在在CV领域里如日中天,但是开发新的deep learning结构仍然是一个open的问题。我个人一直觉得CNN并不是唯一的解决之路。&br&3. 明年classification该换数据集或者评价标准了吧。。。大家已经把imagenet刷得比cifar还高了。。。&br&4. Detection中可以改进的地方还有很多,很多细节问题处理得并不优美,而且没有一套统一的流程。估计detection的结果会在将来一年中继续有着惊人的提高。&br&&br&再来扯两句闲话。其实真正做了小半年,从只看过几篇CNN的paper到吃透caffe的code,跑起来一个很大的网络,再到找出真正work的东西,这其中的收获的点虽然不是很多,但是每一点都很充实,每一点都是血的教训换来的。在这个过程中对CNN对deep learning整个big picture的理解也在迭代加深,我想这对于以后的research是受益匪浅的。这也恰恰是我最初想参加这个比赛的一个初衷:去伪存真。在参加比赛的过程中也认识了很多很厉害的朋友。不管怎么说,这都是我PhD期间最珍贵的一份体验。&br&&br&以上,希望抛砖引玉,大家可以多讨论,去ECCV的同学们可以当面聊。
Detection DeepInsight,Classification DeeperVision成员。冠军的回答里信息量已经很大了,很多东西我就不再重复了。从中真是学到了不少东西,值得慢慢消化。先来正面回答一下题主的问题,我昨天看到结果,尤其是classification的结果的时候,真的是大吃一…
(1) double precision没有必要&br&(2) ECC没有必要&br&(3) 内存要大&br&(4) 速度要快&br&&br&所以TitanX算是价格便宜量又足的选择... 当然啦,理论上稳定程度会不如Kx0这样的,但是万一烧了(在Berkeley几十块GPU跑了两年,我们烧掉过两块不同型号的GPU),换一块价格也还不贵。&br&&br&记得去买个散热好点的风扇和机箱,我的台式机现在就因为南桥芯片正好在GPU下面,然后散热不好被烤的,天天出SATA错误,所以要小心。但是我买的是micro ATX的机箱(我承认当年作死了),ATX的机箱加上一个合理的散热解决方案应该就可以了。&br&&br&如果你要买多个GPU的话,记得确认一下你的主板是不是支持多条PCIEx16 - 有些主板可能PCIEx16的数量不多,只有PCIEx8,这样数据传输速度上可能会有影响。&br&&br&另外有余钱的话,投资个SSD吧。
(1) double precision没有必要(2) ECC没有必要(3) 内存要大(4) 速度要快所以TitanX算是价格便宜量又足的选择... 当然啦,理论上稳定程度会不如Kx0这样的,但是万一烧了(在Berkeley几十块GPU跑了两年,我们烧掉过两块不同型号的GPU),换一块价格也还不贵。…
谢邀&br&先简单说下人工智能(AI)的历史。最早的AI,出现在神话和幻想中,希腊神话中的机械人和人造人,如赫淮斯托斯的黄金机器人和皮格马利翁的伽拉忒亚。而到了中世纪,使用巫术或炼金术将意识赋予无生命物质的传说也是AI的一种形式,如贾比尔的Takwin,帕拉塞尔苏斯的何蒙库鲁兹和Judah Loew的魔像。19世纪玛丽·雪莱的《弗兰肯斯坦》和卡雷尔·恰佩克的《罗素姆的万能机器人》更是以人造人和会思考的机器人等形式展现了人们对AI的幻想。而Samuel Butler的《机器中的达尔文(Darwin among the Machines)》一文(1863)由于其探讨了机器通过自然选择进化出智能的可能性使其至今人工智能仍然是科幻小说的重要元素。&br&&img src=&/25c43da766b180d0a4cd_b.jpg& data-rawwidth=&350& data-rawheight=&195& class=&content_image& width=&350&&加扎利的可编程自动人偶(1206年)&br&而后,则是形式推理(formal reasoning)的出现。所谓形式化推理,其实就是机械化推理,因为人工智能的基本假设是人类的思考过程可以机械化。而这一阶段的发展,相信已经是大家耳熟能详的了。从亚里士多德到欧几里得,从拉蒙·柳利的“逻辑机”到布莱尼茨的”我们开始算吧。”这些哲学家的研究,无疑都是为AI的进步奠定着基石。&br&当然,AI真的提出,还是要算1956年那群吃着火锅唱着歌的大牛们的一次会议。自此之后,人工智能才算是真的被当做一个新的科学领域,而这之后的20年,更是AI飞速发展的黄金20年。&br&之后的AI之路尽是坎坷,从74年的第一次低谷,到87年的第二次低谷,AI之路,并不好走。虽然近些年由于DL的兴起,大家对实现AI又重燃信心,但实现AI的日子,我恐怕只能是“家书勿忘告乃翁”了。&br&既然实现AI这么困难,那么为什么科学界和工业界还要想方设法的实现他呢?&br&很简单,因为AI很重要。&br&不知道有没有人发现,近百年来,在基础科学界,特别是数学,似乎都给人以一种没有突飞猛进的感觉。当然,事实并不是如此。这几年数学的发展,当然是以爆炸之势在飞速发展,只是因为发展到如此地步,数学中的很多理论,即使同样身为数学家,但是不同领域之间的成果都有可能会无法理解。更何况对于我们这些普通民众。虽然科学在飞速发展,但是速度够快么,科学界的大牛认为肯定是不够的。这就像武林高手虽然已经登峰造极,但是却总感慨自己无法领会武学精要一样。普通人觉得他是在装13,其实只有他自己真的明白,确实是,学海无涯。&br&那么大牛们认识到了这点,知识太多,而人类又学的太慢,怎么办?干脆造一个超级大脑,让他来学!当然这些我对科学界对AI想法的YY。&br&至于工业界,想法肯定有所差别。比如当你的机械臂在完成一些需要根据实时情况而做出不同反应的动作,却又表现的像抽了筋的羊癫疯一样,你会有什么想法?还不是想如果有个“聪明”的机器人,那老子一定把这个蠢东西丢到博物馆去。&br&而媒体对AI的关注,自然是因为有很多读者对AI有兴趣。从《人工智能》开始,人们对于AI的热情度就一路飙升。这个东西,虽然是科学界的尖端研究,可是他的成果我居然看的懂!而且离我很近啊!这当然比那些什么群什么场要亲民的多。&br&总之,这些都是我的想法而已,读来娱乐一下。
谢邀先简单说下人工智能(AI)的历史。最早的AI,出现在神话和幻想中,希腊神话中的机械人和人造人,如赫淮斯托斯的黄金机器人和皮格马利翁的伽拉忒亚。而到了中世纪,使用巫术或炼金术将意识赋予无生命物质的传说也是AI的一种形式,如贾比尔的Takwin,帕拉塞…
第一个问题:为什么引入非线性激励函数?&br&如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与只有一个隐藏层效果相当,这种情况就是多层感知机(MLP)了。&br&正因为上面的原因,我们决定引入非线性函数作为激励函数,这样深层神经网络就有意义了(不再是输入的线性组合,可以逼近任意函数)。最早的想法是sigmoid函数或者tanh函数,输出有界,很容易充当下一层输入(以及一些人的生物解释balabala)。&br&&br&第二个问题:为什么引入Relu呢?&br&第一,采用sigmoid等函数,反向传播求误差梯度时,求导计算量很大,而Relu求导非常容易。&br&第二,对于深层网络,sigmoid函数反向传播时,很容易就会出现梯度消失的情况(在sigmoid接近饱和区时,变换太缓慢,导数趋于0),从而无法完成深层网络的训练。&br&第三,Relu会使一部分神经元的输出为0,这样就造成了网络的稀疏性,并且减少了参数的相互依存关系,缓解了过拟合问题的发生(以及一些人的生物解释balabala)。&br&&br&暂时就这么多,希望在没有图片的情况下讲清楚了。
第一个问题:为什么引入非线性激励函数?如果不用激励函数(其实相当于激励函数是f(x) = x),在这种情况下你每一层输出都是上层输入的线性函数,很容易验证,无论你神经网络有多少层,输出都是输入的线性组合,与只有一个隐藏层效果相当,这种情况就是多层…
&p&Deep Learning可以算是在神经网络的基础上发展而来的,采用的都是分层网络的结构。先了解神经网络对于学习Deep Learning应该有帮助。DL也就06年左右才在学术界热起来,所以教材比较少,目前比较全面系统的有&br&&br&Stanford Andrew Ng的&br&&a href=&///?target=http%3A//deeplearning.stanford.edu/wiki/index.php/UFLDL_Tutorial& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&UFLDL Tutorial&i class=&icon-external&&&/i&&/a&&br&&br&还有Yoshua Bengio(Deep Learning几大山头之一)的一个&br&&a href=&///?target=http%3A//www.iro.umontreal.ca/%7Ebengioy/papers/ftml_book.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&iro.umontreal.ca/~bengi&/span&&span class=&invisible&&oy/papers/ftml_book.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&更新一个Yoshua Bengio的书,Sample Chapter已经放出:&/p&&p&&a href=&///?target=http%3A//www.iro.umontreal.ca/%7Ebengioy/dlbook& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&DEEP LEARNING&i class=&icon-external&&&/i&&/a&&br&&/p&&br&&p&Deep Learning另一大山头Geoffrey Hinton的个人主页也是不错的参考,放了一些介绍性文章和课件&br&&a class=& wrap external& href=&///?target=http%3A//www.cs.toronto.edu/%257Ehinton/& target=&_blank& rel=&nofollow noreferrer&&Home Page of Geoffrey Hinton&i class=&icon-external&&&/i&&/a&&/p&&p&&br&因为最近被问到,最后再补一个我觉得可能很重要的:超神Michael Jordan(Andrew Ng和Yoshua Bengio的老师)的概率图论&/p&
Deep Learning可以算是在神经网络的基础上发展而来的,采用的都是分层网络的结构。先了解神经网络对于学习Deep Learning应该有帮助。DL也就06年左右才在学术界热起来,所以教材比较少,目前比较全面系统的有Stanford Andrew Ng的还有Yoshua B…
TitanX比TitanZ好用。&br&显卡数决定了CPU数,&=4个时没必要双CPU。单CPU &b&5930K&/b&足矣&br&如果是单CPU,内存32GB就够,不用ECC&br&硬盘比较容易成为瓶颈。根据剩余PCIE槽数可以考虑Intel 750 (PCIE) 或者Samsung SM951 (M2)&br&4TitanX用CXXNET跑满实测电源输出功率1000W左右,保险点上个1500W的电源吧。&br&这样配的话,4路TitanX加税也不到7000刀(不带显卡裸机2000多)&br&&br&&br&具体配置如下,仅供参考。没包含PCIE SSD因为插不下了:&br&&br&CPU i7 5820K&a class=& wrap external& href=&///?target=http%3A///Intel-i7-5930K-Haswell-E-Processor-BXK/dp/B00MMLXMM8/& target=&_blank& rel=&nofollow noreferrer&& /Intel-i7-5930K-Haswell-E-Processor-BXK/dp/B00MMLXMM8/&i class=&icon-external&&&/i&&/a&&br&&br&主板 Gigabyte&a class=& wrap external& href=&///?target=http%3A///Gigabyte-CrossFireX-Motherboards-GA-X99-GAMING-WIFI/dp/B00MPIDZCK/ref%3Dsr_1_9%3Fs%3Dpc%26ie%3DUTF8%26qid%3D%26sr%3D1-9& target=&_blank& rel=&nofollow noreferrer&& /Gigabyte-CrossFireX-Motherboards-GA-X99-GAMING-WIFI/dp/B00MPIDZCK/ref=sr_1_9?s=pc&ie=UTF8&qid=&sr=1-9&i class=&icon-external&&&/i&&/a&&br&&br&内存 32GB DDR4 &a class=& external& href=&///?target=http%3A///Crucial-Ballistix-PC4-19200-Unbuffered-BLS2K8G4D240FSA/dp/B00MTSWFMM/ref%3Dsr_1_1%3Fs%3Dpc%26ie%3DUTF8%26qid%3D%26sr%3D1-1& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/Crucial-Ball&/span&&span class=&invisible&&istix-PC4-19200-Unbuffered-BLS2K8G4D240FSA/dp/B00MTSWFMM/ref=sr_1_1?s=pc&ie=UTF8&qid=&sr=1-1&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&&br&硬盘 Samsung 850 Pro 1TB &a class=& external& href=&///?target=http%3A///Samsung-2-5-Inch-SATA-Internal-MZ-7KE1T0BW/dp/B00LF10KTE/ref%3Dsr_1_2%3Fie%3DUTF8%26qid%3D%26sr%3D8-2%26keywords%3Dsamsung%2B1tb& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/Samsung-2-5-&/span&&span class=&invisible&&Inch-SATA-Internal-MZ-7KE1T0BW/dp/B00LF10KTE/ref=sr_1_2?ie=UTF8&qid=&sr=8-2&keywords=samsung+1tb&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&(除了 PCIE 以外,还可以考虑SSD RAID 0。关于IO的benchmark做的不多就不乱说了。欢迎其他童鞋补充)&br&&br&显卡Titan X*4 &a class=& wrap external& href=&///?target=http%3A///geforce-gtx-titan-x/buy-gpu& target=&_blank& rel=&nofollow noreferrer&&NVIDIA Store&i class=&icon-external&&&/i&&/a&&br&&br&机箱 Corsair Carbide Air 540 &a href=&///?target=http%3A///Corsair-Carbide-High-Airflow-CC-9011030-WW/dp/B00D6GINF4& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/Corsair-Carb&/span&&span class=&invisible&&ide-High-Airflow-CC-9011030-WW/dp/B00D6GINF4&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&(NVidia DevBox 同款)&br&&br&电源 EVGA 1600W&a class=& wrap external& href=&///?target=http%3A///EVGA-Supernova-80Plus-Modular-120-G2-1600-X1/dp/B00MMLUIE8& target=&_blank& rel=&nofollow noreferrer&& /EVGA-Supernova-80Plus-Modular-120-G2-1600-X1/dp/B00MMLUIE8&i class=&icon-external&&&/i&&/a&&br&&br&&br&&br&======9月10日更新======&br&原答案中CPU推荐的是5820K,经 &a data-hash=&4bfbc1bc2ff914bec22b98& href=&///people/4bfbc1bc2ff914bec22b98& class=&member_mention& data-tip=&p$b$4bfbc1bc2ff914bec22b98&&@郝佳男&/a&
提醒发现,5820K的PCIE-lanes要比5930少许多。开4卡的话,5930K的额外两百块钱可能还是省不了。
TitanX比TitanZ好用。显卡数决定了CPU数,&=4个时没必要双CPU。单CPU 5930K足矣如果是单CPU,内存32GB就够,不用ECC硬盘比较容易成为瓶颈。根据剩余PCIE槽数可以考虑Intel 750 (PCIE) 或者Samsung SM951 (M2)4TitanX用CXXNET跑满实测电源输出功率1000W左右…
作为开发者之一,V2 refactor终于发布了!直接转贴tianqi微博上的介绍:&br&&br&&a href=&///?target=http%3A///p/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微博 文章 - cxxnet和大规模深度学习&i class=&icon-external&&&/i&&/a&&br&&br&这篇文章介绍的是关于并行深度神经网络的设计。在今年发布的两个机器学习项目中,cxxnet是最精彩的一个。因为它包含了我们团队可以发挥到的机器学习和系统的各个方面的极致: 除了前沿的深度学习之外,它的两个独到特点也是让我们在设计实现中最为享受的&br&&p&&b&1) 灵活的公式支持和极致的C++模板编程;&/b&&/p&&p&深度神经网络的实现大致分两类:以python为主的编程效率派和以c++为核心的为代表的追逐性能派。前者支持直接tensor的计算,而后者往往需要给每个神经网络的层和更新公式编写独立的cuda kernel。编程效率派认为机器学习程序员应该是写公式来达到代码最大的可读性和易改写性。而很多以C++为核心的代码之所以没有支持非常灵活的张量计算,是因为因为运算符重载和临时空间的分配会带来效率的降低。&/p&&p&cxxnet的核心mshadow在这两者之间做了一个平衡。使得我们在不损失效率的前提下可以通过模板编程技术允许开发者编写和matlab/numpy类似的代码,并且在编译时自动展开成优化的kernel。其背后的expressiontemplate技术是我最喜欢的c++ trick之一。非常值得最求效率抽象和优美的同学了解。&/p&&p&因为采用了mshadow作为核心,直接导致cxxnet的各种实现可以非常简单可读,编写一份代码就可以在GPU和CPU上面跑。使得其在代码简洁和可扩展上更加容易。&/p&&p&&b&2) 通用的并行参数共享和更新方案&/b&&/p&&p&多卡和多机计算一直是大规模机器学习中一个让人兴奋的话题。提到神经网络并行,最让我头疼的是可以选择的方案很多,而都涉及到不同的hack。单机多卡到底是用P2P,还是拷贝到内存,是用stream开始开多线程。分布式到底是用parameter server,MPI还是自己写一个框架。可以选择的方法很多。设计出一个分布式的代码不难,困难的是如何让并行的接口自然的独立出来,使得其不会影响其它部分的实现。经过不断地考虑,最终我决定采用了mshadow-ps这样一个统一的参数共享接口。&/p&&p&简单的说,mshadow-ps是一个GPU的异步parameter server接口(应该也是目前为止唯一一个,因为GPU线程模型和CPU不同,原有的的ps库并不能直接用于GPU)。异步通信对于神经网络的更新非常重要。在backprop算法中,我们很早就可以获得梯度并且进行梯度同步,而只有到下一次forward到对应层的时候才会需要这个weight。&/p&&p&我和limu合作设计了ps风格的三个接口来解决这样的同步问题,Push/PullReq和Pullwait。当获backprop得梯度的时候直接调用push把梯度发送出去,并且调用pullreq请求结果。Push和Pullreq都是异步操作,背后会有单独的线程同时完成数据拷贝同步,以及拷回的操作。而当我们需要weight之前在调用Pullwait来等待可能没有完成的操作。这样简单的三个接口,使得我们可以经过很少的改动就可以设计出多卡和分布式的神经网络来,并且在调用这些接口的时候完全不需要关系同步的实现是什么。&/p&&p&值得一提的是,这样的编程模式把多GPU,分布式以及各个通信框架直接结合起来。mshadow-ps支持单机多卡的GPU PS,以及基于parameter-server的分布式PS实现。同样的也可以很容易MPI来支持多机通信。使得一个统一的接口,可以完成从单机多卡到分布式各种后端实现的支持。并且因为高效的异步通信,使得我们可以在alexnet上面达到linearspeedup(注:并行的难度在于计算和通信的时间比,weight少更加复杂的网络反而更加容易线性加速,而alexnet是非常困难的例子)。&/p&&p&经过团队里面大家不断地努力,cxxnet的V2终于可以和大家见面了。除了上述介绍的技术亮点之外,还有各种好玩的特性。现在把特点总结如下:&/p&&p&1. &b&轻量而齐全的框架&/b&: 我们尽力维持最小的依赖库实现最多的功能。推荐环境下仅需要CUDA, OpenCV, MKL或BLAS即可编译。&br&2. &b&强大的统一的并行计算接口&/b&:基于mshadow-ps的并行计算接口采用了一份代码解决了多GPU,多机的异步同步。同步和计算重叠,在多份测试中均可以得到线性加速比。&br&3. &b&易于扩展的代码结构&/b&:cxxnet计算核心由mshadow提供。Mshadow使用户可以编写numpy/matlab风格的代码,但仍具备手动优化cuda 代码的灵活性。CPU和GPU共享同一份代码,在编译期间通过模板自动翻译成CUDA/MKL调用。&/p&&p&&br&另外一些特性包括:&br&4.
&b&CuDNN&/b&&b&支持&/b&:Nvidia原生卷积支持,可加速计算30%!&br&5.
&b&及时更新的最新技术&/b&:我们将及时跟进学术界的动态,例如现在已经支持MSRA的ParametricRelu和Google的Batch Normalization&br&6.
&b&Caffe模型转换&/b&:支持将训练好的Caffe模型直接转化为cxxnet模型(本周内上线!)&br&7.
&b&方便的语言接口&/b&:在Python中直接进行训练,方便可视化。Matlab也将很快提供&br&&/p&&p&我们相信可以通过最简洁清晰的代码来完成高效的C++深度神经网络实现。我们也欢迎对于系统和机器学习有兴趣的同学加入到项目中来&/p&
作为开发者之一,V2 refactor终于发布了!直接转贴tianqi微博上的介绍:这篇文章介绍的是关于并行深度神经网络的设计。在今年发布的两个机器学习项目中,cxxnet是最精彩的一个。因为它包含了我们团队可以发挥到的机器学…
其实说的是自己吧,跳槽来了百度,所以百度从此比谷歌屌了。
其实说的是自己吧,跳槽来了百度,所以百度从此比谷歌屌了。
因为ImageNet1000的数据集里面几百类的狗,几十类的鸟,统共超过一半都是动物,所以deep dream的世界就是个动物世界,或者说是个狗窝。。。&br&&br&(正经版回答:这个是因为数据集采样偏差的缘故,ImageNet中类别的频率并不代表实际生活中我们见到的这些类别的频率,所以ImageNet的模型不能被直接用在实际产品当中。)
因为ImageNet1000的数据集里面几百类的狗,几十类的鸟,统共超过一半都是动物,所以deep dream的世界就是个动物世界,或者说是个狗窝。。。(正经版回答:这个是因为数据集采样偏差的缘故,ImageNet中类别的频率并不代表实际生活中我们见到的这些类别的频率…
个人的一点看法:&br&1. TensorFlow是采用的DataFlow的数据流模型,不过我不觉得和Dryad有太多相似之处,此外Dryad也不是第一个提出DataFlow模型的地方,要说最早可以参考MIT TaggedToken
machine里面的static dataflow 和dynamic dataflow architecture[2]的资料. 在一个大规模机器学习系统上全面、可靠的支持DataFlow的feature本不是一件容易的事情,但是Tensorflow做到这一点,支持control_dependence, merge, condition,for-loop/while-loop, iteration。1. 就像LSTM的unrolling,原来需要predefine unroll,现在用for-loop去做展开(内部维持状态的变化) 2. 还有比如一些算法需要对不同的input example做不同的训练(不同的gradient,更新不一样的variables),以前需要hack很多东西(至少在DistBelif上是),现在只需要一个ConditionOp就解决了。3. 比如不同的variables用不同的optimizer,SGD/AdaGrad/FTRL/Momentum等。有了ControlFlow的支持,tensorflow graph更像是一种语言的抽象(variables, tensors, controlflow, compile[这个是指会rewrite整个graph, send/recv node, un-reference, graph partition, dynamic placement], parallelism,functional programming等),从这个角度讲还是有不少新东西在里面。&br&&br&2. 是否用Dataflow和BSP并无直接对应关系,Dataflow只是tensor/token的流动,怎么 schedule和控制流动是别的部分的事情(session 如何drive)。事实上,Tensorflow提供的灵活性用户很容易在上层做BSP(如果你非常喜欢这样做的话,这种模型最大的缺点是fault tolerance很难做),SSP(如果非要把这个概念引入的话) 或者parameter server的结构(事实上我从来不认为这是一种通用的结构,只是ps被centralized起来存有状态的variables而已, 5年前的DistBelief就是这种架构),有了这个框架的抽象,然后进一步你可以做Synchronous or Asynchronous training。所以说Dataflow只能做BSP,这个是很没有缘由的。&br&&br&3. 数据表示成tensor/token,单单这一点非要说这个有多少的创新确实也谈不上。不过基于tensor的每一个single op怎么做实现就有考究了,从Eigen开始到每一个kernels op基本都有micro-benchmark来保证单个op的performance达到最优,既然是kernel级的tensorflow的框架支持用户可以随便扩展GPU、CPU甚至即使是CPU的可以针对不同的指令级做优化和定制。当然任何事情有得就有失,大的系统的设计本身就是trade-off,比如你本来所有的东西揉在一起操作指针、inplace内存读写就可以,但现在抽象成多个各个粒度的operators,operators之间读写难免有很多overhead(当然graph rewrite已经最大限度的避免)。所以概括而言TensorFlow采用(目标)的设计其实是是production级的performance/成熟度和research flexibility的trade-off。从Google内部的各种产品线(Search/inbox/Photo等)的使用看,这个系统无论从各个方面都是经受住了考验(performance/scalability/flexibility/usability等)。Ps: TensorFlow绝不是只能做deep learning, shallow/wide model 以及传统的ML都可以基于这个系统来做(当然一些operators并不现成,需要去实现)。&br&&br&4. 最后说一下多机版本的开源问题。有各种复杂的因素导致了这次release的版本没有多机在里面,比如并没有很好的job shedule和高性能的RPC系统的支持。这个问题不深入讲但是希望不久的将来这些障碍都会排除。说到和DistBelief的性能比较,各种大大小小的task表明Tensorflow比DistBelief的性能提高不少(我不会说几X的这样的number,显然不同的tasks这个number的variance会很大. Tensorflow比DistBelief扩展性和灵活性的优势自然不用多少)要说开放出来比较数据更是没有意义,因为DistBelief本身并没有开源。&br&&br&5. 再来说一下distributed version support的问题,如果你仔细研究一下Tensorflow的framework就会发现再当前的基础上加一个分布式的支持是相当容易的,你可以用Zeromq/MPI 任何一种高效的通信框架来做,结合当前的Graph rewrite的functionality,只需要增加一些通信的节点就可以。&br&&br&6. 最后关于详细情况请参考Tensorflow writepaper[3],欢迎试用。&br&&br&[1]: Arvind and David E. Culler. Annual review
of computer science vol. 1, 1986. chapter
Dataflow Architectures, pages 225–253. 1986 &a href=&///?target=http%3A//www.dtic.mil/cgi-bin/GetTRDoc%3FLocation%3DU2%26& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&dtic.mil/cgi-bin/GetTRD&/span&&span class=&invisible&&oc?Location=U2&&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
doc=GetTRDoc.pdf&AD=ADA166235.&br&[2]: Arvind and Rishiyur S. Nikhil. Executing a program
on the MIT tagged-token dataflow architecture.
IEEE Trans. Comput., 39(3):300–318, 1990.
&a href=&///?target=http%3A//dl.acm.org/citation.cfm%3Fid%3D78583& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&dl.acm.org/citation.cfm?&/span&&span class=&invisible&&id=78583&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&.&br&[3]: TensorFlow:
Large-Scale Machine Learning on Heterogeneous Distributed Systems
个人的一点看法:1. TensorFlow是采用的DataFlow的数据流模型,不过我不觉得和Dryad有太多相似之处,此外Dryad也不是第一个提出DataFlow模型的地方,要说最早可以参考MIT TaggedToken
machine里面的static dataflow 和dynamic dataflow architecture[2]的资…
&img data-rawheight=&540& data-rawwidth=&720& src=&/de8befd0cfe_b.jpg& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&/de8befd0cfe_r.jpg&&人人上的图,原注释是“天梯3000分局”&br&你觉得啥地位?&br&&br&======================================================================&br&&br&从左至右:&br&&br&Yann LeCun&br&Geoffrey Hinton&br&Yoshua Bengio&br&Andrew Ng&br&&br&具体成就直接放狗搜索即可&br&&br&这几个人之间还有错综复杂的关系,如下图所示&br&&br&&img data-rawheight=&350& data-rawwidth=&440& src=&/219aec088a842cf8e2c1d_b.jpg& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&/219aec088a842cf8e2c1d_r.jpg&&&br&当然如果你参加NIPS2014遭遇到了如下的提问阵容,那......&br&&br&&img data-rawheight=&329& data-rawwidth=&440& src=&/30c43e054c7a045c1ee10b_b.jpg& class=&origin_image zh-lightbox-thumb& width=&440& data-original=&/30c43e054c7a045c1ee10b_r.jpg&&
人人上的图,原注释是“天梯3000分局”你觉得啥地位?======================================================================从左至右:Yann LeCunGeoffrey HintonYoshua BengioAndrew Ng具体成就直接放狗搜索即可这几个人之间还有错综复杂的关系,如下…
word2vec本质上来说就是一个矩阵分解的模型,简单地说,矩阵刻画了每个词和其上下文的词的集合的相关情况。对这个矩阵进行分解,只取每个词对应在隐含空间的向量。&br&&br&所以word2vec适合的情况就是对于一个序列的数据,在序列局部数据间存在着很强的关联。典型的就是文本的序列了,邻近的词之间关联很强,甚至可以通过一个词的上下文大概预测出中间那个词是什么。学习到的词向量代表了词的语义,可以用来做分类、聚类、也可以做词的相似度计算。此外,Word2vec本身的层次分类器或者采样方式实际上对热门item做了很大的惩罚,所以不会像一般的矩阵分解一样,最后算出来语义接近的都是热门词,这也是word2vec很好的一个特性。&br&&br&对于短文本分类,直接把文档里面所有的word对应的向量线性相加,作为文本的特征训练分类器,效果也很不错。这种方式其实在word2vec的训练过程中也有使用。另外如果换成非线性分类器,比如rbf kernel SVM,分类准确度还能再高,这个也是符合预期的。&br&&br&其他序列的数据也是可以这样做的,记得去年KDD上有一篇DeepWalk的文章,在社交网络上进行随机游走生成一组组节点的序列,然后通过word2vec训练每个节点对应的向量。但是我用这个方法在qq的社交网络上面做了一些实验,发现效果非常不理想,可能和qq社交网络的复杂性有关。&br&&br&我非常满意的一个应用是把word2vec应用在用户app下载序列上,根据用户下载app的顺序,把app看做单词,也是可以形成这样的序列数据,进而训练处每个app对应的向量。利用这个向量计算app之间的相似度,效果非常好,能够把真正内容相关的app聚合在一起,同事规避热门app的影响。类似的场景应该还有很多,而且应用也很广泛,比如说推荐系统、广告系统都可以用上。
word2vec本质上来说就是一个矩阵分解的模型,简单地说,矩阵刻画了每个词和其上下文的词的集合的相关情况。对这个矩阵进行分解,只取每个词对应在隐含空间的向量。所以word2vec适合的情况就是对于一个序列的数据,在序列局部数据间存在着很强的关联。典型的…}

我要回帖

更多关于 大家不知道吃肉的罪过 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信