1971년에 최초의 CPU가 개발된 이래로 컴퓨터의 성능은 급격하게 발전해 왔다. 그러나 컴퓨터 역시 성능이 좋은 계산기일 뿐, 사람처럼 생각하고 행동하는 기계를 만들고자하는 인간의 꿈을 이뤄주진 못했다. 이에 과학자들은 슈퍼컴퓨터를 이용해 인공지능 구현을 시도해왔고, 그 결과 고양이의 뇌를 흉내낼 수 있었다. 하지만 그 댓가로 147,456개의 CPU와 144TB의 메모리, 그리고 1.4MW의 전력을 사용하게 되었다. (IBM, 2009) 그에 비해 인간의 두뇌는 뛰어난 지능을 가짐에도 불구하고 소모하는 전력은 고작 10W도 되지 않는다. 이는 인공지능 구현을 위해선 반도체 집적기술의 발달만으로는 부족하며, 폰 노이만 구조를 고집하는 기존의 컴퓨팅 방식 자체를 탈피해야 함을 시사한다. 이에 지난 십여년 동안 새로운 연산 방법들이 제안되어 왔으며, 그 중에서 최근에 가장 주목받고 있는 것이 바로 인공신경망(Artificial Neural Network)이다. 
  인공신경망은 뇌의 신경망이 신호를 생성하고 전달하는 메커니즘에 영감을 받아 고안된 알고리즘이다. 신경망은 그림1과 같이 뉴런이라 불리는 신경세포들로 구성되있다. 뉴런은 시냅스라 불리는 말단을 통해 다른 뉴런과 신호를 주고 받는다. 뉴런은 외부 자극에 반응하여 특정 뉴런에게 집중적으로 신호를 전달하는 경향이 있는데, 이러한 자극의 반복은 시냅스에 각인되어 두 뉴런 간의 연관성을 형성한다. 사람의 뇌에는 뉴런이 100억개 이상 존재하며, 한 뉴런은 1,000개 이상의 다른 뉴런과 시냅스를 통해 연결되어 있는 것으로 추정된다. 수 많은 뉴런과 시냅스가 존재하기 때문에 방대한 정보를 저장할 수 있고, 상황에 따라 고유한 신경망을 동작시킬 수 있다.


  인공신경망은 생물학적 신경망을 추상화하여 그림2와 같이 표현한 것이다. 인공신경망은 다층(multi-layer)으로 구성되는데, 대표적으로 입력(input), 은닉(hidden), 그리고 출력(output) 층으로 구성된다. 각 층은 노드(node)로 구성되어 있고, 모든 노드는 동일한 연산을 수행한다. 이 때 수행하는 연산은 실제 뉴런에서 일어나는 현상을 반영하여 자극은 입력값(x), 시냅스는 가중치(w)로 모델링된다. 이러면 입력(예: 사과 그림)이 들어왔을 때 올바른 출력(예: 사과에 해당되는 출력노드에서만 자극 발생)을 내보낼 수 있도록 가중치를 스스로 학습하면 새로운 입력이 들어와도 올바르게 예측할 수 있다.
  인공신경망의 성능을 높이기 위해 노드 간의 연결관계 및 노드 내부의 연산을 변경하고, 노드와 레이어의 개수를 늘린 것을 '딥 러닝(Deep Learning)'이라고 부른다. 딥 러닝은 학습 알고리즘의 진화(Hinton, 2006), 멀티코어 CPU 및 GPU를 활용한 대규모 병렬 컴퓨팅, 모바일 기기 보급화로 인한 빅 데이터의 활용으로 급격히 발전하였다. 그림3과 같이 이미 우리 생활에도 많이 쓰이고 있는데, 대표적인 예로 얼굴 인식을 들 수 있다. 그 외에도 스마트 홈, 무인자동차, 인공지능 로봇 등의 분야에서 활발히 연구되고 있으며, 사물인터넷 시대를 이끌 기술로 주목받고 있다 (Gartner, 2014).


