2017年12月3日星期日

李彦宏:想活150得靠AI,雷军:下代旗舰机更AI | 大佬乌镇论道

李根 发自 枕水厅量子位 报道 | 公众号 QbitAI

乌镇世界互联网大会,今天进入最热闹一天。

特别是人工智能分论坛,8:30开场,提前一小时已满员,现场"站"无虚席。

李彦宏、雷军、王小川、余承东等知名公司CEO,以及腾讯公司高级副总裁汤道生,纷纷围绕AI发表了看法。

李彦宏说,AI在2C方面的影响力,已经能通过智能音箱、搜索等产品感知到,而在2B方面、供给侧改革中,也会大有所为,AI2B,也会是百度AI的重要方向之一,特别是智能城市打造中,百度会率先与雄安、保定、重庆、芜湖和上海等展开合作。

雷军表示,AI不仅带来新一轮技术革命,也给企业家带来了新一轮焦虑。他认为所有企业应该像拥抱移动互联网一样拥抱AI。他还介绍了小米的AI发展图谱,并且预告:2018年小米新一代旗舰手机,将用AI带来更好体验,会集中展现在拍照上。

余承东进一步谈论了AI应用于智能终端的挑战。之前华为已经推出了搭载NPU的旗舰手机华为Mate 10,但这过程中,功耗和产品打磨,都难度颇高。这位华为手机负责人说:手机,就是没有胳膊没有腿的机器人。

腾讯高级副总裁汤道生,介绍了腾讯AI在产品层面的应用,他透露现在的微信、QQ、游戏等腾讯产品中,AI已经成为了最强大技术。腾讯不止在拥抱AI,而是所有的产品,都在围绕AI进行能力提升,让AI带来更优质的产品体验。

最后出场的是搜狗CEO王小川,上个月他刚率领搜狗完成了IPO。王小川表示,作为搜索公司,搜狗天然就有AI基因,而对于AI战略的布局,搜狗将专注在语音和语言领域,会围绕搜索和输入法展开。

现场被纷纷祝福"恭喜完成IPO"的王小川,还带来一份"one more thing"——"王小川"秀了一把英文。

在王小川演讲中,屏幕上,依然是他去年发布的语音识别和机器翻译系统;同传耳机中,实时语音同传传出,美国男声\美国女声\王小川个人音色TTS英文发音。

以下是李彦宏和雷军围绕AI展开的演讲,量子位整理。

李彦宏:AI to B,大有可为

昨天我在大会发言的时候说,如果有干货的话最好还是用PPT来讲,因为我昨天发言之前,所有的嘉宾都没有讲PPT,今天我发言之前,我们每一个嘉宾都有PPT,所以我想这就是今天坐无虚席的原因。

大家都对人工智能非常的感兴趣,但讲干货,是不是只有PPT才可以呢?不是的,还有比PPT更好的形式,先请大家看一段视频。

(疲劳驾驶视频播放)

刚才之前的教授说人工智能会使司机丢工作,最先丢掉工作的司机可能是货车的司机,我们希望货车司机丢掉工作之前,别先丢掉生命。所以刚才的视频是演示了防疲劳驾驶的系统。

人工智能会在各个方面产生大家意想不到的效果,智能驾驶是每个人都关注的领域,但是在很多其他的领域也有非常多的令人期待的新的功能,所以我们可以看另外一个场景的应用,我们看一下智能家居里面的应用。

(百度智能音箱Raven H视频播放)

这个是上个月百度世界的时候我们发布了一款智能音箱,当时很多人说它漂亮得不像百度的产品。(全场笑)

所以这一次我把它像百度的地方给大家展示一下,它人工智能的对话能力,大家看了视频觉得它还是比较像百度的。比你们见到任何一款市面上的音箱还要聪明。原因就是百度这么多年做搜索积累下来的人工智能的技术和背后的知识图谱。

搜索引擎本身就是一个人工智能的问题,用户用自然语言输入他的需求,计算机猜测用户想要找什么,然后给他提供相应的答案。

人工智能就是要让计算机懂得人,给人提供需求。大概从去年前开始,搜索引擎从过去的基本上靠统计来做排序,到了变成用机器学习来做排序,今天大家使用的百度,背后完全是一个人工智能的引擎。

人工智能在2C的领域,在很多大家的日常生活中有应用,但是它不仅限于2C的领域,在2B的领域也有应用。互联网的时代大家感受到的改变对人们的改变都是2C的,但是人工智能也会改变2B,也就是改变制造端、供应端。

下面这个例子,给大家讲了供应端,改变B端的人工智能。

这个例子是我们跟一个连锁的超市合作,用人工智能的技术去提升它的超市里面的生鲜货品的效率,进多少,什么时候摆出来,什么时候撤掉,做这样的预测,我们有了这个预测之后,做了十家店,利润可以让它提升20%,报损率降低30%以上,就是很多本来需要扔掉的东西因为人工智能而变得不需要浪费了。

