AI 기술이 빠르게 발전하고 있다. AI의 다양한 응용 분야에 대해 공부하는 것도 좋겠지만, 우선 가장 핵심 원리인 딥러닝에 대해서도 알고 가는 것이 좋을 것 같다.
AI를 구현하기 위한 방법인 딥러닝은 말 그대로 깊게 학습한다는 뜻이다. 방대한 양의 데이타를 가지고 수많은 학습, 수정, 재학습을 반복하면서 가장 정확한 학습상태를 만드는 것이다.
사람으로 치면, 한 번 공부하고 나서 점수가 신통치 않으면 공부방법을 약간 바꿔서 다시 공부해 보고 그래도 맘에 들지 않으면 계속 공부방법을 바꿔 보고...... 맘에 쏙 드는 점수를 얻을 때까지 계속 공부하는 것이다.
위 그림은 AI의 학습방법인 딥러닝이다. 사람의 뇌에 있는 뉴런들이 시냅스 연결을 통해 외부 자극이나 정보를 처리하는 방식을 모방한 것이다.
왼쪽에서 오른쪽 화살표 방향은 학습이 이루어지는 과정이고, 정해진 학습 회수가 끝나지 않았다면 되돌아 오면서 연산에 사용되는 수치들에 일부 수정을 가한다. 그리고 다시 오른쪽으로 진행하면서 학습을 한다.
입력층, 은닉층, 출력층, 노드, 전파, 역전파, 손실함수 등 딥러닝과 관련된 용어들이 있는데, 모두 이런 과정을 설명하기 위한 추상적인 단어들이다.
인간은 주로 언어를 통해서 학습하지만, AI는 주로 숫자(또는 이미지)를 가지고 학습한다. 그렇게 하려면 처음에 입력한 값(문장과 같은 말)을 잘게 쪼갠 다음 숫자로 바꿔야 한다. 이렇게 해야 그 다음 학습이 진행된다. 그러고 나면 무수한 숫자의 연산 작용이 일어난다.
만약, 챗GPT에 말로 입력을 하면 가장 먼저 하는 일은 입력된 말을 작은 단위로 쪼개고 숫자로 바꾸는 것이다.
"오늘은 무슨 요일이야?"라고 물으면 다음과 같이 쪼갠다.
"오늘", "은", "무". "슨", "요일", "이", "야"
(오늘 아침 챗GPT에게 물어본 결과다)
그 다음은 쪼개진 단위를 숫자로 바꾼다. 예를 들면 '오늘'에 해당되는 숫자는 50526이라고 한다(이 역시 챗GPT가 대답한 결과이며, 정확한 값은 달라질 수 있다고 한다).
세상에 존재하는 거의 모든 단어(더 정확하게는 쪼갠 단위)들이 숫자로 바뀌게 되어 AI 모델들은 방대한 양의 숫자를 가지고 학습하는 셈이다.
이때부터는 연관성이 가장 중요한 요소가 된다. '오늘'과 연관성이 높은 단어는 '월요일', '2월', '날씨' 등이다. 연관성이 거의 없는 단어는 '서랍', '모래' 등이다.
2월에 해당하는 숫자가 90854라고 가정한다면(실제로는 다르게 쪼개질 수 있다), 50526과 90854는 연관성이 높은 관계가 된다. 그리고 모래에 해당하는 숫자가 79023이라면, 50526과 79023은 연관성이 낮은 관계다.
"오늘 무슨 요일이야?"에 라는 문장에 대해 "오늘은 수요일이야", "오늘은 일요일이야"는 "오늘은 1월 25일이야", "오늘은 바람이 세게 불어"에 비해 연관성이 높다.
단어에서 문장으로, 문장에서 문단으로 커지면, 여러 숫자의 조합으로 구성되어 엄청나게 복잡해지겠지만, 대량의 GPU를 사용하면 된다.
딥러닝은 결국 AI 모델이 가장 연관성이 높은 조합과 패턴을 찾아내는 학습과정이다. 개발자들은 결과가 맘에 들지 않으면 학습하는 방법을 수정하도록 시킨다. 그러면 AI는 방금 전 학습방법에 약간의 수정을 가하여 다시 학습한다.
이런 방법을 무수히 반복하다가 개발자들이 맘에 드는 수준에 이르면 학습이 종료되는 것이다. 실제로는 학습을 몇 회 할 것인지를 처음에 정해서 주면 AI가 그 횟수만큼 학습하고 종료한다고 한다.
이렇게 수많은 학습을 하고 나면 요즘 챗GPT처럼 유창한 말솜씨와 답변 실력을 갖출 수 있게 된다. 엄청난 '연산 노동'을 수행한 끝에 얻는 실력이다.
코딩을 알아서 짜주거나, 글을 써주거나, 화학물질 합성방법을 알려주는 등 요즘 AI의 실력을 보면, 정말 많은 조합의 데이타를 가지고 엄청난 '노력'을 했다는 것을 느끼게 된다. AI가 답변하는 것을 보면 정말 똑똑한데 사실은 죽어라 연습한 '노력형 천재'가 아닐까.