2018年3月5日星期一

无人出租车这场仗,Uber怕是要被Google彻底击败了

李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI

这个春天的无人车转折,都有点神!

昨天,中国无人车第一案意外剧情,景驰宣布加入百度Apollo。无独有偶,曾经和Google在无人车上对抗多年的Uber,如今一退再退,堪称雌伏不起。

继不久前在全球无人车第一案认怂后,当年雄心勃勃的Uber,被爆出正寻求与"宿敌"谷歌Waymo重修旧好,希望能抱着谷歌大腿,一起吃下无人出租车这个市场。

通俗点说,国外的滴滴,准备向国外的百度,全面低头了。

惊不惊喜?意不意外?

换帅如换天

据The Information消息,在结束与Waymo的官司纠纷后,Uber不但不记仇,还提出一个更大胆的想法:希望和谷歌重修旧好,与Waymo合作部署自动驾驶。

提出重修旧好的那个人,是Uber现任CEO Dara Khosrowshahi。

自这位Uber新任CEO去年上任以来,这种想法便已经传达给了Uber管理层。一名Uber高管还直接向Waymo表达了想法:双方合作,Uber有出行网络,Waymo有领先的自动驾驶技术,强强联手,实现共赢。

这与Uber前任CEO卡兰尼克的想法截然不同。

在这位创始人执掌公司期间,Uber与谷歌经历了"结婚蜜月-分道扬镳-策反挖角-对簿公堂"的一系列过山车剧情。而且Uber一直和谷歌在无人车这件事上强势竞争。

按理说,Uber更有动力全情投入无人车,毕竟无人出租车的浪潮抓不住,对Uber是更致命的威胁。但对谷歌来说,致命程度要低得多。不过,似乎Uber没能跟上谷歌的技术脚步。

但是……

谷歌并没有表现出太大的热情。

没有任何迹象表明,Waymo目前有意联手Uber。在被问及这件事时,谷歌官方根本没回应。反而是Uber官方表态说:"自动驾驶技术是未来交通不可或缺的一部分。我们对所有带来进步的对话敞开大门。"

Uber肯定心里急。毕竟谷歌不止在技术上更领先,而且最近还投资了Uber的竞争对手Lyft。

当然,这家出行公司并没有停止开发自动驾驶技术。但现任CEO比前任更加明确的意识到,谷歌的无人车比Uber的更厉害,这个消息来自一位内部人士。

上个月在高盛的一个会议上,Uber现任CEO公开放话:"我们将无人车方面积极展开合作",对Uber而言胜利不是在自动驾驶技术上独步天下,而是"确保每一辆无人车都运行在Uber的叫车网络里……因为,这个网络才是我们的业务"。

真是换帅就是换天,天变了,道也在变。

利益=盟友

当然,时移世易,如今有利可图,为啥不能一切朝钱看?

好处自然也是显而易见的。

一方面,Uber-Waymo一旦正式合作,对于无人车出行市场必然是笔重磅交易,Uber有最大且成熟的出行运营网络,Waymo有自动驾驶领域一骑绝尘的技术,双方合作,对整个市场都会是巨大冲击,财务回报也是题中之义。

虽然Waymo自营出行平台,可以拿下全部收入,但跟Uber合作,可以大大降低成本,并且只做擅长的事就够了。

Uber也一点不亏,Uber现任CEO在内部会议上更新了算账方式——如果用自动驾驶替代司机,不仅能够把2.5美元(15元)/英里的打车价格降低到1美元(6.5元)/英里,而且全年无休、24小时昼夜不停的出行服务,会让更多人不再购买汽车,营收空间倍速扩张。

另一方面,Uber和Waymo合作,也能打击竞争对手Lyft。在Uber深陷泥潭期间,Lyft不仅趁机加快市场份额抢占,而且多方合作,特别是牵手Waymo(融资+合作),一度使其士气高涨。

但在Waymo内部,合作思路方面一直兼容并包,始终不希望局限于某一家。即便与Uber交恶,Waymo高管们还始终认为Uber会是潜在的合作伙伴,所以Uber有意,Waymo自然也不会无情。

然而对Uber来说,一口独立自主的真气松懈,也多半能让人预见无人出租车这场战役的结局:Uber怕是要被Google彻底击败了。

命运不自主

亚瑟王有云:命运掌握在自己手中,如果受制于人,那错不在命运,在于自己。

Uber的自动驾驶同理。

这匹开创共享出行的超级独角兽,并非不知道独立自主发展自动驾驶的重要性。

这也是卡兰尼克跟谷歌闹翻的直接原因。

那段不得不提的Uber-谷歌旧姻缘,从2013年说起。当时谷歌向Uber投资了2.58亿美元,并在2014年Uber新一轮融资中进一步跟投,还派时任CFO兼公司发展高级副总裁大卫·德拉蒙德(David Drummond)还代表谷歌进入Uber董事会,谷歌地图也专门为Uber提供特别的打折优惠。

