具体实施方式
为了使本领域技术人员更好地理解本说明书实施例中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本说明书的一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于保护的范围。
以下结合附图,详细说明本说明书各实施例提供的技术方案。如图1所示,图1是本说明书实施例提供的一种业务风险防控方法的流程示意图,该流程具体包括如下步骤:
S101,获取预训练模型。
预训练模型指的是针对某些预训练样本已经训练好的模型。预训练样本通过对于进行模型训练的人员是公开可见的,即,无需对预训练样本进行隐私保护。
在某些领域,可以使用开源的模型作为预训练模型。例如,用于目标检测的MaskR-CNN模型,其通过给定的大量图片已经进行了训练,可以为给定图像中的目标的每个实例生成边界框和分割掩模;例如,用于人脸识别的VGG-Face模型,其通过针对超过百万计的人脸图片已经进行了训练,并且已经可以有效实现人脸的识别;又例如,在文本分类英语,预训练模型可以是Bert模型等等。
在另外一些领域,例如,在风控领域,基本上没有可用的开源模型作为预训练模型,同时,各领域的风控目标也不尽相同,例如,在电商领域和金融领域,虽然都需要进行风控,但是各自的风控数据和目标就完全不同。
基于此,模型训练人员可以使用于目标训练样本相似的数据进行初步的模型训练,从而得到可用的与训练模型。例如,在电商领域,使用用户已经授权的3年前的历史交易数据进行模型训练,从而得到预训练模型。
目标训练样本则是需要进行隐私保护的数据,其中可能包含了用户的隐私数据或者对于模型的敏感数据。例如,用户的隐私数据包括用户的姓名、身份证号码、住址、电话、银行账号、邮箱、密码、医疗信息、教育背景、生物特征信息(面部特征、指纹特征)等等。模型的敏感数据指的是可能会泄露模型的训练/识别算法或者对于模型的识别效果有着显著影响的训练样本。
例如,当前就存在针对模型的成员攻击(Membership Attack),成员攻击的攻击者在给一个已经训练好的模型和一个或者多个特定样本的情形时,尝试判断样本有没有在训练模型的时候被用到,以便反向推导模型的训练方法和识别方法。此时,由于需要根据目标训练样本对于预训练模型进行微调,因此,目标训练样本中的每个样本都是需要进行隐私保护。
在一种实施方式中,预训练样本和目标训练样本所采用的特征可以相同。例如,在对于电商平台的风控模型中,目标训练样本所采用的特征包含交易时间、交易地点、交易金额等等N个维度的特征,则在基于预训练样本进行训练时,则可以将预训练样本处理成为同样包含前述N个维度的特征的样本,以进行预处理模型的训练。通过将预训练样本处理成为和目标训练样本相同的特征,可以有效降低对于预处理模型的后续调整幅度,提高效率。
S103,将所述预训练模型部署至可信执行环境TEE中。
可信执行环境(Trusted Execution Environment,TEE)是基于CPU硬件的安全扩展,且与外部完全隔离的可信执行环境。TEE最早是由Global Platform提出的概念,用于解决移动设备上资源的安全隔离,平行于操作系统为应用程序提供可信安全的执行环境。ARM的Trust Zone技术最早实现了真正商用的TEE技术。
TEE可以起到硬件中的黑箱作用,在TEE中执行的代码和数据操作系统层都无法偷窥,只有代码中预先定义的接口才能对其进行操作。在效率方面,由于TEE的黑箱性质,在TEE中进行运算的是明文数据,而不是同态加密中的复杂密码学运算,计算过程效率没有损失,因此与TEE相结合可以在性能损失较小的前提下很大程度上提升区块链的安全性和隐私性。目前工业界十分关注TEE的方案,几乎所有主流的芯片和软件联盟都有自己的TEE解决方案,包括软件方面的TPM(Trusted Platform Module,可信赖平台模块)以及硬件方面的Intel SGX(Software Guard Extensions,软件保护扩展)、ARM Trustzone(信任区)和AMD PSP(Platform Security Processor,平台安全处理器)。
伴随着互联网的高速发展,安全的需求越来越高,不仅限于移动设备,云端设备,数据中心都对TEE提出了更多的需求。TEE的概念也得到了高速的发展和扩充。现在所说的TEE相比与最初提出的概念已经是更加广义的TEE。例如,服务器芯片厂商Intel,AMD等都先后推出了硬件辅助的TEE并丰富了TEE的概念和特性,在工业界得到了广泛的认可。现在提起的TEE通常更多指这类硬件辅助的TEE技术。不同于移动端,云端访问需要远程访问,终端用户对硬件平台不可见,因此使用TEE的第一步就是要确认TEE的真实可信。因此现在的TEE技术都引入了远程证明机制,由硬件厂商(主要是CPU厂商)背书并通过数字签名技术确保用户对TEE状态可验证。同时仅仅是安全的资源隔离也无法满足的安全需求,进一步的数据隐私保护也被提出。包括Intel SGX,AMD SEV在内的商用TEE也都提供了内存加密技术,将可信硬件限定在CPU内部,总线和内存的数据均是密文防止恶意用户进行窥探。例如,英特尔的软件保护扩展(SGX)等TEE技术隔离了代码执行、远程证明、安全配置、数据的安全存储以及用于执行代码的可信路径。在TEE中运行的应用程序受到安全保护,几乎不可能被第三方访问。
因此,可以将预训练模型以TEE中可执行的语言的形式,部署至TEE中,至可信执行环境TEE。
S105,获取公钥加密后的目标训练样本的集合,在所述TEE中采用所述公钥所对应的私钥进行解密,生成目标训练样本的集合。
在本说明书实施例中,公钥可以是TEE中所生成的密钥对中的公钥。在TEE环境中,硬件厂商即可以生成用于数字签名的密钥对(包括公钥和对应的私钥),并且由硬件厂商来保障该密钥对的安全性。
TEE将其所产生的密钥对中的私钥和公钥建立起对应的关系,并且保存该私钥,而公钥则可以发送至模型的训练方。
由于公钥是可以对外公开的,因此,作为模型的训练方,可以使用预先获取得到的公钥对目标训练样本的集合进行加密,从而生成加密后的目标训练样本的集合。
具体而言,一种加密的方式可以对预先存储的批量的目标训练样本进行加密。在这种方式下,仅需要多多份目标训练样本进行一次加密即可,可以提高数据的传输效率。
在另一种方式下,还可以将线上所产生的即时数据生成相应的目标训练样本,此时,则需要对每一份目标训练样本均进行公钥加密,这种方式下可以最大限度的保障用户隐私。
获取得到公钥加密后的目标训练样本的集合之后,即可以将该集合输入值TEE环境中,TEE即可以采用对应的私钥对该加密数据进行解密,得到目标训练样本的集合。由于解密是在TEE中进行的,因此,有TEE的提供方保证了目标训练样本的集合中的数据不会被泄露。
S107,在所述TEE中采用所述目标训练样本的集合,对所述预训练模型进行模型训练,生成在TEE中可用的目标模型
由于预训练模型已经以可执行语言的形式被部署,因此,只需输入目标训练样本,在TEE中即可以实现以预训练模型作为初始模型,以目标训练样本的集合作为输入进行再次的模型训练,从而实现对于目标训练样本的集合有着较好识别效果的目标模型。
如前所述,由于预训练模型是已经部署在TEE中的,而基于目标训练样本的训练过程也是在TEE中完成的,因此,最终得到的目标模型实际上就已经部署在TEE中,可以直接调用,而无需再次部署。
在模型训练中,一个模型可以包含模型结构和模型参数。例如,对于一个线性模型y=k*x+b而言,线性结构即为该模型的结构,模型参数即为需要进行训练而得到的“k”和“b”。又例如,在卷积神经网络模型(Convolutional Neural Network,CNN)中,一个模型结构可能是包含了若干卷积层,若干个池化层,若干连接层,以及各卷积层和池化层之间具有一定的先后顺序,在模型中还定义相应的损失函数或者目标函数。而模型参数则可以是卷积核中的权重参数组/权重参数矩阵等等。如图2所示,图2为一种CNN中的模型结构的示意图,其中就依序包含了2个卷积层、2个池化层、3个全连接层。
模型训练的过程则可以包括对于模型结构的改变和对于模型参数的调整。例如,模型结构的调整就可以包括将线性结构换为非线性结构;或者,改变模型中的卷积层、池化层或者连接层的顺序;或者,添加若干卷积层、池化层或者连接层至初始模型中。而模型参数的调整则可以是对于卷积核中的权重参数组/权重参数矩阵基于损失函数进行调整等等。
需要说明的是,在TEE中以预训练模型作为初始模型的训练方式中,在计算性能足够的情形下,可以对预训练模型从模型结构到模型参数进行全面的调整。
但是在实际应用中,TEE往往存在较大的性能瓶颈。例如,在Intel所提供的SGX技术中仅分配128M内存,无法满足大规模数据集训练的要求。在这种情形下在TEE中进行模型结构的调整显然也是不现实的。
因此,在本说明书实施例中,一种可实施的模型训练方式即为,在所述TEE中,不改变所述预训练模型的模型结构,根据所述目标训练样本的集合对所述预训练模型的模型参数进行模型训练,生成在TEE中可用的目标模型。模型结构的不改变包括不对预训练模型的各层的数量、各层的连接关系、模型中所采用的目标函数、损失函数等等进行改变。
具体而言,不同于预训练模型的训练过程中采用海量的数据进行训练,此时,仅收入少量的目标训练样对预训练模型中的模型参数进行微调,以使得调整之后的模型对于目标训练样本的集合均具有较好的识别或者分类效果即可。
通过本说明书实施例中所提供的方案,首先在不可信环境中进行模型的预训练,然后在可信执行环境TEE中,对加密后的私有数据执行解密并作为训练样本,不改变预训练模型的模型结构,仅对其进行小规模数据的调参,从而得到在TEE中可用的目标模型,通过在非可信环境中加密数据,并在TEE中解密进行模型训练,从而保证了在模型训练时目标训练样本的隐私不会泄露。
在一种实施方式中,如果将公钥对外进行公开,则有可能被攻击者获得公钥,那么攻击者就有可能将额外的训练样本进行加密并掺入目标训练样本的集合中,从而对目标模型的训练造成了影响,以及有可能实现如前所述的成员攻击。
基于此,对于TEE中所产生的公钥,还可以选择不公开,而是由目标训练样本的提供方还与所述TEE建立协议协商的安全信道,接收由所述安全信道所发送的TEE中所产生的公钥,以便对目标训练样本的集合进行加密。例如,目标训练样本的提供方还与所述TEE,使用RSA协商加密的方式,建立一个安全加密的通信链路,保证公钥的安全性。安全信道可以实现稳定且保密的数据传输,此处就不再赘述。通过安全信道保证公钥的安全性,可以进一步地加强目标模型训练时目标训练样本的集合的纯净不受污染,避免模型的隐私外泄。
进一步地,在目标模型已经训练之后,则可以针对线上的即时数据流进行识别。具体而言,为了保护用户隐私,同样可以采用公钥对于待识别数据进行加密,并发送至TEE中,在所述TEE环境中采用所述公钥所对应的私钥解密所述加密的待识别数据,生成解密的待识别数据;进而采用所述目标模型对所述解密的待识别数据进行识别,生成识别结果。加密待识别数据时使用的的公钥与前述训练时所使用的公钥可以相同,也可以不同,只需这些公钥都是TEE中所产生的即可。如图3所示,图3为本说明书实施例所提供的整体框架的逻辑结构示意图。
对应的,本说明书实施例还提供一种模型训练装置,如图4所示,图4是本说明书实施例提供的一种模型训练装置的结构示意图,包括:
获取模块401,获取预训练模型;
部署模块403,将所述预训练模型部署至可信执行环境TEE中;
解密模块405,获取公钥加密后的目标训练样本的集合,在所述TEE中采用所述公钥所对应的私钥进行解密,生成目标训练样本的集合;
训练模块407,在所述TEE中采用所述目标训练样本的集合,对所述预训练模型进行模型训练,生成在TEE中可用的目标模型。
进一步地,所述获取模块401,获取基于离线训练样本的集合所训练得到的预训练模型,其中,所述离线训练样本与所述目标训练样本所包含的特征相同。
进一步地,所述解密模块405,接收TEE中所产生的公钥,其中,所述公钥所对应的私钥被保存于所述TEE中;采用所述TEE中所产生的公钥对所述目标训练样本的集合进行加密,生成加密后的目标训练样本的集合。
进一步地,所述解密模块405,与所述TEE建立协议协商的安全信道,接收由所述安全信道所发送的TEE中所产生的公钥。
进一步地,所述训练模块407,在所述TEE中,不改变所述预训练模型的模型结构,根据所述目标训练样本的集合对所述预训练模型的模型参数进行模型训练,生成在TEE中可用的目标模型。
进一步地,所述装置还包括识别模块409,获取公钥加密的待识别数据,在所述TEE环境中采用所述公钥所对应的私钥解密所述加密的待识别数据,生成解密的待识别数据;采用所述目标模型对所述解密的待识别数据进行识别,生成识别结果。
本说明书实施例还提供一种计算机设备,其至少包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行所述程序时实现图1所示的模型训练方法。
图5示出了本说明书实施例所提供的一种更为具体的计算设备硬件结构示意图,该设备可以包括:处理器1010、存储器1020、输入/输出接口1030、通信接口1040和总线1050。其中处理器1010、存储器1020、输入/输出接口1030和通信接口1040通过总线1050实现彼此之间在设备内部的通信连接。
处理器1010可以采用通用的CPU(Central Processing Unit,中央处理器)、微处理器、应用专用集成电路(Application Specific Integrated Circuit,ASIC)、或者一个或多个集成电路等方式实现,用于执行相关程序,以实现本说明书实施例所提供的技术方案。
存储器1020可以采用ROM(Read Only Memory,只读存储器)、RAM(Random AccessMemory,随机存取存储器)、静态存储设备,动态存储设备等形式实现。存储器1020可以存储操作系统和其他应用程序,在通过软件或者固件来实现本说明书实施例所提供的技术方案时,相关的程序代码保存在存储器1020中,并由处理器1010来调用执行。
输入/输出接口1030用于连接输入/输出模块,以实现信息输入及输出。输入输出/模块可以作为组件配置在设备中(图中未示出),也可以外接于设备以提供相应功能。其中输入设备可以包括键盘、鼠标、触摸屏、麦克风、各类传感器等,输出设备可以包括显示器、扬声器、振动器、指示灯等。
通信接口1040用于连接通信模块(图中未示出),以实现本设备与其他设备的通信交互。其中通信模块可以通过有线方式(例如USB、网线等)实现通信,也可以通过无线方式(例如移动网络、WIFI、蓝牙等)实现通信。
总线1050包括一通路,在设备的各个组件(例如处理器1010、存储器1020、输入/输出接口1030和通信接口1040)之间传输信息。
需要说明的是,尽管上述设备仅示出了处理器1010、存储器1020、输入/输出接口1030、通信接口1040以及总线1050,但是在具体实施过程中,该设备还可以包括实现正常运行所必需的其他组件。此外,本领域的技术人员可以理解的是,上述设备中也可以仅包含实现本说明书实施例方案所必需的组件,而不必包含图中所示的全部组件。
本说明书实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现图1所示的模型训练方法。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书实施例可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书实施例的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本说明书实施例各个实施例或者实施例的某些部分所述的方法。
上述实施例阐明的系统、方法、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于方法实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的方法实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本说明书实施例方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本说明书实施例的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本说明书实施例原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本说明书实施例的保护范围。