调试深度神经网络的制作方法

文档序号:22615173发布日期:2020-10-23 19:14阅读:126来源:国知局
调试深度神经网络的制作方法

本发明总体上涉及计算领域,并且更具体地涉及通用编程集成开发环境(ide)。



背景技术:

深度神经网络已经在计算机视觉和图像处理、自然语言处理(nlp)和语音任务中变得无处不在。尽管深度神经网络可能胜过大多数其他问题解决技术,但训练深度神经网络可能被认为是困难的过程,对于经验不足的用户,其难度非线性地增加。诸如权重初始化、学习率和动量之类的因素可能会极大地影响训练过程,在该训练过程中,即使在定义这些超参数中的任意超参数时的小故障也可能导致网络学习的次优权重。



技术实现要素:

本发明的实施例公开了一种用于调试(debug)深度神经网络的方法、计算机系统和计算机程序产品。本发明可包括自动识别与深度学习dl模型设计/代码相关联的一个或多个调试层,其中所识别的一个或多个调试层包括一个或多个错误,其中对于所识别的一个或多个调试层引入反向操作。然后,本发明可以包括基于至少一个中断条件向用户呈现调试输出,其中响应于确定满足所述至少一个中断条件,触发要呈现给用户的调试输出,其中所呈现的调试输出包括对dl模型设计/代码中所识别的一个或多个调试层的修复以及至少一个可行的洞察(insight)。

附图说明

通过下面结合附图理解的对示例性实施例的详细描述,本发明的这些和其他目的、特征和优点将变得明显。附图的各种特征未按比例绘制,因为图示是为了清楚起见,以帮助本领域技术人员结合详细描述来理解本发明。在附图中:

图1示出根据至少一个实施例的联网计算机环境;

图2是示出根据至少一个实施例的用于示例性dnn调试过程200的处理的操作流程图;

图3是根据至少一个实施例的图1中描绘的计算机和服务器的内部和外部组件的框图;

图4是根据本公开的实施例的包括图1中描绘的计算机系统的说明性云计算环境的框图;以及

图5是根据本公开的实施例的图4的说明性云计算环境的功能层的框图。

具体实施方式

本文中公开了所要求保护的结构和方法的详细实施例;然而,可以理解的是,所公开的实施例仅是可以以各种形式实施的所要求保护的结构和方法的说明。然而,本发明可以以许多不同的形式来实施,并且不应被解释为限于本文中阐述的示例性实施例。相反,提供这些示例性实施例以使得本公开将是透彻和完整的,并将向本领域技术人员充分传达本发明的范围。在说明书中,可以省略众所周知的特征和技术的细节,以避免不必要地混淆所呈现的实施例。

在任何可能的技术细节结合层面,本发明可以是系统、方法和/或计算机程序产品。计算机程序产品可以包括计算机可读存储介质,其上载有用于使处理器实现本发明的各个方面的计算机可读程序指令。

计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、静态随机存取存储器(sram)、便携式压缩盘只读存储器(cd-rom)、数字多功能盘(dvd)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。

这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。

用于执行本发明操作的计算机程序指令可以是汇编指令、指令集架构(isa)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、集成电路配置数据或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如smalltalk、c++等,以及过程式编程语言—诸如“c”编程语言,python编程语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(lan)或广域网(wan)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(fpga)或可编程逻辑阵列(pla),该电子电路可以执行计算机可读程序指令,从而实现本发明的各个方面。

这里参照根据本发明实施例的方法、装置(系统)和计算机程序产品的流程图和/或框图描述了本发明的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。

这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理器,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理器执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。

也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。

附图中的流程图和框图显示了根据本发明的多个实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以下描述的示例性实施例提供了用于调试深度神经网络的系统、方法和程序产品。这样,本实施例具有通过以下方式来改进通用编程集成开发环境(ide)的技术领域的能力:识别用于调试的深度学习模型设计或代码(即dl模型设计/代码)的层,将适当的调试块连接到要调试的层,并且应用修复和/或向用户提供洞察。更具体地,本实施例可以包括:确定并且引入一个或多个反向操作层,自动识别调试层,通过考虑神经网络和/或数据集的性质来自动创建调试集,自动识别合适的调试点,并且向用户呈现修复和/或可行的洞察。

如前所述,深度神经网络已经在计算机视觉和图像处理、自然语言处理(nlp)和语音任务中变得无处不在。尽管深度神经网络可能胜过大多数其他问题解决技术,但训练深度神经网络可能被认为是困难的过程,对于经验不足的用户,其难度非线性地增长。诸如权重初始化、学习率和动量之类的因素可能会极大地影响训练过程,在该训练过程中,即使在定义这些超参数中的任意超参数时的小故障也可能导致网络学习的次优权重。

在通用编程ide中,软件应用可以应用断点,监视感兴趣的变量,并且观察调用栈(即,栈数据结构,其可以存储与计算机程序的活动子例程有关的信息)。当满足某个预先定义的条件时,可以动态地检测(instrument)代码以执行一些附加任务。尽管在编写用于神经网络编的代码时这些特征也可能可用,但是可能需要更高级别的调试。

因此,可能有利的是,除其他外,协助成功地调试训练过程以确保训练过程在正确的方向上进行。

根据至少一个实施例,深度神经网络(dnn)调试程序可以包括:确定并且引入用于调试的一个或多个反向操作层,自动识别调试层,通过考虑网络/数据集的性质来自动创建调试集,自动识别合适的调试点,并且向用户提供可行的洞察。

根据至少一个实施例,dnn调试程序可以从深度学习文献、基于所定义的启发法(heuristics)或所填充的查找表来确定一个或多个反向操作。例如,卷积层具有反向操作,例如解卷积层;以及池化层具有反向操作,例如上采样层。