然而蜜月期短暂而迅速,转折来得骤雨疾风。

一边是卡兰尼克把谷歌的董事会代表请了出去,另一边双方业务也开始展现出冲突,Uber开始讲起雄心勃勃的自动驾驶出行故事,谷歌索性在Uber大本营全面上线了出行App Waze。

后来的故事就更知名了。

谷歌无人车核心工程师莱万多夫斯基出走,创立Otto,然后Uber天价收购了这家无人车公司。

紧接着一系列意外之后,双方围绕知识产权和商业机密,打响了全球无人车专利纠纷的第一枪。

当然,也是因为这个诉讼案,竟然让不少人对Uber发展自动驾驶的前景更看好了。

一方面是引得全球独步的Waymo特殊关照,可能有些官司关注点之外的原因;另一方面是Uber在自动驾驶方面的狂飙突进,比如一下子挖空CMU自动驾驶团队,还有出于被颠覆的背水一战的危机意识。

但是,随着Uber在2017年开始掉入泥潭,一系列问题接踵而至:性骚扰、被抵制、高管团队去职等负面打击,公司人心不定。

自动驾驶研发也屋漏偏逢连夜雨:先是一起事故让其叫停了自动驾驶测试(后来证实是人类司机方全责),然后又在与Waymo的官司上,不断陷入被动地位(更多证据被曝光)。

最后,Uber不仅损失了莱万多夫斯基,也在泥潭2017中丢掉了创始人及CEO卡兰尼克。

曾经一手好牌,最后枯藤老树。

Waymo遥遥领先

而且光从自动驾驶技术而言,Waymo堪称遥遥领先。

最近,Waymo高调宣布其在公共道路上的自动驾驶行驶里程已经达到500万英里,全球独步。

上个月,更重磅的消息是Waymo要在今年推出自己的共享出行服务平台,并在该平台上启用一支全自动驾驶车队,于亚利桑那州首府凤凰城,开启昼夜不停地无人车出租运营。

另外,全美其他20个城市的测试也将开启,而且大概率上不会测试一年以上事件了,毕竟凤凰城的经验可以参考甚至复制。

What a 致命一击!

Uber目前还没有这样的技术实力,出行网络的优势也在不断损耗。如果算一些慰藉或信号,那好消息是Uber新CEO上任后壕购了2.4万辆沃尔沃XC90,宣称将组建一支SUV无人车队。另外,今年1月还给出了一个"18个月"上路的自动驾驶商用时间表。

然而,技术实力怎么样,Uber自己肯定心中有数。

量子位之前也打听过,Uber可能会在简单场景中先推出自动驾驶服务,比如机场到市区之类的,但公开道路开放场景中昼夜不停运营无人出租,Uber现在心有余而力不足。

所以无人车出租这场仗,除非Uber再有神转折,否则恐怕早已失掉了战略主动权。

这么一看,出行行业之惨烈,确实让人不得不心疼Uber——或许也绕不过滴滴。

方兴未艾之时要与监管斗,势如破竹之时要跟竞争对手厮杀,中间还要遭遇出租车司机、既得利益者抗议。现在,行业格局初定,颠覆者形象出现的Uber滴滴等,却面临无人车玩家的边缘创新和颠覆。

一刻不得闲,想想就扎心。

当然,也不全是悲观的一面。

假如最后真和Waymo达成合作了呢?Uber的IPO上市,应该会相对顺利一点。

但梦想已经不复当年。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2tn16xM
RSS Feed

RSS5

IFTTT

无人出租车这场仗,Uber怕是要被Google彻底击败了

李根 发自 凹非寺 量子位 报道 | 公众号 QbitAI

这个春天的无人车转折,都有点神!

昨天,中国无人车第一案意外剧情,景驰宣布加入百度Apollo。无独有偶,曾经和Google在无人车上对抗多年的Uber,如今一退再退,堪称雌伏不起。

继不久前在全球无人车第一案认怂后,当年雄心勃勃的Uber,被爆出正寻求与"宿敌"谷歌Waymo重修旧好,希望能抱着谷歌大腿,一起吃下无人出租车这个市场。

通俗点说,国外的滴滴,准备向国外的百度,全面低头了。

惊不惊喜?意不意外?

换帅如换天

据The Information消息,在结束与Waymo的官司纠纷后,Uber不但不记仇,还提出一个更大胆的想法:希望和谷歌重修旧好,与Waymo合作部署自动驾驶。

提出重修旧好的那个人,是Uber现任CEO Dara Khosrowshahi。

自这位Uber新任CEO去年上任以来,这种想法便已经传达给了Uber管理层。一名Uber高管还直接向Waymo表达了想法:双方合作,Uber有出行网络,Waymo有领先的自动驾驶技术,强强联手,实现共赢。

这与Uber前任CEO卡兰尼克的想法截然不同。

