LINE Corporation이 2023년 10월 1일부로 LY Corporation이 되었습니다. LY Corporation의 새로운 기술 블로그를 소개합니다. LY Corporation Tech Blog

Blog


딥러닝은 어떻게 동작할까? 현재 어디까지 왔고, 미래는 어떻게 될까?

들어가며

안녕하세요. LINE+ Camera AI 팀을 리딩하며 개발하고 있는 한길로입니다. 앞서 손재범 님이 '모바일 GPU에서 뉴럴 네트워크를 더 효율적으로 만들기'라는 글에서 저희 팀을 소개한 적 있는데요. 저희 팀은 주로 비전 문제를 다루며, 숏폼 플랫폼과 카메라 앱에서 사용하는 인공 지능 적용 콘텐츠를 연구하고 개발합니다.

이번 글에서는 많은 분들에게 AlphaGo와 거의 동일한 명사로 취급받고 있는 딥러닝에 대한 제 생각을 자유롭게 공유해 보려고 합니다. 인공 지능 산업은 앞으로 여러 산업 전반에 걸쳐 크고 작은 영향을 미칠 것이라고 예상되는데요. 이런 인공 지능과 관련해 개발자뿐 아니라 다양한 사람들의 시각이 보다 풍부하게 형성되길 바라는 마음으로 글을 작성했습니다(쉽고 간단하게 설명하기 위해 일부 논리의 비약과 단순화한 개념이 있다는 것을 알려드립니다).

먼저 헷갈리기 쉬운 세 용어를 짧게 정리하고 가겠습니다.

  • 인공 지능: 셋 중에서 가장 상위 개념으로 말 그대로 인공적으로 만들어 낸 지능을 의미합니다. 사고나 학습과 같은 인간의 지적 능력을 컴퓨터로 구현해 낸 것입니다.
  • 머신 러닝: 인공 지능의 하위 개념으로 말 그대로 기계가 학습한다는 의미입니다. 컴퓨터가 스스로 학습해 인공 지능의 성능을 향상시키는 방법입니다.
  • 딥러닝: 머신 러닝의 하위 개념입니다. 컴퓨터가 스스로 학습할 때 인간의 뉴런과 비슷한 인공 신경망으로 정보를 처리해 학습한다는 개념입니다.

간단하게 얘기하면 인공 지능 안에 머신 러닝이 있고, 머신 러닝 안에 딥러닝이 있습니다. 인공 지능 중에서 학습을 하는 인공 지능이 머신 러닝이고, 머신 러닝 중에서 인공 신경망(artificial neural network)을 사용해 학습하는 머신 러닝이 딥러닝이라고 생각하시면 됩니다.

인공 지능은 1950년대에 '컴퓨터가 '생각'을 할 수 있을까?'라는 질문에서 시작된 학문입니다. 그 시절에 가장 유명했던 인공 지능은 인간 체스 챔피언 가리 카스파로프와 체스를 겨뤘던 딥블루였습니다(참고). 아마 기억하는 분도 계실 것 같습니다. 처음 벌어진 대결에서 경기는 총 6판이 진행됐고 그중 1판을 딥블루가 이겼는데요. 당시에는 인간이 컴퓨터에게 한 판이라도 졌다는 사실이 엄청난 충격으로 다가왔습니다(참고). 이를 계기로 90년대에 인공 지능에 대한 관심이 많이 높아지기도 했었죠. 당시의 인공 지능 구현 방법은 지금과는 많이 달랐는데요. 그럼에도 체스처럼 움직임이 간단하고 경우의 수가 다소 적으며 규칙이 잘 정의된 게임은 해 볼 만했습니다. 하지만 이미지 인식이나 음성 인식, 번역기와 같이 어렵고 복잡한 문제를 해결하기에는 역부족이었습니다.

 

딥러닝, 세계 무대에 데뷔 - 단, 아직은 과학자들에게만

딥러닝 역사에서 빠질 수 없는 대회가 바로 인공 지능의 대모라 불리는 스탠퍼드 대학의 페이페이 리(Fei-Fei Li) 교수와 연구 팀이 2010년부터 시작한 이미지넷(ImageNet) 대회입니다. 딥러닝 역사의 시작이라고 할 수 있는 이미지넷 대회의 정식 명칭은 ILSVRC(Imagenet Large Scale Visual Recognition Challenge)로, 컴퓨터로 사진을 입력받아서 그 사진이 어떤 사진인지 알아맞히는 경진 대회입니다. 이미지넷에는 1,000개가 넘는 카테고리(개, 고양이, 곰, 여우, 도마뱀, 책상, 모니터, 마우스 등)로 분류된 약 100만 개의 이미지가 있습니다.

이미지넷 대회와 같이 사람이 그림을 보고 물체를 인식하는 것처럼 컴퓨터가 사진을 보고 사진의 물체를 얼마나 잘 인식하는지 판단하는 문제를 이미지 분류(image classification) 문제라고도 부릅니다. 

