数据处理与深度学习
上QQ阅读APP看书,第一时间看更新

1.1 基于类别树的深度学习模型

深度学习模型通过输入数据和输出数据对深度学习模型进行训练[1,2]。传统的深度学习模型当输入项数和输出类别数过多时,就会导致输入数据及输出数据的量过大,从而使得深度学习模型的结构过于复杂;深度学习模型在训练时计算量过于庞大,甚至无法收敛,从而影响训练的质量,进而导致应用时的准确度降低。

综上所述,传统的深度学习模型当输入项数和输出类别数过多时准确度较低。

本节研究并给出了一种新的基于类别树的深度学习方法和神经网络系统,通过多级深度学习模型逐层训练和逐层应用,降低了输入项数和输出类别数,从而降低了各级深度学习模型的结构复杂性及训练和应用难度,降低了深度学习模型的计算复杂度,同时提高了深度学习模型的准确率。

1.1.1 基于类别树的深度学习方法

1. 基于类别树深度学习的基本方法

图1-1提供了一种基于类别树的深度学习方法,可包括以下步骤。

图1-1 基于类别树的深度学习方法流程图

(1)步骤S1,获取训练数据中输出数据对应的类别树。其中,获取类别树的方式可以是自动构建。

例如,一个技术方案的类别树如图1-2所示。输出数据包括但不限于输出标签。当训练数据中输出数据包括输出标签“猪”“狗”“草”“树”“藻”“男人”“女人”时,这些输出数据对应图1-2中类别树的叶子节点。例如,类别树中生物类别对应的训练数据中输出标签为“生物”;类别树中动物类别对应的训练数据中输出标签为“动物”。

在自动构建类别树时,可以对训练数据中的输出数据进行语义分析,获得对应的类别树。具体步骤为:①获取输出标签集合,将输出标签集合中每个输出标签作为一个叶子节点;②从标签分类知识库中获取输出标签集合中每个输出标签所属的父类标签;③将属于同一个父类标签的各输出标签作为该父类标签的子类,并将该父类标签作为属于该父类标签的各输出标签的父节点;④将父类标签加入输出标签集合,将属于该父类标签的各输出标签从输出标签集合中删去,并返回步骤③,直至输出标签集合中只剩一个输出标签;⑤将剩余的输出标签作为类别树的根节点。

图1-2 类别树的示意图

标签分类知识库是事先构建好的。

标签分类知识库中包括输出标签及其所属的父类标签。例如,输出标签“男人”“女人”属于父类标签“人”的子类;输出标签“猪”“狗”属于父类标签“动物”的子类;输出标签“草”“树”“藻”属于父类标签“植物”的子类。

标签分类知识库包括能区分父类标签的所有直接子类标签的特征变量集合。例如,能区分父类标签“植物”的所有直接子类标签“草”“树”“藻”类别的特征变量集合中包括特征变量“高度及颜色及纹理”;能区分父类标签“人”的所有直接子类标签“男人”“女人”类别的特征变量集合中包括特征变量“胸部”“头发”。

可以获取输出标签集合{猪,狗,草,树,藻,男人,女人},将输出标签集合中每个输出标签作为一个叶子节点。

然后,从标签分类知识库中获取输出标签集合{猪,狗,草,树,藻,男人,女人}中每个输出标签所属的父类标签,“男人”“女人”属于“人”的子类;“猪”“狗”属于“动物”的子类;“草”“树”“藻”属于“植物”的子类。

将该父类标签“人”作为属于该父类标签的各输出标签“男人”“女人”的父节点,将该父类标签“人”加入输出标签集合,将属于该父类标签的各输出标签“男人”“女人”从输出标签集合中删去;将该父类标签“动物”作为属于该父类标签的各输出标签“猪”“狗”的父节点,将该父类标签“动物”加入输出标签集合,将属于该父类标签的各输出标签“猪”“狗”从输出标签集合中删去;将该父类标签“植物”作为属于该父类标签的各输出标签“草”“树”“藻”的父节点,将该父类标签“植物”加入输出标签集合,将属于该父类标签的各输出标签“草”“树”“藻”从输出标签集合中删去。得到新的输出标签集合{动物,植物,人},然后重新从标签分类知识库中获取输出标签集合{动物,植物,人}中每个输出标签所属的父类标签,“动物”“人”属于“动物”的子类;“动物”“植物”属于“生物”的子类。

