작성자 : 카카오브레인 Curtis (김일두)

Software 2.0. 인식의 문제를 풀다.

2017년 Andrej Kapathy가 쓴 Software 2.0 이라는 글에서, 근본적인 소프트웨어 개발 방식의 변화를 예고하며 이를 Software 2.0 이라고 부른다.

Software 2.0

전통적인 소프트웨어 개발 방식(Software 1.0) 에서는 구체적인 명령어의 조합들을 프로그래머가 작성하고, 이렇게 절차적으로 작성된 코드는 프로그래머의 요구사항을 충족하는 알고리즘을 구현하게 된다. 문제를 정의(Formulation)하고 수십 줄이건, 수십만 줄이건 (참고로 리눅스 운영체제는 커널만 대략 3천만 줄 정도 된다고 알려져 있음) 해당 문제를 풀어내도록 절차적 알고리즘을 설계하는 것, 그리고 그 알고리즘을 연산량이나 메모리 등의 요구되는 하드웨어 상황에 맞추어 최적화하는 것이 전통적인 소프트웨어 개발에서 요구되는 것이었다.

소프트웨어 2.0은 반면에 아주 추상적인 형태로 목적을 달성한다. 우리의 뇌의 구조를 일부 모방해서 만들어진 뉴럴 네트워크(인공 신경망; Artificial Neural Network)는 정의된 문제를 수학적 함수의 형태로 제공받고 다량의 데이터를 통해서 목적을 해결하는 뉴럴네트워크를 만들어내도록 최적화 과정을 거친다.

https://clevertap.com/blog/neural-networks/
뇌의 구조를 일부 모방한 인공 신경망. 지금에 와서는 뇌의 구조와는 다른 지점들이 많이 지적된다.

https://clevertap.com/blog/neural-networks/ 뇌의 구조를 일부 모방한 인공 신경망. 지금에 와서는 뇌의 구조와는 다른 지점들이 많이 지적된다.

풀고자 하는 문제와 절차적 알고리즘이 잘 정의될 수 있는 수많은 문제들은 Software 1.0의 형태로 오랜 시간 풀려왔다. 최단 거리의 길을 찾는 문제부터, 인터넷 쇼핑과 모바일 앱에 이르기까지 우리가 IT 기기라는 도구를 활용하는 대다수의 경우에는 전통적 소프트웨어가 기본적인 역할을 해내왔다. 이러한 절차적인 프로그래밍 방식은 수도 없이 많은 압도적인 효용성을 보여주는 면들이 있다. 계산 상의 압도적 우위(컴퓨터는 사람보다 다량의 계산을 정확하고 빠르게 할 수 있다는 점에서 압도적인 우위가 있기 때문에, 수학적으로 정의된 문제들의 상당수는 컴퓨터를 통한 계산이 압도적인 효율성을 보여줌)가 가장 대표적이다. 추가로는 인터넷(네트워크)의 프로토콜이 발전하고 그 위에서 수많은 연결의 문제를 효율적으로 풀어낸 것, GUI 의 구현과 발전으로 컨텐츠를 소비하고 컴퓨터와 상호작용하는 효율성의 극대화 등이 대표적으로 떠오른다. 절차적인 알고리즘만 주어질 수 있다면 컴퓨터는 사람과는 비교할 수 없는 속도와 효용성(에너지 소모량의 관점에서)으로 결과를 낼 수 있다.

그러나 Software 1.0으로 푸는데 한계가 있었던 문제들도 있었다. 절차적인 알고리즘을 사람이 디자인하기 어려운 문제들 모두. 황당하게도 사람은 쉽게 해낼 수 있는 태스크들의 상당수가 포함되었다. 대표적으로 이미지에 어떤 물체가 있는지 인식한다던가, 소리를 듣고 무슨 말인지 이해를 한다거나 하는 것들이다. 수십년에 걸쳐서 절차적인 방식으로 이러한 문제들을 풀어오려고 노력했지만, 만족스러운 수준에 도달하지 못했다. 딥러닝(Software 2.0)은 이렇게 오랫동안 절차적 방식으로 풀려고했던 인식의 문제들을 해결해주었다.

https://www.researchgate.net/figure/Algorithms-that-won-the-ImageNet-Large-Scale-Visual-Recognition-Challenge-ILSVRC-in_fig2_346091812
이미지 인식 태스크(ImageNet Challenge)에서 딥러닝으로 큰 도약이 2012년에 등장하고, 불과 3년 만에 사람 수준의 인식 수준까지 급성장하게 된다.

https://www.researchgate.net/figure/Algorithms-that-won-the-ImageNet-Large-Scale-Visual-Recognition-Challenge-ILSVRC-in_fig2_346091812 이미지 인식 태스크(ImageNet Challenge)에서 딥러닝으로 큰 도약이 2012년에 등장하고, 불과 3년 만에 사람 수준의 인식 수준까지 급성장하게 된다.

이러한 차이점에서, Software 1.0과 Software 2.0은 상호 보완적인 역할을 하게 되었다. Software 1.0에서 부족했던, 불가능했던 점을 Software 2.0으로 해결 할 수 있고, 특히 ‘인식’의 영역을 컴퓨터에 열어주었다는 점에서 대표적인 혁명들로 나는 ‘의료영상처리’와 ‘자율주행’, ‘아마존 알렉사’ 등을 꼽는다. 의료영상이 주어졌을 때 질병 진단/감별을 해내는 인공지능 모델은 그 인식 수준이 의사의 수준과 효율을 크게 제쳤다(제한되고 통제된 실험 환경이 대부분이지만). 차량 주변의 사람과 차량을 비롯한 모든 것들을 수백미터 가량 실시간으로 인식하는 인공지능 모델은 자율주행차량의 상용화를 앞당기고 있다.

수십년간 똑똑하다는 사람들이 다 달려들어 절차적인 알고리즘으로 해결하려고 했던 수많은 ‘인식’의 문제들이 수백줄도 되지 않는 딥러닝 코드로 풀렸다.

인식만으로 AI라고 부를 수 있는가? (지능을 가졌는가?)

아마 계산기로 간단한 계산이 가능해졌을 때에도, 그리고 컴퓨터로 어려운 수학 문제를 처음 풀기시작했던 70-80년대에는 ‘사람처럼 계산을 해내네’하고 지능처럼 생각했을 것이다. 항상 컴퓨터가 사람이 해냈던 무언가를 (일부분을) 해내면 그것을 지능으로 여겨왔다. 마찬가지로 딥러닝으로 ‘인식’의 문제를 풀어냈을 때 AI라는 단어도 같이 폭발적으로 커지게 되었다.