brunch

You can make anything
by writing

C.S.Lewis

by 샤샤 Oct 06. 2023

신생 학문의 체계

어라라 하다가 발견된 알고리즘 - 특히 인공지능에서

(쓰다 보니 꽤나 테크니컬한 내용이 많아졌습니다. 노잼주의!)


2년간 인공지능 개발자로 일하면서 많은 인공지능 알고리즘을 접했다. 두 곳의 스타트업에서의 개발 업무와 창업 프로젝트를 진행하는 동안, 내 주요 직무는 인공지능을 통한 영상 분석이었다. 자율주행 인공지능 회사에서는 차 안의 운전자를 분석(In-Cabin Monitoring)하는 인공지능 모델을 학습시켰고, 창업 프로젝트에서는 안무 영상 속 안무가의 춤을 평가하는 모델을 개발했다. 


현재 최고 수준의 결과를 가지는 알고리즘을 SOTA(state of the art)라고 한다. 말하자면 속도와 정확도 등의 관점에서 1등인 알고리즘이다. 인공지능 분야는 너무나 빠르게 변화할뿐더러, 그 변화의 결과가 인터넷에 급속도로 공유되고 평가되기 때문에 이 1등의 자리를 탈환하고, 탈환당하는 속도는 굉장히 빠르다.


알고리즘 사이에는 어떠한 차이가 있냐면, 레이어와 필터의 특성과 배열 같은 것들이 다르다. 인공지능이 정보를 분석하고 생성하는 과정을 우리 뇌 속 뉴런의 연속적인 과정이라고 생각했을 때, 한 뉴런이 얼마만큼의 정보를 처리할 수 있는지, 뉴런이 어떻게 배열되어 있고 그 순서는 어떻게 작동하는지와 같은 부분에서 차이가 생긴다. 페이스북 AI 리서치(FAIR)의 리서치 디렉터이자 모교인 뉴욕대학교 데이터 사이언스 센터(Center for Data Science)를 만든 인공지능의 대가 Yann LeCun이 고안한 알고리즘인 LeNet-5의 예시를 살펴보자.

LeNet-5 알고리즘의 구조

LeNet-5는 이미지를 Input으로 하는 알고리즘이다. 즉, 사진의 맨 왼쪽에 있는 Input 단계에서부터 시작해 오른쪽 방향으로 한 단계씩을 거치게 되는 것이다. 자 지금부터 이 내용을 처음 공부하는 학부생의 관점으로 나와 공감해 주길 바란다. 도대체 왜, 무슨 이유로, 두 번째 단계에서는 28*28*6의 차원을 활용하는 거고, 중간 단계에서 Convolution (5*5), Subsampling 등의 과정이 필요한 거지? 두 번째 단계에서 28*28*7이면 안 되는 건가? 이건 그저 인공지능 분야의 관례(convention) 때문이라고 이해해야 하는 건가? 중간 단계에서는 Convolution 대신 Subsampling을 하면 안 되는 건가?

또 다른 예시: ResNet 알고리즘

위 그림에서 속 알고리즘은 ResNet의 한 종류이다. ResNet은 2015년에 처음 만들어졌고, 그 성능을 인정받아 아직까지 활발히 현업에서 사용되고 있다. 첫 번째 예시인 LeNet-5와 비교했을 때, 그 형태가 다르고 사이사이 과정이 다른 것을 볼 수 있다. 이 외에도 AlexNet, VGGNet, YOLO 등의 알고리즘을 공부하면서, 그 구조와 성능 사이의 명확한 관계성을 찾을 수 없다는 점에서 답답함을 느꼈다. 이 알고리즘을 고안한 사람들은 왜 이런 식으로 디자인을 했을까? 이래저래 구조를 조합해 보다가 '어라라? 이게 잘 되네?'하고 발견한 것은 아닐까? 수많은 알고리즘 사이에서 경향성을 찾을 수 있다면, 최고의 성능에 대한 예측이 가능할 텐데. 사실 나를 포함한 많은 개발자들이 동일한 생각을 하고 있을 것이다.


내가 다양한 프로젝트 경험과 교수님과의 열띤 토론으로 얻은 답변은 AI는 경험주의적(empirical)인 특성을 가지고 있다는 것이다. 아직 완벽한 인과관계를 기대하는 것은 과욕이라고 결론을 내렸다. 모델별로 가지고 있는 학습 데이터의 패턴과 실제 응용 분야가 다르기 때문에, 상황별로, 그리고 도메인별로 우리는 유연하게 대처할 수밖에 없는 것이다. (근데 이건 너무 응용 중심의 접근이 아닐까? 아이고 어려워...)


컴퓨터과학은 비교적 신생 학문이다. 컴퓨터는 기계로서의 계산 능력을 활용하는 도구로 시작되었고, 우리가 접하는 현대 컴퓨터로 발전하게 된 것이다. 세계 최초의 전자 컴퓨터로 알려진 에니악(ENIAC, Electronic Numerical Integrator and Computer)은 1940년대 후반에 개발되었는데, 큰 밸브와 전선의 뭉치였다고 한다.

ENIAC (유펜에서 전시하고 있나 보다. 유펜 라이벌인 우리 학교 눈감아!)

20세기 중반 에니악 컴퓨터부터 인공지능이 초경량화되어 휴대폰의 작은 칩에 들어가기까지 컴퓨터 과학은 빠르게 발전했는데, 이를 뒷받침하는 프로그래밍 언어의 연구, 네트워크와 인터넷의 발전 등의 시대적 변화가 있었기 때문이다. 


처음부터 완벽한 체계가 존재하기란 불가능하다. 모든 학문이 그렇다. 주기율표도 처음부터 지금의 형태를 갖춘 것은 아니다. 1869년 러시아의 화학자 멘델레예프가 처음 제안한 이후로, 현재 118개의 원소를 나열하기까지 수많은 예측과 발견의 과정을 거쳐 주기율표에 추가되었다. 주기율표는 아직 발견되지 않은 원소들에 대한 자리도 나타내고 있는데, 현대 화학이 가지고 있는 이론과 경향성을 활용하여 미래에 하나씩 더 채워나갈 수 있을 것이다. (주기율표 300년의 역사 영상: https://steemit.com/kr/@pius.pius/-300--1545895936808)


컴퓨터 과학도 마찬가지이다. 컴퓨터과학은 인공지능, 네트워크, 보안, 웹개발 등 다양한 하위 분야로 구분되고 각 분야의 발전이 빠르게 이루어지고 있는 만큼, 그 안에서 경향성을 찾아 파편화된 정보들의 체계를 만들어나갈 것이다. 나는 그저 컴퓨터공학과 학부를 졸업한 대졸자일 뿐이기에 이 학문을 위해 일생을 기여하신 박사님들, 교수님들은 다른 생각을 가지고 계실지도 모르겠다.


먼 미래에는 컴퓨터과학이 수능 과목으로 추가되지 않을까 하는 재밌는 상상을 한다. 컴퓨터가 없이 어떻게 컴퓨터과학 시험을 보냐고? 우리 학교 전공생들은 컴퓨터 없이 전부 종이에 손코딩으로 시험을 치렀다. 아니면 미래에는 수능을 CBT 방식으로 볼 수도 있고, 아무도 모르는 일이다. 중요한 것은 매일매일 내 앞에 직면한 과업들을 잘 헤쳐나가는 게 아닐까? 그게 개발이 되었든, 진로 고민이 되었든, 아니면 매일 아침 일찍 일어나는 습관이 되었든.

이전 03화 로봇에게 지배당하는 게 어때서
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari