본문 바로가기

블로그

LG CNS 기술블로그 DX Lounge에서 최신 IT 소식을 만나보세요!

AI/Data

인공지능 시대, 개발자들의 위기 초래할까?

2018.10.15

SW 개발자들이 인공지능(AI) 시대를 대비하지 않으면 학습된 로봇 인공지능이 SW를 분석하고, 설계하며, 코딩까지 하면서 SW 개발자들의 작업을 빼앗을 것이라는 우려가 나오고 있습니다. 엔비디아의 DGX-1 슈퍼컴퓨터 담당 부사장 짐 맥휴는 아래와 같이 얘기하면서 인공지능 시대의 SW 개발자들의 위기에 대해 강조했습니다.

  • ‘자가 학습을 통해 파이썬 스크립트를 작성하는 SW가 나올 것이다. 이렇게 되면 전통적인 코더는 설자리가 없어지게 될 것이다.’
  • ‘인공지능의 분석 능력으로 전 세계 수많은 개발자가 클라우드에 접속해 작성하는 막대한 양의 코드를 분석한다면 아마도 알파고처럼 짧은 시간에 급격한 코딩 능력을 보유하게 될 것이다.’
  • ‘인공지능과 딥러닝은 SW를 개발하는 방법을 근본적으로 바꿔놓을 것이고, 이런 변화에는 데이터가 중요한 역할을 수행하면서, SW에 소통 능력을 부여하고, 전체 개발 기간을 단축하는 역할을 할 것이다.’

이에 따라 인공지능 시대에는 SW 개발에 대해 전혀 다른 접근법이 필요하다는 인식과 함께 SW 개발자들에게 좀 더 진보한 적응력이 요구되고 있습니다.

개발자들에게 필요한 기술이 바뀌면서, 개발자가 되고자 한다면 이제는 데이터와 인공지능 관련 기술을 배우는 것이 더 좋을 것입니다. 새로운 SW 개발은 머신러닝을 기반으로, 높은 수준으로 훈련된 SW를 개발하고, 이후 업데이트는 새로운 데이터와 경험을 기반으로 진행될 것으로 예측됩니다.

이에 따라 기존 개발자의 역할을 대체하는 스마트 머신이 출현하고, 개발자는 점점 더 데이터 과학자와 비슷하게 될 것이라는 전망을 내놓고 있습니다. 이와 관련하여 최근 구글이나 MS 등을 중심으로 인공지능 기반의 SW 개발 방법론인 AutoML(Auto Machine Learning; 이하 AutoML)과 DeepCoder와 같은 기술이 두각을 나타내고 있습니다. 

Auto ML(Machine Learning)

2017년 5월 구글 개발자 콘퍼런스에서 구글의 CEO인 순다 피차이는 구글의 모든 제품과 서비스를 인공지능 기반에서 다시 검토하고 있고, 이를 위해 과거에는 볼 수 없었던 색다른 SW 개발 방법론을 연구하고 있다고 발표했습니다. 즉, 인공지능으로 또 다른 인공지능을 만드는 ‘신개념 SW 개발 방법론 AutoML’을 공개한 것입니다.

AutoML은 2017년 Google Brain 팀이 ‘NEURAL ARCHITECTURE SEARCH WITH REINFORCEMENT LEARNING’ 이란 논문에서 처음으로 소개했습니다. AutoML은 인공지능이 인공지능을 개발하는 기술로, 쉽게 말해 부모가 되는 인공지능 기술이 자식 개념의 머신러닝 프로그램을 개발하는 것입니다.

이를 반복하는 과정을 수천 번 되풀이하다 보면 인식 기능이 강화되고, 예상치 못한 변수가 보완되는 등 새로운 학습효과가 나타나게 됩니다. 새로운 학습효과는 인공지능에게 몇 가지 핵심 키워드만 주어지면 스스로 프로그램을 설계할 수 있는 수준으로까지 진화시킬 수 있습니다.

구글은 지금까지 음성 인식부터 이미지 인식, 머신 번역까지 수많은 애플리케이션에 딥러닝 모델을 적용해 왔습니다. 이를 위해 엔지니어들과 과학자들이 막대한 데이터와 함께 상당한 시간을 들여 실험을 수행해 왔습니다. 머신러닝 기술을 개발하려면 최적의 설계 방식을 선택해야 하지만, 이를 사람이 하는 과정이 절대 쉽지만은 않습니다.

