CN110276367B - 学习分类装置和学习分类方法 - Google Patents

学习分类装置和学习分类方法 Download PDF

Info

Publication number
CN110276367B
CN110276367B CN201910194056.8A CN201910194056A CN110276367B CN 110276367 B CN110276367 B CN 110276367B CN 201910194056 A CN201910194056 A CN 201910194056A CN 110276367 B CN110276367 B CN 110276367B
Authority
CN
China
Prior art keywords
data
learning
memory
node
classification
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
CN201910194056.8A
Other languages
English (en)
Other versions
CN110276367A (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.)
Ricoh Co Ltd
Original Assignee
Ricoh Co 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
Priority claimed from JP2018050250A external-priority patent/JP7069897B2/ja
Priority claimed from JP2018050252A external-priority patent/JP7040168B2/ja
Priority claimed from JP2018050254A external-priority patent/JP7069898B2/ja
Application filed by Ricoh Co Ltd filed Critical Ricoh Co Ltd
Publication of CN110276367A publication Critical patent/CN110276367A/zh
Application granted granted Critical
Publication of CN110276367B publication Critical patent/CN110276367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/214Generating training patterns; Bootstrap methods, e.g. bagging or boosting
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • 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/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/01Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models
    • G06N5/045Explanation of inference; Explainable artificial intelligence [XAI]; Interpretable artificial intelligence

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Computing Systems (AREA)
  • Mathematical Physics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computational Linguistics (AREA)
  • Medical Informatics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Biophysics (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Image Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

一种学习分类装置包括数据内存、学习单元和分类单元。数据内存被配置为存储用于学习决策树的训练数据。学习单元被配置为通过单次访问从数据内存读取包括在训练数据中的多个特征量,并基于多个特征量导出节点的数据,以学习决策树。分类单元被配置为基于由学习单元导出的节点的数据,确定从数据内存读取的训练数据从节点分裂到何处。

Description

学习分类装置和学习分类方法
技术领域
本发明涉及一种学习分类装置和学习分类方法。
背景技术
已经在各个领域中尝试基于大量数据使用机器学习来替换人类功能,已知机器学习与人工智能(AI)相关。这个领域正在日益发展,但在目前的情况下还存在一些问题。典型的问题为准确度的限制,包括从数据中提取一般知识的泛化性能,以及为由于大的计算成本而导致的处理速度的限制。深度学习(DL),尤其是卷积神经网络(CNN),其中输入向量受限于邻域,是众所周知的用于高性能机器学习的算法。与这些技术相比,在目前情况下,已知梯度提升决策树(GBDT)对于诸如图像、声音和语言的输入数据的准确度较低,因为难以提取特征量,但GBDT为其他结构化数据提供了更好的性能。在数据科学家们的竞赛Kaggle中,GBDT是最标准的算法。据说,现实世界中机器学习要解决的问题中有70%是图像、声音和语言以外的结构化数据,而GBDT无疑是解决现实世界中的问题的重要算法。最近提出了使用决策树从诸如图像和声音的数据中提取特征的技术。
作为使用这种决策树实施快速分类处理的技术,公开了一种技术,这种技术通过在探索决策树的节点数据中适当地调整阈值,来提升高速缓存的有效使用以加速分类处理(参见日本专利No.5032602)。
遗憾的是,日本专利No.5032602中公开的技术仅仅实现高速缓存的有效使用,而不能高速地学习决策树,因为处理速度的提高存在限制。此外,根据该技术,一片样本数据对于每个特征量跨不同的地址存储。如果有许多特征量,则单次访问无法读取所有特征量。因此,该技术无法加速学习过程。
本发明是鉴于上述问题而完成的,其目的在于提供一种能够提高决策树的学习速度的学习分类装置和学习分类方法。
发明内容
根据本发明的一个方面,一种学习分类装置,包括数据内存、学习单元和分类单元。数据内存被配置为存储用于学习决策树的训练数据。学习单元被配置为通过单次访问从数据内存读取包括在训练数据中的多个特征量,并基于多个特征量导出节点的数据,以学习决策树。分类单元被配置为基于由学习单元导出的节点的数据,确定从数据内存读取的训练数据从节点分裂到何处。
本发明能够加速决策树的学习速度。
附图说明
图1是示出示例性决策树模型的示意图;
图2是示出根据实施例的学习分类装置的示例性模块配置的示意图;
图3是示出指针内存的示例性配置的示意图;
图4是示出学习模块的示例性模块配置的示意图;
图5是示出根据实施例的学习分类装置的初始化中的模块的操作的示意图;
图6是示出根据实施例的用于确定学习分类装置中的深度0、节点0的节点参数的模块的操作的示意图;
图7是示出根据实施例的在学习分类装置中的深度0、节点0处进行分裂的模块的操作的示意图;
图8是示出根据实施例的用于确定学习分类装置中的深度1、节点0处的节点参数的模块的操作的示意图;
图9是示出根据实施例的在学习分类装置中的深度1、节点0处进行分裂的模块的操作的示意图;
图10是示出根据实施例的用于确定学习分类装置中的深度1、节点1的节点参数的模块的操作的示意图;
图11是示出根据实施例的在学习分类装置中的深度1、节点1处进行分裂的模块的操作的示意图;
图12是示出根据实施例的学习分类装置中的深度1、节点1的节点参数的确定中没有分裂时的模块的操作的示意图;
图13是示出根据实施例的学习分类装置中,当决策树学习完成时,更新所有样本数据的状态信息的模块的动作的示意图;
图14是示出根据修改例的学习分类装置中的模型内存的示例性配置的示意图;和
图15是示出根据修改例的学习分类装置中的分类模块的示例性配置的示意图。
附图旨在描述本发明的示例性实施例,而不应被解释为限制其范围。在各个附图中,相同或相似的附图标记表示相同或相似的部件。
具体实施方式
这里使用的术语仅用于描述特定实施例的目的,而不是要限制本发明。
如这里所使用的,单数形式“一”和“该”旨在也包括复数形式,除非上下文另有明确说明。
在描述附图中所示的优选实施例时,为了清楚起见,可能采用了特定术语。然而,本专利说明书的公开内容并不旨在限于所选择的特定术语,并且应理解,每个特定元件包括所有具有相同功能、以类似方式操作和实现类似的结果的技术等同物。
下面将参考附图详细描述本发明的实施例。下面将参考图1至图15详细描述根据本发明的学习分类装置和学习分类方法的实施例。本发明不限于以下实施例,并且以下实施例中的部件包括本领域技术人员容易想到的那些,基本相同的那些和其等同物。在不脱离以下实施例的精神的情况下,可以删除、替换、修改和组合这些组件。
GBDT的逻辑
在DL中作为高性能机器学习算法,分类器由各种硬件逻辑实施,与图形处理单元(GPU)的处理相比,已知其功率高效。在DL中,特别是在与GPU架构良好匹配的CNN的情况下,利用逻辑实施的现场可编程门阵列(FPGA)在分类方面不一定比GPU更快。相比之下,对于诸如GBDT的决策树型算法,已经尝试了在FPGA上的硬件逻辑实施,并且据报道比GPU更快。如稍后将描述的,这是因为基于决策树的算法由于其数据对齐的特性而不适合于GPU架构。
在世界上关于学习的研究滞后于分类。DL中的学习的报道几乎没有,并且关于决策树学习的报道很少。这其中,GBDT学习目前尚未有报道,被认为是一个尚未开发的领域。为了获得准确的分类模型,在学习过程中进行特征量的选择和设计以及学习算法中超参数的选择。这需要大量的试验,特别是当存在大量训练数据时,学习过程的速度实际上对最终模型的准确性有很大影响。在需要实时适应环境变化的领域,例如机器人、高频交易(HFT)和实时出价(RTB),速度与性能直接相关。因此,准确GBDT中的高速学习过程可以导致使用GBDT的系统的更好性能。
GBDT与FPGA的兼容性
在GBDT与FPGA的兼容性方面,我们将讨论为什么GPU没有加速决策树或GBDT以及为什么FPGA能加速。
首先,我们将重点关注GBDT是一种使用提升(boosting)的算法。在决策树中,使用集成学习的随机森林(RF)很容易与GPU并行化,因为树之间没有依赖关系。但是,GBDT是一种使用提升连接许多树的方法,在没有前一棵树的结果的情况下不开始下一棵树的学习。因此,处理是连续的,并且每棵树的学习速度是关键。相比之下,在RF中,尽管每棵树的学习很慢,但是通过并行加速学习多棵树可以加速整个学习。由于这个原因,GPU的使用可能在某种程度上隐藏了动态随机存取存储器(DRAM)的访问延迟的问题,这将在下面描述。
我们现在将重点关对注GPU装置中随机存取存储器(RAM)的访问速度(特别是随机访问)的限制。FPGA中的静态随机存取存储器(SRAM)可以增加FPGA中RAM的总线宽度。因此,当使用例如可从Xilinx公司获得的XC7k325T的中档FPGA时,可达到3.2[TB/秒],如下所示。这里,内部RAM的容量为16[Mb]。
445BRAMs×36bits×100MHz×2端口=445*36*2*100*10^6/10^12/8=400GB/秒
在可以从Xilinx公司获得高端FPGA VU9P的情况下,可达到864[GB/秒]。内部RAM的容量为270[Mb]。
960URAMs×36bits×100MHz×2端口=960*36*2*100*10^6/10^12/8=864GB/秒
当时钟频率为100[MHz]时获得这些值。实际上,通过电路配置的设计,操作在大约200到500[MHz]是可能的,实现高出几倍的限制带宽。相比之下,连接到当前一代中央处理单元(CPU)的RAM是双倍数据速率4(DDR4),且每个双列直插式内存模块(DIMM)的带宽仅为25.6[GB/秒]。四DIMM交错配置(256位宽度)达到约100[GB/秒]。当DDR4芯片标准是DDR4-3200(总线宽64位,一个DIMM)时,我们可以获得如下。
200MHz×2(DDR)×64=200*10^6*2*64/10^9=25.6GB/秒
GPU上的图形双倍数据速率5(GDDR5)的带宽大约是DDR4的带宽的四倍,但实际上最大约为400[GB/秒]。
以这种方式,FPGA中的RAM与GPU和CPU中的外部内存之间的带宽差异很大。虽然我们已经讨论了对地址进行顺序访问的情况,但是,在随机访问中,访问时间会产生更大的影响。FPGA中的内部RAM是一个SRAM,在顺序访问或随机访问中具有一个时钟的访问延迟。DDR4和GDDR5是DRAM,为了读出放大器(sense amplifiers),在访问不同列时具有更大的延迟。例如,在DDR4的RAM中,典型的列地址选通延迟(CAS延迟)是16个时钟,简而言之,吞吐量仅为顺序访问的1/16。
在其中相邻像素的数据被处理的CNN的情况下,随机访问中的延迟不是主要问题。然而,在决策树的情况下,随着分裂的进行,对于每个分支原始数据的地址变得越来越不连续,基本上陷入随机访问。因此,当数据写入DRAM时,其吞吐量是瓶颈,导致显著的减速。为了防止这种情况下的性能下降,GPU包括高速缓存。然而,由于决策树基本上是一种扫描数据的算法,因此在数据访问中没有局部性,高速缓存不太可能是有效的。在GPU的结构中,GPU具有共享内存,其配置有分配给每个核的SRAM(SM)。共享内存的使用可以实现快速处理,但是小到每个SM 16到48[kB],并且跨SM的访问具有大的延迟。以目前昂贵的大型GPUNvidia K80为例,共享内存的容量如下。
K80=2×13SMX=26SMX=4992CUDA核
26×48×8=9Mb
这样,即使是花费数十万日元的大型GPU也只有9[Mb]的共享内存,这是一个太小的容量。此外,由于执行处理的SM不能直接访问另一SM的共享内存,因此当GPU用于决策树学习时,难以快速编码。
如上所述,在数据要写入FPGA上的SRAM的前提下,FPGA可以比GPU更快地实现GBDT学习算法。
GBDT算法
图1是示出示例性决策树模型的示意图。在下文中,参考公式(1)到公式(22)和图1,描述GBDT的基本逻辑。
GBDT是监督式学习的方法之一。如公式(1)所示,监督式学习是优化目标函数obj(θ)的过程,其包括表示拟合训练数据的良好性的损失函数L(θ)和表示学习模型的复杂度的正则化项Ω(θ)。正则化项Ω(θ)具有防止模型(决策树)变得过于复杂的作用,即,增加泛化性能。
obj(θ)=L(θ)+Ω(θ) (1)
公式(1)中的第一项损失函数,例如,将每个样本数据(训练数据)的误差函数l所计算的损失相加,如下面的公式(2)所示。这里,n是样本大小,i是样本号,y是标签,并且模型的y(hat)是预测值。
这里,例如如下面的公式(3)和公式(4),所使用的误差函数l是平方误差函数或逻辑损失函数。
公式(1)中第二项的正则化项Ω(θ)使用的是,例如,由下面的公式5表示的参数θ的平方范数。这里,λ是表示正则化权重的超参数。
Ω(θ)=λ||θ||2 (5)
我们现在将审查GBDT的情况。首先,GBDT中第i个样本数据xi的预测值可写为如下的公式(6)。
这里,K是决策树的总数,k是决策树的编号,fk()是第k个决策树的输出,xi是输入样本数据的特征量。可以理解,GBDT以与RF中相同的方式产生最终输出,该最终输出是决策树的输出的总和。参数θ是θ={f1,f2,...,fK}。基于以上,GBDT的目标函数可以写成如下的公式(7)。
在学习上述目标函数时,在神经网络中的学习中使用的随机梯度下降(SGD)等方法不能用于决策树模型。然后,附加训练(提升(boosting))用于学习。在附加训练中,某一轮(学习迭代、决策树模型号)t中的预测值写成如下的公式(8)。
公式(8)表示有必要在某一轮t中找到决策树ft(xi)(的输出)。相反,在某一轮t中,不需要审查其他轮次。随后下面我们审查轮t。轮t中的目标函数写为下面的公式(9)。
这里,轮t中目标函数的泰勒展开(检查到二阶项)写为下面的公式(10)。
这里,在公式(10)中,gi和hi写成下面的公式(11)。
在公式(10)中忽略常数项,然后将轮t中的目标函数写为公式(12)。
根据公式(12),轮t中的目标函数由相对于前一轮中的预测值的误差函数的一阶导数和二阶导数以及正则化项表示。可以理解,可以应用一阶导数和二阶导数可以找到的误差函数。
我们现在将审查决策树模型。图1示出了示例性决策树模型。决策树模型配置有节点和叶。基于某个分支条件,对节点的输入被输入到下一个节点或叶。叶具有叶权重,叶权重是对其输入的输出。例如,在图1中,“叶2”的叶权重W2是“-1”。
决策树模型如公式(13)所述。
ft(x)=wq(x),w∈RT,q:Rd→{1,2,…T} (13)
在公式(13)中,w是叶权重,q是树结构。即,根据树结构q将输入(样本数据x)分配给任何叶,并输出叶的叶权重。
这里,决策树模型的复杂性如下面的公式(14)定义。
在公式(14)中,第一项是由叶数量决定的复杂性,第二项是叶权重的平方范数。这里,γ是控制正则化项的重要性的超参数。基于以上,轮t中的目标函数被组织为公式(15)。
在公式(15)中,Ij,Gj和Hj写成下面的公式(16)。
Ij={i|q(xi)=j}
Gj=∑i∈Ijgi
根据公式(15),某一轮t中的目标函数是叶权重w的二次函数,并且二次函数的最小值及其条件通常写为下面的公式(17)。
也就是说,当确定某一轮t中的决策树结构q时,其目标函数和叶权重如下面的公式(18)所示。
如上所述,当确定了某一轮中的决策树结构时,可以计算叶权重。在下文中,将描述决策树结构的学习过程。
决策树结构学习方法之一是贪心算法。在贪心算法中,通过从树结构的深度0开始,计算每个节点处的分裂分数(增益)并确定是否分裂来学习决策树结构。分裂分数通过下面的公式(19)找到。
这里,GL和HL是分裂到左侧节点的样本的梯度信息,GR和HR是分裂到右侧的样本的梯度信息,γ是正则化项。在公式(19)中,[]中的第一项是分裂到左侧节点的样本数据的得分(目标函数),第二项是分裂到右侧节点的样本数据得分,第三项是没有分裂的得分,代表分裂对目标函数的改善程度。
由上述公式(19)表示的分裂分数指示具有某个阈值的某特征量的分裂的良好性,但这个单独不能确定哪个条件是最佳的。然后,贪心算法找到所有特征量的所有阈值候选值的分裂分数,并找到分裂分数最大的条件。贪心算法是一种非常简单的算法,但其计算成本很高,因为要找到所有特征量的所有阈值候选值的分裂分数。然后,诸如稍后描述的XGBoost的库包括用于在保持性能的同时降低计算成本的方案。
XGBoost
下面将描述XGBoost,XGBoost是众所周知的GBDT库。XGBoost的学习算法包括两种方案,用于减少阈值候选值和处理缺失值。
首先,描述阈值候选值的减少。上述贪心算法具有计算成本高的缺点。在XGBoost中,阈值候选值的数量通过被称为加权分位数草图(Weighted Quantile Sketch)的方法减少。更具体地,在计算分裂分数(增益)时,向左和右分裂的样本数据的梯度信息的总和是重要的,并且仅探索梯度信息的总和以某一比率变化的阈值。具体地,使用样本的二阶梯度h。假设f是特征量的维度,一组特征量和二阶梯度h写成下面的公式(20)。
Df={(x1f,h1),(x2f,h2),…,(xnf,hn)} (20)
秩函数rf定义为下面的公式(21)。
这里,z是阈值候选值。公式(21)中所示的秩函数rf表示样本数据的二阶梯度之和的比例小于所有样本数据的二阶梯度之和中的某一阈值候选值。最后,对于由维度f表示的特征量,必须找到一组阈值候选值{sf1,sf2,...,sfl},这可以通过下面的公式(22)找到。
|rf(sfj)-rf(sfj+1)|<ε
sfl=min({x1f,x2f,…,xnf})
sfl=max({x1f,x2f,…,xnf}) (22)
这里,ε是确定阈值候选值的减少程度的参数,并且获得约1/ε的阈值候选值。
加权分位数草图有两种模式:全局加权分位数草图,其在决策树的初始节点处执行(对于所有样本数据同时进行);和局部加权分位数草图,其对于每个节点执行(每次样本分配给节点时进行)。由于据报道局部在泛化性能方面更好,XGBoost采用局部。
接下来,将描述缺失值的处理。在GBDT和决策树以及机器学习领域,没有一种常用的有效方法来处理输入样本数据的缺失值。一种方法是用平均值、中值、协同过滤器等补充缺失值。另一种方法是去除具有许多缺失值的特征量。然而,就性能而言,这些方法在许多情况下都不成功。结构化数据通常包括缺失值,并且在实践中寻求某种解决方案。
在XGBoost中,设计学习算法以便直接处置包括缺失值的样本数据。在确定节点的分裂分数时,该方法确定当具有缺失值的数据被分配给左或右节点时的分数。当执行上述加权分位数草图时,找到一组的不包括包含缺失值的样本数据的阈值候选值。
LightGBM
现在将描述LightGBM,LightGBM是GBDT库。LightGBM采用称为建立容器(binning)的特征量的量化作为预处理,并采用使用GPU进行分裂分数计算的快速算法。与XGBoost相比,LightGBM具有学习速度高出几倍的等同性能,因此最近吸引了更多使用者。
首先,描述特征量的量化。当数据集是大规模的时,必须为大量的阈值候选值计算分裂分数。LightGBM通过量化特征量作为学习的预处理来减少阈值候选值的数量。与XGBoost不同,量化不会改变每个节点的阈值候选值的数量和值,并且是使用GPU时的必要处理。
关于特征量的量化已有各种研究,称为建立容器(bining)。在LightGBM中,特征量被划分为具有k个阈值候选值的k个容器(bin),其中k是255,63,15等。性能或学习速度因数据集而异。
量化特征量简化了分裂分数的计算。具体而言,阈值候选值是简单的量化值。这样,为每个特征量创建一阶梯度和二阶梯度的直方图,并且为每个容器(bin)(量化值)获得分裂分数。这称为特征量直方图。
接下来,将描述使用GPU计算的分裂分数。随着特征量的量化,在计算分裂分数时最多有256个模式。然而,有些数据集的样本大小为数万样本数据。因此,直方图的创建在学习时间中占主导地位。如上所述,在计算分裂分数时,必须获得特征量直方图。当使用GPU时,多个线程需要更新相同的直方图并且可以更新相同的容器(bin)。因此,需要使用原子操作,并且当更新相同容器(bin)的比率高时,性能降低。然后,在创建直方图时,LightGBM决定是否要从每个线程的一阶梯度直方图或二阶梯度直方图更新值,从而减少更新相同容器(bin)的频率。
学习分类装置的配置
图2是示出根据实施例的学习分类装置的示例性模块配置的示意图。图3是示出指针内存的示例性配置的示意图。图4是示出学习模块的示例性模块配置的示意图。参照图2至图4,将描述根据本实施例的学习分类装置1。
如图2所示,根据本实施例的学习分类装置1包括CPU 10、学习模块20(学习单元)、数据内存30、模型内存40和分类模块50(分类单元)。其中,学习模块20、数据内存30、模型内存40和分类模块50由FPGA配置。CPU 10和FPGA可以通过总线传送数据。除了图2中所示的组件之外,学习分类装置1还可以包括其他组件,例如,包括用作CPU 10的工作区的RAM,存储由CPU 10运行的程序的只读存储器(ROM),用于存储各种数据(例如,程序)的辅助存储装置和用于与外部装置通信的通信接口(I/F)。
CPU 10是用于控制整个GBDT的学习的计算单元。CPU 10包括控制单元11。控制单元11控制以下模块,包括学习模块20、数据内存30、模型内存40和分类模块50。控制单元11通过由CPU 10运行的程序实施。
学习模块20是计算阈值和决策树中的每个节点的最佳特征量的编号(下文中可以称为“特征量号”)并将结果写入模型内存40的硬件模块,如果节点是叶,则计算叶权重。如图4所示,学习模块20包括增益计算模块21_1,21_2,...,21_n(增益计算单元)和最佳条件导出模块22(导出单元)。这里,n是数值,该数值等于或大于至少是样本数据(包括训练数据和分类数据)的特征量数值。当参考任何给定增益计算模块时或者当整体参考增益计算模块时,增益计算模块21_1,21_2,...,21_n简称为“增益计算模块21”。
增益计算模块21是使用上面的公式(19)计算对于对应特征量的每个阈值中的分裂分数的模块,特征量包括在输入样本数据中。这里,在样本数据中,训练数据包括特征量以及标签(真值)。在样本数据中,分类数据包括特征量但不包括标签。增益计算模块21具有相应的内存,用于计算和存储(在一个时钟中)一次输入的所有特征量的直方图,并且并行地计算所有特征量。基于直方图的结果,并行计算特征量的增益。该配置使得能够一次或同时处理所有特征量,从而可以大幅提高学习过程的速度。这样,并行读取和处理所有特征量的方法称为特征并行(Feature Parallel)。为了实现该方法,必须一次(一个时钟)从数据内存中读取所有特征量。因此,该方法不能由具有32位或256位数据宽度的公共内存来实现。使用软件,公共CPU一次处理的数据位数仅为64位。如果有100个特征量和每个特征量为8位,则需要8000位,其无法被处置。因此,根据传统方法,对内存的每个地址存储不同的特征量(例如,可以由CPU处置的64位宽度),并且所有特征量存储在多个地址上。作为对比,根据本方法,一种新颖的技术在于,所有特征量都存储在内存的一个地址中,并且所有特征量通过单次访问来读取。
如上所述,GBDT无法并行化决策树学习。因此,每个单独的决策树学习的多快主导着学习过程的速度。另一方面,执行集成学习的RF容易并行化每个决策树的学习过程,因为在学习期间决策树之间没有依赖性。然而,RF不如GBDT准确。如上所述,对于比RF具有更高准确度的GBDT,如上所述采用Feature Parallel可以提高决策树学习过程的速度。
增益计算模块21将计算出的分裂分数输出给最佳条件导出模块22。
最佳条件导出模块22接收与每个增益计算模块21输出的特征量相对应的分裂分数,并导出具有最大分裂分数的阈值和特征量的编号(特征量号)。最佳条件导出模块22将导出的特征量号和阈值写入模型内存40,作为相应节点的分支条件数据(节点数据的示例)。
数据内存30是存储各种数据的SRAM。数据内存30包括指针内存31、特征内存32和状态内存33。
指针内存31是内存,其存储存储在特征内存32中的样本数据的存储地址。如图3所示,指针内存31包括存储体(bank)A(存储体区域)和存储体B(存储体区域)。将样本数据的存储地址存储到存储体A和存储体B两个存储体中的操作将在后面参考图5至图13详细说明。指针内存31可包括三个或更多的存储体。
特征内存32是内存,存储样本数据(包括训练数据和分类数据)。
状态内存33存储状态信息(上面的w、g、h)和标签信息。
模型内存40是SRAM,其存储用于决策树的每个节点的分支条件数据(特征量号、阈值)、指示节点是否是叶的叶标志(标志信息,节点的数据的示例)和节点是叶时的叶权重。
分类模块50是一个硬件模块,它为每个节点、每个决策树分类样本数据。分类模块50计算状态信息(w、g、h)并将计算的状态信息写入状态内存33。
分类模块50不仅可以在如上所述的学习过程中对样本数据(训练数据)进行分类(分裂),而且还可以在具有相同模块配置的样本数据(分类数据)的分类过程中对分类数据进行分类。在分类过程中,分类模块50的处理也可以通过一次读取所有特征量来流水线化,使得处理可以与每个时钟的一个样本数据的分类一样快。如果特征量无法一次读取,则不知道哪个特征量是必要的,直到分裂成节点。因此,通过每次访问相应特征量的地址无法实现流水线化。
可以包括多个分类模块50,使得多条分类数据被划分(数据并行)并分配给分类模块50,每个分类模块50执行分类处理,从而加速分类过程。
学习分类装置的学习过程
参考图5至图13,将具体描述学习分类装置1的学习过程。
初始化
图5是示出根据实施例的学习分类装置的初始化中的模块的操作的图。如图5所示,首先,控制单元11初始化指针内存31。例如,如图5所示,控制单元11按照训练数据的编号按顺序(例如,按照从较低地址开始的顺序)将特征内存32中的样本数据的地址写入指针内存31中的存储体A。
注意,可以不使用所有训练数据(可以不写入所有的地址),并且可以通过数据子采样使用基于预定随机数的概率随机选择的训练数据(可以写入所选训练数据的地址)。例如,当数据子采样为0.5时,根据随机数,训练数据的所有地址具有50%的概率,一半地址可以写入指针内存31(此处,存储体A)。在生成随机数时,可以使用由线性反馈移位寄存器(LFSR)生成的伪随机数。
训练数据的所有特征量可以都不用于学习。仅基于根据如上所述的随机数的概率随机选择(例如,一半选择)的特征量可以由特征子采样使用。在这种情况下,例如,作为通过特征子采样选择的特征量之外的特征量的数据,可以从特征内存32输出常数。该操作改善了未知数据(分类数据)的泛化性能。
深度0/节点0的分支条件数据的确定
图6是示出根据实施例的用于确定学习分类装置中的深度0、节点0的节点参数的模块的操作的示意图。决策树的顶层被表示为“深度0”,并且下面的层依次被表示为“深度1”、“深度2”.......某一层的左侧节点表示为“节点0”,向右的节点依次被表示为“节点1”、“节点2”......
如图6所示,首先,控制单元11向学习模块20发送起始地址和结束地址,以触发学习模块20的处理的启动。学习模块20基于起始地址和结束地址从指针内存31(存储体A)指定目标训练数据的地址,使用指定的地址从特征内存32读取训练数据(特征量),并从状态内存33中读取状态信息(w、g、h)。
在这种情况下,如上所述,学习模块20中的每个增益计算模块21计算相应特征量的直方图,将直方图存储到其SRAM中,并基于结果计算每个阈值的分裂分数。然后,学习模块20的最佳条件导出模块22接收与从每个增益计算模块21输出的特征量相对应的分裂分数,并导出具有最大分裂分数的阈值和特征量的编号(特征量号)。然后最佳条件导出模块22将导出的特征量号和阈值作为相应节点(深度0、节点0)的分支条件数据写入模型内存40中。这样做,最佳条件导出模块22设置叶标志为“0”以指示节点(深度0、节点0)进一步分裂,并将节点的数据(可以是分支条件数据的一部分)写入模型内存40。
学习模块20通过连续地指定写入存储体A中的训练数据的地址并使用该地址从特征内存32读取每个训练数据来执行上述操作。
在深度0/节点0的数据分裂过程
图7是示出根据实施例的学习分类装置中在深度0、节点0处的分裂的模块的操作的示意图。
如图7所示,控制单元11将起始地址和结束地址发送到分类模块50,以触发分类模块50的处理的启动。分类模块50基于起始地址和结束地址从指针内存31(存储体A)指定目标训练数据的地址,并使用指定的地址从特征内存32读取训练数据(特征量)。分类模块50从模型内存40读取相应节点(深度0、节点0)的分支条件数据(特征量号、阈值)。然后分类模块50根据分支条件数据确定是否向节点(深度0、节点0)的左侧或右侧分裂读取的样本数据,并基于确定结果将特征内存32中的训练数据的地址写入指针内存31中与读存储体(这里,存储体A)(用于读取的存储体区域)不同的另一存储体(写存储体)(此处,存储体B)(用于写入的存储体区域)。
这样做,如图7所示,当确定向节点的左侧分裂时,分类模块50从存储体B的较低地址开始按顺序写入训练数据的地址。当确定向节点的右侧分裂时,分类模块50从存储体B的较高地址开始按顺序写入训练数据的地址。因此,在写存储体(存储体B)中,地址可以分开写入,使得向节点的左侧分裂的训练数据的地址写在较低的地址中,而向节点的右侧分裂的训练数据的地址写入较高的地址。在写存储体中,向节点的左侧分裂的训练数据的地址可以写在较高的地址中,并且向节点的右侧分裂的训练数据的地址可以写在较低的地址中。
以这种方式,指针内存31配置有两个存储体,即存储体A和存储体B,在其中交替执行读和写,如上所述。因此,由于FPGA中SRAM的容量有限,内存可以被有效地使用。简单地说,特征内存32和状态内存33中的每一个可以配置有两个存储体。然而,由于指示特征内存32中的地址的数据通常小于样本数据,因此可以通过准备指针内存31并间接指定如本实施例中的地址来更多地减少内存使用。
对于上述操作,分类模块50对所有训练数据执行分裂处理。然而,在完成分裂过程之后,训练数据不一定在节点的左侧和右侧(深度0,节点0)均等地划分。因此,分类模块50将写存储体(存储体B)中的对应于向左分裂的训练数据的地址与向右分裂的训练数据的地址之间的边界的地址(中间地址)返回到控制单元11。中间地址用于下一分裂过程。
深度1/节点0处的分支条件数据的确定
图8是示出根据实施例的用于确定学习分类装置中的深度1、节点0处的节点参数的模块的操作的示意图。基本上,除了由于目标节点的层次改变(从深度0到深度1)指针内存31的存储体A和存储体B的作用被反转之外,该过程类似于在图6中所示的深度0/节点0处确定分支条件数据的过程。具体而言,存储体B是读存储体,存储体A是写存储体(参见图9)。
如图8所示,控制单元11基于在深度0处的过程中从分类模块50接收的中间地址,向学习模块20发送起始地址和结束地址,以触发学习模块的处理的启动。学习模块20基于起始地址和结束地址从指针内存31(存储体B)指定目标训练数据的地址,使用指定的地址从特征内存32读取训练数据(特征量),并从状态内存33读取状态信息(w、g、h)。特别地,如图8所示,学习模块20按照从存储体B的左侧(较低地址)到中间地址的顺序指定地址。
在这种情况下,如上所述,学习模块20的每个增益计算模块21将读取的训练数据的特征量存储到其SRAM中并计算每个阈值的分裂分数。然后,学习模块20的最佳条件导出模块22接收与从每个增益计算模块21输出的特征量相对应的分裂分数,并导出具有最大分裂分数的阈值和特征量的编号(特征量号)。然后最佳条件导出模块22将导出的特征量号和阈值作为相应节点(深度1,节点0)的分支条件数据写入模型内存40中。这样做,最佳条件导出模块22设置叶标志为“0”以指示节点(深度1,节点0)进一步分裂,并将节点的数据(可以是分支条件数据的一部分)写入模型内存40。
学习模块20通过连续地指定从存储体B左侧(较低地址)到中间地址的地址并使用指定的地址从特征内存32读取每个训练数据来执行上述操作。
在深度1/节点0的数据分裂过程
图9是示出根据实施例的学习分类装置中在深度1、节点0处的分裂的模块的操作的示意图。
如图9所示,控制单元11基于在深度0处的处理中从分类模块50接收的中间地址,将起始地址和结束地址发送到分类模块50,以触发分类模块50的处理的启动。分类模块50基于起始地址和结束地址从指针内存31(存储体B)的左侧指定目标训练数据的地址,并使用指定的地址从特征内存32读取训练数据(特征量)。分类模块50从模型内存40读取相应节点(深度1、节点0)的分支条件数据(特征量号、阈值)。然后分类模块50根据分支条件数据确定是否向节点(深度1,节点0)的左侧或右侧分裂读取的样本数据,并基于确定结果将特征内存32中的训练数据的地址写入指针内存31中与读存储体(这里,存储体B)(用于读取的存储体区域)不同的另一存储体(写存储体)(此处,存储体A)(用于写入的存储体区域)。
这样做,如图9所示,当确定向节点的左侧分裂时,分类模块50从存储体A的较低地址开始按顺序写入训练数据的地址。当确定向节点的右侧分裂时,分类模块50从存储体A的较高地址开始按顺序写入训练数据的地址。因此,在写存储体(存储体A)中,地址可以分开写入,使得向节点的左侧分裂的训练数据的地址写在较低的地址,而向节点的右侧分裂的训练数据的地址写在较高的地址。在写存储体中,向节点的左侧分裂的训练数据的地址可以写在较高的地址中,并且向节点的右侧分裂的训练数据的地址可以写在较低的地址中。
对于上述操作,分类模块50对所有训练数据执行分裂处理,训练数据由写在相对于存储体B的中间地址的左侧的地址指定。然而,在分裂过程完成之后,训练数据不一定均分到节点(深度1,节点0)的右侧和左侧。因此,分类模块50将写存储体(存储体A)中的对应于向左分裂的训练数据的地址与向右分裂的训练数据的地址之间的中间的地址(中间地址)返回到控制单元11。中间地址用于下一分裂过程。
深度1/节点1的分支条件数据的确定
图10是示出根据实施例的用于确定学习分类装置中的深度1、节点1的节点参数的模块的操作的示意图。以与如图8所示的相同的方式,由于该节点与深度1/节点0的节点处于同一层,因此存储体B是读存储体,存储体A是写存储体(参见图11)。
如图10所示,控制单元11基于在深度0处的处理中从分类模块50接收的中间地址,向学习模块20发送起始地址和结束地址,以触发学习模块20的处理的启动。学习模块20基于起始地址和结束地址从指针内存31(存储体B)指定目标训练数据的地址,使用指定的地址从特征内存32读取训练数据(特征量),并从状态内存33读取状态信息(w、g、h)。特别地,如图10所示,学习模块20按照从存储体B的右侧(较高地址)到中间地址的顺序指定地址。
在这种情况下,如上所述,学习模块20的每个增益计算模块21将读取的训练数据的特征量存储到其SRAM中并计算每个阈值的分裂分数。然后,学习模块20的最佳条件导出模块22接收与从每个增益计算模块21输出的特征量相对应的分裂分数,并导出具有最大分裂分数的阈值和特征量的编号(特征量号)。然后,最佳条件导出模块22将导出的特征量号和阈值作为相应节点(深度1,节点1)的分支条件数据写入模型内存40中。这样做,最佳条件导出模块22设置叶标志为“0”以指示节点(深度1,节点1)进一步分裂,并将节点的数据(可以是分支条件数据的一部分)写入模型内存40。
学习模块20通过从存储体B的右侧(较高地址)到中间地址顺序指定地址并使用指定的地址从特征内存32读取每个训练数据来执行上述操作。
在深度1/节点1的数据分裂过程
图11是示出根据实施例的学习分类装置中在深度1,节点1处的分裂的模块的操作的示意图。
如图11所示,控制单元11基于在深度0处的处理中从分类模块50接收的中间地址,将起始地址和结束地址发送到分类模块50,以触发分类模块50的处理的启动。分类模块50基于起始地址和结束地址从指针内存31(存储体B)的右侧指定目标训练数据的地址,并使用指定的地址从特征内存32读取训练数据(特征量)。分类模块50从模型内存40读取相应节点(深度1,节点1)的分支条件数据(特征量号、阈值)。然后分类模块50根据分支条件数据确定是否向节点(深度1,节点1)的左侧或右侧分裂读取的样本数据,并基于确定结果将特征内存32中的训练数据的地址写入指针内存31中与读存储体(这里,存储体B)(用于读取的存储体区域)不同的另一存储体(写存储体)(此处,存储体A)(用于写入的存储体区域)。
这样做,如图11所示,当确定向节点的左侧分裂时,分类模块50从存储体A的较低地址开始按顺序写入训练数据的地址。当确定向节点的右侧分裂时,分类模块50从存储体A的较高地址开始按顺序写入训练数据的地址。因此,在写存储体(存储体A)中,地址可以分开写入,使得向节点的左侧分裂的训练的地址数据写在较低的地址,而向节点的右侧分裂的训练数据的地址写在较高的地址。在写存储体中,向节点的左侧分裂的训练数据的地址可以写在较高的地址中,并且向节点的右侧分裂的训练数据的地址可以写在较低的地址中。在这种情况下,图9中的操作需要被调整。
对于上述操作,分类模块50对所有训练数据执行分裂过程,训练数据由写在相对于存储体B的中间地址的右侧的地址指定。然而,在分裂过程完成之后,训练数据不一定均分到节点(深度1,节点1)的左侧和右侧。因此,分类模块50将写存储体(存储体A)中的对应于向左分裂的训练数据的地址与向右分裂的训练数据的地址之间的中间的地址(中间地址)返回到控制单元11。中间地址用于下一分裂过程。
深度1/节点1的分支条件数据的确定中没有分裂
图12是示出在根据实施例的学习分类装置中深度1,节点1的节点参数的确定中没有分裂时的模块的操作的示意图。以与图8所示的相同的方式,由于该节点与深度1/节点0的节点处于同一层,因此存储体B是读存储体。
如图12所示,控制单元11基于在深度为0的过程中从分类模块50接收的中间地址,向学习模块20发送起始地址和结束地址,以触发学习模块20的处理的启动。学习模块20基于起始地址和结束地址从指针内存31(存储体B)指定目标训练数据的地址,使用指定的地址从特征内存32读取训练数据(特征量)。并从状态内存33读取状态信息(w、g、h)。特别地,如图12所示,学习模块20按照从存储体B的右侧(较高地址)到中间地址的顺序指定地址。
当确定没有从节点(深度1,节点1)的进一步分裂时,例如,基于计算的分裂分数,学习模块20将叶标志设置为“1”,将节点的数据(可以是分支条件数据的一部分)写入模型内存40,并将节点的叶标志“1”发送到控制单元11。这样,识别节点(深度1,节点1)不再进一步分裂到较低的层。当节点(深度1,节点1)的叶标志为“1”时,学习模块20将叶权重(w)(可以是分支条件数据的一部分)而不是特征量号和阈值写入模型内存40。与分开的容量相比,这可以减少模型内存40的容量。
对每个层(深度)执行上面图6至图12示出的处理以完成整个决策树(决策树被学习)。
当决策树的学习完成时
图13是示出当根据实施例的学习分类装置中决策树的学习完成时,更新所有样本数据的状态信息时的模块的操作的示意图。
当完成构成GBDT的一个决策树的学习时,需要计算对应于每个训练数据的误差函数的一阶梯度g和二阶梯度h,以及每个训练数据的叶权重w以便用于提升(这里,梯度提升)到下一个决策树。如图13所示,控制单元11触发通过分类模块50的上述计算的启动。分类模块50对所有训练数据的所有深度(层)中的节点执行分裂确定处理,并计算对应于每个训练数据的叶权重。然后,分类模块50基于标签信息为所计算的叶权重计算状态信息(w,g,h),并将计算的状态信息写回到状态内存33的原地址。这样,使用更新的状态信息下一个决策树被学习。
如上所述,在根据本实施例的学习分类装置1中,学习模块20包括用于读取输入样本数据的特征量的单独存储器(例如,SRAM)。利用这种配置,可以通过单次访问来读取样本数据的所有特征量,并且可以通过增益计算模块21一次执行对所有特征量的处理。这种配置可以大幅加速决策树学习过程。
在根据本实施例的学习分类装置1中,指针内存31配置有两个存储体:存储体A和存储体B,在其中交替执行读取和写入。因此可以有效地使用内存。以简单的形式,特征内存32和状态内存33可以各自配置有两个存储体。然而,指示特征内存32中的地址的数据通常小于样本数据。因此,可以通过如本实施例中的方法来节省内存使用,其中准备指针内存31并间接指定地址。当确定向节点的左侧分裂时,分类模块50从两个存储体的写存储体的较低地址开始按顺序写入训练数据的地址,当确定向节点的右侧分裂时,从写存储体的较高地址开始按顺序写入训练数据的地址。以这种方式,在写存储体中,地址可以分开写入,使得向节点的左侧分裂的训练数据的地址写在较低的地址中,而向节点的右侧分裂的训练数据的地址是写在较高的地址。
修改
图14是示出根据修改的学习分类装置中的模型内存的示例性配置的示意图。参考图14,描述根据本修改的学习分类装置1中的模型内存40中的决策树的每个深度(层)都具有内存的配置。
如图14所示,根据本修改的学习分类装置1中的模型内存40包括用于深度0的内存41_1,用于深度1的内存41_2,...,用于深度(m-1)的内存41_m,用于为学习的决策树的模型数据的每个深度(层)存储数据(具体地,分支条件数据)。这里,m是等于或大于决策树模型的深度(层)的数目的数。换句话说,模型内存40具有独立的端口,用于同时检索所学习决策树的模型数据的每个深度(层)(深度0节点数据,深度1节点数据,...,深度(m-1)节点数据)的数据。因此,分类模块50可以基于决策树中的初始节点处的分裂的结果,在所有深度(层)中并行地读取与下一个节点相对应的数据(分支条件数据),并为一片样本数据(分类数据)在一个时钟中同时在每个深度(层)执行分裂处理而不经过内存(流水线处理)。因此,分类模块50中的分类处理仅需要对应于样本大小的时间,从而大幅加快了分类处理。相比之下,在传统技术中,由于对于每个节点样本数据被复制到新的内存区,内存写入/读取时间影响速度,具体地,分类过程需要时间(样本大小×深度(层)数量)。如上所述的根据本修改的分类处理是非常优越的。
图15是示出根据修改的学习分类装置中的分类模块的示例性配置的示意图。如图15所示,分类模块50包括节点0鉴别器51_1、节点1鉴别器51_2、节点2鉴别器51_3.......特征内存32每个时钟提供一片样本数据作为特征量。如图15所示,特征量首先输入到节点0鉴别器51_1。节点0鉴别器51_1从模型内存40的深度0相应的内存41_1接收节点的数据(深度0节点数据)(要使用的特征量号和向右或向左的条件)。节点0鉴别器51_1根据条件确定相应的样本数据是向右还是向左。这里,假设每个深度的内存(深度0的内存41_1、深度1的内存41_2、深度2的内存41_3,......)具有一个时钟的延迟。取决于节点0鉴别器51_1的结果,在下一个深度1的内存41_2中,寻址要去的节点,并且提取相应节点的数据(深度1节点数据)并将其输入到节点1鉴别器51_2。
由于深度0的内存41_1具有一个时钟的延迟,所以特征量也延迟一个时钟并输入到节点1鉴别器51_2。下一个样本数据的特征量在同一时钟输入到节点0鉴别器51_1。以这种方式,通过流水线处理进行分类,其中假设同时为每个深度输出数据,一片样本数据可以作为整体在一个决策树中的一个时钟中分类。深度0的内存41_1仅需要一个地址,因为深度0中只有一个节点,深度1的内存41_2需要两个地址,因为深度1中有两个节点。同样,深度2的内存41_3需要四个地址,并且深度为3的内存(未示出)需要八个地址。尽管该分类模块50对整个树进行分类,但是当学习节点时可以仅使用节点0鉴别器51_1,从而可以通过使用相同的电路来减小电路规模。
示例
下面将描述根据实施例的学习分类装置1中的学习处理速度的预测结果。
为了比较,评估LightGBM和作为常见的GBDT库XGBoost的学习速度。截至2017年12月,实际上已经测量,LightGBM的GPU使用很快。
处理时间根据硬件配置的时钟计算。在该示例中实施的硬件逻辑中,有三个主要处理:学习模块20的学习处理,分类模块50的分类处理(以节点为单位),以及分类模块50的分类处理(以树为单位)。
学习模块的处理
这里,从样本数据的特征量和分裂分数的计算中创建梯度直方图是主要的。在从样本数据的特征量创建梯度直方图时,有必要读取每个深度(层)的所有样本数据。这种估计是最大值,因为在一些样本中,数据学习是在树的深度较浅的阶段完成的。分裂分数的计算是指梯度直方图的所有容器(bin),并且需要通过容器(bin)的数量(特征量的维度)得到的时钟。基于以上,学习模块20的处理时钟Clearning的数量写为下面的公式(23)。
Clearning=(nsample_train*maxdepth)+(nfeature*nnode) (23)
这里,nsample_train是用于学习决策树的样本大小,通常是从所有样本数据中子采样的一组数据。此外,maxdepth是决策树的最大深度,nfeature是容器(bin)的数量(特征量的维度),n节点是节点的数量。
分类模块的处理(以节点为单位)
这里,使用学习的节点的结果,将样本数据分配给左侧或右侧的下一层节点。由于对于每个深度处理的样本数据的大小是相同的,因此时钟数CClassification_节点被写为下面的公式(24)。实际上,一些节点的学习在中途完成,下面的估计是最大值。
CClassification_node=nsample_train*maxdepth (24)
分类模块的处理(以树为单位)
这里,在完成一个决策树的学习之后,针对每个样本数据更新梯度信息以用于学习下一决策树。为此,需要使用学习的决策树对所有样本数据进行预测。在以树为单位的处理中,出现对应于深度的延迟。在这种情况下,时钟数CClassification_tree被写为公式(25)。
CClassification_tree=nsample_all+maxdepth (25)
这里,所有样本数据意味着在子采样之前所有训练样本数据和所有验证样本数据的总和。
基于以上,一个决策树的学习处理所需的时钟数Ctree(最大值)被写为下面的公式(26)。
Ctree=Clearning+CClassification_node+CClassification_tree (26)
由于GBDT配置了许多决策树,让ntree为决策树的数量,整个GBDT模型的时钟数Cgbdt写为公式(27)。
Cgbdt=Ctree*ntree (27)
以上是上述Feature Parallel的估计。在许多模块并行布置并且数据被分割的数据并行(Data Parallelism)中,如果数据的数量在每个模块中的节点之间平衡,则速度基本上可以通过模块数量的因数增加。不平衡程度取决于样本数据以及样本数据如何被划分为模块。在下文中,使用实际数据审查该天花板。在预测中,即使考虑到天花板,也可以预期50%或更高的效率。
使用数据
作为测试样本数据,从100,000个样本中随机选择训练数据和分类数据(评估数据)。以下是数据集概述。
-分类数量:2
-特征量维度:129
-训练数据大小:63415
-评估数据大小:31707
下面(表1)提供速度测量条件。假设操作中的FPGA的时钟频率是100[MHz](实际上,可能更高)。
表1
说明 参数
总样本大小 95122
计算的样本大小 63415
特征量的数量 256
树的最大深度 6
提升中的树的数量 100
数据子采样率为 0.5
特征子采样率 1
时钟频率(逻辑) 100MHz
硬件逻辑的估计
下面(表2)提供使用上述计算速度的方程式估计上述架构中的学习速度。目前的估计是以所有样本数据被处理到末端分支并且显示最差值为前提。
表2
时钟 时间[msec] 说明
206629 2.07 以节点为单位的学习时间
190245 1.90 以节点为单位的分类的时间
95128 0.95 以树为单位的分类的时间
492002 4.92 以树为单位的学习时间
49200200 492.00 总学习时间
包括CPU/GPU中的测量的比较结果
下面(表3)提供CPU/GPU中的测量结果。为了比较,还提供了硬件逻辑的估计结果。上述估计仅通过Feature Parallel获得。作为参考,添加了结合Data Parallel的估计结果。
表3
*1酷睿i7-5930K(6C12T 3.5GHz)
*2GPU GTX1080Ti/CPU酷睿i7英特尔酷睿i7 7700(4C8T 3.6GHz)
*3用数据并行效率75%的15个并行估计的数据并行(基于KC705板)
*4用数据并行效率50%的240个并行估计的数据并行(基于AWS f1.16xlarge
实例)
对于当前数据,可以理解GPU的使用比CPU慢。根据LightGBM的开发者微软的说法,GPU的使用速度提高达3到10倍,尽管它严重依赖于数据。但是,就目前的数据而言,GPU的加速失败。该结果表明,GBDT算法对GPU的加速并不比CNN更容易。CPU的结果表明,与最基本的库XGBoost相比,后来的LightGBM快了大约10倍。只有Feature Parallel的硬件逻辑比个人计算机(PC)中最快的CPU(LightGBM)快约2.3倍。当数据并行效率75%的15个并行的数据并行一起使用时,速度快25倍或更多。考虑到AWS f1.16xlarge实例,当240个并行的效率为50%时,速度快275倍或更多。然而,这种估计是内存带宽是限制的情况,并且尚未考虑是否可以将这种逻辑安装在FPGA中。
FPGA中的功耗估计为几[W]。考虑到CPU和GPU中的功耗为100[W]或更高,速度加上两位数的功耗差异可能导致功率的三位数差异。
上述实施例是说明性的,而非限制本发明。因此,鉴于上述教导,可以有许多附加的修改和变化。例如,在本公开和所附权利要求的范围内,本文中不同说明性和示例性实施例的至少一个元素可彼此组合或互相替换。此外,实施例的组件的特征,例如数量,位置和形状不限于实施例,因此可以优选地设置。因此,应理解,在所附权利要求的范围内,本发明的公开内容可以不同于本文具体描述的方式实践。
本文描述的方法步骤、处理或操作不应被解释为必须要求它们以所讨论或说明的特定顺序执行,除非明确地标识为执行顺序或通过上下文清楚地标识。还应理解,可以采用另外的或替代的步骤。
此外,任何上述装置,设备或单元可以实施为硬件装置,例如专用电路或装置,或者实施为硬件/软件组合,例如运行软件程序的处理器。
此外,如上所述,本发明的上述和其他方法中的任何一个可以以存储在任何种类的存储介质中的计算机程序的形式实现。存储介质的示例包括但不限于软盘、硬盘、光盘、磁光盘、磁带、非易失性内存、半导体内存、只读内存(ROM)等。
或者,本发明的上述和其他方法中的任何一个可以通过专用集成电路(ASIC)、数字信号处理器(DSP)或现场可编程门阵列(FPGA)来实施,通过互连适当的方式来准备。传统组件电路的网络或其组合与一个或多个传统的通用微处理器或相应编程的信号处理器的组合。
所描述的实施例的每个功能可以由一个或多个处理电路或电路实施。处理电路包括编程处理器、因为处理器包括电路。处理电路还包括例如专用集成电路(ASIC)、数字信号处理器(DSP)、现场可编程门阵列(FPGA)和用于执行所述功能的传统电路部件的装置。

Claims (16)

1.一种学习分类装置,其特征在于,包括:
数据内存,所述数据内存是静态随机存取存储器SRAM,以及所述数据内存被配置为存储用于学习决策树的训练数据;
模型内存,所述模型内存被配置为存储所述决策树的节点的数据,包括用于为所述决策树的各个层存储数据的多个层内存;
学习单元,所述学习单元是硬件模块,以及所述学习单元被配置为通过单次访问从所述数据内存读取包括在所述训练数据中的多个特征量,并基于所述多个特征量导出节点的数据,以学习所述决策树,和
包括至少对应于所述训练数据的所述特征量的数量的内存,和
被配置为将从所述数据内存读取的所述训练数据的所述特征量的直方图存储到各个所述内存中,并基于所述特征量一次执行处理,和
包括增益计算单元,所述增益计算单元对应于所述内存的数量,并且被配置为基于存储在所述内存中的所述特征量的直方图来计算阈值的分裂分数;以及
包括导出单元,被配置为导出若干分裂分数最佳的特征量和阈值,作为所述节点的数据;和
分类单元,被配置为基于由所述学习单元导出的所述节点的所述数据,确定从所述数据内存读取的所述训练数据从所述节点分裂到何处,基于所述决策树中的初始节点处的分裂的结果,在所有层中并行地从多个所述层内存中读取与下一个节点相对应的数据。
2.根据权利要求1所述的学习分类装置,其特征在于,所述分类单元被配置为从所述数据内存读取所述训练数据的标签信息以及所述训练数据的所述特征量。
3.根据权利要求1所述的学习分类装置,其特征在于,所述学习单元被配置为基于所学习的决策树的学习结果,通过梯度提升来学习下一棵决策树。
4.根据权利要求3所述的学习分类装置,其特征在于,所述分类单元被配置为计算对应于每个训练数据的误差函数的一阶梯度和二阶梯度,以及用于所述训练数据的叶权重,并将计算出的一阶梯度、二阶梯度和叶权重写入所述数据内存,以便通过所述学习单元通过梯度提升来学习下一棵决策树。
5.根据权利要求1所述的学习分类装置,其特征在于,
所述数据内存包括至少两个存储体区域,用于存储所述训练数据的地址,
每当要学习的节点的层切换时,至少两个存储体区域在用于读取的存储体区域和用于写入的存储体区域之间切换,
所述学习单元被配置为从用于所述读取的存储体区域读取在节点处分裂的训练数据的地址,并从由所述地址指示的所述数据内存的区域读取所述训练数据,和
所述分类单元将在所述节点处分裂的所述训练数据的地址写入所述用于写入的存储体区域。
6.根据权利要求5所述的学习分类装置,其特征在于,
所述分类单元被配置为
按照从所述用于写入的存储体区域的较小地址开始的顺序,将分裂为所述节点下面的节点中的一个的所述训练数据的地址写入所述用于写入的存储体区域,和
按照从所述用于写入的存储体区域的较大地址开始的顺序,将分裂为所述节点下面的其他节点的所述训练数据的地址写入所述用于写入的存储体区域。
7.根据权利要求1所述的学习分类装置,其特征在于,所述分类单元被配置为在分类中执行对分类数据的分类操作,同时共享用于在学习中对所述训练数据执行分类操作的配置。
8.根据权利要求1所述的学习分类装置,其特征在于,
所述学习单元配置为
当要学习的所述节点要进一步分裂时,将标志信息作为所述节点的数据写入模型内存,和
当要学习的所述节点不再进一步分裂时,将标志信息作为所述节点的数据写入模型内存。
9.根据权利要求8所述的学习分类装置,其特征在于,
所述数据内存被配置为存储分类数据,所述分类数据使用所述决策树分类,
所述模型内存包括独立端口,用于一次读取所述决策树的各个层的节点的数据,以及
所述分类单元被配置为基于同时在从模型内存的端口读取的所述层处的节点的数据,对于从所述数据内存读取的分类数据,执行各个层的分裂处理,作为流水线处理。
10.根据权利要求9所述的学习分类装置,其特征在于,所述分类单元被配置为通过单次访问从所述数据内存读取包含在一片分类数据中的所有特征量,并基于从模型内存中读取的所述决策树的所述节点的所述数据来执行分裂处理。
11.根据权利要求9或10所述的学习分类装置,其特征在于,
所述分类单元被配置为
在通过所述学习单元学习决策树的过程中,对于从所述数据内存读取的所述训练数据,对所述决策树的所述节点的每个数据执行分裂处理,
在对所述分类数据的分类中,基于从模型内存的端口同时读取的所述节点的所述数据,执行流水线处理,所述流水线处理是对从所述数据内存读取的所述分类数据的层的分裂处理。
12.根据权利要求9所述的学习分类装置,其特征在于,
所述分类单元包括多个分类单元,和
所述多个分类单元中的每一个对存储在所述数据内存中的多片分类数据中的分配的分类数据执行分裂处理。
13.根据权利要求1所述的学习分类装置,其特征在于,所述学习单元使用所述训练数据的所有所述特征量中的一部分所述特征量来执行学习。
14.根据权利要求1所述的学习分类装置,其特征在于,至少所述数据内存、所述学习单元和所述分类单元配置在现场可编程门阵列(FPGA)上。
15.根据权利要求1所述的学习分类装置,其特征在于,所述学习单元使用所有所述训练数据中的一部分所述训练数据来执行学习。
16.一种学习分类方法,其特征在于,包括:
通过单次访问从数据内存中读取包括在训练数据中的多个特征量,并且基于所述多个特征量导出节点的数据,以学习决策树,其中所述数据内存被配置为存储用于学习所述决策树的训练数据;和
由模型内存存储所述决策树的节点的数据,所述模型内存包括用于为所述决策树的各个层存储数据的多个层内存;
将从所述数据内存读取的所述训练数据的所述特征量的直方图存储到各个所述内存中,并基于所述特征量一次执行处理,其中,所述内存至少对应于所述训练数据的所述特征量的数量,和
使用对应于所述内存的数量的增益计算单元,基于存储在所述内存中的所述特征量的直方图来计算阈值的分裂分数;和
导出若干分裂分数最佳的特征量和阈值,作为所述节点的数据;
基于所述导出的所述节点的数据,确定从所述数据内存读取的所述训练数据从所述节点分裂到何处,基于所述决策树中的初始节点处的分裂的结果,在所有层中并行地从多个所述层内存中读取与下一个节点相对应的数据。
CN201910194056.8A 2018-03-16 2019-03-14 学习分类装置和学习分类方法 Active CN110276367B (zh)

Applications Claiming Priority (6)

Application Number Priority Date Filing Date Title
JP2018-050250 2018-03-16
JP2018050250A JP7069897B2 (ja) 2018-03-16 2018-03-16 学習識別装置および学習識別方法
JP2018050252A JP7040168B2 (ja) 2018-03-16 2018-03-16 学習識別装置および学習識別方法
JP2018050254A JP7069898B2 (ja) 2018-03-16 2018-03-16 学習識別装置および学習識別方法
JP2018-050252 2018-03-16
JP2018-050254 2018-03-16

Publications (2)

Publication Number Publication Date
CN110276367A CN110276367A (zh) 2019-09-24
CN110276367B true CN110276367B (zh) 2024-02-09

Family

ID=65766863

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910194056.8A Active CN110276367B (zh) 2018-03-16 2019-03-14 学习分类装置和学习分类方法

Country Status (3)

Country Link
US (1) US11354601B2 (zh)
EP (1) EP3540654B1 (zh)
CN (1) CN110276367B (zh)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018022011A1 (en) * 2016-07-26 2018-02-01 Hewlett-Packard Development Company, L.P. Indexing voxels for 3d printing
US11250497B2 (en) * 2018-05-16 2022-02-15 Sap Se Data generation in digital advertising ecosystems
JP7087695B2 (ja) 2018-06-07 2022-06-21 株式会社リコー 学習装置および学習方法
JP7087825B2 (ja) 2018-08-23 2022-06-21 株式会社リコー 学習装置および学習方法
CN109376590A (zh) * 2018-09-07 2019-02-22 百度在线网络技术(北京)有限公司 基于无人车的障碍物分类方法、装置、设备以及存储介质
JP7211020B2 (ja) 2018-11-05 2023-01-24 株式会社リコー 学習装置および学習方法
JP7176359B2 (ja) * 2018-11-05 2022-11-22 株式会社リコー 学習装置および学習方法
EP3709229A1 (en) 2019-03-13 2020-09-16 Ricoh Company, Ltd. Learning device and learning method
JP7363145B2 (ja) 2019-07-12 2023-10-18 株式会社リコー 学習装置および学習方法
CN111027435B (zh) * 2019-12-02 2022-12-02 清华大学 一种基于梯度提升决策树的识别系统、装置和方法
CN110991619A (zh) 2019-12-09 2020-04-10 Oppo广东移动通信有限公司 神经网络处理器、芯片和电子设备
CN111243662B (zh) * 2020-01-15 2023-04-21 云南大学 基于改进XGBoost的泛癌症基因通路预测方法、系统和存储介质
US11748656B1 (en) * 2020-02-19 2023-09-05 American Express Travel Related Services Company, Inc. Decision tree learning with missing data
CN111368901A (zh) * 2020-02-28 2020-07-03 深圳前海微众银行股份有限公司 基于联邦学习的多方联合建模方法、设备和介质
CN111309982A (zh) * 2020-03-05 2020-06-19 上海交通大学 机器学习数据索引结构的自适应结构调整方法及系统
US11182980B1 (en) 2020-03-26 2021-11-23 Apple Inc. Procedural generation of computer objects
US11568317B2 (en) 2020-05-21 2023-01-31 Paypal, Inc. Enhanced gradient boosting tree for risk and fraud modeling
CN111783827B (zh) * 2020-05-27 2024-07-19 中能瑞通(北京)科技有限公司 一种基于负荷数据的企业用户分类方法和装置
CN112286756A (zh) * 2020-09-29 2021-01-29 深圳致星科技有限公司 用于联邦学习异构处理系统的fpga功耗预测方法及系统
CN112367396B (zh) * 2020-11-06 2022-05-17 支付宝(杭州)信息技术有限公司 分布式集群中的样本特征分位点确定方法及装置
CN113157953B (zh) * 2021-02-24 2022-04-29 山东大学 一种跨终端图片传输方法及系统
CN114217743B (zh) * 2021-09-17 2024-05-31 支付宝(杭州)信息技术有限公司 用于分布式图学习架构的数据存取方法及装置
CN114266306A (zh) * 2021-12-20 2022-04-01 北京达佳互联信息技术有限公司 基于机器学习模型实现数据分类的方法及装置、电子设备
US20230267604A1 (en) * 2022-02-24 2023-08-24 Bot Image, Inc. Automated prostate cancer detection and diagnosis using a boosted ensemble of bagging ensemble models
CN115017549B (zh) * 2022-08-09 2022-11-18 深圳致星科技有限公司 隐私计算、隐私数据和联邦学习的决策树计算装置及系统
CN116911806B (zh) * 2023-09-11 2023-11-28 湖北华中电力科技开发有限责任公司 基于互联网+的电力企业能源信息管理系统
CN117932313B (zh) * 2024-03-25 2024-08-13 武汉体育学院 基于人工智能的皮划艇技术动作预测方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102331992A (zh) * 2010-06-09 2012-01-25 微软公司 分布式决策树训练
CN105550374A (zh) * 2016-01-29 2016-05-04 湖南大学 Spark云服务环境下面向大数据的随机森林并行机器学习方法
CN105718493A (zh) * 2014-12-05 2016-06-29 阿里巴巴集团控股有限公司 基于决策树的搜索结果排序方法及其装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5032602B1 (zh) 1970-10-23 1975-10-22
JPH09232967A (ja) 1996-02-22 1997-09-05 Fujitsu Ltd データ圧縮装置及び復元装置
JP4308113B2 (ja) 2004-09-16 2009-08-05 キヤノンItソリューションズ株式会社 データ分析装置及びその方法、プログラム
JP5243888B2 (ja) 2008-08-18 2013-07-24 日本放送協会 データ分類装置及びデータ分類プログラム
JP5032602B2 (ja) 2010-01-21 2012-09-26 株式会社東芝 認識装置
JP2014182748A (ja) 2013-03-21 2014-09-29 Fujitsu Ltd 信号処理装置、信号処理方法、及び信号処理プログラム
JP2014241060A (ja) 2013-06-12 2014-12-25 日本電気株式会社 木モデル学習装置、木モデル学習方法および木モデル学習プログラム
JP5860861B2 (ja) 2013-10-11 2016-02-16 日本電信電話株式会社 焦点推定装置、モデル学習装置、方法、及びプログラム
JP6226701B2 (ja) 2013-11-05 2017-11-08 キヤノン株式会社 データ処理方法及び装置、データ識別方法及び装置、プログラム
US10255911B2 (en) * 2014-12-17 2019-04-09 Intel Corporation System and method of automatic speech recognition using parallel processing for weighted finite state transducer-based speech decoding
US9547881B2 (en) 2015-01-29 2017-01-17 Qualcomm Incorporated Systems and methods for calculating a feature descriptor

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102331992A (zh) * 2010-06-09 2012-01-25 微软公司 分布式决策树训练
CN105718493A (zh) * 2014-12-05 2016-06-29 阿里巴巴集团控股有限公司 基于决策树的搜索结果排序方法及其装置
CN105550374A (zh) * 2016-01-29 2016-05-04 湖南大学 Spark云服务环境下面向大数据的随机森林并行机器学习方法

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
a communication-efficient parallel algorithm for decision tree;Qi Meng等;《arxiv.org》;20161104;第2页倒数第1段-第8页倒数第1段 *
FastBDT A speed-optimized and cache-friendly implementation of stochastic gradient-boosted decision trees for multivariate classification;Thomas Keck;《arxiv.org》;20160920;第2页第1段-第6页第3段 *

Also Published As

Publication number Publication date
EP3540654B1 (en) 2024-05-01
US20190287023A1 (en) 2019-09-19
EP3540654A1 (en) 2019-09-18
US11354601B2 (en) 2022-06-07
CN110276367A (zh) 2019-09-24

Similar Documents

Publication Publication Date Title
CN110276367B (zh) 学习分类装置和学习分类方法
CN111695693B (zh) 学习装置及学习方法
US11526803B2 (en) Learning device and method for implementation of gradient boosted decision trees
US11436538B2 (en) Learning by gradient boosting using a classification method with the threshold for the feature amount
EP3803720B1 (en) Learning device, and learning method
US11645573B2 (en) Learning device and learning method
US20200143284A1 (en) Learning device and learning method
US20200050963A1 (en) Learning device and learning method
JP7069897B2 (ja) 学習識別装置および学習識別方法
JP7069898B2 (ja) 学習識別装置および学習識別方法
US11599824B2 (en) Learning device and learning method
US11797884B2 (en) Learning device and learning method
JP7040168B2 (ja) 学習識別装置および学習識別方法
US20200050970A1 (en) Learning device and learning method
US11681926B2 (en) Learning device and learning method
RU2771750C1 (ru) Обучающее устройство и способ обучения
JP7200765B2 (ja) 学習装置および学習方法

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