社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

机器学习重新构想计算的构建块

人工智能学家 • 3 年前 • 365 次点击  

来源:ScienceAI

编辑:绿萝

传统算法为机器学习等复杂的计算工具提供动力。一种称为「预测算法」的新方法利用机器学习的力量来改进算法。


算法——允许程序对数据进行排序、过滤和组合等的代码块——是现代计算的标准工具。就像手表里的小齿轮一样,算法在更复杂的程序中执行定义明确的任务。
它们无处不在,部分正因为如此,它们随着时间的推移经过精心优化。例如,当程序员需要对列表进行排序时,他们会使用一种已经使用了几十年的标准「排序」算法。
现在,研究人员正在使用称为机器学习的人工智能分支重新审视传统算法。他们的方法被称为预测算法,它利用了机器学习工具可以为传统算法处理的数据提供的洞察力。这些工具以一种真正的方式重新激发了对基本算法的研究。
MIT 计算机科学家 Piotr Indyk 说,机器学习和传统算法是「两种截然不同的计算方式,而带有预测的算法是连接两者的一种方式」。「这是一种将这两个完全不同的思路结合起来的方法。」
最近对这种方法的兴趣激增始于 2018 年,当时 MIT 计算机科学家 Tim Kraska 和谷歌研究人员团队发表了一篇论文。在这篇论文中,作者建议机器学习可以改进一种经过充分研究的传统算法,称为布隆过滤器(Bloom filter),它解决了一个简单但令人生畏的问题。
论文链接:https://arxiv.org/abs/1712.01208
想象一下,您管理公司的 IT 部门,您需要检查您的员工是否会访问存在安全风险的网站。天真地,您可能认为您需要根据已知站点的黑名单检查他们访问的每个站点。如果列表很大(互联网上不受欢迎的网站可能就是这种情况),问题就会变得难以处理——您无法在网页加载之前的很短的时间内对照庞大的列表检查每个网站。
布隆过滤器提供了一种解决方案,让您可以快速准确地检查任何特定站点的地址或 URL 是否在黑名单上。它实际上是通过将巨大的列表压缩成一个较小的列表来提供一些特定的保证来做到这一点。
布隆过滤器永远不会产生误报——如果他们说网站不好,那就不好了。但是,它们可能会产生误报,因此您的员工可能无法访问他们应该有权访问的某些网站。那是因为他们用一些准确性来换取大量数据压缩——一种叫做「有损压缩」的技巧。布隆过滤器对原始数据的压缩越多,精度越低,但节省的空间越多。
对于一个简单的布隆过滤器,每个网站都同样可疑,直到它被确认不在列表中。但并非所有网站都是平等的:有些网站比其他网站更有可能进入黑名单,这仅仅是因为他们的域名或 URL 中的文字等细节。人们直观地理解这一点,这就是为什么您可能会在单击 URL 之前阅读它们以确保它们是安全的。
Kraska 的团队开发了一种算法,也可以应用这种逻辑。他们称其为「学习型布隆过滤器」,它将小型布隆过滤器与循环神经网络(RNN)结合在一起——这是一种机器学习模型,可在暴露于数十万个安全和不安全的网站后了解恶意 URL 的样子。
当学习到的布隆过滤器检查一个网站时,RNN 首先行动并使用其训练来确定该网站是否在黑名单上。如果 RNN 说它在列表中,则学习到的布隆过滤器会拒绝它。但是,如果 RNN 说该站点不在列表中,那么小型布隆过滤器就会转向,准确但不假思索地搜索其压缩网站。
通过将布隆过滤器放在流程的最后并给予最终决定权,研究人员确保学习的布隆过滤器仍然可以保证没有误报。但是因为 RNN 使用它所学到的东西对真阳性进行预过滤,所以小型布隆过滤器更多地充当备份,也将其误报保持在最低限度。本来可以被更大的布隆过滤器阻止的良性网站现在可以通过更准确的学习布隆过滤器。实际上,Kraska 和他的团队找到了一种方法,可以利用两种经过验证但传统上相互独立的方法来解决同一问题,从而获得更快、更准确的结果。
Kraska 的团队表明新方法有效,但他们没有正式说明原因。这项任务落到了哈佛大学布隆过滤器专家 Michael Mitzenmacher 身上,他发现 Kraska 的论文「创新且令人兴奋」,但从根本上也不能令人满意。「他们进行实验,说他们的算法效果更好。但这究竟是什么意思?」 他问。「我们怎么知道?」
2019 年,Mitzenmacher 提出了学习布隆过滤器的正式定义,并分析了它的数学特性,提供了一个准确解释其工作原理的理论。虽然 Kraska 和他的团队证明了它在一个情况下是可行的,,但 Mitzenmacher 证明它总是可以工作。
论文链接:https://arxiv.org/abs/1901.00902
Mitzenmacher 还改进了学习到的布隆过滤器。他展示了在流程中添加另一个标准布隆过滤器,这一次是在 RNN 之前,可以预先过滤负面情况,并使分类器的工作更容易。然后,他使用他开发的理论证明了这是一种改进。
早期的预测算法沿着这条循环轨道前进——创新的想法,比如学习过的布隆过滤器,激发了严谨的数学结果和理解,这反过来又带来了更多的新想法。在过去几年中,研究人员已经展示了如何将具有预测的算法整合到调度算法、芯片设计和 DNA 序列搜索中。
除了性能提升之外,该领域还推进了一种越来越受欢迎的计算机科学方法:通过为典型用途设计算法来提高算法的效率。
目前,计算机科学家经常设计他们的算法以在最困难的情况下取得成功——一个由试图击败他们的对手设计的算法。例如,想象一下试图检查一个网站关于计算机病毒的安全性。该网站可能是良性的,但它在 URL 和页面标题中包含「计算机病毒」。即使是复杂的算法也足以令人困惑。
Indyk 称这是一种偏执的方法。「在现实生活中,」他说,「输入通常不是由对手产生的。」例如,员工访问的大多数网站并不像我们假设的病毒页面那么棘手,因此算法更容易对其进行分类。通过忽略最坏的情况,研究人员可以设计适合他们可能遇到的情况的算法。例如,虽然数据库目前平等对待所有数据,但具有预测的算法可能会导致数据库根据其内容和用途来构建其数据存储。
而这还只是开始,因为使用机器学习来增强其算法的程序通常只会以有限的方式这样做。与学习的布隆过滤器一样,这些新结构中的大多数只包含一个机器学习元素。Kraska 设想一个完整的系统由几个独立的部分组成,每个部分都依赖于具有预测的算法,并且它们的交互由预测增强组件调节。
「利用这一点将影响许多不同的领域。」Kraska 说。

参考内容:https://www.quantamagazine.org/machine-learning-reimagines-the-building-blocks-of-computing-20220315/

未来智能实验室的主要工作包括:建立AI智能系统智商评测体系,开展世界人工智能智商评测;开展互联网(城市)大脑研究计划,构建互联网(城市)大脑技术和企业图谱,为提升企业,行业与城市的智能水平服务。每日推荐范围未来科技发展趋势的学习型文章。目前线上平台已收藏上千篇精华前沿科技文章和报告。


  如果您对实验室的研究感兴趣,欢迎加入未来智能实验室线上平台。扫描以下二维码或点击本文左下角“阅读原文”


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/129320
 
365 次点击