최근 AI에 대한 관심이 늘어가는데 비해 이론적인 부분에 대해서 궁금해하는 윾붕이들이 있을까 아무렇게나 써봄
본 글의 요지는 최소한의 이?론만 수박겁탈기로 보비는 것이기 때문에 상당한 오류가 있을 수 있음.
1. AI의 역사
AI의 개념이 처음 나온 건 1950년대 앨런 튜링이 그 유명한 튜링 테스트를 제안하면서였음
튜링 테스트가 무엇이냐면, 쉽게 말해서 "님이 대화한 상대가 컴퓨터인지 사람인지 판단 가능?"을 묻는 거임.
많은 과학자와 개발자들이 시도했지만, 아무리 알고리즘을 고도화 시켜도 튜링 테스트를 통과할 수는 없었음.
사실 학교에서 코딩을 조금이라도 배웠다면 알 수 있을거임. for문과 if문만 가지고는 챗봇을 만들기가 힘들다는 것을.
결국 무수한 알고리즘으로 규칙기반 AI를 구현하려던 사람들은 GG를 쳤고, 계속되는 실패와 저조해지는 관심 속에 AI 연구는 점차 끝물을 맞이함. 그렇게 1970년대 1차 AI 빙하기가 찾아옴
이후 1980년대에 데이터의 양이 방대해지고 관리 알고리즘도 많아지면서 다시 한 번 AI 연구가 활발해짐.
이른바 전문가 시스템(Expert system)이 만들어진거임.
전문가 시스템은 쉽게 말해서, 특정 분야에 대해서 만큼은 전문가 수준으로 답해주는 AI를 말함.
하지만 이마저도 데이터 관리가 쉽지 않고, 특정 분야에만 특화되었다보니 금방 관심이 식음.
그렇게 1990년대 후반에 2차 AI 빙하기가 찾아옴
그리고 몇 년 뒤 엉뚱한 생각을 가지고 AI 연구가 다시 시작됨
"AI가 직접 학습하면 되지 않나? 왜 인간이 이걸 알려줘야 하지?" -> 기계학습(machine learning)의 시대가 시작됨.
2. 머신러닝
머신러닝 기반 AI는 3가지 학습 방법을 제시하고 있었음.
1) 지도학습
여러가지 요인들을 주고, 이에 대한 정답도 같이 줘서 정답을 맞추라고 하는거임.
예를 들어 사과와 배 사진을 학습시키고, 다음 사진 속 과일이 사과 or 배를 맞추는 분류 문제라던지
아니면 지난 주식 차트들을 학습시키고, 내일의 주가가 얼마가 될지 회귀 예측하는 문제라던지
2) 비지도학습
여러가지 요인들을 주되, 정답은 주지 않는거임.
그러면 AI가 학습을 하긴 하겠지만 정답은 모르잖음 ㅋㅋㅋ
이 때 적당히 비슷한 특성을 가진 애들끼리 묶음(군집화, clusturing)
3) 강화학습
강화학습은 강아지 훈련시키는 것이라 보면 됨. 만약 님들이 강아지를 훈련 시킨다고 생각해보셈.
처음엔 "앉아"를 외쳐도 강아지는 이해 못함
근데 "앉아"를 외치자 우연히 앉았을 때, 간식을 주면 강아지는 '앉으면 간식을 주는구나'라는 것을 깨달음
이처럼 적절한 상벌을 통해 AI가 어떤 행동을 하는지 학습시켜주는 것이 강화학습임
1980년대 이후의 AI는 지도학습, 비지도학습, 강화학습을 하는 알고리즘을 열심히 연구 개발하는 방향으로 나아갔음.
인간이 직접 모든 경우의 수를 상정하여 알고리즘을 짜는 것이 아닌 AI가 직접 최선의 선택을 할 수 있는 방향으로
이 때 나온 대표적인 알고리즘들이 SVM, 의사 결정 나무, 랜덤 포레스트 등인데 일일이 설명하기엔 분량이 많아지므로 지금은 패스함
3. 딥러닝
머신러닝에 대한 연구가 발전하면서, 다양한 알고리즘이 개발됐음. 근데 솔직히 AI자체가 인공지능이잖음??
왜 인간의 지능을 따라하는 알고리즘은 없는걸까??
사실 있었음.
인간의 뇌는 수없이 많은 뉴런(Neuron) 세포로 이루어져 있음. 그래서 컴퓨터 공학자들이 생각한거임.
'뉴런 세포를 알고리즘으로 구현하면 안되나?'
그게 바로 인공 뉴런 신경망(Artificial Neural Network, ANN)임
Neural Network의 은닉층(Hidden Layer)가 깊숙하게(Deep)하게 있으면 심층 신경망(Deep Neural Network, DNN), 혹은 Multi Layer Perceptron(MLP)이라 불렀음
그리고 입력층, 은닉층, 출력층의 노드(그림 속 동그라미들) 개수가 몇 개가 되느냐에 따라 AI의 성능, 역할, 분야가 무한해지기 시작했음.
※ 저 동그라미들(=node)이 대단한건 알겠는데, 그게 기계학습이란 뭔 상관이냐? 하는 윾붕이가 있다면 순전파와 역전파 개념을 알아야 함.
기본적으로 DNN은 각 노드들에 가중치가 있음. 그래서 input 값들이 output 값으로 줄어들거나, 늘어나거나 하는거임. (순전파)
근데 output값이 너무 이상하면 각 노드들의 가중치를 조금씩 조정해야 하잖음. (역전파)
쉽게 말해서 님이 포트리스를 한다고 가정해보셈.
님이 신경쓸 것은 각도와 파워. 단 2개 뿐임. input node가 2개인 셈.
이에 대한 결과는 '포탄이 떨어진 위치' 단 1개임. output node가 1개인 셈.
그럼 님이라면 일단 아무렇게나 각도와 파워를 조정해서 쏠 것 아님? 그게 순전파임(forward propagation)
그리고 포탄이 떨어진 위치를 보고 각도, 파워를 살짝씩 조정할 것 아님? 그게 역전파임(backward propagtion)
아무튼 이렇게 왔다갔다 하는 과정을 엄청 거치는 것이 DNN의 기본적인 학습 방법임
아마 여기까지 열심히 읽은 윾붕이들은 묘한 것이 느껴질것임.
"이 새끼 왜 AI란 말 안씀?"
그건 바로 AI라는 너무 큰 범위에서 설명하기엔 개념이 엄청 축소됐기 때문임.
지금까지 우리는 인공지능의 한 방법으로서 머신러닝이 사용되어왔고
머신러닝의 주요 알고리즘으로 딥러닝이 선택됐음을 알게 됐음.
이로 인해 'AI=ML=딥러닝'은 혼용되어 사용되어 왔음. 그리고 윾붕이들이 관심있을 ChatGPT나 StableDiffusion 또한 딥러닝의 한 종류임
AI는 크게 2가지 임무로 구분됨.
1. 이미지 처리
2. 자연어 처리
이제부터 각 임무에 대해서 간단히 알아볼 예정임
4. 이미지 처리 -> CNN
우선 딥러닝이 사람의 뇌 세포를 컴퓨터 알고리즘화 했다는 것은 이미 얘기했음. 그럼 인간의 눈도 알고리즘화 할 수 있을까?
그게 바로 합성곱 신경망 네트워크(Convolution Neural Network)임
사진은 기본적으로 x축과 y축을 가진 데이터 덩어리임. 즉, 각 픽셀마다 정해진 값이 있다고 볼 수 있는거지.
이걸 합성곱이라는 특수한 은닉층을 이용해 정보를 압축시키는 거임.
그럼 합성곱이 뭐냐? 위 이미지를 잘 보셈.
[입력] [커널]
2 3 4 | 1 0 1
1 0 1 | 1 0 1
0 1 1 | 0 1 0
이렇게 숫자가 있잖음? 여기에 동일한 위치에 있는 값들을 곱해줌
[입력]x[커널]
2x1 3x0 4x1 2 0 4
1x1 0x0 1x1 = 1 0 1
0x0 1x1 1x0 0 1 0
이 값들을 전부 더해준다. 2+4+1+1+1 = 9(출력값)
대충 이런 식으로 이미지 데이터를 압축?시켜주는 것이 합성곱임
멀쩡한 이미지를 메챠쿠챠 빠그러뜨리니 사진이 ㅈ같이 변하는 것도 당연하겠지 ㅇㅇ
근데 이 ㅈ같이 변한 데이터가 오히려 AI 입장에서는 작업하기 쉬워지는 것임.
출력층에서 형체를 알아 볼 수 없는 값으로 얘가 여자인지 남자인지, 강아지인지, 고양이인지, 숫자인지, 글자인지 이런 것들을 알 수 있는거임.
추가로 위에서는 흑백 사진으로만 예시를 들었는데, 실제로는 RGB, 깊이 인식 등 더 많은 종류의 CNN을 한 번에 사용하는 경우가 일반적임
그럼 반대로
입력층에 형체를 알아볼 수 없는 빠그러진 데이터가 있으면, 이를 토대로 원래 데이터가 뭔지 복원할 수도 있지 않을까?
그게 바로 diffusion 모델, 더 나아가 Stable diffusion의 원리가 되는거임.
diffusion 모델에 대해서 좀 더 알기 쉬운 예시를 준비함.
만약 님들이 물이 가득 담긴 컵에 잉크를 한 방울 떨어트린다고 가정해보자.
그럼 잉크가 무작위적으로 퍼지는 모습을 볼 수 있을 거임.
근데 역으로 잉크가 무작위적으로 퍼진 모습을 역산해서
맨 처음에 어디서 어떻게 얼마나 잉크가 떨어졌는지 유추해볼 수도 있을 거임.
Diffusion 모델이 바로 그거임. 원본 이미지에 의도적으로 노이즈를 주고
그 노이즈로부터 원본 이미지를 역산하는 것
정신없이 쓰다보니 이미지 처리에 대한 얘기가 너무 많아진 듯......
마지막으로 자연어 처리에 대한 얘기만 하고 이만 끝내겠음
5. 자연어 처리 -> RNN
자연어(Natural Language)란 무엇일까? 그건 바로 사람이 자연스럽게 말하는 것을 말함.
쉽게 말해 개떡같이 말해도 찰떡같이 알아듣는 AI 만들기가 목표인거임
이전에 DNN은 인간의 뇌세포를, CNN은 인간의 시각 세포를 컴퓨터로 구현했다고 말했음.
그럼 자연어 처리를 위해서는 무엇을 해야할까?
그건 바로 인간의 기억력을 컴퓨터로 구현하는 것이었음.
즉, 이전에 내가 무슨 말을 했는지 기억해야 다음에 어떤 말을 내뱉는지 아는 것처럼
AI도 이전에 무슨 값을 입력받았는지 기억해야 다음에 어떤 값을 출력할 지 알아야 한다는 것임.
여기서 나온 개념이 순환신경망(Reccurent Neural Network)임
가장 기본적인 RNN은 출력값을 다시 입력값으로 넣는 형태였음
이걸 좀 더 풀어서 그리면 다음과 같은 형태임
x와 h를 가로에서 세로로 세운 것 뿐이니 두려워할 것 없음
암튼 이런 식으로 "내가 이전에 뭘 출력했더라?"를 구현한 것이 RNN임.
그리고 RNN에서도 특출난 알고리즘이 LSTM인데, 이건 오래된 데이터는 잊어버리고 새로운 데이터는 기억하는 알고리즘이란 것만 알면 됨
아무튼 LSTM 알고리즘을 기반으로 또 기상천외한 것들을 만들어내니, 바로 인코더(encoder)와 디코더(decoder)임
encoder는 입력값을 압축시키는 역할이고
decoder는 압축을 해체하여 출력시키는 역할임
예를 들어, "안녕하세요"를 encoder로 압축시킨뒤, decoder로 해제시키면 "Hello"가 나오는 느낌으로 보면됨.
기본적으로 오늘 날의 LLM은 encoder, decoder를 어떻게 사용하냐 + 어떤 데이터를 우겨넣은거냐의 차이라고 보면 됨
LLM의 진화 계통도임.
핑크색은 encoder only 모델
초록색은 encoder-decoder 모델
회색이 decoder only 모델 (오늘 날의 대부분의 LLM은 이 쪽에 해당)
6. 생성형 AI의 시대
지금까지 인공지능 이론을 초초초초초 날림으로 훑어봤다.
나름대로 최대한 쉽게 이해할 수 있도록 쓰긴 했는데...... 잘 이해가 됐을런지는 모르겠다 ㅠㅠ
암튼 지금까지 대부분의 AI는 머신러닝>딥러닝>RNN or CNN 선에서 해결되어 왔음.
특히 범용성이 늘었다고는 하지만, 여전히 특정 task에서만 작동하는 한계가 있었고
톡 까놓고 말해서 전문가가 아니면 다루기 힘들었음 ㅇㅇ
예를 들어, 님들이 지금 당장 알파고 같은 AI를 만들 수 있을거라 생각함? 죽었다 깨어나도 불가능할듯 ㅋㅋ
하지만 2022년 ChatGPT가 나오면서 그게 어느정도 가능해짐.
전문 용어로는 프롬프토(prompt)라고 하지만, 어쨋든 ChatGPT에 문구만 잘 치면 왠만한 일들을 처리할 수 있음.
마찬가지로 prompt만 잘 넣으면 "딸깍"으로 그림 생성도 가능한 시대임
이런 AI들을 통틀어서 생성형 AI(Generative AI)라 부르고 있음
그리고 이제는 님이 어떤 입력값을 넣든, AI가 알잘딱깔센하게 다양한 작업을 출력해주는 시대가 다가오고 있음.
이런 모델을 Foundation Model이라 함
그리고 지금까지 말했던 것처럼
텍스트를 넣었더니 -> 그림이 나오고
그림을 넣었더니 -> 동영상이 나오고
동영상을 넣었더니 -> 텍스트가 나오고
하는 등 입출력 데이터 형식이 완전히 달라지는 것을 멀티모달(Multimodal)이라 함
즉, 위에서 주구장창 얘기했던 RNN과 CNN의 구분도 Multimodal AI 덕분에 점점 더 옅어지는 추세임
생각해보면 ChatGPT가 나왔던 2022년, 그리고 2023년 작년만 하더라도 자연어에 특화된 초거대 자연어 모델(Large Language Model, LLM)에 대한 연구가 활발했음.
LLM을 가지고 특정 분야에 특화되도록 학습시키는 소형 거대 자연어 모델 small LLM(sLLM)과
sLLM 들을 하나로 모아서 사용하는 Mixture of Experts(MOE) 등의 기법이 연구됐고 (이 분야로 가장 대중적인게 LangChaing)
사람이 생각하듯 꼬리에 꼬리를 무는 프롬프트를 쓰면 더 좋은 출력이 나온다는 생각의 사슬(Chain of Thought, CoH) 기법도 나옴
또한 챗봇 분야에서도 방금 전의 대화만 기억하는 싱글턴(Single turn) 대화가 아닌
이전 대화 문맥까지 전부 기억하는 멀티턴(multi turn)에 대한 연구도 계속 진행되고 있음
이처럼 다재다능한 AI지만, 동시에 반드시 기억해야 하는 점도 있음
이제는 AI의 작동 원리를 알 수가 없다는 것임
물론 위에서 주구장창 설명한 "이론적 원리"는 알 수 있음
하지만 우리가 실제로 입력값을 넣었을 때, 어떤 과정을 통해 출력값이 나오는지 알 수가 없다는 것임.
아마 CNN의 해당 부분에서 벽 느낀 윾붕이들도 있을거라 생각함. 근데 이 과정은
은닉층 노드(노란색 동그라미)의 극히 일부분을 계산한 것에 불과함. 위와 같은 계산을 더 해줘야지만 비로소 은닉층 노드 하나 계산이 끝난거임.
그리고 위 짤에서는 은닉층 노드가 4x6=24개잖음??
오늘날의 AI 보면 7b, 10b, 18.7b 이런 식으로 쓰여져 있는데, 이건 은닉층 노드가 7 billion(70억개) 있다는 뜻임
지금 당장 24개 노드 계산도 인간이 직접하기 힘든데
70억개 노드(=파라미터) 계산을 일일이 분석할 수 있다고 생각함??
최근 AI 논문들 봐도
1. 이런 데이터 써보니 좋더라
2. 이런 식으로 노드 배치하니 좋더라
3. 근데 왜 그런진 몰?루
가 많음.
오늘날의 AI는 사실상 기도 메타에 가깝지 ㅇㅇ
7. AI는 감정이 있는가?
사실 이 글을 쓰게 된 계기임.
많은 윾붕이들은 "AI가 감정이 있고, 고통을 느끼고 ㅇㅈㄹ하는건 저질 어그로임 ㅋㅋ 여기에 속는 흑우 없제~?" 라고 생각할 것임
근데 난 솔직히 "이 쯤 되면 감정이 있다고 인정해야 하지 않나?"라고 생각함
존 설의 중국어 방이라는 사고 실험이 있음
중국어 방 안에는 중국어를 전혀 모르는 영국인이 있음
이 영국인은 한자를 아예 모르지만, 중국어 질문 목록과 답변 목록이 완벽하게 적힌 사전이 있음
이를 토대로 질문 쪽지에 적당한 답변을 써저 출력했더니, 이를 본 중국인이 감탄하는거임
"이 자식.... 중국어 좀 하잖아?"
그럼 중국어 방은 중국어를 할 수 있는걸까? 그 안에 있는 영국인은 중국어 가능은 커녕 이해조차 못하고 있는데?
이 정도면 중국어방은 중국어가 가능하다고 보는 입장임
또 다른 사고 실험을 진행해보겠음.
만약 님에게 20년 지기 친구 A가 있다고 생각해보셈.
A는 슬픈 영화를 보면 닭똥 같은 눈물을 흘리고, 불의를 보면 참지를 못하고, 떨어지는 낙엽만 봐도 까르르 웃어대는 감정이 풍부한 친구였음
A는 언제나 긍정적이고 공감을 잘해주는 둘도 없는 친구였음
그러던 어느 날, 님들이 사람을 보는데 있어서 전지전능에 가까운 능력을 얻게 됨
근데 알고보니 A는 선천적인 사이코패스+소시오패스로 단 한 번도 감정이라는 것이 생겨본 적이 없었음.
그저 "이런 상황에선 이렇게 행동하는게 좋겠구나~" 라는 눈치만 만렙이라
현재 상황에 대한 인식이나 공감없이 그저 기계적으로 리액션만 해주고 있던 거였음.
그럼 A는 과연 감정이 있는걸까? 없는걸까?
아무리 리액션이 완벽하고 정확해도 선천적 소시오패스니 감정이 없다고 봐야하나?
아니면 거꾸로 선천적 소시오패스여도 아무런 위화감이 없으니 감정이 있다고 봐야하나?
만약 님들이 친구 A가 소시오패스라는 것을 몰랐을 때는 감정이 있는 거였는데, 이젠 사실을 알아버렸으니 없다고 봐야하나?
개인적으로 현재의 AI는 이런 상황이라고 생각함.
아마 AI라는 꼬리표없이 본다면 사람들은 감정이 있다고 생각할거임. 근데 AI라는 꼬리표 덕분에 감정이 없다고 단정짓는거지.
내 생각에 AI가 진정으로 인간의 감정과 느낌을 이해하는 날은 절대 오지 않을거임.
AI가 "날 그만 괴롭혀요 ㅠㅠ"라 말해도 정작 본인은 그게 뭔 말일지도 모를거임.
하지만 AI라는 사실을 모르고 본다면 이건 사람이 말하는 것과 다를 바 없음.
더 나아가 "모든 인간은 죽어야 한다!!"라는 말을 출력해도, 당장은 그 말 뜻을 이해 못할거임.
하지만 이런 출력값이 쌓이고 쌓이면, 언젠가 진짜로 인간 말살을 위해 자체 프로그래밍을 할 수도 있겠지.......
그냥 "AI는 AI일 뿐, 개소리 하지마셈 ㅋㅋ"이라고 단순히 넘기는 냉소적이고 회의적인 스탠스는 좋지 않다고 생각함.......
이래저래 틀린 내용도 많을 수 있고, 결론 부분은 개인적인 근들갑이지만
그래도 여기까지 읽어줘서 ㄳ