建模数据生成过程转让专利

申请号 : CN201380052626.0

文献号 : CN104704514B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : A·D·高登T·格雷佩A·诺日S·拉贾马尼J·伯格斯特姆

申请人 : 微软技术许可有限责任公司

摘要 :

提供了用于建模数据生成过程的方法和系统。该方法包括生成包括表示先验分布和采样分布的一对概率函数的二元贝叶斯模型,以及基于该二元贝叶斯模型使用观察到的数据来建模数据生成过程。

权利要求 :

1.一种用于建模数据生成过程的方法,包括:生成包括表示先验分布和采样分布的一对概率函数的二元贝叶斯模型;以及使用观察到的数据基于所述二元贝叶斯模型来建模数据生成过程,包括:生成用于所述二元贝叶斯模型的学习器对象;

用所述学习器对象基于观察到的数据训练所述二元贝叶斯模型以产生经训练的二元贝叶斯模型;

基于经训练的二元贝叶斯模型,生成参数上的后验分布;

基于所述后验分布生成后验预测分布;以及基于所述后验预测分布预测可观察变量的结果。

2.如权利要求1所述的方法,其特征在于,包括:生成用于所述二元贝叶斯模型的采样器对象;以及使用所述采样器对象,通过计算所述二元贝叶斯模型的综合数据并使用所述综合数据来判断所述后验分布或所述后验预测分布的准确性来测试所述学习器对象。

3.如权利要求1所述的方法,其特征在于,包括基于一个或多个使用模型组合符先前生成的二元贝叶斯模型生成新二元贝叶斯模型。

4.如权利要求1所述的方法,其特征在于,包括通过计算对应于所述二元贝叶斯模型的先验函数的概率密度函数来生成先验分布。

5.如权利要求1所述的方法,其特征在于,包括通过计算对应于所述二元贝叶斯模型的生成函数的概率密度函数来生成采样分布。

6.如权利要求1所述的方法,其特征在于,包括通过计算对应于所述二元贝叶斯模型的先验函数的概率质量函数来生成先验分布。

7.如权利要求1所述的方法,其特征在于,包括通过计算对应于所述二元贝叶斯模型的生成函数的概率质量函数来生成采样分布。

8.一种用于建模数据生成过程的系统,包括:适于执行所存储的指令的处理器;以及

系统存储器,其中所述系统存储器包括被配置成用于以下操作的代码:生成包括表示先验分布和采样分布的一对概率函数、采样器对象和学习器对象的二元贝叶斯模型;

基于观察到的数据用所述学习器对象训练所述二元贝叶斯模型以产生经训练的二元贝叶斯模型;

基于经训练的二元贝叶斯模型,生成参数上的后验分布;

基于所述后验分布生成后验预测分布;

使用所述后验预测分布预测可观察变量的结果。

9.一个或多个计算机可读介质,所述计算机可读介质包括多个指令,所述指令在由处理器知晓是致使所述处理器:从一个或多个使用模型组合符先前生成的二元贝叶斯模型,生成包括表示先验分布和采样分布的一对概率函数的二元贝叶斯模型;以及根据所述二元贝叶斯模型通过观察到的数据来建模数据生成过程,包括:生成用于所述二元贝叶斯模型的学习器对象;

用所述学习器对象基于观察到的数据训练所述二元贝叶斯模型以产生经训练的二元贝叶斯模型;

基于经训练的二元贝叶斯模型,生成参数上的后验分布;

基于所述后验分布生成后验预测分布;以及基于所述后验预测分布预测可观察变量的结果。

说明书 :

建模数据生成过程

技术领域

[0001] 本申请涉及建模数据生成。

背景技术

[0002] 概率编程语言系统提供机器学习算法的自动生成。用户可写通常嵌入在更大的常规程序中的短的概率程序,并且系统可产生用于学习由概率程序给予的分布的算法。因此,概率编程与手动写推断算法的替换方案相比节约了开发成本。此外,概率编程比依赖于特定任务的固定算法的替换方案更灵活,因为具有略微不同结构的模型变体可被容易地写。
[0003] 然而,概率编程的当前实践是低级别的、不规则的,且非结构化的。概率程序可表示贝叶斯模型,但是它们通常缺乏用于定义参数、预测输出和观察数据的结构。这样的结构的缺失阻止了用于执行标准任务(诸如训练、参数学习,和预测)的代码的重用。此外,缺乏用于构建混合模型、执行模型选择或实现其它重复的概率模式的结构。因此,可能希望以包括已定义结构的通用格式写贝叶斯模型。

发明内容