결론적으로 머신러닝 기술은 현재 상당히 성공적인 기술이지만, 적절한 머신러닝 아키텍처와 Hyper-Parameter를 선택하는 머신러닝 전문가가 매우 중요한 역할을 수행하고 있다고 볼 수 있습니다.

구글은 이러한 점에 주목하여 인공지능이 스스로 신경망 코드와 알고리즘을 구축하게 하도록 계획하였고, 이를 현실화한 것이 AutoML입니다. 머신러닝 개발에 필수적인 최적의 설계 방식 구성을 인공지능에 맡김으로써, 누구나 목표한 인공지능 시스템을 만 들 수 있도록 하는 것이 구글의 목표입니다.

사실 구글의 AutoML은 Automated Machine Learning(AML)의 한 종류에 해당합니다. AML은 딥러닝•머신러닝 영역에서 Deep Neural Nets 모델이 학습하는 방법을 학습 (Learning to learn) 하는 메타(Meta) 알고리즘을 총칭합니다.

AML은 기술 범위에 따라 넓은 의미에서 1) 머신러닝 분석 시 end-to-end 프로세스를 자동화하는 것, 일반적인 의미에서 2) 머신러닝 모델링 핵심 단계(Feature engineering), 알고리즘 선택, 하이퍼 파라미터 튜닝 자동화를 자동화하는 것, 좁은 의미에서 3) 딥러닝 방법론으로 인식되고 있습니다.

구글의 AutoML은 좁은 의미의 AML로 머신러닝 알고리즘을 이용해 머신러닝 소프트웨어 Engineering 작업을 자동화해 주는 인공지능 소프트웨어 개발 자동화 방법론에 속합니다.

구글의 AutoML이 자동화를 하는 방법은 Recurrent Neural Networks(RNN), 강화 학습(Reinforcement Learning)을 이용해서 딥러닝 모델 구조를 결정하게 됩니다. 이때, 모델의 구조를 결정하는 RNN을 Controller, Controller가 만든 모델을 Child Network라고 부릅니다.

Controller는 생성한 Child Network의 정확도를 이용해 더 높은 성능을 갖는 Child Network를 생성하도록 강화 학습으로 학습하고, Child Network는 샘플링 된 각각의 Child Network를 train 데이터에 대해 일반적인 이미지•자연어 인식 학습 방식으로 학습을 하게 됩니다.

구글은 현재 데이터만 있으면 자동으로 딥러닝 모델을 디자인해주는 AutoML을 구글의 클라우드 플랫폼(GCP)과 함께 제공하고 있습니다. 특히, 클라우드 AutoML 비전을 사용해 이미지넷(ImageNet)이나 CIFAR과 같은 공용 데이터 세트를 분류한 초기 결과, 일반적인 머신러닝 API에 비해 오분류가 적은 보다 정확한 결과를 제공하고 있습니다.

이를 통해 인공지능 활용 앱에 탑재할 간단한 모델을 몇 분 만에 만들어 낼 수 있으며 즉시 제작 가능한 완전한 모델의 경우에도 짧으면 하루 만에 구축할 수 있습니다.

AutoML은 현재 구글을 중심으로 주요 연구를 지속적으로 수행해 나가고 있으며, 국내에서는 SKT에서  유사 Neural Net Architecture Search 논문을 발표했습니다. 이 외, 향후 동영상 인식 정확도 개선을 위한 Meta Learning 최적화 활용 등 다양한 영역에서 AutoML과의  접목이 시도될 것으로 예상됩니다.

AutoML 기술이 어느 정도 성숙된 수준에 다다르게 되면, 딥러닝 모델의 설계를 지금보다 적은 자원으로 더 우수한 성능을 낼 수 있도록 할 수 있을 것으로 보입니다. 이를 통해 지금도 부족한 상태인 머신러닝 전문가나 SW 개발자들의 인력 확보 문제를 어느 정도 완화시킬 수 있을 것으로 예상됩니다. 또한 클라우드 AutoML이 대중적으로 보급되면 인공지능 개발 인력이 없는 기업도 뛰어난 인공지능을 빠르게 개발할 수 있게 될 것입니다. 

DeepCoder

DeepCoder는 MS와 Cambridge University Researcher가 공동 개발한 Machine Learning 기반의 자동 코딩 기술로, 인공지능 학회 ICLR(International Conference on Learning Representations) 2017 포스터 세션에서 Accept 되면서 2017년 초에 두각을 드러낸 기술입니다.

