CN108460453B - 一种用于ctc训练的数据处理方法、装置及系统 - Google Patents

一种用于ctc训练的数据处理方法、装置及系统 Download PDF

Info

Publication number
CN108460453B
CN108460453B CN201710093384.XA CN201710093384A CN108460453B CN 108460453 B CN108460453 B CN 108460453B CN 201710093384 A CN201710093384 A CN 201710093384A CN 108460453 B CN108460453 B CN 108460453B
Authority
CN
China
Prior art keywords
matrix
row
training sample
training
elements
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201710093384.XA
Other languages
English (en)
Other versions
CN108460453A (zh
Inventor
王思宇
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Alibaba Group Holding Ltd
Original Assignee
Alibaba Group Holding Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Alibaba Group Holding Ltd filed Critical Alibaba Group Holding Ltd
Priority to CN201710093384.XA priority Critical patent/CN108460453B/zh
Publication of CN108460453A publication Critical patent/CN108460453A/zh
Application granted granted Critical
Publication of CN108460453B publication Critical patent/CN108460453B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/049Temporal neural networks, e.g. delay elements, oscillating neurons or pulsed inputs
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • General Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Machine Translation (AREA)

Abstract

本文公开了一种用于CTC训练的数据处理方法、装置及系统;上述用于CTC训练的数据处理方法,包括:在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据训练样本及其对应的目标文本,计算训练样本的第一矩阵和第二矩阵;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。

Description

一种用于CTC训练的数据处理方法、装置及系统
技术领域
本发明涉及数据处理领域,尤其涉及一种用于CTC(Connectionist TemporalClassification,联结主义时间分类)训练的数据处理方法、装置及系统。
背景技术
CTC(Connectionist Temporal Classification,联结主义时间分类)专门用于序列学习(Sequence Learning),能够利用RNN(Recurrent Nurual Network,循环神经网络)的天然时序结构,直接对目标文本进行学习。其中,序列学习是机器学习中有监督学习的一种类型,主要特征在于学习不固定长度的序列,典型的例子是句子。CTC的主要作用是构造出一种针对序列(sequence)的损失(loss)函数,并在反向传播过程中将梯度回传给上一层。然而,目前的CTC计算过程复杂,对计算资源的利用率不高。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本申请实施例提供一种用于CTC训练的数据处理方法、装置及系统,能够提高CTC训练过程中的数据处理效率。
本申请实施例提供一种用于CTC训练的数据处理方法,包括:
在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
其中,所述数据处理方法还可以包括:给每个训练样本分配多个线程;
所述在计算一行的元素时,并行计算该行中的各个元素,可以包括:
在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
其中,所述给每个训练样本分配多个线程,可以包括:
给每个训练样本分配在图形处理单元(GPU)上运行的多个线程。
其中,所述根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵,可以包括:
确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻上、在所述目标文本上的概率值;
确定经过空白插入处理后得到的目标文本;
根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
其中,所述在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,可以包括:
根据初始化信息确定所述第一矩阵的第一行的各个元素;
从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素;
所述在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,可以包括:
根据初始化信息确定所述第二矩阵的最后一行的各个元素;
从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素。
其中,所述第一矩阵包括的各个元素可以用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素可以用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
本申请实施例还提供一种用于CTC训练的数据处理系统,所述数据处理系统包括:
数据模块,用于提供至少一个训练样本及其对应的目标文本进行一次CTC训练;
CTC模块,用于针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
其中,所述CTC模块,还可以用于给每个训练样本分配多个线程,在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
其中,所述CTC模块,可以用于给每个训练样本分配在GPU上运行的多个线程。
其中,所述CTC模块可以包括:
概率确定单元,用于确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻、在所述目标文本上的概率值;
文本处理单元,用于确定经过空白插入处理后得到的目标文本;
计算单元,用于根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
其中,所述CTC模块可以用于通过以下方式在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素:
根据初始化信息确定所述第一矩阵的第一行的各个元素;
从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素;
所述CTC模块可以用于通过以下方式在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素:
根据初始化信息确定所述第二矩阵的最后一行的各个元素;
从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素。
其中,所述第一矩阵包括的各个元素可以用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素可以用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
其中,所述用于CTC训练的数据处理系统可以应用于Caffe架构。
本申请实施例还提供一种用于CTC训练的数据处理装置,包括:
第一处理单元,用于在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
第二处理单元,用于根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
其中,所述第一处理单元,还可以用于给每个训练样本分配多个线程,以及在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
其中,所述第一处理单元,可以包括:
第一处理子单元,用于确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻上、在所述目标文本上的概率值;
第二处理子单元,用于确定经过空白插入处理后得到的目标文本;
计算子单元,用于根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
本申请实施例还提供一种神经网络的训练方法,包括:
在采用至少一个训练样本及其对应的目标文本进行训练时,
针对每个训练样本,在前向阶段,根据所述训练样本及其对应的目标文本,计算第一矩阵以及损失值;其中,在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,在计算所述第一矩阵的一行的元素时,并行计算该行中的各个元素;
在后向阶段,计算所述训练样本的第二矩阵,并根据所述损失值、第一矩阵以及第二矩阵,计算所述训练样本对应的梯度;其中,在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,在计算所述第二矩阵的一行的元素时,并行计算该行中的各个元素;
根据各个训练样本对应的梯度,确定本次训练的梯度,以更新所述神经网络的参数。
其中,在计算所述第一矩阵或者所述第二矩阵的一行的元素时,可以采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
其中,所述第一矩阵包括的各个元素可以用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素可以用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
本申请实施例还提供一种用于CTC训练的数据处理装置,包括:存储器和处理器,其中,存储器用于存储用于CTC训练的数据处理程序,该用于CTC训练的数据处理程序在被处理器读取执行时,执行以下操作:
在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素,在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述用于CTC训练的数据处理方法。
本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述神经网络的训练方法。
在本申请实施例中,在CTC训练的数据处理过程中,针对每个训练样本,计算得到第一矩阵和第二矩阵后,根据各个训练样本的第一矩阵和第二矩阵计算本次CTC训练的损失值及梯度,其中,在计算第一矩阵和第二矩阵中一行的元素时,并行计算该行中的各个元素。如此,通过对矩阵的一行中元素的并行化计算,提高CTC训练过程中的数据处理效率。
进一步地,利用GPU上运行的线程分别进行第一矩阵和第二矩阵的每行中元素的并行化计算以及训练样本之间的并行化处理,使得CTC训练的数据处理过程充分利用GPU资源,提高了资源利用率,而且能够实现训练样本的批量处理。
进一步地,在Caffe框架下进行CTC训练,并在CTC训练过程中实现数据并行化处理,从而在Caffe框架下实现高效的CTC计算。相较于现有的其他框架,Caffe框架可以采用简单的配置文件对神经网络进行构建,无需用户自己写程序构建神经网络,降低了用户使用门槛,降低了数据处理的出错率。
当然,实施本申请的任一产品不一定需要同时达到以上所有优点。
在阅读并理解了附图和详细描述后,可以明白其他方面。
附图说明
图1为RNN结构的示意图;
图2为单词自动生成的示例图;
图3为图片切片示意图;
图4为图3中被切成两部分的字母A的示意图;
图5为一个典型的利用CTC进行训练的网络结构示意图;
图6为本申请实施例提供的用于CTC训练的数据处理方法的流程图;
图7为本申请实施例中alpha矩阵的计算依赖关系示意图;
图8为本申请实施例中alpha矩阵的并行计算示意图;
图9为本申请实施例中beta矩阵的计算依赖关系示意图;
图10为本申请实施例中beta矩阵的并行计算示意图;
图11为本申请实施例提供的用于CTC训练的数据处理装置的示意图一;
图12为本申请实施例提供的用于CTC训练的数据处理装置的示意图二;
图13为本申请实施例提供的神经网络的训练方法的流程图;
图14为本申请实施例提供的用于CTC训练的数据处理系统的示意图;
图15为本申请实施例中应用于Caffe架构下的神经网络的训练示意图;
图16为本申请实施例中实现在Caffe架构下的神经网络训练的类示意图;
图17为本申请实施例中实现在Caffe架构下的神经网络训练的函数调用时序图;
图18为本申请实施例中的神经网络训练的Forward阶段的示意图;
图19为本申请实施例中的神经网络训练的Backward阶段的示意图。
具体实施方式
以下结合附图对本申请实施例进行详细说明,应当理解,以下所说明的实施例仅用于说明和解释本申请,并不用于限定本申请。
需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。
需要说明的是,如果不冲突,本申请实施例以及实施例中的各个特征可以相互结合,均在本申请的保护范围之内。另外,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
一些实施方式中,执行用于CTC训练的数据处理方法或者神经网络的训练方法的计算设备可包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存(memory)。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。内存可能包括模块1,模块2,……,模块N(N为大于2的整数)。
计算机可读介质包括永久性和非永久性、可移动和非可移动存储介质。存储介质可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM),快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
下面先对RNN(Recurrent Nurual Network,循环神经网络)进行说明。
RNN的主要特征是具有自连接特性,形成一种循环结构;RNN的输出会自连接到输入,因此,可看作是对时间序列任务的重要利器,即上一时刻的输出作为下一时刻的输入。
RNN包含以下三个类别的层:输入层、隐层和输出层。其中,隐层的输出不仅输出到输出层,还会连接到下一个阶段的自己。一个典型的RNN如图1中等号左边的图所示。其中,Xt表示输入层,A表示隐层,ht表示输出层。
在RNN中,上一阶段的输出可以作为下一阶段的输入,因此,RNN可以与时间序列相关。将RNN按照时间序列展开后,可以得到图1中等号右边的图所示的效果。RNN同其他神经网络一样,都是需要训练之后才能产出良好的模型。训练的对象就是图1中每个箭头上的权值。无论是输入层到隐层,隐层到输出层,还是上一时刻的隐层到下一时刻隐层的输入,均是训练的对象。只有在这些权值训练好之后,才能同输入数据一起计算出合适的输出。应该注意的是,在不同时刻之间的对应部分权值是共享的同一份拷贝。比如t1时刻的输入层到隐层的权值和t2时刻的输入层到隐层的权值是共享的。这种结构的优势是:第n时刻的输出以及隐层的隐状态可以受上几个时刻的状态影响。比如在机器翻译时,英语作为源语言,法语作为目标语言,那么当翻译法语的第n个单词时,会受到前面n-1个单词的影响,因此,相比不基于时序的建模,效果会更好。但是RNN会有一个缺陷,就是当时序过长时,较早的状态对当前状态的影响会很小,甚至是会消失。针对此问题,通过LSTM(Long Short-TermMemory,长短时记忆网络)(LSTM为RNN的一种重要变体),解决RNN对长时序建模不敏感的问题。下面通过图2所示的单词自动生成过程,对LSTM进行说明。比如,用户在第一个时间点输入h,该时间点的输出推测是e,于是将e作为下一时刻的输入,继续推测;于是整个hello单词将被推测出来。
比如,想要从一幅带有字符串的图片直接识别出其中的字符串内容,考虑到LSTM的时序性,需要对图片进行切分。假设将一幅带有字符串的图片平均分成n份,那么每一份将不保证包含完整的字符,如图3所示。图3所示的图片带有的字符串内容应该是“Alibaba.com”。如果把切分后的每一个片段按顺序对应到LSTM的输入中,以“Alibaba.com”作为正确结果对其进行训练,那么如果对每一片段的预测结合起来确实能组成Alibaba.com,则就是正确的预测。对于图4中的两个片段来说,如果针对每个片段必须给出一个预测结果,且预测结果的范围包含从A到Z以及空格,那么正确的预测结果应该是“A空格”或“空格A”两种。如果再约定两个相同的预测结果连续出现的话合并成一个,那么“AA”也是一种正确的预测结果,所以应该把这三种预测结果的概率相加作为最终结果“A”的概率。如此一来,对整个“Alibaba.com”的预测具有多种预测路径,这就是CTC的基本原理,即对所有能正确预测到最终结果的概率相加,作为最终的结果概率。
由于神经网络的训练包括前向(Forward)过程和后向(Backward)过程,所以在训练过程中,CTC也同样具有这两个过程。Forward过程是进行预测的过程,Backward过程是根据Forward过程的结果进行反馈调整的过程。整个网络(Net)的Forward过程就是每一个层(layer)依次的Forward过程,Backward过程亦是如此。
一个典型的利用CTC进行训练的网络结构如图5所示。
整个训练的Forward过程的描述如下:数据送入到数据层(Data Layer)中进行数据的Forward过程,并加载到内存或GPU(Graphics Processing Unit,图形处理单元)中;经过RNN(LSTM)的Forward过程得到每一时刻的输出预测值的概率分布;在CTC(作为损失层(loss layer))的Forward过程中,利用在每一时刻的每一个预测值的概率求和并连同正确的结果进行比对,得到损失(loss)值。
整个训练的Backward过程就是根据loss值进行学习的过程,描述如下:将loss值送入到CTC的Backward过程中求梯度;将CTC求得的梯度继续送入到RNN(LSTM)中继续求此层的梯度;Data Layer中的Backward过程是个空过程,因此无需计算;由于只有RNN(LSTM)相关的层具有学习的权值,因此,将此层求得的梯度与当前的权值相加进行更新。
其中,梯度是一个数学概念,它表明了一个方向,在凸优化中,如果某个权值向量按照这个方向行进一步(即相加过程),那么就离最优解进了一步。因此,神经网络的训练就是一步一步走向最优解的过程,目的就是为了使Forward过程计算出来的loss值最小。
本申请实施例提供一种用于CTC训练的数据处理方法,如图6所示,包括:
步骤601:在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据训练样本以及其对应的目标文本,计算训练样本的第一矩阵和第二矩阵;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
步骤602:根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
其中,在进行一次CTC训练的过程中,可以采用一个或多个训练样本,且每个训练样本对应有目标文本。目标文本用于指示训练样本对应的正确结果,即训练样本中的真实文本信息。比如,训练样本可以为带有字符串的图片,目标文本可以为图片中的字符串。当训练样本如图3所示的图片时,目标文本则为“Alibaba.com”。
其中,第一矩阵和第二矩阵为CTC训练过程中进行梯度计算所需的中间变量。在确定第一矩阵和第二矩阵之后,可以根据第一矩阵和第二矩阵,确定损失值及梯度。
其中,可以为每个训练样本计算对应的第一矩阵和第二矩阵,并根据这个训练样本的第一矩阵和第二矩阵得到这个训练样本对应的损失值和梯度。在一次CTC训练过程中采用一个训练样本时,计算得到的该训练样本对应的损失值和梯度即为本次CTC训练的损失值和梯度;在一次CTC训练过程中采用多个训练样本时,可以先确定各个训练样本对应的损失值和梯度,然后根据各个训练样本对应的损失值和梯度,确定本次CTC训练的损失值和梯度,比如,可以将各个训练样本的损失值相加求平均得到本次CTC训练确定的损失值,将各个训练样本的梯度相加得到本次CTC训练确定的梯度。
其中,本实施例提供的用于CTC训练的数据处理方法可以应用于图5所示的神经网络的训练过程。比如,在确定本次CTC训练的梯度之后,可以将梯度传送给LSTM,以便于计算LSTM的梯度,再根据LSTM的梯度计算结果进行神经网络的权值向量更新,以训练得到神经网络的最优权重向量。
一些实现方式中,本实施例的数据处理方法还可以包括:给每个训练样本分配多个线程;
在计算一行的元素时,并行计算该行中的各个元素,包括:
在计算一行的元素时,采用分配给训练样本的多个线程并行计算该行中的各个元素。
其中,第一矩阵和第二矩阵可以先后进行计算,在计算第一矩阵或者第二矩阵的过程中,每一行的元素可以采用多线程进行并行计算;或者,第一矩阵和第二矩阵可以同时进行计算,在计算第一矩阵和第二矩阵的过程中,每一行的元素采用多线程进行并行计算。如此,提高数据处理效率。
其中,给每个训练样本分配多个线程,可以包括:
给每个训练样本分配在图形处理单元(GPU)上运行的多个线程。
其中,GPU常用于高性能计算,具有高并发处理数据的特性。在GPU中,多个线程可以组成线程块(block),多个线程块可以组成线程网格(grid),因此,在本实施例中,可以给每个训练样本分配一个线程块,以满足每个训练样本的矩阵中每行各个元素的并行化计算;可以给批量训练样本(包括多个训练样本)分配一个线程网络,以满足训练样本之间的并行化计算。本实施例中,通过采用GPU的多个线程实现并行计算,可以充分利用GPU的计算资源。
一些实现方式中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,可以包括:
根据初始化信息确定第一矩阵的第一行的各个元素;
从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素;
在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,可以包括:
根据初始化信息确定第二矩阵的最后一行的各个元素;
从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素。
换言之,第一矩阵的第N行元素的计算依赖于第N-1行的元素,因此,利用多个线程分别计算第N-1行的各个元素,并在第N-1行的所有线程完成计算之前,不能进行第N行的计算。第二矩阵的第N行元素的计算依赖于第N+1行的元素,因此,利用多个线程分别计算第N+1行的各个元素,并在第N+1行的所有线程完成计算之前,不能进行第N行的计算。
一些实现方式中,根据训练样本及其对应的目标文本,计算训练样本的第一矩阵和第二矩阵,可以包括:
确定训练样本的概率向量,其中,概率向量包括训练样本在每个时刻上、在目标文本上的概率值;
确定经过空白插入处理后得到的目标文本;
根据处理后的目标文件以及确定的概率向量,计算训练样本的第一矩阵和第二矩阵。
下面对第一矩阵(即alpha矩阵)、第二矩阵(即beta矩阵)以及梯度的计算公式进行详细说明。其中,采用粗体字母(比如,x)表示向量,采用非粗体字母(比如,x)表示标量。
假设一条训练样本x在每个时刻在label(比如,该训练样本所对应的目标文本中的每个字)上的概率向量为y,概率向量的长度为T,则该训练样本所对应的label向量(对应前述的目标文本)为l,其长度为|l|,对l插入空白后得到的新label向量记为l’,其长度为|l’|=2|l|+1。
需要说明的是,对label向量插入空白的处理包括:在label向量中任意两个相邻的label之间插入空白标识(blank),并在label向量的开始和结束也插入空白标识。据此,可以确定对l插入空白后得到的新label向量的长度|l’|=2|l|+1。
Figure BDA0001229606460000141
表示为在向量p中,在t时刻时k的概率。令b为插入的空白(blank)。
令αt(s)表示从1时刻开始,截止到t时刻时,恰好能翻译出序列l′s的概率;其中,l′s为l’的一个合法前缀,s是一个位置指示标识,用于标记l’中一个合法前缀尾部的位置(即l′s的结束位置);l’的一个合法前缀是指l’的一个子序列,且这个子序列必须从l’的第一个位置开始。
Figure BDA0001229606460000142
其中,
Figure BDA0001229606460000143
并且初始状态为,
Figure BDA0001229606460000144
Figure BDA0001229606460000145
Figure BDA0001229606460000146
若用动态规划求解上述的动态方程,则可以把αt(s)看成是某个矩阵的第t行第s个元素,这个矩阵被称为alpha矩阵(即前述的第一矩阵)。
图7表示alpha矩阵中计算的依赖关系,其中,第t行的某个值只和第t-1行的两个或三个值有关。
一些实现方式中,在GPU中可以为一个训练样例分配多个线程,这些线程并行完成alpha矩阵第t行的所有元素的计算,并且在该行所有元素被计算出来之前,不得开始第t+1行的计算。比如,如图8所示,第t行的所有元素计算出来之后,在第t+1行可以采用线程0至线程4并行计算该行的各个元素,且第t+1行中各个元素的计算依赖于第t行中一个或多个元素。
在alpha矩阵的所有元素计算出来之后,可以根据下式计算训练样本x的loss值:
P(l|x)=αT(|l′|)+αT(|l′|-1).
Loss=-p(l|x)
令βt(s)表示在t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率。
Figure BDA0001229606460000151
其中,
Figure BDA0001229606460000152
并且初始状态为,
Figure BDA0001229606460000153
Figure BDA0001229606460000154
Figure BDA0001229606460000155
若用动态规划求解上述的动态方程,则可以把βt(s)看成是某个矩阵的第t行第s个元素,这个矩阵被称为beta矩阵(即前述的第二矩阵)。
图9表示beta矩阵中的计算依赖关系,其中,第t行的某个值只和第t+1行的两或三个值有关。
一些实现方式中,在GPU中可以为一个训练样例分配多个线程,这些线程并行完成beta矩阵第t+1行的所有元素的计算,并且在该行所有元素被计算出来之前,不得开始第t行的计算。如图10所示,第t+1行的所有元素计算出来之后,在第t行可以采用线程0至线程4并行计算该行的各个元素,且第t行中各个元素的计算依赖于第t+1行中一个或多个元素。
在计算alpha矩阵和beta矩阵的所有元素之后,可以根据下式计算梯度:
Figure BDA0001229606460000161
其中,
Figure BDA0001229606460000162
Figure BDA0001229606460000163
lab(l,k)={S:l′s=k}
一些实现方式中,针对每个训练样本,在计算alpha矩阵之前,会用多个线程对单个训练样本所对应的label序列(即前述的目标文本、label向量)插入空白(blanks),得到新label序列;而且,在计算alpha矩阵和beta矩阵时,需要多次访问新label序列,因此,可以利用多线程将新label序列一次性加载(load)进GPU的共享内存(shared memory)中。其中,在给单个训练样本分配GPU上运行的一个线程块(block)时,通过此线程块内的多线程执行该训练样本所对应的label序列的空白插入操作以及载入内存操作。其中,共享内存是GPU中的一种存储器,特点在于一个block中所有的线程均能访问到共享内存,不同block之间不能跨越访问,并且对于shared memory的存取时间消耗可以忽略不计。
综上可知,CTC训练的计算核心在于计算alpha矩阵和beta矩阵。根据alpha矩阵的计算式可以看出在计算alpha矩阵的第t行中的元素时仅依赖于第t-1行的元素,因此,可以利用多个线程分别计算第t行的每个元素,并且在第t-1行所有线程计算完成之前,不能进行第t行的计算,对于beta矩阵的并行计算方式也是同理。而且,针对每个训练样本,均计算一个alpha矩阵和beta矩阵,因此,可以为每个训练样本分配若干个线程进行并行计算。在本实施例中,可以给每个训练样本分配运行在GPU上的一个线程块(block),对于批量训练的情况,可以给批量训练样本分配运行在GPU上的一个线程网格(grid)。如此,本实施例在CTC训练的计算过程中利用alpha矩阵和beta矩阵所对应的动态方程的特点,充分使用GPU资源,实现并行化计算,并且支持批量训练。
本申请实施例还提供一种用于CTC训练的数据处理装置,如图11所示,包括:
第一处理单元111,用于在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据训练样本及对其应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
第二处理单元112,用于根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
其中,第一处理单元111,还可以用于给每个训练样本分配多个线程,以及在计算一行的元素时,采用分配给训练样本的多个线程并行计算该行中的各个元素。其中,可以给每个训练样本分配在GPU上运行的多个线程。
如图12所示,第一处理单元111可以包括:
第一处理子单元1111,用于确定训练样本的概率向量,其中,概率向量包括训练样本在每个时刻上、在目标文本上的概率值;
第二处理子单元1112,用于确定经过空白插入处理后得到的目标文本;
计算子单元1113,用于根据处理后的目标文本以及确定的概率向量,计算训练样本的第一矩阵和第二矩阵。
其中,计算子单元1113可以在计算第一矩阵时,通过以下方式按照行数从小到大的顺序依次计算第一矩阵中每一行的元素:
根据初始化信息确定第一矩阵的第一行的各个元素;
从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素;
计算子单元1113可以在计算第二矩阵时,通过以下方式按照行数从大到小的顺序依次计算第二矩阵中每一行的元素:
根据初始化信息确定第二矩阵的最后一行的各个元素;
从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素。
此外,关于本实施例提供的数据处理装置的详细处理流程、第一矩阵和第二矩阵的具体说明可以参照上述方法实施例的描述,故于此不再赘述。
本申请实施例还提供一种神经网络的训练方法,如图13所示,本实施例提供的神经网络的训练方法包括:在采用至少一个训练样本及其对应的目标文本进行训练时,
步骤131:针对每个训练样本,在前向阶段,根据训练样本及其对应的目标文本,计算第一矩阵以及损失值;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第一矩阵的一行的元素时,并行计算该行中的各个元素;
步骤132:在后向阶段,计算训练样本的第二矩阵,并根据损失值、第一矩阵以及第二矩阵计算训练样本对应的梯度;其中,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算第二矩阵的一行的元素时,并行计算该行中的各个元素;
步骤133:根据各个训练样本对应的梯度,确定本次训练的梯度,以更新神经网络的参数。
其中,在计算第一矩阵或者第二矩阵的一行的元素时,可以采用分配给训练样本的多个线程并行计算该行中的各个元素。一些实现方式中,可以采用分配给训练样本的、在GPU上运行的多个线程并行计算该行中的各个元素。
其中,在步骤133中,可以将各个训练样本的损失值相加求平均得到本次训练确定的损失值,将各个训练样本的梯度相加得到本次训练确定的梯度,并根据本次训练确定的梯度,更新神经网络的参数(比如,权重向量)。
关于本实施例中的第一矩阵、第二矩阵的具体说明及计算过程可以参照上述数据处理方法的实施例描述,故于此不再赘述。
本申请实施例还提供一种用于CTC训练的数据处理系统,如图14所示,包括:
数据模块141,用于提供至少一个训练样本及其对应的目标文本进行一次CTC训练;
CTC模块142,用于针对每个训练样本,根据训练样本及其对应的目标文本,计算训练样本的第一矩阵和第二矩阵;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
一些实现方式中,CTC模块142,还可以用于给每个训练样本分配多个线程,在计算一行的元素时,采用分配给训练样本的多个线程并行计算该行中的各个元素。
其中,CTC模块142可以用于给每个训练样本分配在GPU上运行的多个线程。
一些实现方式中,CTC模块142可以包括:
概率确定单元1421,用于确定训练样本的概率向量,其中,概率向量包括训练样本在每个时刻、在目标文本上的概率值;
文本处理单元1422,用于确定经过空白插入处理后得到的目标文本;
计算单元1423,用于根据处理后的目标文本以及确定的概率向量,计算训练样本的第一矩阵和第二矩阵。
一些实现方式中,CTC模块142可以用于通过以下方式在计算所述第一矩阵时,按照行数从小到大的顺序依次计算所述第一矩阵中每一行的元素:
根据初始化信息确定所述第一矩阵的第一行的各个元素;
从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素;
CTC模块142可以用于通过以下方式在计算所述第二矩阵时,按照行数从大到小的顺序依次计算所述第二矩阵中每一行的元素:
根据初始化信息确定所述第二矩阵的最后一行的各个元素;
从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素。
本实施例提供的用于CTC训练的数据处理系统可以应用于Caffe架构。目前,在流行的深度学习平台中,只有Torch、Theano、Tensorflow框架支持了CTC建模,而Caffe深度学习平台对于CTC建模是不支持的,所以Caffe用户无法在Caffe深度学习平台上使用CTC建模。上述Torch、Theano、Tensorflow框架中,从数据预处理到训练模型的整个过程都需要用户自己写程序,通过程序构建神经网络,虽然已经对神经网络的每个层和函数进行了一定程度的封装,但是使用门槛比Caffe框架要高很多。而且,由于Tensorflow、Theano、Torch框架下的CTC受限于各个框架的特点,因此,无法迁移到Caffe框架中进行使用。
下面以Caffe架构为例说明上述数据处理系统的具体实现。
在实际应用中,在Caffe架构下,CTC模块142的功能可以由CTC层结合softmax层作为Softmax With CTC Loss层实现。在Caffe框架下,为每个layer(层)会严格区分Forward(前向)阶段和Backward(后向)阶段,因此,当实现一个layer时,必须实现该layer的Forward和Backward函数。在本实施例中,将计算alpha矩阵(对应前述的第一矩阵)阶段的计算作为Forward阶段并同时产出loss(损失)值,将计算beta矩阵(对应前述的第二矩阵)阶段的计算作为Backward阶段,并产生梯度。
下面参照图15说明在Caffe架构下的神经网络训练过程。图15绘示针对一个训练样本的处理过程。其中,{x(1),x(2),x(3),…,x(t)}表示训练样本x;{l(1),l(2),l(3),…,l(u)}为一串文本,表示训练样本x所对应的目标文本。其中,u表示位置信息,比如,l(u)表示文本串中第u个字。
如图15所示,本实施例提供的神经网络训练过程包括如下步骤:
将训练样本x按照第一维度为时间序列(time step),第二维度为样本数量(minibatch),第三维度为具体的数据帧(data frame)的格式准备好并输入到LSTM层中进行Forward计算,同时将目标文本(即label序列l)按照第一维度为时间序列(time step),第二维度为样本数量(minibatch),第三维度为具体的label ID的格式准备好并直接送入到Softmax With CTC Loss层中;需要说明的是,label ID指label序列中每个字符对应的标识,其中,在词库存储字符和ID的对应关系;
经过LSTM层的Forward计算后,将Forward计算之后的数据({a(1),a(2),a(3),…,a(t)})送入Softmax With CTC Loss层中,在Softmax With CTC Loss层中首先进行Softmax层的计算,得到每个时刻上、每个训练样本在每一种可能的label上的概率值(即前述的概率向量);
对送入Softmax With CTC Loss层的label序列进行处理,其中,处理方法为:在每个训练样本对应的label序列中的任意两个相邻的label之间插入空白标识(blank),并且在每个训练样本对应的label序列的开始和结束也插入空白标识(blank);因此,假设某个训练样本对应的label序列有L个label,那么插入空白后得到的新label序列的长度为S=2×L+1;
利用插入空白后得到的新label和经过softmax层得出的概率向量{b(1),b(2),b(3),…,b(t)},计算alpha矩阵并得到loss值,计算beta矩阵并得到梯度,自此完成CTC计算过程;需要说明的是,alpha矩阵和beta矩阵的计算方式参照前述的数据处理方法实施例的描述,故于此不再赘述;
然后,将CTC计算出来的梯度回传给LSTM层进行反向传播,得到LSTM层的梯度;再根据LSTM层的梯度更新LSTM层的参数。
对于Caffe框架来说,每个layer都是一个具体的实现类,因此,可以将所有的layer都抽象成了几大类。本实施例的类图可以如图16所示。SoftmaxWithCTCLossLayer本质上是一个计算损失的层,因此,可以继承Loss Layer。而且,SoftmaxWithCTCLossLayer在计算alpha矩阵和beta矩阵时需要用到softmax层,因此,SoftmaxLayer可以成为SoftmaxWithCTCLossLayer的一个成员,关系为组合。而NVIDIA提供的CuDNN库是一个针对softmax计算的加速库,所以令CuDNNSoftmaxLayer继承自SoftmaxLayer,如此,当用户使用CuDNN库时,可以切换到CuDNNSoftmaxLayer来进行计算。
在计算过程中,需要为此次训练的每个训练样本缓存alpha矩阵和beta矩阵,因此,在类成员中必须为alpha、beta两个矩阵分配空间,本实施例使用多维数据结构二进制大对象(Blob,binary large object)组成的向量(vector)作为其类型。由于每个训练样本对应的alpha矩阵和beta矩阵需要用Blob来存储,而批量训练时,需要为每个训练样本都分配这样的两个Blob,所以可以使用vector数组。SoftmaxWithCTCLossLayer实现的具体Forward和Backward过程的计算步骤可以分为以下四步:
第一步,根据上一层传递进来的数据,对每个训练样本在每个时刻上对每一种可能的label计算概率值;需要注意的是,由于数据存在三个维度,因此需要对softmax指定计算的维度,其中,在Caffe框架下,维度的坐标(即axis)是以0开始的,因此,这里的axis应该指定为2,即第三维度;
第二步,为参与此次批量计算的训练样本所对应的label序列添加空白标识(blanks);
第三步,根据新的label序列和softmax计算出来的概率向量,对每个训练样本计算alpha矩阵,并得到loss值;
第四步,计算beta矩阵,并得出梯度。
根据Caffe架构对Forward和Backward阶段的划分,本实施例可以将前三步设定为Forward阶段,最后一步设定为Backward阶段。
下面参照图17,说明函数之间的调用关系。从图17可以看出,SoftmaxWithCTCLossLayer的Forward函数主要先后调用SoftmaxLayer的Forward函数、自己的ComputeAlpha函数(用于计算alpha矩阵)、ComputeForwardLoss函数(用于计算损失值)。Backward函数先后调用了ComputeBeta函数(用于计算beta矩阵)和ComputeGradient函数(用于计算梯度)。这里,ComputeAlpha函数、ComputeForwardLoss函数、ComputeBeta函数以及ComputeGradient函数都是调用了GPU上的kernel(内核)程序。其中,ComputeAlpha函数和ComputeBeta函数的计算流程可以参照前述的数据处理方法实施例的描述,故于此不再赘述。
如图18所示,本实施例中SoftmaxWithCTCLossLayer的Forward阶段描述如下:针对一个训练样本,先进行softmax层的Forward过程;采用多线程对该训练样本所对应的label序列插入空白标识(blanks);由于计算alpha矩阵时,需要多次访问到新label序列,因此,在使用前利用多线程将新label序列一次性载入到GPU的共享内存(shared memory)中;然后,使用任一线程(比如线程0)初始化alpha矩阵的第一行,然后从第二行开始的每一行,采用多个线程(比如,线程0至线程n,n为大于0的正整数)并行计算该行的各个元素;在完成alpha矩阵的所有元素的计算之后,计算该训练样本对应的损失值。需要说明的是,在多线程处理过程中,每次线程处理完成一项计算之后均需要在多个线程同步之后,再进行下一项计算,从而确保每行中各个元素计算的并行化。
如图19所示,本实施例中SoftmaxWithCTCLossLayer的Backward阶段描述如下:针对一个训练样本,由于计算beta矩阵时,需要多次访问到新label序列,因此,在使用前利用多线程将新label序列一次性载入到GPU的共享内存(shared memory)中;然后,使用任一线程(比如线程0)初始化beta矩阵的最后一行,然后从倒数第二行开始的每一行,采用多个线程(比如,线程0至线程n,n为大于0的正整数)并行计算该行的各个元素;在完成beta矩阵的所有元素的计算之后,根据alpha矩阵和beta矩阵计算该训练样本对应的梯度。需要说明的是,在多线程处理过程中,每次线程处理完成一项计算之后均需要在多个线程同步之后,再进行下一项计算,从而确保每行中各个元素计算的并行化。
其中,根据前述的梯度计算公式可知,在计算梯度时,需要计算以下式子:
Figure BDA0001229606460000231
需要注意的是,在处理上述式子时,可以单独开辟存储空间来记录k出现的位置,也可以将原有的label排序,使相同的字母相邻放置,这样再通过查询每个字母的原有位置的地图(map)即可完成k的位置统计。其中,排序工作可由GPU的thrust提供的函数实现。
另外,需要注意的是,在实际中进行CTC计算时,为了防止数值溢出并减小计算所带来的开销,可以把αt(s)和βt(S)的乘法取对数进行计算,所以在编写代码时,两者的乘法计算可以改成对数的加法。然而,本申请对此并不限定。
此外,本申请实施例还提供一种用于CTC训练的数据处理装置,包括:存储器以及处理器,其中,存储器用于存储用于CTC训练的数据处理程序,该用于CTC训练的数据处理程序在被处理器读取执行时,执行以下操作:
在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据训练样本及其对应的目标文本,计算训练样本的第一矩阵和第二矩阵;其中,在计算第一矩阵时,按照行数从小到大的顺序依次计算第一矩阵中每一行的元素,在计算第二矩阵时,按照行数从大到小的顺序依次计算第二矩阵中每一行的元素,在计算一行的元素时,并行计算该行中的各个元素;
根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
本实施例中,用于CTC训练的数据处理程序在被处理器读取执行时,所执行的操作对应于数据处理方法的实施例中的步骤101至步骤102;该程序所执行的操作的其它细节可参见上述的数据处理方法的实施例的描述,故于此不再赘述。
此外,本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述用于CTC训练的数据处理方法。
此外,本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现上述神经网络的训练方法。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本申请不限制于任何特定形式的硬件和软件的结合。
以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。