[0004] 下面呈现了本发明的简化概述,以便提供此处所描述的某些方面的基本概念。此概述不是所要求保护的主题的详尽的概述。既不是要标识所要求保护的主题的要点或关键性元素,也不是要详细描述本发明的范围。唯一的目的是以简化形式呈现所要求保护的主题的某些概念,作为稍后呈现的比较详细的描述的前奏。
[0005] 一实施例提供了一种用于建模数据生成过程的方法。该方法包括生成包括表示先验分布和采样分布的一对概率函数的二元贝叶斯模型,以及基于该二元贝叶斯模型使用观察到的数据来建模数据生成过程。
[0006] 另一实施例提供了一种用于建模数据生成过程的系统。该系统包括适于执行所存储的指令的处理器和系统存储器。该系统存储器包括被配置成生成包括表示先验分布和采样分布的一对概率函数、采样器对象和学习器对象的二元贝叶斯模型的代码。该系统存储器还包括被配置成用于基于观察到的数据用学习器对象训练二元贝叶斯模型以产生经训练的二元贝叶斯模型的代码。该系统存储器还包括被配置成用于基于经训练的二元贝叶斯模型生成诸参数之上的后验分布、基于该后验分布生成后验预测分布,并使用后验预测分布来预测可观察的变量的分布的代码。
[0007] 此外,另一个实施例提供包括指令的一个或多个计算机可读存储介质,当指令被处理器执行时致使该处理器生成包括一对概率函数的二元贝叶斯模型,概率函数表示来自一个或多个先前使用模型组合符生成的二元贝叶斯模型的先验分布和采样分布。指令还使得该处理器根据该二元贝叶斯模型通过变换数据来建模数据生成过程。
[0008] 下面的描述和附图详细地阐述了所要求保护的主题的某些说明性方面。然而,这些方面只是表示可以使用本发明的原理的各种方式中的一些方式,并且所要求保护的主题旨在包括所有这些方面和等效内容。通过与附图一起阅读下面的本发明的详细描述,所要求保护的主题的其他优点和新颖的特点将变得显而易见。

附图说明

[0009] 图1是用于建模数据生成过程的系统和方法可以在其中实现的联网环境的框图;
[0010] 图2是可以被用来实现用于建模数据生成过程的系统和方法的计算环境的框图;
[0011] 图3是用于建模数据生成过程的方法的过程流程图;以及
[0012] 图4是用于建模数据生成过程的系统的框图。

具体实施方式