이미지넷 대회 정확도 히스토리(ImageNet History Plot, Gkruszeontion)

이와 관련해 컴퓨터 비전(computer vision)이라는 학문이 있습니다. 사람의 눈으로 사물을 보는 것처럼 컴퓨터가 사물을 보고 사람과 같은 기능을 수행할 수 있게 연구하는 학문입니다. 이 컴퓨터 비전을 연구해 온 수많은 석학들이 그동안 쌓아온 지식을 총망라하여 이미지넷 대회에 도전했습니다. 그 결과 2010년과 2011년의 이미지넷 대회에서는 컴퓨터 비전 알고리즘이 가장 성능이 좋았습니다. 2010년에는 약 72%, 2011년에는 약 74% 정확도를 달성했습니다(참고로 2011년도 우승 팀은 제록스 연구소입니다).

이와 같이 이미지넷 대회에서 컴퓨터 비전 진영이 꾸준히 정확도를 올려가던 차에 캐나다 토론토 대학의 제프리 힌턴의 인공 지능 랩실이 등장했습니다. 제프리 힌턴 교수는 딥러닝의 창시자로 1980년대부터 딥러닝을 연구해 온 사람입니다. 2018년엔 튜링 상(Turing Award)을 수상하기도 했죠(참고). 그야말로 딥러닝의 대부라고 할 수 있지만, 2010년 이전까지는 그가 연구해 온 딥러닝의 성능이 좋지 않아 수많은 멸시를 받았습니다. 그럼에도 제프리 힌턴 교수는 포기하지 않고 끝까지 연구했는데요. 그야말로 딥러닝 계의 방망이 깎는 노인이라고 할 수 있습니다.

제프리 힌턴 교수 팀은 2011년 즈음 이미지넷 대회를 알게 된 뒤 '이거 딥러닝으로 될 것 같은데?'라고 판단해서 준비해 2012년 이미지넷 대회에 처음 참가해서 바로 우승을 차지합니다(2012년 이미지넷 대회에서 우승하게 만든 딥러닝, 알렉스넷). 아래 슬라이드의 왼쪽 그래프는 이미지넷 대회에 참가한 팀의 정확도를 나타내는 그래프로 파란색이 컴퓨터 비전, 녹색이 딥러닝을 나타냅니다. 제프리 힌튼 교수 팀의 딥러닝 모델 AlexNet(2012년 녹색)이 2012년 이미지넷 대회를 그야말로 장악해 버린 모습을 볼 수 있습니다.

그래프에서 볼 수 있듯 제프리 힌턴 교수 팀은 2012년에 혜성같이 등장해서 약 10%의 성능 향상을 이뤄냈습니다. 같은 해에 컴퓨터 비전 진영의 최고 성능이 73.9%였고 딥러닝이 84.7%였는데요. 1% 차이도 엄청난 성과인데 등장하자마자 무려 10%의 차이를 보여줘서 학계에서 난리가 났던 사건이었습니다.

이 결과를 받아들이지 못한 컴퓨터 비전 진영은 2013년도에 다시 도전하지만 결과는 거의 최하위였습니다. 이로 인해 2013년 이후로는 그 누구도 더 이상 컴퓨터 비전으로 이미지넷 대회에 도전하지 않았습니다. 사실상 거의 1년 만에 수많은 과학자들이 컴퓨터 비전에서 딥러닝으로 갈아탄 셈입니다. 제프리 힌턴 교수 팀이 참가했던 2012년부터는 이미지넷 대회에서는 딥러닝이 쭉 우승을 차지했습니다. 딥러닝의 성과는 날이 갈수록 향상됐고 2015년 이후로는 사람이 물체를 인식하는 정확도(약 95%)보다 더 좋은 정확도를 보여줬습니다. 학계에서는 이미지 인식 분야에서는 딥러닝이 이미 사람을 뛰어넘었다고 평가하고 있습니다. 아래 그래프는 오답률을 나타낸 그래프로 수치가 낮을수록 좋은 성능을 낸 것입니다. 

 

딥러닝, 정말 세계가 주목하다 - AlphaGo

 

벽돌 깨기 게임을 클리어하는 딥러닝 등장

2013년에 벽돌 깨기를 플레이하는 인공 지능이 등장했습니다. 제프리 힌턴 교수 팀에서 발표한 논문이었습니다(Playing Atari with Deep Reinforcement Learning). 이 벽돌 깨기 인공 지능은 아무런 방법도 가르쳐 주지 않은 상태에서 단지 '점수를 높여라'라는 지시만 받은 채 게임에 투입돼 혼자서 수백, 수천, 수억 번 게임을 반복하며 학습합니다. 인공 지능은 이 게임을 수없이 반복하면서 '벽돌이 깨지면 점수가 올라가는구나', '공이 막대기 밑으로 빠지면 리셋되는구나'와 같은 게임 규칙을 스스로 학습합니다. 사실 여기까지 학습한 것도 제법이었는데 학자들을 정말 놀라게 한 부분은, 바로 아래 그림과 같이 공을 쌓여 있는 벽돌 위로 보내는 방식이 게임을 클리어하는데 유리하다는 것까지 학습했다는 것입니다.

 