所以它对于B端的生态的改变也是非常明显的,不仅仅是超市这个领域,我昨天讲无论是金融、房产、教育、医疗、能源、物流等等,每一个方面人工智能都有非常多的应用。

今天我们看到很多生产端已经遍布了各种各样的传感器,它已经能够搜集到很多的数据,但是对于这些数据的使用,我们还非常的不够。

比如说我的家乡在山西,山西有很多的煤矿,我们想象煤矿经常出安全事故,一旦死人比较多的话,当地的领导甚至省部级的官员都要因此而辞职。

但是如果你到煤矿里面看他们的传感器已经布得非常的多,非常的先进了,只是我们没有很好的利用这些数据进行挖掘预测,什么时候毒气会产生或者说泄露。再比如说生产制造领域,我们跟一些钢厂的合作,现在钢板扎出来以后,还要人检验有没有气泡这些问题。

其实人工智能完全可以解决这个问题,我们用模式识别,用计算机视觉的能力可以识别哪些钢材是有问题的。

所以人工智能在供给侧有非常多的应用,这些应用显然不是靠百度一家能够实现的,是需要整个社会,至少整个企业界奋斗。

为此百度不断的开放各种各样的平台,其中我们的深度学习的平台,任何人都可以利用这个平台来开发一些应用的程序。在自动驾驶上我们做得更加的生动一些。

视频中有一些阿波罗的平台,它也是一个供给端的平台,我们联合了各种各样的包括运营商、汽车服务的厂商,整车的厂商,零部件的厂商,芯片的厂商,大家都在一个产业链里面共同为无人驾驶来做努力。

昨天晚上跟一帮朋友吃饭的时候(即丁磊的饭局),他们谈起来无人驾驶,给我出了一个主意,他说你们应该做一个广告,大家坐在车里一起喝酒的场景。因为有了无人驾驶就不存在酒驾了。

整个我们的社会会因为人工智能的到来而发生大的改变,我们越来越多的人会生活在城市里面,什么样的城市才是一个美好的城市,才是一个先进的城市?

我们跟雄安也有很多的探讨,我们觉得应该是一个没有拥堵的城市,应该是人们的生活都很幸福的城市,应该是没有什么身份认证,没有排队,没有污染,每个人都很健康,工作的时候效率很高,休息的时候非常的放松,这才是一个好的城市。

而这样的一个城市,很多情况下都需要人工智能技术才能够实现,所以我们会很快跟雄安一起宣布一个大的智能城市的计划;而这个计划不仅仅对于一个新的城市来说有很强的适用性,也跟所有的城市相关,每一个城市要想提高它的智能水平,要想让它的人民生活更加的幸福,要想让每个人都活到150岁,必不可少的就是要把人工智能的技术让它逐步的渗透到每一个城市的每一个角落。

所以我们跟保定、芜湖、北京的开发区、上海汽车城都有相关的人工智能的合作。明年的时候我也希望有机会跟大家更详尽的报告这方面的进展,谢谢!

雷军:小米全面拥抱AI,How?

大家好,昨天下午我参加了一个会议,会上说现在很多的互联网的创业者很焦虑,也很失落,我问为什么?说人工智能这个时代来了以后,很多互联网的企业家都觉得自己过时了,变成了传统的产业。

所以昨天下午我在交流的时候,我就说人工智能是一次技术革命,就像当年移动互联网来的时候,所有的企业都要拥抱移动互联网,今天人工智能来的时候,可能我们所有的企业都需要拥抱人工智能。

今天我希望跟大家分享的是站在小米的立场上我们怎么样拥抱人工智能,小米在人工智能这个时代里面,我们拥有什么样的机遇。

今年小米的业务已经开始重新恢复高速的成长,在今年第三季度的时候,我们同比增长超过了100%。目前我们小米手机所搭载的系统全球的激活量全球突破了三亿人,我们6年前就开始做的云服务产品,目前存储的大数据量已经超过了两百个TB,在四年前做的生态云连接了非常多的智能生态的云服务。

在四年之前,我们启动了小米生态链的计划,就是用五年的时间孵化一百家智能硬件的公司,这个计划提前完成了,只用了四年的时间我们就完成了。

在去年的时候,这些智能硬件公司的收入过了100亿人民币,就是在小米平台上;今年预计会超过两百亿人民币,明年的计划是超过四百亿人民币。

因为这个智能的硬件,我们部署完成以后,在三年前我们提出了小米的智能家居的IOT的战略,以手机为核心来连接所有的设备。

