※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다.
이번 포스팅에서는 인공신경망, 딥러닝의 근간이 되는 퍼셉트론의 개념에 대해 알아보고 퍼셉트론의 종류에는 무엇이 있는지에 대해 공부하려 한다. 목차는 다음과 같다.
1. 퍼셉트론(Perceptron)이란?
2. 퍼셉트론의 종류
3. 퍼셉트론의 학습 알고리즘
4. 퍼셉트론 정리
1. 퍼셉트론(Perceptron)이란?
우선 퍼셉트론은 인간의 뉴런으로부터 착안하여 생겨난 개념이다.
그렇다면 이러한 뉴런이라는 개념을 우리 실생활 문제를 해결하기 위해 어떻게 적용할 수 있을까? 밑의 그림을 보면서 퍼셉트론을 이해해보자.
간단하게 구성요소로 말하자면 '입력값 - 순입력함수 - 활성함수 - 예측값' 이러한 형태로 구성되어 있다. 입력값과 예측값은 이름 그대로의 의미를 받아들이면 이해가 쉽지만 순입력함수와 활성함수에 대해서는 이해가 가지 않을 수 있다. 같이 개념을 살펴보자.
-
순입력함수 : 입력으로 들어간 n개의 입력값 feature들이 n+1개의 Weight(가중치)값들과 어떻게 통합해서 합칠것인지 결정하는 것이다. 즉, 어떤 연산을 취할지 정해주는 부분이라고 보면 되겠다.
-
활성함수(Activation Function) : 순입력함수가 집계한 결과물로부터 결과값을 생성해주는 임의의 함수이다. 즉, 활성함수에서도 특정한 연산을 취해서 결과값을 도출해내는 것인데 이 때 임계값(threshold)과 비교를 통해서 예측값을 출력한다.
활성함수는 추후에 소개할 인공신경망(ANN)에 대해서도 수시로 등장하기 때문에 개념을 확실히 잡고 넘어가자.
2. 퍼셉트론의 종류
위에서 본 그림은 구체적으로 분류하자면 '단층' 퍼셉트론에 해당한다. '단층'이 있다는 것은 '다층'도 있음을 예측할 수 있을 것이다. 그러므로 퍼셉트론의 종류에는 '단층 퍼셉트론'과 '다층 퍼셉트론'이 존재한다. 다음 그림을 보면서 각각 종류에 대해 이해해보자.
우선 단층퍼셉트론은 '입력층 - 중간층 - 출력층' 으로 구성되어 있다. 출력층에 도달하는 과정이 1. 퍼셉트론이란? 목차에서 배웠던 것과 동일하다.
#용어) Forward Passing : 입력값들이 하나의 값으로 통합(집계)되어서 출력값을 생성하는 과정을 의미한다. 단층 뿐만 아니라 다층 퍼셉트론에서도 용어가 사용 가능하다.
다음은 다층 퍼셉트론이다. 다층 퍼셉트론만의 차이점이라고 한다면 중간층이 여러개의 노드(퍼셉트론)로 구성되어 있는 것을 볼 수 있다. 이는 우리가 'Hidden layer' 이른바 은닉층이라고 부르기도 한다. 그런데 왜 '은닉' 일까? 왜냐하면 퍼셉트론은 기본적으로 답을 이미 알려주는'Supervised learning(지도학습)' 방법 중 하나이다. 따라서 입력층과 출력층은 우리가 직접 볼 수 있지만 은닉층안에서 어떻게 계산되어지는지는 안을 들여다볼 수 없기 때문이다. 이러한 이유로 다층 퍼셉트론이 'Black box model'이라고 부르기도 한다.(참고로 내부를 다 들여볼 수 있는 Decision Tree는 'White box model' 이라고 부른다.) 이러한 다층퍼셉트론은 우리가 흔히 알고 있는 ANN(인공신경망), 그리고 은닉층의 개수가 여러개로 지어진다면 딥러닝(DNN)이라고 부르게 된다.
3. 퍼셉트론의 학습알고리즘
다음은 퍼셉트론의 학습알고리즘이다. 퍼셉트론이 학습할 때 주어진 데이터를 학습하고 에러가 발생한 데이터에 기반하여 Weight(가중치)값을 기존에서 새로운 W값으로 업데이트 시켜주면서 학습을 하게 된다. 다음 예시그림을 보면서 이해해보자.
위와 같이 선형의 합이 2x-y+3=0 이 주어졌고 Weight값은 주어진 선형합으로부터 W=[2,-1,3]임을 알 수 있다. 이 때 bias term은 1로 가정을 한다. 잘못 예측한(에러가 발생한) 데이터의 값이 d=[0,2]이며 이를 bias term을 적용시켜 d=[0,2,1]가 됨을 알 수 있다. 이제 W값을 업데이트를 해야하는데, 그림의 예시에서 원래 d의 label이 -1인데 주어진 선형(2x-y+3=0)이 1로 잘못 분류했다. 그러므로 기존의 W값에서 d값을 빼주어 새로운 W값을 도출해낸다.(만약 1인데 -1로 잘못 분류했다면 W값에서 d값을 더해주어 업데이트 시켜준다.) 업데이트된 W값에 따른 선형합은 3y=2x+2가 된다. W값을 업데이트함으로써 밑의 그림처럼 잘못분류한 데이터를 이제는 잘 분류했음을 확인할 수 있다.
하지만 위에서 적용했던 알고리즘에 맹점이 있다. 바로 데이터의 '오차 정도'를 고려하지 않은 것이다. 따라서 이를 해결하기 위해 학습률(learning rate)과 오차정도를 고려하도록 하자. 다시 밑의 설명을 보고 개선식을 이해해보자.
주목해야 할 포인트는 학습률을 설정한 것과 출력값을 생성하기 위한 임계값(threshold)을 설정한 것이다. 따라서 이를 고려한 후의 W값을 업데이트하는 방법은 다음과 같다.
" (new) W += 학습률 * error데이터(d) * (threshold - 출력값)"
# 'W +=' 는 Python 문법으로 간단하게 말해서, W를 +하면서 업데이트하는 의미이다.
여기서 'threshold - 출력값' 이 바로 '오차정도'를 고려한 것이 되겠다.
4. 퍼셉트론 정리
이제 마무리로 그동안 살펴본 퍼셉트론에 대해 간단하게 정리해보고 넘어가자.
-
Generative : 퍼셉트론의 구조를 봤듯이 왼쪽에서 오른쪽으로 진행되면서 결과값이 생성되는 특징을 갖고 있다.
-
Intra-layer Independence : 퍼셉트론의 그림을 잘보면 다른 layer들끼리는 완전히 모두 연결(full-connected)되어 있지만 같은 layer안의 노드들끼리는 서로 독립적이다.
-
Not explainable : 은닉층(Hidden layer)에서 계산되는 방법이나 연산을 볼 수가 없어 설명이 불가능하다. 어떻게 보면 퍼셉트론의 가장 취약점이라고 볼 수 있을 것 같다.
마지막으로 정영섭교수님이 내주신 W값 업데이트 연습문제 풀이를 보면서 최종 마무리 해보자. 문제풀이는 필자가 직접 풀었고 완전히 적합한 선형식을 구하는 것보다 W값을 업데이트하는 과정에 집중해서 풀이하였다. 풀이방법에 대한 지적은 언제나 환영이다.
이렇게 해서 간단하게 퍼셉트론에 대해 알아보았다. 퍼셉트론은 향후의 ANN, 딥러닝을 학습하기 위한 기초적인 개념이므로 쉽게 느껴지더라도 철저히 학습하고 넘어가야할 것 같다. 뭐든지 기초가 튼튼해야 무너지지 않으니까 말이다.
'Data Science > Machine Learning' 카테고리의 다른 글
[ML] Class imbalance(클래스 불균형)이란? (2) | 2020.05.13 |
---|---|
[ML] ANN(Artificial Neural Network) 인공신경망 (0) | 2020.05.12 |
[ML] 데이터 학습방법으로서 MLE, MAP (0) | 2020.04.29 |
[ML] PCA(주성분분석), SVD, LDA by Fisher (0) | 2020.04.25 |
[ML] Linear Regression(선형회귀)& Logistic Regression (0) | 2020.04.24 |