요즘 AI분야에서 인공지능 챗봇인 ChatGPT가 화제의 중심입니다. ChatGPT는 이전의 챗봇과는 달리 사람과의 대화 문맥을 기억하고 특정 보고서나 프로그래밍 코드를 비롯한 상세하고 논리적인 글을 생성할 수 있습니다. 미국 일부 학교에서는 많은 학생들이 ChatGPT가 생성해 낸 결과물을 숙제로 제출해서 선생님들이 골머리를 앓고 있을 정도라고 하는데요. 이토록 점점 인간을 닮아가는 인공지능, 이것들은 대체 무엇이고 어떻게 똑똑해지는 걸까요?
인공지능이 '학습'을 통해 점점 더 똑똑해진다는 것 정도는 많은 분들이 알고 계신 것 같습니다. 그렇다면 인공지능의 학습은 인간이 책과 강의를 통해 공부를 해서 똑똑해지는 개념과 비슷한 개념일까요?
AI 엔지니어에 대한 이야기를 시작하기에 앞서 인공지능이 무엇이고 어떻게 똑똑해지는지를 먼저 알아보도록 하겠습니다.
인공지능이란?
'인공지능(AI)'은 인간의 학습, 추론, 지각 능력 등을 인공적으로 구현하는 컴퓨터 과학 분야 중 하나입니다. 쉽게 말해 주어진 문제만 해결하는 컴퓨터 계산기가 아닌 사람처럼 다양한 문제를 지능을 가지고 해결할 수 있는 능력을 지닌 시스템을 AI라고 볼 수 있습니다. 머신러닝, 딥러닝 등 다양한 개념이 있지만 이 글을 보시는 분들의 상황에 따라 이들의 차이를 명확히 이해하는 게 필수적이진 않을 수도 있습니다.
간단히 말씀드리면 인공지능이라는 용어가 조금 더 범용적이고 포괄적인 비공학적인 뜻을 가지고, '딥러닝'은 인공지능을 구현하는 방법 중 하나이지만 지금은 AI와 딥러닝은 유사한 개념이라는 정도만 알아두시면 좋을 것 같습니다.
유명한 인공지능 기술로는 이세돌 9단과 바둑 대결을 펼쳤던 알파고, 말하는 대로 그림을 그려주는 DALL-E, 앞서 말씀드린 인공지능 챗봇 ChatGPT도 있습니다. 물론 이처럼 유명하진 않더라도 일상생활이나 많은 산업 속에서 다양한 인공지능 기술이 사용되고 있습니다.
이렇게 특정 분야에서 이미 인간의 능력을 뛰어넘는 인공지능은 대체 어떻게 학습해서 똑똑해지는 걸까요?
수치화하기
인공지능의 학습 방법에 대해 알아보기 전에 세상의 다양한 문제를 풀기 위해 우리에겐 공학적인 시선이 필요합니다. 그 시작은 바로 모든 것들을 수치화하는 것입니다. 이미지, 동영상, 텍스트 등의 데이터는 모두 수치화할 수 있고 이들을 수치화해야 인공지능을 사용하든 아니든 문제를 풀기 위한 시작을 할 수 있습니다. 예를 들어 컴퓨터상에서 픽셀은 0에서 255까지의 수의 RGB(Red, Green, Blue)로 표현된다는 말 들어보셨을 겁니다. 이렇듯 이미지는 수치로 표현할 수 있고 텍스트도 특정 규칙에 따라 수치화할 수 있습니다. 이렇게 수치화한 데이터를 문제를 풀기 위한 시스템에 입력하여 결과 값을 얻는 것입니다. 인공지능 모델 또한 모든 입력은 수치화된 데이터이며 인공지능이 생성해 내는 것들이 그림, 사진이거나 텍스트인 경우가 많아서 자칫 착각할 수 있지만 표면적으로 인공지능 모델은 숫자를 받아서 숫자를 출력하는 하나의 시스템일 뿐입니다.
인공지능의 학습법
인공지능의 학습 방법을 알아보기 전에 우선 인공지능이 아닌 방법으로 문제를 해결하는 방법에 대해 간단하게 알아보고 넘어가겠습니다. 인공지능이 아닌 방법으로 어떤 수치적 문제를 풀기 위해서는 직접 문제를 풀기 위한 수식(시스템)을 만들어야 합니다. 이때 수식은 인간이 만든 것이기 때문에 문제를 해결하기 위해 가장 최적화된 식인지 판별하기 힘들고, 주어진 문제만 풀 수 있다는 단점이 있습니다.
그에 비해 인공지능은 어떤 수식도 될 수 있는 초기화된 함수를 스스로 업데이트시켜 문제를 풀기 위한 최적의 함수로 만드는 방법입니다. 학습되지 않은 인공지능에 어떤 입력값을 넣으면 아무 의미 없는 결과가 출력되지만, 그 결과와 원래 우리가 가지고 있는 정답과 비교를 하며 학습시킵니다. 답을 잘 맞히는 경우 잘 맞췄다고, 틀린 경우엔 어떤 답을 선택해야 한다고 말해주는 것입니다. 물론 수학적으로요. 학습 초기엔 소위 답을 찍는 수준이지만 학습을 반복적으로 진행하며 정답률을 높여갑니다.
이 정도만 알아도 어디 가서 인공지능이 어떻게 학습하는지에 대해 얘기하기에 충분하지만 한 걸음만 더 나아가 볼까요?
수학적이라는 것은 인공지능을 통과한 예측값과 정답과의 에러(손실 값)를 수치화하는 것에서 시작합니다. 이 수치를 작게 만드는 것이 정답률을 높이는 것이죠. 그런데 이 수치를 작게 만드는 방법으로 딥러닝 이전에는 여러 수치해석적인 방법을 사용했으나, 딥러닝은 현재 에러에서 미분 값을 보고 에러가 작아질 수 있는 방향으로 함수를 업데이트하는 것입니다. 물론 그 한 방향으로 계속 업데이트한다고 학습이 잘 되는 것은 아니고 반복적으로 미분 값을 보며 에러가 작아질 수 있는 확률이 가장 높은 방향으로 인공지능 모델을 업데이트한다고 보시면 좋을 것 같습니다. 이후 잘 학습된 인공지능에 입력값을 넣으면 의미 있는 결과가 나오는 것이죠. 정답일지 아닐지는 모르지만 적어도 이때까지 학습한 데이터를 토대로 무언가 계산했다고 볼 수 있습니다.
<미분 한걸음 더>
미분은 순간 변화율이기 때문에 에러 함수가 포물선인 2차 함수라고 가정했을 때 특정 x값에서 y값이 작아지는 방향을 알기 위해 미분을 해야 합니다. 미분을 해서 함수의 기울기를 알게 되면 y값이 작아지는 방향을 알 수 있기 때문입니다. 그냥 이 함수의 최솟값을 찾으면 되지 않냐고 생각하시겠지만 딥러닝은 굉장히 복잡한 수식이기 때문에(입력 차원이 상당히 크다) 에러 함수를 이미 알고 있는 것이 아니라 특정 입력값을 넣었을 때의 에러 값만을 알 수 있습니다. 그래서 미분을 통해 에러를 줄이는 방향을 탐색하는 것입니다.
인간의 학습법과 인공지능의 학습법의 차이
인간과 인공지능의 학습법은 어떤 차이가 있을까요? 센스가 있는 분들은 어느 정도 눈치채셨겠지만, 인간은 무언가 학습할 때 능동적이고 인공지능은 수동적입니다. 예를 들어 인간은 수학 문제를 풀다가 틀리게 되면 왜 틀렸는지 탐구하기 위해 정답과 해설을 봅니다. 하지만 인공지능의 경우 풀어낸(계산한) 문제가 틀린 경우, "예측한 답이 틀렸고 원래 답은 이거다"라는 사실로만 학습하게 됩니다. 해설지 없이 정답지만 보고 학습하는 것이죠. 우리 인간에게 대입해 보면 학창 시절 어려운 수학 문제를 풀고 틀렸는데 해설지는 없고 정답지만 보고 공부해야 한다면 정말 막막하겠죠? 어떻게 보면 인공지능은 효과적이지 못한 학습을 하고 있는 것입니다.
그럼에도 불구하고 왜 인공지능은 좋은 성능을 내는 것일까요?
바로 무진장 많은 데이터를 가지고 모델을 학습을 하기 때문입니다. 해설지는 없지만 정말 다양한 케이스의 문제와 정답을 주기 때문에 인공지능이 학습하면서 알아서 문제를 풀기 위한 방법을 찾는 것입니다. 조금 더 공학적으로 설명하면 정답을 맞히기 위해 에러를 줄이는 방향으로 수식을 업데이트하는 것입니다.