KR20230012632A - 결정 트리 앙상블의 분류를 위한 아키텍처 및 방법 - Google Patents
결정 트리 앙상블의 분류를 위한 아키텍처 및 방법 Download PDFInfo
- Publication number
- KR20230012632A KR20230012632A KR1020227044809A KR20227044809A KR20230012632A KR 20230012632 A KR20230012632 A KR 20230012632A KR 1020227044809 A KR1020227044809 A KR 1020227044809A KR 20227044809 A KR20227044809 A KR 20227044809A KR 20230012632 A KR20230012632 A KR 20230012632A
- Authority
- KR
- South Korea
- Prior art keywords
- tree
- feature
- rank
- threshold
- classified
- Prior art date
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N20/00—Machine learning
- G06N20/20—Ensemble learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/01—Dynamic search techniques; Heuristics; Dynamic trees; Branch-and-bound
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Physics & Mathematics (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Artificial Intelligence (AREA)
- Medical Informatics (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
결정 트리 앙상블의 분류를 위한 아키텍처 및 방법
결정 트리 앙상블의 분류를 위한 아키텍처는 순위 계산 블록(1) 및 트리 처리 블록(2)을 포함한다. 순위 계산 블록(1)은 분류될 피처 fi 당 하나의 계산 유닛(10)을 포함하며, 여기서 각각의 계산 유닛(10)은 메모리(11) 및 로직(12)을 포함한다. 메모리(11)는 결정 트리 앙상블의 트리의 임계 값을 저장하도록 구성되며, 여기서 메모리는 분류될 피처 당 하나의 그룹에 임계 값을 저장하도록 배열된다. 그룹의 임계 값은 임계값 인덱스에 따라 정렬된다. 로직(12)은 대응하는 임계 값 그룹의 임계 값의 노드 비교를 수행하고 상기 비교의 결과로서 순위를 출력하도록 배열되며, 여기서 순위는 상기 임계 값에 액세스하기 위한 인코딩된 어드레스를 나타낸다. 트리 처리 블록(2)은 결정 트리 앙상블의 트리 당 하나의 트리 처리 유닛(20)을 포함하고 각각의 처리 유닛은 분류될 피처 fi의 클래스를 순위의 함수로서 결정하도록 구성된다.
결정 트리 앙상블의 분류를 위한 아키텍처는 순위 계산 블록(1) 및 트리 처리 블록(2)을 포함한다. 순위 계산 블록(1)은 분류될 피처 fi 당 하나의 계산 유닛(10)을 포함하며, 여기서 각각의 계산 유닛(10)은 메모리(11) 및 로직(12)을 포함한다. 메모리(11)는 결정 트리 앙상블의 트리의 임계 값을 저장하도록 구성되며, 여기서 메모리는 분류될 피처 당 하나의 그룹에 임계 값을 저장하도록 배열된다. 그룹의 임계 값은 임계값 인덱스에 따라 정렬된다. 로직(12)은 대응하는 임계 값 그룹의 임계 값의 노드 비교를 수행하고 상기 비교의 결과로서 순위를 출력하도록 배열되며, 여기서 순위는 상기 임계 값에 액세스하기 위한 인코딩된 어드레스를 나타낸다. 트리 처리 블록(2)은 결정 트리 앙상블의 트리 당 하나의 트리 처리 유닛(20)을 포함하고 각각의 처리 유닛은 분류될 피처 fi의 클래스를 순위의 함수로서 결정하도록 구성된다.
Description
본 개시는 결정 트리 앙상블의 분류를 위한 아키텍처 및 방법에 관한 것이다.
랜덤 포레스트(random forest), RF, 또는 결정 트리 앙상블(Decision tree ensembles), 또는 줄여서 DTE는 하드웨어 및 소프트웨어 둘 다에서 다양한 분류 작업을 위해 사용된다. DTE는 각각의 트리를 개별적으로 순차적으로 트래버싱하고 그 다음 평균화 또는 다수 투표(majority vote)에 의해 각각의 트리 출력을 집계함으로써 직관적으로 평가된다. 상이한 접근법은 모든 노드 비교를 병렬로 계산하고 트리를 집계를 위한 트리 출력을 계산하거나 집계된 출력을 직접 계산하는 부울 함수(Boolean function)로 변환하는 것이다.
DTE는 random forest, AdaBoost, 또는 gradient boosted trees와 같은 머신 러닝 알고리즘에 의해 훈련될 수 있다. 결정 트리 앙상블의 분류를 위한 아키텍처는 FPGA 또는 ASIC 기술에서 DTE의 추론을 위한 하드웨어 아키텍처로서 구성될 수 있다. 그러한 아키텍처는: 스마트 센서, 무선 센서 네트워크, 구조 건전성 모니터링, 예측 정비, 및 헬스케어와 같지만 이에 제한되지 않는 에지 머신 러닝의 분야에서 다양한 애플리케이션에 통합될 수 있다.
결정 트리 앙상블 분류를 위한 아키텍처, 또는 DTE 하드웨어 가속기는 통상 앙상블의 결정 트리 당 하나의 트리 처리 유닛 및 도 13에 도시된 바와 같이 앙상블 투표를 계산하는 집계 유닛으로 구성된다. 그러한 트리 처리 유닛은 또한 자체적으로 단일 결정 트리를 위한 하드웨어 가속기로서 사용될 수 있다.
도 14a는 단일 분류 트리의 예를 도시한다. 새로운 세트의 피처(feature) 입력에 대한 클래스(class)를 예측하기 위해, 트리의 각각의 노드는 피처 중 하나의 피처 fi을 노드 임계값 tj에 비교한다. 루트 노드(root node)에서 시작하여, 다음 노드에서의 비교의 결과는 트리를 통한 경로를 정의하며, 이는 리프 노드(leaf node)에서 종료된다. 트리는 도달된 리프에 대응하는 클래스(class) Cx에 대해 투표한다. 그 다음, 앙상블의 모든 트리 투표는 트리 앙상블의 최종 투표를 얻기 위해 다수 투표에 의해 집계된다. 노드에 의해 비교되는 피처 f의 인덱스, 임계 값 t, 리프 노드에서의 클래스 라벨 C, 및 트리의 구조는 훈련에 의해 정의되는 매개변수이다.
2개 유형의 아키텍처가 결정 트리를 구현하기 위해 널리 사용된다. 기본적으로, 직렬 아키텍처는 결정 트리의 모든 매개변수를 메모리에 저장하고 그것을 루트(root)에서 리프(leaf)까지 평가한다. 병렬 아키텍처는 각각의 노드에 대해 하나의 비교기를 갖고 전체 트리를 한 번에 평가한다. 더 상세히 설명하면, 직렬 아키텍처는, 도 14b에 묘사된 바와 같이, 루트에서 리프 노드까지 훈련된 모델의 결정 트리를 트래버싱한다. 각각의 노드에서, 그것은 메모리 또는 입력 멀티플렉서로부터 주어진 노드의 임계값 및 피처 입력을 페치한다. 그 다음, 그것은 2개를 비교하고 방문할 다음 노드로서 좌측 또는 우측 차일드 어드레스(child address)를 선택한다. 이것은 리프 노드에 도달하고 대응하는 클래스 투표를 출력할 때까지 이를 행한다. 병렬 아키텍처는, 도 14c에 도시된 바와 같이, 트리의 모든 노드 비교를 한 번에 계산한다. 각각의 비교기는 하나의 트리 노드를 나타낸다. 임계값은 비교기를 갖는 레지스터에 저장되며, 이는 그것이 나타내는 노드에 따라 피처 입력에 연결된다. 트리 투표는 트리 구조를 나타내는 부울 함수에 의해 비교기 출력으로부터 계산된다. 부울 함수는 훈련된 모델에 특정되고 다음과 같이 트리로부터 유도된다.
도 14c의 병렬 아키텍처는 각각의 노드를 고정된 비교기로서 구현한다. 트리 구조는 비교기 출력으로부터 클래스 c에 대해 트리 투표를 계산하는 부울 함수 로서 공식화될 수 있다. 부울 함수는 다음과 같이 표현될 수 있다:
예를 들어, 도 14c(2)에 묘사된 트리는 다음을 야기한다
및
그러나, 직렬 및 병렬 아키텍처 둘 다는 개선에 대한 여지를 남긴다.
본 개시의 목적은 결정 트리 앙상블의 분류를 위한 아키텍처 및 결정 트리 앙상블의 분류를 위한 방법을 제공하는 것이며 이는 예를 들어 속도, 에너지 소비 및/또는 영역(area)의 관점에서 결정 트리 앙상블 분류 아키텍처를 개선한다.
이러한 목적은 독립항의 발명 대상에 의해 달성된다. 추가 개발 및 실시예는 종속항에서 설명된다.
임의의 하나의 실시예와 관련하여 설명되는 임의의 특징은 단독으로, 또는 본원에 설명되는 다른 특징과 조합으로 사용될 수 있고, 또한 실시예 중 임의의 다른 실시예의 하나 이상의 특징과 조합으로, 또는 대안으로서 설명되지 않는 한 실시예 중 임의의 다른 실시예의 임의의 조합으로 사용될 수 있다는 점이 이해될 수 있다. 더욱이, 아래에 설명되지 않는 등가 및 수정은 또한 결정 트리 앙상블의 분류를 위한 아키텍처 및 결정 트리 앙상블의 분류를 위한 방법의 범위로부터 벗어나는 것 없이 이용될 수 있으며, 이는 첨부된 청구항에 정의된다.
다음은 결정 트리 앙상블의 분류의 분야에서 개선된 개념에 관한 것이다. 제안된 개념은 분류 및 회귀 트리 그리고 결정 트리 앙상블, 줄여서 DTE의 추론을 해결하기 위한 아키텍처 및 방법을 제안한다. 제안된 개념은, 예를 들어 FPGA 또는 ASIC 기술에서, 하드웨어 아키텍처에 기초하여 구현될 수 있다. 그러나, 방법은 또한 소프트웨어로 구현될 수 있다.
제안된 개념은 이진 검색 또는 메모리 내(in-memory) 검색과 같은 로직을 사용하여 모든 노드를 빠르게 계산하기 위해 주어진 결정 트리 앙상블의 모든 비교의 임계값의 그룹화 및 사전-정렬(pre-sorting)을 제안한다. 더욱이, 아키텍처는 분류 속도를 추가로 높이기 위해 미리계산된 엔트리를 보유하는 룩업 테이블로 보완될 수 있다.
적어도 하나의 실시예에서, 결정 트리 앙상블의 분류를 위한 아키텍처는 순위(rank) 계산 블록 및 트리 처리 블록을 포함한다. 순위 계산 블록은 분류될 한 세트의 피처로부터 피처 당 하나의 계산 유닛을 포함한다. 각각의 계산 유닛은 메모리 및 로직을 포함한다. 메모리는 결정 트리 앙상블에 트리의 임계 값을 저장하도록 구성된다. 메모리는 피처 당 하나의 그룹에 임계 값을 저장하도록 구성된다. 더욱이, 그룹의 임계 값은 이진 검색과 같은 효율적인 검색 알고리즘을 허용하기 위해 임계값 인덱스에 따라 사전-정렬된다. 임계값 인덱스는 "<" 또는 ">"와 같은 검색 기준을 정의하는 것을 허용한다.
로직은 대응하는 임계 값 그룹의 임계 값의 비교를 수행하고 평가된 피처 값의 순위를 출력하도록 배열된다. 순위는 임계 값을 나타내는 인코딩된 어드레스를 나타낸다. 트리 처리 블록은 순위의 함수로서 분류될 한 세트의 피처의 클래스를 결정하도록 구성된다. 예를 들어, 일부 실시예에서, 트리 처리 블록은 결정 트리 앙상블에서 트리 당 하나의 트리 처리 유닛을 포함한다. 각각의 처리 유닛은 순위의 함수로서 분류될 한 세트의 피처의 클래스를 결정하도록 구성된다. 다른 실시예에서, 하나의 트리 처리 유닛만이 있을 수 있으며, 이는 아래에서 더 상세히 논의되는 바와 같이 다수의 룩업(look-up) 테이블 및 결합기를 포함한다.
예비 결과는 새로운 아키텍처가, 각각 2개의 성능 지수(figures of merit) 중 하나에서만 뛰어난, 직렬 및 병렬 아키텍처 둘 다의 하드웨어 비용 및 에너지 효율을 따라잡을 수 있다는 점을 보여준다. 순위는 그들이 모든 노드의 계산된 비교와 동일한 정보를 보유함에 따라 트리 처리 블록에 의한 추가 처리를 위해 사용될 수 있다.
적어도 하나의 실시예에서, 분류될 한 세트의 피처로부터의 피처는 피처 인덱스 를 갖는 fi로서 정의되며, 여기서 I는 분류될 피처의 수를 나타낸다. 임계 값은 결정 트리 앙상블에서 트리의 노드를 나타낸다.
로직은 분류될 한 세트의 피처 fi를 수신하고 임계값을 피처 미만 및 초과 값으로 분할하는 각각의 피처에 대한 순위를 반환하는 검색을 수행하도록 배열된다. 순위는 예를 들어 대응하는 트리 처리 유닛으로 출력된다. 마지막으로, 트리 처리 유닛은 결정 트리 앙상블에서 결정 트리의 구조를 각각 나타내는 부울 함수를 각각 수신된 순위의 함수로서 평가함으로써 클래스를 결정하도록 구성된다. 대안적으로, 순위는 대응하는 룩업 테이블에 출력된다.
적어도 하나의 실시예에서, 트리 처리 블록은 트리 처리 유닛으로부터 결정된 클래스를 수신하고 결정된 클래스의 함수로서 앙상블 투표를 형성하도록 배열되는 집계 유닛을 포함한다.
메모리의 적어도 하나의 실시예에서, 메모리는 분류될 한 세트의 피처로부터의 각각의 피처에 대한 하나의 그룹의 메모리 셀을 포함한다. 그룹 내의 메모리 셀은 임계값 인덱스에 따라 어드레스가능하다.
적어도 하나의 실시예에서, 로직은 피처를 수신하도록 동작가능한 제1 입력 및 메모리로부터 임계 값을 수신하도록 동작가능한 제2 입력을 더 포함하는 비교기를 포함한다.
적어도 하나의 실시예에서, 트리 처리 유닛은 어드레스 디코딩된 순위에 기초하여 부울 함수를 평가하기 위해 수신된 순위의 어드레스 디코딩을 수행하도록 배열되는 하나 이상의 비교기를 포함한다. 비교기는 대응하는 임계 값 그룹의 임계 값의 노드 비교를 나타내는 순위에 기초하여 비교를 수행하도록 동작가능하다. 어떤 의미에서, 순위는 어드레스 비교를 수행하기 위해 디코딩된다.
적어도 하나의 실시예에서, 순위 계산 블록으로부터의 계산 유닛 각각은 전용 룩업 테이블에 각각 연결된다. 룩업 테이블은 룩업 테이블에 연결되는 계산 유닛으로부터 전용 순위를 수신하도록 동작가능한 입력측을 포함한다. 더욱이, 룩업 테이블은 입력 순위의 함수와 같은 중간 값을 출력하도록 동작가능하다.
적어도 하나의 실시예에서, 트리 처리 유닛 각각은 전용 룩업 테이블에 연결될 수 있다. 룩업 테이블은 룩업 테이블에 연결되는 트리 처리 유닛에 중간 값을 제공하도록 배열되는 출력측을 포함한다. 트리 처리 유닛은 분류될 한 세트의 피처의 클래스를 수신된 중간 값의 함수로서 결정하도록 동작가능하다.
다른 실시예에서, 트리 처리 유닛 각각에 대한 전용 룩업 테이블이 더 이상 없을 수 있다. 오히려, 룩업 테이블은 트리 처리 블록의 일부로서 간주될 수 있고 결합기로 보완될 수 있다. 트리 구조에 대응하는 내용(Content)은 피처 당 하나의 룩업 테이블에 결합되는 모든 트리에 대해 저장된다. 룩업 테이블 엔트리는 가능한 구성에 대응하고, 결합기와 함께 트리 처리 블록을 형성한다. 그러나, 수 개의 트리는 또한 내부적으로 "서브-앙상블"로 결합될 수 있다.
적어도 하나의 실시예에서, 아키텍처는 산술 유닛을 갖는 결합기를 더 포함한다. 결합기는 중간 값을 수신하도록 동작가능하고 중간 값을 결합하고/하거나 가중화하고 분류될 피처의 클래스를 출력하도록 동작가능하다. 결합기는 모든 트리 또는 서브-앙상블에 대해 공통 유닛으로서 구현될 수 있다.
적어도 하나의 실시예에서, 룩업 테이블은 "미만(less than)" 또는 "초과(greater than)" 비교를 수행하도록 동작가능한 하나 이상의 비교기를 포함하는 연관(associative) 메모리에 기초하여 구현된다.
적어도 하나의 실시예에서, 결정 트리 앙상블의 분류의 방법은 다음 단계를 포함한다. 먼저, 결정 트리 앙상블의 결정 트리의 임계 값이 분류될 피처 당 하나의 그룹으로 저장된다. 그룹의 임계 값은 임계값 인덱스에 따라 정렬된다. 대응하는 임계 값 그룹의 임계 값의 노드 비교가 수행된다. 순위는 노드 비교의 결과로서 출력되며, 여기서 순위는 상기 임계 값을 평가하기 위한 인코딩된 어드레스를 나타낸다. 마지막으로, 분류될 한 세트의 피처의 클래스가 순위의 함수로서 결정된다.
적어도 하나의 실시예에서, 분류될 한 세트의 피처로부터의 피처는 피처 인덱스 를 갖는 fi로서 표시되며, 여기서 I는 분류될 피처의 수를 나타낸다. 임계 값은 결정 트리 앙상블에서 트리의 노드를 나타낸다. 방법은 로직에 의해 분류될 피처를 수신하고, 로직을 사용하여, 임계 값을 피처 값 미만 및 초과 값으로 분할하는 각각의 피처에 대한 순위를 반환하는 검색을 수행하는 단계를 더 포함한다. 순위는 각각 대응하는 트리 처리 유닛으로 출력된다. 분류될 피처의 클래스는 결정 트리 앙상블에서 트리를 각각 나타내는 부울 함수를 각각 수신된 순위의 함수로서 평가함으로써 결정된다.
적어도 하나의 실시예에서, 순위는 로직을 사용하는 이진 검색으로부터 결정된다. 대안적으로, 순위는 메모리 내 검색으로부터 결정된다.
적어도 하나의 실시예에서, 결정 트리의 평가는 룩업 테이블 엔트리로서 저장되는 미리-계산된 값으로 채워지는 룩업 테이블을 수반하고 여기서 클래스는 룩업 테이블 엔트리에 따라 결정된다.
적어도 하나의 실시예에서, 룩업 테이블 엔트리는 훈련 소프트웨어에 의해 결정된다. 훈련 소프트웨어는, 분류 아키텍처 및 DTE의 수학적 설명 둘 다가 등가이도록, 룩업 테이블 엔트리의 할당을 결정한다.
예시적 실시예의 도면에 대한 다음의 설명은 개선된 개념의 양태를 추가로 예시하고 설명할 수 있다. 동일한 구조 및 동일한 효과를 갖는 구성요소 및 부품 각각은 등가 참조 기로로 나타난다. 구성요소 및 부품이 상이한 도면에서 그들의 기능의 관점에서 서로 대응하는 한에 있어서, 그 설명은 다음 도면의 각각에 대해 반복될 필요는 없다.
추가 양태, 특징 및 장점은 다음의 상세 설명, 첨부 도면, 및 청구항으로부터 쉽게 명백해질 것이다.
도면에서:
도 1은 결정 트리 앙상블의 분류를 위한 아키텍처의 예시적 최상위 다이어그램을 도시하고,
도 2는 계산 유닛의 예시적 실시예를 도시하고,
도 3은 그룹화 및 사전 정렬 방식을 예시하기 위한 예시적 결정 트리 앙상블을 도시하고,
도 4는 계산 유닛의 예시적 실시예를 도시하고,
도 5는 상이한 훈련 알고리즘을 사용하여 상이한 데이터세트 상에서 훈련되는 수 개의 모델에 대한 예시적 아키텍처의 크기 FOM을 도시하고,
도 6은 상이한 훈련 알고리즘을 사용하여 상이한 데이터세트 상에서 훈련되는 수 개의 모델에 대한 예시적 아키텍처의 에너지 비교를 도시하고,
도 7은 계산 유닛의 다른 예시적 실시예를 도시하고,
도 8은 LUT를 사용하여 순위로부터 분류 결과를 산출하는 것을 도시하고,
도 9는 결합된 메모리 내 순위 계산 및 LUT 룩업의 예시적 실시예를 도시하고,
도 10은 LUT 엔트리로부터 분류 결과를 산출하는 것을 도시하고,
도 11은 I = 7 피처를 갖는 결합기의 예시적 실시예의 추가 상세를 도시하고,
도 12는 결합기의 예시적 실시예의 추가 상세를 도시하고,
도 13은 결정 트리 앙상블 분류를 위한 종래 기술의 아키텍처를 도시하고,
도 14는 분류 개념의 예를 도시한다.
도 1은 결정 트리 앙상블의 분류를 위한 아키텍처의 예시적 최상위 다이어그램을 도시하고,
도 2는 계산 유닛의 예시적 실시예를 도시하고,
도 3은 그룹화 및 사전 정렬 방식을 예시하기 위한 예시적 결정 트리 앙상블을 도시하고,
도 4는 계산 유닛의 예시적 실시예를 도시하고,
도 5는 상이한 훈련 알고리즘을 사용하여 상이한 데이터세트 상에서 훈련되는 수 개의 모델에 대한 예시적 아키텍처의 크기 FOM을 도시하고,
도 6은 상이한 훈련 알고리즘을 사용하여 상이한 데이터세트 상에서 훈련되는 수 개의 모델에 대한 예시적 아키텍처의 에너지 비교를 도시하고,
도 7은 계산 유닛의 다른 예시적 실시예를 도시하고,
도 8은 LUT를 사용하여 순위로부터 분류 결과를 산출하는 것을 도시하고,
도 9는 결합된 메모리 내 순위 계산 및 LUT 룩업의 예시적 실시예를 도시하고,
도 10은 LUT 엔트리로부터 분류 결과를 산출하는 것을 도시하고,
도 11은 I = 7 피처를 갖는 결합기의 예시적 실시예의 추가 상세를 도시하고,
도 12는 결합기의 예시적 실시예의 추가 상세를 도시하고,
도 13은 결정 트리 앙상블 분류를 위한 종래 기술의 아키텍처를 도시하고,
도 14는 분류 개념의 예를 도시한다.
도 1은 결정 트리 앙상블의 분류를 위한 아키텍처의 예시적 최상위 다이어그램을 도시한다. 아키텍처는 순위 계산 블록(1) 및 트리 처리 블록(2)을 포함한다. 순위 계산 블록(1)은 다수의 계산 유닛(10)을 포함한다. 사실, 분류될 피처 fi 당 하나의 전용 계산 유닛이 있다(인덱스 i 또는 피처 인덱스는 분류될 I 피처의 정수를 나타냄). 각각의 계산 유닛은 메모리(11) 및 로직(12)을 더 포함한다.
메모리(11)는 복수의 메모리 셀을 포함하고 결정 트리 앙상블로부터의 결정 트리에 따라 다수의 임계 값을 저장하도록 구성된다. 다시 말해서, 메모리는 결정 트리 앙상블의 특징(characteristic)인 트리의 임계 값을 저장한다. 임계 값은 아래에서 보다 상세히 논의되는 바와 같이 피처 그룹으로 그룹화된다. 기본적으로, 메모리는 분류될 피처 당 하나의 임계 값 그룹을 포함한다. 그룹의 임계 값은 임계값 인덱스에 따라 정렬된다. 로직(12)은 대응하는 임계 값 그룹의 임계 값에 액세스하는 것을 허용한다. 아래에 추가적으로 논의되는 프로세스에 따르면, 로직은 액세스된 임계 값의 순위를 출력한다. 순위는 상기 임계 값에 액세스하기 위한 인코딩된 어드레스를 나타내고, 차례로, 임계 값을 나타낸다.
트리 처리 블록(2)은 결정 트리 앙상블에서 트리 당 하나의 트리 처리 유닛(20)을 포함한다. 트리 처리 유닛은 분류, 또는 트리 투표를 수행하도록 배열된다. 사실, 각각의 처리 유닛은 결정 트리 앙상블에서 트리를 나타내는 부울 함수를 순위의 함수로서 평가하도록 구성된다.
부울 함수는 FPGA 상의 소프트 로직 또는 ASIC 상의 하드와이어드(hardwired) 로직에서 또는 아래에서 추가로 논의되는 방식(scheme)을 사용하여 실현될 수 있다. 순위는 순위 계산 블록 및 대응하는 계산 유닛으로부터 수신된다. 트리 처리 블록은 집계 유닛(21)(또는 트리 결합기)를 더 포함한다. 이러한 유닛은 트리 처리 유닛으로부터 투표(또는 분류)를 수신하고 그 앙상블 투표를 형성한다. 다시 말해서, 집계 유닛은 다수 투표를 수행한다.
도 2는 계산 유닛의 예시적 실시예를 보다 상세히 도시한다. 메모리(11)는 다수의 메모리 셀을 포함하며 그 각각은 고유 어드레스를 갖는다. 도면은 메모리가 임계값 인덱스에 따라 정렬되는 임계 값을 보유한다는 점을 나타낸다. 메모리에 저장되는 임계 값은 대응하는 피처(이러한 예에서 f1)와 상관되는 전용 그룹에 속한다. 피처는 (도면에서 "<"에 의해 표시되는) 비교기(14)의 입력측(13)을 통해 입력될 수 있다. 다른 입력(15)은 메모리로부터 임계 값을 액세스하고 그것에 의해 수신하도록 배열된다. 이러한 방식으로, 비교기는 트리 정의에 따라 전용 그룹과 연관되는 피처(이러한 예에서 f1)의 비교를 수행할 수 있다. 더욱이, 로직(12)은 다른 입력측(16)을 통해 비교기에 액세스하도록 배열된다. 이러한 제어의 결과로서, 비교기는 입력 피처를 임계 값과 비교한다. 메모리는 대응하는 인코딩된 어드레스를 출력하며 이는, 차례로, 임계값/피처 비교(또는 트리 노드)를 나타낸다. 순위는 그들이 모든 노드의 계산된 비교와 동일한 정보를 보유함에 따라 트리 처리 블록에 의해 추가 처리를 위해 사용될 수 있다.
결론적으로, 직렬 아키텍처와 유사하게, 계산 유닛은 비교기 및 메모리를 포함한다. 그러나, 메모리는 하나의 완전한 결정 트리 대신 하나의 임계값 그룹을 포함한다. 비교기(14)는 대응하는 피처에만 연결되며, 따라서 전형적으로 다른 아키텍처에서 요구되는 입력 멀티플렉서의 복잡성을 제거한다. 더욱이, 메모리는 임계값만을 포함하고 피처 인덱스 또는 차일드 어드레스와 같은 트리 구조 정보를 포함하지 않으며, 이는 메모리 크기를 크게 감소시킨다. 예를 들어, 검색 로직은 입력 피처를 임계값에 빠르게 비교하기 위해 이진 검색을 수행한다.
도 3은 그룹화 및 사전 정렬(pre-sorting) 방식을 예시하는 예시적 결정 트리 앙상블을 도시한다. 제안된 개념은, 예를 들어 비교의 속도를 높이기 위해, 임계 값을 사전-정렬하는 것을 기반으로 한다. 도면은 임계값이 그룹화되고 정렬될 수 있는 방법에 대한 예를 도시한다. 도면은 피처 f 1 , f 2 , 및 f 3 뿐만 아니라, 2개의 예시적 클래스 C 1 및 C 2 를 포함하는 3개의 예시적 결정 트리를 묘사한다. 트리 노드는 임계값 인덱스 j를 갖는 임계값 과 피처 인덱스 i를 갖는 대응하는 입력 피처 fi 사이의 비교로 간주된다. 앙상블의 모든 결정 트리의 임계값은 각각의 노드의 해당 피처 인덱스에 의해 그룹화될 수 있다. 피처에 의한 임계값의 결과 예시적 그룹이 테이블 1에 도시된다. 임계 값 은, 예를 들어 와 같이, 정렬 기준에 따라 정렬될 수 있다. 로직(12)은 빠른 검색 동작을 수행하기 위해 이러한 정렬 기준을 이용하도록 배열될 수 있다. 정렬된 그룹의 결과 예가 테이블 2에 도시된다.
테이블 1: 피처에 의한 그룹 임계값
테이블 2: 피처에 의해 정렬된 그룹
결과 임계값 그룹은 임계 값에 의해 개별적으로 정렬되며, 여기서 정렬 기준, 예를 들어 는 이진 검색과 같은 빠른 검색 방법을 가능하게 한다. 트리를 순차적으로 트래버싱하거나 모든 노드를 계산하는 대신, DTE는 대응하는 임계값 그룹에서 각각의 피처에 대해 이진 검색을 수행함으로써 평가될 수 있다. 이진 검색은 임계값을 피처 미만 및 초과 값으로 분할하는 각각의 피처에 대한 어드레스스(즉, 순위)를 야기한다. 피처의 순위인 이러한 어드레스는 모든 노드의 계산된 비교와 동일한 정보를 보유한다. 따라서, 트리 투표는, 예를 들어, 더 적은 비교를 요구하면서 병렬 아키텍처에서 수행되는 바와 같이 부울 함수에 의해 계산될 수 있다.
완전한(complete) 아키텍처는 도 1에 도시된 바와 같은 앙상블을 형성하기 위해 피처 당 하나의 계산 유닛 및 트리 당 하나의 트리 투표 기능(function) 그리고, 선택적으로, 집계 유닛을 포함한다. 트리 투표는 병렬 아키텍처와 유사성을 갖는다. 그러나, 입력은 인코딩된 어드레스인 반면, 병렬 아키텍처는 각각의 비교를 1 비트로 인코딩한다. 따라서, 병렬 아키텍처의 트리 투표 기능은 상이한 부울 함수로 확장된다. 개시의 도입부에서 위에 소개되는 명명법을 사용하여, 트리 구조는 비교기 출력으로부터의 클래스 c 또는 순위 R에 대한 투표를 계산하는 부울 함수 로서 공식화될 수 있다. 부울 함수는 다음과 같이 표현될 수 있으며:
도 4는 계산 유닛의 예시적 실시예를 도시한다. 순위 계산 블록은 트리 처리 블록(2), 즉 계산 유닛에 입력되는 다수의 대응하는 순위를 제공하여 대응하는 클래스에 투표한다. 계산 유닛의 하나의 구현은 도 14에 도시된 바와 같은 병렬 아키텍처와 유사하다. 계산 유닛은 각각의 트리 노드에 대해 하나의 비교기(22)를 포함한다. 그러나, 제안된 개념의 비교기는 순위 어드레스를 디코딩하고 실제 노드 비교를 수행하지 않는다. 실제로, 어드레스는 비교를 나타내고 대신 부울 함수의 계산에 직접 사용될 수 있다. 어드레스 디코딩은 FPGA 또는 ASIC 기술에 매핑될 때 합성 도구에 의한 예를 들어 트리 투표 기능으로 최소화될 수 있다.
제안된 개념의 일부 이점은 다음을 포함한다:
그룹화된 임계값의 사본(duplicate)은, 예를 들어 이진 검색에 의해, 메모리의 액세싱에 대한 추가적인 정보를 가져오지 않음에 따라 제거될 수 있다. 이것은 메모리 크기 및 메모리 액세스 에너지를 심지어 추가적으로 감소시키는 것을 허용한다.
결정 트리는 일반적으로 균형이 유지되지 않으며 이는 상이한 결정에 대해 상이한 실행 시간을 야기할 수 있다. 이것은 트리 사이의 병렬화를 보다 어렵게 만들고 동기화를 필요로 한다. 제안된 개념은, 예를 들어, 이진 검색을 사용하여, 균형 잡힌 방식으로 임계값을 통한 검색을 제안하며, 따라서, 회로 복잡성 및 실행 시간을 감소시킨다. 실행 시간이 트리에서 트리까지 가변될 수 있지만, 그것은 병렬성을 검색 비교에 도입함으로써 조정될 수 있어서 그것은 결정에서 결정까지 일정하게 유지될 수 있다.
이진 검색은 그들 모두를 비교하는 병렬 아키텍처보다 훨씬 더 적은 비교를 수행한다. 일부 경우에서, 이진 검색은, 특히 긴 분기가 트리에서 발생할 때, 심지어 직렬 아키텍처보다 더 적은 비교를 계산한다. 이것은, 병렬화의 양에 따라, 실행 시간 및 에너지 또는 회로 크기를 감소시킨다.
위에 논의된 이점은 또한 실험 결과에서 볼 수 있다. 직렬 및 병렬 아키텍처에 대한 비교의 수를 비교하기 위해, 2개의 모델이 상이한 데이터세트 상에서 훈련되었고 대응하는 테스트 데이터세트를 사용하여 통계학적으로 분석되었다. 병렬 아키텍처의 경우, 비교의 수는 단순히 모든 트리의 노드의 수이다. 직렬 아키텍처의 경우, 트리 반복은 추론 당 비교의 수를 통계학적으로 평가하기 위해 실제 테스트 데이터 상에서 수행되었다. 유사하게, 이진 검색은 제안된 아키텍처의 수를 얻기 위해 테스트 데이터 상에서 수행되었다.
테이블 1은 상이한 데이터세트 상에서 훈련되는 2개의 모델에 대한 비교의 통계적 또는 정확한 수를 보여준다. 직렬 아키텍처의 실행 시간이 불균형 트리 때문에 불규칙하므로, 테이블은 (최소, 중간, 최대) 튜플(tuple)을 포함한다.
테이블 3: 예시적 아키텍처 및 2개의 상이한 데이터세트에 대한 비교의 수.
아키텍처의 하드웨어 영역 및 에너지 소비를 비교하기 위해, 그들 중 3개는 SystemVerilog에서 구현되고 상용 FPGA에 대해 합성되었다. 하드웨어 영역 FOM(figure of merit)은 합성 후 플립 플롭(Flip Flop; FF) 및 룩-업-테이블(LUT) 자원에 기초하여 로서 정의된다. 에너지 소비는 FPGA 벤더로부터의 전역 추정 도구를 사용하고 실제 테스트 데이터 분류로 시뮬레이션된 스위칭 활동에 기초하여 평가된다.
도 5 및 도 6은 상이한 데이터세트 상에서 훈련되는 수 개의 모델에 대한 모두 3개의 아키텍처의 크기 FOM 및 에너지 비교를 도시한다. 결과는 새로운 아키텍처가 성능 지수(figure of merit) 모두에서 잘 수행하고 대부분의 데이터세트에 대한 크기 FOM에서 직렬 아키텍처를 심지어 능가한다는 점을 분명히 보여준다. 반면에, 직렬 아키텍처는 최악의 에너지 효율을 보여주고 병렬 아키텍처는 크기 FOM에서 최악의 성능을 보여준다. 이것은 아키텍처를 널리 사용가능하게 만들고 병렬화를 도입함으로써 크기와 에너지 사이의 트레이드-오프(trade-off)를 조정하기 위한 최상의 후보인 것으로 입증된다.
도 7은 계산 유닛의 다른 예시적 실시예를 도시한다. 위에 논의된 바와 같이, 순위 계산 블록(1)은 클래스를 평가하거나 투표하기 위해 트리 처리 블록(2), 즉 계산 유닛(10)으로 입력되는 순위를 제공한다. 순위를 사용함으로써, 피처 값에 의한 결정 트리의 평가를 실행하기 위해 필요한 계산 노력은 피처 값에 대해 직접 작업하는 것과 비교하여 감소될 수 있다. 실제로, 계산 단계는 사전에 계산하고 룩업 테이블(17)(또는 LUT)에서 계속 이용가능하도록 수행될 수 있다. 단일 LUT(그 입력이 모든 피처로 구성됨)는 매우 크게 될 수 있으므로, 피처 당 하나의 LUT(17)가 사용된다. 도면에 도시된 바와 같이, LUT는 순위 계산 블록으로부터 순위를 수신하고 중간 결과 tmp_results를 출력한다. 중간 결과는 분류의 최종 결과를 처리하기 위해 비교적 간단한 구조화된 산술(또는 "결합기" 18)에 의해 처리될 수 있다.
이것은 보다 나이브한(naive) 구현과 비교하여 결정적인 이점을 초래하며, 예를 들어 상당히 낮은 에너지 요건과 함께 높은 속도를 포함한다. 분류는 몇 가지 병렬 및 독립 메모리 액세스 및 작은 하나의, 에너지-효율적 및 병렬 산술로 구성된다. LUT의 사용은 LUT의 내용이 제작 후 ASIC 기술에서 심지어 자유롭게 선택될 수 있음에 따라 높은 유연성(flexibility)을 허용한다. 게다가, 하드웨어의 구조는 매우 균일할 수 있고 결합기의 완전한 재구성이 가능하다. 이것은 임의의 DTE 모델이 매핑되는 것을 허용한다.
도 8은 LUT로부터 분류 결과를 계산하기 위한 예시적 실시예의 결합기를 도시한다. 도면은 단순화되거나 높은 수준의 방식으로 LUT 원리를 입증하기 위해 사용될 수 있다. 보다 상세화된 예시적 구현은 아래에서 추가로 설명된다.
결합기(18)는 복수의 룩업 테이블을 포함한다. 사실, 도면에서, rank[i]로 표시되는, 대응하는 순위를 수신하는 하나의 전용 LUT가 있다. 다시 말해서, 각각의 피처 i에 대해 하나의 전용 LUT[i]가 있다. LUT는 훈련 절차에서 기인하고 각각의 결정 트리의 구조 및 노드를 나타내는 대응하는 순위의 각각의 값에 대한 훈련된 엔트리를 갖는다. LUT는 중간 결과 tmp_result[i]를 출력한다. 중간 결과는 다수의 트리로 구성되는 서브-앙상블의 투표 및/또는 트리 투표로 다수의 피처를 결합하기 위해 추가로 처리될 수 있다. 투표는 추가로 처리될 수 있으며, 예를 들어 w[m]으로 표시되는 각각의 가중치로 승수에서 가중될 수 있으며 여기서 및 M은 트리 및/또는 서브-앙상블의 총 수 이다. 가산기는 (가중화된 또는 가중화되지 않은) 중간 결과를 결합된 중간 결과로 결합할 수 있다. 이러한 결과는 비교기로 입력되어 임계 값 c_thr과의 비교를 수행하여 분류 결과를 제시한다. 가중화로부터 시작하는 후반 부분은 이미 집계 유닛의 일부일 수 있다.
추가적인 LUT가 없는 예시적 실시예와 대조적으로, LUT의 내용은 추가적으로 결정될 필요가 있다. 내용은 미리-결정된 기준에 따라 결정된다. 예를 들어, 내용(또는 LUT 엔트리)은 하드웨어 아키텍처의 등가 설명을 나타낼 것이다. 이러한 방식으로, LUT 엔트리는 전형적으로 ASIC로서 구현되는 하드웨어, 또는 한 세트의 피처에서의 변화를 설명할 수 있다. LUT 엔트리는 고도로 구성가능하고 예들 들어 오픈 소스 소프트웨어 Z3 Theorem Prover와 같은 솔버(solver) 소프트웨어를 사용하는 훈련 모델에 기초한 훈련에 의해 발견될 수 있다. 예를 들어, 한편으로, 하드웨어 구조의 설명 및 다른 한편으로 DTE의 설명이 솔버로 입력된다. 솔버는 이제 LUT들 LUT[i]에서 엔트리의 할당을 발견하며, 여기서 두 설명은 모든 가능한 입력 할당, 즉 순위 또는 피처 값에 대해 등가이다.
SMT/SAT 솔버와 같은 솔버의 사용은 하드웨어 구현이 지정된 모델을 준수하고 일치한다는 점을 지원한다. LUT 엔트리의 계산을 위한 솔버의 사용은 FPGA의 로직 합성의 기술적으로 상이한 분야에서 이미 설명되었다. 그러나, 그것의 높은 복잡성으로 인해, 그것은 실제로 사용되지 않는다. 제안된 개념은 AI(Artificial Intelligence) 및 ML(Machine Learning)의 영역에서 솔버 소프트웨어의 사용을 수반한다.
LUT 내용의 명시적 코딩으로부터 분리함으로써, DTE 모델은 상당히 압축될 수 있다. LUT 당 각각의 하나의 출력 비트에 대한 모든 트리의 리프 노드의 명시적 할당과 비교하여, 최대 400%의 압축률이 지금까지 달성되었다. 더욱이, 제안된 아키텍처는 피처의 실제 값을 직접 사용하지 않고, LUT에 대한 어드레스로서 그들의 순위를 사용한다. 각각의 노드의 DTE의 트리에서, 루트로부터 시작하여, 피처 값은 훈련된 임계값과 비교된다. 각각의 피처에 대해, 간격을 정하는 수 개의 임계 값이 있다. 궁극적으로 중요한 정보의 값은 그들이 있는 그러한 간격 내에 있다. 임계 값이 정렬 기준에 따라 오름차순 또는 내림차순으로 정렬되는 경우, 순위 계산 블록에서 구현되는 바와 같이 피처 값이 내부에 있는 간격의 인덱스는 그것의 순위에 대응한다. 간격의 수는 특성(characteristic)이 가정할 수 있는 모든 가능한 값보다 분명히 더 낮다. 따라서, 또한 더 적은 비트가 인코딩을 위해 요구된다. 피처의 비트 폭 또는 피처 순위는 LUT 어드레스 입력의 비트 폭에 대응한다. 예를 들어, 16 비트 피처가 4 비트 순위에 의해 표현될 수 있는 경우, LUT는 16384 엔트리 대신 16 엔트리로만 구성되어야만 한다. 순위에 대한 피처의 이러한 감소는 사전 정렬(pre-sorting)을 이용함으로써 가능하게 이루어진다.
분류기 하드웨어(LUT 중간으로부터 분류 결과를 계산하기 위한 결합기)의 설명된 개념은 제안된 개념을 추가로 개선할 수 있다. LUT의 내용을 미리 계산하기 위한 훈련, 예를 들어 SMT/SAT 솔버와 같은 솔버의 사용은 회로 크기 뿐만 아니라 메모리의 관점에서 개선된 결과를 제공한다. 피처의 실제값 대신 순위의 사용은 메모리 크기의 감소를 최소로 가능하게 한다. 더욱이, 결합기 로직은 그것의 완전한 재구성 가능성에도 불구하고 작고 에너지 효율적일 수 있다. 이러한 방식으로, LUT 출력의 그룹화 및, 따라서, 내용의 생성에 대한 제한이 없다. 가변 비트 폭의 그룹의 합(Summation) 및 임계 값과의 단순한 비교가 특히 강조될 수 있다.
도 9는 메모리 내 순위 계산의 예시적 실시예를 도시한다. 상술한 (즉, 이진 검색 연산에 기초한) 순위의 니어-메모리(near-memory) 계산은 이미 매우 효율적이고 빠르지만, 분류기 하드웨어의 성능에서 가능한 병목현상을 나타내는 애플리케이션이 있을 수 있다. 피처(또는 순위의 대응하는 비트폭) 클록 주기 당 임계값의 수의 log2의 추정치(estimate)가 요구될 수 있다. 분류의 모든 다른 단계는 전형적으로 파이프라이닝을 통해 클록 주기 당 하나의 분류의 처리량을 갖는다. 비교기 로직을 기반으로 하는, 추가적인 개념은 메모리 자체에서 피처 순위의 계산을 허용한다.
도면은 분류될 피처에 대한 계산 유닛(10)을 도시한다. 유닛은 주어진 피처 및 그룹화된 사전-정렬된 임계 값을 위한 메모리(11)를 포함한다. 더욱이, 유닛은 임계 값과의 비교를 수행하는 로직(12)을 포함한다. 비교에 기초하여 로직은 이진이 아닌, 1-hot 인코딩으로 순위를 출력하며 이는 그 다음 대응하는 룩업 테이블로 입력된다. 이진 코딩 대신, 가능한 상태 값 당 하나의 라인이 있을 수 있다. 현재 순위에 대응하는 하나의 라인만이 활성이다("hot"). 룩업 테이블 LUT 엔트리의 엔트리에 따라, 중간 결과 tmp_result는 계산 유닛에 의해 출력된다.
구조는 연관 메모리(Content Addressable Memory, 줄여서 CAM) 보완 룩업 테이블 접근법의 그것과 비슷하다. 그러나, 규칙적인 CAM과 대조적으로, 계산 유닛은 "=" 대신에 "<"(또는 ">")에 대한 비교를 수행한다. 이것은 적용된 피처 값 미만(또는 초과) 값을 갖는 모든 임계값 메모리 셀의 매치 라인이 어서팅(asserted)된다는 것을 의미한다. 이것은 순위의 온도계-인코딩을 구현한다. 다음으로 더 큰(또는 더 작은) 임계 값에 대한 제한은 온도계-인코딩으로부터 결정되고 메모리 행(row) 당 인버터 및 게이트에 의해 1-hot 인코딩으로 변환될 수 있다. 결과는, 예를 들어, LUT에 대한 워드 라인으로서 직접 사용될 수 있다.
주변부의 대부분(예를 들어, 외부 검색 로직, LUT 메모리를 위한 어드레스 디코더)은 이러한 예시적 실시예에서 더 이상 필요하지 않다. 메모리가 또한 판독-전용을 위해 사용되므로, 메모리 셀은 누설 전류(예를 들어, 슈미트(Schmitt) 트리거 구조 또는 ULP 다이오드의 사용에 의함) 및 판독 성능에 대해 최적화될 수 있다. 기록 연산은 단지 내용을 초기화하기 위해 필요하다. 이것은 또한 전력 및 영역(area) 효율성을 증가시키기 위해 NVRAM 또는 ROM의 사용을 가능하게 한다. 클록 당 순위 계산의 성능 이득에 더하여, 추가적인 전력 및 영역이 절약될 수 있다. 이진 검색을 위한 메모리 액세스의 로그 수 대신에, 단지 하나의 액세스가 필요하다. 이것을 위해 또한 어드레스 디코더, 또는 이와 유사한 것은 필요하지 않지만, 매치 라인의 에너지 소비가 추가된다. 이것은 아마도 주변부의 그것과 유사한 영역에 있음으로써, 궁극적으로 액세스 당 유사한 에너지 소비가 발생한다.
도 10은 LUT로부터 분류 결과를 계산하기 위한 결합기의 다른 예시적 실시예를 도시한다. 도 8에 도시된 결합기의 단순화된 구조는 하나의 가능한 구현에 대해 보다 상세히 설명된다. 여기서 알 수 있는 바와 같이 복잡성이 다소 더 높지만, 구조는 여전히 매우 규치적이고 완전히 재구성가능하다.
rank[i]에 전용인 하나의 LUT[i]가 묘사된다. 중간 LUT 결과의 개별 비트는 를 갖는 tmp_result[i][x]로 명명되고 X는 LUT의 총 비트폭이다. 이러한 개별 비트 tmp_result[i][x]는 구성가능한 비트 폭 p[q]의 Q 비-중첩 이진 값 c[i][q]으로 인접하여 결합되며, 는 Q 개별 값의 인덱스이다. 이러한 이진 값 c[i][q]은 모든 피처, 즉 를 갖는 fi에 걸쳐 합산되어 합 을 야기한다. 그 다음, 합 s[q]은 대응하는 합-임계 값 st[q]과 비교되며, 즉, v[q] = s[q] < st[q]이다. 비교 결과 v[q]는 구성가능한 크기의 인접한, 비-중첩 그룹 에 걸친 AND-감소에 의해 M 그룹 투표 로 결합된다. 이러한 그룹의 결과는 전체 DTE의 개별 트리 및/또는 서브-앙상블의 투표에 대응할 수 있다. 그룹 투표 g[m]은 조정가능한 가중치 w[m]에 의해 스케일링되고 으로 합산될 수 있다. 레코드가 궁극적으로 속하는 어느 클래스는, 와 같이, 임계 값 c_thr에 의해 결정된다. 가중화로부터 시작하는 후반 부분은 이미 집계 유닛의 일부일 수 있다.
도 11은 결합기의 예시적 실시예의 추가 상세를 도시한다. 개별 부분의 구현은 수 개의 피처, 즉 의 예를 사용하여 아래에 설명되고, (LUT)가 설명된다. 제1 단계(이진수 c[i][q]의 인덱스 x를 갖는 개별 비트의 선택/조합 및 추가)는 멀티플렉서 및 가산기에 의해 수행된다. 여기서, LUT 출력은 먼저 변환되고 열 방향으로(column-wise) 추가되며, 즉, 모든 LUT(인덱스 i)의 7 LSB가 3-비트 값에 추가된다. 결과는 (후자에 사실상 2를 곱한 후, 즉, 1 비트만큼 좌측으로 시프트된 후) 다음 열의 3-비트 값에 추가된다. 따라서, 값 c[i][1]의 비트 폭에 대응하는 p[1] 열은 s[1], 즉, 7 추가된 p[1]-비트 값의 합을 야기한다. 다음 합 s[2]에 기여하는 인덱스 을 갖는 다음 열의 경우, 이전 값과 tmp_result[i][p[1]]의 합계로부터 3 비트 대신 상수 "0"이 멀티플렉서에 의해 선택되고 따라서 가산기 체인이 중단된다. LUT의 워드 폭 X의 각각의 열 또는 각각의 비트 x에 대해, 대응하는 멀티플렉서의 설정을 포함하는 구성 비트 cfg_mux[x]가 존재한다. 따라서, 모든 c[i][q]의 비트 폭은 자유롭게 구성가능하다. 임계 값을 2^(p[q]-2)에 제한함으로써 비교 s[q] < st[q](= 2^(p[q]-2))가 또한 간단하다. s[q]로부터 2개의 최상위 비트(MSB)만이 값 "00"에 대해 검사되며, 최하위 비트(LSB)는 관련이 없다. 비트가 설정되지 않은 경우, 이때 v[q] = 1이다. 분류기의 완전한 재구성 가능성을 달성하기 위해, 각각의 열은 동일하게 구현될 수 있으며, 예를 들어, 3-비트 가산기 뿐만 아니라 구성 비트 및 2-비트 비교기 로직을 갖는 3-비트 멀티플렉서를 포함할 수 있으며, 그러나 다음 멀티플렉서(인덱스 x+1을 가짐)가 가산기-체인을 파단하기 위해 설정되는 결과만이 관련되고 도 10에 묘사된 값에 대응한다. 나머지 결과 s[x], v[x]는 무시된다.
도 12는 결합기의 예시적 실시예의 추가 상세를 도시한다. 도면은 결합기의 AND-OR 체인을 도시한다. 하나의 다음 단계로서, 비교기 로직 v[q]의 결과는 값 g[m]으로 AND 감소된다. 이것은 모든 비교기-결과에 걸쳐 묘사된 AND-OR-체인에 의해 수행된다. 구성 비트 cfg_mux[x+1]는 관련된 값만을 고려하기 위해 관련 없는 값 v[x]을 마스킹할 수 있다. 게다가, 추가 세트의 구성 비트 cfg_and[x]는 그룹 사이의 경계에서 AND-OR-체인을 차단하고 도 10에 묘사된 값에 대응하는, 여기서 인, 관련 값 g[x]을 결정하기 위해 사용될 수 있다.
결합기 유닛으로부터의 투표(또는 분류)는 다수 투표를 수행하는 별도의 집계 유닛에 의해 평가될 수 있다. 선택적으로, 1-비트 값 g[m]은 가중치 w[m]와 곱해질 수 있다. 이러한 연산은 g[m]=0에 대한 가중치를 뮤팅하는 AND-게이트의 세트 또는 멀티플렉서에 의해 수행될 수 있지만, 본원에 논의되는 애플리케이션에 대해 필요하지 않을 수 있다. 고려되지 않을 값을 갖는 열 x는 가중치 "0"으로 구성된다. 가중화의 결과는 합 c_sum에 가산기 트리로 합산된다. 조정가능한 임계 값 c_thr을 갖는 비교기는 마지막으로 분류기의 입력 상의 피처가 대응하는 어느 클래스를 출력한다.
지금까지, LUT 값으로부터 전체 결과를 계산하기 위해 사용된 상술한 AND/OR 어레이, XOR 회로, 및 산술이 검사되었다. 제안된 구현이 이미 잘 작동하지만 보다 콤팩트하고 보다 효율적인 구조가 이러한 작업을 해결하고 압축률을 추가로 증가시키기 위해 존재한다는 것이 배제될 수 없다.
개선된 개념의 이러한 설명은 많은 세부 사항을 포함하지만, 이것은 개념의 범위 또는 청구되었거나 청구될 수 있는 것에 대한 제한으로 해석되지 않아야 하며, 오히려 본 발명의 특정 실시예에 특정된 특징의 설명으로서 해석되어야 한다. 별도의 실시예와 함께 본 개시에 설명되는 특정 특징은 또한 단일 실시예에서 조합으로 구현될 수 있다. 다른 한편, 단일 실시예와 관련하여 설명되는 특징은 또한 개별적으로 수 개의 실시예로 또는 임의의 적합한 서브-조합으로 구현될 수 있다. 게다가, 특징은 특정 조합으로 작동하는 것으로 상술되고 심지어 그와 같이 본래 청구될 수 있지만, 일부 경우에서 하나 이상의 특징은 청구된 조합에서 삭제될 수 있고, 청구된 조합은 서브-조합 또는 서브-조합의 변형으로 지향될 수 있다.
따라서, 도면의 동작이 특정 순서로 제시되는 경우에도, 이것은 이러한 동작이 도시된 순서로 또는 순차적인 순서로 수행되어야만 하거나, 도시된 모든 동작이 원하는 결과를 획득하기 위해 수행되어야만 한다는 것을 의미하는 것으로 이해되지 않아야 한다. 특정 환경 하에서, 멀티태스킹 및 병렬 처리가 유리할 수 있다.
다수의 구현이 설명되었다. 그럼에도 불구하고, 다양한 수정은 본 발명의 사상 및 범위로부터 벗어나는 것 없이 이루어질 수 있다. 따라서, 다른 구현은 본 청구항의 범위 내에 있다.
1
순위 계산 블록
2 트리 처리 블록
10 계산 유닛
11 임계값 메모리
12 로직
13 입력 비교기
14 비교기
15 비교기 입력
16 비교기 출력
17 룩업 테이블
18 결합기
20 트리 처리 유닛
21 집계 유닛
2 트리 처리 블록
10 계산 유닛
11 임계값 메모리
12 로직
13 입력 비교기
14 비교기
15 비교기 입력
16 비교기 출력
17 룩업 테이블
18 결합기
20 트리 처리 유닛
21 집계 유닛
Claims (15)
- 순위 계산 블록(1) 및 트리 처리 블록(2)을 포함하는 결정 트리 앙상블의 분류를 위한 아키텍처로서,
- 상기 순위 계산 블록(1)은 분류될 한 세트의 피처의 피처 당 하나의 계산 유닛(10)을 포함하고 - 각각의 계산 유닛(10)은 메모리(11) 및 로직(12)을 포함함 -,
- 상기 메모리(11)는 상기 결정 트리 앙상블에 상기 결정 트리의 임계 값을 저장하도록 구성되고 - 상기 메모리는 피처 당 하나의 그룹에 상기 임계값을 저장하도록 배열되고, 상기 그룹의 임계 값은 임계값 인덱스에 따라 정렬됨 -,
- 상기 로직(12)은 대응하는 임계 값 그룹의 상기 임계 값의 노드 비교를 수행하고 상기 비교의 결과로서 순위를 출력하도록 배열되고 - 순위는 임계 값을 나타내는 인코딩된 어드레스를 나타냄 -,
- 상기 결정 트리 앙상블의 트리에 대한 상기 트리 처리 블록(2)은 분류될 상기 피처의 클래스를 순위의 함수로서 결정하도록 구성되는, 아키텍처. - 제1항에 있어서,
상기 피처는 피처 인덱스 를 갖는 fi로서 표시되며, I는 분류될 피처의 수를 나타내고, 상기 임계 값은 상기 결정 트리 앙상블의 트리의 노드를 나타내며, 여기서:
- 상기 로직(12)은 분류될 피처를 수신하고 상기 임계 값을 상기 피처 값보다 더 작거나 더 큰 값으로 분할하는 각각의 피처에 대한 상기 순위를 반환하는 검색을 수행하도록 배열되고,
- 상기 순위는 각각 대응하는 트리 처리 유닛(20)으로 출력되고,
- 상기 트리 처리 유닛(20)은 상기 결정 트리 앙상블의 결정 트리를 각각 나타내는 부울 함수를 각각 상기 수신된 순위의 함수로서 평가함으로써 상기 클래스를 결정하도록 구성되는, 아키텍처. - 제1항 또는 제2항에 있어서,
상기 트리 처리 블록(2)은 상기 트리 처리 유닛(20)으로부터 상기 결정된 클래스를 수신하고 상기 결정된 클래스의 함수로서 앙상블 투표를 형성하도록 배열되는 집계 유닛(21)을 포함하는, 아키텍처. - 제1항 내지 제3항 중 어느 한 항에 있어서,
상기 메모리(11)는:
- 분류될 상기 한 세트의 피처로부터의 각각의 피처에 대한 하나의 그룹의 메모리 셀을 포함하고,
- 그룹 내의 상기 메모리 셀은 상기 임계값 인덱스에 따라 어드레스가능한, 아키텍처. - 제1항 내지 제4항 중 어느 한 항에 있어서,
- 상기 로직(12)은 피처를 수신하도록 동작가능한 제1 입력(13) 및 상기 메모리(11)로부터 임계 값을 수신하도록 동작가능한 제2 입력(15)을 포함하는 비교기(14)를 포함하고,
- 상기 비교기(14)는 대응하는 임계 값 그룹의 상기 임계 값의 상기 노드 비교를 수행하도록 동작가능한, 아키텍처. - 제5항에 있어서,
상기 트리 처리 유닛(20)은 어드레스 디코딩된 순위에 기초하여 상기 부울 함수를 평가하기 위해 상기 수신된 순위의 어드레스 디코딩을 수행하도록 배열되는 하나 이상의 비교기(22)를 포함하는, 아키텍처. - 제1항 내지 제6항 중 어느 한 항에 있어서,
- 상기 계산 유닛(10) 각각은 전용 룩업 테이블(17)에 각각 연결되고,
- 상기 룩업 테이블(17)은 상기 룩업 테이블에 연결되는 상기 계산 유닛(10)으로부터 전용 순위를 수신하도록 동작가능한 입력측을 포함하고,
- 상기 룩업 테이블(17)은 상기 입력측에서 수신되는 상기 순위의 함수로서 중간 값을 출력하도록 동작가능한, 아키텍처. - 제7항에 있어서,
- 상기 순위 계산 블록(1) 각각은 전용 룩업 테이블(17)에 각각 연결되고,
- 상기 룩업 테이블(17)은 상기 룩업 테이블에 연결되는 상기 트리 처리 유닛(20)의 상기 중간 값을 제공하도록 동작가능한 출력측을 포함하고,
- 상기 트리 처리 유닛(20)은 상기 수신된 중간 값의 함수로서 분류될 상기 피처의 상기 클래스를 결정하도록 동작가능한, 아키텍처. - 제7항에 있어서,
산술 유닛을 갖는 결합기(18)를 더 포함하며, 이는 상기 중간 값을 수신하도록 동작가능하고 상기 중간 값을 결합하고/하거나 가중화하고 상기 분류될 피처의 상기 클래스를 출력하도록 동작가능한, 아키텍처. - 제7항 내지 제9항 중 어느 한 항에 있어서,
- 상기 처리 블록(2)은 하나 이상의 룩업 테이블을 포함하고,
- 상기 룩업 테이블은 "미만(less than)" 또는 "초과(greater than)" 비교를 수행하도록 동작가능한 하나 이상의 비교기를 포함하는 연관 메모리에 기초하여 구현되는, 아키텍처. - 결정 트리 앙상블의 분류의 방법으로서,
- 상기 결정 트리 앙상블의 결정 트리를 나타내는 임계 값을 분류될 피처 당 하나의 그룹으로 저장하는 단계,
- 임계값 인덱스에 따라 상기 그룹의 임계 값을 정렬하는 단계,
- 대응하는 임계 값 그룹의 상기 임계 값의 노드 비교를 수행하는 단계,
- 상기 노드 비교의 결과로서 순위를 출력하는 단계 - 순위는 상기 임계 값을 나타내는 인코딩된 어드레스를 나타냄 -,
- 상기 분류될 피처의 클래스를 순위의 함수로서 결정하는 단계를 포함하는, 방법. - 제11항에 있어서,
상기 분류될 피처는 피처 인덱스 를 갖는 fi로서 정의되며, I는 분류될 피처의 수를 나타내고, 상기 임계 값은 상기 결정 트리 앙상블의 트리의 노드를 나타내며, 상기 방법은:
- 로직(12)에 의해 분류될 피처를 수신하고, 상기 로직을 사용하여, 상기 임계 값을 상기 피처 값보다 더 작거나 더 큰 값으로 분할하는 각각의 피처에 대한 상기 순위를 반환하는 검색을 수행하는 단계,
- 상기 순위를 각각 대응하는 트리 처리 유닛(20)에 출력하는 단계, 및
- 상기 결정 트리 앙상블의 트리를 각각 나타내는 부울 함수를 각각 상기 수신된 순위의 함수로서 평가함으로써 상기 분류될 피처의 상기 클래스를 결정하는 단계를 더 포함하는, 방법. - 제11항 또는 제12항에 있어서,
- 상기 순위는 상기 로직(10)을 사용하여 이진 검색으로부터 결정되거나,
- 상기 순위는 메모리 내(in-memory)로부터 결정되는, 방법. - 제11항 내지 제13항 중 어느 한 항에 있어서,
상기 결정 트리의 상기 평가는 룩업 테이블 엔트리로서 저장되는 미리-계산된 값을 갖는 룩업 테이블(17)을 수반하고, 상기 클래스는 상기 룩업 테이블 엔트리에 따라 결정되는, 방법. - 제14항에 있어서,
상기 룩업 테이블 엔트리는 분류 아키텍처 및 상기 DTE의 수학적 설명 둘 다가 등가이도록 룩업 테이블 엔트리의 할당을 결정하는 훈련 소프트웨어에 의해 결정되는, 방법.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
DE102020116293 | 2020-06-19 | ||
DE102020116293.6 | 2020-06-19 | ||
PCT/EP2021/066411 WO2021255171A1 (en) | 2020-06-19 | 2021-06-17 | Architecture for classification of a decision tree ensemble and method |
Publications (1)
Publication Number | Publication Date |
---|---|
KR20230012632A true KR20230012632A (ko) | 2023-01-26 |
Family
ID=76695715
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020227044809A KR20230012632A (ko) | 2020-06-19 | 2021-06-17 | 결정 트리 앙상블의 분류를 위한 아키텍처 및 방법 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20230237387A1 (ko) |
EP (1) | EP4168945A1 (ko) |
JP (1) | JP2023529976A (ko) |
KR (1) | KR20230012632A (ko) |
CN (1) | CN115843358A (ko) |
WO (1) | WO2021255171A1 (ko) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117149663B (zh) * | 2023-10-30 | 2024-02-02 | 合肥中科类脑智能技术有限公司 | 多目标检测算法的部署方法、装置、电子设备和介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10332008B2 (en) * | 2014-03-17 | 2019-06-25 | Microsoft Technology Licensing, Llc | Parallel decision tree processor architecture |
US11106685B2 (en) * | 2015-06-17 | 2021-08-31 | Istella S.P.A. | Method to rank documents by a computer, using additive ensembles of regression trees and cache optimisation, and search engine using such a method |
-
2021
- 2021-06-17 KR KR1020227044809A patent/KR20230012632A/ko unknown
- 2021-06-17 WO PCT/EP2021/066411 patent/WO2021255171A1/en unknown
- 2021-06-17 EP EP21735880.3A patent/EP4168945A1/en active Pending
- 2021-06-17 US US18/001,991 patent/US20230237387A1/en active Pending
- 2021-06-17 JP JP2022577210A patent/JP2023529976A/ja active Pending
- 2021-06-17 CN CN202180043504.XA patent/CN115843358A/zh active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230237387A1 (en) | 2023-07-27 |
JP2023529976A (ja) | 2023-07-12 |
CN115843358A (zh) | 2023-03-24 |
WO2021255171A1 (en) | 2021-12-23 |
EP4168945A1 (en) | 2023-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Colangelo et al. | Exploration of low numeric precision deep learning inference using intel® fpgas | |
Albericio et al. | Cnvlutin: Ineffectual-neuron-free deep neural network computing | |
Saqib et al. | Pipelined decision tree classification accelerator implementation in FPGA (DT-CAIF) | |
Yin et al. | An energy-efficient reconfigurable processor for binary-and ternary-weight neural networks with flexible data bit width | |
Sim et al. | Scalable stochastic-computing accelerator for convolutional neural networks | |
US11763156B2 (en) | Neural network compression based on bank-balanced sparsity | |
Li et al. | Dynamic dataflow scheduling and computation mapping techniques for efficient depthwise separable convolution acceleration | |
CN111931925A (zh) | 基于fpga的二值化神经网络的加速系统 | |
KR20230012632A (ko) | 결정 트리 앙상블의 분류를 위한 아키텍처 및 방법 | |
Boroumand et al. | Learning boolean circuits from examples for approximate logic synthesis | |
Yang et al. | Dtqatten: Leveraging dynamic token-based quantization for efficient attention architecture | |
Shu et al. | High energy efficiency FPGA-based accelerator for convolutional neural networks using weight combination | |
Cai et al. | Convolution without multiplication: A general speed up strategy for CNNs | |
Jarollahi et al. | Algorithm and architecture of fully-parallel associative memories based on sparse clustered networks | |
Abdelsalam et al. | POLYBiNN: a scalable and efficient combinatorial inference engine for neural networks on FPGA | |
Qasaimeh et al. | An efficient hardware architecture for sparse convolution using linear feedback shift registers | |
Song et al. | A high-speed CNN hardware accelerator with regular pruning | |
Debnath et al. | Fast Boolean matching under permutation using representative | |
Azizi et al. | Sensitivity-Aware Mixed-Precision Quantization and Width Optimization of Deep Neural Networks Through Cluster-Based Tree-Structured Parzen Estimation | |
CN115115044A (zh) | 基于通道融合的可配置稀疏卷积硬件加速方法和系统 | |
CN113360131A (zh) | 面向卷积神经网络加速器的对数近似乘累加器 | |
Plagwitz et al. | To Spike or Not to Spike? A Quantitative Comparison of SNN and CNN FPGA Implementations | |
Helms et al. | Optimizing neural networks for embedded hardware | |
Yan et al. | S-GAT: Accelerating graph attention networks inference on FPGA platform with shift operation | |
Mendoza et al. | Implementation of a parameterizable sorting network for spatial modulation detection on FPGA |