재료공학자가 갑자기 AI라는 주제로 설명하는 것이 어불성설이긴 하지만,


20년 이상 지난 것이긴 하지만, AI에 대해서 비스무리 독학하고 석사학위때도 일부 적용해서 간단한 내용은 정리할 수 있을 듯 하여


GNR에 어울릴 것 같아서, 이론적인 내용을 간단히 적어 볼려구. 컴공이나 AI하시는 분들이 더 잘 알겠지만


짧을 지식으로 간단히 설명할 수 있으면 좋은데, 그것은 어려울 것 같고. 일부 틀린 부분도 있을 수 있는데. 


"이것 잘못된 것 아니가?" 하는 질문이 오면, 나의 대답은 뭐? 어쩌라고 ^^



석사학위때 AI를 사용하게 된 계기가, 재료공학적으로 새로운 합금을 만들어 내야했구 이를 해결하기 위해서


Try&Error 방식으로 하면 너무 많은 실험을 해야해서 합금성분 중 3개의 성분을 특정 간격으로 일부만 실험을


통해서 평가하고, 그 데이터로 최적성분계를 찾아서 계산한 결과와 실제 데이터를 비교하는 형태로 적용해 볼려구


AI 공부했던 거구. C언어로 일일이 코딩하면서 프로그램을 만들었던 기억이 있어서.



20년이 훌쩍 넘긴 시기라 AI라는 단어도 생소했구, 상용화도 거의 없던 시기고(참고로 알파고라고 나온시기가 2016년) AI의 암흑기려나?


알파고가 2016년 바둑으로 세기의 대결이 펼쳐졌었고, 그때 알파고 하드웨어는 3자리 수의 CPU, GPU를 썼던


시기고, 소프트웨어적으로 딥마인드(2010년 설립)라는 업체를 설립하고 얼마 지나지 않는 시기니, 20년 이전에는 실제 AI


라고 불르기도 처참했던 시기지.


그런데, 기본적인 AI라는 것은 그렇게 어렵지 않아서 간단히 설명할 수 있을 것 같다.



1. 왜? AI(인공지능, artificial intelligence)인가?  WIKI등에 잘 나옴


AI에 대한 연구는 아주 오래전부터 진행되었는데(1940년대 이후), 기본적인 형태가 인간의 두뇌를 


모사하면서 시작되었음(1960~70년대).


즉, 인간의 두뇌를 모사해서 만들었기 때문에 AI라 부름



2. 인간 두뇌는 어떻게 작동하는 가?


인간의 두뇌는 뉴런이라는 것이 존재하는데, 상황인지. 기억 등 역활을 하고 이를 신경세포(뉴런, Neuron)


라 하고, 형태를 보면 아래와 같아.



0c94ef77abd828a14e81d2b628f1706c70c72a



뉴런의 작동은 수상돌기를 통해 들어온 자극에 의해서 내부적으로 어떠한 작용하고 축삭말단을 통해서


다음 뉴런으로 전달하는 역활을 하게 되는데, 인간의 두뇌에는 100억개 이상의 뉴런이 존재하지


이를 본따서(모사해서) 만든 것이 퍼셉트론(Perceptron)이고, 미국 코넬대에서 만들어 수학적 계산이라는


영역으로 갖고 오게 되지, 아래 그림을 보면 얼마나 유사한지 알 수 있음.



0c94ef74abd828a14e81d2b628f1716d91ad19




3. AI의 기본?


AI의 한종류인 퍼셉트론의 경우 위에서 말한 퍼셉트론으로 입력되는 데이터(x0~xn)에 대해서


어떠한 가중치(w0~wn)를 곱하고, 활성함수(Linear, Sigmoid, ReLU 등)를 넣어서 계산하고 결과를 도출하는 


거지, 그런데, 이러한 계산에는 한계를 갖게 되고 일반적으로 실데이터의 검증에는 AND, OR, XOR, NOT 등의


논리가 계산되어야 하거든, 여기에서 XOR 문제를 풀 수 없는거야. 그래서, AI의 암흑기(?)가 나오게 됨.


즉, 인지를 하거나 문제를 파악할 때에는 이러한 논리 연산이 가능해야 하는데 절름발인 거지. 왜? 계산이 안되니.


1980년대에 XOR문제를 풀 수 있는 이론이 나오게 되는데, 즉, 전체 두뇌를 모사하는 방법을 고안하고 실제 적용을


하게 되는데, 이것이 인공신경망(Neural Network, ANN이라고도 함)이야. 이후 뭐.. 딥러닝이니,  DNN, CNN, RNN 등이 나오게 됨.


그런데. 이들의 기본은 결국 인공신경망(Neural Network)야. 즉, 위에서 말한 퍼셉트론을 여러 개 묶어서 