将该父类标签“动物”作为属于该父类标签的各输出标签“人”的父节点,将该父类标签“动物”加入输出标签集合,将属于该父类标签的各输出标签“人”从输出标签集合中删去,将该父类标签“生物”作为属于该父类标签的各输出标签“动物”“植物”的父节点,将该父类标签“生物”加入输出标签集合,将属于该父类标签的各输出标签“动物”“植物”从输出标签集合中删去。得到新的输出标签集合{生物},此时输出标签集合中只剩下一个输出标签,则将该输出标签{生物}作为类别树的根节点。

(2)步骤S2,根据类别树分别构造各个非叶子节点对应的深度学习模型,深度学习模型以非叶子节点的所有直接子节点类别为输出数据。

具体步骤为:①以根节点为当前节点;②对以当前节点的所有直接子节点类别为输出数据时输出数据的格式为输出格式、以当前节点的所有直接子节点类别对应的输入数据的格式为输入格式对深度学习模型进行初始化,得到当前节点对应的深度学习模型;③分别将当前节点的各个直接子节点作为当前节点,并返回步骤②,直到当前节点为叶子节点为止。

其中,直接子节点指子节点自身,不包括子节点的子节点等更下一级子节点。例如,在图1-2中,节点“生物”的直接子节点为节点“动物”和节点“植物”,节点“动物”的直接子节点为节点“人”、节点“猪”和节点“狗”。

通过分级构造深度学习模型的方式,使得单个深度学习模型的输出数据的类别数量不会过多,从而降低了训练的复杂性,提高了应用时输出的准确度。

仍以图1-2所示的类别树为例,在本步骤中,可以先将“生物”节点为当前节点,当当前节点为“生物”节点时,“生物”节点的所有直接子节点包括“动物”“植物”。对以当前节点“生物”的所有直接子节点类别“动物”“植物”为输出数据时输出数据的格式为输出格式、以当前节点“生物”的所有直接子节点类别“动物”“植物”对应的输入数据的格式为输入格式对深度学习模型进行初始化,得到当前节点“生物”对应的深度学习模型。

(3)步骤S3,获取各个深度学习模型的输出数据对应的训练的输入数据,然后分别将各个深度学习模型的训练的输入数据和对应的输出数据作为对应深度学习模型的输入和预期输出,对深度学习模型进行训练。

具体步骤为:①将以非叶子节点的每个直接子节点对应的类别作为对应深度学习模型的训练数据中的输出数据;②将非叶子节点的每个直接子节点类别对应的样本数据作为非叶子节点对应的深度学习模型的训练数据时的初始输入数据。通过分级使得级别越高(根节点的级别最低)的节点类别对应的训练数据越少,从而提高了训练的针对性,并能降低训练的复杂度。

例如,当前节点为“生物”节点时,“生物”节点的所有直接子节点包括“动物”“植物”。将以非叶子节点“生物”的每个直接子节点“动物”“植物”对应的类别作为对应深度学习模型的训练数据中的输出数据;将非叶子节点“生物”的每个直接子节点“动物”“植物”类别对应的样本数据作为非叶子节点“生物”对应的深度学习模型的训练数据的初始输入数据。此时训练时输入数据是动物图像,对应的预期输出是“动物”标签;训练时输入数据是植物图像,对应的预期输出则是“植物”标签。

或者在本步骤中,可以通过标签分类知识库获取能区分非叶子节点的各个直接子节点类别对应的各个直接子类标签的特征变量集合;非叶子节点对应父类标签;从初始输入数据中抽取特征变量集合对应的输入数据,作为对应深度学习模型的训练时的输入数据。

例如,当前节点为“生物”节点时,“生物”节点的所有直接子节点包括“动物”“植物”。从标签分类知识库中获取能区分当前节点“生物”的所有直接子节点“动物”“植物”类别的特征变量集合为{颜色及纹理},从初始输入数据动物图像和植物图像中抽取特征变量集合{颜色及纹理}对应的输入数据动物图像和植物图像,作为当前节点“生物”的深度学习模型的训练时的输入数据。

若标签分类知识库不包括能区分非叶子节点的各个直接子节点类别对应的各个直接子类标签的特征变量集合,则对属于非叶子节点的不同子节点类别的样本数据中各特征变量的数值进行比较;从各特征变量中选出在不同子节点类别对应的样本数据中数值差异大于预设阈值的特征变量集合,作为能区分当前节点的所有子节点类别的特征变量集合。本技术方案中的差异是指特征变量的数值的差别,例如,“草”头像的特征,包括颜色特征、纹理特征等。

例如,当前节点为“生物”节点时,“生物”节点的所有直接子节点包括“动物”“植物”。对属于当前节点“生物”的所有直接子节点“动物”“植物”类别的输入数据动物图像和植物图像进行比较,从中选出在不同子节点类别“动物”“植物”的样本数据动物图像和植物图像中各特征变量的数值进行比较,从各特征变量中选出在不同子节点类别“动物”“植物”对应的样本数据动物图像和植物图像中数值差异大于预设阈值的特征变量集合为{颜色及纹理},作为能区分当前节点“生物”的所有子节点类别“动物”“植物”的特征变量集合。

在对当前节点对应的深度学习模型进行训练时,先利用训练数据中的输入数据对当前节点对应的深度学习模型进行无监督训练,再利用训练数据中的输入数据和对应的输出数据对当前节点对应的深度学习模型进行有监督训练。

例如,当前节点为“生物”节点时,将当前节点“生物”对应的深度学习模型的训练时的输入数据动物图像和植物图像以及输出数据“动物”标签、“植物”标签分别作为当前节点对应的深度学习模型的输入和预期输出,对当前节点对应的深度学习模型进行训练。或将当前节点“生物”对应的深度学习模型的训练时的输入数据动物图像颜色及纹理和植物图像颜色及纹理和输出数据“动物”标签、“植物”标签分别作为当前节点对应的深度学习模型的输入和预期输出,对当前节点“生物”对应的深度学习模型进行训练。

上述训练过程从根节点开始,以根节点为当前节点,对当前节点对应的深度学习模型进行训练,然后以根节点的各个直接子节点为当前节点,对当前节点对应的深度学习模型进行训练;重复上述过程,直到当前节点为叶子节点为止。

例如,当前节点为“生物”节点时,“生物”节点的所有直接子节点包括“动物”“植物”,分别以当前节点“生物”的每一个直接子节点“动物”“植物”作为当前节点重复上述训练过程,直至当前节点为叶子节点为止。

2. 基于类别树的深度学习的详细方法

在一个技术方案中,训练出深度学习模型之后,本技术方案包括以下步骤:①获取使用时的输入数据;②以根节点作为当前节点,以1作为当前级别,获取当前节点对应的深度学习模型;③获取使用时的输入数据对应于当前节点的深度学习模型的输出数据;④如果深度学习得到的输出数据的类别不是空标签,则继续执行以下两个步骤(如果深度学习得到的输出数据的类别是空标签,则不再执行以下两个步骤):a. 将该类别作为使用时的输入数据在当前级别上所属的类别并输出,并且根据深度学习得到的输出数据的类别从类别树中选择该类别对应的节点;b. 以选择的节点作为当前节点,将当前级别加1,并返回步骤②,直到当前节点为叶子节点为止。

其中,获取使用时的输入数据对应于当前节点的深度学习模型的输出数据的步骤包括:将使用时的输入数据作为当前节点对应的深度学习模型的输入数据,通过深度学习得到输出数据;或者获取能区分当前节点的所有直接子节点类别的输入数据变量集合;将获取的输入数据变量集合对应的输入数据作为当前节点对应的深度学习模型的输入数据,通过深度学习得到输出数据。

使用深度学习得到的输出数据的类别作为使用时的输入数据在当前级别上所属的类别并输出,使用时能够获得多个级别的类别(对应于各级非叶子节点和叶子节点),相对于现有技术使用时只能输出一个级别的类别(对应于叶子节点)而言,输出结果更为丰富。例如,使用时输入数据为图像A在第1级别上所属的类别为“生物”,在第1级别上所属的类别为“生物”,在第2级别上所属的类别为“动物”,在第3级别上所属的类别为“人”,在第4级别上所属的类别为“男人”。

例如,可以获取使用时的输入数据为图像A,初始时以根节点“生物”作为当前节点。当前节点为“生物”节点时,获取当前节点“生物”对应的深度学习模型。