在这位创始人执掌公司期间,Uber与谷歌经历了"结婚蜜月-分道扬镳-策反挖角-对簿公堂"的一系列过山车剧情。而且Uber一直和谷歌在无人车这件事上强势竞争。

按理说,Uber更有动力全情投入无人车,毕竟无人出租车的浪潮抓不住,对Uber是更致命的威胁。但对谷歌来说,致命程度要低得多。不过,似乎Uber没能跟上谷歌的技术脚步。

但是……

谷歌并没有表现出太大的热情。

没有任何迹象表明,Waymo目前有意联手Uber。在被问及这件事时,谷歌官方根本没回应。反而是Uber官方表态说:"自动驾驶技术是未来交通不可或缺的一部分。我们对所有带来进步的对话敞开大门。"

Uber肯定心里急。毕竟谷歌不止在技术上更领先,而且最近还投资了Uber的竞争对手Lyft。

当然,这家出行公司并没有停止开发自动驾驶技术。但现任CEO比前任更加明确的意识到,谷歌的无人车比Uber的更厉害,这个消息来自一位内部人士。

上个月在高盛的一个会议上,Uber现任CEO公开放话:"我们将无人车方面积极展开合作",对Uber而言胜利不是在自动驾驶技术上独步天下,而是"确保每一辆无人车都运行在Uber的叫车网络里……因为,这个网络才是我们的业务"。

真是换帅就是换天,天变了,道也在变。

利益=盟友

当然,时移世易,如今有利可图,为啥不能一切朝钱看?

好处自然也是显而易见的。

一方面,Uber-Waymo一旦正式合作,对于无人车出行市场必然是笔重磅交易,Uber有最大且成熟的出行运营网络,Waymo有自动驾驶领域一骑绝尘的技术,双方合作,对整个市场都会是巨大冲击,财务回报也是题中之义。

虽然Waymo自营出行平台,可以拿下全部收入,但跟Uber合作,可以大大降低成本,并且只做擅长的事就够了。

Uber也一点不亏,Uber现任CEO在内部会议上更新了算账方式——如果用自动驾驶替代司机,不仅能够把2.5美元(15元)/英里的打车价格降低到1美元(6.5元)/英里,而且全年无休、24小时昼夜不停的出行服务,会让更多人不再购买汽车,营收空间倍速扩张。

另一方面,Uber和Waymo合作,也能打击竞争对手Lyft。在Uber深陷泥潭期间,Lyft不仅趁机加快市场份额抢占,而且多方合作,特别是牵手Waymo(融资+合作),一度使其士气高涨。

但在Waymo内部,合作思路方面一直兼容并包,始终不希望局限于某一家。即便与Uber交恶,Waymo高管们还始终认为Uber会是潜在的合作伙伴,所以Uber有意,Waymo自然也不会无情。

然而对Uber来说,一口独立自主的真气松懈,也多半能让人预见无人出租车这场战役的结局:Uber怕是要被Google彻底击败了。

命运不自主

亚瑟王有云:命运掌握在自己手中,如果受制于人,那错不在命运,在于自己。

Uber的自动驾驶同理。

这匹开创共享出行的超级独角兽,并非不知道独立自主发展自动驾驶的重要性。

这也是卡兰尼克跟谷歌闹翻的直接原因。

那段不得不提的Uber-谷歌旧姻缘,从2013年说起。当时谷歌向Uber投资了2.58亿美元,并在2014年Uber新一轮融资中进一步跟投,还派时任CFO兼公司发展高级副总裁大卫·德拉蒙德(David Drummond)还代表谷歌进入Uber董事会,谷歌地图也专门为Uber提供特别的打折优惠。

然而蜜月期短暂而迅速,转折来得骤雨疾风。

一边是卡兰尼克把谷歌的董事会代表请了出去,另一边双方业务也开始展现出冲突,Uber开始讲起雄心勃勃的自动驾驶出行故事,谷歌索性在Uber大本营全面上线了出行App Waze。

后来的故事就更知名了。

谷歌无人车核心工程师莱万多夫斯基出走,创立Otto,然后Uber天价收购了这家无人车公司。

紧接着一系列意外之后,双方围绕知识产权和商业机密,打响了全球无人车专利纠纷的第一枪。

当然,也是因为这个诉讼案,竟然让不少人对Uber发展自动驾驶的前景更看好了。

一方面是引得全球独步的Waymo特殊关照,可能有些官司关注点之外的原因;另一方面是Uber在自动驾驶方面的狂飙突进,比如一下子挖空CMU自动驾驶团队,还有出于被颠覆的背水一战的危机意识。

但是,随着Uber在2017年开始掉入泥潭,一系列问题接踵而至:性骚扰、被抵制、高管团队去职等负面打击,公司人心不定。

自动驾驶研发也屋漏偏逢连夜雨:先是一起事故让其叫停了自动驾驶测试(后来证实是人类司机方全责),然后又在与Waymo的官司上,不断陷入被动地位(更多证据被曝光)。