根据至少一个实施例,dnn调试程序可以通过考虑网络的性质来自动创建调试集。dnn调试程序可以采用调试点来指示应该在何时何处执行调试。可以基于中断条件来激活调试点,该中断条件可以使用诸如验证准确度和时期(epoch)数量之类的不同参数来定义。中断条件可以由用户预先设置为约束。另外,dnn调试程序可以基于差分分析在特定层上自动设置调试点。

根据至少一个实施例,dnn调试程序可被用来通过使用卷积神经网络(cnn)来训练图像分类器。dnn调试程序可以在开始训练之前将调试标志设置为活动模式(例如,“on(接通)”),然后可以选择要监视的层。然后,dnn调试程序可以通过随机地划分数据、或者对训练数据进行聚类并且选取每个聚类的代表点来选择训练数据的子集作为可以在调试dnn时使用的调试集。dnn调试程序可以进一步定义中断条件,该中断条件在被满足时可以通过选择时期(epoch)断点来示出调试结果(例如,可以在每“e”个时期(epoch)之后示出调试结果),或者可以通过选择验证准确度(该验证准确度在被越过时触发调试输出)来示出调试结果。然后,dnn调试程序可以开始训练过程。本实施例可以包括:dnn调试程序自动地或经由用户控制来选择要监视的层,选择训练数据的子集,以及定义中断条件。

根据至少一个实施例,dnn调试程序可以检查训练过程是否已经在调试模式下开始。如果训练过程已经在调试模式下开始,则dnn调试程序可以将调试块连接到要调试的每个层(例如,调试块或调试层可能取决于所推荐的用于调试的层而有所不同)。调试块可以被认为是逆向工程层(例如,层1),并且可以开始利用数据(例如,训练-调试数据)来训练增强/装饰(decorated)网络。然后,当满足中断条件时,dnn调试程序可以采用调试数据向用户呈现在观察层上发生的情况。

根据至少一个实施例,用户可以排除“调试模式”,从而移除调试块以使训练在原始深度神经网络上继续。在本实施例中,由于增加了额外的“调试”层或“调试”块,“调试模式”可能减慢训练过程。这样,出于短期时间利益并冒着在设计/代码中存在小差错的风险,用户可以选择停用(即,“断开”或置于非活动模式)“调试模式”。

根据至少一个实施例,dnn调试程序可以包括对于非标准任务的调试,所述非标准任务在基于过去经验(如数据集、网络或两者)识别要调试的层方面呈现更大级别的难度。因此,dnn调试程序可以采用调试集来训练模型。然后,dnn调试程序可以尝试将从调试集学习的模型的权重与在完整训练数据上学习的权重相关联。如果层的权重之间的相关性降低,则该层可能是潜在的用于调试的层。在本实施例中,dnn调试程序还可以包括对于标准任务的调试,其中,dnn调试程序可以基于知识库中的数据自动确定要调试哪些层。

参考图1,描绘了根据一个实施例的示例性联网计算机环境100。联网计算机环境100可以包括具有处理器104和数据存储设备106的计算机102,计算机102能够运行软件程序108和dnn调试程序110a。联网计算机环境100还可以包括服务器112,服务器112能够运行可以与数据库114和通信网络116交互的dnn调试程序110b。联网计算机环境100可以包括多个计算机102和服务器112,仅示出了其中之一。通信网络116可以包括各种类型的通信网络,诸如广域网(wan)、局域网(lan)、电信网络、无线网络、公共交换网络和/或卫星网络。应该理解的是,图1仅提供了一种实现方式的图示,并不暗示对可以实现不同实施例的环境的任何限制。可以基于设计和实现要求对所描绘的环境进行许多修改。

客户端计算机102可以经由通信网络116与服务器计算机112进行通信。通信网络116可以包括诸如有线、无线通信链路或光纤电缆之类的连接。如将参考图3所讨论的,服务器计算机112可以分别包括内部组件902a和外部组件904a,并且客户端计算机102可以分别包括内部组件902b和外部组件904b。服务器计算机112还可以在诸如软件即服务(saas)、分析即服务(aaas)、平台即服务(paas)或基础设施即服务(iaas)之类的云计算服务模型中运行。服务器112也可以位于云计算部署模型中,例如私有云、社区云、公共云或混合云。客户端计算机102可以是例如移动设备、电话、个人数字助理、上网本、膝上型计算机、平板计算机、台式计算机、或者能够运行程序、访问网络并访问数据库114的任何类型的计算设备。根据本实施例的各种实现方式,dnn调试程序110a、110b可以与可嵌入在各种存储设备中的数据库114交互,所述各种存储设备例如是但不限于计算机/移动设备102、联网服务器112或云存储服务。

根据本实施例,使用客户端计算机102或服务器计算机112的用户可以在开始深度神经网络(dnn)的训练过程之前使用dnn调试程序110a、110b(分别)调试dnn。下面参考图2更详细地解释dnn调试方法。

现在参考图2,描绘了示出根据至少一个实施例的由dnn调试程序110a、110b使用的示例性dnn调试过程200的操作流程图。

在202处,接收深度学习模型设计/代码。采用用户设备(例如,用户计算机102)上的软件程序108,经由通信网络116将深度学习(dl)模型设计/代码作为输入接收到dnn调试程序110a、110b中。dl模型设计/代码可以包括用于神经网络建模器的可视化设计或纯源代码。dl模型设计/代码可以由用户在没有错误的情况下完全实现。

除了dl模型/代码之外,还可以经由通信网络116同时将训练数据(例如,修改的国家标准与技术研究院(mnist)数据库、加拿大高级研究所(cifar-10数据集))作为输入接收到dnn调试程序110a、110b中。