사람을 보고 흉내 낸 게 아닙니다. 인공 지능이 스스로 터득한 것입니다. 어찌 보면 인간과 같은 생각을 한 것입니다. 

2015년에는 DQN(Deep Q-Network)이라는 논문으로 세계에서 가장 오래되고 저명하다고 평가되는 영국 과학 학술지 네이처의 커버로 등장했습니다(참고). 벽돌 깨기 인공 지능을 만든 DeepMind 팀은 Google에 인수된 후 AlphaGo를 만들었고, 2016년에는 이세돌과 세기의 바둑 대결을 펼칩니다.

 

벽돌 깨기 딥러닝, AlphaGo로 진화하다

벽돌 깨기 인공 지능이 바둑 천재 이세돌을 꺾는 AlphaGo로 발전하는 데는 3년 정도의 시간밖에 걸리지 않았습니다. 이 이야기는 많은 분들이 아실 테니 자세한 설명은 생략하겠습니다(참고).

사진: 알파고를 이길 수 있게 만든 4국에서 이세돌의 78수 / Axd
4국에서 이세돌이 알파고를 이길 수 있게 만든 이세돌의 78수(Lee-sedol-alphago-divine-move, Axdtion)

 

딥러닝은 어떻게 동작하고 학습하나요?

사진: 인간의 뇌를 본따 만든 딥러닝? / Mike MacKenzie
인간의 뇌를 본따 만든 딥러닝?(Machine Learning & Artificial Intelligence, Mike MacKenzie)

도대체 이 딥러닝이라는 게 무엇이기에 이미지도 잘 인식하고, 벽돌도 잘 깨고, 바둑도 잘 두는 것일까요? 

 

뇌를 닮은 인공 신경망

딥러닝은 인간의 뇌를 본떠 만든 인공 신경망을 이용하는 여러 방법론 중 하나입니다. 인공 신경망을 살펴보기 전에 아래 그림과 함께 사람의 뇌를 먼저 살펴보겠습니다. 학교 과학 수업 시간에 아래와 같은 그림을 본 기억이 있으실 텐데요. 뇌 안에서의 신호 활성화를 정확하게 시각화한 것은 아니지만, 뇌를 구성하는 가장 큰 두 요소인 뉴런과 시냅스가 그림과 같이 어우러져 신호가 활성화된다고 생각해 보겠습니다. 

시냅스로 연결된 뉴런들(Axo-axonic_synapse.svg, ShivanshDave)

위 그림과 같이 뉴런과 뉴런은 시냅스로 연결돼 있고 우리 뇌 안에는 이런 묶음이 셀 수 없이 많이 있습니다.

 

딥러닝의 구조와 작동 원리

이제 사람의 신경망을 본떠 만든 인공 신경망을 살펴보겠습니다. 아래 그림은 인간의 뇌 구조와 비슷하게(?) 많은 뉴런과 시냅스를 연결해 만든 인공 신경망을 시각화한 그림입니다.

위와 같은 인공 신경망으로 학습하는 딥러닝이 작동하는 단계를 살펴보면 아래와 같습니다.

  1. 딥러닝에 이미지를 입력합니다.
  2. 딥러닝이 작동하면서 인공 신경망을 순차적으로 쭉 훑어 나갑니다.
  3. 결괏값을 내보냅니다.

전부 다 그렇다고 할 수는 없지만 대부분의 딥러닝 프로그램들은 위와 같은 방식으로 작동하며, 사실 인간도 비슷한 프로세스를 거칩니다. 

  1. 눈으로 봅니다.
  2. 머릿속에서 뭔가 '지지직'하는 과정을 거칩니다.
  3. 결론이 떠오릅니다.

이제 딥러닝이 인간의 뇌와 대략 비슷한 구조인 것은 알게 됐습니다. 그런데 대체 어떻게 학습하길래 강아지를 보고 강아지라고 인식할 수 있는 것일까요? 사실 사람의 경우에는 학습하는 방법을 아는 것이지 실제로 뇌 안에서 어떻게 학습이 이뤄지는지는 명확히 규명하기 어렵습니다. 그 대신 '보고, 듣고, 느끼고, 익히고, 반복한다'와 같은 학습 방법을 토대로 학습을 합니다. 딥러닝도 학습 방법의 개념은 동일합니다. '입력을 받는다, 반복한다'와 같은 학습 방법입니다. 그런데 딥러닝의 경우 사람의 뇌와는 다르게 학습이 어떻게 이뤄지는지도 알 수 있습니다. 

 

딥러닝의 학습 방법

이제 딥러닝은 어떻게 학습하는지 살펴볼 텐데요. 그전에 일단 뉴런이 어떻게 작동하는지 먼저 살펴보겠습니다.

