티스토리 뷰

인공지능 기술은 딥러닝의 등장과 함께 크게 발달하기 시작했습니다. 이 덕분에 최근에는 음성인식, 이미지 인식 등 다양한 분야에서 딥러닝이 사용되고 있습니다. 하지만 이런 딥러닝 알고리즘들은 댑부분 많은 양의 연산을 필요로 합니다. 특히 이미지 인식에서 많이 사용되고 있는 Convolutional Neural Network (CNN)의 경우, 수많은 행렬 곱셈의 반복으로 이루어져 있습니다. 각각의 계산 자체는 단순하지만, 이를 수많이 반복하기 때문에 전체 연산량이 매우 커지게 됩니다. 이런 연산량은 딥러닝이 작은 연산 능력을 가지고 있는 휴대폰, 임베디드 센서, 카메라 등에 적용되는 것을 막고 있습니다.


만약 이런 연산량이 줄어들 수 있다면 슈퍼컴퓨터 및 수많은 GPU에서 벗어나 작은 디바이스에도 인공지능을 적용할 수 있을 것입니다. XNOR.ai는 이러한 딥러닝을 간단한 연산만으로도 가능하게 하는 인공지능 알고리즘을 개발하는 스타트업입니다. XNOR.ai에서는 기존의 딥러닝 알고리즘을 비트 연산으로 변환하는 방법을 통해 연산량을 획기적으로 줄였습니다.

XNOR.ai는 미국 비영리 인공지능 연구소 Allen Institute of AI(이하 AI2)에서 시작되었습니다. 시애틀에 위치한 AI2는 규모는 작지만, 미국 내에서 가장 큰 비영리 인공지능 연구 단체입니다. AI2에서는 상용가능한 인공지능을 연구하고 있습니다. XNOR.ai는 AI2에서 인공지능을 연구하던 팀으로, 현재 스핀 오프를 통해 스타트업으로 성장하고 있습니다. 



AI2에서 작년에 발표한 논문 “XNOR-Net: ImageNet Classification Using Binary Convolutional Neural Networks”에서 XNOR.ai 팀은 기존 CNN에서 사용되는 행렬을 이진 행렬 (binary matrix; 모든 원소가 +1 또는 -1)인 행렬로 변환한 뒤, 이를 단순한 로직 게이트 연산을 통해 계산합니다.

이 때 연산량이 줄어드는 이유엔 크게 두가지가 있습니다. 먼저 컴퓨터에서는 단순한 사칙 연산을 하더라도 사실은 이것이 이진법으로 변환되어 로직 게이트 레벨에서 진행이 됩니다. 예를 들어 “6 – 4”를 계산한다고 하면, 6, 4에 해당하는 메모리에 0, 1로 이를 표현하고, 로직 게이트 (NOT, AND, OR, XOR, XNOR 등)으로 이들의 뺄셈을 표현해 최종적으로 2라는 결과값을 얻어냅니다. XNOR.ai의 XNOR-Net에서는 이 중 XNOR 연산(input이 같은 경우, 즉 00, 11 일 때 output을 1로 출력하는 게이트)을 기반으로 뉴럴네트워크를 구현했습니다. 이런 로직 게이트 연산은 컴퓨터가 할 수 있는 가장 간단하고 빠른 연산이기 때문에 이 연산만으로 전체 딥러닝 알고리즘을 표현하면, 매우 빠르게 계산을 할 수 있습니다.

XNOR 로직 게이트


게다가 이런 로직 게이트 연산으로 변환하면 기존 방식에 비해 병렬처리가 더 수월해진다고 합니다. 데이터 의존성(Data Dependency)이란 어떤 연산이 이전 연산의 결과를 이용해야 할 때 발생합니다. 예를 들어 수천개의 숫자들이 있는 집합에서 두 개씩 수를 골라 이를 곱하라는 연산을 생각해 볼 수 있습니다. 이 경우 각 연산을 동시에 진행할 수 있기 때문에 연산횟수는 많지만, 병렬화(여러 연산을 동시에 계산)를 하면 전체 연산시간은 그렇게 크지 않게 됩니다.

하지만, 만약 두수를 곱한 결과값을 다음 수에 더하는 것과 같이 이전 결과를 다음 연산에서 사용해야 하면, 모든 연산을 순차적으로 진행해야 하기 때문에 전체 연산 시간이 길어질 뿐 아니라 데이터 의존성 또한 높아집니다. 이렇게 데이터 의존성이 높은 연산은 병렬처리가 어려워지게 되며, CNN연산의 경우 대부분의 연산이 데이터 의존성을 가지고 있어서 병렬처리가 매우 어려웠습니다. 하지만, XNOR.ai의 Farhadi에 따르면 이를 이진 행렬로 변환 후 로직 게이트 연산으로 처리하면 병렬화가 가능해진다고 합니다. Farhadi는 이렇게 기존의 데이터를 인진 행렬로 변환하는 기술이 XNOR.ai의 핵심 기술이라고 합니다.

XNOR.ai의 프로토타입은 현재 작은 휴대폰 어플리케이션의 형태 입니다. 이 어플은 영상에서 이미지 캡셔닝 ( Image Captioning, 사진 속에서 특정 이미지를 인식해, 그 위치와 그 이미지가 무엇인지 파악하는 기술 )을 구현하고 있습니다. 많은 딥러닝 연구나 블로그에서 이런 이미지 캡셔닝에 대해 다루고 있지만, 대부분 슈퍼컴퓨터나 GPU 기반으로 구현되어 있습니다. 하지만 XNOR.ai에서는 이를 휴대폰의 CPU만으로 구현하였고, 심지어 라즈베리파이 제로 보드 상에서도 구현이 가능하다고 하였습니다. 현재 XNOR.ai에서는 이 이미지 캡셔닝을 초당 10회 정도 할 수 있게 구현하였습니다.


Farhadi는 기존에는 이런 이미지 인식을 휴대폰이나 카메라 같은 작은 디바이스에 적용하려면 기존과는 다른 접근을 해야한다고 주장합니다. 기존의 이미지 인식이 대부분 CNN 구조에 의존하는데, CNN의 구조는 단순한 행렬연산을 수업이 반복이 이를 처리하기 위해선 너무나 비싼 연산량을 필요로 합니다. 또한, 이를 억지로 휴대폰에서 구현한다 하더라도, 그만큼 배터리 소모가 늘어나 한시간을 못 넘기고 배터리를 모두 사용해 버릴 것입니다. 이 때문에 기존 인공지능 스타트업들에서는 서버 상에서 인공지능 알고리즘을 구현하고, 데이터를 서버로 전송해 처리하는 방식을 사용하기도 합니다. 하지만 이 경우엔 통신 속도 때문에 매 연산마다 1~2초씩 소요됩니다. 이 때문에 실시간으로 알고리즘을 적용해야 하는 경우에는 적합하지 않습니다.

Farhadi는 XNOR.ai의 결과가 그렇게 놀랄만한 것이 아니라고 합니다. 그는 XNOR.ai의 결과는 정확도를 일부 희생해 효율성을 얻은 것이라고 합니다. 하지만 그는 어차피 CNN 자체가 이미지가 무엇인지 정확히 알려주기 보다는 해당 이미지가 무엇일지에 대한 확률을 제공하기 때문에 정확도를 일부 희생해도 결과에 큰 영향을 주지 않는다고 합니다. 예를 들어 보트를 인식한다고 하면, CNN의 결과값은 보트를 보여주는 것이 아닌, 해당 이미지가 보트일 확률이 몇 퍼센트, 고양이일 확률이 몇 퍼센트 식으로 확률을 보여줍니다. 이 때문에 정확도를 5%정도만 소비해도 10,000 퍼센트 더 빠르게 알고리즘을 작동시킬 수 있습니다.


AI2에서는 XNOR.ai 외에도 다양한 인공지능 프로젝트를 하고 있습니다. 또한, 그 결과도 오픈소스로 깃헙에 공개하고 있습니다. 물론 XNOR.ai의 코드도 공개되어 있습니다. 하지만, AI2가 비영리 재단이라 라이센스 문제 때문에 이 코드를 상업적으로 사용할 수는 없습니다. 이런 이유 때문에 XNOR.ai 팀도 스핀오프 후 독자적인 기술을 개발하고 있습니다. AI2에서는 기술이 가장 빠르게 잠재력을 발휘하게 하려면 이를 상업화하는 것이라 생각하고, 이런 스핀오프를 장려하고 있다고 합니다.

XNOR.ai의 기술은 여러 분야에 응용될 수 있을 것 같습니다. 특히, 스마트 센서나 카메라 등에 인공지능을 적용하는 것에 사용할 수 있을 것입니다. 아직 얼마나 정확도를 보여줄지는 모르지만, XNOR.ai의 접근법이 기존 머신러닝 기술에 큰 영향을 미칠 것은 분명합니다.

참고기사

TechCrunch, “XNOR.ai frees AI from the prison of the supercomputer”


에티 페이스북 팔로우하기




인기 포스팅 보기

댓글
댓글쓰기 폼