没有合适的资源?快使用搜索试试~ 我知道了~
======−SoftwareX 11(2020)100508原始软件出版物zfit:可扩展的pythonic拟合JonasPleuille,Albert Puig Navarro,Rafael Silva Coutinho,Nicola Serra苏黎世大学物理学院,瑞士ar t i cl e i nf o文章历史记录:2019年12月20日收到收到修订版2020年4月24日接受2020年关键词:模型拟合数据分析统计推断Pythona b st ra ct统计建模是许多科学领域,特别是高能物理(HEP)分析中的关键要素。在HEP中执行此任务的标准框架是C++ ROOT/RooFit工具包; Python绑定仅松散地集成到科学Python生态系统中。在本文中,zfit,一个新的替代RooFit编写的纯Python,提出。最重要的是,zfit提供了一个定义良好的高级API和工作流程,用于高级模型构建和拟合,以及在TensorFlow之上的实现,允许透明地使用CPU和GPU。它被设计成可以以非常简单的方式进行扩展,允许以透明的方式使用科学Python生态系统的尖端开发。介绍了zfit的主要特点,并讨论了其扩展到数据分析,特别是在HEP实验的背景©2020作者由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本0.3.6用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX_2019_376法律代码许可证BSD-3使用Git的代码版本控制系统使用Python、TensorFlow的软件代码语言、工具和服务编译要求,操作环境依赖性Linux和MacOS支持(Windows功能未知);Python 3.6+;依赖关系(也在需求中指定)。txt):tensorflow >1。十四岁02<张量流w_probability>0的情况。六、0,<0。八,scipy>1。2root,pandas,numpy,iminuit,typing,colorlog,textile,ordered-set如果可用,链接到开发人员文档/手册https://zfit.readthedocs.io/en/0.3.6/问题支持电子邮件zfit@physik.uzh.ch软件元数据当前软件版本0.3.6此版本可执行文件的永久链接https://github.com/zfit/zfit/releases/tag/0.3.6法律软件许可证BSD-3计算平台/操作系统类Unix(Windows未经测试)安装要求&依赖项依赖项(也在要求中指定。txt):tensorflow >1。十四岁02<张量流w_probability>0的情况。六、0,<0。八,scipy>1。2连根拔起,熊猫,numpy,iminuit,如果可用,链接到用户手册-如果正式出版,包括参考出版物在参考列表打字,colorlog,文本,有序网站https://zfit.readthedocs.io/en/0.3.6/问题支持电子邮件zfit@physik.uzh.ch*通讯作者。电子邮件地址:Jonas. cern.ch(J. Joule),albert.puig. gmail.com(A.PuigNavarro),rafael.silva. cern.ch(R.Silva Coutinho),nicola. cern.ch(N.Serra)。https://doi.org/10.1016/j.softx.2020.1005082352-7110/©2020作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx2J. Alberle,A.普伊格纳瓦罗河Silva Coutinho等人粤公网安备44010802000018号1. 介绍通过实验收集的数据,如大型强子对撞机(LHC)在欧洲核子研究中心或超高能宇宙射线探测器进行分析的物理动机的数学模型。通常,这些模型具有参数形式,并且其参数的值是给定分析中感兴趣的量。一旦定义了模型,就应用最小化数据和模型之间的不一致的拟合过程来找到这些参数的最佳值,这是几乎所有分析中的关键步骤。高能物理中的模型拟合有其特殊性,与其他领域有很大的不同。模型通常是多维的,通过组合复杂的自定义形状来构建,并且具有非平凡的规范化。此外,还需要满足两个进一步的要求:一方面,由于大型强子对撞机收集的大量数据样本,数据大小和模型复杂性的合理缩放;另一方面,不仅要能够找到参数的最佳值,而且要能够在考虑所有相关性的情况下以足够的灵活性计算其不确定性,以允许高级统计处理,因为测量的不确定性与其中心值一样重要。近年来,HEP分析越来越倾向于使用Python而不是更传统的C++。这种范式转变背后的推动力是一个非常丰富的科学计算Python生态系统的存在[1,2],它提供了一系列高效,易于使用的数据分析工具,这些工具在一个非常大的社区中共享,包括来自各个领域和行业的科学家,特别是在数据科学领域,人们可以在其上构建新的应用程序HEP中模型拟合的事实标准是RooFit [3],它集成在ROOT工具包[4]中,并提供了非常强大的面向对象架构,以及绘图功能和高级统计模块。它是用C++编写的,可以通过ROOT Python绑定在Python中访问。这些绑定有其自身的一系列不可忽视的问题:复杂的内存管理,容易导致内存泄漏,难以与科学计算Python堆栈集成,缺乏Python的可扩展性,以及由于需要安装完整的ROOT工具包而导致的复杂安装过程。基于Python的通用库,如SciPy [5],lm-fit [6]或TensorFlowProbability [7],不能满足所有HEP拟合要求,因此不能按原样使用。基于Python的特定于HEP的拟合包,如probfit [8],Ten-sorProb [9]或TensorFlowAnalysis [10],已经尝试解决这些问题,并且可以被认为是以HEP为中心的模型拟合在Python中是可能的概念证明;然而,它们中没有一个提供与RooFit相同的拟合功能和易用性,同时仍然与科学计算Python生态系统很好地集成。zfit的目标是填补HEP软件生态系统中的这一重要空白,并为模型拟合提供定义良好的API和工作流程,以及基于Python的快速,可扩展和可扩展的包。2. 软件描述通用模型拟合工作流程的结构如图所示。1.一、它的基本目标是最大限度地提高一组数据点与一组参数所描述的概率分布的一致性。对预测模型与实验数据的优度(或者更准确地说,不一致性)的度量 HEP中最常用的损失函数之一是基于似然函数,特别是负对数似然,其最小化,以便估计模型的参数。一旦确定了模型参数的最佳值,就可以使用几种统计技术来计算它们的不确定性。由模型-数据-丢失-最小化定义的结构也可以用来描述典型的深度学习工作流-通过用“神经网络”替换模型这种相似性在zfit实现的设计中具有深远的影响,因为它允许使用行业标准的深度学习工具,如TensorFlow [11](TF)作为其计算后端,通过使用低级API,数学函数。zfit在性能方面的直接好处来自TF的关键特征,例如在异构体系结构上运行的能力,诸如自动微分(HEP中最常用的最小化算法所需的)的并行优化,以及操作缓存。这使得zfit的性能与附录中所示的现有标准处于相同的数量级。zfit并不打算成为一个庞大的、单一的软件包,因此具有明确的、有限的范围:具有良好定义和一致的API的模型拟合和采样,这主要与实现无关。数据处理、绘图和统计分析等任务留给其他软件包处理。在图1所示的步骤中的拟合过程的抽象。1是zfit架构的主要特点之一:通过将每个步骤作为库的一个单独的“砖”来开发每个模块(模型、数据、损失、最小化和拟合结果)都为所有核心功能提供了覆盖钩子,允许完全自定义或替换其行为的任何方面。正如上面所暗示的,这些对象在内部处理TF。由于以正确的方式使用TF增加了另一层难度,因此这些额外的复杂性中的大多数都是对用户隐藏的,并且该库提供了与其他模型拟合库类似的用户体验,独立于实际的后端。模型拟合处理多个尺寸。有可测变量,因变量,模型通常是标准化的,参数,在损失最小化期间将被调整。与RooFit等其他框架相比,zfit在可观测量和参数之间做出了很大的区分;这消除了标准化方面的任何模糊性,允许更接近深度学习和TF工作方式的优化进行模型拟合的可观测量和相应限度由空间物体处理空间物体可以是一维或多维的,并且由于使用了可观测量,可以使用Python算术运算符进行组合,以处理任意复杂的用例。模型在给定的Space中定义,并实现一个形状函数,该函数在给定一些输入数据的情况下返回一个值。Cus- tom模型很容易使用它们的函数形式实现,并且默认接收标准属性,例如数值积分和采样。如果用户提供,这些通用功能还可以扩展到分析积分和特定采样。模型可以组合以构建更复杂的模型(包括增加维度数量),同时保持自动集成,可观察处理和事件采样。标准化是在obs中指定的范围内完成的,或者通过手动覆盖_normalization方法进行进一步定制模型由Parameter对象参数化,可以像任何其他标量一样用于形状函数的实现。独立参数是唯一在拟合中保持自由的对象类型。组合参数可以通过组合J. Alberle,A.普伊格纳瓦罗河Silva Coutinho等人粤公网安备44010802000018号3[客户端]图1.一、各 个 结构块的示意性zfit工作流视图。参数通过数学运算符,可以像独立参数一样使用zfit中数据的加载、排序和处理都由Data对象统一处理,无论它们来自何处。虽然目前只实现了最重要的格式–将数据和模型结合起来构建损失函数,该函数可以预先定义,例如负对数似然或完全任意。由于TF,在zfit中可以有效地计算给定模型配置的损失值也可以向损失添加约束以修改其行为。约束是可能性的附加项,通常表示参数的一些外部信息。虽然HEP中最常用的约束在zfit中直接实现,例如高斯约束,但也可以使用任意自定义函数。最小化是通过无状态的Minimizer对象执行的。由于损失计算通常是最小化问题中最密集的部分,因此在实践中可以包装任何现有的Python最小化器以供zfit使用。zfit中包含几个最小化器,例如SciPy优化器,HEP中最常用的最小化器,称为Minuit [12],或Adam优化器的TF实现[13]。最小化过程的结果在FitResult对象中返回,该对象存储关于拟合参数、最小化过程以及最小化器和损失的使用实例的所有信息。这包括函数最小值和协方差矩阵。虽然与拟合参数相关的近似不确定性可以直接在zfit内部使用Hessian矩阵或简单的分析方法计算,但精确参数不确定性和置信区间的计算则留给专门的软件包,例如参考文献中的软件[14,15],除了FitResult之外不需要任何对象。3. 说明性实例zfit的体系结构和特性可以通过一个典型的HEP示例:拟合多个粒子的不变质量,包括信号和背景事件,扩展到多维,并引入控制通道。3.1. 基本用法让我们假设感兴趣的域的质量可观察到的,在这种情况下的B0介子的质量,是在范围4。五六0 GeV。在zfit中,这是用定义我们域的空间来表达的obs= zfit. Space(obs=“mass“,limits =(4. 五六(0))在这个阶段,对observable的最好解释是它定义了observable轴的名称和范围例如,可以从numpy数组中加载数据,其中Space的obs按顺序与数组的列匹配:Data 为 zfit.DATA。from_numpy(array=numpy_array_data,obs=obs)其中numpy_array_data是一个保存数据的numpy数组。拟合的信号分量将使用高斯(正态)进行建模,高斯(正态)有两个自由参数-均值和宽度:mu= zfit. Parameter(“mu“,5. 二、四。五六0个)sigm 为 zfit. Parameter(“sigma“,20,1,40)其中参数的自变量是:唯一名称、初始值、下限和上限。边界不是强制性的,参数在两种情况下都是浮动的。这些可用于将模型实例化为:signal 为 zfit. PDF. Gauss(obs=obs,mu=mu, sigma=sigma)4J. Alberle,A.普伊格纳瓦罗河Silva Coutinho等人粤公网安备44010802000018号∑−虽然为了方便起见,大多数常用的模型都在pdf模块中提供,但zfit的理念是提供一个清晰的API,并提供强大的机制,以方便用户和社区实现自己的模型。利用另一个内置模型,将背景参数化为指数:bkg= zfit. PDF. Exponential(-0. 001,obs=obs)为了建立这两个模型的总和,使用额外的参数frac来描述每个物种的分数1:我们在这里使用一个更简单的类ZPDF来代替BasePDF,它只需要通过_PARAMS属性指定参数化的命名,并允许通过_N_OBS定义维 度 。 后 者 还 允 许 创 建 n 维 模 型 , 因 为 x 将 是 包 含 数 据 的length_N_OBS的列表在内部,类处理自由参数的管理,可以通过参数化名称通过params属性访问自由参数,params属性保存自由参数。它还提供了一种使用z.unstack_x访问输入数据的简单方法。模块z提供了一些TF函数,这些函数被包装以更好地处理dtype以及其他方法,并且可以与纯TF函数混合使用有了模型和数据,就可以构建损失函数。在本例中,目标是执行未分组的最大似然拟合,因此相应的Loss对象被初始化为nll= zfit. loss。未绑定的NLL(mod del=moddel, data=data)最后,执行最小化过程,首先实例化Minimizer对象– and then running the minimization要创建二维模型,一种方法是将描述不同维度的模型相乘。鉴于它们的可观测量不同,新模型将自动定义在两者的组合空间combined_model 为 昂古拉尔 * *莫代勒此最小化的结果存储在FitResult对象中,该对象提供对收敛过程中发生的所有细节的访问,以及对自由参数估计的最佳值以及参数和不确定性的良好估计。例如,可以获得信号平均值的拟合值为2该示例可以被扩展以同时拟合对照数据集,从该对照数据集可以获得参数μ的更精确的确定。为此,创建第二个高斯模型来模拟此控制模式:params对象存储额外的信息,例如估计的不确定性(如果已经计算)。3.2. 高级用法下一步是扩展模型,考虑到额外的维度的问题,在这种情况下的角分布的衰变产物的B0介子。为此,使用自定义模型对信号分布进行建模,该模型是通过继承zfit提供的一个基类创建的FROM zfit 我很抱歉 zclassAngularSignalPDF(zfit. PDF. ZPDF):_PARAMS =[“FH“,“AFB“]_N_OBS=1def _unnormalized_pdf(self,x):#检索数据我的天啊=z。unstack_x(x)#retriveepar ametersFH= Self.params[“FH“]AFB= Self.params[pdf=(3/4*(1-FH)*(1-z. square(costhetal))+0。5*FH+AFB* costhetal)1 遵循与RooFit的参考实现类似的方法,最后物种的分数对应于1个fraci。2 注意,这里使用的是参数对象mu,而不是它的名称“mu作为钥匙。同时损失可以由两个独立损失函数,或者在列表中同时提供模型和数据集,nll= zfit. loss。未绑定NLL([combined_model,gauss_control],[data,data_control])其中data_control已类似于data创建。如前所述,这种同时损失可以最小化。4. 影响和结论zfit包是完成HEP分析向完全基于科学计算Python生态系统的堆栈过渡所需的关键部分。这种范式变化的重要性不应被低估:考虑到HEP中资源的有限该软件包本身不仅是一个多功能和强大的模型拟合库的实现,而且还指定了一个精心设计和讨论的最关键组件和工作流程的API为了成为同类标准,其他包(如高级统计和绘图工具)可以根据标准化API而不是具体实现构建,从而大大减少包依赖性。此外,其他软件包可以专注于特定任务的具体实现,例如构建专门的损失,模型或最小化,而不需要实现工作流本身的其他部分。If 我的天啊。converged:mu_value 为 我的天啊。params[“value“]minimizer 为 zfit.minimize. MinuitMinimizer()result 为minimizerr. minimize(nll)obs_control 为 zfit. Space(“control“,limits =(5. 二五6))sigma_control 为 zfit. Parameter(“sigma control channel“,2,0,5)gauss_control 为 zfit. PDF. Gauss(obs=obs_control,mu= mu#常见mufrac_sig 为 zfit. Parameter(“signal fraction“,0. 5,0,1)现代化 为 zfit. PDF. SumPDF(pdfs =[signal,bkg],fracs=frac_sig)#createhepar ametersfh= zfit. Parameter(“FH“,1. )afb= zfit. Parameter(“AFB“,0. 第五章)obs_costhetal 为 zfit. Space(“thetatal “,limits =(-1,1))J. Alberle,A.普伊格纳瓦罗河Silva Coutinho等人粤公网安备44010802000018号5最后,HEP分析中的拟合通常由大型数据集和复杂模型组成,并且需要比单核多得多的计算能力因此,在数据和模型的大小和复杂性方面的可扩展性以及在大型计算基础设施(包括GPU等加速器)上运行的可能性是必要的。TensorFlow是zfit中基于图的计算后端这不仅产生了最先进的性能,而且还使HEP社区能够以几乎没有成本的方式跟上最新的算法实现和低级计算指令。总之,我们提出了一个新的高级统计建模和拟合库,它纯粹是在Python生态系统中设计的,也是为Python生态系统设计的。zfit的未来计划包括完全支持binned模型,进一步扩展基线HEP功能以及标准化的人类可读对象序列化。竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作致谢我 们 非 常 感 谢 Anton Poluektov 、 Chris Burr 和 IgorBabuschkin在TensorFlow环境中展示了未分箱模型拟合的潜力,这激发了这项工作。我们还要感谢苏黎世LHCb集团、MatthieuMari-Zerkeli、Josh Bendavid、Lukas Heinrich和HSF社区,特别是Scikit-HEP项目成员,进行了有益的讨论。A.普伊格河SilvaCoutinho、J.塞拉感谢瑞士国家科学基金会(SNF)根据合同168169、174182和182622提供的支持阑尾性能进行了一系列的研究,以评估zfit的执行时间相比,传统的RooFit库。性能依赖于两个方面,即,拟合(由自由参数的数量给出)和数据样本大小。在这项研究中,9个高斯函数的总和具有共同的平均值和宽度参数,但具有不同的中心值,被用作基线模型。集合的Monte Carlo伪实验生成和安装不同的设置配置。3i. CPU上的名义zfit实现,使用TF提供在这种情况下,执行初始运行虽然不显著,但这提供了更现实的估计。ii. 或者,由TF提供的解析梯度被禁用,由加法“nograd”表示。相反,Mi- nuit极小化器在内部计算梯度的数值近似iii. 默认的CPU zfit设置被GPU实现所取代图A.2. 具有共享均值和宽度的高斯和的每次拟合的平均时间,作为生成的事件数的函数对于每个设置,生成20个玩具,样本大小从1.28亿到800万个事件(除了GPU,它只达到400万4),平均拟合时间用作参考点。注意,为了简单起见,在所有情况下都使用Minuit算法。图A.2比较了不同拟合场景的性能,总结如下。– 随着事件数量的增加,RooFit的执行时间单调增加。5– 对于很少的计算,使用并行化没有优势随着事件数量的增加,这变得可以忽略不计,因此zfit的执行时间比RooFit的执行时间增加得慢。这也是因为更多的事件意味着更稳定的损失形状,所以zfit中使用的最小化器表现得更好。– GPU在并行计算数千个事件方面效率很高然而,对于只有少数数据点,来回移动数据的开销占主导地位,导致这种情况下的性能较差。总之,多核CPU系统的速度在zfit和RooFit之间是相当的。对于大量事件,zfit通常优于GPU和多核系统的类似响应。引用[1]奥 列 芬 特 Python 用 于 科 学 计 算 Comput Sci Eng 2007;9 ( 3 ) : 10-20.http://dx.doi.org/10.1109/MCSE.2007.58网站。[2]放大图片作者:KJ. Python为科学家和工程师Comput Sci Eng 2011;13(2):9-12. http://dx.doi.org/10.1109/MCSE.2011.36网站。[3] Verkerke W,Kirkby DP. rooFit数据建模工具包。eConf 2003;C0303241:MOLT 007,arXiv:physics/0306116。[4] Brun R,Rademakers F. ROOT:一个面向对象的数据分析框架.核仪器方法1997;A389:81-6. http://dx.doi.org/10.1016/S0168-9002(97)00048-X。[5]Jones E,Oliphant T,Peterson P,et al. SciPy:Open source scientific toolsfor python. 2001http://www.scipy.org/iv. 使用Python绑定的标准RooFit实现-PyROOT(版本6.16.00)。并行化在调用fitTo方法时完成,并且等于可用的内核数量。1 使用12核Intel i7 8850 H检查拟合性能,2.60 GHz和32 GB RAM,以及4 GB RAM的Nvidia P10002 这些测试中使用的GPU具有相对较小的内存。执行大于内存的计算和多GPU仍在进行中。3 值得一提的是,RooFit的并行化策略,简单,管理费用很少;这方面的一些改进正在进行中。然而,它暗示了在zfit中使用TF的一个重要点,即这种工作被排除在外,并且可以免费获得卓越的性能。6J. Alberle,A.普伊格纳瓦罗河Silva Coutinho等人粤公网安备44010802000018号[6]Newville M,Otten R,Nelson A,Ingargiola A,Stensitzki T,Allan D,FoxA,Carter F,Michaeli,Pustakhod D,Ram Y,Glenn,Deil C,Stuermer,Beelen A,Frost O,Zobrist N,Pasquevich G,Hansen ALR,Spillane T,Caldwell S,Polloreno A,andrewhannum,Zimmermann J,Borreguero J,Fraine J,deep 42-thought,Maier BF,Gamari B,Almarza A. Lmfit/lmfit-py。2019年,http://dx.doi.org/10.5281/zenodo.598352网站。[7]Dillon JV, Langmore I,Tran D , Brevdo E, Vasudevan S, Moore D ,Patton B,et al. TensorFlow distributions. 2017年,arXiv:1711.10604。[8][10]杨文,李文.Scikit-hep/probfit。2018年12月28日,中国科学院出版社。http://dx.doi.org/10.5281/zenodo.1477852[9]Babuschkin I , Burr C , Neubert S , Brügge K.TensorProb. 2019 年 ,URLhttps://tensorprob.github.io/tensorprob/网站。[10][10]杨文,杨文.使用tensorflow进行振幅拟合-TensorFlowAnalysis包。2018年12月28日,中国科学院出版社。http://dx.doi.org/10.5281/zenodo.1415412[11]Abadi M , Agarwal A , Barham P , Brevdo E , Chen Z , Citro C , etal.TensorFlow : 异 构 系 统 上 的 大 规 模 机 器 学 习 。 2015 年 , 软 件 可 从tensorflow.org URLhttps://www.tensorflow.org/获得。[12]James F,Roos M. Minuit:一个用于函数最小化和参数误差和相关性分析的系统。ComputPhysComm1975;10:343-67.http://dx.doi.org/10.1016/0010-4655(75)90039-9.[13]金玛·DP,巴·J·亚当:一种随机优化方法。In:3rd International Conferenceon Learning Representations,San Diego:2015,arXiv:1412.6980.[14] 马里南杰利湾劳兹塔特2019年,http://dx.doi.org/10.5281/zenodo.3249383。[15] Marinangeli M , Pollack B, Rodrigues E , J.Scikit-hep/hepstats 。 2019年,http://dx.doi.org/10.5281/zenodo.3519200。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 李兴华Java基础教程:从入门到精通
- U盘与硬盘启动安装教程:从菜鸟到专家
- C++面试宝典:动态内存管理与继承解析
- C++ STL源码深度解析:专家级剖析与关键技术
- C/C++调用DOS命令实战指南
- 神经网络补偿的多传感器航迹融合技术
- GIS中的大地坐标系与椭球体解析
- 海思Hi3515 H.264编解码处理器用户手册
- Oracle基础练习题与解答
- 谷歌地球3D建筑筛选新流程详解
- CFO与CIO携手:数据管理与企业增值的战略
- Eclipse IDE基础教程:从入门到精通
- Shell脚本专家宝典:全面学习与资源指南
- Tomcat安装指南:附带JDK配置步骤
- NA3003A电子水准仪数据格式解析与转换研究
- 自动化专业英语词汇精华:必备术语集锦
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功