2018年8月2日星期四

CCHI 2018:大会详细日程安排重磅出炉!

由国家自然科学基金委员会信息科学部、中国自动化学会与中国认知科学学会联合主办的"第一届中国认知计算和混合智能学术大会",将于2018年8月25日至26日在陕西省西安市举办,现大会详细日程重磅出炉!

人工智能经过60余年的发展,在移动互联网、大数据计算、超级计算机、脑科学等新理论新技术和经济发展需求的共同驱使下,正在进入一个崭新的时代。人工智能呈现出深度学习、跨界融合、认知计算、混合智能、人机协同、自主操控等新特征,同时又受脑科学研究启发,类脑智能也在蓄势待发芯片化硬件化平台趋势更加明显。2017年,按照党中央、国务院部署,由刘延东副总理直接领导,科技部、发改委、工程院会同相关单位在系统梳理、深入研究、广泛征求意见的基础上,研究起草了《新一代人工智能发展规划》(以下简称《规划》)。在此背景下,国家自然科学基金委员会信息科学部与中国自动化学会、中国认知科学学会联合主办的"第一届中国认知计算和混合智能学术大会",将于2018年8月25日至26日在陕西省西安市举办。

本届大会将围绕着"探讨与交流认知科学、神经科学与人工智能学科等领域交叉融合的最新进展和前沿技术"这个主题,以加强人工智能方面学术研讨与交流,发挥智力人才密集优势为目标,邀请认知建模与计算、混合智能、受神经科学启发的计算架构与器件、先进感知、智能机器人、无人智能驾驶等领域海内外知名专家作学术报告,交流相关研究领域的最新成果和发展趋势,进而牢牢把握住人工智能新技术革命的战略主动权,打造竞争新优势、开拓发展新空间,为实现《规划》等国家顶层设计中的各项举措提质增效。


认知机算与混合智能,是未来人工智能的重要方向

就目前的人工智能来讲,人和机器之间的信息传递效率还是十分低下的,远未能实现真正意义上的人机协同、互相促进。因此未来人工智能研究的重要方向之一,应当就是借助新的技术,使人工智能可以通过直觉、推理、经验,将自身引导到更高的层次。

认知计算所关注的就正是机器通过与人的自然语言交流及不断学习从而帮助人们做到更多的系统,通过技术与多个学术领域的结合,使人们更好地从海量复杂的数据中获得更多洞察,从而做出更为精准的决策。认知计算是一个能够自主学习、自主思考,并未使用者提供帮助与参考的系统,他在不同领域模仿、学习人类的认知能力,甚至可能发展到超越人类的认知能力,从而为人类决策提供更多建议。并最终使机器能够提供更加专业化的思考,为使用者的决策出谋划策。

而混合智能则是将智能研究扩展到生物智能和机器智能的互联互通,融合各自所长,并创造出更高级的智能形态。混合智能是以生物智能和机器智能的深度融合为目标,通过互联互通机制,建立兼具生物智能体的环境感知、记忆、推理、学习能力和机器智能体的信息融合、搜索、计算能力的新型智能系统。

因此在国家政策的助力下,在社会经济发展需求的推动下,认知计算与混合智能技术必将在未来、在人工智能领域大放异彩,有识之士不妨8月末齐聚古都长安,共讨时代之未来!

大会日程安排


大会及主题论坛报告专家


会议报名

会议官方报名渠道:http://www.caa.org.cn/cchi2018/

会务组联系方式

叩颖、张楠

联系电话:010-62522248;18612978071

联系邮箱:caa@ia.ac.cn

]]> 原文: https://ift.tt/2n8DAPg
RSS Feed

机器知心

IFTTT

别跟风了!你的公司根本不需要数据科学家

数据科学家不是魔法师,当所需的数据不可得或者质量很差的时候,数据科学家能做的很有限,这已经超过了技术的范畴。企业管理者如果能从全局出发部署数据战略,才能真正解决当下数据科学家的痛点,这样数据科学家才能发挥作用解决公司的痛点。

大约在四年前,数据科学家成为了每个公司的必须雇的人。技术人员争先恐后地甩掉在大学用的统计课本,花大量的时间重新学习Python Pandas和R,然后恶补最时髦的机器学习理论,再买几件geek制服显得更像那么回事。我就是其中一员。

如果你是做Hadoop开发的,这也是你的黄金时代。因为大家已经达成了共识,不会map/reduce得数据科学家不是合格的数据科学家。伴随着数据科学的热潮,印度的程序员工厂推出了数以千计的Hadoop程序员和数据科学"专家"来迎接未来的"大事件",一定程度上延长了濒临倒闭的Hadoop公司的寿命。

各大公司在第一时间都开始了对数据科学家的投入。每一家在纳斯达克指数中占有一席之地的公司都向这些数据科学家支付了巨额薪水,他们认为数据的先知力量会让他们挫败竞争对手。

而各个销售经理和高层管理只要每天早上打开iPad就能实时看到公司具体运营情况。数据仪表图成为了重要的地位象征,企业高管会获得具有3D可视化和实时动画散点图的超级豪华仪表图,而基层员工也会看到平面2D仪表盘,虽然没有那么花哨,但也会得到必要的信息和简要的摘要。

然而,这其实改变不了什么。那些数据科学家(大部分具有高学历和多年工作经验,如在制药或高级材料工程领域)将会很快意识到他们使用的数据质量其实非常糟糕。

大家普遍认为企业中存在各个环节、部门的各式各样的数据都是有用的,但是最后他们发现这些数据大部分是过时的,没有固定格式的,只能够为当时需要并收集这些数据的程序员所用。

大部分数据都是以电子表格形式储存,在没有监管的情况下多次被修改,因此与真实数据有很大偏差。很多数据集没有详尽的文档记录,表格的表头名称意义不清,比如MFGRTL3QREVPRJ,不同表格之间也没有一致的主键。换句话说,他们拥有的数据不适合做任何分析,更不要提针对药物试验的专业测试分析。

现在你拿着15万美元的薪水来做可视化仪表图,给那些根本不懂统计只想获得百万利润和巨额提成的销售经理看。你的数据一团糟,根本没法用。当你请求重建数据库时,公司陷入了挣扎,这个项目要花上百万,而他们认为没有必要。现在你面临一个选择,其实你可以撒个谎,用计算机随机产生数据,然后得到一个很可能比目前数据更加准确的结果。但是这对于数据工作者是个难题,因为这违背了他们追求精准的初衷。那该怎么办?