例如,用户a将dl模型代码a与来自mnist数据库的训练数据一起上传到dnn调试程序110a、110b。

接下来,在204处,dnn调试程序110a、110b确定是否可以调试接收到的dl模型设计/代码。在接收dl模型设计/代码之前,用户可以在dl模型设计/代码中包括全局调试标志。dnn调试程序110a、110b可以采用标准调试点启用器(例如,python编程语言中的“sys.breakpointhook()”、“pdb.set_trace()”)自动搜索用户指定的调试点(例如,被dnn调试程序110a、110b解释为潜在的监视点),以针对全局调试标志在整个dl模型设计/代码中进行解析,并且识别是否存在先前设置的全局调试标志。全局调试标志的存在可能指示推荐对dl模型设计/代码进行调试。

如果在204处dnn调试程序110a、110b确定不应对接收到的dl模型设计/代码进行调试,则dnn调试程序110a、110b将确定dl模型设计/代码应在不采用dnn调试程序110a、110b的情况下继续进行训练。在dnn调试程序110a、110b针对全局调试标志在整个dl模型设计/代码中进行解析之后,dnn调试程序110a、110b可能无法识别全局调试标志。由于不存在全局调试标志,dnn调试程序110a、110b可以确定不推荐对dl模型设计/代码进行调试。这样,dl模型设计/代码可以在不进行任何调试的情况下继续进行正常的训练过程。

继续前面的示例,如果dnn调试程序110a、110b在整个dl模型代码a中进行了搜索并且无法识别任何全局调试标志,则dnn调试程序110a、110b将确定dl模型代码a不应被调试。因此,dnn调试过程200将针对新接收到的dl模型代码a结束。

然而,如果dnn调试程序110a、110b在204处确定应调试接收到的dl模型设计/代码,则dnn调试程序110a、110b在206处创建调试集。通过采用用户指定的调试点,dnn调试程序110a、110b可以在整个dl模型设计/代码中进行搜索,并且可以识别用户先前设置的全局调试标志。因此,接收到的dl模型设计/代码可以进行调试。在dnn调试过程200期间,dnn调试程序110a、110b可以首先创建调试集,该调试集可以被用来模拟理想情况,使得接收到的dl模型设计/代码可以完美地学习(即,没有错误和延迟)预期的任务。然后,dnn调试程序110a、110b可以通过执行各种技术(例如,随机划分、聚类)自动将接收到的与dl模型设计/代码相关联的训练集拆分为新的较小训练集和调试集。

在至少一个实施例中,在创建调试集之前,dnn调试程序110a、110b可以首先确认“调试模式”是否“接通”、激活或处于活动状态。如果“调试模式”没有被“接通”,则dnn调试程序110a、110b可能不会继续进行dnn调试过程200。

在至少一个实施例中,dnn调试程序110a、110b可以采用启发法(即,采用从先前的dl模型设计/代码确定较小训练集和调试集的过去经验,并且将任何新接收到的dl模型设计/代码与具有相应的较小训练集和调试集的先前接收到的dl模型设计/代码进行比较,以及通过常识和比较处理为当前dl模型设计/代码确定可能的较小训练集和调试集),为dl模型设计/代码采样训练数据的代表性子集。

在至少一个实施例中,dnn调试程序110a、110b可以(例如,经由对话框)向用户通知已经在接收到的dl模型设计/代码中识别了全局调试标志。可以例如通过位于对话框底部的问题“应自动进行调试吗?”以及位于问题下方的“是”按钮和“否”按钮来进一步提示用户。如果用户点击“是”按钮,则dnn调试程序110a、110b可以继续进行自动拆分训练数据并且创建调试集。然而,如果用户点击“否”按钮,则将进一步指示用户如何拆分训练数据并且创建较小训练集和调试集,以及如何选择中断条件。

继续前面的示例,dl模型代码a包括“pdb.set_trace()”作为整个代码中的标准调试点启用器。dnn调试程序110a、110b在整个dl模型代码a中进行搜索并且识别多个全局调试标志。这样,dnn调试程序110a、110b确定应该对dl模型代码a进行调试。然后,dnn调试程序110a、110b进一步确定“调试模式”被“接通”。然后,dnn调试程序110a、110b采用随机划分将从mnist数据集的随机数据点选择中接收到的训练数据拆分为调试集和较小训练集。

然后,在208处,选择中断条件。然后,dnn调试程序110a、110b可以针对相应的接收到的dl模型设计/代码自动选择用户先前定义的随机中断条件(例如,验证准确度小于80%)。可以预先在dnn调试程序110a、110b中构建可以与中断条件的自动选择相关联的规则集(例如,在每个时期(epoch)之后的类似的中断)。当可将向用户呈现调试输出时,可采用所选择的中断条件来指示dnn调试程序110a、110b。在本实施例中,对中断条件可以没有限制。

另外,中断条件可以是用户输入,其中用户被赋予了调试或监测各种条件的能力(例如,验证准确度的漂移<k阈值),或者用户可以在时期(epoch)(例如,m个时期(epoch))之后开始监测层。大多数层的对应反向层(例如,用于解释和/或调试)可以从具有简单查找表的文献中导出,只要为特定层放置了调试点,dnn调试程序110a、110b就可以自动适应这些查找表。

在至少一个实施例中,dnn调试程序110a、110b可以采用启发法(即,采用从先前的dl模型设计/代码选择中断条件的过去经验,并且将任何新接收到的dl模型设计/代码与具有相应的中断条件的先前接收到的dl模型设计/代码进行比较,以及通过常识和比较处理为当前dl模型设计/代码确定可能的中断条件),为dl模型设计/代码采样中断条件的代表性子集。