여러 층을 만든 것을(퍼셉트론의 계산치를 다시 퍼셉트론의 입력단으로 넣는 것..) MLP(Multi-Layer Perceptron)


라고 부르고 이를 인공신경망이라 부르는데, 왜? 어렵게 이름을 붙이는지를 모르겠네.


구글 알파고의 경우 이러한 층(Layer)을 무식하게 많이 만들어서 딥(Deep)러닝 이란 이름을 붙여서 


나온거구.. 20년 전에는 컴퓨팅 파워의 한계로 실제 은익층(Hidden Layer)의 개수에는 한계를 갖고 있어서.....^^;


요즘이야 CPU, GPU등 컴퓨팅 파워가 기아급수적으로 늘어나서 쉽게 쉽게 계산할 수 있어서 AI가 뜬 것이 아닌가 생각한다.


참고로 아래 그림은 입력이 3개에 출력이 4개로 되고 은익층이 2층인 MLP인 인공지능망이라고 생각하면 됨.


0c94ef75abd828a14e81d2b628f1756d1e73ab75




4. AI의 계산은?


AI의 계산은 어렵지 않아. 단지 복잡할 뿐 ^^


우선, 아래 그림을 통해서 설명할께, 은익층이 많아지면 계산량이 더 많아질 뿐 다른 점이 없기 때문에



0c94ef72abd828a14e81d2b628f1736eec0ceb

 4.1 입력(Input layer) : 개수 4

  

    4개의 데이터가 입력됨 물론 그림, 문장, 합금성분, 제조법 등의 다양한 데이터가 입력되는 것으로 


    간단히 생각하면 X라는 항이 보면 됨.


 4.2 가중치(Weight) : 개수 [4,5]의 메트릭스형으로 표시되고 총 4x5 = 20개

   

    은익층(Hidden Layer)에 입력데이터(X)에 가중치W를 보통은 곱해서 은익층에 전달 하는


    것으로 끝나. 물론, 여기에 Bias라고 추가적인 데이터를 추가하기도 함


 4.3 계산함수(Function, f) 


    은익층에서 입력될때 Linear함수를 쓰게 되면 ∑X*W + Bias 형태로 계산되,


    일부 특수한 경우는 Sigmoid, Hyperbolic Tangent 등을 쓰기도 하지만 계산 시간이 길어지고


    특수한 경우를 제외하고는 잘 쓰지 않지. 그럼 왜? Linear, Sigmoid, H-Tan 등의 함수를


    쓰는지는 아래 쪽에 설명해 줄께


  4.4 출력(Out layer) : 개수 3


    앞에서 계산된 결과를 출력하는 것이거든. 즉, 각 층에서 연속된 계산된 결과들을 최종 출력하는 것임.



5. AI의 학습?


앞에서 계산법은 간단함, 그런데, 처음 계산한다고 계산 결과와 실제 결과가 맞지 않쟎아?


그래서, AI의 경우 학습이라는 과정을 거치게 되는데, 그것은 계산 결과와 실제 결과 간의 


차이(오차, Error)를 계산하고 이러한 Error가 줄어들게 만드는 것을 학습이라는 이야기 하지.


즉, 오차가 줄어들 수 있는 방향으로 가중치(W)를 변경 시켜주는 작업이 학습이라는 거지.


여기에서 왜? 함수로 Linear, Sigmoid, H-Tan 등의 함수를 쓰는 지를 알게 되는데.


이러한 함수는 미분이 되어야 해. 그래서, 위 함수를 쓰는거구 계산은 복잡하지만


계산은 사람이 하는 것이 아니니 ^^ Pass


즉, 계산데이터와 실제데이터 간의 Error를 줄이는 방향으로 가중치(W)를 변화시키는 것이


학습이다. 가중치를 변경하는 작업은 뒤쪽에서 앞쪽으로 거꾸로 계산을 하게 되고, 방법은


여러가지만 있지만 경사강하법 등 다양한 방법이 있음. 궁금하면 직접 찾아봐. ^^



결론 : 결국 AI는 아래와 같이 한문장으로 만들 수 있음.


AI는 가중치(W)의 집합이다.(단, 학습할때 몇개의 입력.은익.출력을 가는 지는 고정)




추후에, 새로운 입력이 존재할 때 가중치만 알고 있으면 쉽게 결과를 도출하게 만드는 것이


AI이다. 이 정도를 이해 하면 될 듯.


물론, 컴공이나 AI하시는 분들의 기법, 이론 및 수학적 증명 이해하기 어렵지만 간단히  


이 정도만 되어야 AI는 뭐야라고 말 할 수 있지 않을까 생각한다.



오랜만에 휴가라 시간이 남아서 써봄