더북(TheBook)

이론의 한계

여러분 중 일부는 알고리즘 분석이라는 컴퓨터 과학의 하위 분야에 대해 들어 보았을 것입니다. 알고리즘 분석은 작업에 투입되는 인풋 크기와 작업 시간과 메모리 사용에 관한 방정식을 개발하는 분야입니다. 예를 들어 새로운 학습 방법인 Foo는 n개의 인풋 사례를 처리하는데, 2n + 27개의 과정을 거친다고 합시다. (이것은 아주 단순하게 만든 예시입니다. 우리는 인풋 사례들이 얼마나 많은 특성을 가지고 있는지도 신경 써야 합니다.)

알고리즘에 필요한 자원을 알아낼 이론적인 방법이 존재한다면 왜 굳이 측정을 해야 하는 것일까요? 좋은 질문입니다. 알고리즘 분석은 보통 상수 같은 실제 연산량에 영향을 미치는 수학적인 디테일을 생략합니다. 또 알고리즘 분석은 (1) 평균 케이스 분석처럼 특정한 혹은 수학적으로 편리한 가정을 하거나 (2) 시스템 구조 같은 구현상의 세부 사항을 무시하고, (3) 결론을 내리기 위해 현실 세계의 실용성과 필수적 요소를 제거한 이상적인 알고리즘을 사용합니다.

요약하자면 일부 특수한 경우를 제외하고, 실제 컴퓨터 시스템이 자원을 어떻게 소모하는지 알아낼 유일한 방법은 그것을 실행하고 측정하는 것뿐입니다. 이상적인 경우뿐만 아니라 비현실적인 조건으로도 프로그램을 실행해서 어떤 일이 일어나는지 살펴볼 수 있습니다. 알고리즘 분석이 필요 없다고 주장하는 것이 아닙니다. 저는 알고리즘 분석의 실패를 비판하는 것이 아니라 그 한계를 이해하자는 것입니다. 알고리즘 분석은 언제나 우리에게 여러 알고리즘을 비교하고 더 큰 인풋이 주어졌을 때 어떻게 동작할지에 대한 몇 가지 기본적인 진실을 말해 줄 것입니다.

우리가 만든 두 가지 분류 모델의 자원 활용을 비교할 수 있는 몇 가지 방법을 보여 주고 싶습니다. 먼저 몇 가지 주의 사항이 있습니다. 프로그램 행동을 정량화하는 것은 매우 어려울 수 있습니다. 시스템에서 발생하는 모든 것은 여러분 학습 시스템의 자원 활용에 잠재적으로 큰 영향을 줄 수도 있습니다. 투입하는 인풋이 달라지면 여러분 시스템도 영향을 받습니다. 더 많은 사례, 더 많은 특성, 다른 형태의 특성들(수치형 혹은 범주형), 그리고 다른 하이퍼파라미터는 같은 학습 알고리즘이라 하더라도 그 행동과 자원 소모를 다르게 만들 수 있습니다.

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