在至少一个实施例中,用户可以基于用户对dl的理解以及可能被推荐进行调试的层,为接收到的dl模型设计/代码手动选择中断条件。在dnn调试程序110a、110b向用户通知已经在接收到的dl模型设计/代码中识别了全局调试标志、并且用户在经由对话框被提示是否应该自动进行调试时点击了例如“否”按钮之后,由dnn调试程序110a、110b提供的指示可以包括有关如何为接收到的dl模型设计/代码选择相应的中断条件的指示。

在至少一个实施例中,如果用户决定调试不存在中断条件的dl模型设计/代码,则dnn调试程序110a、110b可以通过从用户获取中断条件来选择或添加调试点。

在一些实施例中,如果不存在中断条件,则用户可以编写用于中断条件的设计/代码(即,中断条件设计/代码),并且将中断条件设计/代码添加到dl模型设计/代码。然后,dnn调试程序110a、110b可以在学习任务特定层上放置调试点。

继续前面的示例,用户先前将中断条件定义为验证准确度大于95%。这样,dnn调试程序110a、110b为dl模型代码a选择先前用户定义的中断条件。

然后,在210处,dnn调试程序110a、110b确定是否存在标准任务和模型架构。dnn调试程序110a、110b可以采用用户设备(例如,用户计算机102)上的软件程序108将dl模型设计/代码的架构和/或预期任务与先前确定的标准模型和/或架构进行比较,以确定对于接收到的dl模型设计/代码是否存在标准架构和/或任务。对于具有标准架构和/或任务的dl模型设计/代码,所推荐的用于调试的特定神经网络层可能已经已知,并且基于预先定义的启发法被选择。这样,dnn调试程序110a、110b可以在调试dl模型设计/代码时遇到较少的困难。在图像分类时,例如,dnn调试程序110a、110b可以确定dl模型设计/代码架构是标准的,并且dnn调试程序110a、110b基于先前的训练数据可以容易地确定较高卷积层可以学习抽象形状,因此相比于学习基本形状(例如线条和边缘)的较低层可能需要调试。

基于先前的训练数据,dnn调试程序110a、110b可以周期性地构建或更新用来为标准dl模型设计/代码架构和任务选择调试层的启发法。

如果dnn调试程序110a、110b在210处确定存在标准模型架构和任务,则dnn调试程序110a、110b在212处采用知识库214来标记调试层。基于从具有标准任务和相应层的先前标准模型架构导出的训练数据,知识库214可以包括(i)用于标准任务(例如,图像分类、语言建模)的标准模型架构的列表,以及(ii)对于用于标准任务的每个标准模型架构(即,标准任务-架构组合),可以被标记为调试的层的相应列表。当在dnn调试程序110a、110b中接收到这样的标准任务-架构组合作为输入时,dnn调试程序110a、110b可以基于知识库214内包括的列表自动标记用于调试的正确层。通过标记调试层,用户可以识别正在阻碍接收到的dl模型设计/代码的学习(或训练)过程的一个或多个层。因此,dnn调试程序110a、110b可以对于这些层应用修复和/或向用户提供可行的洞察。

继续前面的示例,如果dnn调试程序110a、110b采用软件程序108将dl模型代码a与先前分析的具有标准架构和/或预期任务的dl模型设计/代码进行比较,并且确定dl模型代码a包括标准架构和任务(例如图像分类),则dnn调试程序110a、110b将遵从(deferto)知识库214来识别调试层。

然而,如果dnn调试程序110a、110b在210处确定不存在标准任务和/或模型架构,则dnn调试程序110a、110b在216处训练dl模型设计/代码。对于与接收到的dl模型设计/代码相关联的非标准任务和/或模型架构,dnn调试程序110a、110b可能在基于与该架构和任务相关联的先前训练数据和预先定义的启发法(例如,如数据集、网络或两者的过去经验)识别要在接收到的dl模型设计/代码上进行调试的层方面遇到困难。因此,dnn调试程序110a、110b可以使用两个数据集:(1)所创建的调试集(m1);(2)较小训练集(m2),用于训练接收到的dl模型设计/代码。dnn调试程序110a、110b可以将所创建的调试集(m1)与训练集(m2)分开,以避免对dl模型设计/代码的过度拟合(overfit),从而导致在训练接收到的dl模型设计/代码时的更高的准确度。

继续先前的示例,dnn调试程序110a、110b基于来自软件程序108的发现确定dl模型代码a包括非标准任务和/或模型架构。因此,dnn调试程序110a、110b采用所创建的调试集和较小训练集两者来训练dl模型代码a,并且识别dl模型代码a的调试层。

然后,在218处,计算给定的权重。通过应用机器学习(ml)算法(例如,梯度下降、rmsprop优化器、adam、随机(stochastic)),dnn调试程序110a、110b可以从两个数据集(即,所创建的调试集(m1)和较小训练集(m2))计算与接收到的dl模型设计/代码的每个调试层相关联的权重。通过采用梯度下降规则,例如,分别计算与每个数据集相关联的模型参数的值的集合,以基于凸函数将给定函数最小化为局部最小值。输出可以是基于所创建的调试集或较小训练集的两组给定权重。

另外,dnn调试程序110a、110b然后可以将与所创建的调试集和较小训练集相关联的所计算的权重的集合存储到具有对应的dl模型设计/代码和预期任务的权重存储库220(例如,数据库114)。

在至少一个实施例中,权重存储库可以是快照,在该快照中存储所计算的权重,直到完成层的调试为止。因此,用户可以利用这些快照加载dl模型设计/代码,并且继续训练dl模型设计/代码。

