머신러닝AI2024. 9. 14. 11:26

 딥러닝이라는 개념이 각광받는 가운데, 단지 마케팅 용어로 딥러닝을 접하고, 피상적으로만 알고 있는 사람들이 꽤 많다. 정작 이 분야를 잘 알아야 하는 사람들도 그렇다. 예를 들어 흔히 듣는 이야기는 단순한 통계모델로 하면 될 문제를 '딥러닝'으로 풀겠다고 이야기한다는 사실이다. 딥러닝이 성능이 좋다는 말이 널리 퍼지면서, 앞뒤의 맥락없이 그렇게 접근되기 때문이다. 아쉬움 가득한 상황이다. 그래서 오늘은 이 이야기를 간단히 해보자.

 

 딥러닝은 어찌보면 연결주의자들의 꿈이다. 사람들은 오랫동안 기호주의에 의거해 AI 문제를 해결하려고 했다. 즉 if-then의 끊임없는 나열이나, 어떤 단순한 통계 모델을 조합해서 완전하게 설명가능한 AI를 만드는 것이다. 직접 프로그래밍을 한다고 생각해보면 쉽게 이해할 수 있다. 우리가 하는 대부분의 환원주의적인 과학 접근 방식을 닮은 방식이다. 모든 것을 잘게 분할해서 부품을 잘 만든 후 합쳐서 완성품을 만드는 형식이다. 로보트를 그렇게 만들지 않는가. 팔을 연구하고, 다리를 연구하고, 각각을 연구해서 모두 붙인다. 그것이 기호주의가 따르는 방식이다.

 

 그런데 연결주의는 좀 다르다. 최초의 인공 신경망은 이미 1943년(Warren McCulloch, Walter Pitss) 부터 다루어져왔는데, 그저 입력값들에 배정된 가중치를 곱해서, 어느 정도 이상의 합 결과가 나오면 발화된다는 단순한 구조의 반복이다. 신경해부학자들은 말도 안된다며 펄쩍 뛴다고 하지만, 우리네 신경세포를 조금은 닮았다. 인공 뉴런을 계속 병렬로 나열하면 여러가지 입력을 다룰 수 있고, 여러 층을 만들면, 2차원의 신경망이 펼쳐지게 된다. 매우 똑같은 역할을 하는 인공신경 여러개를 연결해서 망을 이루고, 이것을 늘려나가면 복잡한 문제를 풀 수 있을 것이라는 것이 이 인공 신경망의 기대였다. 이미 1950년대에 그런 믿음이 주장될 정도로 이 인공신경망에 대한 기대는 컸다.

 

 얼마나 매력적인가. 복잡한 것을 설계할 필요가 없다. 뉴런을 그냥 늘리고, 신경망 가중치만 적절히 조절해주면 그 복잡한 구조 속에서 복잡한 일을 해내게 될것이다. 물론 아쉽게도(?) 어려운 점이 없는 것은 아니다. 바로 그 모든 노드들의 가중치를 정하는 문제이다. 우리는 이것을 '학습'이라고 이야기한다. 데이터를 통해 이 가중치를 적절한 방식으로 조절해주어야만 신경망은 제 역할을 할 수가 있다. 

 

 그런데 이 신경망의 어려움은, 신경망을 얼마나 복잡하게 만들어야 할지, 또한 복잡할수록 이 가중치값이 많아져서, 어떻게 조절을 해야 제대로된 출력을 낼지 알기 어렵다는 사실이다. 그래서 한참 이 신경망은 여러가지 개선 이론에도 불구하고 인기가 떨어졌다. 1969년 마빈 민스키 등이 간단한 신경망에서, 기존의 일반적인 방법으로 풀지 못하는 상황이 있다는 것이 초기 유명한 증명 사례다(XOR문제). 그리고 MLP(다층퍼셉트론-다층신경망)에 대한 학습 해법인  back propagation이 1974년 최초로 박사학위 논문에 등장하고(Paul Werbos), 그 유명한 힌튼 교수도 유사한 방식을 주장하면서(1986년, Geoffrey Hinton) 1980년대에 다시 한번 기대를 받게 된다.

 

 하지만 역시나 신경망이 커지면 이 방법마저도 그다지 효과적이지 않고, 최적값에 수렴하지 못하는 경우가 많다는 것은 역시 단점이었다. 그래서 더 확실히 최적화 가능한, 수학적으로 더 우아한 SVM(2000년 전후까지 강세였던) 같은 방법에 밀려버렸고 2006년경까지 신경망은 그저 연결주의자들의 예측하기 어려운 변덕적인 방법으로 취급받아왔다. 학습할때마다 결과가 다르고, 잘 학습도 안되는 모델일 뿐이었다. 그래서 논문을 제출해도 잘 받아주지도 않았다. 그 시기가 바로 인공신경망의 가장 혹독한 겨울이었다. 연결주의의 암울한 시기이다.

 

 그러다가 이 연결주의(신경망)를 포기하지 않았던 Hinton교수 랩을 중심으로 다양한 방법론이 등장하게 되었다. 초기 신경망의 가중치를 전략적으로 잘 설정하면 된다던가, Auto Encoder라는 방법으로 한층한층 학습을 시킨다던가, 가중치를 합해서 발화를 판별했던 그 활성화 함수를 바꾼다던가(ReLU), 노드들을 일부분 생략하고 학습을 해서 좀더 넓게 학습 결과가 퍼져나가게 하는등(Dropout) 다양한 전략이 소개되었다. 그러면서 전보다 훨씬 더 효율적이 더 큰 신경망을 학습시킬 수 있음을 알게되었다. 이때 바로 소위 논문 accept가 잘 되기 위해서 이 신경망에 deep belief net, deep networks 라는 이름을 붙이기 시작했고, 이것이 딥러닝의 기원이 되었다. 그래서 흔히 사람들이 지칭할때, 좀더 계층도 많고 입력도 많은 신경망을 이제 '딥러닝'이라고 부른다고 표현한다.

 

" A fast learning algorithm for deep belief nets, 2006년 제프리 힌튼"

" Greedy layer-wise training of deep networks, 2007년 요수아 벤지오"

 

 여하튼 그래서 deep learning이란 큰 신경망이나 깊은 신경망(2차원이니까 입력을 늘릴 수도 있고 층을 늘릴 수도 있으니, 이 경우는 층을 늘리는 의미가 좀더 있겠다. 깊은 층을 만드는 일이다)을 의미한다고 보면 된다. 그러면 얼마나 커야 할까?

 

 이제 2010년이 넘었고, CNN(Convolutional Neural Networks)이 각광받던 시기가 되었다. 사실 저렇게 큰 신경망에 대해서 연구를 했다고 하지만 아직 컴퓨팅 한계 때문에 큰 신경망을 실험하기가 어려웠다. CNN자체는 1998년도에도 논의되었으나 세간에 제대로 히트를 친 것은 2012년이다. Hinton제자중에 Alex와 Sutskever가 게임에나 쓰던 병렬 소수점 연산 프로세서인 GPU를 사용해(Alex의 작품이다) 이미지 인식 대회에서 큰 성능 향상을 이뤄낸다. 바로 AlexNet(2012년)의 탄생이다. CNN과 큰 신경망을 제대로 구현해서 제 시간 안에(?) 학습을 시킨 셈이다. 6천만개 파라메터를 사용했다고 한다. 그정도만 되어도 연산량이 어마어마하다. 그래서 딥러닝이란 이제 큰 신경망 + GPU + 많은 수의 데이터라는 공식이 성립되게 된 셈이다. 물론 숫자 인식 정도는 그리 크지 않은 신경망으로 가능하게 되었지만, 상용으로 쓸 정도의 문제는 대개 예외 처리가 어려운 문제(이를테면 이미지/음성 인식같은)에 대규모의 데이터를 넣어서 큰 신경망으로 해결하는 것이 딥러닝이라고 볼 수가 있겠다.

 

 이후 이런 딥러닝 기술들은 CNN이 주목한 이미지 인식 외에도, 시계열의 데이터를 처리하는, 즉 말의 흐름을 다루는 RNN이나 LSTM같은 시계열 처리로 이루어지고, Google BERT와 GAN을 거쳐 Transformer로 진화하게 되었지만(2010년대에 모두 이루어진 일이다) 그 주요 기반이 신경망인 것은 그다지 변하지 않았다. 그리고 하나 짚고 넘어갈 일은 '생성형'이 유행하게 된 사실이다. 적대적생성신경망(GAN)에서 유래한 이 개념은, 과거에는 단순히 판정에 집중했던 것에 반해서, "이해를 했다면 생성도 가능하다"는 지능의 한 분야를 발전시킨 개념이다. 생각보다 쓸모가 다양하고, 생성형 언어모델로 이끌기 까지 했지 않는가.

 

 좀 여러가지 생략을 했는데, 따라서 딥러닝은 단순한 통계 모형으로 풀기 어려운 복잡한 문제를 지향하고, 큰 신경망과 대량의 데이터, 컴퓨팅을 요구하는것이 기본이다. 물론 LoRA같은 소규모의 부분 튜닝 학습도 존재하기는 하지만 기본적으로는 그렇다. 그리고 단순 수치에 대한 해석과 예측은 별개로 잘 발전한 decision tree류의 모델(gradient boosting모델, LGBM, XGBoost, ..)들도 훨씬 효과적일 때가 많다. 특히 데이터가 부족하고 컴퓨팅이 부족한 실제 산업 현장에서는 요긴하게 사용된다. 또한 딥러닝을 한다고 하면서 파라메터 크기가 몇만개 정도 수준이면 좀 애매하게 볼 수도 있겠다. 복잡한 문제를 풀기에는 너무 작은 크기 아닌가?

 

 그리고 AlexNet 논문의 공저자이자 OpenAI의 수석과학자였던 Sutskever가 논의했던 신경망의 크기도 짚고 넘어가보자. OpenAI를 시작했을때도 이 신경망의 크기를 키우면 잘 될것이라는 아이디어는 결과적으로 상상력이 부족했다. 엄두가 안나는 크기인 수십억, 수백억 파라메터 크기까지 늘리면 잘된다는 사실을 본인도 처음부터 시도한 것은 아니라고 고백하는 인터뷰를 본 적이 있다. 여하튼 그렇게 딥러닝은 이제 수백억 수천억 파라메터를 지닌 크기의 신경망을 다루게 되었다. 하나 더 팁을 주자면 이 크기의 신경망을 학습하기 위해서는 그저 인터넷상에 널려있는 수없는 텍스트 문장이 있으면 되게 되었다. 하나하나 분류 결과가 필요했던 이미지와는 차원이 다른 데이터 금맥이 발견된 셈이다. 그래서 이 엄청난 텍스트 문장 데이터와 거대 신경망 모델이 오늘날의 딥러닝을 대표하지 않나 생각이 든다.

 

 그래서 이러한 배경을 놓고 딥러닝을 이야기하면 조금더 현실적으로 논의할 수 있겠다. 그래서 문제 구분없이, 작은 신경망으로 문제를 해결하면서 딥러닝을 한다고 하는 주장을 하면 아무래도 좀 아쉬운게 많은 것은 연결주의자들의 생각이 아닌가.

 

반응형
Posted by 작동미학
머신러닝AI2024. 9. 6. 22:48

 Stable Diffusion보다 훨씬더 이미지를 잘 생성해주는 Flux.1이 출시되었다. Stable Diffusion에서 나와 창업한 이들이 만들었고, 상업용과 공개용 모델이 공존한다. 아무래도 Stable Diffusion의 라이센스가 강화됨에 따라, Flux.1이 각광받을 것 같고, 기본 모델로도 고해상도에서 꽤 잘 이미지를 생성해준다. 아래는 NVidia RTX 4090 (24GB)에서 실행해보았으며 12GB이하 메모리를 지닌 GPU에서는 별도의 조치가 필요하다.

 

0. 아래는 간단히 생성해본 1024 * 1024 이미지다. 품질이 좋다!

"a modern soldier on the battle field"

 

1. Flux.1을 지원하는 ComfyUI 및 ComfyUI-Manager를 설치한다.

 

https://github.com/comfyanonymous/ComfyUI 에 접속한 후 화면 하단의 아래 Direct link to download를 통해 압축파일을 다운받는다. 그리고 적절한 폴더에 압축을 푼다. 여기서은 d:\dev\ 폴더에 압축을 풀었다고 가정한다.

[Direct link to download를 눌러 파일을 1.5GB 정도 되는 ComfyUI를 다운로드 받는다]

 

곧이어 위 압축을 푼 폴더의 하위 ComfyUI/custom_nodes에서 git으로 아래와 같이 다운로드 받는다.

 

> cd D:\dev\ComfyUI_windows_portable\ComfyUI\custom_nodes

> git clone https://github.com/ltdrdata/ComfyUI-Manager.git

 

이후  ComFyUI는 아래와 같이 실행하는데, 일단 모델 파일들을 받아보자.

 

> cd D:\dev\ComfyUI_windows_portable

> run_nvidia_gpu.bat   (혹은 GPU가 없다면 run_cpu.bat도 실행가능하다)

 

 

2. 아래 모델 파일들을 다운로드 받는다. hugging face에 공개된 모델들이고, hugging face에 가입한 후 필요하면 사용 동의를 해주어야 정상적으로 다운로드 받을 수 있다.

 

 a. https://huggingface.co/Kijai/flux-fp8/tree/main 에서 2개의 파일을 다운로드 받아 아래에 복사해준다. (fp8버전으로 받자)

 

   d:\dev\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\models\unet\

 

 

 b. https://huggingface.co/black-forest-labs/FLUX.1-dev/tree/main/vae 에서 2개의 파일을 다운로드 받아 아래에 복사해준다.

 

d:\dev\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\models\vae\

 

 

 

c. https://huggingface.co/comfyanonymous/flux_text_encoders/tree/main 에서 2개의 파일을 다운로드 받아 아래에 복사해준다.

 

d:\dev\ComfyUI_windows_portable_nvidia\ComfyUI_windows_portable\ComfyUI\models\clip\

 

d. 아래 사이트 에 접속해서 Download로  json 파일을 하나 받아준다.

 

https://openart.ai/workflows/maitruclam/comfyui-workflow-for-flux-simple/iuRdGnfzmTbOOzONIiVV

 

workflow-comfyui-workflow-for-flux-simple-iuRdGnfzmTbOOzONIiVV-maitruclam-openart.ai

(flux 구성을 기초적으로 한 파일이다. ComfyUI를 실행해서 화면에 drag&drop으로 넣어줄 파일이다)

 

 

3. ComfyUI를 실행한다.

 

> cd D:\dev\ComfyUI_windows_portable

> run_nvidia_gpu.bat   (혹은 GPU가 없다면 run_cpu.bat도 실행가능하다)

 

잘 실행되면 아래 비슷한 화면이 나온다. 여기에 아까 받았던 json을 drag & drop으로 화면위에 떨궈준다. 그러면 기본적인 셋팅이 완료된다.

 

ComfyUI 윈도우에서 실행한 화면
상기 과정을 거쳐 실행된다.

 

 기본 셋팅으로 쓰면 이름이 제대로 설정이 안되서 아래 3가지 셋팅의 명칭은 확인해서 바꿔준다. (Load Diffusion Model, DualCLIPLoader, Load VAE 3가지 박스이다. 다운받은 파일들로 바꿔준다.

 

이제 Prompt에 적당한 표현을 넣고, Queue Prompt를 눌러보면, 1024*1024로도 멋진 사진이 잘 나오는 것을 알 수 있다. 고해상도에서 기본모델인데도 꽤 잘나온다. RTX 4090으로 약 30초 미만으로 생성되었다. 속도 자체는 기존 Stable Diffusion과 비슷했다.

 

고해상도 이미지를 잘 생성해주고 있다.

 

12GB이하 메모리의 GPU에서는 별도의 방법이 필요하다고 한다. 우선 여기서는 24GB GPU에서 실험한 결과를 공유한다.

 

반응형
Posted by 작동미학
머신러닝AI2024. 9. 5. 21:42

 이 이야기가 어떤 도움이 될지는 잘 모르겠지만, 여러가지 참고가 될 수도 있지 않겠는가 기대를 해본다.

 

 처음에 사람의 지능이나 기억 등에 관심을 갖게 된 것은 환상특급이라는 미국 SF 시리즈를 접했을 때이다. 정확히 기억은 안나지만, 사람의 기억에 대한 이야기이며, 사람의 기억을 비디오로 재생하는 모습이 기억난다. 거기서 사람의 기억은 영상으로 그대로 보여졌다. 90년 전후의 기억이다.

 

 이 때의 첫 의문은 정말 사람의 머리속 기억이 저렇게 영상으로 기억될까? 였다. 그리고 곧바로 그렇지 않을 것이라고 생각했다. 영어사전을 첫장부터 계속 넘기면서 본다고 해보자. 과연 그것이 영상으로 머리속에 남아있을까? 우리는 초인적인 능력을 발휘하면 머리속에서 그것을 모두 찾아낼 수 있을까? 전혀 그렇지 않을 것이라고 생각한 것이다. 상식과 부합하지 않다고 봤다.

 

 이후에는 이러한 지능에 대한 여러가지 고민 속에 유물론적 사고관이 자리잡기 시작했다. 그것은 진화론, 특히 지금은 진화심리학이라고 알려진 것과 함께했다. 그렇게 아예 기존에는 전혀 개념이 없던, 정신의 작동에 대해서 여러가지 내적인 질문/답변을 통해 이런저런 가설을 세우고 정리할 수 있다는 사실을 깨닫게 되자, 지능을 이해하고 구현할 수 있다는 생각이 중고등학생 시절 들기 시작했다. 돌이켜보면 사실은 별로 이해한 것도 없었지만, 아예 모호한 것에서 어떠한 틀이 생겼다고 판단되면, 사람은 그것을 대부분 이해했다고 착각하게 된다.아마도 1950년대 최초로 AI를 논하던 서양의 학자들이, 곧 그것을 만들 수 있다고 믿었던 것도 비슷한 맥락이라고 생각한다. 조금만 체계가 잡히는 것처럼 보여도 곧 나머지는 시간문제처럼 여겨지게 된다. 여러가지의 논리적인 체계를 수립하고 독서의 과정 중에서 타인의 의견까지 확인되면 자신감이 생기는 것도 있었다. 여러 학자들의 단편적인 주장들이 내 추측과 다르지 않다는 것을 알게 되었던 것이다. 

 

 그렇게 96년경 대학 학부에 들어가기 전부터도 나는 지능을 구현할 수 있을 것이라는 확신을 가졌으며 이를 위해 여러가지 관련 지식을 찾기 시작했다. "인지과학" 학회에 참여하거나, 여러가지 대학교 교양을 그러한 분야로 정해서 들었다. 그런데 전공을 전산학을 하고 수업을 인공지능을 들었지만, 의외로 그 수업은 수학적인 지식을 쌓거나 단순 알고리즘에 대한 것이 전부였다. 돌이켜보면 그 모든 것이 기초였지만, 당시에는 내가 만들고자 했던 인공지능과는 거리를 좁히기는 어려웠다. 그러한 것들은 지능이 보여주는 복잡성 대비해서는 너무 "단순했고, 피상적이었다".

 

 그러던 와중에 복잡계와 인공생명을 접하게 되었다. 인터넷을 통해서 지속적으로 정보를 확인하고, 책을 보다보니 두 분야가 눈에 들어왔다. 가장 인상깊은 것은 인공생명 내에서 소개한 'Life Game'이었다. 즉, 단순한 법칙이 대규모로 되먹임으로 반복되면 창발성이 발생한다는 단순한 논리며, 자가 복제하는 생명이 탄생한다는 것이다. 그리고 신경망이나 진화학습 알고리즘을 접하던 것이 2000년이 조금 넘은 시기였던것 같다. 그러다가 한동안 병역문제를 해결하기 위해 2000년부터 2004년까지 소프트웨어 개발자 생활을 했고, 오직 광범위한 프로그래밍 문제에 메달리게 되었다. 어찌보면 이 시기는 코딩이나 오픈소스, Fast Prototyping 등 공학적인 관심을 다양하게 발산하던 시기였다고 생각한다. OS나 디버깅 등 원없이 이러한 소프트웨어 개발 시기를 보냈다. 나는 제품을 만들고 고쳐야했으며 거기에 충실히 임했다. 그런 후에 병역 문제가 해소되자, 전부터 생각하던 AI를 공부하기 위해 석사과정을 지원했다.

 

 다만, 입학후 당시에 학계에서 유행하던 알고리즘은 SVM(Support Vector Machine)이었고, 학교는 충실히 그 방향을 따랐다. 그 모델의 수학적인 완성도나 OCR 개선, high resolution, 필기체 생성 등 과제가 몸담았던 랩의 중요한 과제들이었고, 인공생명이나 신경망 같은 것에 대한 관심은, 학계 전체적으로 그 추상적인 것들을 어떻게 해결해야 할지 갈팡질팡하는 논리적 혼란을 겪으면서 진행되던 시기였다. 신경망은 학습할 때마다 결과가 다른 변덕스러운 녀석이었으며(유전자 알고리즘도 마찬가지였다), 신경망이 조금만 복잡해져도 잘 학습되지 않았고, 실험 결과는 며칠이나 걸려도 구하기 어려웠다. 신경망이 한참 각광을 받다가 천덕꾸러기가 된 시기였다. 이를 타개하려면 Hiton교수 랩에서 deep nets라는 이름으로 우회해서 논문이 등록되는 최소 2006년을 기다려야 했다.

 

 그러한 학계 맥락에도 불구하고, 기본적인 머신러닝의 절차. 즉 데이터를 준비하고 다듬고, Feature를 만들고 다양한 모델을 돌리며, 그것을 코딩하고 결과를 얻는 과정에 대해서는 잘 배울 수 있었다. 이론을 다지기는 짧았지만, 실무는 잘 이해할 수 있었다. 당시의 AI란 통계 모델이었으며, 가급적 Feature는 다양한 데이터에 대해서도 일관성을 갖추도록 최선을 다해서 변이가 줄어드는 것을 잘 선택해야 했으며, 그에 기반하여 단순한 모델들이 그것을 잘 학습하게 하는 것이 지상 목표였다. 특히 석사과정인 나에게는 더욱 그랬다. 우리가 아는, 사람의 일반적인 지능과는  다른 것이었지만, 그러한 노력들이 이를테면 인쇄체 인식분야에서는 꽤 빠르고 정확한 성능에 다다르는 것은 가능하게 되었다. 즉 변화가 다양한 현실에 대해서 최대한 그 다양성을 없애려는 것이 오히려 그 시기 내 노력의 대부분이었다고 생각한다. 모델의 개선이란 쉽지 않은 수학적인 주제 중의 하나였다.

 

 그래서 "복잡한 지능적 문제"는 도대체 인간이 어떻게 푸는지 감을 잡을 수도 없었다. 예컨데 인쇄된 문서가 아니라 자연상태의 간판같은 것들을 찍어서 인식하는 문제(scene text recognition)는 너무도 그 변이를 표준화할 수 없어서, 완전히 풀기 불가능할 정도의 문제였다. 랩에서 그런 이야기를 종종 들었던 기억이 있다.

 

 그럼에도 불구하고 언급했던 것처럼 통계 모델들이 향하는 본질은 이해할 수 있었다. 그것은 데이터를 통해서 공간상에 여러가지 경계선을 긋는 작업이었도 이를 기반으로 분류를 행해주는 일을 주로 하는 수학적인 과정이었다.

 

 다만, 2004~2006년 당시에 '진화'와 '신경망'이라는 개념은 내게 크게 다가왔다. 도대체 지능을 환원적으로 바라보고 구현할 수 없다면, 그것이 가늠할 수도 없이 복잡하다면, 신경망 같은 구조에서 창발성을 기다려야 하고, 그 구조는 진화알고리즘 같은 것으로 계속 바꿔줘야 한다고 생각했다. 2006년까지 석사과정을 마치면서, 내 머리속에 떠오른 이 지능 구현에 대한 해결책은 다음과 같았다.

 

 1. 신경망을 구성한다(혹은 다른 모델일 수도 있겠다. 그런데 다른 창발성을 일으킬 수 있는 모델이 떠오르지 않았다.)

 2. 유전자 알고리즘으로 계속 구조를 바꾸고

 3. 자연과 비슷한 시뮬레이터(경쟁과 생존이 있는) 상에서 그것을 계속 실험하고 진화시킨다

 4. 그러다가 말을 하고(?) 지능을 갖추면 멈춘다.

 5. 이것을 엄청나게 반복한다.

 

 사실 여전히 나는 이 방법론이 실제 지능의 문제를 개선시킬 것이라고 믿는다. 중간에 너무나 비약이 크지만(3번과 4번사이에 간격이 너무 크다고 생각한다) 다른 뾰족한 방법이 없었다. 따라서 나는 당시에 3번 즉 시뮬레이터를 연구해야한다고 생각했다. 과연 어떠한 복잡도로 자연과 유사한 시뮬레이터를 만들어야 지능을 탄생시킬 정도로 할 수 있을까? 너무 단순하면 잘 학습이 안되지 않을까, 너무 복잡하면 구현하기가 어렵고 느리다. 물리적인 환경은 어디까지 해야할까? 그리고 당시에 선배들의 논문 속에 '진화연산신경망'이라던가 이런 개념들이 너무나 인상 깊었다. 이 시뮬레이터의 틀을 그 복잡성 관점에서 수학적으로 분석할 수 있지 않을까?

 

 그 시기 즈음에, 따라서 저런 방법론을 가지고, 사업을 해서 돈을 번 후에 연구소를 만들어서 지능을 만들 수 있지 않을까 상상하던 시기다. 지능에 대한 유물론적인 접근을 나는 할 수 있다고 믿었기 때문이다. 병행하여 신경과학이라던가 여러가지 생물의 구조나, 굉장히 초기 진화 단계의 생명체나 뇌(이를테면 곤충이나 미생물) 같은 것에도 관심을 가졌다. 그런 것들이 모두 재료가 되거나 힌트가 될 수 있다고 생각했기 때문이다. 다양한 책을 접했으나 특별한 돌파구를 찾지는 못했다. 여전히 시뮬레이션이 그 시기 내 가장 큰 관심사였다. 하지만 이러한 주제에 진지하게 접근하기는 쉽지 않았다.

 

 그런데 돌이켜보면 실제 학계는 내가 노력하는 방향과는 다소 차이게 있게 발전하고 있었다. 내 석사시절이 끝날 시기 즈음에 토론토 대학 Hinton 교수 연구실에서는 신경망을 끈질기게 팠었고, 결국에는 고전적인 back progation방법 외에 학습 방법 몇가지를 추가로 개발하며면서, 실질적으로는 젊은 연구자들(Alex)에 의해 GPU를 이용해 신경망 크기를 늘리는 묘안을 생각한 한 것이다(2012발표). 어떻게 보면 나는 시도해보지 못했을 방법이라고 고백할 수 있다. 복잡계를 통해 어떤 단순한 기능이 있고 그 기능을 반복하면서 창발성이 일어난다는 힌트는 가지고 있었지만, 그것이 엄청나게 큰 신경망을 통해서 학습이 안정될 수 있다고는 잘 상상이 되지 않았고 그러한 것을 상상해야 할지도 모르던 시절이다.

 

 그러나 힌튼 교수팀은, 그때까지도 모호했지만, 그 두가지의 원동력을 발견한 셈이다. 즉 신경망을 키워도 적절한 속도로 학습할 수 있는 방법을 찾았으며, 신경망을 키워도 GPU를 통해서 계산할 수 있는 현실성을 갖추게 된 것이다. 그것이 곧바로 구글의 대규모 데이터와 투자가 만나면서 2010년도 초반의 CNN 랠리가 시작되었다. 사실 나는 그때는 신경망으로 뭔가 문제가 잘 해결된다는 것이 신기했다. 다만 그 신경망을 키우는 문제에 대해서는 여전히 다른사람과 같이 무지했다. 그저 데이터가 엄청많으면 CNN이라는 사람의 시각과 비슷한 방법으로 아주 일부 문제가 해결될 수 있구나 정도를 인지했다.

 

 오히려 그 시기는 구글 딥마인드의 강화학습이 더 매력적이었다. 시뮬레이터에서 시뮬레이션하면서 진화시킬 수 있는 방법을 마침내 찾게 된 것이다. 아타리 게임을 자동으로 하면서, 학습할 수 있는 것들의 학습 체계 구성은 내게 너무나 매력적이었다. 그러나 사실 강화학습은 데이터를 실시간으로 만들어서 대량 학습시킬 수 있는 것과 다르지 않았다. 당시에 깨달아야 했던 것은 신경망이 커져도 학습이 가능하다는 것과, 신경망을 키우면 더 복잡한 문제를 잘 풀 수 있게 구성할 수 있다는 것이어야 했다. 그리고 그것은 일리야 서츠케버가 OpenAI에 재직하면서 2020년 전후에 점점 더 강하게 깨달은 것이기도 했다. 그것은 수백억어치의 컴퓨팅과 엄청난 데이터 등 몇가지를 추가로 필요로 했기 때문에, 쉽게 알아내기는 어려운 방향이었다.

 

 그러나 과학자들은 생각보다 더 빠르게 신경망의 크기를 키워갔고, 이후에는 자연어 corpus라는 label을 하지 않아도 되는 거대한 학습 데이터를 재발견했으며, 이렇게 대량의 학습을 시킨 후에 fine tuning을 통해 사람처럼할 수 있다는 것을 깨달은 것이 바로 2020년대 전후의 이야기다. Google BERT를 시작으로 Transformer구조가 나오면서 사실은 이것이 조금씩 알려지기 시작한 것이다. 그리고 OpenAI의 ChatGPT출시는 2020년 후에 벌어지게 되었다. Google도 BERT크기를 경험하면서 더 키워볼 생각을 아마 했을 것이다. 그러나 OpenAI는 실제로 그것을 실행하고 그리고 발표까지 해버렸다. 

 

 돌이켜보면 이 2020년을 전후한 이 10년 남짓한 시기가 바로 완전하게 대규모 신경망에 대해서 인류가 깨닫게 된 시점이라고 생각한다. 그리고 인터넷에 널려있는 대규모의 언어데이터와 연산량, 그리고 적절하게 학습시킬 수 있는 신경망 학습법과 구조가 현대의 LLM을 탄생시켰다. 즉 digital brain을 실제로 작동시켜서 어느 정도 수준에 올라올 수 있다는 점을 보여주었다.

 

 물론 이 LLM이 사람만큼의 능력을 보여주지는 않는다. LLM은 상당히 복잡한 예외들에서도 단순한 논리들은 일정수준 이상 안정적으로 학습하는게 기존의 여느 모델대비 크게 향상된 점이다. 그리고 개인적으로는 흡사 사람의 뇌와 비슷한 방식으로 작동한다고 믿는다. 여러모로 LLM은 digital brain(사람과 비슷한 구조로 신경망을 가지고 작동된다)을 따르며, 과연 무엇이 다를까 싶을 정도로 인간 뇌와 유사한 능력을 보여준다. 여전히 인공신경망의 뉴런은 사람의 실제 신경세포와 매우 다르다고 하지만, 여러 부분 유사할 것이라는 강력한 믿음을 가지고 있는 것이다.

 

 또한 최근에는 이 digital brain을 연구함으로써 사람의 뇌를 더 이해하게 되고 그에 기반해 뇌를 더 자세히 분석해서 이를 digital brain개선에 이용할 수 있는 것이 아닌가 생각이 들기도 한다. 그리고 이는 Google/OpenAI/Anthropic등의 회사에서 자신이 만든 LLM모델을 가지고 연구하고 있다. 어떻게 단어의 의미가 신경망에 반영되고 그것을 신경망을 어떻게 수정해야 변형시킬 수 있는지 보고 있는 것이다. 다만 아직도 얀 르쿤같은 경우에는 실제 지능의 문턱에 오지 못했다고 생각한다. 그리고 나는 여전히 더 커진 연산량을 바탕으로 지속 진화를 통해 신경망을 개선하는 강화학습 형태의 무엇인가가 등장할 수 있다고 믿는다.

 

 여기서 얻은 또하나의 깨달음은 바로 제프 호킨스의 생애에 대한 점이다. 이 분은 팜파일럿의 창업자로 내가 꿈꾸었던 것과 동일하게 회사를 성공시키고 매각한 후 산타페에 인공지능 연구소를 차려서 연구를 하고 있다! 그리고 본인만의 다양한 방향으로 여러가지 연구를 하고 있다. 하지만 연구는 다양한 집단 지성하에 경쟁해야만 의미를 갖는게 아닌가라는 것을 이 분을 통해서 깨달았다. 인공지능의 연구란 개인이 어떤 돌파구를 마련하겠다고 진행할 수 있는 것이 아니다. 그것은 급격한 새로운 시도와 그것이 이전과 완전히 새로운 문을 열어주는 것들을 반복해야 한다. 엄청난 자금과 공유, 그리고 시도와 집단 지성은 불가능한 일을 해내는 거의 유일한 방법 같아 보인다. 그것이 내 개인적인 깨달음이고, 아마 앞으로도 그렇게 흘러가리라 생각한다.

 

 여하튼 내가 생각했던 것과 전혀 다르게 AI는 발전해버렸지만 아직도 꿈꾸고 있는 셈이다. 이미 인간은 구현되어 우리 눈앞에서 지능을 작동시키고 있고, 단지 우리는 그 세부만을 모를 뿐이다. 언제고 발견되기를 인간이 지구상에서 생각을 시작하는 순간부터 기다리고 있는 셈이다. 곧 그 의미를 파악할 수 있는게 아닌가 여전히 생각한다. digital brain이 2020년에 우리 앞에 나타나고 더 발견되기를 기다리고 있다.

 

반응형
Posted by 작동미학