现在,我可以装作一个语义分析传道者,告诉你需要开发一个语义数据中心。实际上,这不是很难实现,并且是有益处的,但它并不是什么神奇的魔法。语义数据可以比较容易转化成可用的数据形式(如果没有发现有用的数据,也能发现并摒弃掉没有的部分),但本质上这不是数据科学问题——它是数据质量和本体工程问题。

好了,对于那些高层决策者,当你遇到数据上的问题,你的数据科学家可以有"万花筒"般的数据分析方法,但是没有高质量的数据做保证,得到的结果一点用都没有。巧妇难为无米之炊,这不是数据科学家的问题,是你的问题,你天天盯着那些能给你赚千万资金的可视化仪表盘,其实是看着你的钱从门前溜走。

在数据分析的项目中尽管你不是实际操作的人,但你的参与绝对不是可有可无,首先你需要明确你想要什么信息,然后花时间与数据科学家和业务人员一起确定需要收集什么数据。不要指望你想要的数据会奇迹般地从数据库中出现。

再来谈谈数据库。数据库大多是为程序员所用,写各种应用程序,它存在的首要目的不是为你的公司提供具有洞见的指导性意见。首先你要坐下来好好想想你已经有什么资源,因为要从别人那里索要数据资源是非常被动的,特别是当这个数据获得权涉及到别人的工作和职责范围的时候。

再者,你要明白大多数数据库都没有详尽的文档记录(有的甚至没有文档记录),很多信息都需要从隐藏文献中提取。这个过程被称为推理计算,很多程序员不愿意做这个事情,因为这意味着他们需要从代码去反推其他程序员的意图,而别的程序员要么已经离职了,要么能力有限,要么已经忘了他们十年前写的东西。

关系型的数据湖不能解决这个问题,数据湖唯一能够解决的问题是让计算机进程能够访问所有的数据。这是此类推理计算的必要部分,但它不是最难也不是最昂贵的部分。最昂贵的部分是弄清楚数据实际意义是什么,获得不同的数据集甚至能够识别出它们是关于同一件事的。这些问题都没有现成的解决方案,需要靠摸索。

这里,我们再次提出语义的解决方案——图形三重存储,RDF,本体管理,查询和所有内容。它不是一个开箱即用的解决方案,但它是一种工具,可以使推理分析变得可行,并且可以把这个工具交给程序员来管理。

不过,你需要经常对整个数据流的过程进行重新思考。你需要知道最开始从哪里获得信息,然后让信息尽早流入数据通道。这需要你的程序员和数据库管理员放弃一定程度的自主权,在一个集中化的环境中工作。作为执行人的你,应该更加熟悉数据治理的世界。

对于商业人士来说,这是一个相当激进的改变,不止一些人意识到他们要实际动手去解决IT问题。不过,如今的企业正在进行转变(并且大部分已经成功转型),成为专业的数据管理公司,产品和服务更像是它们的副产品。

现今CEO的角色是在管理销售的同时了解公司数据的输入与输出,确保他们的数据质量是最好的。这不仅是为了合理的监管,更因为数据的完整最终会决定他们是否能够在市场竞争中脱颖而出。

企业领导者要多与数据团队协作交流,来确定你需要知道什么,想要知道什么,什么东西是相关的,然后再来构建和你商业需求相关的数据收集过程。随意从数据库里提取一些信息来分析,只是徒增磁盘储存的成本而已,雇佣数据科学家来分析垃圾数据只能得到垃圾的分析结果。结果呈现可能很漂亮,各种渐变梯度各种三维效果,然而却毫无价值。

相关报道:

https://ift.tt/2MeWShb

]]> 原文: https://ift.tt/2vuL2rJ
RSS Feed

机器知心

IFTTT

带你深入浅出理解深度学习(附资源打包下载)

本文提供资源帮助你在放置一个conv2d层或者在Theano里调用T.grad的时候,了解到在代码背后发生了什么。


网络中有着丰富的教程,供我们开始接触深度学习。你可以选择从著名的斯坦福CS221或者CS224课程开始:

  • CS221:

    https://ift.tt/1ERxZ3M

  • CS224:

    https://ift.tt/1CF36il

如果你从未接触过这方面的内容,你可以选择快速AI课程或者深度学习AI课程:

  • 快速AI课程:

    http://www.fast.ai/

  • 深度学习AI课程:

    https://ift.tt/2t4ooHr

除了深度学习AI课程,其它所有课程都是免费的,你可以在家中舒适地学习。你需要的仅仅是一台好的电脑(最好带有一块Nividia的GPU), 以及你已经准备好向深度学习迈出你的第一步。

然而,本文不是为一个纯新手准备的。当你了解了一些深度学习算法的原理,你可能想要知道这些算法是怎么运作的。尽管深度学习的绝大部分工作(大概是90%的工作,除去10%的的数据)是添加像Conv2d这样的层,调节不同优化策略(如ADAM)的超参数,或者通过在Python中添加一行代码(得益于可用的优秀框架)使用batch norm以及其它一些技巧,很多人可能都很想知道在这之后到底发生了什么。

本文列举的这些资源,在你放置一个conv2d层或者在Theano里调用T.grad的时候,可以帮助你了解到在代码背后发生了什么。

总论

毋庸置疑,深度学习》(Deep Learning Book)这本书是最著名、最为人知的资源:

  • Deearning Book:

    https://ift.tt/1JOI14p

其它比较好的资源还有Charniak教授的课程和论文,可以作为深度学习的技术介绍:

  • Charniak教授课程:

    https://ift.tt/2OEH0FW

  • 论文:

    https://ift.tt/2xOhRAa

当你想要从一个具体的角度理解深度学习的话可以参考其它一些资源比较好的资源。比如,下面这个教程是从应用数学的角度来攥写的,或者如果你仅仅是想要开始写代码而不是深入研究理论的话,可以阅读下面的文章:

  • 应用数学角度的教程:

    https://ift.tt/2rpjNzP

  • 文章链接:

    https://ift.tt/2AE2obs

还有一个比较推荐的是这个基于PyTorch的深度学习课程。这个课程讲解很全面,可以帮助你从一个更加宏观的角度理解:

  • 基于PyTorch的深度学习课程:

    https://ift.tt/2F0eOsC

反向传播的问题

很多时候,人们不确定"为什么梯度下降和反向传播是同一件事情?",或者,"到底什么是链式法则以及反向传播?"要了解这些基本问题,我们可以选择阅读Rumelhart,Hinton和Williams之前写的关于反向传播的论文。这篇论文简单易懂:

  • Rumelhart,Hinton,Williams关于反向传播的论文:

    https://ift.tt/2AE2oIu

除此之外,其它一些非常有用的资源包括Karpathy的关于反向传播导数的博客,以及这段解释导数反向传播的视频:

  • 博客地址:

    https://ift.tt/2hNAaQH

  • 视频地址:

    https://www.youtube.com/watch?v=gl3lfL-g5mA

线性代数和其它数学内容

大家都会给某位立志于学习线性代数的人推荐Strang教授的课程,这大概是关于线性代数最好的资源了:

  • 线性代数课程:

    https://ift.tt/2dhXd2p

类似的还有Boyd教授的运筹学课程

  • 运筹学课程:

    https://ift.tt/2OEH48E

Calculus on Manifolds的《Calculus on Manifolds》这本书是关于向量积分的微积分内容(你可以通过Google搜索"Calculus on Manifolds"找到一份pdf)。但是,一开始学习深度学习的时候,我们不需要深入学习这些内容。另一种方法是快速复习深度学习微积分》(Calculus for DeepLearning)这本书:

  • Calculus for DeepLearning:

    https://ift.tt/2C1USCu

这里还有一些关于深度学习凸优化内容的讲座笔记:

  • 凸优化讲座笔记:

    https://ift.tt/2OEH5cI

此外,Sebastian Reuder的论文也是比较好的资源,同时我也喜欢用下面的笔记来理解tensors的导数

  • Sebastian Reuder论文:

    https://ift.tt/2oxVla4

  • tensors导数笔记:

    https://ift.tt/2vdepzk

自动求导和深度学习

在你做深度学习项目的时候,不必非要了解自动计算导数。大多数框架,像Torch,Theano或者Tensorflow会帮你自动运算好。通常来说,你甚至不需要知道怎样进行导数运算。也就是说,如果你一定要弄清楚深度学习框架是怎样工作的,你可能想在下面这篇文章中理解自动求导是如何实现的

  • 文章链接:

    https://ift.tt/29TPxQA

其它比较好的用来理解深度学习库功能实现的资源可以在下面的博客和视频中找到:

  • 博客链接:

    https://ift.tt/2OEH7RS

  • 视频链接:

    https://www.youtube.com/watch?v=Lo1rXJdAJ7w

卷积神经网络

在你学习了一些如何使用基本convents的课程后,你可能需要去理解卷积是如何在图像上工作的。"输入应用某种类型的卷积后,输出的维度是多少?""stride是如何影响卷积的?""Batch正则化是什么?""对于这类应用问题,我看到过的最好的资源是下面的教程Ian Goodfellow的演讲

  • 教程链接:

    https://ift.tt/2beGrQH

  • Ian Goodfellow演讲视频:

    https://www.youtube.com/watch?v=Xogn6veSyxA

如果你想得到一个好点子的话,下面链接中关于Convenets的评论更加全面,另外这篇关于物体检测的总结也是比较好的资源:

  • 关于Convenets的评论:

    https://ift.tt/2JqcOvv

  • 关于物体检测的总结:

    https://ift.tt/2JqcOvv

自然语言处理中的深度学习

我在前文中提出的Stanford 224课程是一个非常好的起点,可以基本让你了解关于自然语言处理深度学习的方方面面。这里还有一个Graham Neubig(他使用dynet)发布在YouTube上的课程

  • Graham Neubig发布的课程:

    https://www.youtube.com/watch?v=Sss2EA4hhBQ

还有一本你可能喜欢的Yoav Goldberg编写的NLPbook以及这本书编写之后的NLP上新的研究进展的回顾

  • NLPbook:

    https://ift.tt/2ACoyL3

  • NLP上新进展回顾:

    https://ift.tt/2w04XRa

关于是否在文字上使用ConvNets或者RNNs(LSTM/GRUs,也是一个非常普遍的问题,这里有一个不错的概述:

  • 概述:

    https://ift.tt/2ACsVWr

强化学习

Sutton和Barto所写的《强化学习(Reinforcement Learning)这本书是开始学习这些方法的不错途径。这本书是免费的,可以在下面链接中获取:

  • Reinforcement Learning:

    https://ift.tt/2B8hlS2

这里还有一篇关于最新的深度强化学习方法的综述以及一个关于强化学习的非常有趣的教程

  • 深度强化学习方法综述:

    https://ift.tt/2wyz9TC

  • 强化学习教程:

    https://ift.tt/2rAO9Qc

这里有一篇关于MCTS (Monte CarloTree Search)的综述(除了深度强化学习技巧外,Deepmind使用其作为AlphaGo算法的一部分),但是我喜欢用这个快速教程来学习它们:

  • MCTS综述:

    https://ift.tt/2G53a3f

  • 快速教程:

    https://ift.tt/2u2c2y2 

其它一些好的综述/教程

在ICLR 2016上,Goodfellow给出过一篇关于GANs(生成对抗网络广义上生成模型的教程,可以在下面链接中找到:

  • 教程链接:

    https://www.youtube.com/watch?v=HGYYEUSm-0Q

神经网络可以用来做艺术迁移(例如Prisma app),可以在这里找到一篇关于如何做这个任务的详细的调查

  • 神经网络应用于艺术迁移:

    https://ift.tt/2pRgvV6

另一篇关于Reuder写的关于多任务学习的研究(用同一个神经网络结合多个任务)在这里:

  • 关于多任务学习的研究:

    https://ift.tt/2ruqJHE

评论

尽管深度学习在许多问题上效果很好,我们知道永远有它还无法解决的问题。一些值得阅读的好评论有Shalev-Shwartz等人写的Failures of Gradient-Based Deep Learning:

  • Failures of Gradient-Based Deep Learning:

    https://ift.tt/2nQuYzd

这个Hinton的讲座列举了ConvNets的难点为什么ConvNets不能解释训练集图片的负面影响:

  • ConvNets的难点:

    https://www.youtube.com/watch?v=rTawFwUvnLE

  • ConvNets不能解释训练集图片的原因:

    https://ift.tt/2ty9N7f

下面是前段时间的另一个评论以及一篇关于滥用深度学习的全面报告

  • 评论链接:

    https://ift.tt/2EF9hHe

  • 关于滥用深度学习的全面报告:

    https://ift.tt/2BGtnSA

对抗样本

这是一个巨大领域,可以制造欺骗卷积神经网络的人造或真实的数据。我本可将这一节放在评论里,但我没有这样做,原因是:

1. 它们并不是所有应用的都需要面对的技术挑战。

2. 我在这方面不是非常精通。能够使人接触这个话题并引起兴趣的例子在下面这篇文章里,他们生成"对抗物体"来欺骗神经网络

  • 文章链接:

    https://ift.tt/2AE2obs

为了成为一位数据科学家,你还可以在下面链接中阅读关于机器学习算法的例子:

  • 机器学习算法例子:

    https://ift.tt/2DnGV2s

]]> 原文: https://ift.tt/2OEHb44
RSS Feed

机器知心

IFTTT

别再为每小时20美刀的AutoML肉疼啦!开源AutoKeras了解一下

每小时 20 美刀的 AutoML

Google AI 终于发布了 AutoML 的 beta 版,有人说这项服务将彻底改变深度学习的方式。

beta 版链接:https://ift.tt/2DqoiPy

谷歌的 AutoML 是机器学习工具中新的云软件集。它基于谷歌最先进的图像识别研究——神经网络自动架构搜索(Neural Architecture Search,NAS)。NAS 是一种在给定特定数据集中的算法,用于搜索在该数据集上完成特定任务的最优神经网络。AutoML 是一套机器学习的工具,可以让用户轻松地训练高性能的深度网络,而无需用户具备任何深度学习或人工智能方面的知识;你所需要的只是标签数据!谷歌将使用 NAS 为特定的数据集和任务找到最优网络。他们已经展示了该模型如何取得远优于手工设计网络的性能。

AutoML 完全改变了整个机器学习圈,因为对于许多应用程序来说,有了它就不再需要专业技能和专业知识了。许多公司只需要深度网络完成简单的任务,如图像分类。在这一点上,他们不需要招五个机器学习博士,只需要一个能处理数据迁移和数据组织的人即可。

那么 AutoML 会是让所有公司或者个人轻松做人工智能的「万能钥匙」吗?

没那么快!

在计算机视觉中使用谷歌的 AutoML,每小时将花费 20 刀。简直疯了!除非花钱去试,不然你都无法确定 AutoML 是否真的比你自己手工设计的网络更准确。有趣的是,在谷歌以此盈利之前,无论在谷歌还是 AI 社区,人们都更倾向于开源,将知识分享给每一个人。

而谷歌的 AutoML 就将败在「开源」上。

帮你省钱的开源 AutoKeras

AutoKeras 是一个由易用深度学习库 Keras 编写的开源 python 包。AutoKeras 使用 ENAS——神经网络自动架构搜索的高效新版本。AutoKeras 包可通过 pip install autokeras 快速安装,然后你就可以免费在准备好在的数据集上做你自己专属的架构搜索。

因为所有的代码都是开源的,所以如果你想实现真正的自定义,你甚至可以利用其中的参数。所有都来自 Keras,所以代码都很深入浅出,能帮助开发人员快速准确地创建模型,并允许研究人员深入研究架构搜索。

AutoKeras 具备一个好的开源项目该有的一切:安装快速,运行简单,案例丰富,易于修改,甚至可以看到最后 NAS 找到的网络模型!偏爱 TensorFlow 或 Pytorch 的用户可点击以下链接:

  • https://ift.tt/2IiiJS3

  • https://ift.tt/2HhJBln

用户可以尝试利用 AutoKeras 或其他任何实现方式替代 AutoML,它们的价格便宜得离谱。或许谷歌正暗中改进 AutoML,与各种开源方法拉开差距,但 NAS 模型的表现与手工设计的模型差距很小,付出这么高的代价真的值得吗?

知识应该是开源的

总体来看,深度学习和 AI 是一种非常强大的技术,我们不应该为其设置如此之高的成本壁垒。没错,谷歌、亚马逊、苹果、Facebook 及微软都需要赚钱才能在竞争中存活下来。但现在,研究论文是公开的,我们的深度学习库可以快速复制这些方法,在公开内容唾手可得的情况下,为用户设置使用障碍是没有意义的。

这里有一个更严重的潜在问题:知识本身正在被隐藏。AI 领域最新趋势中非常可圈可点的一点就是:许多研究社区都决定在 arXiv 等网站上快速、公开地发表自己的研究成果,以与其他社区分享并获得反馈。此外还有一个趋势变得越来越明显,即在 Github 上发布研究代码以供复制以及在研究和实际应用中实现算法的进一步应用。然而,我们仍然能看到这种研究受困于高高的成本壁垒。

分享有助于每个人知识的增长和科学的进步。知识应该是开源的,这一点毋庸置疑,而且造福人人。

项目链接:https://ift.tt/2u83HbY

AutoKeras 技术解析

相比于 AutoML,AutoKeras 采用的架构搜索方法是一种结合了贝叶斯优化的神经架构搜索。它主要关注于降低架构搜索所需要的计算力,并提高搜索结果在各种任务上的性能。以下我们将从神经架构搜索到贝叶斯优化介绍 AutoKeras 背后的技术,并期望读者们能尝试使用这样的开源技术完成各种优秀的应用。

神经架构搜索(NAS)是自动机器学习中一种有效的计算工具,旨在为给定的学习任务搜索最佳的神经网络架构。然而,现有的 NAS 算法通常计算成本很高。另一方面,网络态射(network morphism)已经成功地应用于神经架构搜索。网络态射是一种改变神经网络架构但保留其功能的技术。因此,我们可以利用网络态射操作将训练好的神经网络改成新的体系架构,如,插入一层或添加一个残差连接。然后,只需再加几个 epoch 就可以进一步训练新架构以获得更好的性能。

基于网络态射的 NAS 方法要解决的最重要问题是运算的选择,即从网络态射运算集里进行选择,将现有的架构改变为一种新的架构。基于最新网络态射的方法使用深度强化学习控制器,这需要大量的训练样例。另一个简单的方法是使用随机算法和爬山法,这种方法每次只能探索搜索区域的邻域,并且有可能陷入局部最优值。

贝叶斯优化已被广泛用于基于观察有限数据的寻找函数最优值过程。它经常被用于寻找黑箱函数的最优点,其中函数的观察值很难获取。贝叶斯优化的独特性质启发了研究者探索它在指导网络态射减少已训练神经网络数量的能力,从而使搜索更加高效。

为基于网络态射的神经架构搜索设计贝叶斯优化方法是很困难的,因为存在如下挑战:首先,其潜在的高斯过程(GP)在传统上是用于欧氏空间的,为了用观察数据更新贝叶斯优化,潜在高斯过程将使用搜索到的架构和它们的性能来训练。然而,神经网络架构并不位于欧氏空间,并且很难参数化为固定长度的向量。

其次,采集函数需要进行优化以生成下一个架构用于贝叶斯优化。然而,这个过程不是最大化欧氏空间里的一个函数来态射神经架构,而是选择一个节点在一个树架构搜索空间中扩展,其中每个节点表示一个架构,且每条边表示一个态射运算。传统的类牛顿或基于梯度的方法不能简单地进行应用。第三,网络态射运算改变神经架构的的一个层可能会导致其它层的很多变化,以保持输入和输出的一致性,这在以前的研究中并没有定义。网络态射运算在结合了跳过连接的神经架构搜索空间中是很复杂的。

在 AutoKeras 作者提交的论文中,研究人员们提出了一种带有网络态射的高效神经架构搜索,它利用贝叶斯优化通过每次选择最佳运算来引导搜索空间。为应对上述挑战,研究者创建了一种基于编辑距离(edit-distance)的神经网络核函数。与网络态射的关键思路一致,它给出了将一个神经网络转化为另一个神经网络需要多少运算。此外,研究者为树形架构搜索空间专门设计了一种新的采集函数优化器,使贝叶斯优化能够从运算中进行选择。优化方法可以在优化过程中平衡探索和利用。此外,作者还定义了一个网络级态射,以解决基于前一层网络态射的神经架构中的复杂变化。该方法被封装成一个开源软件,即 AutoKeras,在基准数据集上进行评估,并与最先进的基线方法进行比较。

该论文的主要贡献总结如下:

  • 结合网络态射提出了一种高效的神经架构搜索算法;

  • 提出了利用神经网络内核的 NAS 贝叶斯优化、树结构采集函数的优化以及网络级的态射;

  • 开发了一个开源软件 AutoKeras,基于本文提出的神经架构搜索方法;

  • 在基准数据集上运行了大量试验来评估该方法。

论文:Efficient Neural Architecture Search with Network Morphism

论文地址:https://ift.tt/2LO9xLv

虽然目前深度神经网络自动调参领域非常关注神经架构搜索(NAS),但现存的搜索算法通常面临计算成本高昂的困境。网络态射(Network morphism)在改变神经网络架构的同时保留它的功能,因此能在搜索过程中实现更有效的训练来帮助 NAS。然而,基于 NAS 的网络态射仍然在计算上比较昂贵,这主要因为对现有的架构选择合适的变形操作效率比较低。

众所周知,贝叶斯优化已经广泛应用于优化基于有限观察值的目标函数,这激励我们探索利用贝叶斯优化加速变形运算选择过程。本论文中提出了一种新颖的框架,它引入了神经网络核函数和树架构的采集函数最优化方法,并允许使用贝叶斯优化为高效的神经架构搜索引导网络态射。通过使用贝叶斯优化选择网络态射操作,搜索空间的探索会更加高效。此外,将这一方法精心包装成一个开源软件,即 AutoKeras,没有丰富机器学习背景的开发者也可以便捷地使用它。研究者已经对真实数据集做了密集的实验,并证明了开发的框架对于当前最优的基线模型有更优的性能。

研究过程中需要解决的第一个问题是:NAS 空间不是欧氏空间,它并不满足传统高斯过程的假设。由于架构包含的层级数和参数数量并不确定,因此向量化所有神经架构是不切实际的。此外,因为高斯过程是一种核方法,所以研究人员使用神经网络核函数以解决 NAS 搜索空间的问题,而不是直接向量化神经架构。核函数背后的原理可直观理解为将一个神经架构变形为另一个所需的编辑距离。

图 1:神经网络核函数

我们需要解决的第二个问题是采集函数(acquisition function)最优化。在欧氏空间上定义了传统采集函数,其优化方法不适用于通过网络态射进行的树架构搜索。因此本文提出一种优化树架构空间采集函数的新方法。

评估该方法有效性的结果如表 1 所示。我们的方法在所有数据集上的错误率最低。

表 1:分类错误率

原文链接:https://ift.tt/2v1htOU

]]> 原文: https://ift.tt/2n6tmyF
RSS Feed

机器知心

IFTTT

CVPR PAMI青年研究员奖得主Andreas Geiger:自动驾驶中的计算机视觉

在今年 6 月召开的 CVPR2018 上,德国图宾根大学及马克斯·普朗克研究所(MPI)自动视觉组负责人 Andreas Geiger 教授摘得了 PAMI Young Researcher Award,该奖项颁发给 7 年内获得博士学位且早期研究极为有潜力的研究人员。

图中为 Andreas Geiger,图右为另一名获奖者,来自 Facebook 青年科学家何恺明

Geiger 的研究主要集中在用于自动驾驶系统的三维视觉理解、分割、重建、材质与动作估计等方面。他主导了自动驾驶领域著名数据集 KITTI 及多项自动驾驶计算机视觉任务的基准体系建设,KITTI 是目前最大的用于自动驾驶的计算机视觉公开数据集。

2018 年年初,Geiger 出任了国内人工智能数据解决方案提供商北京冲浪科技有限公司的首席科学家。7 月,机器之心通过冲浪科技对 Geiger 进行了专访,谈了谈自动驾驶领域的计算机视觉任务的特点、研究前沿及 KITTI 数据集的最新进展。


机器之心:自动驾驶系统都由哪些模块组成?它们之间的依赖关系是什么?

自动驾驶系统通常有一个非常经典的、模块化的流水线。

首先是感知模块(perception stack),感知模块将地图、三维传感器、二维传感器中的信息给到「世界模型」(world model),世界模型将上述信息,汇总在一张地图中,理解每一个时刻不同的物体相对于路面、道线等的位置,预测下一刻的可选路径都有哪些。随后是一个规划模块(planning model),进行决策。决策的内容也是分层级的。粗粒度的决策需要决定如何从 A 点到 B 点,完成的是类似 GPS 的工作。除此之外还有诸多细粒度的决策工作,例如决定走哪一条车道,是否要暂时占用对向车道完成超车,车速应该设定为多少等。最后是控制模块(control module),控制模块操纵所有的控制器,有高层的控制器,比如电子稳定系统 ESP,也有最基层的控制器,比如控制每一个轮子进行加速和刹车的控制器。


机器之心:想要让一个自动驾驶系统作出正确的决策,首先要完成哪些计算机视觉任务?

首先是车辆定位:衡量车辆的运动并在地图中进行定位。完成这部分工作的是视觉测距(visual odometry)系统和定位(localization)系统。二者的区别是,视觉测距估计的是车辆相对于前一时间步进行的相对运动,而定位是对车辆在地图中的运动进行全局的估计。定位是可以精确到厘米级的,车辆相对于一些地图中固定的物体(例如电线杆)的距离已经是已知的,基于这些信息,车辆已经可以进行相当不错的路径规划了。

然后是三维视觉重建,重建范围通常在 50-80 米,具体需求视行驶速度而定。大部分 STOA 自动驾驶系统会使用激光雷达(LiDAR)进行三维重建。不过也有少部分团队试图直接从图像中恢复三维信息。由于图像中的数据相比之下更为嘈杂,因此完全基于图像的重建是一项更具有挑战性的工作。

基于单张激光雷达点云与二维图片的三维视觉重建

除了重建之外,你也需要对车辆正前方正在发生的事有充分的理解。因此,你需要进行物体检测,也需要在理解物体是什么的基础上对其进行进一步的分类,而检测和分类会帮助预测其未来轨迹。进行检测和分类的方式是多样的,你可以给每一个物体画一个边界框(bounding box):这是最常见的方式,但是自动驾驶需要在三维的物理世界中进行运动规划,所以你至少要需要一个三维的边界框。

更精确的是实例分割(instance segmentation)和语义分割(semantic segmentation)。当物体是形状为凹或者是隧道之类需要穿行的物体时,边界框显然是不够的。实例分割将图像里属于一些特定目标类别的每个实例的所有像素分为一类。实例分割通常在二维图像上进行,但也有三维版本,三维实例分割基本等同于物体重建。而语义分割为图像里每一个像素分配一个语义标签,同一类别的不同实例不做区分。除此之外,全景分割(panoptic segmentation)基本上可以视作实例分割和语义分割的结合。全景分割对那些没有实例只有整体的类别也进行区分,例如天空和植被。天空无法用一个边界框框柱,而植被需要在平时避开,但系统也需要知道在紧急情况下汽车冲上草坪并无大碍(相比之下撞上树或者行人就有很大问题了)。因此语义信息是必要的。

接下来是运动估计。根据之前的一帧或数帧,预估视野里的每一个点,或者说每一个物体,在下一帧的位置。一些物体,例如车辆,它们的移动是比较容易预判的,因此运动模型可以进行准确率较高的预测。而另外一些物体,例如行人,会非常突然地变更其运动轨迹,导致运动模型的建立更为艰难。即便如此,较短时间区间(2-3 秒)的动作预测,在动态物体较多的拥挤场景下的决策过程中也仍然扮演着至关重要的角色。

上述任务都是各自独立的,但是实际上,收集上述信息的系统并不是各自独立运转的。因此情境推理(contextual reasoning)也有助于给出更准确的预测。例如一群行人通常会同时等红灯、同时过马路,一辆车试图并线时另一辆车会刹车让路,以这些外部信息、先验知识做约束,理解复杂场景会变得更为容易。

最后,一个我认为十分重要但是并没有引起较多重视的领域是不确定性推理(reasoning under uncertainty)。人类感官或者车辆传感器拿到的数据中必然包含着不确定性,因此,如何准确地评估不确定性,并兼顾「最小化风险」和「完成任务」,是一个重要的话题。理想情况下,所有上述检测、分割、重建、定位任务都应该在不确定性约束下进行,系统在行进之前应该知道它可能犯哪些错误。


机器之心:如何对与自动驾驶相关的计算机视觉任务进行分类?分类的标准是什么?

以输入进行分类是一种常见做法。按照输入的来源,可以分为来自激光雷达、摄像头、雷达、乃至车内的其他仪表的数据。按照输入表征也可以进行分类,激光雷达给出的稀疏的点云和摄像头给出的密集的二维图像就是两种不同的表征,采取的算法也有所不同。按照维度也可以进行分类,用于三维输入的算法通常更为复杂,因为如果不采取特殊做法,三维输入会快速耗尽内存资源。

另一种分法是按照线索分类。线索可以分为语义线索(semantic cues)和几何线索(geometric cues),几何线索是利用多张图片通过特征匹配和三角对齐得到深度信息。但是因为这种估算的误差与距离呈平方关系,因此有很大的局限性。换言之,人类的视觉系统其实也是不适合开车的,因为我们的视觉系统只是为了在两手张开的距离内进行操作而设计的。人类在开车的时候利用语义线索弥补了这一缺陷:即使只有一张图片,理论上其中并不包含距离信息,人类仍然可以根据大量的先验知识估计其中物体的相对距离。总而言之,自动驾驶系统可以通过安装多个摄像头获得三维信息,也可以通过安装一个摄像头,但是通过强先验来预判会看到什么。理想情况下,我们希望将二者结合。

还有一种方法是根据物体是否运动以及如何运动进行分类。首先分为静态部分识别和运动物体识别。对于静态场景来说,有专门的标准重建算法,基于「所有的东西都是静态的」这一假设进行重构。但是事实上,我们需要从多幅拍摄于不同时间的图像中重建场景,这就需要我们设计专门的算法来处理场景中的运动物体。运动物体又可以分为刚性物体和非刚性物体。刚性物体的所有部分一起运动,可以用六自由度变化来描述它在三维空间中的运动轨迹。汽车就是一个刚性物体,而行人就属于非刚性物体,行人有胳膊、腿,彼此之间以关节相连,在运动中,每一个部分的运动轨迹大相径庭,因此刻画行人的运动需要额外的自由度。


机器之心:任务之间是否有先后顺序?是否存在一个自动驾驶系统通常采用的完成任务的流程?

首先,确实存在一些依赖关系。例如三维物体识别需要以三维信息为基础。如果你只有普通的图像,那么通常就要从三维重建开始。虽然这不是必须要做的,但是大多数研究者选择采用这个流程。也有人选择用动作(motion)来辅助识别,但是动作只是一个非常弱的线索。

三维重建也不仅仅对三维识别有帮助,它也有助于运动估计。基于 RGBD 信息的运动估计难度要小于仅基于 RGB 信息的运动估计。

而基于地图的定位也有助于行人及其他交通参与者的行为预判。例如,人行道的常见位置、红绿灯的常见位置给出了一个关于行人运动轨迹的强先验。另外,定位还能帮助你「穿墙透视」:即使路的转角被高楼大厦遮挡住了,根据地图定位,你仍然知道楼后面是马路,而马路上会有其他交通参与者存在。


机器之心:来自不同传感器的数据如何共同作为输入服务于同一模型?

总的来说,识别或者检测类任务是靠着找出物体的形状外观进行的。不同的传感器的长处各不相同,激光雷达给出距离信息,但是很难描述外观,因为激光雷达捕捉反射率,反射率与外观并不直接相关。而图像中虽然包含丰富的外观信息,但是缺少距离信息。毫米波雷达的视野非常窄,但是可以进行远距离测距和测速。

理想情况下,你要根据不同传感器的特点去将它们生成的数据组合在一起。例如,如果你同时拥有立体视觉数据和激光雷达数据,你希望利用激光雷达的远场数据和立体视觉的近场数据。这是因为在 10-15 米范围内,立体视觉要比激光雷达精确,但是超出了这个范围,激光雷达反而更为精确。

由于不同传感器之间的校准是非常困难的,因此在每一个点选择信任哪个传感器的数据是一道世界性的难题。而结合的做法有很多,总得来说就是把不同的数据类型投射到同一个空间内。你可以用立体摄像机找到每个三维点阵里对应的像素值,把它和激光雷达数据结合,也可以把激光雷达中的深度信息投影回图片里。

将二维色彩信息映射到三维点云中

当然,这只是研究者通常采用的方法,从很多汽车制造商的角度,他们希望拥有信息冗余,让不同的传感器各自为政,作出独立的决策。这样一旦某一个传感器失灵了,其余的传感器仍然能提供决策所必要的信息。


机器之心:研究者所采用的系统和汽车制造商使用的系统有哪些不同?

如今的车辆和驾驶员辅助系统通常都存在算力非常分散化的现状。用于研究的车辆可以有一个集中的处理器,但是如今的车辆中系统的现状是,摄像头的算力只与摄像头相连,控制系统的计算单元算力也非常小,你只能把物体基本信息提交给它,无法把深度信息全部提交给它。

但是理论上,只有当你集成了所有传感器获得的信息,才能获得最佳的性能。因此这也是从当今的驾驶辅助系统到自动驾驶汽车需要完成的一个转变。


机器之心:现如今,绝大多数自动驾驶公司仍然选用不同类型、数量的传感器,开发自己的系统。不同传感器带来的差异有多大?

大多数传感器的工作原理还是相似的。例如,对于摄像头而言,大多数公司都选择对光线变化尽可能敏感的,或者说动态范围(dynamic range)尽可能大的摄像头。这是因为如今摄像头的动态范围仍然远小于人眼,例如,从阳光下驶入隧道后就要求系统迅速更换摄像头的结构以适应突如其来的黑暗。此外,世界上生产感光元件也只有屈指可数的几家,因此摄像头之间的差别并不大。

但是,即使完全相同的摄像头,安装的高度、位置不同,视野里看到的东西就会存在很大的差异。比如卡车车顶的摄像头和普通的小型车车顶的摄像头,其相对于路面的相对位置的巨大差异就决定了他们的很多配置和算法无法通用。这是一个有待解决的研究课题。

至于激光雷达,如今的大多数激光雷达都来自 Velodyne。但是现在也有越来越多新牌子涌现。同时,在传统的旋转式雷达之外也发展出了更便宜、更容易装配的固态雷达。从学习的角度,这都是需要适应的部分。

毫米波雷达更为神秘,各家都将其工作原理视为机密,拿到毫米波雷达的原始数据都很困难。

总体来讲,如今用于研究的设备配置方法都非常类似:例如把摄像头放在尽可能高的地方、尽可能在每个方向都设置摄像头等等。如今也有越来越多功能更为强大的摄像头问世,有的摄像头的分辨率已经接近人眼,有的致力于更远的焦距。


机器之心:现在的自动驾驶视觉领域都有哪些前沿问题?

一个非常重要的问题是如何处理那些分布里极少出现的稀有事件、个案。如今行之有效的自动驾驶算法都是监督算法,而我们在收集训练集的时候无法拿到大量的稀有事件标记数据。我认为,我们需要找到好的稀有事件生成模型,现在,稀有事件刻画的领军团队无疑是 Waymo,但是他们采用的方法是搭建一个大实验室,把各种稀有事件人工演出来。

领域迁移是另一个大问题,我们不希望换了环境/车之后就要重新训练模型。迁移学习能够一定程度上通过在一个数据集上训练、在另一个上面精调来解决这个问题,但是这并不是最终的解决方案。

此外,仿真(simulation)虽然不像前两项那么重要,也仍然有进步的空间。尤其是如何跨越从仿真到真实以及从真实到仿真的差距。仿真永远只是仿真,仿真能够表达出的维度永远无法达到真实世界的复杂程度,纹理、几何关系都过于简单了。前面谈到的稀有事件也是无法通过仿真习得的。

最后,自动驾驶终归需要作出「主观判断」,这是整个人工智能领域面对的一个挑战:系统需要在前所未见的场景中进行决策,并且决策时可能需要稍微「违背规则」,这是计算机所不擅长的事情。


机器之心:能否介绍下您在图宾根大学/马普所的自动视觉组的工作重点?

上文提到的研究我们大部分都有涉及。

我们进行一些底层的研究,例如三维重建和三维动作预测。我们研究生成模型,我希望能将现有的生成模型扩展到能够生成整个「世界」的模型:生成内容包括几何信息、动作信息等等。当然,整个学术界距离实现这一步还有很长的路要走,但是一旦实现,这将对仿真以及自动驾驶的训练给予极大帮助。

另一方面,我们也在研究小数据学习,因为数据是一个太大的问题。在 KITTI 360 数据集中,我们就做了一些尝试,例如在三维空间进行标注,然后由此获得二维的标注。对于动作估计来说更是如此,因为人类甚至不能很好地对动作数据进行标注。

还有仿真与真实世界的连接,例如我们近期的工作在研究如何把虚拟的物体放进真实场景中,这样我们只需要对我们真正关注的部分建模。

在通过多帧三维点云建立的三维重构空间里进行一次标注,能够同时得到多张二维图像的标注