最后,Uber不仅损失了莱万多夫斯基,也在泥潭2017中丢掉了创始人及CEO卡兰尼克。

曾经一手好牌,最后枯藤老树。

Waymo遥遥领先

而且光从自动驾驶技术而言,Waymo堪称遥遥领先。

最近,Waymo高调宣布其在公共道路上的自动驾驶行驶里程已经达到500万英里,全球独步。

上个月,更重磅的消息是Waymo要在今年推出自己的共享出行服务平台,并在该平台上启用一支全自动驾驶车队,于亚利桑那州首府凤凰城,开启昼夜不停地无人车出租运营。

另外,全美其他20个城市的测试也将开启,而且大概率上不会测试一年以上事件了,毕竟凤凰城的经验可以参考甚至复制。

What a 致命一击!

Uber目前还没有这样的技术实力,出行网络的优势也在不断损耗。如果算一些慰藉或信号,那好消息是Uber新CEO上任后壕购了2.4万辆沃尔沃XC90,宣称将组建一支SUV无人车队。另外,今年1月还给出了一个"18个月"上路的自动驾驶商用时间表。

然而,技术实力怎么样,Uber自己肯定心中有数。

量子位之前也打听过,Uber可能会在简单场景中先推出自动驾驶服务,比如机场到市区之类的,但公开道路开放场景中昼夜不停运营无人出租,Uber现在心有余而力不足。

所以无人车出租这场仗,除非Uber再有神转折,否则恐怕早已失掉了战略主动权。

这么一看,出行行业之惨烈,确实让人不得不心疼Uber——或许也绕不过滴滴。

方兴未艾之时要与监管斗,势如破竹之时要跟竞争对手厮杀,中间还要遭遇出租车司机、既得利益者抗议。现在,行业格局初定,颠覆者形象出现的Uber滴滴等,却面临无人车玩家的边缘创新和颠覆。

一刻不得闲,想想就扎心。

当然,也不全是悲观的一面。

假如最后真和Waymo达成合作了呢?Uber的IPO上市,应该会相对顺利一点。

但梦想已经不复当年。

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2tn16xM
RSS Feed

RSS5

IFTTT

Keras官方中文版文档来了~

发布三年之后,Keras终于有了官方中文版文档。

今年1月,Keras作者、谷歌AI研究员François Chollet在推特上发出召唤:讲中文的Keras用户们,是否有人愿意帮忙一起搞个Keras文档的中文版?

一个多月后,官方中文文档来了。

地址:https://keras.io/zh/

顺手贴一张页面的截图。

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。

上面这段介绍,就来自最新发布的官方中文文档。

其实,之前Keras有中文文档,只不过那是用户自发组织整理的"民间"版本。粗略的看了一下,感觉官方中文版的翻译更顺畅一点。

"民间"版的Keras中文文档地址在此:

http://ift.tt/2dxZHYD

François Chollet在推特上感谢了对此有贡献的所有人,不过没有具体点名。不管怎样,有需求的同学,可以收藏这个网址,中文版看起来应该更省心了。

此外,在之前的翻译过程中,还在GitHub上建立了一个repo,其中表明了这个项目使用的排版规范,以及翻译对照列表等。

有兴趣的朋友可以看一下,地址:http://ift.tt/2FghUMy

好了,就酱~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2FhfnNZ
RSS Feed

RSS5

IFTTT

Keras官方中文版文档来了~

发布三年之后,Keras终于有了官方中文版文档。

今年1月,Keras作者、谷歌AI研究员François Chollet在推特上发出召唤:讲中文的Keras用户们,是否有人愿意帮忙一起搞个Keras文档的中文版?

一个多月后,官方中文文档来了。

地址:https://keras.io/zh/

顺手贴一张页面的截图。

Keras 是一个用 Python 编写的高级神经网络 API,它能够以 TensorFlow, CNTK, 或者 Theano 作为后端运行。Keras 的开发重点是支持快速的实验。能够以最小的时延把你的想法转换为实验结果,是做好研究的关键。

上面这段介绍,就来自最新发布的官方中文文档。

其实,之前Keras有中文文档,只不过那是用户自发组织整理的"民间"版本。粗略的看了一下,感觉官方中文版的翻译更顺畅一点。

"民间"版的Keras中文文档地址在此:

http://ift.tt/2dxZHYD

François Chollet在推特上感谢了对此有贡献的所有人,不过没有具体点名。不管怎样,有需求的同学,可以收藏这个网址,中文版看起来应该更省心了。

此外,在之前的翻译过程中,还在GitHub上建立了一个repo,其中表明了这个项目使用的排版规范,以及翻译对照列表等。

有兴趣的朋友可以看一下,地址:http://ift.tt/2FghUMy

好了,就酱~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2FhfnNZ
RSS Feed

RSS5

IFTTT

2018年3月4日星期日

自编码器是什么?有什么用?这里有一份入门指南(附代码)

作者 Nathan Hubens@王小新 编译自 Towards Data Science量子位 出品 | 公众号 QbitAI