在至少一个实施例中,基于算法(例如,mode算法),dnn调试程序110a、110b可以随着时间设置调试点。在dl中,可能存在即停即用(stopandplay)功能,其中可以保存并且加载dl模型和相应的权重,以基于任何用户指定的约束或确定(例如,在一定量的时期(epoch)之后的中断条件,对于验证准确度的较低阈值)继续运行多个时期(运行)。

继续前面的示例,dl模型代码a包括三层:层1、层2和层3。然后,dnn调试程序110a、110b分别分析dl模型代码a的每个层。首先,dnn调试程序110a、110b采用梯度下降规则,针对与dl模型代码a相关联的所创建的调试集(即,调试集a)和与dl模型代码a相关联的较小训练集(较小训练集a)计算以下给定权重:

层1:调试集a(m1a)=0.49;较小训练集a(m2a)=0.31

层2:调试集a(m1a)=0.29;较小训练集a(m2a)=0.54

层3:调试集a(m1a)=0.77;较小训练集a(m2a)=0.48

然后,将每个层中针对每个集而计算的给定权重保存在权重存储库220中,直到确定了层权重相关性为止。此后,从权重存储库中永久删除每个层中针对每个集的对应给定权重,并且dnn调试程序110a、110b的知识库214仅保留标记调试层的结果。

然后,在222处,dnn调试程序110a、110b确定层权重相关性是否减小。通过采用计算来自复杂数据集的值之间的相关性(例如,关联性)的算法(例如,皮尔逊相关性系数、kullback-leibler(kl)散度、互信息、距离相关性、最大信息系数),dnn调试程序110a、110b可以在与m1的每个层相关联的权重(即,第一组给定权重)和与m2的每个层相关联的相应权重(即,第二组给定权重)之间执行相关性分析,以确定与每个层相关联的权重是否减小。然后,算法可以针对每组给定权重计算层权重相关性值(即,与第一组给定权重相关联的第一层权重相关性值,以及与第二组给定权重相关联的第二层权重相关性值)。然后,可以将两个层权重相关性值进行比较,以针对每个层确定m1和m2之间的差。然后,dnn调试程序110a、110b可以确定层权重相关性值是否从m1减小到m2(例如,层权重在m1处为0.3,然后在m2处为0.19),于是层权重相关性(即,层权重相关性值的两个集合之间的比较,或与层相关联的总/组合层权重相关性值)将减小。

在至少一个实施例中,dnn调试程序110a、110b可以通过将m1和m2两者的平均层权重相关性值(例如,通过将与m1和m2相关联的值相加并除以2来计算m1和m2两者的平均值)与先前确定的阈值(例如,在0到1范围内默认为0.5,在0到10范围内默认为5,在0到100范围内默认为50,或者在某种形式归一化范围内默认为中值)进行比较来确定层权重相关性是否为低。如果平均层权重相关性值小于阈值,则可以将层权重相关性识别为低。然而,如果平均层权重相关性值等于或高于阈值,则可以将层权重相关性识别为高。

在至少一个实施例中,dnn调试程序110a、110b可以采用m1和m2两者中的每个的层权重相关值的中值来确定m1和m2两者的组合层权重相关性值。然后可以将组合层权重相关性与阈值进行比较,以确定层权重相关性是低还是高。

如果dnn调试程序110a、110b在222处确定层权重相关性没有减小(即增加或相等),则dnn调试程序110a、110b结束。增加或高的层权重相关性可能指示与来自每个数据集(m1和m2)的权重相对应的层正在按预期执行,并且不推荐对dl模型设计/代码的该特定层进行调试。

另外,相等的层权重相关性可能指示与来自每个数据集(m1和m2)的权重相对应的层正在按预期执行,并且不推荐对dl模型设计/代码的该特定层进行调试。

继续先前的示例,dnn调试程序110a、110b通过将m1a与m2a进行比较然后确定给定权重是否从m1a增加至m2a或者给定权重相等来确定层权重相关性。这样,层2(调试集a(m1a)=0.29;较小训练集a(m2a)=0.54)具有层权重相关性的增加,因此dnn调试程序110a、110b将确定不推荐对层2进行调试。

然而,如果dnn调试程序110a、110b在222处确定层权重相关性减小,则在224处将dl模型设计/代码的相应层添加到调试列表。如果层权重之间没有相关性,或者层权重之间的相关性低或减小,则将与层权重相对应的层添加到调试列表。调试列表可以由dnn调试程序110a、110b编译或生成,并且可以包括描述要调试的层的目录(例如,由相关联的项、表、图形的连续列表来表示)。调试列表可以包括用于识别层的名称或编号、以及层的任何相关联的信息(例如,层权重相关性值,该层中发生的情况的描述,与调试集和/或较小训练集相关联的数据)。

另外,dnn调试程序110a、110b然后可以将相应的层标记为“要调试”(即,调试点),以将适当的调试块附连(或连接)到相应的层。这样,调试点可以指示应该何时执行调试。可以基于中断条件找到调试点,该中断条件可以使用不同的参数(例如,验证准确度、时期的数量)来定义。然后,dnn调试程序110a、110b可以基于所确定的中断条件向用户呈现输出(例如,调试列表、具有调试块的dl模型设计/代码)。例如,在dl模型代码中,文本数据的输出包括红色文本以指示高关注值,其中从每个分段解释有用的信息,例如对行中位置的敏感性、引用内的文本和dl模型代码的文本数据中的注释/引用。在另一个示例中,在dl模型设计中,dnn调试程序110a、110b接收了自行车的输入图像,并且由神经网络生成的其他图像指示层中的各种过滤器将什么确定为图像的推荐特征以将图像分类为自行车。基于大多数过滤器,输出示出轮胎被视为自行车的推荐特征。