从模型的角度来看,我们主要研究深度学习模型和概率模型。我们对学术界的贡献主要在于将深度学习应用在三维数据、稀疏数据等由于存储或模型能力限制而在现阶段无法获得较好效果的子领域。我们也在思考,分模块的自动驾驶系统是不是最优的解决方案?不考虑中间输出的端到端的自动驾驶模型会不会是更优的解决方案?最极端的端到端模型是用一个单独模型拿到图像之后直接进行方向盘、油门刹车的控制,但是建立这样的模型也非常难,我想二者中间某处可能存在更好的解决方案。

我们也致力于提供基准(benchmarking),提供一个比较不同模型的公允基础。包括 KITTI 等一系列数据集、学术会议上的研讨会和挑战赛。KITTI 数据集本身就提供了超过了 10 项挑战。


机器之心:您如何选择研究课题?

研究的终极原则是,不应以「最大化论文数量」为目标,应该以「最大化领域贡献」为目标。这也是为什么我们致力于建立基准:自动驾驶研究领域在 KITTI 的影响下发生了很多变化。

另一个原则是「更进一步」,在直接能够投入业界应用的算法之外,我们更关心那些高风险,但是也潜在具有高收益的算法:它们有很大的概率会失败,但是一旦成功,就会是跨时代的一步。


机器之心:能否简要介绍一下 KITTI 数据集?

我们一共进行了超过六小时的行驶,并且公开了三小时的行驶数据。这听起来并不多,但是相比于之前的自动驾驶公开数据集,已经有了一个非常巨大的数量上的提升。

KITTI 的优势在于我们在车上安装了各种传感器。第一代数据集包括了激光雷达、摄像头、GPS、IMU 等不同传感器的信号数据。

KITTI 数据采集车

我们在网上以挑战赛的形式发布了一系列任务,任务包括立体视觉、光流、场景流、二维物体识别和三维物体识别、鸟瞰图物体识别、语义分割、实体分割、道路与车道检测、单图像深度估计、深度完成(depth completion,把稀疏的激光雷达点云数据变为密集的图像)等。当前的自动驾驶系统需要的各类任务我们都有涵盖。

每个任务的训练集大小主要取决于标注难度,例如立体视觉和光流有 400 张标记数据,动作估计有超过 10,000 张标记数据,单图像深度估计有 90,000 张。

我们给出了训练集和不包含真实标签的测试集。研究者每个月可以向服务器上传他们的结果,我们则给出性能反馈。我们不向研究者提供测试集的真实标签,这在一定程度上解决了过拟合问题。


机器之心:如何选择衡量标准(evaluation metrics)?衡量标准与损失函数之间的区别是什么?

我们通常采用业界已有的衡量标准。例如,在立体视觉和光流任务中,我们计算正确与错误的像素数;在物体识别任务中,我们计算平均精度,即预测和真值之间重叠的面积与总面积的比例。

损失函数通常是我们想要实现的目标,在自动驾驶中,的确存在目标和损失函数错位的问题,我们的一些研究也在致力于弥合这种错位。例如,在光流任务里,一个左上角的代表天空的像素点真的和代表路面的像素点一样重要吗?如果不是的话,如何设置新的衡量标准?这都是我们在思考的问题。


机器之心:在数据集、衡量标准等方面,与自动驾驶相关的计算机视觉任务和通用计算机视觉任务有什么差异?

首先是多样性程度不一样。自动驾驶是一个非常特殊的领域,这甚至让算法起步变得更「容易」:车辆不会行驶到下水道里、不会行驶在房顶上,如果你不知道身处何方,那么预测面前的像素是「道路」,准确率其实很高。

但是另一个角度,自动驾驶和通用计算机视觉对算法精度的要求也是截然不同的,一个准确率 99% 的人脸识别算法已经很令人满意,但是一个准确率 99% 的自动驾驶模型大概每天都要撞翻点什么。因此自动驾驶需要注意图片里的细部,注意那些此刻距离我们很远,但是过一会儿就会出现在我们眼前的物体,通用视觉任务不需要如此。

此外,数据收集的难度也截然不同,通用视觉任务的数据集大部分来自互联网,但自动驾驶所需的数据不是天然存在的。也很难标注。在业界,仅仅 Mobileye 一家公司每天就有近千人在专门进行数据标注,业界的算法与学界公开的算法相比,未必有显著的优势,其性能优势主要来源于数据优势。


机器之心:KITTI 360 相比于之前的版本有哪些更新?冲浪科技在数据集的建设方面做出了哪些工作?

KITTI 360 仍然沿用了同一辆车,我们增加了一个激光雷达,给出了更多、更加精确的三维信息。我们也增加了 360 度图像,为数据扩增建立了环境地图。我们希望这能让我们更好地标记视野中的物体。

我们和冲浪科技合作开发了 KITTI 360 用到的三维标注工具(文中大部分示例图片截取自该点云数据标注平台)。自动驾驶的标注是一项十分复杂的工作,例如像素级别的语义和实例分割,通常情况下一张图像的标注要耗时 60 - 90 分钟。而利用我们共同开发的标注工具,标注时间被极大缩短,这对于实验室而言是至关重要的。

标注工具界面

今年年底我们会公开一些与三维视觉理解相关的新任务,比如图像中所有物体的识别以及方向估计,我们仍然在探讨合适的组织方式。同时我们也很关注时序连贯的分割,因为时序连贯是自动驾驶数据的固有特性。


关于冲浪科技:

冲浪科技致力于为无人驾驶公司提供无人车数据解决方案,包括:无人车多传感器的融合、无人车数据的采集、导入、及点云数据的可视化,并且所有通过无人车采集的数据可以通过冲浪科技自主研发的点云标注平台进行标注。

冲浪科技和 Andreas Geiger 实验室有着深入的合作:目前冲浪科技会参与共同讨论整个标注流程及设计,让算法和人工可以高效地结合在一起,共同开发出更完善的标注流程和工具。冲浪科技的每个数据集都由精通算法的技术专家独家设计,会针对数据集可能出现的实际问题对数据集进行规划。数据集的采集、标注、质检流程更严格,对数据集的检查需要 3 步 100% 的质检。 

]]> 原文: https://ift.tt/2LN9ek6
RSS Feed

机器知心

IFTTT

DeepSeek + Pi 王炸组合跑赢 Claude Code?-InfoQ每周精要No.935

「每周精要」 ...