Claims (20)

1.一种用于联结主义时间分类CTC训练的数据处理方法,其特征在于,包括:
在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素,在计算所述第二矩阵时,从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素,在计算一行的元素时,并行计算该行中的各个元素;
根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
2.根据权利要求1所述的数据处理方法,其特征在于,所述数据处理方法还包括:给每个训练样本分配多个线程;
所述在计算一行的元素时,并行计算该行中的各个元素,包括:
在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
3.根据权利要求2所述的数据处理方法,其特征在于,所述给每个训练样本分配多个线程,包括:
给每个训练样本分配在图形处理单元GPU上运行的多个线程。
4.根据权利要求1所述的数据处理方法,其特征在于,所述根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵,包括:
确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻上、在所述目标文本上的概率值;
确定经过空白插入处理后得到的目标文本;
根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
5.根据权利要求1所述的数据处理方法,其特征在于,所述在计算所述第一矩阵时,根据初始化信息确定所述第一矩阵的第一行的各个元素;
所述在计算所述第二矩阵时,根据初始化信息确定所述第二矩阵的最后一行的各个元素。
6.根据权利要求1至5任一项所述的数据处理方法,其特征在于,所述第一矩阵包括的各个元素用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
7.一种用于联结主义时间分类CTC训练的数据处理系统,其特征在于,所述数据处理系统包括:
数据模块,用于提供至少一个训练样本及其对应的目标文本进行一次CTC训练;
CTC模块,用于针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素,在计算所述第二矩阵时,从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素,在计算一行的元素时,并行计算该行中的各个元素;根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
8.根据权利要求7所述的数据处理系统,其特征在于,所述CTC模块,还用于给每个训练样本分配多个线程,在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
9.根据权利要求8所述的数据处理系统,其特征在于,所述CTC模块,用于给每个训练样本分配在图形处理单元GPU上运行的多个线程。
10.根据权利要求7所述的数据处理系统,其特征在于,所述CTC模块包括:
概率确定单元,用于确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻、在所述目标文本上的概率值;
文本处理单元,用于确定经过空白插入处理后得到的目标文本;
计算单元,用于根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
11.根据权利要求7所述的数据处理系统,其特征在于,所述CTC模块在计算所述第一矩阵时,根据初始化信息确定所述第一矩阵的第一行的各个元素;
所述CTC模块在计算所述第二矩阵时,根据初始化信息确定所述第二矩阵的最后一行的各个元素。
12.根据权利要求7所述的数据处理系统,其特征在于,所述第一矩阵包括的各个元素用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
13.根据权利要求7至12任一项所述的数据处理系统,其特征在于,所述用于CTC训练的数据处理系统应用于Caffe架构。
14.一种用于联结主义时间分类CTC训练的数据处理装置,其特征在于,包括:
第一处理单元,用于在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素,在计算所述第二矩阵时,从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素,在计算一行的元素时,并行计算该行中的各个元素;
第二处理单元,用于根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
15.根据权利要求14所述的数据处理装置,其特征在于,所述第一处理单元,还用于给每个训练样本分配多个线程,以及在计算一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
16.根据权利要求14所述的数据处理装置,其特征在于,所述第一处理单元,包括:
第一处理子单元,用于确定所述训练样本的概率向量,其中,所述概率向量包括所述训练样本在每个时刻上、在所述目标文本上的概率值;
第二处理子单元,用于确定经过空白插入处理后得到的目标文本;
计算子单元,用于根据处理后的目标文本以及确定的概率向量,计算所述训练样本的第一矩阵和第二矩阵。
17.一种神经网络的训练方法,其特征在于,包括:
在采用至少一个训练样本及其对应的目标文本进行训练时,
针对每个训练样本,在前向阶段,根据所述训练样本及其对应的目标文本,计算第一矩阵以及损失值;其中,在计算所述第一矩阵时,从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素,在计算所述第一矩阵的一行的元素时,并行计算该行中的各个元素;
在后向阶段,计算所述训练样本的第二矩阵,并根据所述损失值、第一矩阵以及第二矩阵,计算所述训练样本对应的梯度;其中,在计算所述第二矩阵时,从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素,在计算所述第二矩阵的一行的元素时,并行计算该行中的各个元素;
根据各个训练样本对应的梯度,确定本次训练的梯度,以更新所述神经网络的参数。
18.根据权利要求17所述的训练方法,其特征在于,在计算所述第一矩阵或者所述第二矩阵的一行的元素时,采用分配给所述训练样本的多个线程并行计算该行中的各个元素。
19.根据权利要求17或18所述的训练方法,其特征在于,所述第一矩阵包括的各个元素用于表示从第一时刻到第t时刻时,能够正确翻译出序列l’s的概率;其中,l’s指l’的一个子序列,且这个子序列从l’的第一个位置开始,s为位置指示标识,用于标记l’中l’s的结束位置;l’为训练样本对应的目标文本进行空白插入后得到的序列;
所述第二矩阵包括的各个元素用于表示在第t时刻时,能够正确翻译出从s到l’结尾组成的子序列的概率;
其中,t为大于1且小于或等于T的整数,T表示所述训练样本的概率向量的长度。
20.一种用于联结主义时间分类CTC训练的数据处理装置,其特征在于,包括:存储器和处理器,其中,存储器用于存储用于CTC训练的数据处理程序,该用于CTC训练的数据处理程序在被处理器读取执行时,执行以下操作:
在采用至少一个训练样本及其对应的目标文本进行一次CTC训练时,针对每个训练样本,根据所述训练样本及其对应的目标文本,计算所述训练样本的第一矩阵和第二矩阵;其中,在计算所述第一矩阵时,从第二行起的每一行,根据上一行中的一个或多个元素,确定该行的各个元素,在计算所述第二矩阵时,从倒数第二行起的每一行,根据下一行中的一个或多个元素,确定该行的各个元素,在计算一行的元素时,并行计算该行中的各个元素;
根据各个训练样本的第一矩阵以及第二矩阵,确定本次CTC训练的损失值以及梯度。
CN201710093384.XA 2017-02-21 2017-02-21 一种用于ctc训练的数据处理方法、装置及系统 Active CN108460453B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710093384.XA CN108460453B (zh) 2017-02-21 2017-02-21 一种用于ctc训练的数据处理方法、装置及系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710093384.XA CN108460453B (zh) 2017-02-21 2017-02-21 一种用于ctc训练的数据处理方法、装置及系统