뉴런 하나를 확대해 보면 위 그림과 같고 아래와 같이 작동합니다. 1번부터 5번까지의 과정이 항상 동일하지는 않지만, 이와 같이 덧셈과 곱셈 연산으로 이뤄졌다고 생각하시면 될 것 같습니다.

  1. 입력이 들어갑니다(예: 입력0 = 10).
  2. 가중치를 곱합니다(입력0 * 가중치0 = 10 * 0.3).
  3. 들어온 입력을 모두 더합니다(입력0 * 가중치0 + .... + 입력2 * 가중치2 = 6.03).
  4. 편향(bias)을 더해줍니다(15.2 + 2.1).
  5. 출력으로 내보냅니다(8.13).

그럼 이런 뉴런들로 어떻게 학습이 진행되는 것일까요? 딥러닝에서 '학습이 된다'라는 말은 아래 그림에서 보이는 '가중치(예: 가중치0, 가중치1, 가중치2)'와 '편향'을 찾는 과정이라고 할 수 있습니다.

예를 들어 보겠습니다. 먼저 이해를 돕기 위한 예시이기에 논리적 비약이 존재하고 여러 가지 개념을 상당히 많이 단순화했다는 것을 말씀드립니다. 학습이 잘 진행된 딥러닝 모델이 아래 그림처럼 움직인다고 가정해 보겠습니다.

위 그림에서 빨간색 선이 올바른 가중치로 잘 학습돼서 활성화된 선이라고 생각해 보겠습니다. 강아지 사진을 봤으니 잘 학습된 딥러닝 모델은 위와 같은 경로로 진행돼서 강아지라는 결과를 도출할 것입니다.

학습이 되지 않은 딥러닝 모델이라면 아래 그림처럼 학습이 잘 된 모델과는 다른 경로로 진행될 것입니다.

만약 위와 같이 다른 경로로 진행돼 틀린 결과가 도출됐다면 가중치와 편향을 미세하게 조정합니다.

이와 같은 방식으로 가중치와 편향을 미세하게 조정하는 과정을 수없이 반복하다 보면 점점 정답에 가까워집니다. 우리는 이것을 학습한다고 말하며 이 학습 과정을 답이 나올 때까지 반복합니다. 딥러닝이 주목받는 이유는 이 방법이 실제로 잘 통하기 때문입니다. 반복하고 반복하다 보면 정말로 정답이 나옵니다. 아래 영상은 숫자 그림을 보고 숫자를 맞추는 딥러닝 모델이 어떻게 동작하는지 잘 시각화해 놓은 영상입니다.

 

전통적인 개발자와 딥러닝 개발자의 차이

지금까지 딥러닝이 어떻게 작동하고 학습하는지를 아주 단순화해서 알아봤습니다. 그럼 딥러닝 개발자는 어떻게 개발할까요? 전통적인 개발자와는 개발하는 방식이 어떻게 다를까요? 여기서 '전통적인 개발'이란 게 진보하지 못한 개발 방식이라는 뜻은 아닙니다. 인공 지능 개발 방식과는 다른 기존의 방식을 지칭하기 위한 것이지 낮게 보려는 의도는 절대 아닙니다. 또한 설명하기에 앞서 이해를 돕기 위해 예시에 논리적인 비약과 다소의 왜곡이 들어가 있다는 것을 말씀드립니다.

 

사람이 규칙을 부여하는 전통적인 개발 방식

계산기 프로그램을 만든다고 가정해 보겠습니다.

덧셈과 뺄셈, 곱셈, 나눗셈 등 계산기 프로그램이 갖춰야 할 여러 가지 기능이 있을 것입니다. 전통적인 방식에서는 계산기에 필요한 모든 기능을 사람이 직접 하나하나 만들어서 통합합니다. 그러면 비로소 계산기 프로그램이 완성됩니다.

 

데이터로 학습하는 딥러닝 개발 방식

만약 계산기를 딥러닝으로 만든다면 계산기에 필요한 기능들을 데이터로 구성합니다. 예를 들어 덧셈을 위해서 덧셈 계산 예제와 결과 묶음들을 준비합니다. 뺄셈이나 곱셈도 마찬가지입니다. 예제와 결과들을 데이터셋으로 구성해서 훈련하는 방법과 함께 딥러닝 모델에 넣고 학습시키면 우리가 원하는 계산기 프로그램이 나옵니다.

다시 한 번 비교해 보면, 전통적인 프로그래밍은 입력과 규칙을 넣어서 원하는 결과를 도출하는 것이고, 딥러닝은 입력과 원하는 결과물을 넣고 훈련시켜서 원하는 결과물을 얻을 수 있는 프로그램을 만드는 것입니다. 신기하지 않나요? 사람 대신 프로그램을 만들어 주는 인공 지능이라니! 이번 글에서 자세히 설명하진 않았지만 앞서 소개한 YouTube 영상을 보시면 딥러닝이 어떠한 원리로 학습하는지 잘 알 수 있습니다. 이 글을 한 번 읽고 영상을 본다면 좀 더 빨리 이해하실 수 있을 것이라고 생각합니다.

참고로 1, 2, 3, ..., 9, 10의 숫자를 인식하는 간단한 프로그램도 딥러닝으로 만들면 정확도가 99%가 넘지만, 인간이 만든 프로그램으로는 아직 80%를 넘지 못했습니다.

 

주변에서 만날 수 있는 딥러닝 활용 사례

 

화상 회의

사진: 화상 회의 영상 통화 온라인 / Alexandra_Koch

COVID-19 이후 Zoom과 같은 화상 회의 프로그램을 많이 접해 보셨을 겁니다. 화상 회의 기능 중에는 배경을 이미지나 비디오로 교체해 주는 기능이 있는데요. 이런 기능을 수행하기 위해 어디까지가 배경인지를 감지하는 작업을 이미지 분할(image segmentation)이라고 부르는 딥러닝으로 감지합니다. 이를 이용해 사람과 배경을 분리해서 사용자가 선택한 이미지나 비디오로 교체해 줍니다(참고). 또한 어떤 데이터 셋으로 구성해서 훈련하느냐에 따라 아래와 같이 사람들을 도로에서 분리해 내야 하는 자율 주행에서 사용하기도 합니다(참고).

 

카메라 앱

많은 분들이 보정 카메라 앱을 사용해 보셨을 텐데요(참고1참고2). 이런 앱에서는 도대체 어떻게 아래 그림처럼 내 눈 근처에 재밌는 눈물 이미지를 붙이거나 머리 근처에 예쁜 나비 이미지를 붙일 수 있는 걸까요? 바로 딥러닝 기술 덕분입니다. 

'Facial Landmark Detection'이라는 딥러닝 기술을 이용하면 얼굴과 얼굴 내 눈, 코, 입과 같은 곳에 위치 포인트를 만들어 줍니다. 이를 통해 눈의 위치 포인트를 알 수 있기 때문에 눈 근처에 재밌는 눈물 이미지도 붙이고, 안경도 씌울 수 있는 것입니다.

 

번역기

이미 변화를 느꼈던 분들이 계실 것 같은데요. 2018년 이후부터 번역기가 왠지 꽤 신뢰할 만한 결과를 낸다고 생각하지 않으신가요? 기존에는 번역기를 딥러닝으로 구현하지 않았습니다. 주로 구문 기반 기계 번역(PBMT, Phrase-based machine translation) 알고리즘을 사용한 기술로 번역했는데요. 이때의 번역기를 사용해 보신 분들은 알고 계실 겁니다. 당시에는 아무래도 번역된 문장이 매끄럽지 못했고, 단순히 단어를 나열하는 수준의 결과가 나오기도 했습니다. 아마 별로 믿을 만하다고 느끼지 못하셨을 겁니다. 그러다 2018년 즈음부터 꽤 믿을 만한 수준의 결과를 내놓는 번역 서비스들은 전부 100% 딥러닝을 이용해서 만든 번역기입니다.

지금까지 주변에서 찾아볼 수 있는 딥러닝 활용 사례를 몇 가지 소개했습니다. 이 글에서 소개한 사례 외에도 여기저기서 굉장히 다양한 방식으로 딥러닝 기술을 활용하고 있으며, 앞서 소개한 번역기 사례처럼 기존 방식을 딥러닝으로 대체해 나가는 사례도 많습니다.

 

2016년부터 2022년까지 발전해 온 딥러닝의 자취

그럼 딥러닝이 2016년부터 2022년까지 얼마나 빠르게 발전을 해 왔을까요? 과연 딥러닝은 현재 어디까지 왔고 어떤 일까지 할 수 있는 것일까요?

 

2016년 - Hitachi Swing Robot

아래 영상은 오직 무릎을 접고 펴고만 할 수 있는 로봇이 그네를 탈 수 있도록 딥러닝으로 훈련시키는 모습을 보여주는 영상입니다. 

첫 번째 단계(1st stage)에서는 우리에게 익숙한 방식이 아니라 굉장히 이상한 방식으로 그네를 탑니다. 그렇게 계속 훈련을 한 결과 두 번째 단계(2nd stage)에서는 제법 사람처럼 타기 시작하더니 세 번째 단계(3rd stage)에서는 오히려 사람보다 더 잘 타게 됩니다. 사람이 그네를 어떻게 타라고 규칙을 입력한 게 아닙니다. 그저 훈련 목적을 '가장 높은 지점에 도달해라'로 정해줬을 뿐입니다. 어느 높이에서, 어느 각도로, 어떤 세기로, 얼마나 접고 펴야 가장 높은 지점에 도달할 수 있는지는 무수히 많은 반복을 통해서 스스로 찾습니다.

세 번째 단계를 보면 로봇이 인간이 타는 방식과 조금 다른 방식으로 그네를 타기 시작합니다. 누구도 알려주지 않은, 딥러닝이 스스로 찾은 방법입니다. 정말 놀랍지 않습니까? (참고로 AlphaGo도 2016년 이전에 개발된 딥러닝 프로그램입니다.)

 

2018년 - StyleGAN

StyleGAN은 사람 얼굴 사진을 만들어 주는 딥러닝 프로그램입니다. 이 사진에 나오는 얼굴들은 누가 봐도 어디엔가 살고 있을 법한 정말 사람 얼굴이지만, 사실 전 세계 어디에도 존재하지 않는 얼굴입니다. 딥러닝이 그저 데이터로 만들어 낸 얼굴들입니다. 수많은 얼굴 사진을 훈련 데이터 셋으로 구성해서 수없이 반복해서 학습시키다 보니 딥러닝 모델이 다양한 얼굴에서 얼굴을 그리는 패턴을 찾아 실제 얼굴과 매우 유사하게 그릴 수 있게 된 것입니다. 어쩌면 지금 SNS에 볼 수 있는 어떤 얼굴 사진들은 실제 존재하는 사람의 얼굴 사진이 아닐 수도 있습니다. 참고로, 이 딥러닝 모델의 입력 값은 랜덤 숫자입니다. 숫자로만 저런 이미지를 만들어 낼 수 있는 것입니다(숫자 배열 → StyleGAN → 사람 얼굴 이미지).

 

2020년 - GameGAN

아래는 일본 Namco 사에서 만든 팩맨이라는 게임입니다. 그런데 이 게임이 왜 딥러닝을 소개하는 곳에 나타났을까요? 바로 이 게임이 사람이 만든 게임이 아니라 인공 지능이 만든 게임이기 때문입니다.

이 게임을 처음 사람이 프로그래밍할 때를 생각해 보겠습니다. 팩맨이라는 게임에는 다음과 같은 규칙이 있습니다.

  1. 팩맨은 괴물을 만나면 죽습니다.
  2. 팩맨이 노란 점들을 다 먹어야 게임을 클리어할 수 있습니다.
  3. 팩맨과 괴물은 벽을 넘을 수 없습니다.

사람이 만들 때는 이런 규칙과 관련된 모든 경우의 수를 사람이 고려해 프로그래밍했습니다. 이제 이 게임을 딥러닝으로 만드는 경우를 살펴보겠습니다. 아래와 같이 팩맨의 규칙을 설정하고 현재 화면과 사용자가 입력한 방향 키로 다음 화면을 예측하는 방식으로 만듭니다.

앞서 딥러닝은 패턴을 학습한다고 말씀드렸습니다. 모든 규칙들은 바로 패턴이기 때문에 게임을 수없이 반복하다 보면 딥러닝으로 팩맨과 같은 게임도 만들 수 있다는 것을 보여준 사례가 GameGAN입니다.

 

2022년 - DALL-E 2

DALL-E 2는 텍스트를 입력하면 그 텍스트에 어울리는 그림을 그려내는 딥러닝 모델입니다(텍스트 → 이미지). openaidalle Instagram에 들어가거나 트위터에서 #DALLE2로 검색하면 DALL-E 2를 이용해 그린 재미있고 다양한 그림들을 감상할 수 있습니다. 너무 그럴싸하게 멋진 이미지를 만들어 주는데요. 텍스트만 입력하면 실제와 같은 인물이나 동물 이미지를 잘 생성해 낼 뿐 아니라, 예술가가 그릴 법한 창의적인 그림도 잘 그려내고, 사진작가가 찍은 듯한 사진도 잘 만들어 냅니다. Elon Musk가 설립자 중 하나로 있는 OpenAI라는 단체에서 만든 딥러닝 모델인데요. 아직 모델을 공개하진 않았지만, 만약 공개해서 누구나 쓸 수 있게 된다면 일상생활에서 활용도가 굉장히 높지 않을까요?

이 외에도 진짜 가수와 모창 가수가 나와 노래를 대결하는 프로그램에서 진행했던 인간 대 인공 지능의 모창 대결에 나온 딥러닝 모델이나, 몇 장의 사진만으로 3D 모델을 만들어 주는 딥러닝 모델 등 정말 기존의 방법으로는 상상도 할 수 없는 프로그램들이 엄청나게 빠른 속도로 개발되고 있습니다. 이미 인간이 직접 프로그래밍해서 만들 수 있는 영역은 한참 지난 것입니다.

 

수학과 과학 분야에서의 딥러닝

 

수학계에서 맹활약 중인 인공 지능

알 수 없는 수식(?)으로 가득한 칠판(Mathematics (cryptography) on a blackboard.jpg, David Malone)

탁자에 놓인 커피와 햇빛이 살짝 스며드는 커튼이 달린 창. 머리를 감싸 쥐며 종이 위에 펜으로 수식을 써 내려가는 한 사람. 벽 한 면을 가득 채운 읽기도 힘든 방정식으로 가득 찬 칠판. 우리가 흔히 수학자를 떠올리면 생각나는 장면입니다. 역사적으로도 천재라고 일컬어지는 사람들은 주로 과학자나 수학자들이 많습니다. 수학계에는 아직도 인류가 해결하지 못한 난제들이 많이 남아있고, 지금도 많은 사람들이 머리를 감싸 쥐며 난제들을 해결하고 있습니다.