就在11月1日我们统计的时候,全球激活联网的智能硬件的IOT的设备超过了八千万台。当拥有了这些优势之后,我们在人工智能的时代,我们看到的是一个巨大的机会,因为小米是一个非常独特的公司,我们拥有非常强的硬件产品的能力,通过我们连接了这么多的用户,在过去的五六年里面,我们所拥有的数据量也是极为惊人的,四年前我们在生态链的领域里面我们进行了广泛的深耕。

在过去的两年里面,小米在AI的核心能力的图谱,各项核心能力上我们都下了比较大的功夫,一直在人工智能领域投入了非常多的资源。

在今年的七月份我们发布了第一个人工智能产品叫"小米AI音箱",我们叫小爱同学。刚才百度的视频做得挺好的,我也准备了一段视频,看上去一样,是我们七月份时候小爱同学发布的音箱,七月份发布完之后,在8月10日攻测,14天的搜索量突破了一亿。在一个月前,语音的指令当日突破了三百万条。

大家可能看上去觉得这些AI音箱看起来差不多,我们在七月底、八月初发布的时候,我们有很大的压力,我说发布完了消费者会不会不认可?其实在美国前几年也不怎么认可,但是小爱同学发布以后,用户反映的程度远超了我们的想象。目前小爱同学人均每天的时长是两个小时,尤其是30%的小孩子把它当玩具在玩。

有很多的智能音箱场景,在美国是放音乐,像我们这样的产品在中国放音乐是30%左右,闲聊是占了35%,可能它还没有那么智能,但是对小孩子来说,就成了一个非常好的玩具,这是我们之前设计的时候没有想过的。

我们发现在家庭里面,小孩子跟小爱音箱之间的沟通非常的频繁,所以我们做了四个月以后,我们自己的感觉是远超了预期,我们设计小爱同学的时候,更重要的是成为智能家庭的控制中心。

当初做智能家庭的时候,我们选择的第一个控制中心我们选的是路由器,这个也的确把所有的设备联结在一起,后来发现路由器是放在桌子下面,墙角边上,非常的难以放到桌子上面。你没有办法通过一个路由器来控制整个智能家居。

我们当初为什么选路由器呢?我们是想选一个7*24小时工作的装备,所以说我们就选了路由器。当AI时代来临以后,我们要做的就是AI音箱。

所以在去年我们整个内部总动员,四个部门一起联动,快速的发布了这个小爱音箱,我自己的感觉是基于小米在硬件、软件、IOT、新零售一系列的优势之后,AI时代,像小米这样的公司还是有非常多的机遇。

我们刚才讲了小爱同学,对我们的核心业务智能手机来说的话,也是AI一个巨大的场景。今天整个人工智能罪刑相的表现的产品在什么地方呢?除了我们刚才讲的小爱同学以外,竞争最激烈的是在手机上,主要是拍照的领域,包括智能问答。

在拍照上的竞争,谷歌的新发布了一部手机Pixel2,用一个摄像头,非常好的完美的实现了虚化,这里面涵盖的人工智能是非常多的,所以今天人工智能给我们展现它的魅力,只有一点点,我相信在未来的十年里面会突飞猛进的发展。

我们也会把我们在人工智能上的技能很快的应用到下一代的手机上,所以这里做一个小小的预告,小米的下一代的旗舰机值得期待。谢谢!

—完—

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

诚挚招聘

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

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



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

RSS5

IFTTT

ICLR 2018论文评审结果出炉:一文概览论文 TOP 5

ICLR 2018 大会的论文评审已经于 11 月 27 日截止。在明年 1 月 5 日之前,人们将对目前提交的论文进行讨论。根据评审得分,我们整理了排名前五的论文。目前,斯坦福大学探究神经网络对抗样本的论文 Certifiable Distributional Robustness with Principled Adversarial Training 名列第一。


今年的 ICLR 大会接收到了 981 篇有效论文。截至 12 月 1 日,有 979 篇论文至少经过了一次打分。近日,大会官方给出了论文双盲评审的评分结果。统计数据显示,平均分为 5.24,中位数为 5.33(满分 10 分)。


论文评分前一百名结果:http://ift.tt/2A0li7L



根据 Andrej Karpathy 的介绍,在今年 4 月的 ICLR 2017 大会上,提交论文的数量为 491 篇,而被接受的情况为:15 篇 oral(3%),183 篇 poster(37.3%)。所以上图中我们给出了 40% 的接收线作为参考。


分数分布


下图显示了相同论文得到评分的最大差值。我们观察到,对于大多数(约 87%)论文来说,最大差值小于 3。



论文得分 Top 10


在双盲评审打分过后,我们得到了十篇得分最高的论文。其中部分论文已在其他平台提交,因此我们可以得知其作者与研究机构了。



