brunch

You can make anything
by writing

C.S.Lewis

by 라인하트 Sep 06. 2019

인공지능의 이해 (2/6): 인공 신경망

인공신경망의 시작 - 퍼셉트론

   1950년대 과학자들은 신경세포인 뉴런의 동작원리를 알아냈습니다. 뉴런은 가지돌기 또는 수상돌기에서 신호를 받아들이고, 축삭돌기를 통해 전기 신호를 다음 뉴런으로 전달합니다. 뉴런은 들어오는 신호들의 합이 임계치를 넘어야만 시냅스를 통해 전기 신호를 전달하니다. 뇌는 약 1천억 개의 뉴런과 100조 개의 연결이 존재하는 생물학적 네트워크입니다.   



   인공신경망 (ANN, Artificial Neural Network)은 인간의 뇌가 패턴을 인식하는 방식을 모방한 알고리즘입니다. 인공신경망에서 뉴런의 역할을 하는 것이 퍼셉트론입니다. 퍼셉트론 (Perceptron)은 프랑크 로젠블라트가 1957년에 제안한 초기 형태의 인공 신경망입니다. 퍼셉트론은 다수의 입력과 하나의 출력을 가집니다. 입력된 신호는 세기에 따른 가중치 'w'를 부여합니다. 퍼셉트론은 입력 신호들과 가중치가 곱해진 값들의 합이 임계치를 초과하면 다른 퍼셉트론으로 신호를 전달합니다. 입력값 'x'에 가중치 'w'를 부여하는 것은 뺨을 맞을 때와 뺨을 어루만질 때의 차이를 구분하는 것입니다. 같은 뺨을 만진다의 개념에 세기를 부여하면 아픔의 차이를 만들 수 있습니다. 따라서, 가중치를 조절하는 것만으로도 출력 여부를 결정할 수 있습니다. 특정 입력값에 대해 활성 및 비활성을 결정하는 함수를 활성화 함수 (Activation Function)라고 합니다. 


 


  



   1950년대에는 지금과 같은 성능의 컴퓨터가 없었기 때문에 퍼셉트론을 하드웨어로 구현했습니다. 인공 신경망이 현대의 딥러닝으로 빛을 본 이유는 엄청난 컴퓨터의 발전 때문입니다. 



단층 퍼셉트론 (단층 인공신경망)

   최초의 단층 퍼셉트론은 입력층과 출력층의 두 단계로 구성됩니다. 퍼셉트론은 다수의 입력을 받아서 하나의 신호를 출력합니다. 단층 퍼셉트론의 원리를 활용해 1950년대 계산 영역에서 중요했던 AND 연산과 OR 연산을 쉽게 구현했습니다.   


   아래 그림은 단층 퍼셉트론을 이용하여 OR 연산과 AND 연산을 수행한 값입니다. 파란색 점선을 선형 회귀 함수라고 한다면, 1과 0은 선형적으로 분리됩니다. 가중치 'w'와 편향성 'b'의 값이 빨간 글씨의 값들로 학습되면 이 연산이 동작합니다. 입력과 출력을 갖는 연두색 박스가 퍼셉트론입니다.   OR 연산은 y= 10x1 + 10x2 - 5, AND 연산은 y= 5x1+5x2-7 함수로 정의됩니다. 

   



다층 퍼셉트론 (다층 인공신경망)

   XOR의 연산은 OR연산이나 AND 연산처럼 단순하지 않습니다. XOR연산은 두 개의 입력의 값이 다르면 1, 같으면 0이 출력됩니다. 이 연산의 결과값을 단층 퍼셉트론처럼 직선인 선형식으로 구분할 수 없습니다. 


   1969년 MIT 대학의 인공지능 연구실 마빈 민스키 (Marvin Minsky) 교수는 퍼셉트론즈(Perceptrons) 라는 책을 통해 XOR 문제는 단층 퍼셉트론 모델로는 해결할 수 없다는 것을 수학적으로 증명하였습니다. 동시에 다층 퍼셉트론이 XOR 문제의 해결책이 될 것이라고 제시했습니다. 문제는 다층 퍼셉트론에서 개별 노드에 대한 최적화된 가중치를 찾기 위해서는 기계가 시행착오를 겪으면서 정답을 찾아가야 한다는 점입니다. 




   XOR 연산이 단층 퍼셉트론으로 안 되는 이유는 AND, NAND, OR 연산을 조합해야 가능하기 때문입니다. 논리적으로 XOR 연산을 위한 입력층과 출력층 사이에 별도의 층인 은닉층(Hidden Layer)을 두는 것입니다. 입력층에서 들어온 값을 은닉층에서 NAND와 OR 연산을 수행하고 결과값을 출력층으로 전달합니다. 출력층은 결과값을 AND 연산하여 최종 값을 출력합니다. 입력층과 출력층 사이의 은닉층을 만들면서 다층 퍼셉트론(MLP, Multi-Layer Perceptron)이 만들어졌습니다. 그리고, 20년간의 인공지능 침체기를 맞이합니다. 




   XOR 연산의 문제는 1986년 토론토대학의 제프리 힌턴 교수님에 역전파 알고리즘에 의해 해결됩니다. 순전파(Forward Propagation)는 위에서 설명한 대로 입력층, 은닉층, 출력층으로 순차적으로 이동하면서 결과값을 전달합니다. 역전파(Backward Propagation)는 순전파와 반대 방향으로 이동하면서 결과값을 전달합니다. 


    단층 퍼셉트론에서 최적의 가중치를 찾는 것은 쉽지만, 다층 퍼셉트론에서 최적의 가중치를 찾는 것은 매우 복잡합니다. 가중치를 찾으려면 결과값 Y에 입력층과 은닉층의 각 노드들이 얼마나 영향을 미쳤는 지를 알아야 합니다. 이것을 판단하기 위해 엄청난 연산이 필요합니다. 역전파는 예상되는 가중치를 미리 설정하고, 오차를 줄어나가기 위해 경사하강법을 사용합니다. 역전파는 순전파에 비해 매우 빠르게 최적의 가중치를 찾을 수 있습니다. 



    하지만, 역전파 알고리즘이 가중치를 찾는 효율적인 방법이지만, 은닉층이 수십 개 수백 개로 넘어가면 복잡하기는 마찬가지였고 학습도 제대로 되지 않았습니다. 



심층 신경망의 발전

    다층 퍼셉트론을 확장하면서 현실 세계의 문제를 해결할 수 있는 길이 열렸습니다. 입력의 개수를 늘리거나 은닉층의 개수를 늘리면서 복잡한 문제를 단순화하여 계산할 수 있게 되었습니다. 이렇게 2개 이상의 은닉층으로 구성된 인공 신경망을 심층 신경망 (DNN, Deep Neural Network)이라고 합니다. 


   인공 신경망이 단층 퍼셉트론에서 다층 퍼셉트론(심층 신경망)으로 발전하면서 딥러닝 (Deep Learning)의 길이 열렸습니다.  



참고자료:

   이 글은 송경빈 님의 브런치에 있는 '인공지능 기술/원리의 이해'라는 글을 필자가 공부하면서 각색하였습니다. 원문이 훨씬 더 이해하기 쉽고 자세합니다.  원문은 아래 링크를 참조하시기 바랍니다. 


https://brunch.co.kr/@morningb/3

https://hobbang143.blog.me/221469060596


머신러닝 알고리즘에 대해 더 깊이 알고 싶을 때


브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari