이 글은 Google Cloud Study Jam - AI 통합반에 참여하고 배운 내용을 나름대로 정리한 글이다. 특히 그 중 이 강의의 내용을 정리해 보았다. 여러 오류사항이 있을 수 있으니 감안하고 읽기를 바란다.
일전에 Google Study Jam에 참여하고 나의 오해와 교육에 대한 글을 작성했었다. 그 뒤로 한번 더 Study Jam이 진행되었는데, 이번에 주는 상품이 너무 탐이나서 한번 더 참여하기로 결정을 했다.

이번에는 몇가지 선택해서 코스를 진행하는 방식이 아니라, 정해진 Path에 있는 모든 교육을 다 들어야 되며, 초급 - 중급 - 고급 단계로 나눠진 각 Path를 완수할 때 마다 받을 수 있는게 달라지는 과정이었다. 내가 원하는건 가방이었는데 이 경우 고급까지, 즉 모든 대상 코스를 완수해야 한다는 난관이 있었으나....어찌저찌 다 완수해서 최근에 가방을 입수할 수 있었다.
간단히 소감을 말하자면, 실습형 랩이 많았던 이전 Jam에 비해서 동영상 강의 및 간단 퀴즈로 구성되어 있었다. 그래서 상대적으로 적극적 참여를 요한다는 느낌이 없지 않았다. 물론 퀴즈 내용은 검색으로 쉽게 풀 수 있긴 하지만....그런거까지 막아가면서 교육하는건 결국 무료 프로그램이라 하긴 어려운 수준이 아닐까 싶긴 하다. 그리고 Path 설정을 통해 어떤 코스를 어떤 순서대로 들어야 하는지를 지정해 준 덕분에, 배워야할 지식을 순차적으로 배운다는 느낌도 있었다.
특히 초급부터 고급까지 꾸준히 AI에 대한 기초 지식을 설명하는 영상이 많아서, 이번 기회에 AI에 대한 지식을 다시 정리할 수 있었다. 이전까지는 패턴인식, Neural Network, Deep Learning, LLM 등 파편적인 지식만 보유하고 있었는데, 그래도 조금은 이들을 유기적으로 엮을 수 있게된 것 같다. 물론 Notebook을 벗어나 실제 미션을 풀어내는 연습을 하지 않는한, 빈칸이 많은 아쉬운 지식이겠지만...
어쨋든 그래서 이번 Study Jam에서 배운 AI에서 ChatGPT까지 가는 여정을 추상적으로 간단히 정리해보자.
AI는 Artficial Intelligence의 약자로서, 기계가 인간처럼 행동하게 만드는 컴퓨터 과학의 세부 분야 중 하나다. 최근에는 ChatGPT를 위시로 한 생성형 AI(Generative AI)가 유행어처럼 번지고 있지만, 실제로 AI라는 분야가 등장한 것은, 위키피디아에 따르면 무려 1956년도이다. 그때 당시에는 현재처럼 머신러닝이나 LLM 같은 개념은 아마 없었을 것이다. 이때의 AI는 "프로그래밍 가능한 디지털 컴퓨터"의 등장과 함께 논의된, 인간처럼 생각할 수 있는 "전자 두뇌"의 존재 가능성에 대한 논의였다.
앞서 서론을 마무리 지으면서 AI에서 ChatGPT까지의 여정이라고 했는데, 이렇게 말하니 AI라는 학문이 시작되고, 그다음 다른 학문, 또다시 다른 학문으로 연결되었다는 듯한 어감이 있는거 같다. 하지만 실상은, AI라는 거대한 분야에서, 여러 기술의 세분화와 고도화를 통해 ChatGPT가 등장하게 된 것이다. 그 모습을 그림으로 표현하면,

위와 유사하게 생각할 수 있다.
이제 이를 하나씩 살펴보자.
머신 러닝은 한글로 기계 학습이다. 앞서 언급한 대로, 머신 러닝은 AI의 세부 분야 중, 데이터와 알고리즘을 가지고 모델을 만드는 분야이다.
사실 컴퓨터의 분야에서 나오는 여러가지 용어들이, 만들어진 방식을 구분하기 위해서 만들어지는게 아닌가 하는 생각이 드는게 이 모델이라는 용어다. 앱(App)이라는 말을 생각해보자. 컴퓨터와 친하지 않은 사람이라면, 아이폰을 비롯한 스마트폰의 등장과 함께, 스마트폰에서 사용하는 기능들을 앱(App)이라고 부르는 데서 사용했을 것이다. 하지만 App은 Application의 약자이고, 여기 뒤에 Software를 붙이면 "응용 소프트웨어"가 된다. 이는 이전에 흔히 사용하던 컴퓨터 프로그램과 환경의 차이를 구분하기 위해 "앱"이라는 말을 쓰는것에 불과한게 아닌가 싶다.

물론 그게 아이폰 1세대를 저평가할 이유가 되지는 않는다.
그런 측면에서, 프로그램의 역할을 생각해보자. 프로그램은 실행되면, 사용자가 여러가지 인터페이스를 통해 자신이 하고싶은 행동을 입력한다. 그러면 프로그램은 자신이 만들어진 방식대로 컴퓨터에 명령을 전달해, 사용자에게 행동의 결과를 출력한다. 그래서 프로그램을 공부하면 "모든것이 입출력이다"라는 말을 하기도 한다.
그렇다면 모델의 입출력은 무엇일까? 라는 질문에 대답을 해보면,
라고 할 수 있다. 즉 머신러닝도 어찌보면, 특수한 방식으로 실행하는 프로그램을 만드는 것의 연장선일지도 모른다. 이 생각을 가지고, 머신러닝과 모델에 대해서 알아보자.
모델을 만드는 과정에서 머신러닝은 수 많은 데이터와, 그 데이터를 통과시킬 알고리즘을 필요로 한다. 이때 이 알고리즘은 헐씬 복잡하겠지만, 다음과 같은 수식이라고 생각해보자.
이 때, 의 값이 정해지면, 이 식이 참이 되도록 하는 를 구하는게 일반적인 문제 풀이일 것이다.
반면 머신러닝에서는 반대로, 가 주어지지 않는다. 반대로, 이 식이 참 또는 거짓이 되게 하는 수 많은 가 데이터라는 형태로 주어지게 되는 것이다. 그러면 컴퓨터는 자신이 적용하도록 만들어진 알고리즘에 를 넣어보고, 이게 0이 되려면 가 얼마여야 할까를 푸는 것이다. 그렇게 수많은 데이터가 들어가게 되고, 그에 따라 를 조정한다. 최대한 많은 에 대해 결과가 맞을 수 있도록. 즉, 보다는 가 있다면, 수 많은 를 줌으로서 그 데이터들이 정답이 되도록 하는 를 조정하는 것이다.
당연하지만 이 때 사용되는 알고리즘은 이차함수와는 전혀 다른 복잡한 알고리즘이 될것이다. 그리고 거기에서 사용될 매개변수의 갯수 또한 엄청나게 많다. 이러한 매개변수를 하이퍼 파라미터(Hyper Parameter)라고 부른다. 그리고 의 값에 따라 정답이 되는 가 다르듯이, 어떤 데이터를 사용했느냐에 따라 정답이 가장 많은 하이퍼 파라미터도 당연히 다를 것이다. 이때, 특정 데이터에 대해서 가장 많은 데이터를 정답으로 판단한 하이퍼 파라미터의 집합을 모델이라고 부른다.
그렇게 만들어진 모델은 새로운 데이터를 받으면? 이전과는 다르게 이미 정해진 하이퍼 파라미터를 바탕으로 주어진 새로운 데이터에 대해서 결과를 다시 출력하는 것이다!
모델을 만드는 과정은 이 데이터를 한번만 사용하는 것이 아니다. 데이터를 알고리즘에 전달할 때 마다, 더 많은 데이터를 만족시킬 수 있도록 하이퍼 파라미터를 조정한다. 마치 책을 여러번 읽으면 그 내용을 더 잘 알듯이, 모델을 학습해 가는 것이다. 그래서 이를 머신 러닝, 기계 학습이라고 부르는 것이다!
이제 딥 러닝을 살펴보자. 앞에서는 딥 러닝을 "머신 러닝을 하기 위한 알고리즘으로 인공 신경망을 사용한다"고 표현했다. 즉 딥 러닝도 머신 러닝의 하위 분야이며, 모델을 만드는 분야라고 생각할 수 있다.
이 인공 신경망이라는 것은 인간의 신경망을 본따 만들어졌다. 신경망에는 수많은 뉴런들이 있으며, 이들은 주어진 자극을 바탕으로 새로운 자극을 보내며, 이 자극들이 모여 행동을 결정한다. 인공 신경망도 이런 뉴런의 역할을 하는 노드로 구성되어 있으며, 노드는 각각 입력된 데이터에 대하여 판단을 내린다. 각 노드는 여러 노드로부터 신호를 받을 수 있고, 다시 여러 노드로 신호를 보낸다.

이때 이 노드들은 계층적 구조로 정리되어 있다. 즉, 한 계층의 노드들이 다음 계층에 노드들에게 자신의 결정을 신호로 보내는 것이다. 그리고 이러한 계층을 차곡차곡 쌓아서, 마지막 결과까지 깊게 진행되도록 계층을 쌓는 것이다. 그래서 딥 러닝(Deep Learning)이라고 부른다.
여기서 더 복잡하게 딥 러닝의 신경망들의 예시를 들어보고 싶기도 하지만...이해가 부족한것도 있고 개략적인 설명을 하는게 목적인 만큼, 딥 러닝도 결과적으로는 머신 러닝에서 사용하는 알고리즘의 일종이라고만 정리를 하겠다.
머신 러닝으로 만들어진 모델은 대체적으로 두가지로 분류할 수 있다. 모델을 프로그램이라고 생각해보자. 프로그램은 x를 입력받아 y를 출력한다. 이때 이 x와 y가 무엇인지에 따라 분류를 한다. 하나는 판단형(Discriminative) 모델이고, 다른 하나는 생성형(Generative) 모델이다.
예를 들어 우리가 수 많은 강아지 이미지를 바탕으로 모델을 만들었다고 가정해보자.

우리가 머신 러닝으로 모델을 만들고 실행하면, 다시 모델에 입력 데이터를 주게 될것이다. 이는 또다른 강아지의 이미지일 수 있다.

이때 우리의 모델은 이 이미지가 "강아지가 맞는지 아닌지"를 판단하여 그 확률을 제공할 수 있다. 이렇게 확률을 제공할 경우, 그 모델은 판단형 모델이 된다. 즉, 학습 데이터를 바탕으로 입력받은 데이터를 분류하고 판단한다는 의미이다.
반면 우리가 만든 모델이 입력 데이터를 바탕으로 또다른 강아지 데이터를 만들어 낼 수 있다.

예를들어 수많은 영어 회화 데이터를 바탕으로 생성형 모델을 학습했다고 가정해보자. 그런 다음 모델에게 다음과 같은 입력 데이터를 제공하게 된다.
"I'm making a sandwich with peanut butter and"
그럼 생성형 모델은 자신의 학습 데이터를 바탕으로, "앞쪽 문장의 내용 뒤에는 y가 많이 나왔어"라는 추측을 하고 이를 출력하게 되는 것이다.
# in
"I'm making a sandwich with peanut butter and"
# out
"jelly"
"jam"
"cheese"
이렇게 학습 데이터가 가진 데이터의 구조를 학습하여, 다음에 와야할 새로운 데이터를 추측해서 돌려주는게 생성형 모델이 된다.
글을 시작하기 전에는 추상적인 수준에서만 다루겠다고 생각하면서 글을 작성했으나...그마저도 쓰면서 내가 모르는게 정말 많다는 사실만 깨닫게 되었다. 그래서 본래 한 글에서 GPT까지 가려던 계획을 철회하고 좀더 공부를 한 뒤 다음 글에서 나머지 이야기를 해보기로 한다. 어째서 생성형 AI가 등장하게 되었는지, 그 배경이 되는 구조는 무엇인지, 또한 GPT가 어찌 그렇게 다양한 분야에 대해서 능숙하게 응답을 할 수 있는지. 다음 글에서 마저 이야기해보자.