추상화, 인공지능, 업무혁신

2021. 4. 6. 16:32시민개발자

19세기 말에 놀라운 물건이 등장했습니다.

 

시간과 공간을 고정하는 그 장치가 등장했습니다.

 

이제 자연을 그림처럼 베끼던 화가들의 생계가 문제되기 시작했습니다.

 

그림보다 더 빛을 정밀하게 다루는 이 기계 때문에 예술로서 그림의 본질은 무엇인가를 강제로 고민하게 되었습니다.

 

구체적인 상을 그려내는 것이 아니라 대상을 특징짓는 속성을 뽑아서 재구성하고 표현해보자!

 

바로 추상화(抽像畵) 시대가 열린 배경입니다.

 

다시 들여다보면 한자로 '추상(抽像)'과 영어 'Abstract'는 굉장히 잘 통하는 번역이란 걸 잘 알 수 있습니다.

 

뽑아서 추려낸다는 거지요.

 

그런데 사람들은 오래전부터 '추상'에 대한 획기적인 발상을 해왔습니다.

 

다량의 업무를 처리하기 위해 공통적인 속성을 뽑아서 반복성과 재사용성을 높이는 걸 해냈죠.

 

대표적인 것이 바로 수학의 함수입니다. 계산이 힘드니까 특정한 계산에 공통적인 내용을 뽑아냈습니다.

 

함수 = 추상화

 

"바로 원하는 결과를 갖고 싶으면 값만 넣으세요. 그러면 계산이 되어 답이 나옵니다."

 

이게 함수의 본질이고 속성은 추상화 입니다.

 

우리가 잘 아는 인공지능의 예측모델은 '회귀'라는 방식으로 수많은 데이터를 통해 1차원의 수식을 찾아냅니다.

 

그 수식은 다른 말로 Y= wX + b (w는 가중치를 뜻하는 weight, b는 편향을 뜻하는 bias)라고 합니다.

 

데이터(결과)를 통해 그 결과에 도달하는 과정을 역으로 추적해 내는 거죠. 그 추적의 결과가 바로 위의 1차함수입니다.

 

함수는 현실의 구체적인 사정(결과)에 이르는 과정을 뽑아서(抽) 하나의 이미지화 한 거죠(像).

 

함수를 통해서 우리는 반복적인 작업을 통해 계산을 수월하게 하고 그 계산 과정은 알 필요도 없이 원하는 값을 받아낼 수 있습니다.

 

그래서 함수에는 '입력(input)'과 계산을 마친 값을 되돌려주는, 이른바, '반환(return)'이 있게 됩니다.

 

원리를 알면 이해가 훨씬 쉽습니다. 이해가 쉽다고 함수를 찾아내는 게 쉬운 건 아니죠.

 

레시피가 간단하다고 요리가 맛있는 게 아니듯이요.

 

어려서 수학문제를 풀다보면 1부터 100까지 하나하나 더하는 사람이 있고, 가우스처럼 101이란 값을 만드는 쌍이 50개가 있다는 걸 발견하고 101에 50을 곱해서 간단히 푸는 사람이 있습니다.

 

1부터 100까지에 101을 만드는 쌍이 50개가 있다는 걸 보고 숫자의 배열에서 속성을 뽑아내어 적용을 돕는 과정은 추론이 아주 뛰어난 사람들이 하던 천재들의 전유물이었습니다.

 

이런 경우 그 천재들이 투여하는 자원은 크지 않습니다.

 

불규칙적인 패턴을 갖는 경우인데다가 데이터가 사람이 계산할 수 있는 범위를 벗어난 경우는 어떨까요?

 

사람이 하기에는 힘이 듭니다. 과거에는 못하던 것을 기계가 학습을 통해서 대체로 들어맞을 수준으로 1차함수를 뽑아낼 수 있는 세상이 온 거죠.

 

이걸 인공지능 세상이라고 합니다.

 

결국 인공지능 세상은 1차함수를 추상화 해내는 아주 무식한 방법인데, 그 무식한 방법을 엄청나게 많은 리소스를 과거에 비해 말도 안되게 싸게 투입해서 처리할 수 있게 된겁니다.

 

사실 수학은 본질적으로 추상화의 과정입니다.

 

아울러 프로그래밍이란 것도 속성은 코드라는 걸로 추상화를 하는 과정이지요.

 

법학에서의 추상화

 

법률도 마찬가집니다. 반복해서 재사용이 가능하려면 공통된 속성을 뽑아내야 합니다.

 

우리 형법 제250조 제1항에는 살인죄를 규정하고 있습니다.

사람을 살해한 자는 사형, 무기 또는 5년 이상의 징역에 처한다.

여기에서 '사람'이란 것이 추상화 되어 있습니다. 그래서 학설이 나뉘는 거죠. 구체적으로 어느 단계를 '사람'의 시작이며 종점으로 볼 것인가?

 

이게 왜 중요하냐면 '태아'에 대한 범죄와 '사람'에 대한 범죄를 구분하기 위해서입니다.

 

태아에게 충격을 가해서 신체에 장애를 갖고 태어난다면 이를 '상해'죄로 볼 것인지가 매우 중요한 문제이기 때문입니다.

 

아울러 뇌사자에 대해 상해를 가할 경우에도 '상해'로 볼 것인지? 사체훼손으로 볼 것인지 전혀 달라집니다.

 

추상화는 프로그래밍에도 등장합니다.

 

객체와 추상화 = 프로그래밍

 

특히 객체지향의 프로그래밍에서는 객체라는 것 자체가 추상화의 산물입니다.

 

객체의 속성에 맞는 값을 넣고 실제 구현된 것을 '인스턴스(instance)'라고 하는데요.

 

달리 풀어말하자면 객체라는 기초 틀에서 뭔가 값을 넣어 반환되어 나온 실물을 '인스턴스'라고 합니다.

 

추상화는 업무에서도 중요

 

반복되는 업무가 있다면 이를 잘 추상화 해보세요.

 

업무를 진행하는 프로세스만 추상화를 잘해서 바꿔도 복잡도도 낮추고 반복해서 재사용을 하게 되어 낭비도 많이 줄일 수 있습니다.

 

추상화가 가장 중요한 개념이라는 까닭이 어느 정도 이해가 되셨나요?

 

 

대문 이미지 출처: Image by Aida KHubaeva from Pixabay 

'시민개발자' 카테고리의 다른 글

디지털강제  (0) 2023.04.20
헷갈리는 용어: Authentication과 Authorization  (0) 2021.11.22
도대체 UI와 UX는 뭔가?  (0) 2021.05.06
추상화와 형이상학  (0) 2021.04.23
개발자 용어 - API란?  (0) 2021.03.20