97|gan|97|ai的最新网址是多...

ai蜜桃666-97 ai蜜 豆棋池桃123 类似蜜桃的网站 最新地豆棋 ..._百度拇指医生
&&&网友互助
?ai蜜桃666-97 ai蜜 豆棋池桃123 类似蜜桃的网站 最新地豆棋 ...
拇指医生提醒您:问题下方回答为网友贡献,仅供参考。
向医生提问
完善患者资料:*性别:
为您推荐:
* 百度拇指医生解答内容由公立医院医生提供,不代表百度立场。
* 由于网上问答无法全面了解具体情况,回答仅供参考,如有必要建议您及时当面咨询医生
向医生提问404 Not Found
404 Not Found
The requested URL was not found on this server.
您要找的内容已被删除& KOF97全高AI复刻版,AI很高,格斗自虐者向
查看: 14214|回复: 33
UID1234033主题阅读权限30帖子精华0积分436金钱5881 荣誉0 人气11 在线时间2690 小时评议0
Lv.3游侠中级会员, 积分 436, 距离下一级还需 64 积分
帖子精华0积分436金钱5881 荣誉0 人气11 评议0
本帖最后由 update88 于
12:11 编辑
所有人物的AI都很高 很会连
默认键位:W=跳跃 S=蹲 A=左 D=右 J=轻拳 K=轻脚 L=重拳 :=重脚 U=特殊键1 I=特殊键2 1=玩家1开始 2=玩家2开始
http://u.115.com/file/f2de0a17d4 Kof97复刻版.7z (为7z高比例压缩,无法解压请下载最新版的Winrar或者7-zip)
补丁V1.rar
PS:修复了暴走七伽社是普通七伽社的错误
补丁V2.rar
PS:修复因电脑选取Marry导致游戏报错弹出问题,打了该补丁后游戏理论不会再弹出了。
处理器:Inter Xeon E3-1230/AMD X4 635
显卡&&:IGame GTX570/ATI RADEON HD 5770 1G DDR5
主板&&:华硕P8P67/技嘉880GM
内存&&:金士顿 4GB DDR3 1333
硬盘&&:希捷500G5400
SSD :海盗船 CSSD-F60GB3A-BK(60GB)
声卡&&:创新 Audigy4
显示器:LG23吋偏振3D
UID2722306主题阅读权限40帖子精华0积分640金钱1623 荣誉0 人气0 在线时间735 小时评议0
Lv.4游侠高级会员, 积分 640, 距离下一级还需 360 积分
帖子精华0积分640金钱1623 荣誉0 人气0 评议0
这个千鹤也太牛了吧!!!
最近家里老停电,害我天天点蜡烛上网。
UID1622550主题阅读权限20帖子精华0积分26金钱239 荣誉0 人气0 在线时间11 小时评议0
Lv.2游侠会员, 积分 26, 距离下一级还需 174 积分
帖子精华0积分26金钱239 荣誉0 人气0 评议0
AI好变态。
UID345374主题阅读权限50帖子精华0积分1202金钱2006 荣誉0 人气27 在线时间6799 小时评议0
Lv.5游侠白银会员, 积分 1202, 距离下一级还需 798 积分
帖子精华0积分1202金钱2006 荣誉0 人气27 评议0
你这是97?????????????????????
UID449329主题阅读权限20帖子精华0积分122金钱1204 荣誉0 人气0 在线时间211 小时评议0
Lv.2游侠会员, 积分 122, 距离下一级还需 78 积分
帖子精华0积分122金钱1204 荣誉0 人气0 评议0
理论上,如果AI的反应太快,人是不可能赢的
UID2468179主题阅读权限70帖子精华0积分6035金钱9458 荣誉21 人气227 在线时间18067 小时评议0
Lv.7游侠白金会员, 积分 6035, 距离下一级还需 8965 积分
帖子精华0积分6035金钱9458 荣誉21 人气227 评议0
還有怎麽用克隆京的頭像,真是邪惡
没加入剧情,不能還原97,没多少意思......
UID1922471主题阅读权限60帖子精华0积分4149金钱6042 荣誉8 人气34 在线时间6869 小时评议0
Lv.6游侠黄金会员, 积分 4149, 距离下一级还需 1851 积分
帖子精华0积分4149金钱6042 荣誉8 人气34 评议0
哇~!八神还会豺华,九几啊?
请叫我テレサ様& && && && && & !!!
☆The King Of Anfield☆游侠元老版主游侠实况工作组【荣誉】游侠足球经理工作组【美工】利物浦 一线队教练 56/80★★★★★★
UID2932707主题阅读权限100帖子精华3积分9499金钱437 荣誉210 人气1452 在线时间6815 小时评议4
帖子精华3积分9499金钱437 荣誉210 人气1452 评议4
[害怕]不玩自虐游戏
UID1709984主题阅读权限40帖子精华0积分843金钱3132 荣誉1 人气13 在线时间1144 小时评议0
Lv.4游侠高级会员, 积分 843, 距离下一级还需 157 积分
帖子精华0积分843金钱3132 荣誉1 人气13 评议0
求背景歌曲名字,一时想不起~~~
UID4233836主题阅读权限20帖子精华0积分453金钱5235 荣誉0 人气14 在线时间2855 小时评议0
头像被屏蔽
帖子精华0积分453金钱5235 荣誉0 人气14 评议0
提示: 作者被禁止或删除 内容自动屏蔽
签名被屏蔽
UID1350166主题阅读权限50帖子精华0积分1110金钱8049 荣誉2 人气6 在线时间11252 小时评议0
Lv.5游侠白银会员, 积分 1110, 距离下一级还需 890 积分
帖子精华0积分1110金钱8049 荣誉2 人气6 评议0
招数都改了
蓝宝石HD3870海外版
UID396729主题阅读权限30帖子精华0积分220金钱3588 荣誉0 人气1 在线时间2268 小时评议0
Lv.3游侠中级会员, 积分 220, 距离下一级还需 280 积分
帖子精华0积分220金钱3588 荣誉0 人气1 评议0
Donna Lewis - I Could Be The One
UID494519主题阅读权限70帖子精华2积分11515金钱10478 荣誉1 人气123 在线时间10870 小时评议0
Lv.7游侠白金会员, 积分 11515, 距离下一级还需 3485 积分
帖子精华2积分11515金钱10478 荣誉1 人气123 评议0
嗯... 看视频似乎AI还没法用无限屑风, 那就安全了.
UID2468179主题阅读权限70帖子精华0积分6035金钱9458 荣誉21 人气227 在线时间18067 小时评议0
Lv.7游侠白金会员, 积分 6035, 距离下一级还需 8965 积分
帖子精华0积分6035金钱9458 荣誉21 人气227 评议0
没意思,加了新招
根本就不是复刻97,只不過是用了97的画面包就說是97,真是只看表面的人......
EX模式去哪了?
UID1451191主题阅读权限50帖子精华0积分1347金钱2860 荣誉0 人气15 在线时间6876 小时评议0
Lv.5游侠白银会员, 积分 1347, 距离下一级还需 653 积分
帖子精华0积分1347金钱2860 荣誉0 人气15 评议0
这叫复刻...作者比较2
应该写神马呢,可以写点神马呢,敢写点神马么?!
UID2898825主题阅读权限20帖子精华0积分67金钱1389 荣誉0 人气0 在线时间331 小时评议0
Lv.2游侠会员, 积分 67, 距离下一级还需 133 积分
帖子精华0积分67金钱1389 荣誉0 人气0 评议0
本帖最后由 louis3698 于
16:49 编辑
会比KOFZ的AI难吗?
永远の萌哒游侠元老版主
UID2536775主题阅读权限100帖子精华0积分12019金钱38179 荣誉47 人气936 在线时间26212 小时评议3
帖子精华0积分12019金钱38179 荣誉47 人气936 评议3
这种自己改的,连击系统也变了,很多原本不能连的一下子可以了。。还怎么玩。。。。[害怕][害怕][害怕]
UID3662113主题阅读权限40帖子精华0积分997金钱10342 荣誉0 人气3 在线时间5118 小时评议0
Lv.4游侠高级会员, 积分 997, 距离下一级还需 3 积分
帖子精华0积分997金钱10342 荣誉0 人气3 评议0
太誇張了~難度調成最低~一樣打不贏~! 樓主所言不虛~!
UID861405主题阅读权限30帖子精华0积分256金钱4299 荣誉0 人气2 在线时间1876 小时评议0
Lv.3游侠中级会员, 积分 256, 距离下一级还需 244 积分
帖子精华0积分256金钱4299 荣誉0 人气2 评议0
lz草鸡水平不行啊
天使魏 弩兵
UID1383067主题阅读权限70帖子精华0积分6437金钱26093 荣誉10 人气165 在线时间10597 小时评议0
Lv.7游侠白金会员, 积分 6437, 距离下一级还需 8563 积分
帖子精华0积分6437金钱26093 荣誉10 人气165 评议0
看成高清复刻了,白激动了
假如你睡在一个妹纸和一个基佬之间,你会背对着谁?
元老版主勋章
任职满36个月
任职满12个月
资深版主勋章
任职满24个月
大头像勋章
永久勋章,统一售价:8888金币。购买地址:待定
白金会员勋章
用户积分达到6000
发帖数达到10000
荣誉达到150
实况工作组资深组员勋章
实况工作组资深组员勋章
实况工作组组员勋章
实况工作组组员勋章
2013年度杰出版主勋章
2013年度杰出版主勋章
2014年优秀版主勋章
2014年优秀版主勋章
2015年优秀版主勋章
2015年优秀版主勋章
Powered by&p&就在昨天UC Berkeley的Horia Mania, Aurelia Guy和Benjamin Recht在arxiv上公布论文Simple random search provides a competitive approach to reinforcement learning:&a href=&http://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&[] Simple random search provides a competitive approach to reinforcement learning&/a&。 &/p&&p&经过在各种openai gym的locomotion tasks上做实验,他们得出结论: random search+linear policy足以吊打各种fancy algorithm + neural network。&/p&&p&&br&&/p&&figure&&img src=&https://pic3.zhimg.com/v2-677a9ad6b5b41cfd7d788c96b4e49606_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&4032& data-rawheight=&3024& class=&origin_image zh-lightbox-thumb& width=&4032& data-original=&https://pic3.zhimg.com/v2-677a9ad6b5b41cfd7d788c96b4e49606_r.jpg&&&/figure&&p&上图中ARS表示augmented random search,可以看到ARS吊打了所有算法。&/p&&p&&br&&/p&&p&最后他们得出四个结论(我的大略翻译):&/p&&p&1 在发明复杂的算法前,应该先用最简单的方法来把baseline做好。&/p&&p&2 做evaluation要用大量的random seed。在用到仿真器的时候,很难证明一种算法比另一种算法更好,因为某个算法可能不小心用到了仿真器的某种性质,而到了另一个问题/仿真器这个性质可能就不存在了。&/p&&p&3
与其设计一个通用的算法,也许我们更应该设计针对某一问题的算法。&/p&&p&4 我们应该转移注意到model-based的方法,因为这类方法更加sample efficient。&/p&&p&&br&&/p&&p&不说了,我要去写退学申请了。&/p&
就在昨天UC Berkeley的Horia Mania, Aurelia Guy和Benjamin Recht在arxiv上公布论文Simple random search provides a competitive approach to reinforcement learning:
&figure&&img src=&https://pic3.zhimg.com/v2-aaacbcefec7d_b.jpg& data-rawwidth=&1280& data-rawheight=&888& class=&origin_image zh-lightbox-thumb& width=&1280& data-original=&https://pic3.zhimg.com/v2-aaacbcefec7d_r.jpg&&&/figure&&p&&b&作者丨苏剑林&/b&&/p&&p&&b&单位丨广州火焰信息科技有限公司&/b&&/p&&p&&b&研究方向丨NLP,神经网络&/b&&/p&&p&&b&个人主页丨kexue.fm&/b&&/p&&p&最近在思考 NLP 的无监督学习和概率图相关的一些内容,于是重新把一些参数估计方法理了一遍。&/p&&p&在深度学习中,参数估计是最基本的步骤之一了,也就是我们所说的模型训练过程。为了训练模型就得有个损失函数,而如果没有系统学习过概率论的读者,能想到的最自然的损失函数估计是平均平方误差,它也就是对应于我们所说的欧式距离。&/p&&p&而理论上来讲,概率模型的最佳搭配应该是“交叉熵”函数,它来源于概率论中的最大似然函数。&/p&&h2&&b&最大似然&/b&&/h2&&p&&b&合理的存在&/b&&/p&&p&何为最大似然?哲学上有句话叫做“存在就是合理的”,&b&最大似然的意思是“存在就是最合理的”&/b&。具体来说,如果事件 &i&X&/i& 的概率分布为 &i&p&/i&(&i&X&/i&),如果一次观测中具体观测到的值分别为 &i&X&/i&1,&i&X&/i&2,…,&i&X&/i&N,并假设它们是相互独立,那么:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-1e573bf740c184d9efabe_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&794& data-rawheight=&134& class=&origin_image zh-lightbox-thumb& width=&794& data-original=&https://pic1.zhimg.com/v2-1e573bf740c184d9efabe_r.jpg&&&/figure&&p&是最大的。如果 &i&p&/i&(&i&X&/i&) 是一个带有参数 &i&θ&/i& 的概率分布式 &i&pθ&/i&(&i&X&/i&),那么我们应当想办法选择 &i&θ&/i&,使得 &i&L&/i& 最大化,即:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-37de60b7fdcc4c6fb019a8b4e0907aef_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&984& data-rawheight=&122& class=&origin_image zh-lightbox-thumb& width=&984& data-original=&https://pic4.zhimg.com/v2-37de60b7fdcc4c6fb019a8b4e0907aef_r.jpg&&&/figure&&p&对概率取对数,就得到等价形式:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-724d29bcd86bd2b6e0053c3_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&896& data-rawheight=&126& class=&origin_image zh-lightbox-thumb& width=&896& data-original=&https://pic2.zhimg.com/v2-724d29bcd86bd2b6e0053c3_r.jpg&&&/figure&&p&如果右端再除以 &i&N&/i&,我们就得到更精炼的表达形式:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-e61e36cb3c0fa0afe32dd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1010& data-rawheight=&118& class=&origin_image zh-lightbox-thumb& width=&1010& data-original=&https://pic4.zhimg.com/v2-e61e36cb3c0fa0afe32dd_r.jpg&&&/figure&&p&其中我们将 -&i&L&/i&(&i&θ&/i&) 就称为交叉熵。&/p&&p&&b&理论形式&/b&&/p&&p&&b&理论上&/b&,根据已有的数据,我们可以得到每个 &i&X&/i& 的统计频率 &i&p?&/i&(&i&X&/i&),那么可以得到上式的等价形式:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-13a05be01ddabcff6f6d568_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1046& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&1046& data-original=&https://pic2.zhimg.com/v2-13a05be01ddabcff6f6d568_r.jpg&&&/figure&&p&&b&但实际上&/b&,我们几乎都不可能得到 &i&p?&/i&(&i&X&/i&)(尤其是对于连续分布),我们能直接算的是关于它的数学期望,也就是 (4) 式,因为求期望只需要把每个样本的值算出来,然后求和并除以 &i&N&/i& 就行了。所以 (5) 式只有理论价值,它能方便后面的推导。 &/p&&p&要注意的是,上面的描述是非常一般的,其中 &i&X&/i& 可以是任意对象,它也有可能是连续的实数,这时候就要把求和换成积分,把 &i&p&/i&(&i&X&/i&) 变成概率密度函数。当然,这并没有什么本质困难。&/p&&h2&&b&有监督模型&/b&&/h2&&p&现在我们来观察有监督学习中是如何应用上述内容的。假设输入为 &i&X&/i&,标签为 &i&Y&/i&,那么 (&i&X&/i&,&i&Y&/i&) 就构成了一个事件,于是我们根据 (4) 就有:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-76f8736a64baf471ca7d547c8ce864be_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&930& data-rawheight=&114& class=&origin_image zh-lightbox-thumb& width=&930& data-original=&https://pic2.zhimg.com/v2-76f8736a64baf471ca7d547c8ce864be_r.jpg&&&/figure&&p&这里已经注明了是&b&对&/b& &b&&i&X&/i&,&i&Y&/i&&/b& &b&整体求数学期望&/b&,然而该式却是不够实用的。 &/p&&p&&b&分类问题&/b&&/p&&p&以分类问题为例,我们通常建模的是 &i&p&/i&(&i&Y&/i&|&i&X&/i&) 而不是 &i&p&/i&(&i&X&/i&,&i&Y&/i&),也就是我们要根据输入确定输出的分布,而不是它们的联合分布。所以我们还是要从 (5) 式出发,利用 &i&p&/i&(&i&X&/i&,&i&Y&/i&)=&i&p&/i&(&i&X&/i&)&i&p&/i&(&i&Y&/i&|&i&X&/i&),先得到:&/p&&figure&&img src=&https://pic7.zhimg.com/v2-41fee3fab8fdc4b3b708b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1032& data-rawheight=&118& class=&origin_image zh-lightbox-thumb& width=&1032& data-original=&https://pic7.zhimg.com/v2-41fee3fab8fdc4b3b708b_r.jpg&&&/figure&&p&因为我们只对 &i&p&/i&(&i&Y&/i&|&i&X&/i&) 建模,因此 &i&pθ&/i&(&i&X&/i&) 我们认为就是 &i&p?&/i&(&i&X&/i&),那么这相当于让优化目标多了一个常数项,因此 (7) 等价于:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-b126fbf588d8ce2e83ab6a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&962& data-rawheight=&130& class=&origin_image zh-lightbox-thumb& width=&962& data-original=&https://pic4.zhimg.com/v2-b126fbf588d8ce2e83ab6a_r.jpg&&&/figure&&p&然后,我们还有 &i&p?&/i&(&i&X&/i&,&i&Y&/i&)=&i&p?&/i&(&i&X&/i&)&i&p?θ&/i&(&i&Y&/i&|&i&X&/i&),于是 (8) 式还可以再变化成:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-b823bfdc52b7_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1028& data-rawheight=&126& class=&origin_image zh-lightbox-thumb& width=&1028& data-original=&https://pic3.zhimg.com/v2-b823bfdc52b7_r.jpg&&&/figure&&p&最后别忘了,我们是处理有监督学习中的分类问题,&b&一般而言在训练数据中对于确定的输入&/b& &b&&i&X&/i&就只有一个类别&/b&,所以 &i&p?&/i&(&i&Yt&/i&|&i&X&/i&)=1,其余为 0,&i&Yt&/i& 就是 &i&X&/i& 的目标标签,所以:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-3f22bef18fb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&944& data-rawheight=&126& class=&origin_image zh-lightbox-thumb& width=&944& data-original=&https://pic3.zhimg.com/v2-3f22bef18fb_r.jpg&&&/figure&&p&这就是最常见的分类问题的最大似然函数了:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-a37e93b5dbe89c8a7fc6722aef95cc26_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&912& data-rawheight=&110& class=&origin_image zh-lightbox-thumb& width=&912& data-original=&https://pic3.zhimg.com/v2-a37e93b5dbe89c8a7fc6722aef95cc26_r.jpg&&&/figure&&p&&b&变变变&/b&&/p&&p&事实上,上述的内容只是一些恒等变换,应该说没有特别重要的价值,而它的结果(也就是分类问题的交叉熵损失)也早就被我们用得滚瓜烂熟了。&/p&&p&因此,&b&这一节仅仅是展示了如何将最大似然函数从最原始的形式出发,最终落实到一个具体的问题中,让读者熟悉一下这种逐步推进的变换过程&/b&。&/p&&h2&&b&隐变量&/b&&/h2&&p&现在就是展示它的价值的时候了,我们要将&b&用它来给出一个 EM 算法的直接推导&/b&。&b&对于 EM 算法,一般将它分为 M 步和 E 步,应当说,M 步是比较好理解的,难就难在 E 步的那个&/b& &b&&i&Q&/i&&/b& &b&函数为什么要这样构造&/b&。&/p&&p&很多教程并没有给出这个 &i&Q&/i& 函数的解释,有一些教程给出了基于詹森不等式的理解,但我认为这些做法都没有很好凸显出 EM 算法的精髓。&/p&&p&一般来说,EM 算法用于存在隐变量的概率问题优化。什么是隐变量?很简单,还是以刚才的分类问题为例,分类问题要建模的是 &i&p&/i&(&i&Y&/i&|&i&X&/i&),当然也等价于 &i&p&/i&(&i&X&/i&,&i&Y&/i&),我们说过要用最大似然函数为目标,得到 (6) 式:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-eb4f3be449d3df432e0dffc5a077aaa6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&942& data-rawheight=&114& class=&origin_image zh-lightbox-thumb& width=&942& data-original=&https://pic1.zhimg.com/v2-eb4f3be449d3df432e0dffc5a077aaa6_r.jpg&&&/figure&&p&如果给出 (&i&X&/i&,&i&Y&/i&) 的标签数据对,那就是一个普通的有监督学习问题了,然而如果只给出 &i&X&/i& 不给出 &i&Y&/i& 呢?&b&这时候&/b& &i&&b&Y&/b&&/i& &b&就称为隐变量,它存在,但我们看不见,所以“隐”&/b&。&/p&&p&&b&GMM模型&/b&&/p&&p&等等,没有标签数据你也想做分类问题?当然有可能,GMM 模型不就是这样的一个模型了吗?在 GMM 中假设了:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fa74a8fab6c42d04b44af74242dad68b_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&894& data-rawheight=&94& class=&origin_image zh-lightbox-thumb& width=&894& data-original=&https://pic3.zhimg.com/v2-fa74a8fab6c42d04b44af74242dad68b_r.jpg&&&/figure&&p&注意,是 &i&pθ&/i&(&i&Y&/i&)&i&pθ&/i&(&i&X&/i&|&i&Y&/i&) 而不是 &i&pθ&/i&(&i&X&/i&)&i&pθ&/i&(&i&Y&/i&|&i&X&/i&),两者区别在于我们难以直接估计 &i&p&/i&(&i&X&/i&),也比较难直接猜测 &i&p&/i&(&i&Y&/i&|&i&X&/i&) 的形式。&/p&&p&而 &i&p&/i&(&i&Y&/i&) 和 &i&p&/i&(&i&X&/i&|&i&Y&/i&) 就相对容易了,因为我们通常假设 &i&Y&/i& 的意义是类别,所以 &i&p&/i&(&i&Y&/i&) 只是一个有限向量,而 &i&p&/i&(&i&X&/i&|&i&Y&/i&) 表示每个类内的对象的分布。&/p&&p&既然这些对象都属于同一个类,同一个类应该都长得差不多吧,所以 GMM 假设它为正态分布,这时候做的假设就有依据了,不然将所有数据混合在一起,谁知道假设什么分布好呢?&/p&&p&&b&pLSA模型&/b&&/p&&p&当然,并不只有无监督学习才有隐变量,有监督学习也可以有,比如我们可以设:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-183c00e13a7d6be1c4ed18_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&932& data-rawheight=&126& class=&origin_image zh-lightbox-thumb& width=&932& data-original=&https://pic2.zhimg.com/v2-183c00e13a7d6be1c4ed18_r.jpg&&&/figure&&p&这时候多出了一个变量 &i&Z&/i&,就算给出 (&i&X&/i&,&i&Y&/i&) 这样的标签数据对,但 &i&Z&/i& 仍然是没有数据的,是我们假想的一个变量,它也就是隐变量,pLSA 就是这样的一个问题。这时候它的最大似然估计是:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-cd71bd955ec2e51d1fe81056b14eda73_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1044& data-rawheight=&110& class=&origin_image zh-lightbox-thumb& width=&1044& data-original=&https://pic3.zhimg.com/v2-cd71bd955ec2e51d1fe81056b14eda73_r.jpg&&&/figure&&p&&b&联合最大似然&/b&&/p&&p&再等等,你这个好像跟我之前看到的 pLSA 的目标函数不大一样呀?还有 (6) 式也跟 GMM 的目标函数不一样呀?你是不是弄错了? &/p&&p&我觉得并没有弄错,&b&最大似然函数应该要考虑的是整体联合分布,也就是得把&/b& &b&&i&Z&/i&&/b& &b&也考虑进去&/b&。而教程一般是这样处理的:由于隐变量不可观测,因此一般改用边缘分布(也就是显变量的分布)的最大似然为目标函数,即:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-298cdda85b6_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1008& data-rawheight=&118& class=&origin_image zh-lightbox-thumb& width=&1008& data-original=&https://pic1.zhimg.com/v2-298cdda85b6_r.jpg&&&/figure&&p&为最大化的目标。&/p&&p&事实上这种做法我认为是不大妥当的,&b&隐变量虽然“隐”了,但既然我们假设它存在,那么它就是真的存在了,既然真的存在,最大似然函数当然要考虑上它,这才是真正的“存在就是最合理的”,是连同隐变量一起最合理才对&/b&: &/p&&figure&&img src=&https://pic4.zhimg.com/v2-0e468ed0849afc62d1ced0e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1024& data-rawheight=&214& class=&origin_image zh-lightbox-thumb& width=&1024& data-original=&https://pic4.zhimg.com/v2-0e468ed0849afc62d1ced0e_r.jpg&&&/figure&&p&而事实上这种处理不仅具有理论意义,它还极大简化了 EM 算法的推导,而如果采用边缘分布最大似然的做法,我们就无法直观地理解那个 &i&Q&/i& 函数的来源了。&/p&&p&最后,可能有读者“异想天开”:&b&那么参数&/b& &b&&i&θ&/i&&/b& &b&是不是也可以看作一个隐变量呢?&/b&恭喜你,如果你有这层领悟,那你已经进入&b&贝叶斯学派&/b&的思维范畴了。&/p&&p&贝叶斯学派认为,一切都是随机的,一切都服从某个概率分布,参数 &i&θ&/i& 也不例外。不过很遗憾,贝叶斯学派的概率理论很艰深,我们这里还没法派上用场。&/p&&h2&&b&EM算法&/b&&/h2&&p&好了,不再废话了,还是正式进入对 EM 算法的讨论吧。 &/p&&p&&b&再变变变&/b&&/p&&p&以式 (6) 的模型为例,假设我们只有 &i&X&/i& 的数据,没有对应的标签 &i&Y&/i&,这时候 &i&Y&/i& 是隐变量,但我们还是要算整体的最大似然,也就是前面的 (16) 式:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-bfff2ed602a3a_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&998& data-rawheight=&128& class=&origin_image zh-lightbox-thumb& width=&998& data-original=&https://pic1.zhimg.com/v2-bfff2ed602a3a_r.jpg&&&/figure&&p&这时候我们依然没有解决的问题是:我们不知道 &i&p?&/i&(&i&X&/i&,&i&Y&/i&),甚至 &i&p?&/i&(&i&X&/i&) 我们也可能不知道(但我们可以算关于它的期望)。那好吧,将式子做一下变换:&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fcac72cda98fd_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1074& data-rawheight=&242& class=&origin_image zh-lightbox-thumb& width=&1074& data-original=&https://pic3.zhimg.com/v2-fcac72cda98fd_r.jpg&&&/figure&&p&这里的
是对X 求的期望。现在好像有点意思了,然而并没有什么用,因为&i& p&/i&?&i&(&/i&Y&i&|&/i&X) 还是未知的。&/p&&p&&b&EM大佬来了&/b&&/p&&p&这时候,大佬就发话了:&b&先当它已知的吧&/b&,那么我们就可以算参数 &i&θ&/i& 了:&/p&&figure&&img src=&https://pic1.zhimg.com/v2-fde56ebbc3254_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&1080& data-rawheight=&153& class=&origin_image zh-lightbox-thumb& width=&1080& data-original=&https://pic1.zhimg.com/v2-fde56ebbc3254_r.jpg&&&/figure&&p&然后根据算出来的结果再去更新 &i&p?&/i&(&i&Y&/i&|&i&X&/i&) 就是了,根据定义:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-34f497d52e5a2d567e94a9_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&986& data-rawheight=&160& class=&origin_image zh-lightbox-thumb& width=&986& data-original=&https://pic2.zhimg.com/v2-34f497d52e5a2d567e94a9_r.jpg&&&/figure&&p&所以:&/p&&figure&&img src=&https://pic2.zhimg.com/v2-ecb4ba3cbdcdfd2f81aabf_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&954& data-rawheight=&148& class=&origin_image zh-lightbox-thumb& width=&954& data-original=&https://pic2.zhimg.com/v2-ecb4ba3cbdcdfd2f81aabf_r.jpg&&&/figure&&p&就让它们交替更新吧。现在来看看 (18) 式,&b&有个 E(求期望),又有个 M(argmax),就叫它 EM 算法吧,那个被 E 的式子,我们就叫它&/b& &b&&i&Q&/i&&/b& &b&函数好了&/b&。于是 EM 大佬就这样出来了,&i&Q&/i&函数也出来了,就这么任性。&/p&&p&当然,EM 算法中的 E 的本意是将:&/p&&figure&&img src=&https://pic4.zhimg.com/v2-fac6fb5fb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&434& data-rawheight=&84& class=&origin_image zh-lightbox-thumb& width=&434& data-original=&https://pic4.zhimg.com/v2-fac6fb5fb_r.jpg&&&/figure&&p&看成是对隐变量 &i&Y&/i& 求期望,这里我们就随意一点的,结论没错就行。&/p&&p&是不是感觉很突然?感觉啥也没做,EM 算法就这么两句话说清楚了?还包括了推导?&/p&&p&&b&究竟在做啥&/b&&/p&&p&对于 pLSA 或者其他含有因变量的模型的 EM 算法,也可以类似地推导。对比目前我能找到的 EM 算法的推导,我相信上面的过程已经是相当简洁了。尽管前面很多铺垫,但其实都是基础知识而已。 &/p&&p&那这是如何实现的呢?回顾整个过程,其实我们也没做什么,只是&b&坚持使用联合隐变量的整体分布的最大似然,然后该化简的就化简,最终关于隐变量部分没法化简,那就迭代吧,迭着迭着就出来了&/b&。&/p&&p&这样子得到的推导,比从边缘分布的最大自然出发,居然直接快捷了很多,也是个惊喜。&/p&&h2&&b&一致的理解&/b&&/h2&&p&本文是作者对最大似然原理的一番思考,整体思路是从最大似然的原理和形式出发,来诱导出有监督/无监督学习的一些结果,希望能用一个统一的思想将各种相关内容都串起来。&/p&&p&最后发现结果也挺让人满意的,尤其是 EM 算法部分,以后只需要记住一切的根本都是(联合)分布的最大似然,再也不用死记 EM 算法中的 &i&Q&/i& 函数形式了。&/p&&p&当然,文章有些观点都是“我认为”的,因此可能有不当之处,请读者甄别。不过可以保证的是结果跟现有的都是一样的。&/p&&p&&b&本文由 AI 学术社区 PaperWeekly 精选推荐,社区目前已覆盖自然语言处理、计算机视觉、人工智能、机器学习、数据挖掘和信息检索等研究方向,&/b&&a href=&https://link.zhihu.com/?target=http%3A//www.paperweekly.site/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&点击即刻加入社区&/a&&b&!&/b&&/p&&p&&b&关于PaperWeekly&/b&&/p&&p&PaperWeekly 是一个推荐、解读、讨论、报道人工智能前沿论文成果的学术平台。如果你研究或从事 AI 领域,欢迎在公众号后台点击&b&「交流群」&/b&,小助手将把你带入 PaperWeekly 的交流群里。&/p&&p&&b&微信公众号:PaperWeekly&/b&&/p&&p&&b&新浪微博:@PaperWeekly&/b&&/p&&p&&/p&
作者丨苏剑林单位丨广州火焰信息科技有限公司研究方向丨NLP,神经网络个人主页丨kexue.fm最近在思考 NLP 的无监督学习和概率图相关的一些内容,于是重新把一些参数估计方法理了一遍。在深度学习中,参数估计是最基本的步骤之一了,也就是我们所说的模型训练…
&figure&&img src=&https://pic4.zhimg.com/v2-a4c92a3bfdd_b.jpg& data-rawwidth=&550& data-rawheight=&414& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic4.zhimg.com/v2-a4c92a3bfdd_r.jpg&&&/figure&&p&李飞飞主讲的CS231n课程作为深度学习和计算机视觉方面的重要基础课,一直备受推崇,今年4月,她的课程再次开课,并进行了调整和更新,智能观曾整理最新的课程全部内容分享给大家,鉴于许多小伙伴一直焦急等待课程视频,智能观在第一时间获取资源奉上。&/p&&p&课程视频原地址:&a href=&https://link.zhihu.com/?target=https%3A//www.youtube.com/playlist%3Flist%3DPL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://www.&/span&&span class=&visible&&youtube.com/playlist?&/span&&span class=&invisible&&list=PL3FW7Lu3i5JvHM8ljYj-zLfQRF3EO8sYv&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&Bilibili视频地址(由微博知名博主爱可可老师提供):&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/avpage%3D1& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/#page=1&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第一讲&/b&&/p&&p&这一讲做了整体课程介绍,包括计算机视觉概述、历史背景以及课程组织等。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D1& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=1&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第二讲&/b&&/p&&p&图像分类:数据驱动方法、K-最近邻、线性分类I。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=2&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第三讲&/b&&/p&&p&损失函数和优化:包括线性分类II,高阶表征、图像特点,优化、随机梯度下降等内容。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D3& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=3&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第四讲&/b&&/p&&p&神经网络:介绍反向传播、多层感知器、神经元的概念。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D4& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=4&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第五讲&/b&&/p&&p&卷积神经网络:卷积神经网络的历史、卷积和池化、卷积神经网络的前瞻和愿景。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D5& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=5&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第六讲&/b&&/p&&p&训练神经网络(I):包括激活函数、权重初始化、批量归一化等内容。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D6& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=6&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第七讲&/b&&/p&&p&训练神经网络(II):优化方法、模型集成、正则化、数据扩张和迁移学习等。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D7& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=7&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第八讲&/b&&/p&&p&深度学习软件: Caffe、Torch、Theano、TensorFlow、Keras、PyTorch等。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D8& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=8&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第九讲&/b&&/p&&p&CNN架构:AlexNet,VGG,GoogLeNet,ResNet等。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D9& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=9&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十讲&/b&&/p&&p&循环神经网络:主要包括RNN,LSTM,GRU,从语言建模、图像描述、视觉问答系统等方面进行描述。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D10& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=10&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十一讲&/b&&/p&&p&检测和分割:语义分割、目标检测、实例分割。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D11& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=11&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十二讲&/b&&/p&&p&可视化和理解:特征可视化和反演、对抗样本、DeepDream(深度梦想)和风格转移。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D12& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=12&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十三讲&/b&&/p&&p&生成模型:PixelRNN / CNN 、变分自编码器、生成式对抗网络。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D13& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=13&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十四讲&/b&&/p&&p&强化学习:策略梯度,hard attention模型;Q-Learning和 Actor-Critic学习。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D14& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=14&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十五讲&/b&&/p&&p&现实世界使用:卷积算法,CPU / GPU、低精度模型压缩。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D15& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=15&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&&b&第十六讲&/b&&/p&&p&对抗性样本和对抗性训练:该部分由lan goodfellow主讲,详细讲解了对抗性样本和对抗性训练。&/p&&p&视频链接:&a href=&https://link.zhihu.com/?target=http%3A//www.bilibili.com/video/av/index_1.html%23page%3D16& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&bilibili.com/video/av13&/span&&span class=&invisible&&260183/index_1.html#page=16&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&(获取完整课程请阅读原文)&/p&&p&&a href=&https://link.zhihu.com/?target=https%3A//pan.baidu.com/s/1pKF5PXp%3Ferrno%3D0%26errmsg%3DAuth%2520Login%2520Sucess%26%26bduss%3D%26ssnerror%3D0%23list/path%3D%252F& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&pan.baidu.com/s/1pKF5PX&/span&&span class=&invisible&&p?errno=0&errmsg=Auth%20Login%20Sucess&&bduss=&ssnerror=0#list/path=%2F&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&&br&&/p&&p&想知道AI加教育领域有哪些最新研究成果?请在智能观(zhinengguanym)对话界面回复“&b&论文&/b&”;&/p&&p&想要AI领域更多的干货?请在对话界面回复“&b&干货&/b&”;&/p&&p&想了解更多专家的“智能观”,请在对话界面回复“&b&观点&/b&”,去获取你想要的内容吧。&/p&&p&关于我们 &/p&&p&朋友说,智能观是几个女文青在做科技的事情。&/p&&p&哪里,我们充其量是几个对AI和教育有无限好奇与情怀的伪文青。&/p&&p&我们以独特的视角观察AI给教育带来的变化,从国内到国外,从清华到麻省,从小学到大学,从有志于此的小团队以及个人到巨头,都是我们关注的对象。&/p&&p&我们希望用心、用准确的信息介绍业内的最新研究成果、进展、愿景与观点,希望对关注这个领域的你有所帮助,希望跟你一起发现更多潜能。&/p&&p&PS:我们团队还是有理性大叔的~&/p&&p&[笔芯]&/p&
李飞飞主讲的CS231n课程作为深度学习和计算机视觉方面的重要基础课,一直备受推崇,今年4月,她的课程再次开课,并进行了调整和更新,智能观曾整理最新的课程全部内容分享给大家,鉴于许多小伙伴一直焦急等待课程视频,智能观在第一时间获取资源奉上。课程…
&figure&&img src=&https://pic2.zhimg.com/v2-73b56d096aad477a618c_b.jpg& data-rawwidth=&550& data-rawheight=&336& class=&origin_image zh-lightbox-thumb& width=&550& data-original=&https://pic2.zhimg.com/v2-73b56d096aad477a618c_r.jpg&&&/figure&&p&现在的人脸识别技术已经得到了非常广泛的应用,支付领域、身份验证、美颜相机里都有它的应用。用iPhone的同学们应该对下面的功能比较熟悉&/p&&figure&&img data-rawheight=&640& src=&https://pic1.zhimg.com/v2-ccf07fb7eb619a5a5ce11a_b.jpg& data-size=&small& data-rawwidth=&720& class=&origin_image zh-lightbox-thumb& width=&720& data-original=&https://pic1.zhimg.com/v2-ccf07fb7eb619a5a5ce11a_r.jpg&&&/figure&&p&iPhone的照片中有一个“人物”的功能,能够将照片里的人脸识别出来并分类,背后的原理也是人脸识别技术。&/p&&p&这篇文章主要介绍怎样用Python实现人脸检测。人脸检测是人脸识别的基础。人脸检测的目的是识别出照片里的人脸并定位面部特征点,人脸识别是在人脸检测的基础上进一步告诉你这个人是谁。&/p&&p&好了,介绍就到这里。接下来,开始准备我们的环境。&/p&&h2&准备工作&/h2&&p&本文的人脸检测基于dlib,dlib依赖Boost和cmake,所以首先需要安装这些包,以Ubuntu为例:&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ sudo apt-get install build-essential cmake
$ sudo apt-get install libgtk-3-dev
$ sudo apt-get install libboost-all-dev
&/code&&/pre&&/div&&p&我们的程序中还用到numpy,opencv,所以也需要安装这些库:&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ pip install numpy
$ pip install scipy
$ pip install opencv-python
$ pip install dlib
&/code&&/pre&&/div&&p&人脸检测基于事先训练好的模型数据,从这里可以下到模型数据&/p&&p&&a href=&https://link.zhihu.com/?target=http%3A//dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://&/span&&span class=&visible&&dlib.net/files/shape_pr&/span&&span class=&invisible&&edictor_68_face_landmarks.dat.bz2&/span&&span class=&ellipsis&&&/span&&/a&&/p&&p&下载到本地路径后解压,记下解压后的文件路径,程序中会用到。&/p&&p&&br&&/p&&h2&dlib的人脸特征点&/h2&&p&上面下载的模型数据是用来估计人脸上68个特征点(x, y)的坐标位置,这68个坐标点的位置如下图所示:&/p&&figure&&img data-rawheight=&619& src=&https://pic1.zhimg.com/v2-bb5d3138c8fcdb580f91_b.jpg& data-size=&normal& data-rawwidth=&768& class=&origin_image zh-lightbox-thumb& width=&768& data-original=&https://pic1.zhimg.com/v2-bb5d3138c8fcdb580f91_r.jpg&&&/figure&&p&我们的程序将包含两个步骤:&/p&&p&第一步,在照片中检测人脸的区域&/p&&p&第二部,在检测到的人脸区域中,进一步检测器官(眼睛、鼻子、嘴巴、下巴、眉毛)&/p&&p&&br&&/p&&h2&人脸检测代码&/h2&&p&我们先来定义几个工具函数:&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&rect_to_bb&/span&&span class=&p&&(&/span&&span class=&n&&rect&/span&&span class=&p&&):&/span&
&span class=&n&&x&/span& &span class=&o&&=&/span& &span class=&n&&rect&/span&&span class=&o&&.&/span&&span class=&n&&left&/span&&span class=&p&&()&/span&
&span class=&n&&y&/span& &span class=&o&&=&/span& &span class=&n&&rect&/span&&span class=&o&&.&/span&&span class=&n&&top&/span&&span class=&p&&()&/span&
&span class=&n&&w&/span& &span class=&o&&=&/span& &span class=&n&&rect&/span&&span class=&o&&.&/span&&span class=&n&&right&/span&&span class=&p&&()&/span& &span class=&o&&-&/span& &span class=&n&&x&/span&
&span class=&n&&h&/span& &span class=&o&&=&/span& &span class=&n&&rect&/span&&span class=&o&&.&/span&&span class=&n&&bottom&/span&&span class=&p&&()&/span& &span class=&o&&-&/span& &span class=&n&&y&/span&
&span class=&k&&return&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&,&/span& &span class=&n&&w&/span&&span class=&p&&,&/span& &span class=&n&&h&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&这个函数里的rect是dlib脸部区域检测的输出。这里将rect转换成一个序列,序列的内容是矩形区域的边界信息。&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&shape_to_np&/span&&span class=&p&&(&/span&&span class=&n&&shape&/span&&span class=&p&&,&/span& &span class=&n&&dtype&/span&&span class=&o&&=&/span&&span class=&s2&&&int&&/span&&span class=&p&&):&/span&
&span class=&n&&coords&/span& &span class=&o&&=&/span& &span class=&n&&np&/span&&span class=&o&&.&/span&&span class=&n&&zeros&/span&&span class=&p&&((&/span&&span class=&mi&&68&/span&&span class=&p&&,&/span& &span class=&mi&&2&/span&&span class=&p&&),&/span& &span class=&n&&dtype&/span&&span class=&o&&=&/span&&span class=&n&&dtype&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&n&&i&/span& &span class=&ow&&in&/span& &span class=&nb&&range&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&68&/span&&span class=&p&&):&/span&
&span class=&n&&coords&/span&&span class=&p&&[&/span&&span class=&n&&i&/span&&span class=&p&&]&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&shape&/span&&span class=&o&&.&/span&&span class=&n&&part&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&shape&/span&&span class=&o&&.&/span&&span class=&n&&part&/span&&span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&)&/span&&span class=&o&&.&/span&&span class=&n&&y&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&coords&/span&
&/code&&/pre&&/div&&p&这个函数里的shape是dlib脸部特征检测的输出,一个shape里包含了前面说到的脸部特征的68个点。这个函数将shape转换成Numpy array,为方便后续处理。&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&def&/span& &span class=&nf&&resize&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&n&&width&/span&&span class=&o&&=&/span&&span class=&mi&&1200&/span&&span class=&p&&):&/span&
&span class=&n&&r&/span& &span class=&o&&=&/span& &span class=&n&&width&/span& &span class=&o&&*&/span& &span class=&mf&&1.0&/span& &span class=&o&&/&/span& &span class=&n&&image&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&dim&/span& &span class=&o&&=&/span& &span class=&p&&(&/span&&span class=&n&&width&/span&&span class=&p&&,&/span& &span class=&nb&&int&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&o&&.&/span&&span class=&n&&shape&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span& &span class=&o&&*&/span& &span class=&n&&r&/span&&span class=&p&&))&/span&
&span class=&n&&resized&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&n&&dim&/span&&span class=&p&&,&/span& &span class=&n&&interpolation&/span&&span class=&o&&=&/span&&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&INTER_AREA&/span&&span class=&p&&)&/span&
&span class=&k&&return&/span& &span class=&n&&resized&/span&
&/code&&/pre&&/div&&p&这个函数里的image就是我们要检测的图片。在人脸检测程序的最后,我们会显示检测的结果图片来验证,这里做resize是为了避免图片过大,超出屏幕范围。&/p&&p&&br&&/p&&p&接下来,开始我们的主程序部分&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&kn&&import&/span& &span class=&nn&&sys&/span&
&span class=&kn&&import&/span& &span class=&nn&&numpy&/span& &span class=&kn&&as&/span& &span class=&nn&&np&/span&
&span class=&kn&&import&/span& &span class=&nn&&dlib&/span&
&span class=&kn&&import&/span& &span class=&nn&&cv2&/span&
&span class=&k&&if&/span& &span class=&nb&&len&/span&&span class=&p&&(&/span&&span class=&n&&sys&/span&&span class=&o&&.&/span&&span class=&n&&argv&/span&&span class=&p&&)&/span& &span class=&o&&&&/span& &span class=&mi&&2&/span&&span class=&p&&:&/span&
&span class=&k&&print&/span& &span class=&s2&&&Usage: &/span&&span class=&si&&%s&/span&&span class=&s2&& &image file&&&/span& &span class=&o&&%&/span& &span class=&n&&sys&/span&&span class=&o&&.&/span&&span class=&n&&argv&/span&&span class=&p&&[&/span&&span class=&mi&&0&/span&&span class=&p&&]&/span&
&span class=&n&&sys&/span&&span class=&o&&.&/span&&span class=&n&&exit&/span&&span class=&p&&(&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&image_file&/span& &span class=&o&&=&/span& &span class=&n&&sys&/span&&span class=&o&&.&/span&&span class=&n&&argv&/span&&span class=&p&&[&/span&&span class=&mi&&1&/span&&span class=&p&&]&/span&
&span class=&n&&detector&/span& &span class=&o&&=&/span& &span class=&n&&dlib&/span&&span class=&o&&.&/span&&span class=&n&&get_frontal_face_detector&/span&&span class=&p&&()&/span&
&span class=&n&&predictor&/span& &span class=&o&&=&/span& &span class=&n&&dlib&/span&&span class=&o&&.&/span&&span class=&n&&shape_predictor&/span&&span class=&p&&(&/span&&span class=&s2&&&shape_predictor_68_face_landmarks.dat&&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&我们从sys.argv[1]参数中读取要检测人脸的图片,接下来初始化人脸区域检测的detector和人脸特征检测的predictor。shape_predictor中的参数就是我们之前解压后的文件的路径。&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&n&&image&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&imread&/span&&span class=&p&&(&/span&&span class=&n&&image_file&/span&&span class=&p&&)&/span&
&span class=&n&&image&/span& &span class=&o&&=&/span& &span class=&n&&resize&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&n&&width&/span&&span class=&o&&=&/span&&span class=&mi&&1200&/span&&span class=&p&&)&/span&
&span class=&n&&gray&/span& &span class=&o&&=&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&cvtColor&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&COLOR_BGR2GRAY&/span&&span class=&p&&)&/span&
&span class=&n&&rects&/span& &span class=&o&&=&/span& &span class=&n&&detector&/span&&span class=&p&&(&/span&&span class=&n&&gray&/span&&span class=&p&&,&/span& &span class=&mi&&1&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&在检测特征区域前,我们先要检测人脸区域。这段代码调用opencv加载图片,resize到合适的大小,转成灰度图,最后用detector检测脸部区域。因为一张照片可能包含多张脸,所以这里得到的是一个包含多张脸的信息的数组rects。&/p&&p&&br&&/p&&div class=&highlight&&&pre&&code class=&language-python&&&span&&/span&&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&i&/span&&span class=&p&&,&/span& &span class=&n&&rect&/span&&span class=&p&&)&/span& &span class=&ow&&in&/span& &span class=&nb&&enumerate&/span&&span class=&p&&(&/span&&span class=&n&&rects&/span&&span class=&p&&):&/span&
&span class=&n&&shape&/span& &span class=&o&&=&/span& &span class=&n&&predictor&/span&&span class=&p&&(&/span&&span class=&n&&gray&/span&&span class=&p&&,&/span& &span class=&n&&rect&/span&&span class=&p&&)&/span&
&span class=&n&&shape&/span& &span class=&o&&=&/span& &span class=&n&&shape_to_np&/span&&span class=&p&&(&/span&&span class=&n&&shape&/span&&span class=&p&&)&/span&
&span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&,&/span& &span class=&n&&w&/span&&span class=&p&&,&/span& &span class=&n&&h&/span&&span class=&p&&)&/span& &span class=&o&&=&/span& &span class=&n&&rect_to_bb&/span&&span class=&p&&(&/span&&span class=&n&&rect&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&rectangle&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&),&/span& &span class=&p&&(&/span&&span class=&n&&x&/span& &span class=&o&&+&/span& &span class=&n&&w&/span&&span class=&p&&,&/span& &span class=&n&&y&/span& &span class=&o&&+&/span& &span class=&n&&h&/span&&span class=&p&&),&/span& &span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&255&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&),&/span& &span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&putText&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&s2&&&Face #{}&&/span&&span class=&o&&.&/span&&span class=&n&&format&/span&&span class=&p&&(&/span&&span class=&n&&i&/span& &span class=&o&&+&/span& &span class=&mi&&1&/span&&span class=&p&&),&/span& &span class=&p&&(&/span&&span class=&n&&x&/span& &span class=&o&&-&/span& &span class=&mi&&10&/span&&span class=&p&&,&/span& &span class=&n&&y&/span& &span class=&o&&-&/span& &span class=&mi&&10&/span&&span class=&p&&),&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&FONT_HERSHEY_SIMPLEX&/span&&span class=&p&&,&/span& &span class=&mf&&0.5&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&255&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&),&/span& &span class=&mi&&2&/span&&span class=&p&&)&/span&
&span class=&k&&for&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&)&/span& &span class=&ow&&in&/span& &span class=&n&&shape&/span&&span class=&p&&:&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&circle&/span&&span class=&p&&(&/span&&span class=&n&&image&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&n&&x&/span&&span class=&p&&,&/span& &span class=&n&&y&/span&&span class=&p&&),&/span& &span class=&mi&&2&/span&&span class=&p&&,&/span& &span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&0&/span&&span class=&p&&,&/span& &span class=&mi&&255&/span&&span class=&p&&),&/span& &span class=&o&&-&/span&&span class=&mi&&1&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&imshow&/span&&span class=&p&&(&/span&&span class=&s2&&&Output&&/span&&span class=&p&&,&/span& &span class=&n&&image&/span&&span class=&p&&)&/span&
&span class=&n&&cv2&/span&&span class=&o&&.&/span&&span class=&n&&waitKey&/span&&span class=&p&&(&/span&&span class=&mi&&0&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&对于每一张检测到的脸,我们进一步检测脸部的特征(鼻子、眼睛、眉毛等)。对于脸部区域,我们用绿色的框在照片上标出;对于脸部特征,我们用红色的点标出来。&/p&&p&最后我们把加了检测标识的照片显示出来,waitKey(0)表示按任意键可退出程序。&/p&&p&以上是我们程序的全部&/p&&p&&br&&/p&&h2&测试&/h2&&p&接下来是令人兴奋的时刻,检验我们结果的时刻到来了。&/p&&p&下面是原图&/p&&figure&&img data-rawheight=&450& src=&https://pic3.zhimg.com/v2-30d21aba6feffe_b.jpg& data-size=&normal& data-rawwidth=&755& class=&origin_image zh-lightbox-thumb& width=&755& data-original=&https://pic3.zhimg.com/v2-30d21aba6feffe_r.jpg&&&/figure&&p&下面是程序识别的结果&/p&&figure&&img data-rawheight=&715& src=&https://pic1.zhimg.com/v2-1d6ea38d9b087abb9cb84f_b.jpg& data-size=&normal& data-rawwidth=&1200& class=&origin_image zh-lightbox-thumb& width=&1200& data-original=&https://pic1.zhimg.com/v2-1d6ea38d9b087abb9cb84f_r.jpg&&&/figure&&p&可以看到脸部区域被绿色的长方形框起来了,脸上的特征(鼻子,眼睛等)被红色点点标识出来了。&/p&&p&是不是很简单?&/p&&p&&br&&/p&&p&欢迎点赞~ &/p&&p&视点赞情况,后续再另开一篇写写怎样实现人脸识别,告诉你照片里的人是谁。&/p&
现在的人脸识别技术已经得到了非常广泛的应用,支付领域、身份验证、美颜相机里都有它的应用。用iPhone的同学们应该对下面的功能比较熟悉iPhone的照片中有一个“人物”的功能,能够将照片里的人脸识别出来并分类,背后的原理也是人脸识别技术。这篇文章主要…
&figure&&img src=&https://pic1.zhimg.com/v2-b186df2a91a8f394b1c48_b.jpg& data-rawwidth=&1920& data-rawheight=&489& class=&origin_image zh-lightbox-thumb& width=&1920& data-original=&https://pic1.zhimg.com/v2-b186df2a91a8f394b1c48_r.jpg&&&/figure&&p&@&a href=&https://www.zhihu.com/people/xiaoxinwang/answers& class=&internal&&王小新&/a& 编译整理 &/p&&p&量子位 报道 | 公众号 QbitAI&/p&&p&最近,来自加州大学伯克利分校的RICHARD ZHANG、JUN-YAN ZHU、PHILLIP ISOLA等人又写了一篇题为“用Learned Deep Priors来实时指导图像着色”的论文,这篇文章提出了一种有趣的图像着色方案。&/p&&p&以下是论文的主要内容:&/p&&h1&摘要&/h1&&p&我们提出了一种有趣的深度学习方法,来实时指导用户进行图像着色。该网络会结合输入的灰度图像和简单的用户提示,直接映射到卷积神经网络(CNN),即可输出用户满意的彩色图。&/p&&p&传统的神经网络一般通过人为地定义相关规则,并从大规模数据集中学习高级语义信息,融合图像的低级特征,来帮助用户对图像进行着色。我们通过模拟用户操作,训练了一百万张图像。&/p&&p&为了引导用户选择有效的着色方案,该系统会根据输入图像和当前用户的输入来提出最佳的着色方案。图像着色仅通过单次前向传播即可完成,计算量小,可实时完成。&/p&&p&我们随机地模仿用户进行输入,从视频中可以看出,该系统可帮助新手快速地创建逼真的图像,且在简单熟悉后,新手们在着色质量上大幅改善。&/p&&p&此外,我们还表明,该框架可以应用颜色直方图转换的功能,将其他用户的“提示”纳入备选的着色方案中。&/p&&h2&示例视频&/h2&&a class=&video-box& href=&https://link.zhihu.com/?target=https%3A//v.qq.com/x/page/z0501achh50.html& target=&_blank& data-video-id=&& data-video-playable=&& data-name=&伯克利搞出新算法:你说涂什么颜色,AI立刻给你涂好_腾讯视频& data-poster=&https://puui.qpic.cn/qqvideo_ori/0/z0501achh50_228_128/0& data-lens-id=&&&
&img class=&thumbnail& src=&https://puui.qpic.cn/qqvideo_ori/0/z0501achh50_228_128/0&&&span class=&content&&
&span class=&title&&伯克利搞出新算法:你说涂什么颜色,AI立刻给你涂好_腾讯视频&span class=&z-ico-extern-gray&&&/span&&span class=&z-ico-extern-blue&&&/span&&/span&
&span class=&url&&&span class=&z-ico-video&&&/span&https://v.qq.com/x/page/z0501achh50.html&/span&
&br&&h1&在传统照片上的效果&/h1&&p&我们使用130万张彩色照片来训练这个图像着色系统,通过去除RGB分量来合成灰度图。在这里,我们展示一些示例:&/p&&h1&&figure&&img src=&https://pic3.zhimg.com/v2-8d5a0dd47dd_b.jpg& data-rawwidth=&13533& data-rawheight=&5017& class=&origin_image zh-lightbox-thumb& width=&13533& data-original=&https://pic3.zhimg.com/v2-8d5a0dd47dd_r.jpg&&&/figure&其他结果&/h1&&p&下面我们展示出一些用户的操作效果。每个用户在每张图像上大约花费了1分钟。对于参加实验的28个用户,我们进行了简短的2分钟解释和说明了相关要点,并给出了10张图像进行着色测试。我们给出了28个用户对这10张图像的着色方案。你可以从论文的第4.2节查到该部分的相关信息和延伸。&/p&&p&&figure&&img src=&https://pic1.zhimg.com/v2-a55e2efadb6d32_b.jpg& data-rawwidth=&8196& data-rawheight=&5120& class=&origin_image zh-lightbox-thumb& width=&8196& data-original=&https://pic1.zhimg.com/v2-a55e2efadb6d32_r.jpg&&&/figure&我们还展示了包含有全局直方图信息的扩展性网络,请参阅论文的第3.3节和第4.4节。下图是应用随机直方图的转化效果。&/p&&h1&&figure&&img src=&https://pic4.zhimg.com/v2-f785e32acea42fe6f7896c_b.jpg& data-rawwidth=&14222& data-rawheight=&4078& class=&origin_image zh-lightbox-thumb& width=&14222& data-original=&https://pic4.zhimg.com/v2-f785e32acea42fe6f7896c_r.jpg&&&/figure&网络架构&/h1&&h1&&figure&&img src=&https://pic3.zhimg.com/v2-4efbb667ddd231_b.jpg& data-rawwidth=&12475& data-rawheight=&4295& class=&origin_image zh-lightbox-thumb& width=&12475& data-original=&https://pic3.zhimg.com/v2-4efbb667ddd231_r.jpg&&&/figure&相关地址&/h1&&p&项目主页:&a href=&https://link.zhihu.com/?target=https%3A//richzhang.github.io/ideepcolor/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Real-Time User-Guided Image Colorization with Learned Deep Priors. In SIGGRAPH, 2017.&/a&&/p&&p&Paper:&/p&&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/pdf/.pdf& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&https://&/span&&span class=&visible&&arxiv.org/pdf/&/span&&span class=&invisible&&9.pdf&/span&&span class=&ellipsis&&&/span&&/a&&p&Code:&br&&/p&&a href=&https://link.zhihu.com/?target=https%3A//github.com/junyanz/interactive-deep-colorization& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&junyanz/interactive-deep-colorization&/a&&p&(完)&/p&&p&==========&/p&&p&&b&One More Thing…&/b&&/p&&p&今天AI界还有哪些事值得关注?在量子位(QbitAI)公众号对话界面回复“今天”,看我们全网搜罗的AI行业和研究动态。笔芯~&/p&
@ 编译整理 量子位 报道 | 公众号 QbitAI最近,来自加州大学伯克利分校的RICHARD ZHANG、JUN-YAN ZHU、PHILLIP ISOLA等人又写了一篇题为“用Learned Deep Priors来实时指导图像着色”的论文,这篇文章提出了一种有趣的图像着色方案。以下是论文的主要…
&figure&&img src=&https://pic4.zhimg.com/v2-af113bc9076feed_b.jpg& data-rawwidth=&1440& data-rawheight=&502& class=&origin_image zh-lightbox-thumb& width=&1440& data-original=&https://pic4.zhimg.com/v2-af113bc9076feed_r.jpg&&&/figure&&p&作者:&a href=&https://link.zhihu.com/?target=http%3A//www.alexirpan.com//rl-hard.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Alex Irpan&/a&&/p&&p&编者按:强化学习是机器学习中的一个领域,它强调如何基于环境而行动,以取得最大化的预期利益。近年来,强化学习的大型研究层见迭出,以AlphaGo为代表的成果不仅轰动了学术界,也吸引了媒体的目光。那么强化学习真的是人工智能的新希望吗?春节期间,谷歌软件工程师Alex Irpan引用了过去几年Berkeley、Google Brain、DeepMind和OpenAI的论文,详细介绍了强化学习的弱点和局限。&/p&&p&一次,我在Facebook上发了这样一句话:&/p&&blockquote&&b&&i&每当有人问我强化学习能否解决他们的问题时,我会说“不能”。而且我发现这个回答起码在70%的场合下是正确的。&/i&&/b&&/blockquote&&figure&&img src=&https://pic2.zhimg.com/v2-2e72a91dc526888aadca0f27713c83ab_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&450& data-rawheight=&334& class=&origin_image zh-lightbox-thumb& width=&450& data-original=&https://pic2.zhimg.com/v2-2e72a91dc526888aadca0f27713c83ab_r.jpg&&&/figure&&p&如今深度强化学习(Deep RL)已经被大量媒体宣传包围。从积极的角度看,强化学习(RL)称得上是万金油,而且它的效果好得令人难以置信,理论上讲,一个强大的、高性能的RL系统应该能解决任何问题。在这基础上,我们把深度学习的思想与之结合起来,这样的尝试是合适的。而且就当前的情况看,Deep RL是最接近AGI的事物之一,它也为吸引了数十亿美元投资的“人工智能梦”提供了助燃剂。&/p&&p&但不幸的是,Deep RL目前还有许多局限。&/p&&p&我相信Deep RL前途无限,如果不是,我也不会选择它作为自己的努力方向。但是说实话,Deep RL还存在很多问题,而且许多问题从根源上就很难解决。表面上人们看到的是仿佛拥有智力的智能体漂亮地完成了任务,但它背后的血汗和泪水只有我们知道。&/p&&p&有好几次,我看到有人被近期的Deep RL工作所吸引,然后毅然投身研究,但他们无一例外地低估了强化学习的深层困难。“玩具问题”并没有他们想象中那么容易,入门强化学习,很可能也就意味着将面对很多次彻底失败,直到那些人在跌倒中学会如何设定现实的研究预期。&/p&&p&我希望能在未来看到更多深层次的RL研究,也希望这个领域能有源源不断的新鲜血液,但是,我也希望这些新人能真正知道他们进入的是一个什么样的世界。&/p&&h2&深度强化学习堪忧的采样效率&/h2&&p&雅达利游戏是深度强化学习最著名的一个基准。正如Deep Q-Networks论文所示,如果将Q-Learning与合理大小的神经网络,以及一些优化技巧相结合,研究人员可以在几个雅达利游戏中实现与人类持平或超越人类的表现。&/p&&p&雅达利游戏以每秒60帧的速度运行,那么试想一下,如果要让现在最先进的DQN达到人类玩家的水准,它需要多少帧?&/p&&p&答案取决于游戏。我们可以先看看DeepMind近期的一篇论文:&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Rainbow: Combining Improvements in Deep Reinforcement Learning&/a&。这篇论文对原始DQN框架做了一些渐进式改进,证明他们的RainbowDQN性能更优。在实验中,智能体进行了57场雅达利游戏,并在40场中超越了人类玩家。&/p&&figure&&img src=&https://pic4.zhimg.com/v2-bf578bcc06c_b.jpg& data-size=&normal& data-rawwidth=&878& data-rawheight=&831& class=&origin_image zh-lightbox-thumb& width=&878& data-original=&https://pic4.zhimg.com/v2-bf578bcc06c_r.jpg&&&figcaption&最上方的彩色曲线为RainbowDQN&/figcaption&&/figure&&p&上图的y轴是人类玩家表现的中等水平得分,研究人员观察了DQN在57场比赛的中的表现,计算了智能体得分情况,之后把人类表现作为衡量指标,绘制出智能体性能曲线。可以看到,RainbowDQN曲线的纵轴在1800万帧时突破100%,也就是超越人类。这相当于83个小时的游戏时间,其中包括训练用时和真实游戏用时,但在大多数时候,人类玩家上手雅达利游戏可能只需要短短几分钟。&/p&&p&需要注意的是,相比较Distributional DQN(橙线)的7000万帧,其实RainbowDQN1800万的成绩称得上是一个不小的突破。要知道仅在三年前,Nature刊登了一篇介绍了原始DQN(黄线)的强化学习论文,而它在实验中的表现是在2亿帧后还无法达到100%。&/p&&p&诺贝尔奖获得者Kahneman和Tversky曾提出一个概念:规划谬误(planning fallacy)。它指的是人们对于完成某件事会持乐观心里,因此低估任务完成时间。Deep RL有其自身的规划谬误——学习策略需要的样本往往比事先预想的多得多。&/p&&p&事实上雅达利游戏并不是唯一的问题。强化学习领域另一个颇受欢迎的基准是MuJoCo基准测试,这是MuJoCo物理模拟器中的一组任务。在这些任务中,系统的输入通常是某个模拟机器人每个关节的位置和速度。但即便是这么简单的任务,系统通常也要经过000000个步骤才能完成学习,它所需的经验量大得惊人。&/p&&p&下面演示的是DeepMind的跑酷机器人,研究人员在论文&a href=&https://link.zhihu.com/?target=https%3A//arxiv.org/abs/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Emergence of Locomotion Behaviours in Rich Environments&/a&中介绍称实验用了64名worker和100小时,虽然他们并没有解释worker是什么,但我认为一个worker就相当于一个CPU。&/p&&p&观看视频请前往:&a href=&https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s%3F__biz%3DMzI3ODkxODU3Mg%3D%3D%26mid%3D%26idx%3D1%26sn%3D6b71f5f8ebd4eb97ce92a9c%26chksm%3Deb4eec6adcf1ae9ce477e4dadeb26a11ed7eccfd935a8%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深度强化学习的弱点和局限&/a&&/p&&p&DeepMind的成果很棒,这个视频刚发布时,我还因强化学习能让机器人学会跑步惊讶了许久。但在看过论文后,6400小时的CPU耗时还是有点令人沮丧。这不是说我认为它耗时过久,而是Deep RL的实际采样效率还是比预想的高了几个数量级,这一点更让人失望。&/p&&p&这里有一个问题:如果我们忽略采样效率,后果会怎样?如果只是为了获取经验,有时我们只需要调整几个参数就可以了,游戏就是一个很典型的例子。但是如果这个做法不管用了,那强化学习就会陷入艰难的境地。不幸的是,大多数现实世界的任务属于后者。&/p&&h2&如果只关心最终性能,其他方法效果更好&/h2&&p&在为研究课题寻找解决方案时,研究人员往往要做出“抉择”。一方面,他们可以只关心任务的完成效果,即优化一种性能最佳的方法;另一方面,他们也可以参考前人的成果,优化一种科研价值更高的方法,但它的最终效果不一定是最好的。理想的情况是兼顾性能最优和贡献最大,但鱼与熊掌不可兼得,这样的研究课题可遇不可求。&/p&&p&谈及更好的最终效果,Deep RL的表现有些不尽如人意,因为它实际上是被其他方法吊打的。下面是MuJoCo机器人的一个视频,通过在线轨迹优化控制,系统可以近乎实时地在线进行计算,而无需离线训练。需要提一点的是,这是2012年的成果。&/p&&p&观看视频请前往:&a href=&https://link.zhihu.com/?target=https%3A//mp.weixin.qq.com/s%3F__biz%3DMzI3ODkxODU3Mg%3D%3D%26mid%3D%26idx%3D1%26sn%3D6b71f5f8ebd4eb97ce92a9c%26chksm%3Deb4eec6adcf1ae9ce477e4dadeb26a11ed7eccfd935a8%23rd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深度强化学习的弱点和局限&/a&&/p&&p&这个视频刚好可以拿来和跑酷视频相比。两篇论文最大的不同在于这篇论文使用的是模型预测控制,它可以针对地面实况世界模型(物理模拟器)进行规划,而不构建模型的强化学习系统没有这个规划的过程,因此学习起来更困难。&/p&&p&换言之,如果直接针对某个模型进行规划效果更好,那我们为什么还要花精力去训练RL策略?&/p&&p&同样的,现成的蒙特卡洛树搜索在雅达利游戏中也能轻松超越DQN。2014年,密歇根大学的论文&a href=&https://link.zhihu.com/?target=https%3A//papers.nips.cc/paper/5421-deep-learning-for-real-time-atari-game-play-using-offline-monte-carlo-tree-search-planning.pdf& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Deep Learning for Real-Time Atari Game Play Using Offline Monte-Carlo Tree Search Planning&/a&被NIPS收录,它研究的是在实时Atari游戏中用离线蒙特卡洛树搜索的效果。如下图所示,研究人员把DQN的得分和UCT(UCT是如今MCTS的标准版本)智能体的得分相比较,发现后者的性能更加优秀。&/p&&figure&&img src=&https://pic1.zhimg.com/v2-a0f773ceb_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&654& data-rawheight=&71& class=&origin_image zh-lightbox-thumb& width=&654& data-original=&https://pic1.zhimg.com/v2-a0f773ceb_r.jpg&&&/figure&&figure&&img src=&https://pic2.zhimg.com/v2-d92c1ac34c03e0f58c3b9e_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&531& data-rawheight=&55& class=&origin_image zh-lightbox-thumb& width=&531& data-original=&https://pic2.zhimg.com/v2-d92c1ac34c03e0f58c3b9e_r.jpg&&&/figure&&p&需要注意的是,这又是一次不公平的对比,因为DQN不能搜索,而MCTS可以根据地面实况模型(雅达利模拟器)执行搜索。但是这种程度的不公平有时是不重要的,如果你只想得到一个好结果的话。&/p&&p&强化学习理论上可以用于任何事情,包括世界模型未知的环境。然而,这种通用性也是有代价的,就是我们很难把它用于任何有助于学习的特定问题上。这迫使我们不得不需要使用大量样本来学习,尽管这些问题可能用简单的编码就能解决。&/p&&p&因此除少数情况外,特定领域的算法会比强化学习更有效。如果你入门强化学习是出于对它的热爱,这没问题,但当你想把自己的强化学习成果和其他方法相比较时,你要做好心理准备。此外,如果你还对机器人这个问题感到费解,比如Deep RL训练的机器人和经典机器人技术制作的机器人的差距究竟有多大,你可以看看知名仿生机器人公司的产品——如波士顿动力。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-211ca39cabc686aec3b35d1_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&741& data-rawheight=&417& data-thumbnail=&https://pic3.zhimg.com/v2-211ca39cabc686aec3b35d1_b.jpg& class=&origin_image zh-lightbox-thumb& width=&741& data-original=&https://pic3.zhimg.com/v2-211ca39cabc686aec3b35d1_r.jpg&&&/figure&&p&这个双足机器人Atlas没有用到任何强化学习技术,阅读他们的论文可以发现,它用的还是time-varying LQR、QP solvers和凸优化这些传统手段。所以如果使用正确的话,经典技术在特定问题上的表现会更好。&/p&&h2&强化学习通常需要奖励&/h2&&p&强化学习的一个重要假设是存在奖励,它能引导智能体向“正确”的方向前进。这个奖励函数可以是研究人员设置的,也可以是离线手动调试的,它在学习过程中一般是一个固定值。之所以说“一般”,是因为有时也有例外,如模仿学习和逆RL,但大多数强化学习方法都把奖励视为“预言”。&/p&&p&更重要的是,为了让智能体做正确的事,系统的奖励函数必须能准确捕捉研究人员想要的东西。注意,是准确。强化学习有一种恼人的倾向,就是如果设置的奖励过度拟合你的目标,智能体会容易钻空子,产生预期外的结果。这也是雅达利游戏是一个理想基准的原因,因为游戏不仅能提供大量样本,每场比赛的目标都是最大限度地提高得分,所以我们不用担心怎么定义奖励。&/p&&p&同样的,MuJoCo由于是在在模拟中运行的,所以我们对目标的所有状态了如指掌,奖励函数容易设计,这也是它广受欢迎的主要原因。&/p&&figure&&img src=&https://pic3.zhimg.com/v2-fd8a6f00a8df224_b.jpg& data-caption=&& data-size=&normal& data-rawwidth=&539& data-rawheight=&294& data-thumbnail=&https://pic3.zhimg.com/v2-fd8a6f00a8df224_b.jpg& class=&origin_image zh-lightbox-thumb& width=&539& data-original=&https://pic3.zhimg.com/v2-fd8a6f00a8df224_r.jpg&&&/figure&&p&上图是Reacher任务,我们需要控制连接到中心点(蓝点)的这个手臂,让手臂末端(橙点)与红色目标物重合。由于所有位置都是已知的,我们可以把奖励定义为手臂末端到目标的距离,再加上一个小的控制成本。理论上,如果传感器足够灵敏,我们完全可以把这个任务放到现实环境中实现。但一旦涉及通过解决这个问题我们想让系统做什么,任务的奖励就很难设计了。&/p&&p&当然,就其本身而言,有奖励函数并不是什么太大的问题,但是它之后会造成一些连锁反应。&/p&&h2&奖励函数设计困难&/h2&&p&设置一个回报函数不是什么难事,但当你试图设计一个奖励函数来鼓励想要的行动,同时仍想让智能体不断学习时,困难就随之而来了。&/p&&p&在HalfCheetah环境中,我们有一个受限于一个垂直平面的双足机器人,这意味着它只能向前或向后运动。&

我要回帖

更多关于 97.ai蜜桃.com 的文章

 

随机推荐