自编码器(Autoencoder,AE),是一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。

自编码器由两部分组成:

编码器:这部分能将输入压缩成潜在空间表征,可以用编码函数h=f(x)表示。

解码器:这部分能重构来自潜在空间表征的输入,可以用解码函数r=g(h)表示。

因此,整个自编码器可以用函数g(f(x)) = r来描述,其中输出r与原始输入x相近。

为何要用输入来重构输出?

如果自编码器的唯一目的是让输出值等于输入值,那这个算法将毫无用处。事实上,我们希望通过训练输出值等于输入值的自编码器,让潜在表征h将具有价值属性

这可通过在重构任务中构建约束来实现。

从自编码器获得有用特征的一种方法是,限制h的维度使其小于输入x,这种情况下称作有损自编码器。通过训练有损表征,使得自编码器能学习到数据中最重要的特征。

如果自编码器的容量过大,它无需提取关于数据分布的任何有用信息,即可较好地执行重构任务。

如果潜在表征的维度与输入相同,或是在过完备案例中潜在表征的维度大于输入,上述结果也会出现。

在这些情况下,即使只使用线性编码器和线性解码器,也能很好地利用输入重构输出,且无需了解有关数据分布的任何有用信息。

在理想情况下,根据要分配的数据复杂度,来准确选择编码器和解码器的编码维数和容量,就可以成功地训练出任何所需的自编码器结构。

自编码器用来干什么?

目前,自编码器的应用主要有两个方面,第一是数据去噪,第二是为进行可视化而降维。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。

自编码器能从数据样本中进行无监督学习,这意味着可将这个算法应用到某个数据集中,来取得良好的性能,且不需要任何新的特征工程,只需要适当地训练数据。

但是,自编码器在图像压缩方面表现得不好。由于在某个给定数据集上训练自编码器,因此它在处理与训练集相类似的数据时可达到合理的压缩结果,但是在压缩差异较大的其他图像时效果不佳。这里,像JPEG这样的压缩技术在通用图像压缩方面会表现得更好。

训练自编码器,可以使输入通过编码器和解码器后,保留尽可能多的信息,但也可以训练自编码器来使新表征具有多种不同的属性。不同类型的自编码器旨在实现不同类型的属性。下面将重点介绍四种不同的自编码器。

四种不同的自编码器

本文将介绍以下四种不同的自编码器:

  1. 香草自编码器
  2. 多层自编码器
  3. 卷积自编码器
  4. 正则自编码器

为了说明不同类型的自编码器,我使用Keras框架和MNIST数据集对每个类型分别创建了示例。每种自编码器的代码都可在Github上找到:Yaka12/Autoencoders

香草自编码器

在这种自编码器的最简单结构中,只有三个网络层,即只有一个隐藏层的神经网络。它的输入和输出是相同的,可通过使用Adam优化器和均方误差损失函数,来学习如何重构输入。

在这里,如果隐含层维数(64)小于输入维数(784),则称这个编码器是有损的。通过这个约束,来迫使神经网络来学习数据的压缩表征。

input_size = 784 hidden_size = 64 output_size = 784  x = Input(shape=(input_size,))  # Encoder h = Dense(hidden_size, activation='relu')(x)  # Decoder r = Dense(output_size, activation='sigmoid')(h)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

多层自编码器

如果一个隐含层还不够,显然可以将自动编码器的隐含层数目进一步提高。

在这里,实现中使用了3个隐含层,而不是只有一个。任意一个隐含层都可以作为特征表征,但是为了使网络对称,我们使用了最中间的网络层。

input_size = 784 hidden_size = 128 code_size = 64  x = Input(shape=(input_size,))  # Encoder hidden_1 = Dense(hidden_size, activation='relu')(x) h = Dense(code_size, activation='relu')(hidden_1)  # Decoder hidden_2 = Dense(hidden_size, activation='relu')(h) r = Dense(input_size, activation='sigmoid')(hidden_2)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

卷积自编码器

你可能有个疑问,除了全连接层,自编码器应用到卷积层吗?

答案是肯定的,原理是一样的,但是要使用3D矢量(如图像)而不是展平后的一维矢量。对输入图像进行下采样,以提供较小维度的潜在表征,来迫使自编码器从压缩后的数据进行学习。

x = Input(shape=(28, 28,1))   # Encoder conv1_1 = Conv2D(16, (3, 3), activation='relu', padding='same')(x) pool1 = MaxPooling2D((2, 2), padding='same')(conv1_1) conv1_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool1) pool2 = MaxPooling2D((2, 2), padding='same')(conv1_2) conv1_3 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool2) h = MaxPooling2D((2, 2), padding='same')(conv1_3)  # Decoder conv2_1 = Conv2D(8, (3, 3), activation='relu', padding='same')(h) up1 = UpSampling2D((2, 2))(conv2_1) conv2_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(up1) up2 = UpSampling2D((2, 2))(conv2_2) conv2_3 = Conv2D(16, (3, 3), activation='relu')(up2) up3 = UpSampling2D((2, 2))(conv2_3) r = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(up3)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

