Software 2.0 vs Software 1.0

이영훈·2021년 11월 9일
2

Naver Boostcamp AI-TECH

목록 보기
19/19
post-thumbnail

우리가 흔히 아는 기존의 legacy 프로그램들은 Software 1.0을 기반으로 작성되었다. 하지만 최근 ML이 급부상하면서 Software 2.0이 등장하며 그 파이를 점점 넓혀 가고 있다. Software 1.0과 비교해가며 Software 2.0에 대해 알아보자.

💻 Software 2.0 vs Software 1.0

Software 1.0은 코드를 작성하는 것과 관련이 깊고 이 작업이 소프트웨어의 대부분을 차지한다. 코드는 프로그래머에 의해 작성이되고 코드에는 프로그램이 어떻게 동작될지 사전에 명시되어 있다. Software 1.0의 개발 과정을 4단계로 요약하면 다음과 같이 요약할 수 있다.

  1. 문제 정의
  2. 큰 문제를 작은 문제들로 분할
  3. 개별 문제 별로 알고리즘 설계
  4. 솔루션을 합쳐 하나의 시스템으로 구축

아래는 Software 1.0의 단적인 예시이다.

Software 2.0은 Software 1.0과 근본적으로 다르다. 그 이유는 프로그래머가 사전에 알고리즘에 대한 코드를 작성하지 않기 때문이다. 실제로 Software 2.0에서 알고리즘의 구현은 Computation에 의해 이루어진다.

여러분이 아이에게 여러 모양의 도형에 대해 가르친다고 가정해보자. 모양은 원, 직사각형, 정사각형, 마름모 등 다양하게 존재한다. 그 후 아이에게 원 모양을 보여주며 '원'이라고 알려줄 것이고 다른 모양들과 마찬가지로 동일한 과정을 거칠 것이다. 그 후 아이에게 하나의 도형을 보여주며 어떤 도형인지를 선택하게 할 것이고 잘못 선택하였을 때는 잘못된 부분을 지적해주며 바로잡을 것이다. 몇번의 훈련을 반복하면 아이는 도형을 보고 어떤 모양인지 판단할 수 있게 된다.

Software 2.0은 아이를 가르치는 과정과 전혀 다르지 않다. 우리가 아는 ML의 동작원리도 이와 같다. ML은 패턴을 파악하고 최적화하면 주어진 data input을 통해 target output을 출력해낸다. ML model을 구축하는 데에 있어서 필요한 것은 잘 labelled 된 input data, 모델 아키텍처가 있다. 그 후 우리는 모든 연산을 computation에 맡기고 모델의 아키텍처에 input data를 집어 넣는다. Software 2.0에서 '코드'labelled 된 input data와 마찬가지인 셈이다. Software 1.0의 코드와 마찬가지로 Software 2.0에서 data를 추가, 정제하면서 우리는 최적의 weights(output)을 얻기 위해 노력하게 된다.

📚 DATA

Software 1.0에서 Software 2.0으로 움직이는 파라다임 속에서 데이터가 중요한 역할을 하게 된다는 것은 위의 설명을 통해 충분히 이해할 수 있을 것이다. Software 2.0은 더 다양하고 더욱 질 좋은 데이터를 필요로 하게 된다. 실제로 ML product 서빙을 실무로 하는 경우 데이터의 파이프라인을 구축하는 데와 데이터를 정제하는데에 대부분에 시간을 쏟는다고 봐도 무방하다. ML product에서 ML code는 극히 일부일 뿐이다.

자동차 이미지를 인식하는 ML 프로덕트를 서빙한다고 가정해보자. 그 때 마주할 수 있는 가장 첫번째 문제점은 모델을 훈련시킬 데이터를 끌어 모으는 것이다. 이를 위해 우선 인터넷에 존재하는 이미지들을 스크랩하는 방법을 시도할 수 있다. 또한 이미지 데이터를 구매하는 방법도 존재한다. 혹은 사람들을 고용하여 이미지를 찍어 생산하게 하는 방법도 있을 것이다. 데이터를 받는 방법은 다양하지만 코스트가 높고 결코 쉽지 않다는 것을 짐작할 수 있다.

데이터를 수집하면 데이터를 검수하는 과정도 필수불가결하다. 데이터에 노이즈, 즉 잘못 라벨링된 데이터가 많을 수록 모델의 정확도는 떨어지고 점점 더 많은 데이터가 필요해지고 더 많은 시간이 소요될 것이다.

잘 레이블된 데이터 뿐만아니라 다양한 데이터도 매우 중요하다. 일반적으로 우리는 모델이 기존 학습된 이미지가 아니라 새로운 이미지에 대해 좋은 퍼포먼스를 내길 기대한다. 그러기 위해선 모델의 일반화 과정이 잘 수행되어져야한다. 즉 정확한 데이터도 중요하지만 다양한 데이터로 학습하여 입력 값에 있어서 유연한 모델을 생산해야한다.

🧐 FINAL THOUGHTS

아직 Software 2.0에 대한 불신이 많이 존재한다. 이는 마치 10년 전 학계에서 딥러닝이 소개될 때 초기 모습과 유사하다. 실제로 CNN 창시자가 쓴 논문은 제일 큰 컴퓨터 비전 학회에서 거절되었다. 하지만 현재는 컴퓨티 비전 학계에서 출간되는 대부분의 논문이 CNN을 참조한다. 즉 우리는 Software 2.0에 준비할 자세가 필요하다. 자연스레 Software 2.0의 핵심인 데이터에 집중될 것이다. 현재 IDE는 코드를 생산하는 데에 초점이 맞추어져 있지만 훗날에 IDE는 데이터를 추출하고 정제하고 검수 활용하는 데까지의 기능을 탑재할 가능성이 높다. 더 이상 엔지니어가 코드를 작성하지 않고 데이터를 다루는 직군으로 변화될 수 있다고 충분히 생각한다.

1개의 댓글

comment-user-thumbnail
2021년 11월 9일

유익한 내용 감사합니다 🙂

답글 달기