[0013] 概述
[0014] 贝叶斯模型包括一对概率分布,被称为先验分布和采样分布。对于通用贝叶斯模型,项y可表示模型的输出,它可以是要被预测或观察的对象,而项x可以表示模型以其为条件的任何输入信息,诸如分类或回归中的特征向量。项w可表示模型的参数,而项h可表示模型的超参数。
[0015] 贝叶斯模型可包括两个条件概率分布。具体而言,贝叶斯模型可包括参数上的先验分布即p(w|h),和输出上的采样分布即p(y|x,w)。给定一组练习数据d=(x,y),贝叶斯的规则表达可被获取,用于计算后验分布p(w|d,h)和后验预测分布p(y’|x’,d,h),假设(x’,y’)独立于(x,y)并且和(x,y)一样分布。这个贝叶斯模型表示各种各样的机器学习任务。还有许多用于概率推断的机器学习算法,即用于近似计算后验分布p(w|d,h)并用于使用后验预测分布p(y’|x’,d,h)来进行预测。
[0016] 在此描述的各实施例涉及新的概率编程抽象,称为“二元贝叶斯模型”,它是用于先验分布和采样分布的一对概率函数。模型的采样器对象,即采样器,是用于从模型计算综合数据的算法,而模型的学习器对象,即学习器,是用于模型上的概率推断的算法。模型、采样器和学习器支持常见任务的统一表达,诸如模型测试、混合模型创建,和基于证据的模型选择。
[0017] 根据在此描述的各实施例,贝叶斯模型由通用类型即Model表示,以提供针对概率编程应用的添加的结构和代码重用。这样的二元贝叶斯模型包括用于先验和采样分布的一对概率函数。在一些实施例中,默认的超参数可与先验和采样分布一起打包作为模型的一部分。类型参数,即TH,TW,TX,TY,对应于贝叶斯模型的构成。具体而言,类型参数TH对应于超参数h,而类型参数TW对应于参
[0018] 数w。此外,类型参数TX对应于输入x,而类型参数TY对应于输出y。
[0019] 构建贝叶斯模型的常见模式可被写为在这样的二元贝叶斯模型上的函数。例如,给定任何贝叶斯模型,采样器对象和学习器对象可被获取。采样器对象可包括用于为测试目的从先验和采样分布中抽取样本的通用技术。学习器对象可包括用于在给定数据上进行训练的通用技术以及用于计算模型的后验分布和后验预测分布的通用技术。
[0020] 作为预备事项,一些附图在一个或多个结构组件(被称为功能、模块、特征、元素等)的上下文中来描述概念。附图中示出的各种组件能够以任何方式来实现,例如,通过软件、硬件(例如,分立的逻辑组件等等)、固件等等,或这些实现的任何组合。在一个实施例中,各个组件可以反映对应的组件在实际实现中的使用。在其他实施例中,附图中所示出的任何单个组件可由多个实际组件来实现。对附图中的任何两个或更多单独的组件的描绘可以反映由单个实际组件所执行的不同的功能。以下讨论的图1提供了关于可用于实现附图中所示的各功能的一个系统的细节。
[0021] 其他附图以流程图形式描述了概念。以此形式,某些操作被描述为构成以某一顺序执行的不同的框。这样的实现是示例性的而非限制性的。此处描述的某些框可被分组在一起并在单个操作中执行,某些框可被分成多个组成框,并且某些框可以按与此处所示出的不同的次序来执行(包括以并行方式执行这些框)。流程图中示出的框可以通过软件、硬件、固件、手动处理等等或这些实现的任何组合来实现。如此处所使用的,硬件可以包括计算机系统、诸如专用集成电路(ASIC)之类的分立逻辑组件等以及它们的任意组合。
[0022] 关于术语,短语“被配置成”涵盖可以构造任何类型的结构组件来执行所标识的操作的任何方式。结构组件可以被配置成使用软件、硬件、固件等或其任意组合来执行操作。
[0023] 术语“逻辑”涵盖用于执行任务的任何功能。例如,流程图中所示出的每一操作对应于用于执行该操作的逻辑。操作可以使用软件、硬件、固件等或其任意组合来执行。
[0024] 如在此使用的,术语“组件”、“系统”、“客户机”等旨在指代计算机相关的实体,它们可以是硬件、(例如,执行中的)软件和/或固件、或其组合。例如,组件可以是,在处理器上运行的进程、对象、可执行码、程序、函数、库、子例程,和/或计算机或软件和硬件的组合。作为说明,在服务器上运行的应用和服务器两者都可以是组件。一个或多个组件可以驻留在进程中,并且组件可以位于一个计算机上和/或分布在两个或更多计算机之间。
[0025] 此外,所要求保护的主题可以使用产生控制计算机以实现所公开的主题的软件、固件、硬件或其任意组合的标准编程和/或工程技术而被实现为方法、装置或制品。如此处所使用的术语“制品”可以包含可以从任何有形的计算机可读设备或介质访问的计算机程序。
[0026] 计算机可读存储介质可以包括但不限于磁存储设备(例如,硬盘、软盘、以及磁带等等)、光盘(例如,紧致盘(CD)以及数字多功能盘(DVD)等等)、智能卡、以及闪存设备(例如,卡、棒以及钥匙驱动器等等)。相反,计算机可读介质(即,非存储介质)一般可附加地包括用于无线信号之类的通信介质,诸如传输介质。
[0027] 计算环境
[0028] 为了提供用于实现所要求保护的主题的各个方面的上下文,图1-2以及下面的讨论旨在提供其中可以实现本发明的各个方面的计算环境的简要的、一般描述。例如,一种用于为数据生成过程建模的方法和系统可实现在此类计算环境中。尽管上文已经在运行在本地计算机和/或远程计算机上的计算机程序的计算机可执行指令的一般上下文中描述了所要求保护的主题,然而本领域中的技术人员将认识到,本发明也可以结合其它程序模块来实现。一般而言,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、组件、数据结构等等。
[0029] 此外,本领域的技术人员可以理解,本发明可用其它计算机系统配置来实施,包括单处理器或多处理器计算机系统、小型机、大型计算机、以及个人计算机、手持式计算设备、基于微处理器的或可编程消费电子产品等,其每一个都可操作上与一个或多个相关联的设备通信。所要求保护的主题的所说明的方面也可以在其中特定任务由通过通信网络链接的远程处理设备执行的分布式计算环境中实现。然而,本发明的某些方面,如果不是所有方面的话,可以在独立计算机上实施。在分布式计算环境中,程序模块可以位于本地或远程存储器存储设备中。
[0030] 图1是其中可以实现用于建模数据生成过程的系统和方法的联网环境100的框图。联网环境100包括一个或多个客户机102。客户机102可以是硬件和/或软件(例如,线程、进程、或计算设备)。联网环境100还包括一个或多个服务器104。服务器104可以是硬件和/或软件(例如,线程、进程、或计算设备)。服务器104可以,例如,通过使用本发明,保存执行搜索操作的线程。
[0031] 客户机102和服务器104之间的一种可能的通信可以是以适用于在两个或更多计算机进程之间传输的数据分组的形式。联网环境100包括通信框架108,该通信框架108可以被用来促进客户机102和服务器104之间的通信。客户机102可操作地连接到一个或多个客户机数据存储110,可以使用这些客户机数据存储器来存储客户机102本地的信息。客户机数据存储110可以存储在客户机102中,或位于客户机102的远程,诸如在云服务器中。类似地,服务器104可操作地连接到一个或多个服务器数据存储106,可以使用这些服务器数据存储来存储服务器104本地的信息。
[0032] 图2是可以被用来实现用于建模数据生成过程的系统和方法的计算环境的框图。计算环境200包括计算机202。计算机202包括处理单元204、系统存储器206以及系统总线
208。系统总线208将系统组件,包括,但不仅限于,系统存储器206耦合到处理单元204。处理单元204可以是各种可用处理器中的任何一种。也可以使用双微处理器及其他多处理器体系结构作为处理单元204。
[0033] 系统总线208可以是若干类型中任一类的总线结构,包括存储器总线或存储器控制器、外围设备总线或外部总线、或使用本领域的技术人员已知的任何各种各样的可用总线架构的本地总线。系统存储器206是包括易失性存储器210和非易失性存储器212的计算机可读存储介质。基本输入/输出系统(BIOS)被存储在非易失性存储器212中,包含例如在启动期间在计算机202内的元件之间传输信息的基本例程。作为说明,而不是限制,非易失性存储器212可包括只读存储器(ROM)、可编程序只读存储器(PROM)、电可编程序只读存储器(EPROM)、电可擦可编程序只读存储器(EEPROM)或闪存。
[0034] 易失性存储器210包括充当外部高速缓冲存储器的随机存取存储器(RAM)。作为说明而不是限制,RAM可以有许多形式,如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双倍数据速率SDRAM(DDRSDRAM)、增强的SDRAM(ESDRAM)、同步链路TMDRAM(SLDRAM)、直接型RAM(RDRAM),直接型 动态RAM(DRDRAM),以及 动态RAM(RDRAM)。
[0035] 计算机202也包括其他计算机可读存储介质,诸如可移动/不可移动、易失性/非易失性计算机存储介质。图2示出了例如盘存储214。盘存储214包括但不仅限于,诸如磁盘驱动器、软盘驱动器、磁带驱动器、Jaz驱动器、Zip驱动器、LS-100驱动器、闪存卡或记忆棒之类的设备。
[0036] 另外,盘存储器214还可包括存储介质,分开地或与其他存储介质相结合,包括,但不仅限于,诸如紧致盘ROM设备(CD-ROM)之类的光盘驱动器、CD可记录驱动器(CD-R驱动器)、CD可重写驱动器(CD-RW驱动器)或数字多功能盘ROM驱动器(DVD-ROM)。为便于盘存储214连接到系统总线208,通常使用诸如接口216之类的可移动或不可移动接口。
[0037] 应该明白,图2描述了在用户和在计算环境200中描述的基本计算机资源之间担当中介的软件。这样的软件包括操作系统218。可以存储在盘存储214上的操作系统218用于控制和分配计算机202的资源。
[0038] 系统应用220利用由操作系统218通过存储在系统存储器206或者存储在盘存储214上的程序模块222和程序数据224对资源的管理。可以理解,所要求保护的主题可以利用各种操作系统或操作系统的组合来实现。
[0039] 用户通过输入设备226向计算机202输入命令或信息。输入设备226包括但不限于定点设备(诸如鼠标、跟踪球、指示笔等)、键盘、话筒、姿势或触摸输入设备、语音输入设备、操纵杆、圆盘式卫星天线、扫描仪、TV调谐卡、数码相机、数码摄像机、网络摄像头等等。输入设备226通过系统总线208经由接口端口228连至处理单元204。接口端口228包括,例如,串行端口、并行端口、游戏端口以及通用串行总线(USB)。输出设备230还可与输入设备226使用一些相同类型的端口。由此,例如,可以使用USB端口来向计算机202提供输入,以及从计算机202向输出设备230输出信息。
[0040] 提供了输出适配器232,以示出有像监视器、扬声器以及打印机之类的一些输出设备230,还有可通过输出适配器232访问的其他输出设备230。输出适配器232包括,作为说明而不是限制,在输出设备230和系统总线208之间提供连接装置的视频卡和声卡。能够注意,其他设备和/或设备的系统提供诸如远程计算机234之类的输入和输出两种功能。
[0041] 计算机202可以是使用到一个或多个远程计算机(诸如,远程计算机234)的逻辑连接在联网环境(诸如,联网环境100)中主存事件预报系统的服务器。远程计算机234可以是配备有web浏览器、PC应用、移动电话应用等等的客户机系统。远程计算机234可以是个人计算机、服务器、路由器、网络PC、工作站、基于微处理器的电器、移动电话、对等设备或其他公共网络节点等等,并通常包括上文参考计算机202所描述的许多或全部元件。为了简洁起见,与远程计算机234一起示出了存储器存储设备236。远程计算机234通过网络接口238在逻辑上连接到计算机202,然后,经由通信连接240在物理上连接。
[0042] 网络接口238包含诸如局域网(LAN)和广域网(WAN)之类的有线或无线通信网络。LAN技术包括光纤分布式数据接口(FDDI)、铜线分布式数据接口(CDDI)、以太网、令牌环网等等。WAN技术包括,但不限于,点对点链路、电路交换网,如综合业务数字网(ISDN)以及其变体,分组交换网络以及数字用户线(DSL)。
[0043] 通信连接240是指用来将网络接口238连接到系统总线208的硬件/软件。尽管为清楚起见通信连接240被示为在计算机202内部,但是,它也可以位于计算机202外部。连接到网络接口238的硬件/软件可包括,例如,内部和外部技术,如,移动电话交换机,调制解调器,包括常规电话分级调制解调器、电缆调制解调器和DSL调制解调器、ISDN适配器以及以太网网卡。
[0044] 用于建模数据生成过程的方法
[0045] 图3是用于建模数据生成过程的方法的过程流程图。方法300可由任何合适类型的计算设备来实现。例如,方法300可在上面结合图1和2讨论的联网环境100或计算环境200内实现。
[0046] 方法在框302开始,其中生成包括一对概率函数的二元贝叶斯模型,概率函数表示先验分布和采样分布。先验分布可通过计算对应于二元贝叶斯模型的先验函数的概率密度函数来生成,而采样分布可通过计算对应于二元贝叶斯模型的生成函数(即gen函数)的概率密度函数来生成。可替换地,先验分布可通过计算先验函数的概率质量函数来生成,而采样分布可通过计算对应于二元贝叶斯模型的gen函数的概率质量函数来生成。二元贝叶斯模型可使用类型参数来生成,包括通用参数、超参数、输入参数和输出参数,或其任何组合。二元贝叶斯模型可以是可被用来建模多个不同类型的数据集中的任一个的通用贝叶斯模型。此外,二元贝叶斯模型可使用任何合适的编程语言(诸如概率编程语言)来生成。
[0047] 二元贝叶斯模型可被自动生成、从先前生成的二元贝叶斯模型的库中选择、或以特定概率编程语言来手动地写。此外,二元贝叶斯模型可基于一个或多个先前使用模型组合符生成的二元贝叶斯模型来生成。例如,模型组合符可以是混合模型组合符或同样地且独立地分布的阵列(IID阵列)模型组合符。
[0048] 在框304,数据生成过程使用观察到的数据基于二元贝叶斯模型来被建模。这可通过生成二元贝叶斯模型的学习器对象并基于观察到的数据使用学习器对象来训练二元贝叶斯模型以产生经训练的二元贝叶斯模型来完成。诸参数之上的后验分布可基于经训练的二元贝叶斯模型来生成。此外,后验预测分布可基于后验分布来生成。后验预测分布可被用来预测可观察的变量的结果。例如,后验预测分布可被用来基于新输入数据预测新输出数据的分布。
[0049] 在各实施例中,二元贝叶斯模型的采样器对象可被生成。该采样器对象可被用于通过计算二元贝叶斯模型的综合数据并使用该综合数据判断后验分布或后验预测分布的准确性来测试学习器对象。此外,推断引擎可被用来执行学习器对象和采样器对象。
[0050] 方法300不旨在指示方法300的各步骤要以任何特定次序来执行,或者在每一种情况下都要包括方法300的所有的步骤。此外,取决于具体实现的细节,任何数量的附加步骤可被包括在方法300中。此外,二元贝叶斯模型可被重用来建模任何数量的附加数据生成过程。
[0051] 在此结合特定F#概率编程语言(被称为“Fun”)来描绘二元贝叶斯模型。然而,可以理解,取决于特定实现的细节,二元贝叶斯模型可以任何其它合适类型的编程语言来写。
[0052] Fun是没有递归的一阶功能语言。在此描述的Fun的实现支持具有数组和数组推导式以及Vector(向量)和Matrix(矩阵)类型的概率编程语言。值c的范围可跨基数类型和单位类型的恒定数据,值n的范围可跨整数,而值r的范围可跨实数。等式ty(c)=t可指示恒量c具有类型t。以下表达式可表示Fun的值。
[0053] U,V::=x|c|(V,V)|inlV|inrV
[0054] 基数类型的Fun可以如下所示的来表达。
[0055] a,b::=int|double
[0056] 此外,以下表达可表示复合类型的Fun。
[0057] t,u::=unit|b|(t1*t2)|(t1+t2)
[0058] 令(Let) 这些类型的确定性函数的集合可被假设为有效,包括算术和逻辑运算符,且fst和snd成对投射。数量n的每个运算f具有形式val f:t1*...*tn→tn+1的签名。包括柏努利分布、β(Beta)分布、高斯分布,和γ(Gamma)分布的PDist类型的原语概率分布的标准家族也可被假设为有效。柏努利分布如下示出在以下表达式中。
[0059] (bias:double)→PDist
[0060] β(Beta)分布可如下所示被表达。
[0061] (a:double*b:double)→PDist
[0062] 高斯分布如下示出在以下表达式中。
[0063] (mean:double*precision:double)→PDist
[0064] 高斯分布可被平均数和精度来参数化。标准差σ从身份σ2=1/精度来得出。γ(Gamma)分布可如下所示被表达。
[0065] (shape:double*scale:double)→PDist
[0066] Fun的表达式可由M或N来表示。Fun的值可由U或V来表示。确定性函数应用的表达式可由f(V1,...,Vn)来表示。令表达式(let-expression)可由let x=M in N来表示。匹配表达式(match-expression)可由match V with inl x:M|inr y:N来表示。原语分布可由random(Dist(V))来表示,并且观察可由observe V来表示。
[0067] 标记 可指示,在类型环境Γ=x1:t1,...,xn:tn(xi distinct)中,表达式M具有类型t。在 的情况下,多个类型化规则可被用于Fun表达式。
[0068] 形式上,封闭Fun表达式M的语义是其返回类型上的测量 如果M不包含Observe的实例,那么 是概率分布。否则,它是观察的模型证据条件的测量,可被累加为大于或小于1。为简明起见,Fun表达式可被认为是定义概率分布并使用概率的常规数学符号。
[0069] Fun被设计为F#编程语言的子集。因此,Fun的表达式可使用F#编程语言中找到的用于反射的特征来表示,包括引用、评估,以及反引用。类型t的封闭项M可由F#类型Expr的F#引用<@M@>来表示。更一般地,如果 那么M可由F#引用<@fun(x1,...,xn)→M@>来表示。项E可标识一个引用。F#表达式E.Eval可将E评估为其值并且,在一个引用内,%符号表示反引用。
[0070] 推断引擎可以是这样的算法,给定t类型的Fun表达式的引用,返回t上的分布的近似表示。推断引擎可以被表示为函数Expr→DistT,其中DistT是表示的类型。
[0071] 如上面描述的,贝叶斯模型包括参数w上的先验分布p(w|h)以及给定输入x和参数w的情况下输出y上的采样分布p(y|x,w)。采样分布也可被称为“可能性函数”。先验分布可表示给定超参数h时对参数的不确定信任。采样分布可表示给定参数w的情况下输出y是如何从输入x中产生的视图。
[0072] 作为示例,可考虑线性回归问题。线性回归涉及寻找符合给定的点集合的线。输入数据可由d=(x,y)来表示,其中, 和 是坐标数组。噪声线yi=Axi+B+ε可拟合于数据,其中噪声ε是从平均数0和精度P的高斯分布抽取。
[0073] 以下示出的表达式prior h表达关于噪声线的参数A、B和P的最初不确定性,其中超参数h为这些分布提供参数。
[0074] let prior h=
[0075] {A=random(Gaussian(h.MeanA,h,PrecA))
[0076] B=random(Gaussian(h.MeanB,h.PrecB))
[0077] P=random(Gamma(h.Shape,h.Scale))}
[0078] 以下示出的生成函数gen(w,x)可定义如何从xi和参数w生成每个yi。
[0079]
[0080] 先前的表达式公式化先验和采样分布。先验分布p(w|h)是在w的 的密度,而采样分布p(y|x,w)是在y的 的密度。
[0081] 给定先验和可能性,通过边缘化参数,输出的预测分布可被写为如下面在公式1中示出的。
[0082] p(y|x,h)=∫p(y|x,w)p(w|h)dw  (1)
[0083] 预测分布可通过选择h和输入x来从中被采样,如以下表达式的F#输出所示。
[0084] val h={MeanA=0.0;PrecA=1.0;MeanB=5.0;PrecB=0.3;Shape=1.0;Scale=1.0}
[0085]
[0086] 首先,w可从先验分布w=prior h、并且接着从输出y=gen(w,x)中来采样。
[0087] val w={A=0.70;B=4.33;P=0.58}//经采样的prior(h)
[0088] //经采样的gen(w,x)
[0089] 给定经观察的数据d=(x,y),经由贝叶斯规则,后验分布可通过以下在公式2中所示那样获得。
[0090]
[0091] 归一化恒量p(d|h)=∫p(y|x,w)p(w|h)dw被称为证据或边缘可能性。后验预测分布还可如以下公式3所示那样来获得。
[0092] p(y′|x′,d,h)=∫p(y′|x′,w)p(w|d,h)dw  (3)
[0093] 将observe用于数据(x,y)上的条件,后验分布和后验预测分布可表达为Fun表达式。后验分布和后验预测分布的表达式示于如下。
[0094] let posterior(h,x,y)=let w=prlor h in observe(y=gen(w,x));w[0095] let predictive(h,x,y,x′)=let w=posterior(h,x,y)in gen(w,x′)[0096] 对Fun使用特定推断引擎,归一化分布的具体表示可被获得。例如,可推断用于生成采样数据y的参数。通过运行Fun的Infer.NET实现以计算分布posterior(h,x,y),可获得以下所示结果。如在此所使用的,项“Infer.NET”指基于消息递送因子图生成可缩放推断算法的概率编程系统。
[0097] {A=Gaussian(0.5576;0.05089);//实际A=0.70;
[0098] B=Gaussian(4.936;0.404);//实际B=4.33;
[0099] N=Gamma(1.695,0.46)[mean=0.78];}//实际P=0.58;
[0100] A的精度可以是低的,指示不确定性。给定新输入 分布predictive(h,x,y,x′)可被计算以获得以下表达式。
[0101]
[0102] 因此,噪声线可通过被写成Fun表达式prior h和gen(w,x)的分布来被建模。这些表达式可被执行以从预测分布中抽取样本,以创建综合数据集d=(x,y)。后验分布和后验预测分布的Fun表达式可被写,且推断引擎可被执行以学习后验并基于新数据作出预测。
[0103] 一般而言,二元贝叶斯模型可以是记录类型的值Model,其中类型参数对应于贝叶斯模型的不同数据。具体而言,超参数h由TH表示,而参数w由TW来表示。输入x由TX表示,而输出y由TY表示。二元贝叶斯模型可随后如下面所示那样被写。
[0104] type Model<′TH,′TW,′TX,′TY>=
[0105] {Prior:Expr<′TH→′TW>
[0106] Gen:Expr<′TW*′TX→′TY>}
[0107] 给定模型m和超参数h,封闭Fun表达式%m.Prior h是先验分布p(w|h),而Fun表达式%m.Gen(w,x)是采样分布p(y|x,w)。线性回归代码可被打包为类型化模型M1如下所示,其中F#引用<@...@>被用来将prior和gen的主体当做Fun表达式来对待。
[0108]
[0109] 给定任何模型m和超参数h,新采样器S可通过以下来构建:首先从p(w|h)采样w并接着提供对象S使得属性S.Paremeters:TW是采样w,并且使得方法S.Sample(x):TY对采样分布p(y|x,w)进行采样。采样器接口可如下面所述这样表示。
[0110]
[0111] 用于具有参数h的模型m的采样器可接着根据以下表达式来写。
[0112]
[0113] 给定任何模型m、超参数h、和推断引擎,新学习器L可通过以下所示的学习器接口来构建。
[0114]
[0115] 类型’TDistW表示在参数’TW上的分布,而类型’TDistY表示在输出’TY上的分布。不同学习器可使用不同表达。
[0116] Fun引用可被当作在其返回类型上的条件分布的表达,独立于任何推断引擎。使用这一想法,以下所示的具有超参数h的模型m的参考学习器L可被获得。通过组合合适的引用,参考学习器捕捉在此描述的应用编程接口(API)的语义。可变的变量d持有表示当前参数分布(最初是的后验)的Fun表达式。对Train的每个调用通过用训练数据调理来更新d。对Posterior(后验)和Predict(预测)的调用返回后验和预测分布的合适的引用。
[0117]
[0118] 在用自变量 对Train进行N次调用之后,L.Posterior表示后验分布p(w|d,h),而L.Predict(x’)表示后验预测分布p(y’|x’,d,h)。因此,参考学习器可被用来计算后验分别和后验预测分布。
[0119] 采样器和学习器可被用来测试推断引擎是否可从语义数据恢复已知参数。考虑从具有超参数h的模型m以及推断引擎构建的学习器L。给定输入x,L的有效性可通过构建m和h的新采样器S并执行对应于以下表达式的代码来测试。
[0120] let w:TW=S.Parameters//固定参数
[0121] L.Train(x,S.Sample(x))//对合成数据训练
[0122] let wD:TDistW=L.Posterior()//w上推断的分布
[0123] …//根据wD来测试w有多大可能
[0124] 最终测试的细节取决于TW和TDistW。
[0125] 如果假设数据是IID观察 的集合,采样分布根据等式4来分解为因数。
[0126]
[0127] 这导致IIDarray(IID数组)模型组合符的生成,如下所示。给定模型向TY发送TX,IIDArray用相同先验(但其将TX[]发送到TY[])来构建新模型。用从该组合符构建的任何模型来学习是批学习的实例,其中多个数据项被同时处理。
[0128]
[0129] 在各种实施例中,IIDArray模型组合符被用来从先前的模型获得新的模型。
[0130] 根据在此描述的各实施例,混合模型、基于证据的模型平均,以及专家组合也可被用作模型组合符。例如,给定具有相同类型参数x和数据y的多个模型mk(其中k=1…K),这些模型的混合可通过引入独立指示符变量z被创建,z指示数据从中被生成的混合分量mk。该组成有益于其中数据可以以几种方式生成且模型数量以及要从每个模型抽取数据的概率的良好评估为已知的实例。模型k的采样分布可在下面等式5中被示出,其中参数由wk表示,超参数由hk表示。
[0131]
[0132] 一般而言,可被用来基于两个先前生成的模型的混合来生成新模型的混合模型组合符在下面示出。
[0133]
[0134] 模型证据是给定一组观察的特定模型的可能性。例如,模型证据可被用来在相同数据的不同模型之间进行选择,或可用作目标函数来增加特定推断技术的效率。模型求平均涉及取一些关于每个模型mk有多大可能性的先验信任p(mk|h),并基于给定数据下每个模型的证据来更新这个信任,如下面公式6所示。
[0135] p(x|y,h)=∑k p(x|y,mk,hk)p(mk|h)  (6)
[0136] 一般而言,可被用来基于先前生成的模型来生成新模型的模型求平均组合符在下面示出。
[0137]
[0138] 根据专家组合过程,门控模型p(z|x,w)可被用来针对每个输入x决定对应输出y。例如,具有两个数据模型mk(k∈{T,F})的二元的情形,条件采样分布p(y|x,mk,wk)、先验p(wk|hk),和具有先验p(w|h)的门控模型p(z|x,w)可被考虑。所得的组合采样分布可被如下公式7中所示。
[0139] p(y|x,wT,wF,w)=∑k∈{T,F}p(z=k|x,w)p(y|x,mk,wk)  (7)[0140] 组合先验也可被获取,如以下图8所示。
[0141] p(w,wF,wT|h,hT,hF)=p(w|h)p(wT|hT)p(wF|hF)  (8)
[0142] 一般而言,可被用于基于先前生成的模型来生成新模型的专家组合的组合符如下所示。
[0143]
[0144] 根据在此描述的各实施例,上面讨论的任何模型组合符可被用来建模数据生成过程。这样的数据生成过程可与各种各样的机器学习任务(诸如回归、分类、主题建模等)相关。
[0145] 在此描述的各实施例提供各种不同类型学习器的使用。例如,可实现基于代数判定图(ADD)、消息递送,或马尔可夫链蒙特卡尔(MCMC)技术的学习器。在基于MCMC技术的学习器的情况中,特定模型的后验函数的密度可自动生成。
[0146] 建模数据生成过程的系统
[0147] 图4是用于建模数据生成过程的系统400的框图。具体而言,系统400可被用来基于二元贝叶斯模型为针对观察到的数据402的数据生成过程进行建模。系统400可在任何合适类型的计算设备中实现,诸如台式计算机、膝上型计算机、服务器、移动计算设备,等等。
[0148] 系统400可包括二元贝叶斯模型生成器404。二元贝叶斯模型生成器404可被适配用于生成包括表示先验分布和采样分布的一对概率函数的二元贝叶斯模型。二元贝叶斯模型生成器404可自动生成二元贝叶斯模型,从先前生成的二元贝叶斯模型的库406中选择二元贝叶斯模型,或用特定编程语言手动写二元贝叶斯模型。此外,二元贝叶斯模型生成器404可基于一个或多个使用一个或多个模型组合符408先前生成的二元贝叶斯模型生成二元贝叶斯模型。在一些实施例中,二元贝叶斯模型生成器404可基于特定建模参数410来生成二元贝叶斯模型。
[0149] 学习器412可基于所生成的二元贝叶斯模型建模观察到的数据402。具体而言,学习器412可基于观察到的数据402和建模参数410来训练二元贝叶斯模型以产生经训练的二元贝叶斯模型414。建模参数410上的后验分布可基于经训练的贝叶斯模型414来生成,且后验预测分布可基于后验分布来生成。可观察变量的结果可接着基于经训练的二元贝叶斯模型414的后验预测分布来被预测。
[0150] 此外,采样器416可被使用来通过计算二元贝叶斯模型的的综合数据并使用该综合数据来判断后验分布或后验预测分布的准确性来测试学习器412。在一些实施例中,如果采样器416标识经训练的二元贝叶斯模型414的任何错误或问题,学习器412可被导向到重新训练该二元贝叶斯模型。此外,在各种实施例中,学习器412和采样器416由推断引擎(未示出)来实现。
[0151] 图4的框图不旨在指示图4的数据建模系统400要包括图4所示的全部组件。此外,图4中未示出的任何数量的附加组件可被包括在系统400内。
[0152] 尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述特定特征或动作。上述具体特征和动作是作为实现权利要求的示例形式公开的。