正则自编码器

除了施加一个比输入维度小的隐含层,一些其他方法也可用来约束自编码器重构,如正则自编码器。

正则自编码器不需要使用浅层的编码器和解码器以及小的编码维数来限制模型容量,而是使用损失函数来鼓励模型学习其他特性(除了将输入复制到输出)。这些特性包括稀疏表征、小导数表征、以及对噪声或输入缺失的鲁棒性。

即使模型容量大到足以学习一个无意义的恒等函数,非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息。

在实际应用中,常用到两种正则自编码器,分别是稀疏自编码器和降噪自编码器。

稀疏自编码器

一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复现任务可以得到能学习有用特征的模型。

还有一种用来约束自动编码器重构的方法,是对其损失函数施加约束。比如,可对损失函数添加一个正则化约束,这样能使自编码器学习到数据的稀疏表征。

要注意,在隐含层中,我们还加入了L1正则化,作为优化阶段中损失函数的惩罚项。与香草自编码器相比,这样操作后的数据表征更为稀疏。

input_size = 784 hidden_size = 64 output_size = 784  x = Input(shape=(input_size,))  # Encoder h = Dense(hidden_size, activation='relu', activity_regularizer=regularizers.l1(10e-5))(x)  # Decoder r = Dense(output_size, activation='sigmoid')(h)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

降噪自编码器

这里不是通过对损失函数施加惩罚项,而是通过改变损失函数的重构误差项来学习一些有用信息。

向训练数据加入噪声,并使自编码器学会去除这种噪声来获得没有被噪声污染过的真实输入。因此,这就迫使编码器学习提取最重要的特征并学习输入数据中更加鲁棒的表征,这也是它的泛化能力比一般编码器强的原因。

这种结构可以通过梯度下降算法来训练。

x = Input(shape=(28, 28, 1))  # Encoder conv1_1 = Conv2D(32, (3, 3), activation='relu', padding='same')(x) pool1 = MaxPooling2D((2, 2), padding='same')(conv1_1) conv1_2 = Conv2D(32, (3, 3), activation='relu', padding='same')(pool1) h = MaxPooling2D((2, 2), padding='same')(conv1_2)  # Decoder conv2_1 = Conv2D(32, (3, 3), activation='relu', padding='same')(h) up1 = UpSampling2D((2, 2))(conv2_1) conv2_2 = Conv2D(32, (3, 3), activation='relu', padding='same')(up1) up2 = UpSampling2D((2, 2))(conv2_2) r = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(up2)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

总结

本文先介绍了自编码器的基本结构,还研究了许多不同类型的自编码器,如香草、多层、卷积和正则化,通过施加不同约束,包括缩小隐含层的维度和加入惩罚项,使每种自编码器都具有不同属性。

希望这篇文章能让深度学习初学者对自编码器有个很好的认识,有问题欢迎加入量子位的机器学习专业群(加小助手微信qbitbot5,注明机器学习群)一起讨论~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2tgabZ4
RSS Feed

RSS5

IFTTT

自编码器是什么?有什么用?这里有一份入门指南(附代码)

作者 Nathan Hubens@王小新 编译自 Towards Data Science量子位 出品 | 公众号 QbitAI

自编码器(Autoencoder,AE),是一种利用反向传播算法使得输出值等于输入值的神经网络,它先将输入压缩成潜在空间表征,然后通过这种表征来重构输出。

自编码器由两部分组成:

编码器:这部分能将输入压缩成潜在空间表征,可以用编码函数h=f(x)表示。

解码器:这部分能重构来自潜在空间表征的输入,可以用解码函数r=g(h)表示。

因此,整个自编码器可以用函数g(f(x)) = r来描述,其中输出r与原始输入x相近。

为何要用输入来重构输出?

如果自编码器的唯一目的是让输出值等于输入值,那这个算法将毫无用处。事实上,我们希望通过训练输出值等于输入值的自编码器,让潜在表征h将具有价值属性

这可通过在重构任务中构建约束来实现。

从自编码器获得有用特征的一种方法是,限制h的维度使其小于输入x,这种情况下称作有损自编码器。通过训练有损表征,使得自编码器能学习到数据中最重要的特征。

如果自编码器的容量过大,它无需提取关于数据分布的任何有用信息,即可较好地执行重构任务。

如果潜在表征的维度与输入相同,或是在过完备案例中潜在表征的维度大于输入,上述结果也会出现。

在这些情况下,即使只使用线性编码器和线性解码器,也能很好地利用输入重构输出,且无需了解有关数据分布的任何有用信息。

在理想情况下,根据要分配的数据复杂度,来准确选择编码器和解码器的编码维数和容量,就可以成功地训练出任何所需的自编码器结构。

自编码器用来干什么?