当前节点为“生物”节点时,将输入数据图像A作为当前节点“生物”对应的深度学习模型的输入数据,通过深度学习得到的输出数据“动物”标签或“植物”标签或空标签,如果通过深度学习得到输出数据不是空标签,则将“动物”类别或“植物”类别作为使用时的输入数据图像A在当前级别上所属的类别并输出,并且根据深度学习得到的输出数据的“动物”类别或“植物”类别从类别树中选择该“动物”类别或“植物”类别对应的节点,以选择的“动物”类别或“植物”类别作为当前节点,将当前级别加1。

或者,当前节点为“生物”节点时,获取能区分当前节点的所有直接子节点类别“动物”“植物”的输入数据变量集合{颜色及纹理}对应的输入数据图像A颜色及纹理作为当前节点“生物”对应的深度学习模型的输入数据,通过深度学习得到输出数据“动物”标签或“植物”标签或空标签,如果通过深度学习得到输出数据不是空标签,则将“动物”类别或“植物”类别作为使用时输入数据图像A在当前级别上所属的类别并输出,并且根据深度学习得到的输出数据的“动物”类别或“植物”类别从类别树中选择该“动物”类别或“植物”类别对应的节点,以选择的“动物”类别或“植物”类别作为当前节点,将当前级别加1。

本技术方案根据深度学习得到的输出数据的类别来从类别树中选择该类别对应的节点,然后以该节点为当前节点重复上述深度学习过程,直至当前节点为叶子节点为止。

例如,当当前节点为“生物”节点,深度学习得到的输出数据的类别为“动物”标签时,以类别树中“动物”节点为当前节点重复上述深度学习过程,直至当前节点为叶子节点为止。

深度学习得到的输出数据的类别为“植物”标签时,以类别树中“植物”节点为当前节点重复上述深度学习过程,直至当前节点为叶子节点或深度学习得到的输出数据是空标签为止。

当当前节点为“动物”节点,深度学习得到的输出数据的类别为“人”标签时,以类别树中“人”节点为当前节点重复上述深度学习过程,直至当前节点为叶子节点为止。

深度学习得到的输出数据的类别为“猪”标签时,以类别树中“猪”节点为当前节点,当前节点“猪”为叶子节点,则停止重复上述深度学习过程。

深度学习得到的输出数据是空标签时,停止重复上述深度学习过程。

本技术方案还可以获取使用时输入数据对应的预期输出数据;如果预期输出数据与输入数据经深度学习模型后得到的输出数据不一致,以使用时输入数据和预期输出数据作为训练数据,进一步地对各个深度学习模型进行训练。

例如,获取输入数据图像A在现实中对应的输出数据为“女人”,该输入数据图像A输入深度学习模型后通过深度学习得到的输出数据为“男人”,则以输入数据图像A及真实输出数据“女人”来作为训练数据对现有各深度学习模型采用上述同样方法进行训练。

上述基于类别树的深度学习方法,通过多级深度学习模型逐层训练和逐层应用,降低了输入项数和输出类别数,从而降低了各级深度学习模型的结构复杂性及训练和应用难度,降低了深度学习模型的计算复杂度,提高了深度学习模型的准确率。同时,使用深度学习得到的输出数据的类别作为使用时输入数据在当前级别上所属的类别并输出,能够获得多个级别的类别(对应于各级非叶子节点和叶子节点),相对于现有技术使用时只能输出一个级别的类别(对应于叶子节点)而言,输出结果更为丰富。

1.1.2 基于类别树的深度学习系统

如图1-3所示,本技术还提供一种深度学习系统,可包括:

(1)获取模块1用于获取训练数据中输出数据对应的类别树。

(2)构造模块2用于根据类别树分别构造各个非叶子节点对应的深度学习模型,深度学习模型以非叶子节点的所有直接子节点类别为输出数据。

图1-3 深度学习系统的结构示意图

(3)训练模块3用于获取各个深度学习模型的输出数据对应的训练时输入数据,然后分别将各个深度学习模型的训练时输入数据和对应的输出数据作为对应深度学习模型的输入和预期输出,对深度学习模型进行训练。

上述深度学习系统,通过多级深度学习模型逐层训练和逐层应用,降低了输入项数和输出类别数,从而降低了各级深度学习模型的结构复杂性及训练和应用难度,降低了深度学习模型的计算复杂度,提高了深度学习模型的准确率。同时,使用深度学习得到的输出数据的类别作为使用时输入数据在当前级别上所属的类别并输出,能够获得多个级别的类别(对应于各级非叶子节点和叶子节点),相对于现有技术使用时只能输出一个级别的类别(对应于叶子节点)而言,输出结果更为丰富。