如何把电脑训练好的深度神经网络训练原理移植到app上

如何把电脑训练好的神经网络移植到app上?
比如iOS平台上的PetOrNot这个应用,我知道它是通过神经识别是不是宠物的,但是我不知道它是怎么把训练好的神经网络做到app里面,这个过程应该具备哪些知识?<img onload="javascript:ImgReSize(this)" src="/ba139bb2a3a9b89a2c00_b.jpg
【如何把电脑训练好的神经网络移植到app上?】
请将本文分享给你的朋友:
如何把电脑训练好的神经网络移植到app上? 的相关文章
------分隔线----------------------------
北京联盟郑重声明:本文仅代表作者个人观点,与北京联盟无关。其原创性及文中陈述内容未经本站证实,北京联盟对本文及其中全部或者部分内容的真实性、完整性、及时性不作任何保证和承诺,请网友自行核实相关内容。更多频道内容在这里查看
爱奇艺用户将能永久保存播放记录
过滤短视频
暂无长视频(电视剧、纪录片、动漫、综艺、电影)播放记录,
按住视频可进行拖动
&正在加载...
收藏成功,可进入
查看所有收藏列表
当前浏览器仅支持手动复制代码
视频地址:
flash地址:
html代码:
通用代码:
通用代码可同时支持电脑和移动设备的分享播放
用爱奇艺APP或微信扫一扫,在手机上继续观看
当前播放时间:
一键下载至手机
限爱奇艺安卓6.0以上版本
使用微信扫一扫,扫描左侧二维码,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
设备搜寻中...
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
连接失败!
请确保您要连接的设备(仅限安卓)登录了同一爱奇艺账号 且安装并开启不低于V6.0以上版本的爱奇艺客户端
部安卓(Android)设备,请点击进行选择
请您在手机端下载爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
其他安装方式:手机浏览器输入短链接http://71.am/udn
下载安装包到本机:
爱奇艺云推送
请您在手机端登录爱奇艺移动APP(仅支持安卓客户端)
使用微信扫一扫,下载爱奇艺移动APP
180秒后更新
打开爱奇艺移动APP,点击“我的-扫一扫”,扫描左侧二维码进行登录
没有安装爱奇艺视频最新客户端?
正在检测客户端...
您尚未安装客户端,正在为您下载...安装完成后点击按钮即可下载
, 可在设置中重新打开噢!
30秒后自动关闭
训练深度神经网络的时候需要注意的一些小技巧">训练深度神经网络的时候需要注意的一些小技巧
请选择打赏金额:
播放量数据:快去看看谁在和你一起看视频吧~
更多数据:
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制
安装爱奇艺视频客户端,
马上开始为您下载本片
5秒后自动消失
&li data-elem="tabtitle" data-seq="{{seq}}"& &a href="javascript:void(0);"& &span>{{start}}-{{end}}&/span& &/a& &/li&
&li data-downloadSelect-elem="item" data-downloadSelect-selected="false" data-downloadSelect-tvid="{{tvid}}"& &a href="javascript:void(0);"&{{pd}}&/a&
选择您要下载的《
色情低俗内容
血腥暴力内容
广告或欺诈内容
侵犯了我的权力
还可以输入
您使用浏览器不支持直接复制的功能,建议您使用Ctrl+C或右键全选进行地址复制&#xe621; 上传我的文档
&#xe602; 下载
&#xe60c; 收藏
毕业于医学院校,在医院工作,有相对丰富的护理经验
&#xe602; 下载此文档
Matlab训练好的BP神经网络如何保存和读取方法
下载积分:1500
内容提示:Matlab训练好的BP神经网络如何保存和读取方法
文档格式:DOC|
浏览次数:143|
上传日期: 00:03:49|
文档星级:&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;&#xe60b;
全文阅读已结束,如果下载本文需要使用
&#xe71b; 1500 积分
&#xe602;下载此文档
该用户还上传了这些文档
Matlab训练好的BP神经网络如何保存和读取方法
关注微信公众号310被浏览11770分享邀请回答arxiv.org/abs/0 代码层面优化 这个完全可以重写一个运行时,写一个运行时并不困难,基本都是矩阵运算,能做的优化太多2011-Improving the speed of neural networks on CPUs
以上论文仅供参考更新:使用对移动平台支持好的工具训练模型 如TensorFlow,训练完成后简单几步放到Mobile
上运行 。---------------据所知以下两款APP是全球首款、第二款离线运行深度神经网络的教育APP,在模型设计的阶段为在设备端运行做了调整所以没有继续做模型优化,重写运行时、优化矩阵运算(相比for for的计算方式速度提升40倍+,相比openblas提速10+ )同时做了模型+代码的混合优化;I dit it.英语流利说iOS版 流利学院your /j?r/ 漏读了/r/146 条评论分享收藏感谢收起&p&我的观点是:一是AI前进的速度比想象中更快,即便是行业内的人士都被AlphaGo Zero跌破眼镜;二是要正视中国在人工智能学术方面和英美的差距。&/p&&p&一方面,AlphaGo Zero的自主学习带来的技术革新并非适用于所有人工智能领域。围棋是一种对弈游戏,是信息透明,有明确结构,而且可用规则穷举的。对弈之外,AlphaGo Zero的技术可能在其他领域应用,比如新材料开发,新药的化学结构探索等,但这也需要时间验证。而且语音识别、图像识别、自然语音理解、无人驾驶等领域,数据是无法穷举,也很难完全无中生有。AlphaGo Zero的技术可以降低数据需求(比如说WayMo的数据模拟),但是依然需要大量的数据。&/p&&p&另一方面,AlphaGo Zero里面并没有新的巨大的理论突破。它使用的Tabula Rosa learning(白板学习,不用人类知识),是以前的围棋系统Crazy Stone最先使用的。AlphaGo Zero里面最核心使用的技术ResNet,是微软亚洲研究院的孙剑发明的。孙剑现任旷视科技Face++首席科学家。&/p&&p&虽然如此,这篇论文的影响力也是巨大的。AlphaGo Zero 能够完美集成这些技术,本身就具有里程碑意义。DeepMind的这一成果具有指向标意义,证明这个方向的可行性。&/p&&p&在科研工程领域,探索前所未知的方向是困难重重的,一旦有了可行性证明,跟随者的风险就会巨幅下降。我相信从昨天开始,所有做围棋对弈的研究人员都在开始学习或复制AlphaGo Zero。材料、医疗领域的很多研究员也开始探索。&/p&&p&AlphaGo Zero的工程和算法确实非常厉害。但千万不要对此产生误解,认为人工智能是万能的,所有人工智能都可以无需人类经验从零学习,得出人工智能威胁论。AlphaGo Zero证明了AI 在快速发展,也验证了英美的科研能力,让我们看到在有些领域可以不用人类知识、人类数据、人类引导就做出顶级的突破。&/p&&p&但是,AlphaGo Zero只能在单一简单领域应用,更不具有自主思考、设定目标、创意、自我意识。即便聪明如AlphaGo Zero,也是在人类给下目标,做好数字优化而已。&/p&
我的观点是:一是AI前进的速度比想象中更快,即便是行业内的人士都被AlphaGo Zero跌破眼镜;二是要正视中国在人工智能学术方面和英美的差距。一方面,AlphaGo Zero的自主学习带来的技术革新并非适用于所有人工智能领域。围棋是一种对弈游戏,是信息透明,有…
MDZZ,论文看多了吧,真以为可以end-to-end输入图像输出操作啊?&br&工程软件都是这样,哪个不是一层一层if套下来,每个if都要开会吵半天,要是哪个工程控制软件if少了,我绝对不敢用。&br&&br&白天下雨倒影怎么办?地面积雪眩光怎么办?晚上对面远光灯直射一片255怎么办?天上飘来一朵云彩前方大地一半亮一半暗怎么办?&br&&br&下雨的时候激光撞到雨点直接回波了怎么办?激光碰到超黑的物体根本没有回波怎么办?&br&&br&这些还都是技术层面的事,路边突然冲出个人怎么办?遇到夹塞怎么办?有的车就想往你车上撞怎么办?&br&&br&还有,你确定不把各个中间数据的有效范围都界定一下?要是突然算出一个超大的数导致一连串的崩溃怎么办?&br&&br&要是只用考虑阴天(可以认为光照均匀分布)、高速路、前后车距超过100米,那确实能如某黑客所说“1000行代码实现自动驾驶”。但搞工程就是99%的情况用1%的代码解决,剩下的1%的情况就要用99%的代码解决。这时候跑个深度学习,说精确度达到99%有个屁用。
MDZZ,论文看多了吧,真以为可以end-to-end输入图像输出操作啊? 工程软件都是这样,哪个不是一层一层if套下来,每个if都要开会吵半天,要是哪个工程控制软件if少了,我绝对不敢用。 白天下雨倒影怎么办?地面积雪眩光怎么办?晚上对面远光灯直射一片255怎…
&p&强烈推荐《Deep Learning》这本书,之前看过小部分英文版,感觉很不错,不管是准备面试还是学习都可能是首选。&/p&&img src=&/v2-e3ff9fef799d_b.png& data-caption=&& data-rawwidth=&257& data-rawheight=&306& class=&content_image& width=&257&&&p&这本书的中文版于号刚刚上市,现在随便都可以在某东、某宝等买到。&/p&&p&作者:由&b&Ian Goodfellow、Yoshua Bengio 和 Aaron Courville &/b&三位大牛合著的 AI 新圣经。&/p&&p&该书由北京大学数学科学学院统计学教授、北京大学大数据研究中心和北京大数据研究院数据科学教授&b&张志华&/b&审校,众多译者协力完成。&/p&&p&《深度学习》这本书从浅入深介绍了基础数学知识、机器学习经验以及现阶段深度学习的理论和发展,不管是人工智能技术爱好者,还是相关从业人员使用这本书都是非常有好处的。&/p&&p&&br&&/p&&p&有了“一书在手,天下我有”的感觉。&/p&&p&&br&&/p&&p&再贴一段关于这本书的介绍。&/p&&p&《深度学习》的一大特点是介绍深度学习算法的本质,脱离具体代码实现给出算法背后的逻辑,不写代码的人也完全可以看。为了方便读者阅读,作者特别绘制了本书的内容组织结构图,指出了全书20章内容之间的相关关系。读者可以根据自己的背景或需要,随意挑选阅读。&/p&&p&最后再贴下这本书中文版的目录。&/p&&p&&br&&/p&&img src=&/v2-a2ffbec8a4b9d_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1273& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-a2ffbec8a4b9d_r.png&&&p&&br&&/p&&img src=&/v2-8e94a94aea16374df6afdc80a9800313_b.png& data-caption=&& data-rawwidth=&898& data-rawheight=&1293& class=&origin_image zh-lightbox-thumb& width=&898& data-original=&/v2-8e94a94aea16374df6afdc80a9800313_r.png&&&p&&br&&/p&&p&&br&&/p&&img src=&/v2-f2a7cdafe3e038a011e1_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1321& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-f2a7cdafe3e038a011e1_r.png&&&p&&br&&/p&&img src=&/v2-6a5fee2fcac3cfc811ebe0_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1294& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-6a5fee2fcac3cfc811ebe0_r.png&&&p&&br&&/p&&img src=&/v2-0c281fcd9f09c3e2bec93fd8_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1304& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-0c281fcd9f09c3e2bec93fd8_r.png&&&p&&br&&/p&&img src=&/v2-fb195ef063e4_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1322& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-fb195ef063e4_r.png&&&p&&br&&/p&&img src=&/v2-75a4a2dbbcca_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1312& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-75a4a2dbbcca_r.png&&&p&&br&&/p&&img src=&/v2-602f37a8db881c5defc567_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1308& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-602f37a8db881c5defc567_r.png&&&p&&br&&/p&&img src=&/v2-6b31d95ddc6fc75ae795c_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&1342& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-6b31d95ddc6fc75ae795c_r.png&&&p&&br&&/p&&img src=&/v2-7aa837d1c_b.png& data-caption=&& data-rawwidth=&900& data-rawheight=&352& class=&origin_image zh-lightbox-thumb& width=&900& data-original=&/v2-7aa837d1c_r.png&&&p&最后,现在可预定《深度学习中文版》的纸质版,直接在淘宝或者京东上搜索“深度学习 中文版”即可找到,一两天就能收到货。&/p&&p&&br&&/p&&p&觉得有用的看官点个赞呗~&/p&&p&刚刚去找了一下这本书的英文版和中文版PDF,已经放在网盘链接里,有需自取。&/p&&p&&a href=&///?target=http%3A///s/1o8boqdc& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&/s/1o8boqd&/span&&span class=&invisible&&c&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&/p&&p&&b&官方中文版&/b&的GitHub链接在此:&/p&&p&&a href=&///?target=https%3A///exacity/deeplearningbook-chinese& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&exacity/deeplearningbook-chinese&i class=&icon-external&&&/i&&/a&&/p&&p&&br&&/p&&p&感谢点赞,谢谢你们,欢迎关注干货~&/p&
强烈推荐《Deep Learning》这本书,之前看过小部分英文版,感觉很不错,不管是准备面试还是学习都可能是首选。这本书的中文版于号刚刚上市,现在随便都可以在某东、某宝等买到。作者:由Ian Goodfellow、Yoshua Bengio 和 Aaron Courville 三位…
&p&推荐两本真正意义上的神书,一本是《Pattern Recognition and Machine Learning》(PRML),一本是《Deep Learning》(Ian Goodfellow和Yoshua Bengio写的那本),绝对符合题主“看了以后大呼过瘾”的标准。这两本书都是属于“大而全”的类型,两本书都是从头到尾讲清楚了一个领域的细节。PRML是传统机器学习,《Deep Learning》是讲的最近几年兴起的深度学习。&/p&&p&先说说PRML。之前也看过很多机器学习的书,&b&大多数书讲解模型时,都只会讲一个在某种情形下简化的特殊版本。&/b&如针对分类的模型,讲了一个0-1两类分类模型就结束了,如何应用到多分类就一笔带过。再比如回归模型,也只是讲个单变量不带正则项的最简化版。至于加什么正则、为什么这么加更是很少涉及的话题。&b&而看PRML的感觉就像作者拿着一个放大镜,带你从模型的motivation、模型的推导过程、模型的推广、这个模型和其他模型的联系等方方面面讲解,而且每一个部分都很详细,都有非常细致的推导过程,每步推导过程还都有解释,这真的是太贴心了。&/b&&/p&&p&可能这样说还是会有人不是很明白,我就举几个具体的例子。比如线性回归,很简单的人人都懂的: &img src=&///equation?tex=y+%3D+w%5E%7BT%7Dx& alt=&y = w^{T}x& eeimg=&1&& ,大多数书会讲到 &img src=&///equation?tex=w& alt=&w& eeimg=&1&& 的求解就结束了,稍微详细点的书会告诉你线性回归的本质是:回归目标在 &img src=&///equation?tex=x& alt=&x& eeimg=&1&& 列向量张成的空间的投影,就是最好的 &img src=&///equation?tex=y& alt=&y& eeimg=&1&& ,但也就仅此而已了。PRML里讲线性回归用的式子是 y=wTΦ(x) ,不仅可以讲清楚线性回归的基本原理,而且可以利用 Φ(x)告诉你线性回归实际上也可以看做一种核方法,这就给之后章节做了铺垫。PRML还推导了以下事情:1. 为什么多维的y与一维的y在本质上是等价的(从一维到多维的推广) 2. 加L2正则和L1正则项本质是以不同的先验分布看待w 3. 为什么L1正则会产生sparse的结果 4. 对线性回归的bias-variance decomposition告诉你机器学习中无处不在的tradeoff:bias、variance等等。这样整个模型才算是学透了。&/p&&p&另外PRML概率图的那一章写的真的太棒了,堪称完美,也是看这一章我才真正搞懂了概率图模型。写到这里请允许我小小的黑一下周志华老师的西瓜书,西瓜书中讲概率图模型时直接就是隐马尔科夫模型,这样虽然比较简洁,但让人搞不懂概率图究竟是怎么定义的、还有隐马尔科夫模型的图是怎么画出来的。&b&西瓜书上只是说“图中的箭头表示了变量间的依赖关系”,然而到底是什么样的依赖关系?实在是让我一头雾水&/b&(隐马尔科夫确实是一个难点,见过好多人无法理解。。)。&b&直到看到PRML中时我才搞清楚所谓“依赖关系”实际上是变量间的“条件独立”。&/b&PRML中是怎么样讲概率图模型的呢?它是从概率论中的条件独立讲起的,相当于是讲模型之前先带你把最重要的基础知识复习一遍。讲完条件独立后又讲了最简单的三个概率图: A&--B--&C、A--&B--&C、A--&B&--C。并一一分析了图中蕴含的条件独立性,又做了联合分布的分解。这之后才开始过渡到隐马尔科夫模型,这样一步一个台阶,非常容易理解。&/p&&p&《Deep Learning》和PRML有点像。同样也是非常详细的,就不展开写了。&/p&&p&说了那么多,其实我想表达的是:&b&与其对很多模型一知半解,不如真正学懂一个模型,这样其实是节省时间的。&/b&原因在于当你搞懂一个模型后,就算你忘记了某些细节,再次查看资料也可以很快回忆起来。而当你不懂一个模型时,每次回忆都要从零开始,来来回回其实浪费了很多时间。&b&而PRML和《Deep Learning》就是让你真正理解机器学习算法的最佳途径之一,强烈推荐。&/b&&/p&
推荐两本真正意义上的神书,一本是《Pattern Recognition and Machine Learning》(PRML),一本是《Deep Learning》(Ian Goodfellow和Yoshua Bengio写的那本),绝对符合题主“看了以后大呼过瘾”的标准。这两本书都是属于“大而全”的类型,两本书都是从…
AlphaGo的发布,是一个伟大的里程碑,又一次让我兴奋地需要说一说。&br&
先说我的断言一:AlphaGo在两个月后,将会完胜李世石。&br&
留个关子,本文最后再说断言二。&br&
从中学开始,我就着迷用算法来解决游戏的博弈问题,用搜索方法创新性完成过一些题目。这几年深度学习出现后,就感觉有机会能够突破围棋,和清华的联合实验室做过几次探讨,都认为这个方向可行,可惜限于气场和能力不足,没能组织进行这方面的投入。&br&
而此次出手的,是Google旗下的DeepMind团队,在深度学习方面是最顶尖的,资源、能力、气场都没有问题,突破性的技术是基于深度学习进行估值和走棋。&br&
看知乎里好多讨论,是从之前AlphaGo完成的棋局来判断其下棋风格,倒推这个算法的威力,有点刻舟求剑的感觉。我们核心还是要回到对这次AlphaGo用到的技术的深刻理解。为了便于讨论,我们对比以搜索剪枝为核心的深蓝下国际象棋,和以搜索剪枝+深度学习为核心的AlphaGo的三个区别:&br&1. 围棋相对象棋,最大的区别是棋局的评价函数极难定义。象棋可以找到各种“特征”来计分,比如丢一个马扣多少分,兵往前拱到离底线近了加多少分,而围棋做不到,密密麻麻的黑白子挨着,互相之前又有关联,变化多,规律难以总结。这也是传统算法相对人最弱的几个问题之一。就像是我们人做人脸识别,看一眼就知道是张三李四,而机器算法难以下手。这个问题恰恰是最近几年深度学习最大的突破之处,深度学习不需要人来设计算法“找特征”,通过大量原始数据和标签的对于,机器就能够自动找特征,并且并不比人差。在几年前还有很多人认为机器在图像处理方面举步维艰,怎么定义和抽象鼻子?耳朵?眼睛?可就在这一两年深度学习突飞猛进,一举超过了人类。就在2015年,人脸识别方面,机器的识别能力已经超过了人了,这可是人进化了数千万年的核心能力之一呀。一个围棋棋局,可以理解为一张19*19的图片,其他的走棋规则和非常简单(很容易翻译成计算机规则),正好落入了深度学习擅长的事情。搜索+深度学习,这个算法完全可以覆盖围棋的规则,人下棋的思维过程和模式,只是AlphaGo的一个子集。这就决定了这个算法没有天花板,有机会在围棋领域“打通关”。&br&2. 深蓝相对AlphaGo,AlphaGo最大的优势是“学习能力”。深蓝的开局更多依靠数据库棋谱的建立,但没有泛化能力(不懂得举一反三),对于没有见过的走棋方法就可能犯傻。而之后的核心能力是计算力,通过暴力的搜索(当然也有最优秀的剪枝,但还是暴力),力图走出10-20步棋来选择最优的路径。这个复杂度是指数级的,变成一个NP问题,受限于计算力。这个系统的算法是写死的,固定的参数下,就会有固定的表现。而调整参数和改变算法,都是工程师的事情。这个系统的天花板是计算机有多强,以及工程师有多聪明。而AlphaGo更多是数据驱动的,喂给他更多的棋局数据,他就能够优化“神经元网络”,同样的运算资源下变得更聪明,并且具有举一反三的能力,这一点非常接近于人(或者说本身就是模拟人的方式来设计的)。而且我们知道,机器处理数据的能力足够地快,以及没有情绪不会出错,这就决定了这个系统如果把今天互联网上能收集到的棋局都学一遍,就成为顶尖高手了。&br&3. 最最最可怕的还不只是前面这两点,对于下棋博弈问题,AlphaGo还不只是从互联网上去收集数据进行学习,更可以自己和自己下,实现“自学习”。看过电影“超验骇客”没有?人工智能可以做到随着时间的推移就能更加聪明。金庸小说中老顽童让自己左手和右手打架“左右互搏”,成为天下无敌的武功,那个只是故事,在下棋这个领域,而AlphaGo有这样的设计,让这种武功成真了!往下还有两个月的时间,AlphaGo这样一台算法上没有天花板的机器,很有机会在“左右互搏”下登峰造极,成为不可超越的围棋高手。&br&&br&AlphaGo的技术问题讲完了。怎么来看Google背后的完整动作呢?有人觉得是过度解读了,实际系统挺糙的 -- 选的都是“欧洲冠军” -- 说明系统并不行,这是一种错误的理解。更有可能的原因是Google和Facebook在竞争下围棋,Facebook的员工缺心眼提前放了好多消息出来泄密了,结果Google就赶紧把Nature的文章发了抢了个先,然后卖个期货两个月后和人类对决,那会儿系统就足够好了,这是在竞争环境下合适的做法。&br&&br&事实上Google和Facebook两家都认识到了AI的重要性,以及就在最近几年会有大的突破。Google 4亿美金收购了DeepMind,当时只有20人,现在已经突破200人了,并且是不计代价的疯狂投入。下围棋只是体现人工智能进步绝佳的宣传点和切入点,从公开的文献可以看到,DeepMind做围棋研发是基于通用的技术进行,领域无关的(Domain independent)。这样的技术未来可以用到合适的其他领域里去。深度学习的魅力在于,只要一个领域里能够建模,能够有充足的数据,就能够在这个领域里做到超越人、取代人,短时间能从0分做到99分。如果我们依然是老观念,用渐进的方式来理解机器智能,比如之前某位大佬宣传他家的XX大脑做到了X岁的智力,这是很误(che)导(dan)的。我们同样也会错误地估计下围棋方面机器的能力,按照人类的理解1D-9D来评价它。一句话,不要用评价人的方法来评价机器的人工智能的能力,完全是不同的模式。&br&&br&老罗曾经评价过人工智能的一句话:“人工智能就像一列火车,它临近时你听到了轰隆隆的声音,你在不断期待着它的到来。他终于到了,一闪而过,随后便远远地把你抛在身后”。&br&&br&如果给这句话打上一个补丁,把人工智能的应用局限到一个一个的具体的封闭领域,这是一个很贴切的描述。我们不要过度自大,例如我们容易在自我优越感的驱使下,说动物不如人,比如人会直立行走、会说话、会实用工具,以区别于其他动物。事实证明,动物也会。面对机器也一样,就在几个月前还有人叫嚣机器十年内不能够玩转围棋,理由也都是人一眼就能看明白,机器只会计算。这些自大会让我们误判。也不用过于自卑,觉得围棋上机器上胜利了人类整个智力就被碾压了,到今天机器还是有很多领域完全无能,只能在局部领域。&br&&br&到结尾,再说断言二:除了围棋,人工智能在其他博弈类的封闭游戏里,也会横扫一切,完胜人类。
AlphaGo的发布,是一个伟大的里程碑,又一次让我兴奋地需要说一说。 先说我的断言一:AlphaGo在两个月后,将会完胜李世石。 留个关子,本文最后再说断言二。 从中学开始,我就着迷用算法来解决游戏的博弈问题,用搜索方法创新性完成过一些题目。这几年深度…
哈哈哈哈,我觉得很多人都有这个疑问吧。机器学习好高大上,多么牛逼的东西,光是看公式就已经眼花缭乱了,总觉得自己该全部去实现一遍,有的时候太懒,有的时候觉得能力不够。道理虽然明白——任何事情自己亲手做一做还是更好的,但机器学习已经有了大量的库了,SVM-Light,R里面的glm()方程,自己实现一遍,最后又不敢用(因为不知道算法究竟是否正确),或者不能用(一是速度赶不上大神写的库那么快,二是精度没有专业库那么高),耗时耗力的写了一堆后究竟有什么用?&br&&br&这里很多答案都提供了一些解释,但我想从另一个角度来聊聊这个问题。&br&&br&我在1年半前(本科阶段)就开始接触计算心理学和机器学习方面的研究,在NAACL(自然语言处理排名第三的论坛)上发表了一篇文章,用的计算机教授写的算法库,跑的是经过AdaGrad优化的向量支持机(SVM)算法。在这种论坛发文章,你是必须去做海报展示的,站在自己的大幅海报面前傻傻的待4个小时,我的两位教授(一位是认知语言学教授,一位是计算机教授)都在那里。我的位置不太好,在最边缘的角落里,本来以为就可以赢得一份清净,Philip Resnik走了过来。直到那一刹那之前,我一直不知道他是谁。但经过教授介绍后,他是马里兰大学的机器学习和自然语言处理教授,在这个领域混了多年,在Google Schoar上的论文引用数高达12,853。&br&&br&&img src=&/5d933af1b2cfb89056c79a_b.jpg& data-rawwidth=&800& data-rawheight=&532& class=&origin_image zh-lightbox-thumb& width=&800& data-original=&/5d933af1b2cfb89056c79a_r.jpg&&&br&&br&他走过来的第一句话是:“假设我一点也不懂数学,告诉我你这篇论文做的是什么。”我解释后,看到我的计算机教授走了过来和Resnik聊天,Resnik问我的教授:“你用的是不是hinge loss(辛基损失函数)?”我的教授说:“是。但不是全局优化,所以我没有叫这玩意SVM……”(我凭回忆打出来的,可能不完全精确)。当时我站在一旁觉得这他们能这样大聊特聊数学,甚至是向量支持机(我当时认为这是最厉害的算法——除神经网络以外),简直是太厉害了,我一点也听不懂他们在讲什么。&br&&br&直到现在,我才明白所谓的“辛基损失函数(Hinge loss)”其实就是Max(a,b)函数,就是比较 a 和 b 谁大谁小,然后选大的那个。这玩意究竟有什么难理解的?为什么要那么高大上?你让一个五岁的小孩,问他:“有一堆红球,一堆绿球,哪一堆的球更多啊?”这个小孩都能告诉你正确答案。&br&&br&当然这说的有点偏题了。后来我非常幸运的考上了研究生,才终于开始了对“高档”算法的学习。第一个学期被Christopher Manning(克里斯多夫·曼宁)的CS224N自然语言处理虐了一番,这个学期开始上Andrej Karpathy(安杰·卡帕西)的神经网络(CS231N),该君是李菲菲教授(音译,Fei-Fei Li)的爱徒,在推特上有14.9K关注者,我越看他那张方块脸,越觉得他长得像贾斯丁·汀布莱克(Justin Timberlake)。这里有篇他的新闻报道:&a href=&///?target=http%3A///archives/3179.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Karpathy打败了Google的超级人工智能,但也许再没有下次了&i class=&icon-external&&&/i&&/a& 。&br&&br&&img src=&/dd1fc2e6e1c5f_b.jpg& data-rawwidth=&4000& data-rawheight=&3000& class=&origin_image zh-lightbox-thumb& width=&4000& data-original=&/dd1fc2e6e1c5f_r.jpg&&&br&&br&我其实也是自控能力很差的人,在上安杰·卡帕西的课之前,也从没有萌生过自己去写机器学习算法的想法。原因在文章开头有提过:1. 我的代码运行速度肯定赶不上经过多次迭代的专业库的运行速度;2. 我咋知道我的代码写的就是对的呢??&br&&br&我直到现在都这样认为:不考虑对方的环境和条件,知识与技能,就一味要求对方把机器学习算法都实现一遍,估计是最无理取闹的行为了吧。前天晚上,我跟另一个研究生Jason Freeman(杰森·弗里曼)聊天,他在微软的西雅图总部工作了4年,在目前越来越有名的TypeScript团队工作了3年(TypeScript是静态的JavaScript语言,正在国内和国外开始流行)——他告诉我他和安德斯·海尔斯伯格(Anders Hejlsberg)一起工作,他还经常顶撞安德斯。我的第一反应是:“他是谁……”(安德斯·海尔斯伯格是Delphi和C#之父,但我不熟悉这两门语言,所以不会崇拜他——小广告:Scala是我目前最喜欢的语言)。&br&&br&我和杰森讨论的是3月份开始究竟要不要选吴恩达(Andrew Ng)的机器学习课(CS229)。我持的立场是我可能不打算上那门课,因为我已经看过大部分他的视频了,还读了他讲义的一部分(这里是讲义链接: &a href=&///?target=http%3A//cs229.stanford.edu/materials.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CS 229: Machine Learning (Course handouts)&i class=&icon-external&&&/i&&/a& )。因为我已经确定以后要做神经网络方面的研究,所以觉得他课上的一些其他内容比如特征降维(PCA),对我而言用处不大,我只需要会用就行了。我不仅用过特征降维,还用过更好的降维可视化(tSNE算法)。这玩意和我的领域不搭,为什么我要浪费时间去学?&br&&br&杰森的论点是,如果我学了它们的理论(甚至把它们实现一遍),就能更好的应用它们。我说:你把直觉(intuition)当什么了?在我看来,对算法进行“直观”上的了解,就已经很足够了。什么是向量支持机?就是拿一个平面去分隔一堆点。更术语一点的解释不外乎是拿一个超平面(Hyperplane)在高维空间里去分割。什么是特征降维?就是看如何把高维度的点阵降到两三个维度。什么是alpha值?就是看这个算法学得有多快。什么是正则化(regularization)?就是别让你的算法过度拟合数据(当然L1,L2等等都有区别,但这些区别都很简单,L1让你关注某个值,L2让你利用所有的值)。&br&&br&为什么我谈这么多关于理论的问题?在我看来,学习机器学习的算法的进度是这样的:应用 -》理论 -》实现。就跟教小孩折射一样,你先让他看看筷子在水中如何弯折(应用),再告诉他光的折射原因(理论),再让他自己用其他物体来试试(实现)。实现,是这个漫长学习过程的最后一步。一开始就来谈实现,实在是很神奇的事情。&br&&br&让我准确论述一下我的观点:如果你是学界精英,那么去学习那些你将要使用的算法的理论,最后再自己尝试着实现他们,是很有必要的,除非你是只做应用(比如社会科学,心理学,商学等等)。如果是普通的程序员/工程师,不需要强迫自己去实现这些算法。没人会给你一个小奖章,大公司招这类员工的时候,也是更看重学历,而不是看“哦,我把‘所有’的机器学习算法都实现了一遍”。&br&&br&最后送上一点我觉得实现机器学习算法最好的路径:&br&&br&最好用Python和Numpy库。这两样宝具会让你非常轻松。安杰·卡帕西(Andrej)推荐用ipython notebook(现在改名叫Jupyter了),来可视化数据,以及实验算法。昨天有一个下午茶会,我们系举办的,也邀请了安杰,我跑去凑热闹,跟安杰谈到了这个问题,他说就算是大公司做研究,也是这种路径,先从ipython notebook开始(这点让我很惊讶)。&br&&br&机器学习算法最难的部分其实不是写出来,而是高效率的实现,让你的算法跑快一点。其中一个技巧叫做“矢量化”(Vectorization)。矢量化就是说,能做矩阵操作就矩阵操作,最好连一个外循环都不写。&br&&br&这是我写的Softmax算法的测评:(在500个样本上跑的)&br&&div class=&highlight&&&pre&&code class=&language-text&&naive loss: 2. computed in 0.255952s
vectorized loss: 2. computed in 0.004148s
&/code&&/pre&&/div&第一个是用普通的Python和循环写出来的,第二个是用矢量化操作写出来的,可以看到64倍速度的提升——侧面也可以看到Python有多垃圾(慢)。&br&&br&这个是SVM(支持向量机)算法的测评:(同样500个样本)&br&&br&&div class=&highlight&&&pre&&code class=&language-text&&Naive loss: 9. computed in 0.136226s
Vectorized loss: 9. computed in 0.005909s
&/code&&/pre&&/div&这次的速度提升没有那么明显,但也是26倍的提速。&br&&br&但我只想说:矢量化真是很难的事情。数学家随便就写公式,也不考虑考虑可怜的计算机科学孩子们。原初的公式几十分钟就搞定,矢量化要一两个小时的冥思苦想。&br&&br&最后,对于那些读懂了理论,实在是闲得无聊,或者想要进军更高级的学术界的同志们,这里是安杰·卡帕西课代码的链接:&a href=&///?target=http%3A//cs231n.github.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&CS231n Convolutional Neural Networks for Visual Recognition&i class=&icon-external&&&/i&&/a&。如果你不属于这个类别,就不要瞎掺合啦,用用别人的库又怎么了?骇客精神(Hacker Code)中一条就是:“不要重复劳动,有库就要用库,不然就是对库写作者的不尊重。”&br&&br&(如果你还是不知道究竟该不该实现,欢迎阅读下面我增加的内容)&br&------------------&br&&br&最近这篇文章被学姐前辈Danqi Chen看到了。。所以我稍微补充几句,免得被大牛们看到后笑话。。- ___ - || Danqi前辈是清华姚班的高材生,Chris Manning的博士,在224N课上是首席助教,然后被我缠着问了好多次问题……&br&&br&这篇文章有点接近“反智”文章的边缘,大意是实用主义至上,自己实现的必要性不大。这个观点还是有很多争议的,比如目前有一个答案就“实名”反对这个答案。机器学习是一个交叉学科,作为学生而言,从不同的部门学到的机器学习,必然是不一样的。在统计学部门学到的机器学习,和在计算机部门学的机器学习,肯定是两个样。我秋天的时候跟一位概率教授上了一节课,当我告诉他斯坦福计算机入门概率课要介绍MLE(最大拟然估值)和蒙特拉罗模拟(Monte Carlo Simulation)的时候,他沉重的摇摇头,说这么早就介绍这样深刻的概念,是很不应该的,在他的部门,要第三年的学生才接触这样的知识,因为直到那时,学生才有足够的知识框架去理解这些知识。&br&&br&我写这篇文章是有一定的原因的。我认识一些国内的大学同学,都异常优秀,他们努力的程度是我一辈子都比不上的,他们中一部分人因为运气不好(高考),不幸去了一些相对不是那么优异的大学,但是他们用努力弥补这个缺陷,对数学和各种学科展开攻克,很多人的阅读量和数学解题技巧也是我不能企及的。还有一部分人,是处于业界转型边缘,本来已是成熟的程序员,或者数据分析师,但是想要进一步提升自己,亦或是转型。我把这两类人定做这篇回答的目标受众。我希望为他们写一篇回答,不让他们走我走过的弯路,不受太多的误导。&br&&br&开复先生(李开复)最近说深度学习急缺人才。我非常的不赞同。深度学习领域是处于半饱和状态的,实际上就业情况就是一堆熠熠生辉(Scintillating)的博士们在学术界待腻了,想要去赚点钱玩玩,就跑去业界晃一圈的状况。这和大部分人的就业状况根本是不搭边的。深度学习,以及理论机器学习,除非是平台很高,起点很高,是很难得到广泛认可的。&br&&br&我最近刚买了一本书:&br&&br&&img src=&/84fff94cd43ce38c5d95fa4_b.jpg& data-rawwidth=&288& data-rawheight=&436& class=&content_image& width=&288&&&br&这本书很详细的在讲Lasso Loss(L1),写SVM的部分也非常不错,很神奇的是,三位作者,两位是斯坦福统计学系的,一位是伯克利的。如果我能读完这本书,会上来改进一下这个答案的。&br&&br&最近我想提一提答案末尾写的,关于“实现”的问题。我过去几周一直在写我自己的Theano库(是的,放着牛逼的Lasagne不用,非要自己手写),终于把CNN写完后,现在在写RNN的部分。当我已经花费这么多的时间,然后意识到,我的代码暂时还只能在CPU上跑,因为我暂时还没有用Theano的CUDA库,又意识到,仅仅几周后,我的两门春季课已经开始教TensorFlow了,于是觉得自己是个傻子。&br&&br&所以我自己都陷入了我回答中所写的那个陷阱:实现之后却不能使用,但又不愿意放弃自己的代码,于是只有投入更多的时间去改代码,而不是去理解数学。愿与各位共勉。&br&&br&-------------------
哈哈哈哈,我觉得很多人都有这个疑问吧。机器学习好高大上,多么牛逼的东西,光是看公式就已经眼花缭乱了,总觉得自己该全部去实现一遍,有的时候太懒,有的时候觉得能力不够。道理虽然明白——任何事情自己亲手做一做还是更好的,但机器学习已经有了大量的…
&p&DL的难度取决于看问题的角度。数学系的话应该往理论方向看。&/p&&p&DL用线性和非线性函数堆砌来构造函数,用随机梯度下降就可以训练,而且还有非常好的泛化能力,在我看来这样的东西居然没有原理这是完全不可想像的。但是DL很难,难到大家都不知道如何入手,用什么数学工具都不知道,所以说什么样的理论文章都有,凝聚态物理的(spin-glass),量子物理的(重整化群),ODE的(动力系统),各种优化理论(这个例子太多),各种复杂度理论,但还没看到真正提炼出本质的。数学这边那么多理论,但现在还没有哪个能搬到DL上而且能严丝合缝的,至于能进行有效预测的就更没有了。这就足够说明问题的复杂性,DL是没那么简单的。&/p&&p&要深入DL,各种基础知识是不可少的。但是基础知识并不是拿来炫耀的本钱,因为学了一大堆,可能一个都没用。比如说VC Dimension或者Rademacher Complexity对DL有没有用?它们本身都很漂亮,但可能假设太强得到的结论和现实差很远,或者假设太宽泛得到的结论太弱,都不在DL的工作区间。所以做理论的人,不得不一个个学过来,想过了,试过了,然后放掉,下一个。解决问题是最终的目标,而不是学得比人多些,然后坐在原地不动夸耀自己厉害。耍弄十八般武艺,比不过高手一招制敌。至于这一招怎么找到,或者从理论分析这边入手,或者从实验入手,都是一样有价值,都是平等的,不存在谁鄙视谁的问题。鄙视就意味着有不合理的预设立场,忽视另一种思路的作用,对解决问题是不利的。&/p&&p&学数学的时候,我的感觉像是走进了琳琅满目的艺术博物馆,在整洁的环境中欣赏各种精巧的美。DL相比之下就像是锅炉房里堆叠着一坨污七八糟的机器,工程师们东敲西打让它工作,虽然脏乱,确实有效。大部分人可以沿着前人铺好的锦绣路上再添砖加瓦,但是真正厉害的,是不顾脏乱跑到锅炉房里把机器拆开,化腐朽为神奇,找到最重要原理的那些人。开创比修补难,与其抱怨DL没有高深数学做框架,不如自己试试看,能不能做些有趣的东西出来。现在那么大的金矿放在那里,大家应该好好合作使劲挖矿才是啊。
小波是很美,但问题是它的基函数是固定形式的,不能适应具体问题,而且还需要数学家搞一辈子才能搞出来。与之相比,深度模型训练几天就能跑出来,而且针对具体问题(比如说图像分类)效果还更好,你会选哪个?所以说现在思路要转变,一个一个地研究模型太没效率了,做一个对数据自动建模的模型,是不是在战略上会更有趣一点呢?&/p&&p&我和我一个同学聊过,他现在是统计系的终身教授,列举了几个非常牛的数学家,问我AI再牛牛得过他们么?我没有正面回答,我在想人类看蚂蚁的时候会思考普通蚂蚁和聪明一点的蚂蚁之间的区别么?我这里并没有贬低数学家的意思,因为人类都是一样的,我也是微不足道的普通蚂蚁而已——相比耗能堪比一座小城市并且每几个月就更新换代的集群,人脑仅仅几十瓦的功率,神经元间慢达毫秒级的传输速度,败下阵来只是时间问题。而现在的人脑处理大部分任务甚至还远胜集群,可见人工智能潜力之大。我有时候觉得我们看到几颗星辰就以为是大突破了,其实我们还在漫漫长夜里瞎摸,太阳还没有露头呢。&/p&&p&另外说一下门槛低的问题。几百年前,微积分出来之后,一大类问题都可以用统一的方法解决,让技术进步的门槛降低了,本来高高在上的各种技巧平民化了,马上就带动了相关领域的巨大进展。这个历史进程和我们现在看到深度学习的进程一模一样,开源了,大家都用了,对整个人类而言进步就快了。到了这个时候,单枪匹马干不了什么事,人民群众才是技术进步的原动力。&/p&&p&面对时代的洪流,相比嘲弄别人随波逐流,思考应该如何顺势而为,或许是更有建设性的吧。&/p&
DL的难度取决于看问题的角度。数学系的话应该往理论方向看。DL用线性和非线性函数堆砌来构造函数,用随机梯度下降就可以训练,而且还有非常好的泛化能力,在我看来这样的东西居然没有原理这是完全不可想像的。但是DL很难,难到大家都不知道如何入手,用什么…
我来贡献一点干货和八卦~
&br&&br&AlphaGo的第一作者David Silver还在MIT做post-doc的时候(也有可能是visit?),曾经和我们组师兄合作利用机器学习和蒙特卡罗树搜索玩《文明2》。当时也有不小的轰动:&br&&img src=&/119f2bbff8d8b37693bed19bba4ed7e8_b.png& data-rawwidth=&1243& data-rawheight=&830& class=&origin_image zh-lightbox-thumb& width=&1243& data-original=&/119f2bbff8d8b37693bed19bba4ed7e8_r.png&&&br&有兴趣的同学可以参考项目主页和论文 &a href=&///?target=http%3A//groups.csail.mit.edu/rbg/code/civ/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[1]&i class=&icon-external&&&/i&&/a&&a href=&///?target=http%3A//www.jair.org/media/3484/live--jair.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[2]&i class=&icon-external&&&/i&&/a&。可以翻墙youtube的同学还可以看到一段游戏视频。&br&&br&作为其他答案的补充,下面浅显地针对性地介绍一下蒙特卡罗树搜索(MCTS)。&br&(***本文图片来源DeepMind和师兄论文)&br&&br&&b&一、为什么要用搜索?&/b&&br&-------&br&&br&由于&u&状态数有限&/u&和&u&不存在随机性&/u&,象棋和五子棋这类游戏&b&理论上&/b&可以由终局自底向上的推算出每一个局面的胜负情况,从而得到最优策略。例如五子棋就被验证为先手必胜 &a href=&///?target=https%3A//zh.wikipedia.org/wiki/%25E4%25BA%%25AD%%25A3%258B%23.E6.95.B0.E5.AD.A6.E5.88.86.E6.9E.90& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[3]&i class=&icon-external&&&/i&&/a& 。&br&&br&遗憾的是,由于大部分博弈游戏状态空间巨大(围棋约为&img src=&///equation?tex=2%5Ctimes+10%5E%7B170%7D& alt=&2\times 10^{170}& eeimg=&1&&),&b&严格计算评估函数是办不到的&/b&。于是人们设计了&b& (启发式的) 搜索算法&/b&,一句话概括如下:&br&&blockquote&由当前局面开始,尝试&u&看起来可靠的行动&/u&,达到终局或一定步数后停止,根据后续&u&局面的优劣&/u&反馈,选择最优行动。通俗的说就是“手下一着子,心想三步棋”、“三思而后行”的意思。&/blockquote&&img src=&/9de1cc29e72_b.png& data-rawwidth=&1977& data-rawheight=&699& class=&origin_image zh-lightbox-thumb& width=&1977& data-original=&/9de1cc29e72_r.png&&&br&&b&二、哪些是“看起来可靠”的行动?怎么评价局面的优劣?&/b&&br&-------&br&这里就要引入游戏论和强化学习里面的概念了。在数学上,“最优策略”和“局面判断”可以被量化成为函数&img src=&///equation?tex=Q%5Cleft%28+s%2C+a+%5Cright%29+& alt=&Q\left( s, a \right) & eeimg=&1&&,&img src=&///equation?tex=V%28s%29& alt=&V(s)& eeimg=&1&&。这里&img src=&///equation?tex=s& alt=&s& eeimg=&1&&表示局面状态,&img src=&///equation?tex=a& alt=&a& eeimg=&1&&表示下一步(走子)行动。在强化学习里,两者被称为 策略函数(policy function) 和 局面函数(value function),前者衡量在局面&img src=&///equation?tex=s& alt=&s& eeimg=&1&&下执行&img src=&///equation?tex=a& alt=&a& eeimg=&1&&能带来的价值,后者衡量某一局面&img src=&///equation?tex=s& alt=&s& eeimg=&1&&的价值,越大的值表示对当前行动的选手越有利。&br&&br&&b&Q和V函数是对我们所谓的“棋感”和“大局观”的量化&/b&。有了这两个估值函数,在搜索的时候我们尽量选择估值更大的行动,达到缩小思考范围(减少搜索分支)的目的。同时即使在未达到终局的情况下,我们也可以依靠局面函数对当前局势优劣做判断。&br&&br&&b&那么如何得到精确的估值函数就很重要了。&/b&由于不能通过枚举状态空间来精确计算Q和V,传统的做法是人为的设计估值。例如五子棋的局面可以依靠计算“三连”、“四连”等特征的数量乘以相应的分值来估算。这里就涉及到识别特征和衡量特征分值两个问题。对于更加复杂的游戏(例如文明、围棋等),现代的做法是利用机器学习和大量数据,&b&自动的找到特征,同时拟合出估值函数。&/b&AlphaGo利用深度学习达到了该目的。&br&&br&&br&&b&三、蒙特卡洛树搜索(MCTS)&/b&&br&-------&br&蒙特卡洛树搜索是集以上技术于一身的搜索框架,通过反复模拟和采样对局过程(称为&b&Rollout&/b&)来探索状态空间。可以看出它的特点是&b&&u&非常容易并行&/u&&/b&、可任何时候停止(时间和收益上的平衡)、引入了&u&&b&随机性采样&/b&&/u&而减小估值错误带来的负面影响,并且可以在随机探索的过程中,结合强化学习(Reinforcement Learning),&u&&b&“自学”式的调整估值函数&/b&&/u&,让算法越来越聪明。直观一点的图示如下:&br&&br&(a) 从当前状态(带有随机性)的模拟对局,该过程可以并行:&br&&img src=&/0f919c987b885ecc9bc30c3bacf7bfcd_b.png& data-rawwidth=&1924& data-rawheight=&1126& class=&origin_image zh-lightbox-thumb& width=&1924& data-original=&/0f919c987b885ecc9bc30c3bacf7bfcd_r.png&&&br&(b) 通过采样和估值结果,选择最优行动,并重复执行这个过程:&br&&img src=&/fbc08a8e1cbf_b.png& data-rawwidth=&2078& data-rawheight=&1264& class=&origin_image zh-lightbox-thumb& width=&2078& data-original=&/fbc08a8e1cbf_r.png&&(c) 如果选择强化学习,则根据结果更新估值函数的参数&br&
有兴趣的同学可以阅读AlphaGo或其他相关论文。&br&&br&&b&四、总结&/b&&br&-------&br&&br&AlphaGo结合了3大块技术:先进的搜索算法、机器学习算法(即强化学习),以及深度神经网络。这三者的关系大致可以理解为:&br&&ul&&li&蒙特卡洛树搜索 (MCTS) 是&u&大框架&/u&,是许多牛逼博弈AI都会采用的算法&/li&&li&强化学习 (RL) 是&u&学习方法&/u&,用来提升AI的实力&/li&&li&深度神经网络 (DNN) 是&u&工具&/u&,用来拟合&u&局面评估函数&/u&和&u&策略函数&/u&&/li&&/ul&这些都不是AlphaGo或者DeepMind团队首创的技术。但是强大的团队将这些结合在一起,配合Google公司强大的计算资源,成就了历史性的飞跃。&br&&br&一些个人见解:MCTS 、RL 和 DNN这三者,前两者让具有自学能力、并行的博弈算法成为可能,后者让“量化评估围棋局面”成为了可能(这个&a data-hash=&be0d3bb133ad0151eefd188& href=&///people/be0d3bb133ad0151eefd188& class=&member_mention& data-editable=&true& data-title=&@田渊栋& data-tip=&p$b$be0d3bb133ad0151eefd188& data-hovercard=&p$b$be0d3bb133ad0151eefd188&&@田渊栋&/a&大神的&a href=&/question//answer/& class=&internal&&帖子&/a&里已经解释了)。&br&&br&对于AlphaGo来说,这每一个模块都是必要的,DeepMind论文中已经展示了各个模块对于棋力的影响:&br&&img src=&/2c455a887f8ef247cf7e_b.png& data-rawwidth=&344& data-rawheight=&415& class=&content_image& width=&344&&&br&&br&&br&&b&五、RL / MCTS 的其他应用&/b&&br&-------&br&除了最开始提到的《文明2》游戏和围棋,MCTS和RL还可以应用到各种博弈、游戏场景下。因为评论里有不少讨论,这里增加几个有意思的干货:&br&&ul&&li&&u&Flappy Bird&/u&:不知道大家还记不记得这个曾近很火的让人抓狂的游戏,有人利用强化学习让AI 从0 进化到了100多分: &a href=&///?target=http%3A//sarvagyavaish.github.io/FlappyBirdRL/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Flappy Bird RL by SarvagyaVaish&i class=&icon-external&&&/i&&/a&&/li&&br&&li&&u&星际母巢之战AI&/u&:&a href=&///?target=http%3A//overmind.cs.berkeley.edu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Berkeley Overmind&i class=&icon-external&&&/i&&/a&,曾经得过AI比赛冠军。飞龙甩得飞起 (主页有youtube视频,需翻墙)&a href=&///?target=http%3A//nlp.cs.berkeley.edu/pubs/Burkett-Hall-Klein_2011_IMBA_paper.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[4]&i class=&icon-external&&&/i&&/a&&/li&&br&&li&&u&红白机游戏&/u&:DeepMind在围棋之前利用RL和DNN玩红白机小游戏,同样在《自然》杂志上发表 &a href=&///?target=http%3A///nature/journal/v518/n7540/full/nature14236.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[5]&i class=&icon-external&&&/i&&/a&。&a href=&///?target=https%3A///kuz/DeepMind-Atari-Deep-Q-Learner& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub主页&i class=&icon-external&&&/i&&/a&&/li&&/ul&&br&&b&其他小八卦&/b&&br&&ul&&li&作为论文第一作者的David Silver,整个Phd都投身在了蒙特卡罗搜索、计算机围棋和强化学习的领域。十年磨一剑。AlphaGo的成功离不开团队和个人兢兢业业的努力。&br&&/li&&li&据说DeepMind CEO Hassabis 和 David是一对大学时期的好基友?David也是因为Hassabis教他围棋而入了这个坑..(?)&/li&&/ul&&br&&br&&b&参考文献&/b&&br&-------&br&[1] &a href=&///?target=http%3A//groups.csail.mit.edu/rbg/code/civ/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Learning to Win by Reading Manuals in a Monte-Carlo Framework&i class=&icon-external&&&/i&&/a&&br&[2] &a href=&///?target=http%3A//www.jair.org/media/3484/live--jair.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&jair.org/media/3484/liv&/span&&span class=&invisible&&e--jair.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&[3] &a href=&///?target=https%3A//zh.wikipedia.org/wiki/%25E4%25BA%%25AD%%25A3%258B%23.E6.95.B0.E5.AD.A6.E5.88.86.E6.9E.90& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&wikipedia.org 的页面&i class=&icon-external&&&/i&&/a&&br&[4] &a href=&///?target=http%3A//nlp.cs.berkeley.edu/pubs/Burkett-Hall-Klein_2011_IMBA_paper.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&nlp.cs.berkeley.edu/pub&/span&&span class=&invisible&&s/Burkett-Hall-Klein_2011_IMBA_paper.pdf&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&&br&[5] &a href=&///?target=http%3A///nature/journal/v518/n7540/full/nature14236.html& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/nature/journ&/span&&span class=&invisible&&al/v518/n7540/full/nature14236.html&/span&&span class=&ellipsis&&&/span&&i class=&icon-external&&&/i&&/a&
我来贡献一点干货和八卦~ AlphaGo的第一作者David Silver还在MIT做post-doc的时候(也有可能是visit?),曾经和我们组师兄合作利用机器学习和蒙特卡罗树搜索玩《文明2》。当时也有不小的轰动: 有兴趣的同学可以参考项目主页和论文 。可以翻墙youtube的…
&p&谢邀。&/p&&p&针对这个问题,我们邀请了微软亚洲研究院&b&机器学习组&/b&的主管研究员秦涛博士与大家分享他的观点。&/p&&img src=&/v2-c314c816ca881c91efcb3344_b.png& data-rawwidth=&283& data-rawheight=&283& class=&content_image& width=&283&&&p&&b&微软亚洲研究院机器学习组&/b&包含机器学习的各个主要方向,在理论、算法、应用等不同层面推动机器学习领域的学术前沿。该组目前的研究重点为深度学习、增强学习、分布式机器学习和图学习。其研究课题还包括排序学习、计算广告和云定价。在过去的十几年间,该组在顶级国际会议和期刊上发表了大量高质量论文,帮助微软的产品部门解决了很多复杂问题,并向开源社区贡献了&a href=&///?target=https%3A//mp./s%3F__biz%3DMzAwMTA3MzM4Nw%3D%3D%26mid%3Didx%3D1%26sn%3Def1ba087cf42db81f0a0de%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微软分布式机器学习工具包(DMTK)&i class=&icon-external&&&/i&&/a&和&a href=&///?target=http%3A//mp./s%3F__biz%3DMzAwMTA3MzM4Nw%3D%3D%26mid%3D%26idx%3D1%26sn%3Dee9d6ee5fabf1%26chksm%3D82c0a988b5bd86ca2b7ce2cb7c895dadd6173c7bdfffbb14f%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&微软图引擎(Graph Engine)&i class=&icon-external&&&/i&&/a&,LightLDA、&a href=&///?target=http%3A//mp./s%3F__biz%3DMzAwMTA3MzM4Nw%3D%3D%26mid%3D%26idx%3D1%26sn%3D615217bcdb0b642ebadc96%26chksm%3D82c0d6adb5b75fbbd8c4eef92aabd297f7d2f1e4b0dd86a65a3d8be6%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&LightGBM等&i class=&icon-external&&&/i&&/a&,并受到广泛关注。该组正在招贤纳士,诚邀各路英雄好汉加盟,共同逐鹿AI天下。&a href=&///?target=https%3A///en-us/research/people/tyliu/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&联系我们。&i class=&icon-external&&&/i&&/a&&/p&&br&&p&————这里是正式回答的分割线————&/p&&br&&p&要回答这个问题,先要从&b&人工智能近年的进展&/b&开始说起。&/p&&p&从1956年达特茅斯会议上人工智能的诞生开始,到如今人工智能已经发展了61年,这期间人工智能历经风雨,经历了数次高潮也有数次低谷,每次高潮都是因为核心技术的提出引起了人们极大的兴趣,吸引了大量的资金的投入。但同时由于大家的期望值远远超过了技术所能够达到的高度,因此当人们发现巨大的资金和人才的投入不能达到预期成果的时候,人工智能的冬天也随之而来。幸运的是,现在我们正处于人工智能的第三次浪潮,并且目前看来,距离下一个冬天还是挺远的。从媒体的报道,大家可能都能了解到,人工智能在各个方向都取得了非常大的进展,不管是研究上、实践上,还是应用上。下面我们简单回顾一下人工智能近年来在各个方向取得的进展。&/p&&p&早在2012年,微软就在“21世纪的计算”大会上展示了一个同声传译的系统,这个系统其实相当复杂:当微软研究院创始人Rick Rashid用英文演讲的时候,这个系统首先需要将英文的语音识别成英文的文本,然后通过一个翻译系统把英文翻译成中文,然后再把中文文本合成成为中文的语音。整个复杂的过程都是通过深度学习的技术来支撑的。&/p&&p&在2015年底,发生了一件对计算机视觉领域而言非常重要的事情,就是微软亚洲研究院的研究员提出了一个新的基于CNN的深度模型叫做残差网络,这个残差网络深度高达152层,取得了当时图象识别比赛上面最好的成绩。到现在为止,深度残差网络在计算机视觉的研究中被广泛使用,并且被集成到微软还有其他大公司的产品中。&/p&&p&再到后来,2016年初,可能大家都知道,AlphaGo这个系统打败了围棋世界冠军李世石,这非常出乎人们的预料,特别是AI专家的预料,因为大家普遍认为,机器要在围棋上战胜人类可能还需要20年。在2016年下半年,微软宣布了另外一项AI上的进展,就是在日常对话的语音识别中,微软的技术已经达到了人类的水平,这也是非常了不起的,因为如果大家关注一下我们日常的讲话,就会发现,其中有很多停顿,并且带一些语气词,与朗诵或者新闻播音相差很大,这种日常对话识别要达到人类的水平是很不容易的。&/p&&p&从以上的简单回顾可以看出,&b&人工智能的第三波浪潮和深度学习是分不开的。&/b&深度学习里最经典的模型是全连接的神经网络,就是每相临的两层之间节点之间是通过边全连接;再就是卷积神经网络,这个在计算机视觉里面用得非常多;再就是循环神经网络RNN,这个在对系列进行建模,例如自然语言处理或者语音信号里面用得很多,这些都是非常成功的深度神经网络的模型。还有一个非常重要的技术就是深度强化学习技术,这是深度学习和强化学习的结合,也是AlphaGo系统所采用的技术。&/p&&p&深度学习的成功主要归功于三大因素——&b&大数据、大模型、大计算&/b&。现在可以利用的数据特别是人工标注的数据非常多,使得我们能够从数据中学到以前没法学习的东西。另外技术上的发展使得训练大模型成为了可能,例如上千层的深度神经网络,这个在四年以前都觉得不能想象的事情,现在都已经发展成为现实,并且在产品中都有了很广泛的使用。再就是大计算,从CPU到GPU,可获取的计算资源越来越丰富。&/p&&p&大数据、大模型、大计算是深度学习的三大支柱,因此这三个方向都是当前研究的热点,例如如何从更多更大的数据里面进行学习,如何训练更大更深的模型。非常深的模型,当前更成功的例子是在计算机视觉里面,但如何把这种更深的模型引入到自然语言处理里面,还需要研究,例如当前几个大公司的神经机器翻译模型,都是利用较深的RNN,但是还是远远达不到残差网络的深度。从大计算这个方面来讲,整个演变过程是从CPU到GPU到FPGA,再发展到现在有些公司定制自己专有芯片,国内的有一些创业公司,也都在做一些AI芯片,专门为AI来设计一些硬件。大计算另外一个角度就是深度学习的平台和系统,这个可以说是各大AI或者是互联网公司的着重发力的地方,例如微软的CNTK、DMTK,再比如TensorFlow、Torch,以及学术界的开源平台包括Theano、Caffe、MxNet等等。可以预计,在短期内,各大公司还会在这个领域做非常激烈的竞争,希望能够吸引第三方公司使用他们的平台和系统。&/p&&br&&p&&b&俗话说成也萧何败也萧何,大数据、大模型、大计算是深度学习成功的三大支柱因素,但他们同时也为深度学习的进一步发展和普及带来了一些制约因素。接下来,我会为大家介绍目前深度学习的五大挑战及其解决方案。&/b&&/p&&br&&p&&b&挑战1:标注数据代价昂贵&/b&&/p&&p&&b&前沿1:从无标注的数据里学习&/b&&/p&&p&大家都知道,深度学习训练一个模型需要很多的人工标注的数据。例如在图象识别里面,经常我们可能需要上百万的人工标注的数据,在语音识别里面,我们可能需要成千上万小时的人工标注的数据,机器翻译更是需要数千万的双语句对做训练,在围棋里面DeepMind当初训练这个模型也用了数千万围棋高手走子的记录,这些都是大数据的体现。&/p&&p&但是,很多时候找专家来标注数据是非常昂贵的,并且对一些应用而言,很难找到大规模的标注的数据,例如一些疑难杂症,或者是一些比较稀有的应用场景。这里我们做一个粗略的分析,看看标注数据的代价有多高。比如说对机器翻译而言,现在如果我们请人工来翻译,一个单词的费用差不多是5—10美分之间,一个句子平均长度差不多是30个单词,如果我们需要标注一千万个双语句对,也就是我们需要找专家翻译一千万句话,这个标注的费用差不多是2200万美元。&/p&&p&大家可以看到数据标注的费用是非常非常高的,让一个创业公司或者一些刚刚涉足人工智能的公司拿这么大一笔资金来标注数据是很难或者是不太可行的。因此当前深度学习的一个前沿就是如何从无标注的数据里面进行学习。现在已经有相关的研究工作,包括最近比较火的生成式对抗网络,以及我们自己提出的对偶学习。&/p&&img src=&/v2-5ab02d4c6bcff9_b.png& data-rawwidth=&703& data-rawheight=&346& class=&origin_image zh-lightbox-thumb& width=&703& data-original=&/v2-5ab02d4c6bcff9_r.png&&&p&生成式对抗网络的主要目的是学到一个生成模型,这样它可以生成很多图像,这种图像看起来就像真实的自然图像一样。它解决这个问题的思路跟以前的方法不太一样,它是同时学习两个神经网络:一个神经网络生成图像,另外一个神经网络给图像进行分类,区分真实的图像和生成的图像。在生成式对抗网络里面,第一个神经网络也就是生成式神经网络,它的目的是希望生成的图像非常像自然界的真实图像,这样的话,那后面的第二个网络,也就是那个分类器没办法区分真实世界的图像和生成的图像;而第二个神经网络,也就是分类器,它的目的是希望能够正确的把生成的图像也就是假的图像和真实的自然界图像能够区分开。大家可以看到,这两个神经网络的目的其实是不一样的,他们一起进行训练,就可以得到一个很好的生成式神经网络。生成式对抗网络最初提出的时候,主要是对于图像的生成,现在很多人把他应用到各个不同的问题上,包括自然语言理解,比如说最近我们有一个工作,就是把这种思想应用到机器翻译里面,能够很大幅度的提高机器翻译的准确度。&/p&&p&针对如何从无标注的数据进行学习,我们组里面提出了一个新思路,叫做对偶学习。对偶学习的思路和前面生成式对抗学习会非常不一样。对偶学习的提出是受到一个现象的启发:我们发现很多人工智能的任务在结构上有对偶属性。比如说在机器翻译里面,我们把中文翻译成英文,这是一个任务,但是我们同样也需要把英文翻译成中文,这是一个对偶的任务。这种原任务和对偶任务之间,他们的输入和输出正好是反着来的。在语音处理里面,语音识别是把语音转化成文字,语音合成是把文字转化成语音,也是互为对偶的两个任务。在图像理解里面,看图说话,也就是给一张图生成一句描述性的语句,它的对偶任务是给一句话生成一张图,这两个任务一个是从图像到文本,另外一个是从文本到图像。在对话系统里面,回答问题和问题生成也是互为对偶的两个问题,前者是给定问题生成答案,后者是给定答案生成问题。在搜索引擎里面,给定检索词返回相关文档和给定文档或者广告返回关键词也是互为对偶的问题:搜索引擎最主要的任务是针对用户提交的检索词匹配一些文档,返回最相关的文档;当广告商提交一个广告之后,广告平台需要给他推荐一些关健词使得他的广告在用户搜索这些词能够展现出来被用户点击。&/p&&img src=&/v2-ee_b.jpg& data-rawwidth=&759& data-rawheight=&381& class=&origin_image zh-lightbox-thumb& width=&759& data-original=&/v2-ee_r.jpg&&&p&对偶学习试图把这种结构的对偶属性应用在机器学习里。其基本思想比较简单,我们以机器翻译为例子来说明。我们想把一个中文句子翻译成英文,我们可以先用一个中文到英文的翻译模型,把这个句子翻译成英文的句子,因为我们没有英文的标注,所以不知道这个英文的翻译是好还是坏以及有多好多坏。我们再利用从英文到中文的翻译模型,把这个英文的句子翻译成中文的句子,这样一来,我们就得到了一个新的中文句子。整个过程包含了正向翻译和反向翻译互为对偶的两个步骤。然后我们比较原始中文的句子和后来得到的中文句子,如果两个翻译模型都很好的话,这两个中文的句子应该比较相似,如果两个模型不好或者有一个模型不好的话,得到的两个中文句子就不相似。因此我们可以通过这种对偶过程从无标注的数据获得反馈信息,知道我们的模型工作的好还是不好,进而根据这些反馈信息来训练更新正向反向模型,从而达到从无标注数据学习的目的。&/p&&p&我们在机器翻译里面做了一些实验,发现通过对偶学习的过程,我们只需要用10%标注的数据(大概100万英法双语句对),再加上很多没有标注的数据,达到用100%标注数据(1200万英法双语句对)训练的模型的准确度。大家回想一下,我们前面有个粗略的估计,一千万个训练语料标注的费用差不多2200万美元,如果我们能把标注的人工费用从2200万美元降到200万美元,这会是一个非常好的结果,能够大大降低公司运营成本提高运营效率。&/p&&p&最近我们在对偶学习的研究上有一些新的进展,把对偶学习这种基本思想应用到其他的问题里面,像图像分类、图像生成,以及对自然语言的情感分析。我们发现这种结构的对偶属性可以从不同角度帮助机器学习,提高学习算法的准确度。&/p&&p&从无标注的数据进行学习,我们预计在未来三到五年还是非常重要的一个问题,并且对我们实际的应用也会有很大的帮助。很多问题以前是因为受限于没有标注的数据,没有办法用深度学习技术,如果我们能够从无标注的数据进行学习,那么很多应用很多问题里面都可以应用深度学习技术。&/p&&br&&p&&b&挑战2:大模型不方便在移动设备上使用&/b&&/p&&p&&b&前沿2:降低模型大小&/b&&/p&&p&现在常见的模型,像图像分类里面,微软设计的深度残差网络,模型大小差不多都在500M以上。自然语言处理的一些模型,例如语言模型(language modeling)随着词表的增长而变大,可以有几G、几十G的大小,机器翻译的模型也都是500兆以上。当然500M的大小大家可能觉得没有多大,一个CPU服务器很容易就把这个模型给load进去使用。但是大家要注意到,很多时候深度学习的模型需要在一些移动设备上使用。比如说手机输入法,还有各种对图像做变换做处理做艺术效果的app,如果使用深度学习的话效果会非常好,但是这种模型由于它们的size太大,就不太适合在手机上应用。大家可以设想一下,如果一个手机的app需要加载一个500M甚至1G以上的模型恐怕不太容易被用户接受。&/p&&p&因此当前深度学习面临的第二个挑战就是如何把大模型变成小模型,这样可以在各种移动设备上使用。因为移动设备不仅仅是内存或者存储空间的限制,更多是因为能耗的限制,不允许我们用太大的模型。近两年来,有一些相应的工作,今天我主要介绍两种:第一种是针对计算机视觉里面的CNN模型,也就是卷积神经网络,做模型压缩;第二种是我们去年做的,针对一些序列模型或者类似自然语言处理的RNN模型如何做一个更巧妙的算法,使得它模型变小,并且同时精度没有损失。&/p&&ul&&li&&b&通过模型压缩的技术缩减模型的大小&/b&&/li&&/ul&&p&对卷积神经网络而言,近一两年有一些项目,主要是采用模型压缩的技术缩减模型的大小。模型压缩的技术,可以分为四类:&/p&&img src=&/v2-cd935aed80a9_b.jpg& data-rawwidth=&790& data-rawheight=&390& class=&origin_image zh-lightbox-thumb& width=&790& data-original=&/v2-cd935aed80a9_r.jpg&&&p&一个是叫&b&剪枝&/b&,大家知道,神经网络主要是由一层一层的节点通过边连接,每个边上有些权重。剪枝的意思很简单,如果我们发现某些边上的权重很小,这样的边可能不重要,这些边就可以去掉。我们在把大模型训练完之后,看看哪些边的权重比较小,把这些边去掉,然后在保留的边上重新训练模型;&/p&&p&模型压缩的另外一种做法就是通过&b&权值共享&/b&。假设相邻两层之间是全连接,每层有一千个节点,那么这两层之间有一千乘一千也就是一百万个权值(参数)。我们可以对一百万个权值做个聚类,看看哪些权值很接近,我们可以用每个类的均值来代替这些属于这一类的权值,这样很多边(如果他们聚在同一类)共享相同的权值。如果我们把一百万个数聚成一千类,就可以把参数的个数从一百万降到一千个,这也是一个非常重要的一个压缩模型大小的技术。&/p&&p&还有一个技术可以认为是权值共享的更进一步,叫&b&量化&/b&。深度神经网络模型的参数都是用的浮点型的数表达,32bit长度的浮点型数。实际上没必要保留那么高的精度,我们可以通过量化,比如说就用0到255表达原来32个bit所表达的精度,通过牺牲精度来降低每一个权值所需要占用的空间。&/p&&p&这种量化的更极致的做法就是第四类的技术,叫&b&二制神经网络&/b&。所谓二制神经网络,就是所有的权值不用浮点数表达了,就是一个二进制的数,要么是+1要么是-1,用二进制的方式来表达,这样原来一个32 bit权值现在只需要一个bit来表达,从而大大降低这个模型的尺寸。&/p&&img src=&/v2-8c079c64a528_b.png& data-rawwidth=&865& data-rawheight=&389& class=&origin_image zh-lightbox-thumb& width=&865& data-original=&/v2-8c079c64a528_r.png&&&p&上面这张图显示了多种模型压缩的技术在不同卷积神经网络上的结果。我们可以看到,随着原始网络大小的不同,得到的压缩比是不一样的,特别是VGGNet,一个非常重要的卷积神经网络,能够把大小从原来的550M压缩到11M,并且让人惊奇的是,压缩后分类的准确率没有下降,反而略微有一点提高,这是非常了不起的。&/p&&ul&&li&&b&通过设计更精巧的算法来降低模型大小&/b&&/li&&/ul&&p&下面简单提一下我们组是如何对一些序列模型进行压缩,也就是对循环神经网络RNN做压缩,我们提了一种新的循环神经网络叫做LightRNN,它不是通过模型压缩的方式降低模型的大小,而是通过设计一种更精巧的算法来达到降低模型大小。&/p&&p&自然语言相关的应用中,模型之所以大,是因为我们需要把每一个词要做词嵌入(word embedding),把每一个单词表达成向量空间的一个向量。词嵌入的基本思想是,语义相似或相近的词在向量空间里面的向量也比较接近,这样就可以通过向量空间表达词之间的语义信息或者是相似性。因为通常我们的词表会很大,比如说在输入法里面,可能词表需要说上百万。如果我们词表有上百万的词,每个词如果是用一千维的一个向量来表达,这个大小就是差不多是一百万乘以一千再乘以4 Byte(用32位的浮点数来表达),词嵌入向量的总体大小差不多就有4G左右,所以整个RNN模型是非常大的。搜索引擎的词表有上千万的词,仅仅词嵌入向量这部分大小就有40G左右,考虑到输入的词嵌入和输出的词嵌入,整个词嵌入的大小有80G左右了,这么大的模型很难加载到GPU上训练模型和使用,更不用说放在移动设备上使用。&/p&&img src=&/v2-c74b119e9bf_b.png& data-rawwidth=&865& data-rawheight=&487& class=&origin_image zh-lightbox-thumb& width=&865& data-original=&/v2-c74b119e9bf_r.png&&&p&我们的算法的基本思想是:不是用一个向量来表达一个词,而是用两个向量表达一个词,一个行向量+一个列向量,不同的词之间共享行或列向量。我们用一个二维的表格来表达整个词表,假设这个二维的表格有一千行一千列,这个表格可以表达一百万个词;这个表格的每一行有一个行向量,每一列有一个列向量,这样整个二维表格只需要两千个向量。如果一个词(January)在第一行第一列的话,它就由行向量X1和列向量Y1来联合表达。考虑一个有一百万个词的词表,原来需要一百万个嵌入向量,通过这样一个二维或者是两个component的表格词嵌入,现在我们只需要一千个行向量和一千个列向量来进行表达,这样大大降低词嵌入向量模型的大小。&/p&&p&我们在很多公共的数据集上做测试,结果表明我们提出的LightRNN算法极大的减小了模型的尺寸,可以把原来语言模型的大小从4G降到40M左右,当这个模型只有40兆的时候,很容易使得我们在移动设备或者是GPU上使用。我们的方法使得深度模型在各种能耗比较低或者内存比较小的设备上的使用成为了可能。并且我们还发现,通过这样一种共享的二维词表的嵌入,我们得到的循环神经网络模型的精度并没有受到很大的影响,实际上LightRNN的精度反而略微有上升,和前面的卷积神经网络压缩的结果比较类似。&/p&&br&&p&&b&挑战3:大计算需要昂贵的物质、时间成本&/b&&/p&&p&&b&前沿3:全新的硬件设计、算法设计、系统设计&/b&&/p&&p&大计算说起来容易,其实做起来非常不容易,非常不简单。我们微软亚洲研究院研究员提出深度残差网络,这种网络如果在ImageNet这样一个上百万的数据上进行训练的话,用四块现在最先进的GPU卡K80学习训练时间大概要三周。最近百度做的神经机器翻译系统,他们用了32块K40的GPU用了十天做训练,谷歌的机器翻译系统用了更多,用了96块K80的GPU训练了六天。大家可能都知道AlphaGo, 它也需要非常大量的计算资源。AlphaGo的模型包含一个策略神经网络,还有一个值网络,这两个都是卷积神经网络。它的策略网络用了50块GPU做训练,训练了3个周,值网络也是用了50块GPU,训练了一周,因此它整个的训练过程用了50块CPU四周时间,差不多一个月。大家可以想一想,如果训练一个模型就要等一个月,并且我们经常要调各种超参数,一组超参数得到的结果不好,换另外一组超参数,可能要尝试很多组超参数,如果我们没有大量的计算资源,一等就是一个月,这从产品的更新换代还有技术创新的角度而言,都不能接受。刚才说了只是AlphaGo训练的复杂度,其实它的测试,比如说比赛的时候,复杂度也非常高, AlphaGo的单机版和人下棋的时候,每次下棋需要用48块CPU 8块GPU,它的分布式版本就用的更多,每次需要用1200块CPU再加上176块GPU。大家可以想一想,地球上有几个公司能承受这么高昂的代价来做深度学习。&/p&&p&因此我们认为,深度学习所面临的第三个挑战是如何设计一些更高级的算法,更快的算法,更有效的算法。手段可能是通过一些全新的硬件设计或者是全新的算法设计,或者是全新的系统设计,使得这种训练能够大大的加速。如果我们还是这种训练动不动就要几十块GPU或者几百块GPU,要等几个星期或者是几个月的话,对工业界和学术界而言都不是好事,我们需要更快速更有效的训练方法。&/p&&br&&p&&b&挑战4:如何像人一样从小样本进行有效学习?&/b&&/p&&p&&b&前沿4:数据+知识,深度学习与知识图谱、逻辑推理、符号学习相结合&/b&&/p&&p&现在的深度学习主要是从大数据进行学习,就是我给你很多标注的数据,使用深度学习算法学习得到一些模型。这种学习方式和人的智能是非常不一样的,人往往是从小样本进行学习。人对图像进行分类,如果人想知道一个图像是不是苹果,只需要很少几个样本就可以做到准确分类。两三岁小孩,开始认识世界的时候,他如果想知道什么样的动物是狗,我们给他看几张狗的图片,并且告诉他狗有什么特征,和其他动物像猫或者羊有什么区别的话,小孩可以很快很准确的识别狗。但是在ImageNet比赛里,像深度残差神经网络,一般来说一个类别大概需要上千张图片才能进行比较充分的训练,得到比较准确的结果。还有一个例子就是汽车驾驶,一般来说,通过在驾校的培训,也就是几十个小时的学习,几百公里的练习,大多数人就可以开车上路了,但是像现在的无人车可能已经行驶了上百万公里,还是达不到人的全自动驾驶的水平。原因在于,人经过有限的训练,结合规则和知识能够应付各种复杂的路况,但是当前的AI还没有逻辑思考、联想和推理的能力,必须靠大数据来覆盖各种可能的路况,但是各种可能的路况几乎是无穷的。&/p&&p&前面提到的小孩子认识世界的过程,很多时候,大人可以把一些经验或者是知识传授给他们,比如说苹果是圆形的,有红色的或者青的苹果,狗和猫的区别在什么地方。这种知识很容易通过语言进行传授,但是对于一个AI或者对于一个深度学习算法而言,如何把这种知识转化成实际模型的一部分,怎么把数据和知识结合起来,提高模型的训练的速度或者是识别的精度,这是一个很复杂的问题。&/p&&p&现在我们组有同事正在做这方面的尝试和努力,我们希望把深度学习、知识图谱、逻辑推理、符号学习等等结合起来,希望能够进一步推动人工智能的发展,使人工智能更接近人的智能。&/p&&img src=&/v2-eac83b9a101a1cd7189a0_b.png& data-rawwidth=&865& data-rawheight=&419& class=&origin_image zh-lightbox-thumb& width=&865& data-original=&/v2-eac83b9a101a1cd7189a0_r.png&&&p&今年的人工智能国际顶级会议AAAI 2017的最佳论文奖,颁给了一个利用物理或者是一些领域的专业知识来帮助深度神经网络做无标注数据学习的项目。论文里的具体例子是上面这张图里面一个人扔枕头的过程,论文想解决的问题是从视频里检测这个枕头,并且跟踪这个枕头的运动轨迹。如果我们没有一些领域的知识,就需要大量的人工标注的数据,比如说把枕头标注出来,每帧图像的哪块区域是枕头,它的轨迹是什么样子的。实际上因为我们知道,枕头的运动轨迹应该是抛物线,二次型,结合这种物理知识,我们就不需要标注的数据,能够把这个枕头给检测出来,并且把它的轨迹准确的预测出来。这篇论文之所以获得了最佳论文奖,也是因为它把知识和数据结合起来,实现了从无标注数据进行学习的可能。&/p&&br&&p&&b&挑战5:如何从认知性的任务扩展到决策性任务?&/b&&/p&&p&&b&前沿5:博弈机器学习&/b&&/p&&p&人的智能包含了很多方面,最基本的阶段是认知性智能,也就是对整个世界的认知。我们看到一幅图能知道里面有什么,我们听到一句话知道在说文字。现在对于图象识别、语音识别,AI已经差不多能达到人类的水平,当然可能是在某些特定的约束条件下,能够达到人类的水平。但是其实这种认知性的任务,对人类而言都是非常简单的,比如说一个三五岁的小孩子已经能做得很好了,现在AI所能做的这种事情或者能达到的水平,人其实也很容易做到,只是AI可能在速度上更快,并且规模上去之后成本更低,并且24小时都不需要休息。更有挑战的问题是,人工智能能不能做一些人类做不了或者是很难做好的事情。&/p&&p&像图象识别、语音识别这类认知性的任务,AI之所以做得好,是因为这些任务是静态的,所谓静态就是给定输入,预测结果不会随着时间改变。但是决策性问题,往往和环境有很复杂的交互,在某些场景里面,如何做最优决策,这些最优决策往往是动态的,会随着时间改变。&/p&&p&现在有人尝试把AI用到金融市场,例如如何用AI技术来分析股票,预测股票涨跌,对股票交易给出建议,甚至是代替人来进行股票交易,这类问题就是动态决策性问题。同样一支股票同样的价格,在一周前可能是值得买入,但是一周之后可能就要卖出了,同样一个事件或者是政治新闻比如说是在总统大选之前发生还是之后发生,对股票市场的影响也完全不一样。所以决策问题的一个难点就在于时变性。&/p&&p&决策性问题的第二个难点在于各种因素相互影响,牵一发而动全身。一支股票的涨跌会对其他股票产生影响,一个人的投资决策,特别是大的机构的投资决策,可能会对整个市场产生影响,这就和静态的认知性任务不一样的。在静态认知性任务我们的预测结果不会对问题(例如其他的图像或者语音)产生任何影响,但是在股票市场,任何一个决定,特别是大的机构的投资策略会对整个市场产生影响,对别的投资者产生影响,对将来会产生影响。无人驾驶某种程度上也是比较类似的,一辆无人车在路上怎么行驶,是由环境和很多车辆共同决定的,当我们通过AI来控制一辆车的时候,我们需要关注周围的车辆,因为我们要考虑到周围的车辆对于当前这个无人车的影响,以及我们无人车(如左转右转或者并线)对周围车辆的影响。&/p&&p&当前深度学习已经在静态任务里面取得了很大的成功,如何把这种成功延续和扩展到这种复杂的动态决策问题中,也是当前一个深度学习的挑战之一。我们认为,一个可能的思路是博弈机器学习。在博弈机器学习里,通过观察环境和其他个体的行为,对每个个体构建不同的个性化行为模型,AI就可以三思而后行,选择一个最优策略,该策略会自适应环境的变化和其他个体的行为的改变。&/p&&br&&p&最后,我们做一个简单的总结,在我们看来,当前深度学习的前沿(也是面临的挑战)有以下几个方面,&b&一个是如何从大量的无标注的数据进行学习,二是如何得到一些比较小的模型使得深度学习技术能够在移动设备和各种场所里面得到更广泛的应用,三是如何设计更快更高效的深度学习算法,四是如何把数据和知识结合起来,五是如何把深度学习的成功从一些静态的任务扩展到复杂的动态决策性任务上去。&/b&实际上深度学习还有其他一些前沿研究方向,例如如何自主学习(自主学习超参数、网络结构等)以及如何实现通用人工智能等等,限于时间,不能一一介绍。感兴趣的知友们可以自行查阅相关论文。&/p&&br&&p&————更新的分割线————&/p&&br&&p&&b& 21:23更新&/b&&/p&&p&看到知友@ &a href=&/people/marisa.moe& class=&internal&&雾雨魔理沙&/a&
的提问“ &b&你好,请问Dual Network跟Auto Encoder有什么相似/不同点?&/b& ”,秦涛博士刚刚做出了补充回答。&/p&&br&&p&回复较长,请包涵。&/p&&p&简而言之,Autoencoder的做法和对偶学习很类似。Autoencoder的encoder可以看作对偶学习里的正向模型,decoder可以看作对偶学习里的反向模型。在我们看来,对偶学习的思想更广泛一些(可能大多数做研究的人喜欢拔高自己的工作^_^),autoencoder可以看作对偶学习的一个special case:&/p&&ul&&li&1.对偶学习中的两个任务可以是实际的物理世界的AI任务例如语音识vs语音合成以及中翻英vs英翻中,也可以是虚拟的任务如Autoencoder里的encoder和decoder。autoencoder学习完成后实际有用的是encoder,这个encoder可以用来降维,它的输出也可以其他分类器的输入;而decoder一般在学习完成后一般没有实际用处。如果两个task都是物理世界的任务,那么对偶学习到的两个模型都是实际用处,例如中翻英的模型和英翻中的模型。&/li&&li&2.对偶学习可以推广到多于两个任务,例如中翻英+英翻法+法翻中,图像转文本+文本转语音+语音转图像,只要这些任务能够形成闭环提供反馈,对偶学习就可以应用。&/li&&li&3.对偶学习可以从无标注数据学习也可以从标注数据学习,其基本思想在于联合概率P(x,y)有两种计算方式,分别涉及到了正向和反向模型,这样两个计算方式的结果应该相等&img src=&///equation?tex=+P%28x%2Cy%29%3DP%28x%29P%28y%7Cx%3Bf%29%3DP%28y%29P%28x%7Cy%3Bg%29& alt=& P(x,y)=P(x)

我要回帖

更多关于 神经网络训练数据集 的文章

 

随机推荐