그런데 최근 수학계에서 검증 과정에서 인공 지능을 활용해 증명을 검증한 사례가 발표돼 화제가 되었습니다. 위상 수학에 대한 개념을 전환해 기하학과 함수 해석, 정수론 분야를 연결하는 계획으로 일종의 대통합을 증명하는 사례였다고 하는데요. 이 과정에서 중요한 보조 정리를 증명한 뒤 이 증명이 맞는지 검증할 때 인공 지능을 활용했다고 합니다. 수학계에서 간혹 증명을 검증하는 과정에서 컴퓨터를 활용한다고 알려져 왔었는데 이번처럼 복잡한 현대 수학에 활용돼 성공한 사례는 이번이 처음입니다. AlphaGo를 만든 Google의 DeepMind도 수학 문제에 새롭게 도전하겠다면서 '인공 지능 시스템은 수학 패턴을 발견하고 명확히 하는 데 큰 가능성을 갖고 있다'고 밝혔습니다. 또한 '수학자들과 협력해 인공 지능이 어떻게 인간 직관의 아름다움을 새로운 차원의 창의성으로 끌어올릴 수 있을지 기대하고 있다'고 덧붙였습니다.

위에서 설명했듯이 딥러닝이 학습한다는 것은 패턴을 찾아가는 과정이며, 수학과 과학은 패턴입니다. 딥러닝은 수학과 과학의 패턴을 충분히 잘 인식해 나갈 수 있을 것입니다. 

 

과학계에서도 맹활약하고 있는 인공 지능

AlphaFold는 Google의 DeepMind에서 'Alpha + Go(바둑) = AlphaGo'와 같이 'Alpha + Fold(접다) = AlphaFold'라는 네이밍으로 만든 딥러닝 모델입니다. 단백질 접힘 구조를 누가 더 잘 맞추나 겨루는 CASP(Critical Assessment of protein Structure Prediction)라는 대회가 있는데요. DeepMind의 AlphaFold는 이 대회에 등장하자마자 98개의 연구 그룹 중에서 압도적으로 1위를 차지했습니다. 2018년도에 등장해서 60점을 기록했고, 2년 뒤에 출전해서는 무려 87점을 기록해 생물학계를 놀라게 만들었습니다(참고). 

그런데 생물학계에서 말하는 이 단백질 접힘 구조라는 것이 도대체 무엇이길래 이런 대회까지 있는 것일까요? 20가지의 아미노산으로 구성되어 있는 단백질의 특징 중 하나는 구성 요소의 종류와 순서에 따라 서로 다른 3차원 구조를 갖는다는 것입니다. 이 현상을 '단백질 접힘'이라고 부릅니다. 단백질은 같은 구성 요소로 이뤄져 있다고 해도 단백질이 어떻게 접히냐에 따라 성질과 역할이 많이 달라질 수 있습니다.

바이러스에 대항하고 싶을 때 바로 이 단백질 접힘 구조를 알아내면 신약을 개발할 수 있습니다. 예를 들어 코로나 바이러스는 핵 주변에 스파이크가 있는데 만약 스파이크의 정확한 단백질 구조를 알게 된다면 거기에 대응하는 약을 개발할 수 있는 것입니다. 암세포도 마찬가지입니다. 암세포의 단백질 접힘 구조를 알아내면 해당 암세포에만 달라붙는 약을 개발해 효과적으로 제거할 수 있습니다. 가끔 뉴스에서 접하는 표적 항암 치료제에서 표적을 만드는 방법이 바로 단백질 접힘 구조를 알아내는 것입니다. 

이와 같이 단백질 구조를 알아내는 것은 현대 생물학에 있어서 매우 중요한 일입니다. 기존에는 단백질 접힘 구조를 알아내기 위해 X선 결정학이나 극저온 현미경 등을 활용했습니다. 듣기만 해도 많은 시간과 비용이 드는 방법입니다. 지금까지 서열이 알려진 단백질은 1억 가지 정도 되는데 지금까지 밝혀진 단백질 구조는 대략 10만 개 정도라고 합니다. CASP라는 대회는 이와 같은 단백질 구조를 더 빨리 파악하기 위해 탄생한 대회인데요. 딥러닝 모델인 AlphaFold가 이 대회에서 압도적인 점수로 우승한 것입니다. 

물론 아직 부족한 부분이 많습니다. 비교적 단순한 구조에 대해서는 정확도가 높지만 구조가 복잡한 암세포와 같은 구조에 대해서는 정확도가 낮습니다. 하지만 인공 지능 업계의 성장 가능성과 발전 속도에 비춰 봤을 때, 생물학계에서도 곧 많은 과학자들이 인공 지능을 적극 활용해서 여러 문제를 풀어나가는 모습이 주류가 되지 않을까 생각해 봅니다.

 

