机器学习模型的自动化生成
文献发布时间:2023-06-19 11:55:48
背景技术
传统上,机器学习模型被由专家手动构建,他们定义模型的结构然后用自动化技术进行模型训练。随着机器学习模型变得越来越复杂,已做出各种尝试来自动化生成机器学习模型的过程。然而,这些努力仅取得有限的成绩。
发明内容
提供本“发明内容”以简化形式介绍了一些构思,这些构思将在下面的“具体实施方式”中进一步描述。本“发明内容”不旨在标识所要求保护的主题的必要特征,也不旨在用于帮助理解所要求保护的主题的范围。
本说明通常涉及用于机器学习模型自动化生成的技术。一个示例包括一种可以在计算设备上被执行的方法或技术。该方法或技术可以包括执行迭代模型生长过程的两次或更多次迭代。迭代模型生长过程可以包括从一个或多个父模型构成的父模型池中选择一个特定父模型,生成多个候选层,并且当重用学习参数和/或特定父模型的结构时初始化多个候选层。迭代模型生长过程也可以包括选择诸如层的特定候选组件,以包括在子模型中用于训练。各个子模型也可以包括特定父模型、以及特定候选层中的一个或多个特定候选层、或其他结构。迭代模型生长过程也可以包括训练多个子模型用以获取经训练的子模型,并使用一个或多个标准来评估经训练的子模型。迭代模型生长过程也可以包括至少基于该评估指定个体经训练的子模型为新的父模型,并且添加新的父模型到父模型池中。该方法或技术也可以包括在两次或更多次迭代后,选择至少一个经训练的子模型作为最终模型,并输出该最终模型。
另一示例包括一种系统,该系统包含硬件处理单元和存储资源。存储资源可以存储计算机可读指令,计算机可读指令当被硬件处理单元执行时使硬件处理单元执行迭代模型生长过程,该迭代模型生长过程涉及修改父模型以获取子模型。该迭代模型生长过程可以至少基于在候选层的初始化过程中学习到权重来选择候选层以包括在子模型中。该计算机可读指令也可以使硬件处理单元输出从子模型中选择的最终模型。
另一示例包括一种存储指令的计算机可读存储介质,指令当被处理设备执行时使处理设备执行动作。动作可以包括执行迭代模型生长过程的两次或更多次迭代。迭代模型生长过程可以包括从一个或多个父模型构成的父模型池中选择特定父模型,初始化多个候选层,并且选择多个子模型以用于训练。各个子模型可以包括从特定父模型继承的结构和候选层中的至少一个候选层。迭代模型生长过程也可以包括训练多个子模型以获取经训练的子模型,并且至少基于一个或多个标准指定个体经训练的子模型作为新的父模型。迭代模型生长过程也可以包括添加新的父模型到父模型池。动作也包括在两次或更多次迭代后选择至少一个经训练的子模型作为最终模型,并输出最终模型。
上述列出的示例旨在提供快速参考以帮助读者,且不旨在定义本文描述的构思的范围。
附图说明
参考附图描述具体实施方式。在附图中,附图标记的最左侧的数字表示该附图标记首次出现的附图。在说明书和附图中的不同实例中,使用相似附图标记来指示相同或相似的项目。
图1图示了根据本公开构思的一些实施方式的用于机器学习模型的自动化生成的示例方法或技术。
图2图示了根据本公开构思的一些实施方式的用于生成机器学习模型的候选层的示例方法。
图3图示了根据本公开构思的一些实施方式的用于初始化机器学习模型的候选层的示例方法。
图4图示了根据本公开构思的一些实施方式的用于初始化机器学习模型的候选层的另一示例方法。
图5图示了根据本公开构思的一些实施方式的用于训练子模型的示例方法。
图6至图8图示了根据本公开构思的一些实施方式的与迭代模型生长过程的连续迭代相关联的散点图。
图9图示了根据本公开构思的一些实施方式的用于机器学习模型的自动化生成的示例处理流程。
图10图示了根据本公开构思的一些实施方式的示例系统。
图11图示了根据本公开构思的一些实施方式的示例图形用户界面。
具体实施方式
概述
存在各种类型的机器学习框架,使用有监督和/或无监督学习,它们可以被训练。支持向量机、决策树、和神经网络是适合有监督学习的一些机器学习框架,其中模型可从标注的训练数据中学习。一些机器学习框架,例如神经网络,使用执行特定操作的节点层。
在神经网络中,节点经由一个或多个边而彼此连接。神经网络可以包括输入层、输出层、以及一个或多个中间层。根据预定义函数,个体节点可以处理它们各自的输入,并向后续层提供输出,或在某些情况下向一个先前层提供输出。对给定的节点输入可以被乘以该输入和节点之间的边的相应权重值。此外,节点可以具有个体的偏差值,该偏差值被用于产生输出。各种训练程序可以被用于学习边的权重和/或偏差值。为本公开的目的,术语“学习参数”指通过训练分层机器学习模型(例如神经网络)而学习到的参数,例如边和偏差值。
神经网络结构可以被以模块化的方式构建。例如,一个或多个节点层可以共同执行一项特定操作,例如池化操作或卷积运算。之后,不同的层可以被连接在一起以形成整个网络结构。为本公开的目的,术语“层”指代一组节点,其与一个或多个输入层以及从该层中节点接收输入的一个或多个目标层共享连接性。术语“操作”指代可以被一个或多个节点层执行的函数。术语“模型结构”指代一个分层模型的整体架构,包括层数、层的连接性、和由个体层执行的操作类型。术语“神经网络结构”指神经网络的模型结构。所公开的实施方式主要使用神经网络结构作为用于分层机器学习模型的示例模型结构。术语“经训练的模型”指模型结构和针对该模型结构的学习参数。注意两个经训练的模型可以共享相同的模型结构且仍可具有不同的学习参数,例如,两个模型在不同的训练数据被训练,或在训练过程中有底层随机过程。
如前所述,生成模型结构的方法是人类手动定义模型结构。之后模型结构可以在一些由计算机设置的训练数据集上被训练,用以获取经训练的模型,并且之后可以使用验证数据集来验证该经训练的模型。随后,可以手动产生对模型结构的修改,例如,通过添加或移除层或者层之间的连接。之后,修改的数据可以被再次训练以重新获取附加经训练的模型,附加经训练的模型可以被相互比较以选择最终模型,和良好适用于给定任务的相应结构。然而,这种方法要求相关领域的人类专家介入以创建初始模型数据和修改,并需要他们选择最终模型结构。
另一方法是,通过使用计算机生成不同模型结构并从生成的结构中选择最终模型来使过程自动化。然而,之前为了自动化模型生成的努力仅取得了有限的成绩。虽然现代计算机在计算性能上已经极大提升,但是模型结构(例如神经网络结构)的自动化生成的现有方法倾向于探索有限的搜索空间或要求不切实际的计算资源量。在实践中,生成模型结构倾向于是在计算上可行的,但在给定的当前可用计算硬件的情况下,独立地训练大量不同模型结构倾向于是在计算上不可行的。
一种量化模型结构训练时间的方法为,通过定义参考诸如虚拟机或处理器的计算资源和在参考计算资源上完成训练所需的时间量。例如,在特定类型图形处理单元(“GPU”)上训练一天可以被称为一个GPU天(GPU-day),并且给定模型训练的计算成本可以被指定为多个GPU天。其他方法也是可能的,例如,在特定CPU或FPGA模型中的训练小时数、在虚拟机上花费的时间量等。
模型结构的自动化生成的一种方法是,简化定义搜索空间,并在搜索空间中生成所有模型结构。之后,所有可能的模型结构可以被独立训练以获取经训练的模型,并且经训练的模型中的一个可以被选择为最终模型。通常,通过限制模型结构的深度、由模型执行的操作、和模型的连接性,搜索空间可以被定义。例如,一台计算机可以被设置为以考虑所有全连接、深度为五的模型结构,其中五层的每一层执行几种可能的操作之一。
然而,这种方法对许多模型是不可行的。第一,模型结构可以生长很大,并具有不同的层和节点。第二,对于这种大型模型结构,训练可能花费非常长的时间。最终,这种方法没有考虑在搜索空间之外的其他模型结构,而这些模型结构可能更适合当前任务。例如,如果任务是图像识别,相对于任何巧妙的五层模型,六层模型显然对本任务更适合,如果搜索空间被限制为五层,则六层模型不会被发现。
用于模型结构的自动化生成的另一种复杂方法涉及单独“控制器”模型的创造,该模型被训练以生成针对给定任务的新模型结构。然而,使用控制器模型来生成新的模型结构的先前努力仍有如上的缺点。如果考虑到大搜索空间,例如,期望控制器模型考虑广阔范围的可能模型结构,每个模型结构都需要被生成、完全训练、并且之后相对于其他模型被评估。因为在大型数据集上,训练可能花费数天,利用相对不受限制的搜索空间的、新模型结构的自动化学习的努力只有有限的成功。例如,这种方法可能会花费数百或数千GPU天才输出具有可接受性能水平的最终模型结构。
用于模型的自动化生成的另一种方法是,显著地限制搜索空间,之后在受限的搜索空间内的相对有限的一组模型中搜索。例如,一些先前的方法定义具有指定数量的模块化层和模块之间的连接类型的外部模型骨架。这些方法之后生成并评估不同的候选子结构或“细胞”,其可以之后在外部模型骨架中被重复。然而,这些方法并没有考虑备选外部骨架、细胞间的备选连接、或在每个细胞中使用不同类型的子结构。
不同于上述传统技术的不足,本公开的实施方式可以在相对不受控制的搜索空间中生成模型结构,同时相对于上述技术节省了显著的训练时间。通过考虑广阔的搜索空间,相比于更受限的搜索空间,本公开的实施方式更可能找到提供更好的性能的新模型结构。例如,本公开的实施方式可以找到不限于预定义的外部骨架的模型结构,并且可以找到在模型的不同层中具有各种操作类型的模型结构。
本公开的实施方式可以利用若干种技术来避免在搜索空间中单独地生成和训练每个模型结构。相反,本公开的实施方式指导新模型结构生长为搜索空间的一部分,搜索空间的这一部分被预期包含相比于已被评估的结构的改进模型结构,同时避免搜索搜索空间中的那些不太可能包含改进模型结构的其他部分。
模型结构生成方法
以下讨论呈现了可以允许执行模型结构的自动化生成(如神经网络结构)的功能的概述。图1图示了根据本公开构思的示例方法100。如下详述,方法100可以被实施在许多不同设备类型上,如通过一个或多个云服务器、通过客户端设备,如膝上计算机、平板计算机、智能手机、或通过一个或多个服务器、客户端设备的组合等。
方法100开始于框102处,其中父模型的池被初始化。例如,一个或多个初始父模型可以被添加到父模型池中。初始父模型可以是已知模型,这些模型先前已被确认为在特定任务中表现良好,可以是随机生成的,或直接是预定义的默认种子模型。
方法100继续至框104处,其中特定父模型从池中被选择。例如,可以从池中随机地或确定地选择父模型。特定父模型具有可以被修改的对应模型结构,如下详述。
方法100继续至框106处,其中候选层被生成和初始化。通常,生成候选层可以包括选择特定父模型的一个或多个层,以提供到候选层的输入,并选择特定父模型的另一“目标”层以接收候选层的输出。因此,候选层可以被认为是对特定父模型的结构的添加。此外,生成候选层可以包括选择对由特定父模型的被选择层提供的输入执行的操作。初始化候选层可以包括在候选层上执行一些初始训练,如本文进一步讨论。
方法100继续至框108处,其中特定候选层被选择以包括在从父模型得到的一个或多个子模型中。例如,基于在初始化候选层时学习到的初始化参数,特定候选层可以被选择,如下详述。在其他情形中,每个的候选层被选择用于包括在一个子模型中。在任一情况下,子模型可以被认为是继承父模型结构并且附加地包括一个或多个被选择的候选层的模型。
方法100继续至框110处,其中子模型被训练。在一些情况下,通过重用来自父模型的学习参数,子模型被训练,如下详述。在这些情况下,子模型可以被认为从父模型中初始地继承了学习参数,但是在子模型的训练期间这些学习参数可以会被进一步调整。
方法100继续至框112处,其中根据一个或多个标准经训练的子模型被评估。通常,标准可涉及在给定任务中模型的性能,例如准确度和/或其他因素,例如训练子模型的计算成本。
方法100继续至框114处,其中基于框112处的评估个体子模型被指定为新的父模型。该新的父模型被添加到父模型池。
方法100继续至判定框116处,其中判定是否已经达到停止条件。停止条件可以定义要使用的计算资源的指定量(例如,以GPU天计的预算)、指定性能标准(如阈值准确度)、指定时间量等。
如果没有达到停止条件,方法继续至框104处,其中框104-116的后续迭代可以被执行。通常上讲,框104-116可以被考虑为迭代模型生长过程,其可以被重复多次迭代直到达到停止条件。
如果达到停止条件,方法继续至框118处,其中最终模型被输出。例如,根据一个或多个标准(例如上文关于框112的讨论),最终模型可以从所有子模型中被选择。
在许多情况下,方法100被执行以生成良好适合特定应用的模型。例如,在面部识别场景中,训练数据可以包括图片的标签示例,指示是否面部被包括在图片中以及面部在图像中的位置。在场景分割的示例中,训练数据可以包括已经被分割到预先确定地片段中的视频的标签示例。通过迭代化地生成新的子模型并针对特定任务的训练数据集来评估它们,方法100可以输出在该特定任务上性能良好的最终模型。
候选层生成
图2示出了父模型210和候选层220。以下描述了如何从父模型结构中得到候选层的示例。注意图2表示一种用于从给定父模型生成多个候选层的方法,而不是父模型和候选层的单一实例,如下详述。
图2中,父模型的元素以实线显示,候选层的元素以虚线显示。在此情形中,父模型包括模型输入211,层212、213、214和215,以及模型输出216。父模型也可以包括一个或多个未示出的其他层(通过图2省略号表示)。通常,模型输入可以包括被模型处理的特征,例如原始图像、视频、声音、和/或文本数据。输出可以表示模型的计算结果,例如图像中的面部标识、分割的视频、转录的声音、文本的语义表示等。
在该示例中,候选层包括个体操作221、222和223以及聚合操作224。通常,个体操作221、223、和223可以包括卷积、池化等,如本文进一步讨论。聚合操作224可以包括操纵单个操作的输出以符合将从聚合操作接收输出的父模型的目标层,例如层215。例如,聚合操作可以拼接个体操作的输出并将它们转为与目标层输入匹配的形式或形状。
如上所述,方法100的框106可以被用于生成候选层。生成候选层可以包括从父模型选择一个或多个输入层,选择父模型的一个或多个目标层以接收候选层的输出,并选择将由候选层对输入执行的一个或多个操作。此外,生成候选层也包括选择操作的操作参数,例如卷积大小、卷积步长、池化窗口等。
在该示例中,可能候选层的搜索空间可以被定义如下。在父模型中,令x
用于形成候选层x
例如,操作组可以被预定义。具体的操作示例包括卷积、池化和标识操作。每个操作类型可拥有不同的操作参数。例如卷积操作可以有指定的内核尺寸参数——1x1、3x3、5x5、7x7等。卷积也可以包括过滤器大小参数,例如16、32、或64过滤器等,步长参数、填充参数等。池化操作可以包括最大和平均池化操作,并可以被应用在根据窗口大小参数变化的窗口上。通常,在本文中,这些参数被称为“操作参数”以区分于通过模型训练获取的“学习参数”,如权重和偏差值。生成候选层可以包括确定地或随机地选择不同的操作和/或不同的操作参数。
在一些实施方式中,可分隔卷积可以被应用两次。每个操作的输出可以通过聚合操作224被拼接在一起,并且之后使用1x1的卷积,被投影为与目标层x
一些实施方式可以限制候选层的连接以减少搜索空间。在给定的父模型的i深度处,有i-1个可能较早层且较早层的任何子集可以被选择为对候选层的输入。因此,对候选层的输入选择是指数级的。因此一些实施方式会通过仅学习可重复的细胞模块并部署细胞到手动设计的骨架宏观结构中来限制输入选项。在这些实施方式中,细胞模块的层可以只从同一细胞的其他层以及从先前最近的两个细胞的输出获取输入。另一些实施方式不限于任何特定骨架或连接性布置,并可以允许在随模型生长而变化的骨模型的任意层中的稀疏跳过连接。
方法100的框106可以包括针对该方法的每次迭代使用上述方法来生成一个或多个候选层。在一些情况下,模型结构可以包括数千或数百万的不同层,这些层以任何数量的不同组合被连接,因此,从单次迭代中从单个父模型生成的可能候选层的数量可能会很大。以下讨论了可以减少独立训练可能的子模型结构的整个空间的计算负担的一些方法。
候选层初始化
如上所注意到的,方法100的框106也可以包括初始化候选层。通常上,候选层初始化可用于多个目的。首先初始化候选层的参数允许子模型从初始化开始被训练,而不是重新开始。换而言之,当最终训练发生于方法100的框110时,子模型已经被部分训练。其次,候选层初始化可提供关于候选层的信息,这样当省略其他层时,候选层可以被选择性地添加到父模型中,如下详述。
图3图示了针对实施方式的示例性初始化操作,其中通过初始地阻止候选层影响父模型210,候选层220被训练。为了这样做,利用停止-梯度操作(sg),操作221、222和223可以被可以被增强,该停止-梯度操作(sg)被应用于每个操作相应输入。sg(x)前向传播时为x且后向传播时为零。在后向传播中,梯度针对每层被计算以调整模型的学习参数。sg操作阻止梯度影响在父模型的任何一个之前的层中的任何一个学习参数。
在输出被提供给目标层215之前,一个停止-前进(sf)操作302可以被应用于聚合操作的输出224。此处在前向传播中sf(x)为零,且为标识功能在后向传播中。这允许在不影响目标层的情况下在初始化中候选层220接收梯度信息。因此,在初始化中,候选层可以积累关于目标层的损失梯度,而不实际影响由目标层输出的值或任何后续输出。
因此,在候选层初始化时,父模型的学习参数可以保持稳定,同时确定用于候选层的学习参数的初始化的值。在一些情况下,在相同迭代中生成的不同的候选层可以共享边。在这种情况下,共享边的权重可以针对每个候选层被初始化和/或独立地训练。可选地,初始化和/或训练可以被执行,使得不同候选层共享它们共同具有的边的权重。例如,在初始化和/或共享边的训练过程中,前向传播和后向传播操作可以被共享,并被其他不被候选层共享的边独立执行。通过在给定的候选层和/或子模型中的边的共享初始化和/或训练,计算成本将被显著节省。
剪枝候选层
在一些情况下,方法100的框108可以涉及选择所有的生成于框106的候选层以包括在子模型中,用于后续训练和评估。当为这种情形时,方法100仍可以提供关于之前技术的显著优点,因为只有一些子模型被指定为在框114中的父模型。因此,每次迭代的子模型来源于已知好的父模型。当生长新的子模型时,这种方法允许搜索空间的显著部分被省略。
然而,取决于可能的操作、操作参数、以及考虑的连接类型,任何给定的迭代中可能的候选层的数量在可以是非常巨大的。从而给定父模型的可能中间子模型的数量也是非常巨大的。作为进一步减少新子模型的训练的计算负担的微调,在训练框110中的子模型之前,一些实施方式可以过滤掉一些特定候选层。这可以进一步减少如上所述的在每次迭代中需要被训练和评估的子模型的空间。
一种减少用于训练的子模型数量的方法是对在方法100的框108中可能的候选层进行随机采样,这样更少子模型需要被训练。在其他一些实施方式中,框108可以包含使用候选层的初始化参数以确定哪个候选层应该被合并到子模型中以训练。考虑到一种场景,其中多个候选层共享到一个或多个输入层和一个给定父模型的目标层的连接,还要执行不同操作。对于通过不同操作输入和/或输出的候选层的边,不同的权重可以被初始化。这些初始化的权重可以被用于选择一些候选层以包括在子模型中用于进一步训练。其他候选层可以被剪枝掉,这样具有这些候选层的子模型不会被训练,因此节省了额外的训练时间。
图4图示了用于使用初始化的参数以剪枝掉不太可能有用的候选层的技术。特别地,图4示出了一种场景,其中通过从父模型210得到聚合候选层402,多个操作可以被初始化到一起。通常聚合候选层402表示多个候选层,每个候选层共享到父模型的连接,但执行不同操作。如下详述,图4提供了针对如下方式的备选:添加所有的候选层到父模型以获取子模型,或随机选择候选层。注意,为简洁起见,图4省略了图2和图3中示出的层212。
一种特别的用于剪枝候选层的算法如下。对于每个输入x
经训练之后,聚合候选层402可以包括针对连接不同操作的边的不同权重。因此,该聚合候选层可以被设计为多个已初始化的候选层,其具有针对连接不同操作的边的不同权重集。这些权重可以是对特征选择技术的输入,以选择一个或多个该候选层在子模型中使用,并同样地剪枝一个或多个候选层,使得它们不会被在子模型中被使用。该特征选择过程在图4中通过选择操作406来表示。注意,与如图3所讨论的方式相似,图4也示出了利用停止-前进操作408和停止-梯度操作410、412。
一种实现选择操作406中的稀疏特征选择的方法为,在该线性权重上线性地组合选择o
其中λ
回想一下,在一些实施方式中
从一个角度来看,以上讨论的实施方式采用了特征选择和学习参数共享以初始化候选层的组合数,并选择它们一个子集以包括到子模型中用于进一步训练。该方法可以偏向于选择有可能提高模型性能的候选层,偏向不选择那些不太可能提高模型性能的候选层。因此,更少的总子模型需要作为可能的父模型而被训练,并且经训练的子模型更可能产生具有所需性能的后代。
子模型训练
在初始化后,在该子模型中,给定的子模型可以包括从父模型继承的学习参数和用于所有候选层的初始化参数。如上所述,方法100的框110可以包括作为一个整体来训练子模型,例如,候选层可与余下的父模型一起被训练。这可以被视为“热启动”技术,其中子模型在训练开始时已经初始化候选层参数并继承父模型参数,当作为整体训练给定的子模型时,这两者都可以被进一步修改。
图5示出了用于训练子模型的示例方法。在图5中,对输入的停止-梯度操作可以被移除。此外,停止-前进操作可以被标量乘数502取代。该标量是可训练的并可以被初始化为0。因此,紧接着初始化之后,子模型表示和父模型相同的功能。相应地,子模型拥有与父模型不同的结构,但父模型的功能会被保留。之后子模型会从父模型和初始化的候选参数的组合开始被训练,因为标量乘数会随时间改变,并且所增加的候选层开始缓慢对目标层和该模型的后续输出有贡献。这种方法可以避免候选层使从父模型继承的学习参数不稳定,考虑到父模型已经被完全训练了,这种方法可能接近最优解。
注意到,一些实施方式可能会省略图3示出的sg和sf操作,相反,当候选层正在被训练时立即允许候选层影响父模型。使用如图3所示的sf-sg作为候选层的前缀和后缀可以使候选层更快收敛。然而,这涉及在初始化期间为候选制定附加目标。
在另一方面,允许值在父模型和候选层之间自由地流动可以使新的候选层直接对拟合最终损失有贡献。然而相比于父模型,用于候选层的初始值可能离最优值太过遥远,并且这会不利地影响父模型的参数。解决该问题的一种替代方案为,使用远小于用于训练父模型的学习率来用于初始化候选层(为原始的0.1-0.02倍)。
评估并指定子模型为父模型
如上所述,一些子模型被添加到在方法110的框114的父模型池中。一种用于确定子模型添加到父模型池包括,使用一个或多个标准以预测哪个子模型在后续的迭代中更可能产生优于已知模型的后代。通常上,标准可以如下考虑因素,例如给定子模型的损失、训练给定的子模型的计算工作。在模型验证中,较高的损失意味着较低的准确度,且较高的成本意味着在训练数据集的较长的训练时间。表现出相对较低损失和较低训练工作的子模型可以倾向于被包含在父模型池中。
选择用于父池的子模型的一个具体方法如图6所示。该图示出了针对各种经训练的模型的示例散点图600。对于每个完成训练的子模型,训练该子模型的计算成本可以被计算和标记在x轴602上。此外,该子模型的损失可以被计算和标记在y轴604上。一旦所有用于给定迭代的模型都被标出,下凸包606可以从绘制值被计算。注意,计算成本可以被计算为反映在标准硬件(例如GPU的特定模型)上训练模型的时间量的值,如GPU天。在其他实施方式中,计算成本反映测试时间成本,例如,包含使用给定的模型以进行预测的操作数、而不考虑训练特定值(例如训练期数和/或在训练中的数据增强)。该计算成本可以被规范化为0-1之间的数,如图6所示。
下凸包606可以被用作判定给定子模型是否添加到父模型池的机制。例如,使用以下特定算法定义的概率,在下凸包的子模型可以被添加到父模型池中。如果m
通常,下凸包是帕累托边界的子集,且因此另一种方法为选择子模型在帕累托边界上用于包括在父池中。针对选择子模型以添加到父模型中,这两种方法可提供良好表现。一种用于观察下凸包和/或帕累托边界的方法如下。通过向另一下凸包或帕累托边界模型转移,在没有降低其他标准的情况下,在下凸包或帕累托边界给定的模型不能就一个标准被改进。
注意,相同的模型可能有不同的验证误差,因为形成随机梯度的随机性。作为结果,下凸包或帕累托边界可用乘法带宽放宽。因此,在同一计算成本内,子模型的验证误差在(1+γ)乘以下凸包验证误差以内,该子模型可以被考虑为其在下凸包上并被选择为父亲。一些实施方式可设置γ=0.025。这种方法允许特定的子模型接近于下凸包,虽然不严格位于,仍可以被指定为父模型。
其他方法也可以被用于允许子模型被选为父模型,这些子模型位于预定的下凸包附近。例如,一些实施方式可定义距下凸包的门槛距离,并允许门槛距离内的子模型被选为父模型。这仅是基于一个或多个标准,可用于选择一个或多个子模型作为父模型的子集多种方法之一。
图6将已经完成训练的模型示出为黑点。为解释目的,假设图6表示N次迭代后的散点图600的状态。在下凸包606上或接近下凸包606的子模型中的一个或多个子模型可以被选择为用于后续第N+1次迭代的父模型,其中附加候选层可以被添加和初始化,以形成进一步的子模型,如上所述。
图7示出了在N+1次迭代后的随后状态的散点图600。图7中使用方块示出了在N+1次迭代期间训练的子模型。一个新的下凸包702可以被计算。之前的下凸包606用虚线表示以说明在N+1次迭代中下凸包的向下移动。
再次,一个或多个在下凸包中或附近的子模型可以被选择用于后续迭代N+2。在迭代N+2次期间训练的子模型如图8所示。一个新的下凸包802可以被计算,并且先前的下凸包606和702以虚线所示以说明它们相对于下凸包802的位置。
一种查看如图6-图8所示方法的方法是贪心方法,其寻找高效节约的预测。注意,这是一种多目标方法,即考虑训练/验证的计算成本,也考虑模型准确性。可选的实施方式可以使用不同和/或另外的标准,例如,三个或更多个标准的多维图、在一个或多个标准上定义的目标函数等。
上述方法通常使用随机化方法来使网络生长。然而相对于单纯地在计算上不可行的随机方法,本方法由预测性的标准指引,其倾向于使用已知的好模型作为进一步修改的基础。如前所注意到的,重新训练一个模型计算强度大。例如,训练数据集可能包括百万个训练项目,且在收敛前,给定的模型需要经过若干个训练期而被训练。一个训练期可以包括针对训练数据集中的每个数据项进行贯穿整个模型的一次前向传播和一次后向传播操作。
上述方法提供了用于自动化模型生成的各种传统方法的优点。注意不是每个子模型都被用于派生出用于后续训练的候选层。相反,通过使用与下凸包一起出现作为新的父模型的子模型的子集,本公开实施方式利用继承已知好模型的父模型结构的子模型来开始每次新的迭代。这允许后续迭代在训练模型没有占据搜索空间的显著部分且远离下凸包情况下开始,并可以节省大量训练时间。此外,通过使用不仅包括准确度还有训练成本作为选择哪个子模型作为新的父模型的标准,本公开的实施方式不支持更计算密集的新模型的生成。相反,本方法不仅减少了这些模型,也减少了由此得到出的子模型的用于训练的训练时间。
此外,回想一下可以被执行在子模型上的候选层初始化,这些子模型不仅继承了父模型的结构还有父模型的学习参数。因此,新候选层的参数可以被快速初始化为合理值。此外,这允许用于“热启动”子模型的训练为一个整体。相对于重新训练每个子模型,这可加速收敛,例如通过要求更少的训练期或训练采样。
此外,回想一下在两个可以被一起初始化和训练的子模型间的共享的边。考虑到子模型从父模型的共享池中得到,共享边的可能性是非常高的。因此,相对于针对每个子模型每条共享边被单独初始化和训练的备选方案,可以节省大量的训练时间。
回想一下之前用于机器学习模型的自动化生成的技术承受了计算上不可行的训练负担,或只在非常受限的搜索空间中考虑模型。总之,上述益处实现了从相对不受约束的搜索空间中的大量、准确机器学习模型的自动化生成,而且没有添加过度计算负担到用于生成模型的计算资源。
示例处理流程
图9提供了用于递增地生长模型结构的处理流程900的高层概览图。该处理流程图示了父模型池是如何迭代地生长的。该处理流程是用于向工作进程(例如虚拟机)指派某些任务的方法的示例。例如,该处理流程可以适合于分布式系统或服务器群,其中当工作进程变得可用时,管理程序或操作系统随时间调度新的任务。
在阶段910,确定父模型池912。例如,一些情形下,人工或自动化技术可以选择一个或多个针对池的模型基于已知的模型性能。为简化,在初始化时,假设池包括单个模型914。
在阶段920,从父模型初始化候选层。例如,图9显示了候选层922、924、926。如上所述,每个候选层可以被添加到父模型池912中。候选层被添加到候选层队列928。当给定工作进程变得空闲时,该工作进程可以从候选层队列中拉出候选层,并按本文所述方法初始化该候选层,例如,通过执行训练的若干次初始迭代。
一旦被初始化,候选层的子集可以被选择以包括在子模型队列932中用于在阶段930中的训练。空闲工作进程可以从子模型队列中拉出给定的子模型用于在阶段930中的训练。图9示出了阶段930中的一个这样的子模型934,其包括候选层924,但不包括候选层922或926。这表示候选层922和/或926已在先前阶段920已经被剪除,按照在上述特征选择实施方式中所讨论的。
如前所述,子模型不是必须从头开始被训练,而是当初始化那些被添加到子模型的候选层时,可以从父模型的学习参数和在阶段920预定的初始化参数开始被训练。此外,注意,如上所述,作为更大的一个模型的一部分,多个子模型可以被共同地训练。
在阶段930,来自子模型队列的一些子模型可以被添加到父模型池912中,如箭头936所示。如上所述,可以基于各种标准来选择被添加到父模型池的子模型。例如,一些实施方式可在验证数据集上评估经训练的子模型,并确定每个子模型的相应损失,该损失可以被用作将子模型添加到父模型池的标准。可选地和/或附加地,训练给定子模型的计算成本可以被用于确定是否该模型被添加到父模型池中。其他方法可以基于计算开销和关于添加的期望值所计算的投影,利用添加子模型到父模型池中的净期望值的形式计算。一旦父模型池已经被更新,处理可返回到阶段910用于后续迭代。
示例系统
本公开实施方式可以被执行在各种设备的各种场景中。图10示出了在其中本公开实施方式被应用的示例系统100,如下详述。
如图10所示,系统1000包括通过一个或多个网络1050连接的客户端设备1010、服务器1020、服务器1030、客户端设备1040。注意客户端设备既可以实现为诸如智能手机或平板计算机的移动设备,也可以实现为诸如台式计算机、服务器设备等的固定设备。同样地,服务器可用各种类型的计算设备来实现。在一些情况下,图10所示的任何设备,特别是服务器,可以在数据中心、服务器群等中被实现。
图10中所示的装置的某些组件在本文中可由括号内的附图标记表示。出于以下描述的目的,带括号中(1)指示客户端设备1010上给定组件的出现,(2)指示服务器1020上给定组件的出现,(3)指示服务器1030上的出现,以及(4)指示客户端设备1040上的出现。除非标识给定组件的特定实例,本公开一般不使用括号来指代组件。
通常设备1010、1020、1030和/或1040可以具有相应的处理资源1001和存储资源1002,如下详述。设备还可以各种模块,这些模块可以使用该处理资源和该存储资源以执行在本公开所述的技术。存储资源可以包括永久存储资源(如磁性或固态驱动器)和易失性存储(如一个或多个随机存取存储器设备)。在一些情况下,该模块被提供为可执行指令,该可执行指令可以被储存在永久存储设备上、被加载到随机存取存储器设备中、并通过处理资源被从随机存取存储器读取以执行。
客户端设备1010可以包括配置模块1011,其可以与服务器1020上的模型生成模块1021交互。通常上,配置模块可向模型生成模块提供一些的配置参数。该模型生成模块使用这些配置参数来执行如本公开所述的模型生成功能。特别地,模型生成模块可以基于配置参数来执行方法100。如上所述,迭代模型生长过程可以包括修改父模型以获取获得子模型,至少基于在候选层的初始化过程中的学习权重选择候选层以包括在子模型中,以及输出从子模型中选择的最终模型。模型生成模块可以包括用于方法100的每个框的各种子模块(未示出)。
模型生成模块1021可以将最终模型输出到服务器1030。响应于所接收的输入,模型执行模块1031可以执行所述最终模型。例如,客户端设备1040上的记录模块1041可以记录诸如图像或语音之类的数据以供最终模型处理,并且本地应用1042可以将所记录的数据上传到服务器1030以供处理。模型执行模块可以使用最终模型处理上传的数据,并将模型输出提供给本地应用以进一步处理。
示例图形界面
如上所述,客户端设备1010上的配置模块1011可以向模型生成模块1021提供初始配置参数。模型生成模块1021可以根据配置模块提供的配置参数执行方法100。图11示出了示例配置图形用户界面(“GUI”)1100,其可以在客户端设备1010上呈现,以供用户定义这些配置参数。
父模型元件1101允许用户指定哪种类型的初始父模型应被用于开始模型生长过程。在图11中,示出了用户已经选择了默认父模型。例如,模型生成模块1021可以提供默认神经网络结构以用作通用初始父模型。其它选项可以包括随机生成的模型,其中模块生成模块选择随机模型结构以用作初始父模型。另一个选项是用户导航到已知为特定任务提供相对良好性能的现有模型。在这种情况下,配置模块1011可以上传指定的模型到模型生成模块以用作初始父模型。
操作单元1102允许用户通过模型生成模块1021指定哪种类型的操作被考虑。例如,该模型生成模块可以提供各种用于列举操作组的选项,列举的操作用于选择候选层。第一选项,组1,可以定义两个操作,单个卷积操作(5x5)和单个池操作(如最大池)。第二个选项,组2,可以定义总共四个可能的操作:两个卷积操作(如5x5和7x7)和两个池操作(平均池和最大池)。第三个选项,组3,可以定义总共七个可能的操作:1x1、3x3、5x5、和7x7卷积,平均和最大池、恒等操作。所列举的操作还可以具有预定的或可选择的操作参数,例如,可调整的窗口大小、步长等。
预算输入单元1103允许用户指定用于模型生成的计算预算。例如,用户可以指定10000个GPU天的预算,并且模型生成模块1021可以使用该预算作为方法100的判定框116处的停止条件。备选实施方式可以使用其他度量作为计算预算,如处理操作的数量、虚拟机的数量、时间量等。
标准1元素1104允许用户指定用于评估模型的第一标准,标准2元素1105允许用户指定第二标准。在图11中,如上所述,这些标准分别表示为计算成本和损失。然而,用户可能希望指定其他标准,如模型结构的总体大小、连接的数量、模型的可学习参数的总数等。对于资源受限的应用,例如在移动设备或物联网(IoT)设备上运行模型,以字节为单位的模型大小可以是重要的标准,因为这些设备倾向于具有有限的存储和/或存储容量。另外,在这些情况下,执行模型的计算时间也可是有用的标准,因为这些设备可能具有受限的处理能力,当给定模型花费过长时间来执行时,这可能导致用户察觉到延迟。
注意,图11所示的配置参数仅仅是示例性的,各种其他实施方式可以被考虑。例如,在某些情况下,用户可以指定连接性参数。例如,用户可以指定候选层从指定数目的先前层或变化的(如随机)数目的先前层接收输入。另一示例,用户可以指定是否允许跳过连接,例如,其中一层可不向紧随其后的层提供输入,而是跳过该紧随其后的层并连接另一随后层。用户还可以指定一个密网架构,其中每一层都连接到该模型中的所有先前层。
也应注意到一些实施方式可以提供一个或多个GUI以显示方法100的进展。例如,一些实施方式可以以类似于图6-图8所示的方式生成GUI,该GUI示出了在模型增长的不同迭代中改变的散点图600。其他实施方式可以显示个体模型和/或候选层在它们被生成时的图形表示。
示例应用
本公开所述技术可用于各种应用而不受限制。但是,为说明起见,以下给出一些具体示例。
作为第一示例,假设实体希望运营一款应用,该应用在用户的照片集中对所有朋友加标签。该应用可能有预先存在的用于该目的模型,且该模型可通过服务器1030的模型执行模块1031对照片执行,该照片由客户端设备1040上的本地应用1042所提供。然而该实体可能感觉到预先存在的模型不够准确,并且在一些情况下可能给出不令人满意的用户体验。
首先,该实体可上传预先存在的模型到服务器1020上的模型生成模块1021,并按如上所述可配置各种初始参数。接着,模型生成模块可以迭代地生长预先存在的模型直到达到停止条件,并向服务器1030输出最终模型。服务器1030可以用接收到的最终模型替代初始模型,并继续如前所述标记用户照片。
作为一个备选例,客户端设备可以通过最终模型将录好的音频数据用于语音转录。作为另一可选例,客户端设备可以通过最终模型将第一语言的文本翻译为第二语言。作为附加示例,最终模型可对视频执行场景分割,对图片或视频进行对象检测(例如识别面部、汽车等),对文本进行语法评估等。
在另一示例中,最终模型可以被用于将文档和和查询映射到语义向量中。在这种情况下,服务器1030可以提供搜索引擎功能,该功能使用索引文档与接收到的查询之间的向量距离以对客户端设备1040的用户的搜索结果进行排序。更一般地,最终模型可以执行训练数据可用的任何合适的任务,包括但不限于分类、机器翻译和模式识别任务。
同样,一些实施方式可以允许实体提供用于训练、验证和/测试的数据集。例如,第一实体可以从客户端设备1010发送数据集至控制服务器1020的第二实体。第二实体可以使用由第一实体提供的数据集来生成最终模型。在一些情况下,第二实体可以向第一实体提供最终模型,例如,用于第一实体在服务器1030上执行。在一些情况下,第二实体可不提供模型本身,而是允许第一实体调用该模型。在这种情况下,第二实体可以控制服务器1020和服务器1030,和/或在同一设备上实现模型生成和模型执行二者。
此外,注意,本公开所用术语“最终模型”仅意味着给定的子模型被指定用于应用的实际使用。在一些实施方式中,由实体输出和使用的最终模型也可以被用作用于本公开所述的模型生长过程的后续迭代的初始父模型。在一些情况下,实体在使用给定的最终模型的过程中会获取新数据,并且该新数据可以用作用于该过程的后续迭代的训练/验证/测试数据。这可以导致输出新的最终模型,在更新的数据被获取前,该新的最终模型之后可以被使用一段时间,并且在给定实体所针对的给定实际应用的寿命期间内,该过程可持续重复。
此外,注意到本公开公开的实施方式聚焦于将候选层添加到模型结构的示例。然而,在一些情况下,可以使用其他类型的候选组件以代替层。通常,候选组件可以使用任何类型的数学和/或逻辑功能来实现,其范围从简单的算术或布尔运算符到更复杂的可训练模块。
设备实施方式
参照图10所注意到的,系统1000包括若干个设备,包括客户端设备1010、服务器1020、服务器1030、客户端设备1040。也应注意到,并非所有设备实现都可以被示出,并且根据以上和以下的描述,其他设备实现对于本领域技术人员是明显的。
本公开使用的术语“设备”、“计算机”、“计算设备”、“客户端设备”、以及或“服务器设备”可以指具有一定量的硬件处理能力和/或硬件存储/记忆能力的任何类型的设备。处理能力可以由一个或多个硬件处理器(如,硬件处理单元/核)来提供,这些硬件处理器可以计算机可读指令的形式来执行数据以提供功能。计算机可读指令和/或数据可以被存储在存储装置上,如存储装置/存储器和/或数据存储装置中。这里使用的术语“系统”可以指单个设备、多个设备等。
存储资源可以在它们所关联的相应设备的内部或外部。存储资源可以包括任何易失性或非易失性存储器、硬盘驱动器、闪存设备和/或光存储设备(如,光盘、CD、DVD等)中的一个或多个。本公开所用的术语“计算机可读介质”可以包括信号。相反,术语“计算机可读存储介质”不包括信号。计算机可读存储介质包括“计算机可读存储设备”。计算机可读存储设备的示例包括易失性存储介质(如RAM)和非易失性存储介质(例如硬盘驱动器、光盘和闪存等)。
在一些情况下,设备配置有通用硬件处理器和存储资源。在其他情况下,设备可以包括片上系统(SOC)类型设计。在SOC设计实施方式中,由装置提供的功能可集成在单个SOC或多个耦合的SOC上。一个或多个相关联的处理器可以被配置为与共享资源(如存储器、存储装置等)和/或一个或多个专用资源(如被配置为执行特定功能的硬件块)协调。因此,本公开使用的术语“处理器”还可以指中央处理单元(CPU)、图形处理单元(GPU)、控制器、微控制器、处理器核、或适合于在传统计算架构以及SOC设计中实现的其他类型处理设备。
备选地或附加地,本公开所描述的功能可有一个或多个硬件逻辑组件执行或部分执行。例如但不限于,可以被使用的硬件逻辑组件的示例性类型包括现场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、片上系统(SOC)、复杂可编程逻辑器件(CPLD)等。
在一些配置中,本公开所述的任一模块/代码中可以被实施于软件、硬件和/或固件中。在任何情况下,模块/代码可以被提供于在设备的生产过程中或准备向终端用户出售的中间过程中。在其他情况下,终端用户可稍后安装这些模块/代码,如通过下载可执行代码并在相应设备上安装该可执行代码。
注意,设备通常可有输入和/或输出功能。例如,计算设备可有各种输入机制,如键盘、鼠标、触控板、语音识别、手势识别(使用深度照相机,如立体或飞行时间相机系统、红外相机系统,RGB相机或使用加速计/陀螺仪、面部识别等)。设备还可以具有各种输出机制,例如打印机、监视器等。
也应注意到,本公开所述设备可以单独或协作的方式实施所述技术。例如,本公开所述的方法或功能可以被执行在单个计算设备上和/或分布在通过网络1050通信的多个计算设备上。非限制性地,网络1050可以包括一个或多个局域网(LAN),广域网(WAN),因特网等。
附加示例
以上描述了各种设备示例。附加示例如下所述。一个示例包括在计算设备上执行的方法,该方法包括执行迭代模型生长的两次或更多次迭代。该迭代模型生长过程包括从一个或多个父模型构成的父模型池中,选择特定父模型,生成多个候选层,并且当重用特定父模型的学习参数时初始化多个候选层。迭代模型生长过程也可以包括选择特定候选层以包括在子模型中用于训练,对应的子模型可以包括特定父模型和特定候选层的一个或多个候选层。该迭代模型生长过程也可以包括训练多个子模型以获取经训练的子模型,使用一个或多个标准评估经训练的子模型,并至少基于评估来指定个体经训练的子模型为新的父模型,并添加新的父模型到父模型池中。该方法可以包括在两次或更多次迭代后,选择至少一个经训练的子模型作为最终模型,并输出该最终模型。
另一示例可以包括上述和/或下述任一示例,其中该方法还包括当评估经训练的子模型时,确定训练或测试该子模型的计算成本,并使用该计算成本作为第一标准。
另一示例可以包括上述和/或下述任一示例,其中该方法还包括当评估经训练的子模型时,确定与经训练的子模型相关联的损失,并使用该损失作为第二标准。
另一示例可以包括上述和/或下述任一示例,其中该方法还包括绘制子模型在图上,该图具有反映计算成本的第一轴和反映损失的第二轴,以及至少基于新的父模型在图上的对应位置,选择新的父模型。
另一示例可以包括上述和/或下述任一示例,其中该方法还包括在图上确定至少一个下凸包或帕累托边界,并至少基于新的父模型与下凸包或帕累托边界的接近度,选择新的父模型。
另一示例可以包括上述和/或下述任一示例,其中选择包括标识经训练的子模型的子集,该经训练的子模型的子集在下凸包或帕累托边界的预定邻近区内,确定经训练的子模型的子集的各个概率,并至少基于各个概率,选择新的父模型。
另一示例可以包括上述和/或下述任一示例,生成个体候选层包括从特定父模型选择目标层以接收个体候选层的输出,从特定父模型选择一个或多个输入层以提供对个体候选层的输入,并在选择由个体候选层对输入执行的特定操作。
另一示例可以包括上述和/或下述任一示例,其中选择特定操作包括定义操作组,并从该操作组随机选择特定操作。
另一示例可以包括上述和/或下述任一示例,其中方法还包括随机从特定父模型中选择目标层和至少一个输入层。
另一示例可以包括上述和/或下述任一示例,其中最终模型是神经网络。
另一示例包括一个系统,该系统包括硬件处理单元和存储计算机可读指令的存储资源,该计算机可读指令当被硬件处理单元执行时使硬件处理单元执行迭代模型生长过程,该迭代模型生长过程包含修改父模型以获取子模型。该迭代模型生长过程可以包括至少基于在候选层的初始化过程中的学习权重选择候选层以包括在子模型中。该计算机可读指令还可使硬件处理单元也输出从子模型中选择的最终模型。
另一示例可以包括上述和/或下述任一示例,其中计算机可读指令当被硬件处理单元执行时使硬件处理单元生成不同的候选层,该候选层与父模型共享连接性并执行不同操作,并将不同候选层初始化到一起以获取不同候选层的不同权重。
另一示例可以包括上述和/或下述任一示例,其中当被硬件处理单元执行时,计算机可读指令使硬件处理单元至少基于不同候选层的不同权重,选择个体候选层用于包含在子模型中。
另一示例可以包括上述和/或下述任一示例,其中当被硬件处理单元执行时,计算机可读指令使硬件处理单元在不同候选层的不同权重上执行特征选择技术以选择个体候选层用于包含在子模型中。
另一示例可以包括上述和/或下述任一示例,其中特征选择技术包括最小绝对收缩和选择算子(LASSO)。
另一示例可以包括上述和/或下述任一示例,其中不同操作包括卷积操作和池操作。
另一示例可以包括上述和/或下述任一示例,其中当被硬件处理单元执行时,计算机可读指令使硬件处理单元使用用于至少一个分类、机器翻译、或模式识别任务的训练数据训练最终模型,并提供用于执行的最终模型,最终模型适用于执行至少一个分类、机器翻译、或模式识别任务。
另一示例包括存储指令的计算机可读存储介质,当被处理设备执行时,指令使处理设备执行包括迭代模型生长过程的两次或更多次迭代的动作。该迭代模型生长过程可以包括:从一个或多个父模型的父模型池中选择一个特定子模型,初始化多个候选层,选择多个子模型用于训练,各个子模型继承特定父模型的结构并包括至少一个候选层,训练多个子模型以获取经训练的子模型,并至少部分基于一个或多个标准,指定单独一个经训练的子模型为新的父模型,并添加新的父模型到父模型池中。该动作还包括在两次或更多次迭代后,选择至少一个经训练的子模型为最终模型,并输出该最终模型。
另一示例可以包括上述和/或下述任一示例,其中该动作还包括同时地初始化多个候选层以获取初始化的参数并至少基于初始化的参数,选择个体候选层以包括在单独子模型中。
另一示例可以包括上述和/或下述任一示例,其中该动作还包括从列举操作组中随机地选择操作以包括在多个候选层中。
结论
虽然本公开主题被以结构特征和/或方法动作的专用语言描述,但是应当理解,所附权利要求中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实施本权利要求的示例形式而公开的,并且本领域技术人员将认识到的其他特征和动作旨在落入权利要求的范围内。
- 机器学习模型的自动化生成
- 一种代码生成的机器学习模型全流程自动部署方法及系统