Neuromorphic Circuit
  현재까지 딥 러닝은 전부 프로그래밍을 통해 소프트웨어로서 구현되고 있다. 이를 실시간으로 동작시키기 위해서는 수 많은 CPU 및 GPU가 동원된다. 이로 인해 막대한 전력 소모(100W 이상)가 발생하며 회로가 차지하는 면적도 커지게 된다. 이는 딥 러닝 기술을 모바일 기기에 적용하는데 큰 걸림돌이 되고 있다. 
  이를 근본적으로 해결하기 위해서 제안된 것이 그림4와 같은 뉴로모픽 회로(Neuromorphic Circuit)이다. 뉴로모픽 회로는 CPU와 GPU의 구조를 따르지 않고, 오직 신경망 연산을 위해 필요한 회로만으로 구성된 회로를 말한다. 이를 이용하면 기존 방식대비 전력, 면적, 속도 측면에서  수 백 배 이상의 이득을 볼 수 있다. 본 연구실에서는 뉴로모픽 회로를 제작하는데 예상되는 어려움을 밝히며, 칩의 성능을 높일 수 있는 설계 방법론을 연구하고 있다. 특히, 확률 기반의 근사 연산법(Stochastic Computing)을 적용하여 뉴로모픽 회로의 면적을 대폭(81%) 감소시키는데 성공하였다.



Convolution-accelerating Chip Architecture

 딥 러닝의 응용 분야는 수도 없이 많으나, 그 중에서 가장 주목받고 있는 분야는 이미지 인식이다. 자연스레 인공신경망도 이미지 인식률을 높이는 방향으로 진화하였으며, 그 핵심에는 콘볼루션 신경망 (Convolutional Neural Network, CNN)이 자리잡고 있다(Fukushima, 1980, LeCun, 1998). CNN은 아래 그림5와 같이 이미지 분류에 중점이 되는 특징(예: 경계선, 밝기 차이)들을 자동적으로 학습하고, 이미지 부분에서의 특징을 모아 전체 이미지의 특징을 결정하는 방식이다. CNN 내부에서 연산 비중이 큰 컨볼루션 부분을 하드웨어로 구현한 것이 컨볼루션-가속 칩이며, 이에 대한 활발한 연구가 이뤄지고 있다. 컨볼루션-가속 칩 구현시 고려해야 할 점은 (1) 수백 만에서 수백 억에 달하는 많은 가중치 개수, (2) 초당 최대 400억 번의 연산량,  (3) 행렬 곱셈 결과의 재활용, (4) 모바일 디바이스를 위한 전력 감소이다.


  현재까지 (1)~(4)를 고려한 다양한 하드웨어 구조와 동작 방식이 연구되었다. 
(1) 데이터 압축: 가중치는 그 개수가 많으므로 DRAM과 같은 외부 메모리에 저장해야 하는데, DRAM 접근 횟수가 많을 수록 동작이 느려지고 전력 소모가 커지는 단점이 있다. 가중치와 이미지는 0에 가까운 값들이 많으므로 이들을 전부 0으로 변환하고 압축하는 방법(0이 연속적으로 몇 번 이어지는를 기록)이 대표적이다. (그림6의 Decomp, Comp 유닛)
(2) 연산기 병렬화: 빠른 처리 속도가 요구되나, 클락 주파수를 늘리는 것은 한계가 있으므로 병렬성을 활용한다. 컨볼루션의 기본이 되는 곱-덧셈 연산기를 다수 배치하고, 이들에게 병렬적으로 작업을 할당함으로써 초당 처리량을 높인다. (그림 6의 Spatial array)
(3) 연산기 간 네트워크: CNN은 같은 데이터를 재사용하는 경향이 있는데, 한 번 얻어진 데이터를 메모리인 SRAM이나 DRAM에 넣고 다시 불러오는 것은 속도, 전력 측면에서 많은 비용이 따른다. 따라서 1번 연산기에서 결과를 2번 연산기에 전달하고, 2번 연산기를 마찬가지로 3번에 전달하여 연산의 흐름이 끊기지 않고 이어지게 만드는 것이 중요하다. (그림 6에 표시된 연산기(NCU) 간의 데이터 이동)
(4) 연산 오차 활용: 전력 감소 기법에는 여러가지가 있지만, 여기서는 전압을 줄여 연산 정확도를 낮추는 방법을 소개한다. 전압을 1/2로 줄이면 연산기는 제대로 동작하지 않는 단점이 있지만, 전력을 1/4로 감소시킬 수 있다는 장점이 있다. 인공신경망은 그 방식의 특성상, 노드 출력에 일부 오차가 있어도 전체 결과에는 큰 영향을 미치지 않는다. 이 점을 활용하여 소모 전력을 낮추는 방법이 대표적이다.
 

 본 연구실에서는 위의 요소들을 종합적으로 고려하여 하드웨어 구조 최적화를 연구하고 있다. 해당 연구는 정부의 지원을 받아 이뤄지고 있으며, 단순히 실험 수준에서 그치는 것이 아니라 실제로 회로로 구현하고 가시적인 결과를 확인하는 것을 목표로 한다.