그렇다면 딥러닝은 만능일까?

오늘날 딥러닝이 주목할 만한 성과를 내고 있는 것은 맞지만, 그렇다고 딥러닝이 만능이라고 할 수 있을까요? 학습하기 위한 훈련 데이터만 충분하다면 무엇이든지 만들어 낼 수 있을까요?

 

딥러닝 프로그래밍과 기존 프로그래밍의 차이점

딥러닝 프로그래밍과 기존의 프로그래밍의 가장 큰 차이점을 하나 말한다면 '완제품으로 나오느냐' 아니면 '블록 장난감처럼 조립할 수 있는 형태로 나오느냐'일 것입니다. 

V6 엔진 실린더(Cylinder block for V6 Diesel, 160SX)

딥러닝은 마치 자동차 엔진 공장에서 프레임에 쇳물을 부어 엔진을 한 번에 찍어 내는 것처럼 결과를 만들어 냅니다. 

레고로 조립한 엔진(Lego flat 6 engine 3, Les Chatfield)

이와 달리 기존 프로그래밍은 블록 장난감처럼 작은 부속을 하나하나 조립해 완성시키는 방식입니다. 

프레임을 이용해 한 번에 찍어내는 방식은 만약 뭔가 하나가 잘못되면 프레임을 다시 만들어서 새롭게 찍어내야 합니다. 하지만, 레고처럼 조립하는 방식은 뭔가 하나 잘못됐을 때 잘못된 부분을 찾아 해당 부분만 다시 조립하면 됩니다. 즉, 만약 버그가 발생하거나 예외 케이스가 발생해 부분적으로 수정해야 할 상황이 생겼을 때 기존 프로그래밍은 버그를 추적해 해당 부분을 수정하고 다시 만들면 되지만 딥러닝은 훈련 데이터부터 학습하는 방법까지 처음부터 전부 다시 고려해서 해당 버그나 예외 케이스를 해결할 수 있는 프로그램을 한 번에 다시 만들어야 합니다(물론 엔지니어링을 통해서 어느 정도 해결이 가능한 경우도 많지만 기본적인 개념은 그렇습니다).

언뜻 많은 일을 할 수 있을 것처럼 보이는 딥러닝이지만 이처럼 예외 상황이나 버그를 제어하고 다루기가 너무 어렵기 때문에 아직 우리 주위에서 딥러닝이라고 느낄 만한 서비스가 그렇게 많지 않은 것입니다.

 

딥러닝을 잘못 활용한 사례

또한 딥러닝은 자칫 악의적인 목적으로 활용될 여지도 있습니다. 이미 뉴스 기사로도 많이 보도됐는데요. 얼굴을 감쪽같이 바꿔주는 딥페이크를 활용해 포르노를 제작하거나, 딥보이스를 활용한 보이스피싱과 같은 사기 범죄에 악용할 수 있는 여지가 많습니다. 따라서 딥러닝 모델을 상용화할 때는 윤리적인 관점에서 충분히 고려해 제약을 둬야 하는 부분이 많습니다.

 

마치며

앞서 말씀드린 것처럼 인공 지능은 이미 특정 영역에서는 인류의 지능을 뛰어넘은 성과를 보여주고 있습니다. 향후 개발뿐 아니라 다양한 연구 분야에서 점점 더 많이 활용하고 발전하면서 더 많은 진보를 이루게 될 것입니다. 생각해 보세요. 아이언맨의 토니 스타크가 사용하는 자비스와 같은 인공 지능이 있다면, 그리고 그런 인공 지능이 소위 막노동이라고 부르는 수많은 노동 집약적인 작업을 대신 해결해 준다면 인류의 생산성은 더 높아지고 우리는 그 시간을 보다 창의적인 일에 투자하면서 새로운 작업물을 창조해 낼 수 있지 않을까요?

이번 글에서 대략적으로 딥러닝의 여러 모델을 소개하며 간단하게 작동 원리를 소개했지만, 사실 딥러닝이 어떻게 작동하는 것인지 완전히 이해할 필요는 없습니다. 이해하는 게 과연 중요할까요? 지금 이 글을 읽고 나서 완전히 이해했다고 볼 수 있을까요? 과학자들은 이렇게 말합니다.

'인간의 지능에는 한계가 있다. 이 한계 때문에 이해 여부가 중요하지 않다. 수학적으로 기술할 수 있고 증명할 수 있다면 더 이상 문제는 없다. 이것이 중요하다.'

인공 지능은 우리 시대의 가장 중요한 기술력 중 하나입니다. 지금까지 많은 산업을 변화시켰으며 앞으로도 계속 변화시켜 나갈 잠재력이 가장 큰 기술입니다. 경제적 관점에서는 물론이고 치매나 탈모, 루게릭과 같은 다양한 불치병을 포함해 인류가 아직 해결하지 못한 수많은 문제들을 해결하는 데 있어서 이제 인공 지능은 필수가 아닐까 생각합니다.