目前,自编码器的应用主要有两个方面,第一是数据去噪,第二是为进行可视化而降维。设置合适的维度和稀疏约束,自编码器可以学习到比PCA等技术更有意思的数据投影。

自编码器能从数据样本中进行无监督学习,这意味着可将这个算法应用到某个数据集中,来取得良好的性能,且不需要任何新的特征工程,只需要适当地训练数据。

但是,自编码器在图像压缩方面表现得不好。由于在某个给定数据集上训练自编码器,因此它在处理与训练集相类似的数据时可达到合理的压缩结果,但是在压缩差异较大的其他图像时效果不佳。这里,像JPEG这样的压缩技术在通用图像压缩方面会表现得更好。

训练自编码器,可以使输入通过编码器和解码器后,保留尽可能多的信息,但也可以训练自编码器来使新表征具有多种不同的属性。不同类型的自编码器旨在实现不同类型的属性。下面将重点介绍四种不同的自编码器。

四种不同的自编码器

本文将介绍以下四种不同的自编码器:

  1. 香草自编码器
  2. 多层自编码器
  3. 卷积自编码器
  4. 正则自编码器

为了说明不同类型的自编码器,我使用Keras框架和MNIST数据集对每个类型分别创建了示例。每种自编码器的代码都可在Github上找到:Yaka12/Autoencoders

香草自编码器

在这种自编码器的最简单结构中,只有三个网络层,即只有一个隐藏层的神经网络。它的输入和输出是相同的,可通过使用Adam优化器和均方误差损失函数,来学习如何重构输入。

在这里,如果隐含层维数(64)小于输入维数(784),则称这个编码器是有损的。通过这个约束,来迫使神经网络来学习数据的压缩表征。

input_size = 784 hidden_size = 64 output_size = 784  x = Input(shape=(input_size,))  # Encoder h = Dense(hidden_size, activation='relu')(x)  # Decoder r = Dense(output_size, activation='sigmoid')(h)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

多层自编码器

如果一个隐含层还不够,显然可以将自动编码器的隐含层数目进一步提高。

在这里,实现中使用了3个隐含层,而不是只有一个。任意一个隐含层都可以作为特征表征,但是为了使网络对称,我们使用了最中间的网络层。

input_size = 784 hidden_size = 128 code_size = 64  x = Input(shape=(input_size,))  # Encoder hidden_1 = Dense(hidden_size, activation='relu')(x) h = Dense(code_size, activation='relu')(hidden_1)  # Decoder hidden_2 = Dense(hidden_size, activation='relu')(h) r = Dense(input_size, activation='sigmoid')(hidden_2)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

卷积自编码器

你可能有个疑问,除了全连接层,自编码器应用到卷积层吗?

答案是肯定的,原理是一样的,但是要使用3D矢量(如图像)而不是展平后的一维矢量。对输入图像进行下采样,以提供较小维度的潜在表征,来迫使自编码器从压缩后的数据进行学习。

x = Input(shape=(28, 28,1))   # Encoder conv1_1 = Conv2D(16, (3, 3), activation='relu', padding='same')(x) pool1 = MaxPooling2D((2, 2), padding='same')(conv1_1) conv1_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool1) pool2 = MaxPooling2D((2, 2), padding='same')(conv1_2) conv1_3 = Conv2D(8, (3, 3), activation='relu', padding='same')(pool2) h = MaxPooling2D((2, 2), padding='same')(conv1_3)  # Decoder conv2_1 = Conv2D(8, (3, 3), activation='relu', padding='same')(h) up1 = UpSampling2D((2, 2))(conv2_1) conv2_2 = Conv2D(8, (3, 3), activation='relu', padding='same')(up1) up2 = UpSampling2D((2, 2))(conv2_2) conv2_3 = Conv2D(16, (3, 3), activation='relu')(up2) up3 = UpSampling2D((2, 2))(conv2_3) r = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(up3)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

正则自编码器

除了施加一个比输入维度小的隐含层,一些其他方法也可用来约束自编码器重构,如正则自编码器。

正则自编码器不需要使用浅层的编码器和解码器以及小的编码维数来限制模型容量,而是使用损失函数来鼓励模型学习其他特性(除了将输入复制到输出)。这些特性包括稀疏表征、小导数表征、以及对噪声或输入缺失的鲁棒性。

即使模型容量大到足以学习一个无意义的恒等函数,非线性且过完备的正则自编码器仍然能够从数据中学到一些关于数据分布的有用信息。

在实际应用中,常用到两种正则自编码器,分别是稀疏自编码器和降噪自编码器。

稀疏自编码器

一般用来学习特征,以便用于像分类这样的任务。稀疏正则化的自编码器必须反映训练数据集的独特统计特征,而不是简单地充当恒等函数。以这种方式训练,执行附带稀疏惩罚的复现任务可以得到能学习有用特征的模型。

还有一种用来约束自动编码器重构的方法,是对其损失函数施加约束。比如,可对损失函数添加一个正则化约束,这样能使自编码器学习到数据的稀疏表征。