Publications (2)

Publication Number Publication Date
CN108460453A CN108460453A (zh) 2018-08-28
CN108460453B true CN108460453B (zh) 2022-05-17

Family

ID=63229161

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710093384.XA Active CN108460453B (zh) 2017-02-21 2017-02-21 一种用于ctc训练的数据处理方法、装置及系统

Country Status (1)

Country Link
CN (1) CN108460453B (zh)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2020062303A1 (zh) * 2018-09-30 2020-04-02 华为技术有限公司 训练神经网络的方法和装置
CN110210480B (zh) * 2019-06-05 2021-08-10 北京旷视科技有限公司 文字识别方法、装置、电子设备和计算机可读存储介质

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105849804A (zh) * 2013-12-23 2016-08-10 美国亚德诺半导体公司 过滤噪声的计算高效方法
CN105930916A (zh) * 2016-04-07 2016-09-07 大连理工大学 一种基于并行模块化神经网络的副产煤气实时预测方法
CN106062786A (zh) * 2014-09-12 2016-10-26 微软技术许可有限责任公司 用于训练神经网络的计算系统

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6684201B1 (en) * 2000-03-31 2004-01-27 Microsoft Corporation Linguistic disambiguation system and method using string-based pattern training to learn to resolve ambiguity sites
CN102214320A (zh) * 2010-04-12 2011-10-12 宋威 神经网络训练方法及采用该方法的垃圾邮件过滤方法
CN102663415B (zh) * 2012-03-19 2014-03-05 华中科技大学 基于gpu的条件随机场模型的数据分类方法
CN103674244B (zh) * 2013-07-05 2015-10-21 北京师范大学 一种基于gpu的快速反卷积二维光纤光谱抽取方法
CN104793997B (zh) * 2014-01-17 2018-06-26 华为技术有限公司 一种数据处理装置及方法
US20180040155A1 (en) * 2015-02-10 2018-02-08 Thomson Licensing Cache friendly jittered hemispherical sampling
CN106033332B (zh) * 2015-03-10 2019-07-26 阿里巴巴集团控股有限公司 一种数据处理方法及设备
CN105893354A (zh) * 2016-05-03 2016-08-24 成都数联铭品科技有限公司 一种基于双向递归神经网络的分词方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN105849804A (zh) * 2013-12-23 2016-08-10 美国亚德诺半导体公司 过滤噪声的计算高效方法
CN106062786A (zh) * 2014-09-12 2016-10-26 微软技术许可有限责任公司 用于训练神经网络的计算系统
CN105930916A (zh) * 2016-04-07 2016-09-07 大连理工大学 一种基于并行模块化神经网络的副产煤气实时预测方法