请注意,目前评审分数的提交尚未完全结束。现在评分最高的论文是斯坦福大学 Aman Sinha 等人的 Certifiable Distributional Robustness with Principled Adversarial Training。另有一篇值得注意的论文,英伟达 Tero Karras 等人的 Progressive Growing of GANs for Improved Quality, Stability, and Variation。收到了 8,8,1 的评分。此外,我们比较关注的第二篇 Capsule 论文:Matrix capsules with EM routing 并没有太高的评分,该论文目前的评分大约在前 40% 左右。


下面,我们将简要介绍目前 ICLR 2018 大会评审中排名前五的论文。


论文 1:Certifiable Distributional Robustness with Principled Adversarial Training



链接:http://ift.tt/2iHzG17


摘要:神经网络很容易受到对抗样本的干扰,因此研究人员提出了许多启发式的攻击与防御机制。我们采取了分布式鲁棒优化的原则,以保证模型在对抗性扰动输入的条件下保持性能。我们通过给予 Wasserstein ball 上的潜在数据分布一个扰动来构建 Lagrangian 罚项,并且提供一个训练过程以加强模型在最坏的训练数据扰动情况下能持续正确地更新参数。对于平滑的损失函数,我们的过程相对于经验风险最小化可以证明有适度的鲁棒性,且计算成本或统计成本也相对较小。此外,我们的统计保证允许我们高效地证明总体损失的鲁棒性。因此,该研究结果至少匹配或超越监督学习和强化学习任务中的启发式方法。


如下所示,鲁棒性的模型在原版的马尔科夫决策过程(MDP)中要比一般的模型学习更高效:


图 4:训练中 Episode 的长度,其中环境设置最大为 400 Episode 的长度。



论文 2:ON THE CONVERGENCE OF ADAM AND BEYOND



链接:http://ift.tt/2AHPU13


摘要:近来提出的几种随机优化方法已经成功地应用于深度网络的训练,如 RMSPROP、ADAM、ADADELTA 和 NADAM 等方法,它们都是基于使用前面迭代所产生梯度平方的指数滑动平均值,在对该滑动平均值取平方根后用于缩放当前梯度以更新权重。根据经验观察,这些算法有时并不能收敛到最优解(或非凸条件下的临界点)。我们证明了导致这样问题的一个原因是这些算法中使用了指数滑动平均(exponential moving average)操作。本论文提供了一个简单的凸优化案例,其中 ADAM 方法并不能收敛到最优解。此外,我们还描述了过去文献中分析 ADAM 算法所存在的精确问题。我们的分析表明,收敛问题可以通过赋予这些算法对前面梯度的「长期记忆」能力而得到解决。因此本论文提出了一种 ADAM 算法的新变体,其不仅解决了收敛问题,同时还提升了经验性能。


图 2:ADAM 和 AMSGRAD 算法在 Logistic 回归、前馈神经网络和 CIFARNET 上的性能对比。



论文 3:Emergence of grid-like representations by training recurrent neural networks to perform spatial localization



链接:http://ift.tt/2iLe03Z


摘要:几十年来关于空间导航的神经编码研究揭示了一系列不同的神经反应特性。哺乳动物大脑的内嗅皮层(Entorhinal Cortex/EC)含有丰富的空间关联性,包括网格细胞(grid cell)使用完全嵌入模式(tessellating patterns)编码空间。然而,这些空间表征的机制和功能仍然非常神秘。作为理解这些神经表征的新方法,我们训练一个循环神经网络(RNN),以在基于速率输入的二维环境下执行导航任务。令人惊讶的是,我们发现类网格(grid-like)响应模式出现在训练后的网络中,它和其它空间相关的单元(包括边缘(border cell)和带状细胞)一同出现。所有这些不同的功能性神经元都已经在实验中观察到。网格状和边缘细胞出现的顺序也与发育性研究的观察一致。总之,我们的结果表明,在 EC 中观察到的网格细胞、边缘细胞等可能是用于高效表示空间的自然解决方案,它们在神经回路中给出了主要的循环连接。


图 1:其中 a)为样本神经数据表示 EC 空间导航任务中不同神经关联性。b)中的循环网络由 N = 100 个循环单元(或神经元)组成,它们接收两个外部输入,即代表动物的速度和方向。c)为训练后的典型轨迹,RNN 的输出可以精确地在导航期间追踪动物的位置。



论文 4:MULTI-SCALE DENSE NETWORKS FOR RESOURCE EFFICIENT IMAGE CLASSIFICATION 



链接:http://ift.tt/2AJ2q0p


