더북(TheBook)

3.7.2 분류 문제에서의 자원 활용

컴퓨터에서 하는 모든 작업은 처리 시간과 메모리라는 비용을 동반합니다. 보통 컴퓨터 과학자는 메모리를 저장 공간 혹은 공간으로 표현합니다. 그러므로 프로그램이나 알고리즘이 사용하는 시간과 공간 사용을 이야기하겠습니다. 요즘 같은 세상에서 컴퓨터의 자원 사용을 걱정하는 것은 조금 구시대처럼 느껴집니다. 요새 나오는 컴퓨터는 몇 년 전 모델보다 훨씬 더 빠르고 더욱 큰 저장 능력을 가지고 있거든요. 1960년대나 1970년대에 나온 거대한 기계들은 말할 것도 없습니다. 자, 그러면 왜 굳이 이 주제를 다루려고 하는 것일까요? 외삽(extrapolation)과 이론적 분석의 한계라는 두 가지 이유 때문입니다.

 

외삽

오늘날 데이터 과학과 머신 러닝은 빅데이터가 이끌어 갑니다. 빅데이터는 우리가 가진 계산에 필요한 자원의 한계를 시험하죠. 빅데이터라는 용어는 상대적입니다. 여러분에게는 큰 데이터이지만, GPU로 무장한 클러스터를 사용할 기술과 예산을 가진 누군가에게는 그다지 크지 않을 수 있습니다. 데이터가 작지 않을 때 가지는 문제점 한 가지는 자신의 랩톱에서 ‘합리적인’ 시간 안에 문제를 풀 수 없다는 것입니다.

제가 캐리비안 해변의 야자수 아래에서 모히또 한 잔을 하면서 랩톱으로 코드를 개발한다면, 완전한 크기의 문제로 확대하는 데 어떤 종류의 자원이 필요할지 어떻게 알 수 있을까요? 흠, 작은 문제를 측정해 보고 크기를 점점 키워 가면서 전체 데이터셋을 돌렸을 때 어떨지에 대한 똑똑한 추정을 할 수 있을 것입니다. 그러기 위해서는 작은 데이터를 처리할 때 드는 시간과 공간 비용을 정량화할 수 있어야 합니다. 사실 이것은 추정치일 뿐이고, 계산 파워를 더한다고 해서 효과가 선형적으로 좋아지는 것은 아닙니다. 가용 메모리를 두 배로 늘린다고 해서 언제나 두 배 더 큰 데이터셋을 처리할 수 있는 것은 아닙니다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.