当dnn调试程序110a、110b确定满足所选择的中断条件时,可以向用户示出调试结果。当满足时期(epoch)断点或验证准确度时,可以触发dnn调试程序110a、110b以向用户呈现调试输出。调试输出还可以包括要应用于调试层(即调试点)的修复,和/或对用户的可行的洞察,用户可以实施该洞察以修复所识别的调试点。

例如,dnn调试程序110a、110b可以呈现在层a和层b之间添加随机失活(dropout)层以提高正则化(regularization)的选项,或者在“e”个时期(epoch)之后衰减学习率以进一步减少损失,作为对所识别的调试点的可行的洞察。

继续先前的示例,dnn调试程序110a、110b通过将m1a与m2a进行比较然后确定给定的权重是否从m1a减小至m2a来确定层权重相关性。这样,层1(调试集a(m1a)=0.49;较小培训集a(m2a)=0.31)和层3(调试集a(m1a)=0.77;较小培训集a(m2a)=0.48)减小,因此dnn调试程序110a、110b将层1和层3添加到调试列表。此外,层1和层3将被标记为“要调试”,并且调试块a1和a3将分别被附接到这些层。

在另一个实施例中,当仅在调试集上训练dl模型设计/代码(即,没有来自训练数据集的较小训练集)时的层权重与当在较大训练集上训练dl模型设计/代码时的层权重之间的相关性低,于是将相应的层添加到调试列表。

在至少一个实施例中,dnn调试程序110a、110b可以在调试数据库(例如,数据库114)中临时存储被标记为“要调试”的相应层(即,调试点)以及相应层在调试列表上的条目,直到相应层被相关联的软件程序108或应用程序接口(api)完全调试为止。然后,相关联的软件程序108(或api)可以删除相应层以及该相应层在调试列表上的条目。

在一些实施例中,dnn调试程序110a、110b不存储被标记为“要调试”的相应层(即,调试点)以及相应层在调试列表上的条目。相反,相应层上的“要调试”标记可能是供用户确定dl模型设计/代码中的哪些层必须被修复的唯一标识符。

在本实施例中,适当的调试块可能取决于调试点。在至少一个实施例中,对于卷积神经网络(cnn),可以采用对卷积层进行转置(transpose)的去卷积调试块来过滤可视化(visualization)。在另一个实施例中,对于密集的神经网络,可能必须通过采用一种类型的人工神经网络以无监督方式学习有效的数据编码(类似于自动编码器)来重构输入。在一些实施例中,对于递归神经网络(rnn),可以采用隐马尔可夫模型。

在本实施例中,用户可以在dnn调试过程200中的任意点处选择将调试模式“接通”(即,活动模式)或“断开”(即,非活动模式)。这样,用户可以确定是否识别正在阻碍dl模型设计/代码的学习过程的层。例如,在画面的底部,存在“改变调试模式”按钮。如果用户点击“改变调试模式”按钮,则dnn调试程序110a、110b将经由对话框提示用户,以确认用户是否打算利用位于对话框底部的“是”或“结束”按钮、或者“否”或“取消”按钮来结束dnn调试程序110a、110b。如果用户选择“是”或“结束”按钮,则dnn调试程序110a、110b通知用户dnn调试过程200已经终止,并且dnn调试程序110a、110b已经变为“断开”。然而,如果用户点击“否”或“取消”按钮,则dnn调试程序110a、110b可以继续进行dnn调试过程200。在至少一个实施例中,一旦用户点击“改变调试模式”按钮,就可以暂时挂起任何当前的dnn调试过程200,并且可以暂停dnn调试程序110a、110b,直到用户确认是否改变调试模式为止。这样,如果dnn调试程序110a,110b当前“接通”并且处于识别用于调试的一个或多个层的处理中,则该当前dnn调试过程200挂起,并且dnn调试程序110a、110b暂停,直到用户确认是继续还是“断开”dnn调试程序110a、110b。然而,如果当用户点击“改变调试模式”按钮时,dnn调试程序110a、110b当前“断开”,则没有当前的dnn调试过程200挂起。这样,如果用户选择“接通”dnn调试程序110a、110b,则dnn调试程序110a、110b将通过接收新的dl模型设计/代码来开始。

在本实施例中,如果用户“断开”dnn调试程序110a、110b,而dnn调试程序110a、110b当前正在识别接收到的dl模型设计/代码中的要调试的一个或多个层,则dnn调试程序110a、110b可以在该点处结束dnn调试过程200,并且可以将在该点处识别的一个或多个层呈现给用户。可以不执行与dl模型设计/代码相关联的其他层的进一步分析,直到用户“接通”dnn调试程序110a、110b为止。

在另一实施例中,如果用户确认“断开”dnn调试程序110a、110b,而dnn调试程序110a、110b当前正在识别接收到的dl模型设计/代码中的要调试的一个或多个层,dnn调试程序110a、110b可以向用户提示关于当前分析的dl模型设计/代码的状态更新(例如,完成百分比,为完成推荐的时间量,关于dnn调试程序110a、110b是否应继续分析的推荐)。然后,可以提示用户(例如,经由对话框)以指示用户是否希望dnn调试程序110a、110b继续分析当前分析的dl模型设计/代码,然后改变调试模式,或在该点处结束dnn调试过程200。如果用户决定在当前点处结束dnn调试过程200,则可以再次提示用户(例如,经由对话框)以保存当前分析的dl模型设计/代码以在以后的日期完成,或者结束而不保存当前分析的dl模型设计/代码。

在本实施例中,dnn调试程序110a、110b可以在识别调试层和调试点以及如何拆分训练集以创建调试集时考虑用户反馈。可以实施用户反馈以改进与dnn调试程序110a、110b相关联的训练过程的调试。因此,dnn调试程序110a、110b可以能够提高调试层和调试点的自动识别的准确度。

