点击上方关注,All in AI中国

并不是每天都能看到基于模型的机器学习的顶级跨平台框架之一对全世界的所有人开放。今天,微软又开源了一个非常重要的机器学习框架:infer.NET,采用的是MIT许可证,以便在商业应用中免费使用。

微软云端机器学习方法(微软又开源了一个非常重要的机器学习框架)(1)

开源Infer.NET代表了漫长而雄心勃勃的旅程的高潮。位于英国剑桥的微软研究院的团队早在2004年开始开发这个框架。微软在制作可扩展和可解释的机器学习解决方案的过程中学到了很多东西。Infer.NET最初被设想为一种研究工具,微软在2008年将其发布用于学术用途。因此,已有数百篇论文使用该框架在各个领域发布,从信息检索到医疗保健。2012年,Infer.NET甚至还因其在流行病学、疾病遗传原因、森林砍伐和哮喘方面的研究而获得了人类专利奖。

随着时间的推移,该框架已从研究工具发展成为Office、Xbox和Azure中许多Microsoft产品中的机器学习引擎。最近的一个例子是TrueSkill 2--一个匹配在线视频游戏中玩家的系统。它在Infer.NET中实现,在最畅销的Halo 5和Gears of War 4中运行,可以处理数百万场比赛。

但是在充满机器学习库的时代,Infer.NET与竞争对手的区别是什么?Infer.NET支持基于模型的机器学习方法。这使您可以将领域知识合并到模型中。然后,框架可以直接从该模型构建定制的机器学习算法。这意味着Infer.NET不是必须将您的问题映射到您已经获得的预先存在的学习算法上,而是根据您提供的模型为您构建学习算法。

基于模型的机器学习的另一个优点是可解释性。如果您自己设计了模型并且学习算法遵循该模型,那么您可以理解系统为何以特定方式运行或进行某些预测。随着机器学习应用逐渐进入我们的生活,理解和解释他们的行为变得越来越重要。

基于模型的机器学习自然也适用于某些数据特征的问题,例如实时数据、异构数据、数据不足、未标记数据、缺少部分的数据和使用已知偏差收集的数据。事实上,如果你已经阅读了这篇文章,那么你很有兴趣学习更多关于基于模型的机器学习。碰巧的是,Infer.NET团队已经编写了一本关于这个主题的精彩在线书籍,并且完全免费。(http://mbmlbook.com)

微软云端机器学习方法(微软又开源了一个非常重要的机器学习框架)(2)

在Infer.NET中,使用概率程序描述模型。这可能看似矛盾,但实际上是一个强大的概念,用于描述机器理解的语言中的真实世界过程。Infer.NET将概率程序编译成高性能代码,用于实现隐式称为确定性近似贝叶斯推理的东西。这种方法允许实质性的可扩展性。例如,我们可以在一个自动从数十亿网页中提取知识的系统中使用它,包括PB级的数据。

确定性推理算法的使用是对大多数其他概率编程框架的主要基于采样的方法的补充。我们方法的一个关键功能是支持在线贝叶斯推理- 系统在新数据到来时学习的能力。这对于与用户实时交互的商业和消费产品至关重要。例如,在前面提到的TrueSkill 2系统中,为了提供有竞争力的比赛,我们需要在每轮之后立即更新球员的技能。我们只需一毫秒即可完成。

总而言之,当您对要解决问题的域有广泛了解,或者解释系统行为对您来说很重要,或者您有一个生产系统需要在新数据到来时有学习的能力。

Infer.NET团队期待与开源社区合作,进一步开发和发展框架。Infer.NET将成为ML.NET的一部分- 用于.NET开发人员的机器学习框架。微软已经采取了几个步骤来与ML.NET集成,比如在.NET Foundation下设置存储库并将包和命名空间移动到Microsoft.ML.Probabilistic。Infer.NET将扩展ML.NET以进行统计建模和在线学习。

对Infer.NET感兴趣? 在这里下载框架(https://www.nuget.org/packages?q=Microsoft.ML.Probabilistic)。 通过.NET Core提供对Windows、Linux和MacOS的支持。教程和示例页面(https://dotnet.github.io/infer/userguide/Infer.NET tutorials and examples.html)介绍了使用Infer.NET可以实现哪些模型。 该文档还包含详细的用户指南。

微软云端机器学习方法(微软又开源了一个非常重要的机器学习框架)(3)

Infer.NET团队,顶行,从左到右:Martin Kukla,John Guiver,Tom Minka,John Winn,Sam Webster,Dany Fabian。 底行,从左到右:Pavel Myshkov,Yordan Zaykov,Alex Spengler。

微软云端机器学习方法(微软又开源了一个非常重要的机器学习框架)(4)

,