DeepCoder는 자동 코딩 기술에 이미 예전부터 연구되어 오던 프로그램 자동 생성 기술인 IPS(Inductive Program Synthesis) 기술을 채택했습니다. IPS는 주어진 예제로부터 프로그램 코드를 자동으로 학습하는 기술로, DeepCoder는 IPS에 추가로 프로그램의 특성을 예측하기 위해 신경망을 훈련하는 방식으로 접근하고 있습니다.

주로 이진 함수를 학습하는 전통적인 방식에 비해, 데이터로부터 어떤 함수를 학습한다는 측면에서 머신러닝의 한 분야라고 할 수 있습니다. MS는 DeepCoder를 통해 향후 기계가 아닌 사람에게 아이디어만 있으면, 인공지능이 자동으로 에러 없이 몇 초 만에 소스코드를 작성할 수 있는 수준으로 만들고자 하는 것이 목표입니다.

DeepCoder는 StackOverflow, Programming Competition Website 등에서 필요한 코드를 검색하고, 검색된 코드를 이용하여 만들고자 하는 프로그램을 조립하는 방식으로 동작합니다. 위에서 언급한 Program Synthesis 방법인데요. 머신러닝을 이용하기 때문에 코딩을 하면 할수록 더 많은 코드 샘플을 응용할 수 있도록 역량이 진화 발전됩니다.

자동 프로그래밍 방법은 다음과 같습니다.

1) DSL(Domain Specific Language)로 문제를 정의한다.

  • 입출력 값 자체가 문제가 되고, 경우의 수를 줄여주기 위해 문제를 해결하는 함수를 제한적으로 제시한다.
  • C, Java와 같은 범용적인 언어는 복잡하고 연산이 많아, 합성해야 할 경우의 수가 매우 많아지기 때문에 학습을 시키기 어렵다.
  • 이런 이유로 SQL처럼 아주 제한적이며 특정 도메인에 특화된 DSL을 사용하여 문제를 정의한다.
  • DeepCoder는 정수 값에 한해 제한적 함수만 정의하고 있다.(Min, Max, Reverse, Sort, Sum 등)

2) 데이터 생성

  • 학습을 시키기 위해 입출력 값을 쌍으로 갖고 있는 데이터를 수집한다.

3) 딥러닝 알고리즘 모델링

  • 데이터를 학습하는 딥러닝 알고리즘 모델을 정의한다.
  • Feed-forward Deep Neural Network를 적용해 이미 알려진 데이터들로부터, 입출력에 대한 프로그램의 성질을 유추할 수 있도록 훈련을 시킨다.(함수 사용 여부, 반복문 개수 등)

4) 검색 알고리즘

  • 검색 알고리즘은 훈련된 프로그램의 성질 결과를 바탕으로, 우선순위를 정해 검색에 활용하며, 확률에 따른 최적의 프로그램 제시해 준다.
인공신경망으로 훈련을 한 결과 코드에서 각 함수가 나타날 확률을 예상한 사례

DeepCoder는 DSL로 정의하는 내용이 증가할수록 가능한 프로그램의 집합이 기하급수적으로 증가하기 때문에 현재 아주 제한적인 DSL에 대해 5줄 정도 코딩이 가능한 수준입니다. 따라서 현 수준에서는 C, Java 등의 언어를 적용한 자동 코딩은 불가능하고, 향후에도 실용적 수준으로 발전하기까지는 상당 시간이 소요될 것으로 예측됩니다.

향후 기술이 진화한 이후에도 DeepCoder는 단순 검색, 비교, 일상적인 반복 업무 처리 등 정형화된 영역으로 발전할 것으로 예상되면서, 고난도의 작업은 여전히 개발자가 직접 수행할 것으로 보입니다.

DeepCoder는 현재 논문 수준으로, 상업용 소스코드는 생성이 어려워, 현시점에 바로 적용하는 것은 불가능합니다. 그러나 기술이 진화 발전하면서 어느 정도 성숙 단계에 진입을 하게 되면 SW 개발 시장에 큰 파급 효과를 불러올 것으로 전망됩니다. 따라서 발전 동향을 지속적으로 살펴보면서, LG CNS의 MDD 등에 적용할 수 있는 방안을 연구할 필요가 있습니다.

개발자들은 미래에 대한 우려보다는, 인공지능 시대에 적합한 접근법으로 인식 전환이 필요한 시기입니다.

글 l LG CNS 정보기술연구소

챗봇과 대화를 할 수 있어요