要注意,在隐含层中,我们还加入了L1正则化,作为优化阶段中损失函数的惩罚项。与香草自编码器相比,这样操作后的数据表征更为稀疏。

input_size = 784 hidden_size = 64 output_size = 784  x = Input(shape=(input_size,))  # Encoder h = Dense(hidden_size, activation='relu', activity_regularizer=regularizers.l1(10e-5))(x)  # Decoder r = Dense(output_size, activation='sigmoid')(h)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

降噪自编码器

这里不是通过对损失函数施加惩罚项,而是通过改变损失函数的重构误差项来学习一些有用信息。

向训练数据加入噪声,并使自编码器学会去除这种噪声来获得没有被噪声污染过的真实输入。因此,这就迫使编码器学习提取最重要的特征并学习输入数据中更加鲁棒的表征,这也是它的泛化能力比一般编码器强的原因。

这种结构可以通过梯度下降算法来训练。

x = Input(shape=(28, 28, 1))  # Encoder conv1_1 = Conv2D(32, (3, 3), activation='relu', padding='same')(x) pool1 = MaxPooling2D((2, 2), padding='same')(conv1_1) conv1_2 = Conv2D(32, (3, 3), activation='relu', padding='same')(pool1) h = MaxPooling2D((2, 2), padding='same')(conv1_2)  # Decoder conv2_1 = Conv2D(32, (3, 3), activation='relu', padding='same')(h) up1 = UpSampling2D((2, 2))(conv2_1) conv2_2 = Conv2D(32, (3, 3), activation='relu', padding='same')(up1) up2 = UpSampling2D((2, 2))(conv2_2) r = Conv2D(1, (3, 3), activation='sigmoid', padding='same')(up2)  autoencoder = Model(input=x, output=r) autoencoder.compile(optimizer='adam', loss='mse')

总结

本文先介绍了自编码器的基本结构,还研究了许多不同类型的自编码器,如香草、多层、卷积和正则化,通过施加不同约束,包括缩小隐含层的维度和加入惩罚项,使每种自编码器都具有不同属性。

希望这篇文章能让深度学习初学者对自编码器有个很好的认识,有问题欢迎加入量子位的机器学习专业群(加小助手微信qbitbot5,注明机器学习群)一起讨论~

欢迎大家关注我们的专栏:量子位 - 知乎专栏

诚挚招聘

量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复"招聘"两个字。

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态



via 量子位 - 知乎专栏 http://ift.tt/2tgabZ4
RSS Feed

RSS5

IFTTT

真正的兼职招聘......

Hi,各位好,我是军师,景略集智联合创始人&COO。

欢迎关注我们的官方账号 @景略集智 以及专栏 景略集智,我这里很少再发AI相关的教程/咨询啦。

因为运营市场部一直只有四个人,长期处于高压运转状态,所以这里我准备招一批实习生啦。

以下职位全为远程兼职协作的形式,且允许在校生申请,但请务必提前告知我你的时间安排。

兼职市场

主要负责接待单个客户,管理微信群,拉人头等等等等,满足条件的一周200元+额外奖励,按周结算,最好有个单独干净的微信号。

表现良好的有机会转正,6k-12k的税前月薪,五险一金,北~京~地区。

感兴趣的请添加微信并注明【市/场】+学校:jizhiqiqi01

兼职翻译

主要翻译AI类的文章,从英文->中文。每篇稿子不看长度,一篇统一150元。

表现良好的有机会转正,6k-10k的税前月薪,五险一金,北京地区。

感兴趣的请添加微信并注明【翻/译】+学校:jizhiqiqi01

单次交易

帮忙发布微信朋友圈消息,按照学生/在职以及朋友数量划分。

在读学生微信好友数量0-500人,单次发布10元。

在读学生微信好友数量500-2000人,单次发布50元。

在读学生且为学生会干部的请与我详谈价格。

从事IT行业且微信好友在1000人以上的,单次发布100元。

感兴趣的请添加微信并注明【单/次/交/易】+学校:jizhiqiqi01


全职岗位:

平面设计师(6k-10k,五险一金)

地区:北京市海淀区善缘街1号

岗位要求:

熟悉网络语言,梗知道的越多越好

熟练使用PS AI 等常用设计软件

岗位职责:

给运营部门设计各种创意无限的广告

请邮件给chenyang@jizhi.im



via 集智 - 知乎专栏 http://ift.tt/2tebiIV
RSS Feed

RSS7

IFTTT

LangChain 彻底重写:从开源副业到独角兽,一次“核心迁移”干到 12.5 亿估值 -InfoQ 每周精要No.899期

「每周精要」 NO. 899 2025/10/25 头条 HEADLINE LangChain 彻底重写:从开源副业到独角兽,一次"核心迁移"干到 12.5 亿估值 精选 SELECTED 1000 行代码手搓 OpenAI gpt-oss 推理引...