Also Published As

Publication number Publication date
CN108460453A (zh) 2018-08-28

Similar Documents

Publication Publication Date Title
US11604956B2 (en) Sequence-to-sequence prediction using a neural network model
EP4036724A1 (en) Method for splitting neural network model by using multi-core processor, and related product
US11354601B2 (en) Learning classification device and learning classification method
CN107957989B (zh) 基于集群的词向量处理方法、装置以及设备
EP3979143A1 (en) Method of performing splitting in neural network model by means of multi-core processor, and related product
CN108921188B (zh) 一种基于Spark大数据平台的并行CRF方法
CN112016332A (zh) 基于变分推理和多任务学习的多模态机器翻译方法
CN111709493B (zh) 对象分类方法、训练方法、装置、设备及存储介质
KR102405578B1 (ko) 지식 그래프를 이용한 상황 인지형 다중 문장 관계 추출 방법 및 장치
CN110807335B (zh) 基于机器学习的翻译方法、装置、设备及存储介质
CN113128478B (zh) 模型训练方法、行人分析方法、装置、设备及存储介质
CN113837370A (zh) 用于训练基于对比学习的模型的方法和装置
WO2020226634A1 (en) Distributed synchronous training architecture using stale weights
US11295236B2 (en) Machine learning in heterogeneous processing systems
CN117350360B (zh) 大模型的微调方法、装置、电子设备和存储介质
CN115080749B (zh) 一种基于自监督训练的弱监督文本分类方法、系统和装置
CN118451423A (zh) 最优知识蒸馏方案
CN111160000A (zh) 作文自动评分方法、装置终端设备及存储介质
CN108460453B (zh) 一种用于ctc训练的数据处理方法、装置及系统
CN109597982A (zh) 摘要文本识别方法及装置
CN108170663A (zh) 基于集群的词向量处理方法、装置以及设备
CN116956935A (zh) 一种伪标签数据构建方法、装置、终端及介质
CN110851600A (zh) 基于深度学习的文本数据处理方法及装置
CN113705662B (zh) 一种协同训练方法、装置及计算机可读存储介质
CN107577658B (zh) 词向量处理方法、装置以及电子设备

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant