‘알고리즘’이라는 단어는 우리 주변에서 흔히 들을 수 있습니다. 하지만 유튜브나 페이스북 알고리즘에 대해 이야기할 때, 우리는 정확히 무엇을 논하고 있는 걸까요? 알고리즘은 무엇이며, 왜 사람들은 알고리즘에 대해 불만을 제기하는 걸까요?
알고리즘: 문제 해결의 길잡이
우리는 컴퓨터가 삶의 모든 측면에 깊숙이 침투한 시대에 살고 있지만, 그 작동 원리에 대해서는 모호하게 이해하고 있습니다. 하지만 컴퓨터 과학의 한 분야는 이러한 복잡한 과정을 누구나 이해할 수 있도록 기본을 제공합니다. 바로 프로그래밍입니다.
프로그래밍은 화려한 작업은 아니지만, 마이크로소프트 오피스부터 자동 응답기에 이르기까지 모든 컴퓨터 소프트웨어의 근간을 이룹니다. 90년대 영화나 뉴스에서 프로그래머에 대한 왜곡된 이미지를 접했을 수도 있지만, 프로그래머가 하는 일은 비교적 명확합니다. 프로그래머는 컴퓨터가 이해할 수 있는 코드를 작성하고, 컴퓨터는 이 코드에 따라 작업을 수행하거나 문제를 해결합니다.
컴퓨터 과학의 세계에서 알고리즘은 단순하게 코드를 지칭하는 다른 표현입니다. 문제를 해결하기 위해 컴퓨터에 지시하는 일련의 명령어는 작업이 아무리 단순하더라도 알고리즘이라고 할 수 있습니다. 컴퓨터를 켜는 행위조차 ‘켜는 방법’이라는 일련의 지침을 따르는 알고리즘입니다. NASA 컴퓨터가 원시 전파 데이터를 분석하여 우주 이미지를 생성하는 복잡한 과정도 알고리즘의 적용 예입니다.
더 나아가, ‘알고리즘’이라는 단어는 컴퓨터 영역을 넘어, 일련의 모든 명령어들을 설명하는 데 사용될 수 있습니다. 예를 들어, 서랍에서 은식기를 정리하는 방법이나 화장실 사용 후 손을 씻는 방법도 일종의 알고리즘입니다.
하지만 여기서 문제가 발생합니다. 오늘날 ‘알고리즘’이라는 단어는 매우 구체적인 기술적 논의에 한정되어 사용되는 경향이 있습니다. ‘기본 수학’ 알고리즘이나 ‘MS 페인트 그래피티 도구’ 알고리즘에 대한 이야기는 거의 들을 수 없습니다. 대신, 인스타그램 사용자들이 친구 추천 알고리즘에 불만을 토로하거나, 페이스북의 데이터 수집 알고리즘을 비판하는 개인 정보 보호 단체의 목소리가 더 자주 들립니다.
만약 ‘알고리즘’이 계산 명령을 포괄하는 용어라면, 왜 우리는 디지털 세계의 혼란스럽고 마법적이며 때로는 불길한 측면을 설명하기 위해 거의 독점적으로 이 단어를 사용할까요?
대부분의 사람들은 ‘알고리즘’을 ‘머신 러닝’과 혼용한다
과거에는 프로그래머와 대중문화 모두 대부분의 계산 명령을 ‘코드’라고 불렀습니다. 오늘날에도 이는 여전히 유효합니다. ‘코드’ 대신 ‘알고리즘’이라는 단어를 주로 사용하는 영역은 머신 러닝이라는 거대하고 모호한 컴퓨팅 분야입니다. 이로 인해 ‘알고리즘’이라는 단어를 둘러싼 혼란과 불안감이 더욱 증폭되었습니다.
머신 러닝은 오랫동안 사용되어 왔지만, 지난 15년 동안 디지털 세계에서 더욱 큰 부분을 차지하게 되었습니다. 복잡하게 들릴 수 있지만, 머신 러닝의 기본 원리는 매우 간단합니다. 프로그래머가 모든 상황에 대한 코드를 일일이 작성하고 테스트할 수 없기 때문에, 스스로 학습하고 코드를 생성할 수 있는 코드를 작성하는 것입니다.
인공 지능의 좀 더 실용적인 형태로 생각해 볼 수 있습니다. 이메일 클라이언트에서 상사의 이메일을 스팸으로 분류하는 행위를 반복하면, 해당 클라이언트는 상사의 모든 이메일을 자동으로 스팸 폴더에 넣기 시작합니다. 마찬가지로, 구글은 머신 러닝을 사용하여 유튜브 검색 결과의 관련성을 유지하고, 아마존은 머신 러닝을 통해 구매할 가능성이 높은 제품을 추천합니다.
물론 머신 러닝이 항상 긍정적이고 멋진 것은 아닙니다. ‘머신 러닝’이라는 용어 자체가 일부 사람들에게는 섬뜩하게 들릴 수 있으며, 머신 러닝의 대중적인 용도 중 일부는 윤리적으로 의심스럽습니다. 예를 들어, 페이스북이 웹에서 데이터를 수집하거나 사용자에게 적용하는 알고리즘은 머신 러닝의 부정적인 사례로 볼 수 있습니다.
뉴스에서는 검색 결과 순위를 매기는 ‘구글의 알고리즘’, 동영상 추천을 위한 ‘유튜브의 알고리즘’, 타임라인에 표시되는 게시물을 결정하는 ‘페이스북의 알고리즘’에 대한 이야기를 자주 접하게 됩니다. 이들은 모두 논쟁과 논란의 중심에 있는 주제들입니다.
왜 알고리즘이 논란의 대상이 되는가
긴 나눗셈은 숫자를 나누는 데 사용되는 익숙한 알고리즘입니다. 컴퓨터가 아닌 학생들도 이 알고리즘을 사용합니다. 인텔 CPU는 숫자를 나눌 때 완전히 다른 알고리즘을 사용하지만, 결과는 동일합니다.
음성-텍스트 변환 기술은 일반적으로 머신 러닝을 사용하지만, 모든 사람이 즉시 인식할 수 있는 객관적인 정답이 있기 때문에 아무도 음성-텍스트 ‘알고리즘’에 대해 이야기하지 않습니다. 컴퓨터가 말한 내용을 어떻게 인식하는지, 또는 머신 러닝이 사용되었는지 여부는 중요하지 않습니다. 우리는 단순히 기계가 올바른 답을 도출했는지에만 관심을 가질 뿐입니다.
하지만 머신 러닝의 다른 응용 분야에서는 ‘정답’이라는 기준이 존재하지 않습니다. 이것이 바로 알고리즘이 언론에서 끊임없이 논의되는 이유입니다.
목록을 알파벳순으로 정렬하는 알고리즘은 단순히 정의된 작업을 수행하는 방법일 뿐입니다. 하지만 ‘검색 결과에서 최적의 웹사이트 순위 지정’을 위한 구글의 알고리즘이나 ‘최고의 비디오 추천’을 위한 유튜브의 알고리즘과 같은 것들은 훨씬 더 모호하고 명확하게 정의된 작업을 수행하지 않습니다. 사람들은 이러한 알고리즘이 마땅히 그래야 할 결과를 만들어내고 있는지에 대해 논쟁할 수 있으며, 이에 대한 의견은 사람마다 다를 수 있습니다. 하지만 알파벳순 정렬의 경우에는 모든 사람이 목록이 원래대로 알파벳순으로 정렬되었다는 데 동의할 것입니다. 이 경우에는 논란의 여지가 없는 것입니다.
‘알고리즘’이라는 단어를 어떻게 사용해야 할까요?
알고리즘은 모든 소프트웨어의 기초입니다. 알고리즘이 없었다면 전화나 컴퓨터는 존재하지 않았을 것이며, 우리는 아마도 종이에 이 기사를 읽고 있었을 것입니다. (사실상 읽지도 못했을 가능성이 높습니다.)
하지만 일반 대중은 ‘알고리즘’이라는 단어를 컴퓨터 코드에 대한 포괄적인 용어로 사용하지 않습니다. 사실, 대부분의 사람들은 컴퓨터 코드와 알고리즘 사이에 차이가 있다고 생각하지만, 실제로는 그렇지 않습니다. ‘알고리즘’이라는 단어가 머신 러닝과 연관되면서, 그 의미는 더욱 모호해졌고, 사용법은 더욱 구체화되었습니다.
이제 컴퓨터 코드의 가장 사소한 부분까지 설명하기 위해 ‘알고리즘’이라는 단어를 사용해야 할까요? 모든 사람이 그 의미를 이해하지 못할 것이기 때문에 아마도 그렇지 않을 것입니다. 언어는 끊임없이 변화하며, 그 변화에는 항상 이유가 있습니다. 사람들은 혼란스럽고 불투명하며 때로는 모호한 머신 러닝의 세계를 설명할 단어가 필요하며, 현재로서는 ‘알고리즘’이 그 역할을 하고 있는 것입니다.
하지만 핵심적으로 알고리즘(및 머신 러닝)은 문제를 해결하기 위해 작성된 코드의 모음이라는 점을 기억하는 것이 좋습니다. 마법 같은 것은 없습니다. 이것은 우리가 이미 익숙한 소프트웨어의 좀 더 복잡한 형태일 뿐입니다.
출처: 슬레이트, 위키피디아, GeeksforGeeks