摘要:在本论文中,我们探究了图像分类任务在给定时间内的计算资源消耗。实验的两个设定为:1. 即时分类,其中网络预测的示例图会逐渐更新,以保证随时输出预测结果;2. 批预算分类,其中计算资源是有限的,而输入的示例图片存在「简单的」和「困难的」。与大多数先前的工作相比(如流行的 Viola 和 Jones 算法)我们的方法基于卷积神经网络。我们训练多个具有不同资源需求的分类器,并在测试期间自适应地应用这些分类器。为了最大化这些分类器计算资源的使用效率,我们将它们整合进一个深度卷积神经网络中,使用密集连接将它们联通。为了更快实现高质量的分类,我们使用了二维混合比例网络架构,在整个网络中保持了粗糙与精细的特征。三个图像分类任务的实验证明,我们的框架可以大大提升两种设置目前的业内最佳水平


图 2:具有三个比例的 MSDNet 的前四层图示。水平方向对应于网络的层方向(深度),垂直方向对英语特征图的比例。水平箭头表示常规卷积操作,而对角线和垂直箭头表示步进卷积操作。分类器仅在最粗糙比例的特征映射上运行。跨越超过一层的连接未明确绘制:它们隐藏地通过递归串联。



论文 5:i-RevNet: Deep Invertible Networks



链接:http://ift.tt/2iHzP4F


摘要:人们普遍认为,目前深度卷积神经网络的成功是建立在逐步抛弃输入中对于当前问题无意义的变化而实现的。在大多数常用的网络体系结构中,从隐藏表示中恢复图像的难度获得了实践的证明。在本论文中,我们展示了这种信息损失并不是学习表示如何在 ImageNet 等复杂问题上得到通用性的必要条件。通过一系列的同胚层,我们构建了 i-RevNet 网络——一个可以被完全倒置,直到最终投影到类上的网络,在处理过程中没有信息被丢弃。建立一个可逆的架构是困难的,例如局部倒转是非常困难的,我们通过提供明确的反转来克服这个问题。对于 i-RevNet 的学习表征过程的分析证明了它可以通过渐进收缩和线性分离深度得到很高的准确性。此外,为了解释由 i-RevNet 学习到的模型的性质,我们重建了自然图像表示之间的线性插值。


i-RevNet 及其伪逆结构


ICLR 2018 将于 4 月 30 日-5 月 3 日于加拿大温哥华的 Vancouver Convention Center 举行。机器之心将持续跟进本次大会的相关信息。


参考内容:http://ift.tt/2ALFL3E


]]> 原文: http://ift.tt/2iHzSgR
RSS Feed

机器知心

IFTTT

为什么我对MATLAB情有独钟

本文作者 Christopher Madan 喜欢用 MATLAB 编程,尽管他是一个认知心理学家/神经科学家,编程对其来讲更多地是一个完成目标的工具。这篇文章的灵感来自 Olivia Guest 的博文《I hate Matlab: How an IDE, a language, and a mentality harm》,Olivia Guest 称自己不喜欢 MATLAB 不只是因为它是一款闭源、付费的软件,更主要的原因是 MATLAB 的有限资源限制了学生和科学家的技能。不过 Christopher Madan 却站在支持 Matlab 的角度,毕竟作者的绝大部分编程通过 MATLAB 完成,并且之前出版过针对行为研究者的 MATLAB 入门书籍(http://ift.tt/2ASBoUH



MATLAB 的图形用户界面(GUI)具有很多功能。这对了解工作环境的多个变量、在当前工作环境中拥有代码编辑器窗口很有用处。在 MATLAB 的 GUI 中,你还可以在电子表格式的编辑器中编辑变量。尽管该特征就是如此,但是我同样认为用这种方式编辑变量是一种坏习惯。当然可以这样辩解:「如果那样的话,这个特征就不会有了!」可能吧,不过我仍然认为学习在 MATLAB 中编程需要一些指导(最好是有一个经验丰富的同事,或者至少有在线课程或书籍),只依赖 MATLAB 的特征进行技巧学习是不公平的。我教 MATLAB 的时候,不使用任何 GUI 特征进行变量编辑,不使用绘图工具。原因在于即使它具备这些特征,我们也未必就要使用它。不过特征多一些当然比少的好。


我每周使用 MATLAB 10-20 个小时(平均),但是我还使用很多其他编程语言,包括 Python。你需要重点考虑你想用某种语言做什么。对于认知神经科学研究而言,MATLAB 非常有用,因为它具备 SPM(用于 fMRI)、 EEGLAB(用于 EEG)等工具箱。没有太多编程能力也可以使用这些工具箱,不过熟练使用 MATLAB 可以帮助你深入了解情况,对工具箱的作用、如何调整代码获取一些内部变量有更好的了解。


在分析行为数据时,MATLAB 也很有用,因为它本身就很方便交互使用。必须承认,这可能导致面条式代码(spaghetti code),不过正因如此,接受编写代码文档和结构的训练对构建可复现分析流程非常重要。在使用 MATLAB 之前,我使用的语言是 Python,不过我厌倦了在提交代码至脚本和功能之前无法积极处理代码、无法「自由地」写代码。Python 由志愿者开发,而 Matlab 由公司开发,因此有更全面的途径实现功能开发(如整合性的绘图功能,而不是先使用 matplotlib 再使用 seaborn)。MATLAB 内部的工具箱内还具备更多一致性,因为公司在管理不同团队的开发活动。


在对比不同编程语言的时候,无疑它们各有独特优势。我认为 MATLAB 擅长提供灵活的工作空间——比如,通常 MATLAB 并不允许在同一文件中有多个外部可访问的函数,但是这有简单的解决对策,可在一分钟内搜索到需要的函数。展开来讲,一个重要的问题是:认知心理学家/神经科学研究者应该具备多少编程技能?在我看来,他们不应该在电子表格程序中进行分析,但我也不认为他们应该具备开发分析工具箱的技能。


我喜欢使用 MATLAB 的部分原因是发现它的语法比 Python 或 R 更加直观。不过也不会受到它的限制,对其他采用类似语法的语言我也很感兴趣。


结语


本文受 Olivia 博文的启发而写,但并非直接回应。Olivia 文中的一些主题本文没有涉及,比如 MATLAB 没有一个正式指定的语法,并可在新版中改变语言——也许我忽略了这一问题是因为我不是正式的编程人员。尽管 Matlab 是封闭的,但很多内部代码是可见的,因此我不认为使用 MATLAB 是「不道德」的行为。


原文链接:http://ift.tt/2zZV4Gm

]]> 原文: http://ift.tt/2AT0D9E
RSS Feed

