具体实施方式
本说明书实施例提供数据加密、机器学习模型训练方法、装置以及电子设备。
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本说明书实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本说明书的方案在一种实际应用场景下涉及的一种整体架构示意图。该整体架构中,主要涉及三部分:待加密数据、自编码器所在的设备,待加密数据对应的加密数据。通过将待加密数据输入自编码器所在的设备进行处理,可以得到待加密数据对应的加密数据。
图2为本说明书实施例提供的一种数据加密方法的流程示意图。该流程可能的执行主体包括但不限于可作为服务器或者终端的以下设备:个人计算机、中型计算机、计算机集群、手机、平板电脑、智能可穿戴设备、车机等。
图2中的流程可以包括以下步骤:
S202:将待加密数据输入自编码器进行处理。
在本说明书实施例中,自编码器基于神经网络实现,其即为一个神经网络模型,通过对自编码器进行训练,可以实现一种输入等于输出(在实际应用中,允许一定的误差)的非线性机器学习算法。
在所述输入与输出间的中间状态能够包含输入的有用信息,根据这样的原理,可以基于自编码器以及所述中间状态实现数据加密。
在本说明书实施例中,待加密数据可以是背景技术中所述的原始数据本身;待加密数据也可以是为了适应于本说明书的方案对该原始数据进行相应的预处理后得到的数据,预处理比如可以是格式化处理、数据清洗处理、特征提取处理等。
S204:获取在所述处理过程中所述自编码器生成的神经网络隐层数据。
在本说明书实施例中,自编码器可以包含至少一个神经网络隐层,在所述处理过程中,输入的待加密数据会在依次经过自编码器的输入层、各隐层,输出层,每层都可能包含多个节点,节点会对来自上层节点的数据进行计算,比如,为各数据分别赋予权重,并进行线性或者非线性的运算等。隐层的节点计算得到的数据即为所述神经网络隐层数据,其反应了上述的中间状态。
需要说明的是,步骤S204未必要获取在处理过程中自编码器生成的所有的神经网络隐层数据。比如,若自编码器包含多个隐层,可以只获取其中一个隐层生成的神经网络隐层数据。
S206:根据所述神经网络隐层数据,得到所述待加密数据对应的加密数据。
在本说明书实施例中,可以将神经网络隐层数据直接作为待加密数据对应的加密数据,也可以对神经网络隐层数据进一步地进行处理后得到待加密数据对应的加密数据。对于前一种方式,步骤S206可以不包含需要实际执行的动作,而只是用于表示步骤S204获取到的神经网络隐层数据即为待加密数据对应的加密数据。对于后一种方式,比如,可以将多个隐层的神经网络隐层数据进行加权计算,将计算得到的数据作为待加密数据对应的加密数据。
在有多个隐层的情况下,可以将任一隐层的隐层数据作为得到的加密数据。作为一种优选的实施方式,可以将最靠近输出层的隐层的隐层数据作为得到的加密数据。
通过图2的方法对应得到的加密数据能够包含待加密数据的有用信息,原因在于:待加密数据在自编码中逐层处理过程中,虽然数据在变换,但是主要的特征(属于有用信息)仍然会被保留下来。因此,这样得到的加密数据用于对外展现时有实际的意义,实用性较好。这里的对外展现,可以理解为对外输出给数据的使用方。数据的使用方可以利用该加密数据对模型进行训练。训练好的模型可以在一些实际的场景中,比如风险评估场景、信用预测场景等进行使用。
基于图2的方法,本说明书实施例还提供了该方法的一些具体实施方案,以及扩展方案,下面进行说明。
为了便于理解,本说明书实施例提供了一种自编码器的结构示意图,如图3所示。
在图3中的自编码器包括输入层、输出层以及一个隐层。x1、x2、x3、x4、x5、x6、“+1”表示该自编码器各维度的输入数据,x1'、x'2、x'3、x'4、x'5、x'6表示该自编码器各维度的输出数据。可以看到,该自编码器中,隐层的维度低于输入层的维度,则在对输入数据处理过程中隐层生成的所述神经网络隐层数据的维度相应地也低于输入数据的维度。为了便于计算,输入数据、神经网络隐层数据、输出数据一般可以以向量形式表示。
在本说明书实施例中,原始数据未必以向量形式表示,常见是以数据表、键值对等形式表示。在这种情况下,可以先将原始数据向量化,再输入自编码器进行处理。
例如,对于步骤S202,所述将待加密输入自编码器进行处理前,还可以执行:获取原始数据;对所述原始数据进行格式化处理,得到表示所述原始数据的向量;所述待加密数据包括所述表示所述原始数据的向量。
假定原始数据是用户的部分信息,共有6个维度:年龄、家乡、资产、年收入、是否有车(房)、是否有贷款。可以提取每个用户这些维度的信息作为原始数据,并进行格式化处理,得到每个用户对应的一个6维向量,比如,某个用户的6维向量可以表示为(20~30岁,杭州,100万,20万,有车,有贷款);为了便于计算,该示例的向量中的每一维信息还可以按照预定的映射规则,进一步地映射为数,再输入自编码器。
在本说明书实施例中,用于数据加密的自编码器可以是已经训练好的自编码器。自编码器训练的过程包括:调节自编码器隐层层数、每个隐层的节点数;将样本数据输入到自编码器,以所述自编码器的输入数据与对应的输出数据相同为目标,对该自编码器进行训练。
该目标也即输入等于输出的函数,可以表示为hW,b(x)≈x,其中,x表示输入,hW,b(x)表示输出,之所以使用“≈”而不是“=”,是因为在实际应用中,允许一定的误差,一般地,输入基本等于输出即可,如此,有利于缩短训练时间。
进一步地,自编码器的输入层与输出层的结构可以相同,比如,该输入层与输出层包含的节点数目相同,且一一对应,这种对称的结构有利于加快训练收敛速度。训练完成后,输入层的每个节点的单节点输入与输出层的对应节点的单节点输出基本相等。当然,若该输入层与输出层的结构不相同,仍有可能成功地学习上述函数hW,b(x)。
在本说明书实施例中,当自编码器只包含一个隐层时,对于步骤S204,可以获取在所述处理过程中该隐层生成的至少部分隐层数据。
而当自编码器包含多个隐层时,可以预先在其中确定一个或多个隐层,作为目标隐层;或者,根据在所述处理过程中这多个隐层分别生成的神经网络隐层数据的具体情况,在其中选择一个或多个隐层,作为目标隐层;进而,对于步骤S204,可以获取在所述处理过程中目标隐层生成的至少部分神经网络隐层数据。
对于上一段中的第一种方式。比如,可以选择维度最低的隐层,作为目标隐层;再比如,根据加密程度需求,若想要加密程度越高,则可以选择越居中的隐层,作为目标隐层。对于上一段中的第二种方式。比如,若某隐层对应的神经网络隐层数据中某些维度直接暴露了原始信息的对应部分,则可以将该隐层排除开来再在剩余的隐层中确定目标隐层。
在图3中,由于只有一个隐层,则该隐层即为目标隐层,且该目标隐层的维度被设置为低于输入层的维度,这样设置的优点是:对输入数据的特征进行了汇聚,既提炼了有用信息,也有利于减少加密数据的维度和数据量。
需要说明的是,目标隐层的维度低于输入层的维度并非本说明书的方案中必须满足的要求,目标隐层的维度等于或者大于输入层的维度也是可以的。比如,图4为本说明书实施例提供的另一种自编码器的结构示意图,图4中的自编码器的隐层包括三层,且每个隐层的维度都高于输入层的维度,可以将这三层中的一个或者多个隐层作为目标隐层。
根据上面的说明,本说明书实施例还提供了一种实际应用场景下,上述数据加密方法的一种实施方案原理示意图,如图5a、图5b所示。
图5a为训练自编码器的流程示意图,该流程在上面已进行了说明;图5b为基于训练好的自编码器,进行数据加密的流程示意图。
在图5b中,待加密数据为包含“年龄”、“家乡”、“资产”多个维度的数据,具体可以表示为多维向量,比如,上面例子中的6维向量等。在训练自编码器时,可以采用与待加密数据结构相同的向量作为样本数据。
图5b中的流程主要包括以下步骤:
将向量形式的待加密数据输入训练好的自编码器进行处理;获取处理过程中自编码器中生成的隐层数据,作为待加密数据对应的加密数据。隐层数据优选地可以表示为维度低于待加密数据的维度的向量,得到的加密数据能够包含待加密数据的有用信息。
假定上述6维向量输入图3中的自编码器,相应地可以得到4维向量作为对应的加密数据,比如,(0.21,0.43,0.23,0.98)等,该4维向量中的每维数据可以一定程度地反映该6维向量中1维数据或者多维数据组合后主要的特征,对于对外展现目的而言是有用的。
在本说明书实施例中,上述的加密数据除了可以用于对外展现以外,还可以代替其对应的待加密数据用于训练机器学习模型。基于这样的思路,本说明书实施例还提供了一种机器学习模型训练方法,如图6所示,图6为该机器学习模型训练方法的流程示意图。
图6中的流程可以包括以下步骤:
S602:获取加密数据,所述加密数据通过将其对应的待加密数据输入自编码器进行处理,根据在所述处理过程中所述自编码器生成的神经网络隐层数据得到。
S604:利用所述加密数据训练机器学习模型。
由于加密数据包含有其对应的待加密数据的主要信息,因此,用该加密数据训练机器学习模型可以达到与用该待加密数据训练机器学习模型接近的效果,而且,在训练过程中无需暴露该待加密数据,从而有利于该待加密数据的隐私性。
上面对本说明书实施例提供的数据加密方法、机器学习模型训练方法进行了说明,基于同样的思路,本说明书实施例还提供了对应的装置,如图7、图8所示。
图7为本说明书实施例提供的对应于图2的一种数据加密装置的结构示意图,虚线方框表示可选的模块,该装置可以位于图2中流程的执行主体上,包括:
处理模块701,将待加密数据输入自编码器进行处理;
获取模块702,获取在所述处理过程中所述自编码器生成的神经网络隐层数据;
得到模块703,根据所述神经网络隐层数据,得到所述待加密数据对应的加密数据。
可选地,所述加密数据被用来训练机器学习模型。
可选地,所述装置还包括:
格式化模块704,在所述处理模块701将待加密数据输入自编码器进行处理前,获取原始数据,对所述原始数据进行格式化处理,得到表示所述原始数据的向量;所述待加密数据包括所述表示所述原始数据的向量。
可选地,所述待加密数据输入的所述自编码器是训练好的自编码器。
可选地,所述获取模块702获取在所述处理过程中所述自编码器生成的神经网络隐层数据,具体包括:
所述获取模块702确定所述自编码器包含的各隐层中的目标隐层,获取在所述处理过程中所述目标隐层生成的神经网络隐层数据。
可选地,所述目标隐层的维度低于所述自编码器的输入层的维度。
可选地,所述获取模块702获取在所述处理过程中所述自编码器生成的神经网络隐层数据,具体包括:
所述获取模块702获取在所述处理过程中,所述自编码器中最靠近输出层的隐层生成的神经网络隐层数据。
可选地,所述得到模块703根据所述神经网络隐层数据,得到所述待加密数据对应的加密数据,具体包括:
可选地,所述神经网络隐层数据为向量。
图8为本说明书实施例提供的对应于图6的一种机器学习模型训练装置的结构示意图,该装置可以位于图6中流程的执行主体上,包括:
获取模块801,获取加密数据,所述加密数据通过将其对应的待加密数据输入自编码器进行处理,根据在所述处理过程中所述自编码器生成的神经网络隐层数据得到;
训练模块802,利用所述加密数据训练机器学习模型。
基于同样的思路,本说明书实施例还提供了对应于图2的一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
将待加密数据输入自编码器进行处理;
获取在所述处理过程中所述自编码器生成的神经网络隐层数据;
根据所述神经网络隐层数据,得到所述待加密数据对应的加密数据。
基于同样的思路,本说明书实施例还提供了对应于图6的一种电子设备,包括:
至少一个处理器;以及,
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够:
获取模块,获取加密数据,所述加密数据通过将其对应的待加密数据输入自编码器进行处理,根据在所述处理过程中所述自编码器生成的神经网络隐层数据得到;
训练模块,利用所述加密数据训练机器学习模型。
基于同样的思路,本说明书实施例还提供了对应于图2的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
将待加密数据输入自编码器进行处理;
获取在所述处理过程中所述自编码器生成的神经网络隐层数据;
根据所述神经网络隐层数据,得到所述待加密数据对应的加密数据。
基于同样的思路,本说明书实施例还提供了对应于图6的一种非易失性计算机存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为:
获取加密数据,所述加密数据通过将其对应的待加密数据输入自编码器进行处理,根据在所述处理过程中所述自编码器生成的神经网络隐层数据得到;
利用所述加密数据训练机器学习模型。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、非易失性计算机存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本说明书实施例提供的装置、电子设备、非易失性计算机存储介质与方法是对应的,因此,装置、电子设备、非易失性计算机存储介质也具有与对应方法类似的有益技术效果,由于上面已经对方法的有益技术效果进行了详细说明,因此,这里不再赘述对应装置、电子设备、非易失性计算机存储介质的有益技术效果。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字***“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的***、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本说明书时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本说明书实施例可提供为方法、***、或计算机程序产品。因此,本说明书实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本说明书实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本说明书是参照根据本说明书实施例的方法、设备(***)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于***实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本说明书的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。