퍼셉트론과 딥러닝
딥러닝이라는 말은 많이 들어봤는데 대체 딥러닝, 머신러닝을 나누는 기준은 어떤 것일까? 우선 딥러닝에 대해 정의하기 전에 퍼셉트론(Perceptron)에 대해 알아보자.
퍼셉트론(Perceptron)이란?
인공 신경망 모형의 하나인 퍼셉트론은 1957년에 Rosenblatt라는 사람에 의해서 처음 고안된 알고리즘이다. 일반적으로 인공 신경망 시스템은 동물의 신경계를 본따 만들었기 때문에 개념적으로나 그 형태로나 비슷한 부분이 많다. 용어적으로 Perceptron은 퍼셉션과 뉴런, 두 단어의 조합이라고 한다.
•
Perception : 무엇을 인지하는 능력
•
Neuron : 입력 정보를 의미있는 정보로 바꿔주는 신경 세포
단어들의 조합으로 보면 퍼셉트론은 인지한 정보를 활용해 뉴런처럼 작동하는 인공 세포라고 볼 수 있다. 개념 자체는 아주 간단한 원리이다. 퍼셉트론은 다수의 입력을 받아서 하나의 신호를 출력한다. 이때 각 입력과 상호작용하는 각각의 weight 들이 출력을 결정하게 된다.
여기서 weight들을 정하고 조정하는 작업을 기계가 한다고 볼 수 있다. 수많은 입력 데이터와 결과값을 활용해 훈련을 시키고 원하는 수준의 weight를 찾아내는 것이다. 여기서 x는 입력(input), W는 가중치(weight), y는 신경세포(neuron)라고 하겠다.
단층 퍼셉트론(Single-Layer Perceptron)
처음에는 임의로 설정된 weight로 시작한다. 학습 데이터를 입력하여 기대값이 나오지 않은 경우, weight를 개선해 나간다. 이러한 과정을 학습이라고 한다.
퍼셉트론은 입력값이 weight와 곱해져서 뉴런에 전송되고, 뉴런에서는 모든 입력값의 전체 합이 임계치(threshold)를 넘는지 판단한다. 이때 임계치를 넘으면 1을, 그렇지 않으면 0을 출력한다. 이러한 함수를 계단함수라고 부른다.
퍼셉트론은 모든 학습 데이터를 정확히 분류시킬 때까지 학습이 진행되기 때문에 데이터가 선형적으로 분리될 수 있을 때 적합하다. 아래 그림을 보자. 학습이 반복될수록 weight가 조정되는 것을 볼 수 있다. 이렇게 간단한 모델에서는 적합한 결과를 낼 수 있다.
퍼셉트론을 활용해 AND, OR, NAND 게이트도 간단하게 구현할 수 있다. 하지만 XOR 게이트를 살펴보자. XOR 게이트의 경우 하나의 선형 분류로는 판단이 불가능하다. 이 때, 다층퍼셉트론(Multi Layer Perceptron)을 활용할 수 있다.
가중치와 편향
다층 퍼셉트론을 보기 전 편향에 대해 짚고 넘어가자. 위 수식에서 나오는 를 b로 치환해 좌변으로 넘기면 0에 대한 부등식을 만들어 낼 수 있다.
이때 b는 편향(bias)라고 부른다. 기계학습에서는 과적합(overfitting)을 방지하는 것이 중요하다. 어떤 데이터를 넣더라도 일반적으로 잘 작동하는 기계를 만드는 것이 중요한 것이다.
과적합(overfitting)
학습시킨 데이터에 대해서는 엄청난 정확도를 자랑하지만, 일반적인 데이터를 넣었을 때에는 성능을 발휘하지 못하는 상태를 말한다.
이 때 편향은 학습 데이터의 허용범위를 지정해 주는 역할을 한다. 편향이 높을 수록 분류의 기준이 엄격해지고, 편향이 낮을 수록 데이터의 허용범위가 넓어진다. 그래서 편향값을 정하는 것도 기계학습에서 중요한 부분이라고 할 수 있다.
다층 퍼셉트론(Multi-Layer Perceptron)
위에서 보았듯이 퍼셉트론은 XOR 게이트와 같은 비선형 분류는 불가능 하다는 것을 보았다. 이러한 한계를 다층 퍼셉트론을 활용해서 극복할 수 있다. 논리회로 수업시간에 배웠듯이 XOR게이트는 AND, NAND, OR게이트를 활용해 만들 수 있다.
단층 퍼셉트론으로 AND, OR게이트를 만들 수 있으니 이것을 응용해서 아래처럼 구조를 만들어 낼 수 있다. 이렇게 층을 쌓아나가면서 선형 분류로 풀 수 없었던 문제들을 비선형 적으로 풀 수 있다.
이때 입력층과 출력층 사이에 있는 층들을 은닉층(Hidden-Layer)라고 부르며 은닉층의 수는 몇개가 되던 상관없다. 아래 사진처럼 3개의 은닉층을 가질 수도 있고 수십, 수백개의 은닉층을 가질 수도 있다.
딥러닝
위와 같이 은닉층이 2개 이상인 신경망을 심층 신경망(Deep Neural Network, DNN)
이라고 한다. 심층 신경망은 다층 퍼셉트론만 포함되는 것은 아니고, 은닉층이 2개 이상인 신경망을 심층 신경망이라고 한다.
학습 단계에서, 학습시키는 신경망이 심층 신경망일 경우, 딥 러닝(Deep Learning)이라고 한다.
머신러닝
머신러닝은 알고리즘을 사용해 컴퓨터가 데이터로 학습을 하고 결과를 출력하는 것이라고 정의한다. 머신러닝은 딥러닝보다 확연하게 큰 범위임을 알 수 있다.