机器知心

IFTTT

如何用深度学习处理结构化数据?

这篇博客主要关注的是深度学习领域一个并不非常广为人知的应用领域:结构化数据。本文作者为旧金山大学(USF)在读研究生 Kerem Turgutlu。

 

使用深度学习方法按照本文所介绍的步骤处理结构化数据有这样的好处:

 

  • 无需领域知识
  • 表现优良


在机器学习/深度学习或任何类型的预测建模任务中,都是先有数据然后再做算法/方法。这也是某些机器学习方法在解决某些特定任务之前需要做大量特征工程的主要原因,这些特定任务包括图像分类、NLP 和许多其它「非常规的」数据的处理——这些数据不能直接送入 logistic 回归模型或随机森林模型进行处理。相反,深度学习无需任何繁杂和耗时的特征工程也能在这些类型的任务取得良好的表现。大多数时候,这些特征需要领域知识、创造力和大量的试错。当然,领域专业知识和精巧的特征工程仍然非常有价值,但这篇文章将提及的技术足以让你在没有任何领域知识的前提下向 Kaggle 竞赛的前三名看齐,参阅:http://ift.tt/1JpHLOH


图 1:一只萌狗和一只怒猫

 

由于特征生成(比如 CNN 的卷积层)的本质和能力很复杂,所以深度学习在各种各样的图像、文本和音频数据问题上得到了广泛的应用。这些问题无疑对人工智能的发展非常重要,而且这一领域的顶级研究者每年都在分类猫、狗和船等任务上你追我赶,每年的成绩也都优于前一年。但在实际行业应用方面我们却很少看到这种情况。这是为什么呢?公司企业的数据库涉及到结构化数据,这些才是塑造了我们的日常生活的领域。

 

首先,让我们先定义一下结构化数据。在结构化数据中,你可以将行看作是收集到的数据点或观察,将列看作是表示每个观察的单个属性的字段。比如说,来自在线零售商店的数据有表示客户交易事件的列和包含所买商品、数量、价格、时间戳等信息的列。

 

下面我们给出了一些卖家数据,行表示每个独立的销售事件,列中给出了这些销售事件的信息。


图 2:结构化数据的 pandas dataframe 示例

 

接下来我们谈谈如何将神经网络用于结构化数据任务。实际上,在理论层面上,创建带有任何所需架构的全连接网络都很简单,然后使用「列」作为输入即可。在损失函数经历过一些点积和反向传播之后,我们将得到一个训练好的网络,然后就可以进行预测了。

 

尽管看起来非常简单直接,但在处理结构化数据时,人们往往更偏爱基于树的方法,而不是神经网络。原因为何?这可以从算法的角度理解——算法究竟是如何对待和处理我们的数据的。

 

人们对结构化数据和非结构化数据的处理方式是不同的。非结构化数据虽然是「非常规的」,但我们通常处理的是单位量的单个实体,比如像素、体素、音频频率、雷达反向散射、传感器测量结果等等。而对于结构化数据,我们往往需要处理多种不同的数据类型;这些数据类型分为两大类:数值数据和类别数据。类别数据需要在训练之前进行预处理,因为包含神经网络在内的大多数算法都还不能直接处理它们。

 

编码变量有很多可选的方法,比如标签/数值编码和 one-hot 编码。但在内存方面和类别层次的真实表示方面,这些技术还存在问题。内存方面的问题可能更为显著,我们通过一个例子来说明一下。

 

假设我们列中的信息是一个星期中的某一天。如果我们使用 one-hot 或任意标签编码这个变量,那么我们就要假设各个层次之间都分别有相等和任意的距离/差别。


图 3:one-hot 编码和标签编码

 

但这两种方法都假设每两天之间的差别是相等的,但我们很明显知道实际上并不是这样,我们的算法也应该知道这一点!

 

「神经网络的连续性本质限制了它们在类别变量上的应用。因此,用整型数表示类别变量然后就直接应用神经网络,不能得到好的结果。」[1]

 

基于树的算法不需要假设类别变量是连续的,因为它们可以按需要进行分支来找到各个状态,但神经网络不是这样的。实体嵌入(entity embedding)可以帮助解决这个问题。实体嵌入可用于将离散值映射到多维空间中,其中具有相似函数输出的值彼此靠得更近。比如说,如果你要为一个销售问题将各个省份嵌入到国家这个空间中,那么相似省份的销售就会在这个投射的空间相距更近。

 

因为我们不想在我们的类别变量的层次上做任何假设,所以我们将在欧几里得空间中学习到每个类别的更好表示。这个表示很简单,就等于 one-hot 编码与可学习的权重的点积。

 

嵌入在 NLP 领域有非常广泛的应用,其中每个词都可表示为一个向量。Glove 和 word2vec 是其中两种著名的嵌入方法。我们可以从图 4 看到嵌入的强大之处 [2]。只要这些向量符合你的目标,你随时可以下载和使用它们;这实际上是一种表示它们所包含的信息的好方法。


图 4:来自 TensorFlow 教程的 word2vec

 

尽管嵌入可以在不同的语境中使用(不管是监督式方法还是无监督式方法),但我们的主要目标是了解如何为类别变量执行这种映射。

 

实体嵌入

 

尽管人们对「实体嵌入」有不同的说法,但它们与我们在词嵌入上看到的用例并没有太大的差异。毕竟,我们只关心我们的分组数据有更高维度的向量表示;这些数据可能是词、每星期的天数、国家等等。这种从词嵌入到元数据嵌入(在我们情况中是类别)的转换使用让 Yoshua Bengio 等人使用一种简单的自动方法就赢得了 2015 年的一场 Kaggle 竞赛——通常这样做是无法赢得比赛的。参阅:http://ift.tt/1GbRkLg

 

「为了处理由客户 ID、出租车 ID、日期和时间信息组成的离散的元数据,我们使用该模型为这些信息中的每种信息联合学习了嵌入。这种方法的灵感来自于自然语言建模方法 [2],其中每个词都映射到了一个固定大小的向量空间(这种向量被称为词嵌入)。[3]


图 5:使用 t-SNE 2D 投影得到的出租车元数据嵌入可视化

 

我们将一步步探索如何在神经网络中学习这些特征。定义一个全连接的神经网络,然后将数值变量和类别变量分开处理。

 

对于每个类别变量:

 

1. 初始化一个随机的嵌入矩阵 mxD:


m:类别变量的不同层次(星期一、星期二……)的数量

D:用于表示的所需的维度,这是一个可以取值 1 到 m-1 的超参数(取 1 就是标签编码,取 m 就是 one-hot 编码)


图 6:嵌入矩阵

 

2. 然后,对于神经网络中的每一次前向通过,我们都在该嵌入矩阵中查询一次给定的标签(比如为「dow」查询星期一),这会得到一个 1xD 的向量。


图 7:查找后的嵌入向量


3. 将这个 1×D 的向量附加到我们的输入向量(数值向量)上。你可以把这个过程看作是矩阵增强,其中我们为每一个类别都增加一个嵌入向量,这是通过为每一特定行执行查找而得到的。


图 8:添加了嵌入向量后

 

4. 在执行反向传播的同时,我们也以梯度的方式来更新这些嵌入向量,以最小化我们的损失函数。

 

输入一般不会更新,但对嵌入矩阵而言有一种特殊情况,其中我们允许我们的梯度反向流回这些映射的特征,从而优化它们。

 

我们可以将其看作是一个让类别嵌入在每次迭代后都能进行更好的表示的过程。


注意:根据经验,应该保留没有非常高的基数的类别。因为如果一个变量的某个特定层次占到了 90% 的观察,那么它就是一个没有很好的预测价值的变量,我们可能最好还是避开它。

好消息

 

通过在我们的嵌入向量中执行查找并允许 requires_grad=True 并且学习它们,我们可以很好地在我们最喜欢的框架(最好是动态框架)中实现上面提到的架构。但 Fast.ai 已经实现了所有这些步骤并且还做了更多。除了使结构化的深度学习更简单,这个库还提供了很多当前最先进的功能,比如差异学习率、SGDR、周期性学习率、学习率查找等等。这些都是我们可以利用的功能。你可以在以下博客进一步了解这些主题:


http://ift.tt/2AWuWZF


http://ift.tt/2icbdNM


http://ift.tt/2AbP2PT


使用 Fast.ai 实现

 

在这一部分,我们将介绍如何实现上述步骤并构建一个能更有效处理结构化数据的神经网络。

 

为此我们要看看一个热门的 Kaggle 竞赛:http://ift.tt/2iHw4w5

 

数据:


约 140 万行


  • item_condition_id:商品的情况(基数:5)
  • category_name:类别名称(基数:1287)
  • brand_name:品牌名称(基数:4809)
  • shipping:价格中是否包含运费(基数:2)

 

重要说明:因为我已经找到了最好的模型参数,所以我不会在这个例子包含验证集,但是你应该使用验证集来调整超参数。


第 1 步:

 

将缺失值作为一个层次加上去,因为缺失本身也是一个重要信息。


  1. train.category_name = train.category_name.fillna('missing').astype('category')

  2. train.brand_name = train.brand_name.fillna('missing').astype('category')

  3. train.item_condition_id = train.item_condition_id.astype('category')

  4. test.category_name = test.category_name.fillna('missing').astype('category')

  5. test.brand_name = test.brand_name.fillna('missing').astype('category')

  6. test.item_condition_id = test.item_condition_id.astype('category')


第 2 步:

 

预处理数据,对数值列进行等比例的缩放调整,因为神经网络喜欢归一化的数据。如果你不缩放你的数据,网络就可能格外重点关注一个特征,因为这不过都是点积和梯度。如果我们根据训练统计对训练数据和测试数据都进行缩放,效果会更好,但这应该影响不大。这就像是把每个像素的值都除以 255,一样的道理。

 

因为我们希望相同的层次有相同的编码,所以我将训练数据和测试数据结合了起来。


  1. combined_x, combined_y, nas, _ = proc_df(combined, 'price', do_scale=True)


第 3 步:

 

创建模型数据对象。路径是 Fast.ai 存储模型和激活的地方。


  1. path = '../data/'

  2. md = ColumnarModelData.from_data_frame(path, test_idx, combined_x, combined_y, cat_flds=cats, bs= 128


第 4 步:

 

确定 D(嵌入的维度),cat_sz 是每个类别列的元组 (col_name, cardinality+1) 的列表。


  1. # We said that D (dimension of embedding) is an hyperparameter

  2. # But here is Jeremy Howard's rule of thumb

  3. emb_szs = [(c, min(50, (c+1)//2)) for _,c in cat_sz]

  4. # [(6, 3), (1312, 50), (5291, 50), (3, 2)]


第 5 步:

 

创建一个 learner,这是 Fast.ai 库的核心对象。


  1. params: embedding sizes, number of numerical cols, embedding dropout, output, layer sizes, layer dropouts

  2. m = md.get_learner(emb_szs, len(combined_x.columns)-len(cats),

  3.                   0.04, 1, [1000,500], [0.001,0.01], y_range=y_range)


第 6 步:

 

这部分在我前面提及的其它文章中有更加详细的解释。

 

要充分利用 Fast.ai 的优势。

 

在损失开始增大之前的某个时候,我们要选择我们的学习率……


  1. # find best lr

  2. m.lr_find()

  3. # find best lr

  4. m.sched.plot()


图 9:学习率与损失图


拟合

 

我们可以看到,仅仅过了 3 epoch,就得到:


  1. lr = 0.0001

  2. m.fit(lr, 3, metrics=[lrmse])



更多拟合


  1. m.fit(lr, 3, metrics=[lrmse], cycle_len=1)



还有更多……


  1. m.fit(lr, 2, metrics=[lrmse], cycle_len=1)



所以,在短短几分钟之内,无需进一步的其它操作,这些简单却有效的步骤就能让你进入大约前 10% 的位置。如果你真的有更高的目标,我建议你使用 item_description 列并将其作为多个类别变量使用。然后把工作交给实体嵌入完成,当然不要忘记堆叠和组合。


参考文献


[1] Cheng Guo, Felix Berkhahn (2016, April, 22) Entity Embeddings of Categorical Variables. Retrieved from http://ift.tt/2yyNUV4.

[2] TensorFlow Tutorials: http://ift.tt/2ljuheX

[3] Yoshua Bengio, et al. Artificial Neural Networks Applied to Taxi Destination Prediction. Retrieved from http://ift.tt/2ff53yv.



原文链接:http://ift.tt/2iPSfgm

]]> 原文: http://ift.tt/2iHwbaZ
RSS Feed

机器知心

IFTTT

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

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