计算机的功能可以通过dnn调试程序110a、110b来改进,因为dnn调试程序110a、110b可以提供更高级别的调试并且具有最少的错误(如果有的话)。dnn调试程序110a、110b可以自动确定并且引入用于调试的一个或多个反向操作层,自动识别调试层(或调试点),通过考虑网络和/或数据集的性质来自动创建调试集,以及自动识别合适的调试点。dnn调试程序110a、110b可以进一步基于调试点结果向用户提供可行的洞察(例如,合适的调试层)。用户还可以过滤或定制调试点结果。dnn调试程序110a、110b还可以最小化(如果不能消除)在识别调试的错误时可能由于人工干预而发生的任何错误。

可以理解,图2仅提供了一个实施例的图示,并不暗示关于可以如何实现不同实施例的任何限制。可以基于设计和实现要求对所描绘的实施例进行许多修改。

图3是根据本发明的说明性实施例的图1中描绘的计算机的内部组件和外部组件的框图900。应该理解,图3仅提供了一种实现方式的图示,并不暗示关于可以实现不同实施例的环境的任何限制。可以基于设计和实现要求对所描绘的环境进行许多修改。

数据处理系统902、904代表能够执行机器可读程序指令的任何电子设备。数据处理系统902、904可以代表智能电话、计算机系统、pda或其他电子设备。可以由数据处理系统902、904表示的计算系统、环境和/或配置的示例包括但不限于个人计算机系统、服务器计算机系统、瘦客户端、胖客户端、手持或膝上型设备、多处理器系统、基于微处理器的系统、网络pc、小型计算机系统以及包括任何上述系统或设备的分布式云计算环境。

用户客户端计算机102和网络服务器112可以包括图3中所示的内部组件902a,b和外部组件904a,b的相应集合。内部组件902a,b的每个集合包括一个或多个总线912上的一个或多个处理器906、一个或多个计算机可读ram908和一个或多个计算机可读rom910、以及一个或多个操作系统914和一个或多个计算机可读有形存储设备916。客户端计算机102中的一个或多个操作系统914、软件程序108和dnn调试程序110a、以及网络服务器112中的dnn调试程序110b可以存储在一个或多个计算机可读有形存储设备916上,以经由一个或多个ram908(其通常包括高速缓冲存储器)由一个或多个处理器906来执行。在图3中所示的实施例中,每个计算机可读有形存储设备916是内部硬盘驱动器的磁盘存储设备。替选地,每个计算机可读有形存储设备916是半导体存储设备,例如rom910、eprom、闪存或可以存储计算机程序和数字信息的任何其他计算机可读有形存储设备。

内部组件902a,b的每个集合还包括r/w驱动器或接口918,以从/向一个或多个便携式计算机可读有形存储设备920(例如cd-rom、dvd、存储棒、磁带、磁盘、光盘或半导体存储设备)读取/写入。可以将诸如软件程序108和dnn调试程序110a、110b之类的软件程序存储在相应的便携式计算机可读有形存储设备920中的一个或多个上,经由相应的r/w驱动器或接口918读取,并且加载到相应的硬盘驱动器916。

内部组件902a,b的每个集合还可以包括网络适配器(或交换机端口卡)或接口922,例如tcp/ip适配器卡、无线wi-fi接口卡、或者3g或4g无线接口卡、或者其他有线或无线通信链路。客户端计算机102中的软件程序108和dnn调试程序110a以及网络服务器计算机112中的dnn调试程序110b可以经由网络(例如,因特网、局域网或其他、广域网)和相应的网络适配器或接口922从外部计算机(例如,服务器)下载。客户端计算机102中的软件程序108和dnn调试程序110a以及网络服务器计算机112中的dnn调试程序110b从网络适配器(或交换机端口适配器)或接口922加载到相应的硬盘驱动器916中。网络可以包括铜线、光纤、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。

外部组件904a,b的每个集合可以包括计算机显示器924、键盘926和计算机鼠标928。外部组件904a,b还可以包括触摸屏、虚拟键盘、触摸板、指点设备以及其他人机接口设备。内部组件902a,b的每个集合还包括设备驱动器930,用于与计算机显示监视器924、键盘926和计算机鼠标928进行接口连接。设备驱动器930、r/w驱动器或接口918、和网络适配器或接口922包括硬件和软件(存储在存储设备916和/或rom910中)。

预先应理解,尽管本公开包括关于云计算的详细描述,但是本文中记载的教导的实现不限于云计算环境。相反,本发明的实施例能够与现在已知或以后开发的任何其他类型的计算环境结合实现。

云计算是服务交付的模型,用于实现对可配置计算资源(例如,网络、网络带宽、服务器、处理、存储器、存储设备、应用、虚拟机和服务)的共享池的方便按需网络访问,该模型可以利用最少的管理工作或与服务提供商的交互来快速地提供和发布。该云模型可以包括至少五个特性、至少三个服务模型和至少四个部署模型。

特性如下:

按需自助服务:云用户可以根据需要自动单方面提供计算能力,例如服务器时间和网络存储,而无需与服务提供商进行人工交互。

广泛的网络访问:能力可通过网络获得,并且通过标准机制被访问,所述标准机制通过异构瘦客户端平台或胖客户端平台(例如,移动电话、膝上型计算机和pda)来促进使用。

资源池:使用多租户模型将提供商的计算资源池化以服务多个消费者,其中根据需求动态分配和重新分配不同的物理资源和虚拟资源。有位置独立性的感觉,即消费者通常对所提供的资源的确切位置没有控制权或了解,但是可能能够指定更高抽象级别(例如,国家、州或数据中心)的位置。

快速弹性:可以快速且弹性地、在一些情况下自动地提供能力,以快速向外扩展(scaleout)并且快速发布以迅速向内扩展(scalein)。对于消费者而言,可用于提供的能力通常似乎是无限的,并且可以在任何时间按任意数量购买。

测量服务:云系统通过在适合于服务类型(例如,存储、处理、带宽和活动用户帐户)的某种抽象级别上利用计量能力来自动控制和优化资源使用。可以监视、控制和报告资源使用情况,从而为所使用的服务的提供商和消费者两者提供透明度。

服务模型如下:

软件即服务(saas):提供给消费者的能力是使用在云基础设施上运行的提供商的应用。可通过诸如网络浏览器(例如,基于网络的电子邮件)之类的瘦客户端接口从各种客户端设备访问应用。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统、存储设备、或甚至各个应用能力,可能的例外是有限的特定于用户的应用配置设置。

平台即服务(paas):提供给消费者的能力是将使用由提供商支持的编程语言和工具创建的消费者创建或获取的应用部署到云基础设施上。消费者不管理或控制底层云基础设施,包括网络、服务器、操作系统或存储设备,但是可以控制所部署的应用以及可能的应用托管环境配置。

分析即服务(aaas):提供给消费者的能力是使用基于网页或基于云的网络(即基础设施)来访问分析平台。分析平台可以包括对分析软件资源的访问,或者可以包括对相关数据库、语料库、服务器、操作系统或存储设备的访问。消费者不管理或控制底层的基于网页或基于云的基础结构,包括数据库、语料库、服务器、操作系统或存储设备,但是可以控制所部署的应用以及可能的应用托管环境配置。

基础设施即服务(iaas):提供给消费者的能力是提供处理、存储、网络和其他基础计算资源,消费者能够在其中部署和运行任意软件,所述软件可包括操作系统和应用。消费者不管理或控制底层云基础设施,但是可以控制操作系统、存储设备、所部署的应用,并且可能对选择联网组件(例如主机防火墙)进行有限的控制。

部署模型如下:

私有云:云基础设施仅为一个组织运营。它可以由该组织或第三方管理,并且可以存在于场所内部(on-premise)或场所外部(off-premise)。

社区云:云基础设施由若干组织共享,并且支持具有共同关注点(例如,任务、安全要求、策略和合规性注意事项)的特定社区。它可以由组织或第三方管理,并且可以存在于场所内部或场所外部。

公共云:云基础结构可供公众或大型行业团体使用,并且由销售云服务的组织拥有。

混合云:云基础设施是两个或多个云(私有、社区或公共)构成的,这些云仍然是独特的实体,但是通过实现数据和应用可移植性的标准化或专有技术(例如,用于云之间的负载均衡的云爆发(cloudbursting))绑定在一起。

云计算环境是面向服务的,关注于无状态、低耦合、模块化和语义互操作性。云计算的核心是包括互连节点的网络的基础设施。

现在参考图4,描绘了说明性的云计算环境1000。如图所示,云计算环境1000包括一个或多个云计算节点100,由云消费者使用的本地计算设备(诸如例如个人数字助理(pda)或蜂窝电话1000a、台式计算机1000b、膝上型计算机1000c、和/或汽车计算机系统1000n)可以与所述一个或多个云计算节点100通信。节点100可以彼此通信。可以在一个或多个网络(如上文所述的私有云、社区云、公共云或混合云)或其组合中对它们进行物理或虚拟分组(未示出)。这允许云计算环境1000提供基础设施、平台和/或软件,作为云消费者不需要为其维护本地计算设备上的资源的服务。应当理解,图4中所示的计算设备1000a-1000n的类型仅旨在是说明性的,并且计算节点100和云计算环境1000可以通过任何类型的网络和/或网络可寻址连接(例如,使用网络浏览器)与任何类型的计算机化设备通信。

现在参考图5,示出了由云计算环境1000提供的一组功能抽象层1100。应当预先理解,图5中所示的组件、层和功能仅旨在是说明性的,并且本发明的实施例不限于此。如所描绘的,提供以下层和相应的功能:

硬件和软件层1102包括硬件和软件组件。硬件组件的示例包括:大型机1104;基于risc(精简指令集计算机)架构的服务器1106;服务器1108;刀片服务器1110;存储设备1112;以及网络和联网组件1114。在一些实施例中,软件组件包括网络应用服务器软件1116和数据库软件1118。

虚拟化层1120提供抽象层,可以从该抽象层提供虚拟实体的以下示例:虚拟服务器1122;虚拟存储设备1124;虚拟网络1126,包括虚拟私有网络;虚拟应用和操作系统1128;以及虚拟客户端1130。

在一个示例中,管理层1132可以提供以下描述的功能。资源供应1134提供计算资源和用来在云计算环境内执行任务的其他资源的动态采购。当在云计算环境内采用资源时,计量和定价1136提供成本跟踪,并且为这些资源的消耗开具帐单或发票。在一个示例中,这些资源可以包括应用软件许可证。安全性为云消费者和任务提供身份验证,以及为数据和其他资源提供保护。用户门户1138为消费者和系统管理员提供对云计算环境的访问。服务级别管理1140提供云计算资源分配和管理,使得满足所需的服务级别。服务级别协议(sla)计划和实现1142提供对根据sla来预期未来需求的云计算资源的预先安排和购买。

工作负载层1144提供可以采用云计算环境的功能的示例。可以从该层提供的工作负载和功能的示例包括:映射和导航1146;软件开发和生命周期管理1148;虚拟教室教育交付1150;数据分析处理1152;交易处理1154;以及dnn调试1156。dnn调试程序110a、110b提供了在开始训练过程之前调试深度神经网络的方式。

以上已经描述了本发明的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1