-
뉴럴네트워크모델 (neural network model)Learn/머신러닝 2022. 11. 11. 00:34
# 단층 퍼셉트론
단층 퍼셉트론 모델은 아래와 같이 선형 결합으로 결과값을 판단하는 아주 단순한 구조이다.
아래는 단층 퍼셉트론의 분류 예시이다.
위 처럼 계산해서 output을 판단할 수 있다.
위에서 XOR 문제란 x1, x2이 같으면 0, 다르면 1이 되는 규칙을 뜻한다.
문제는 이 XOR에서는 계산값과 실제 output이 다르다는 것이다.
아래 그림에서도 알 수 있듯 XOR문제는 어떤 직선으로도 +, -를 완벽히 구분할 수 없다.
# 이중 퍼셉트론
XOR 문제를 해결하기 위해 이중 퍼셉트론 형태가 도입되었다.
단층 퍼셉트론에서는 입력값이 바로 출력값이 되는데, 여기서는 중간에 층을 하나 더 만들었다.
층이 두 개라서 이중 퍼셉트론이라고 부른다.
두 입력값을 결합하기 위해 로지스틱함수처럼 시그모이드함수를 사용한다.
전체 과정을 식으로 하나의 표현하면 다음과 같다.
이중 퍼셉트론부터 뉴럴네트워크라는 용어를 쓴다.
# 다층 퍼셉트론 (multilayer perceptron)
다중 퍼셉트론을 흔히 인공신경망 (Artificial Neural Networks)라고 부른다.
기본적인 구조는 아래와 같다.
- 입력변수의 수는 입력 노드의 수와 같다.
- 범주형의 경우 출력 노드의 수는 출력 변수의 "범주" 개수와 같다.
- 연속형의 경우 출력 노드의 수는 출력 변수의 개수와 같다.
- 은닉층은 다수의 노드를 포함할 수 있으며 다수의 은닉층을 형성할 수 있다.
# 파라미터
모델의 형태가 결정되면 중요한 것은 파라미터를 잘 결정하는 것이다.
뉴럴네트워크에서는 아래의 그림과 같은 파라미터들이 있다.
각 층간 노드를 연결하는 가중치 w, z는 알고리즘으로 결정한다.
은닉층의 개수, 은닉 노드의 개수, activation function의 종류는 사용자가 결정해야 한다. (하이퍼파라미터)
# Activation Functionn (활성화 함수)
위의 예시에서는 시그모이드 함수를 사용했지만 실제로는 더 많은 종류의 활성화 함수가 있다.
시그모이드, 아크탄젠트가 전통적으로 많이 쓰인다.
다만 느리다는 단점이 있어서 이를 극복하려고 다른 활성화 함수가 나오기 시작했다.
# Cost Function
파라미터를 구하기 위해서는 비용함수가 필요하다.
수식으로 아래와 같이 표현할 수 있는데 비용함수인 Loss function L을 최소화하는 w를 찾겠다는 뜻이다.
다만 수치 예측이냐 분류냐에 따라 비용함수는 다를 수 있다.
수치 예측은 아래와 같이 예측값과 실제값의 차이를 비용함수로 쓸 수 있다.
# 경사하강법 (Gradient Descent Method)
경사를 따라 움직여 최솟값 혹은 최댓값을 찾는 방법이다.
지역적인 최솟값은 local minimum이라 한다.
최솟값들 중 가장 작은 값을 global minimum이라 한다.
α는 learning rate이다.
- 작은 값을 가지면 섬세하고 촘촘하지만 오래 걸린다.
- 큰 값을 가지면 성큼 성큼 움직이므로 빠르게 구할 수 있다.
weight는 아래와 같이 업데이트 된다.
α앞에 마이너스가 있으므로 gradient인 L'가 0보다 크면 weight는 줄어든다.
그림으로 표현하면 아래와 같다.
# 파라미터 추정 (학습)
학습의 목적은 출력값(t)과 예측값(o)의 차이를 최소로 만드는 파라미터(w)를 찾는 것이다.
(아래는 activation function이 시그모이드일때에 대한 예시이다.)
Y가 연속형이면 비용함수는 아래와 같이 출력값과 예측값의 차이 제곱으로 표현할 수 있다.
(2를 나누는건 평균을 취하기 위해서)
우리는 gradient descent 방법으로 w를 지속적으로 업데이트 시켜줘야한다.
gradient는 위의 비용함수를 w로 미분하면 찾을 수 있다.
이 작업은 출력층-은닉층 사이, 은닉층-입력층 사이에 대해 각각 해줘야한다.
중간 미분 과정과 수식 전개는 일단 생략.
결과적으로 출력층-은닉층 사이는 아래와 같이 나오고.
(x는 입력값, t는 출력값, o는 예측값, h는 은닉층의 노드값)
은닉층-입력층 사이는 아래와 같이 계산된다.
# Backpropagation 알고리즘
사실 저 식이 정확히는 이해가 안되지만 중요한건 w를 얼마나 업데이트할지 구할 수 있다는 것이다.
그러면 이제 아래와 같은 단계로 w값을 최적화 할 수 있다.
- 모든 가중치 w를 임의로 생성
- 입력변수 값과 입력층과 은닉층 사이의 w값을 이용하여 은닉노드의 값을 계산 (선형결합 후 activation)
- 은닉노드의 값과 은닉층과 출력층 사이의 w값을 이용하여 출력노드의 값을 계산 (선형결합 후 activation)
- 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 은닉층과 출력층 사이의 w값을 업데이트
- 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 입력층과 은닉층 사이의 w값을 업데이트
- 에러가 충분히 줄어들 때까지 2~5 반복
이렇게 다시 돌아가며 w를 업데이트해주는 방식을
오류 역전파 알고리즘 (Error Backpropagation Algorithm)이라고 한다.
## pseudo-code
솔직히 개념은 이해했지만 수식까지 제대로 이해하진 못했으니 다음에 또 정리하자.
참고 : 김성범 교수님 유튜브
'Learn > 머신러닝' 카테고리의 다른 글
K-Nearest Neighbor (KNN) (0) 2022.11.13 Distance Measures (0) 2022.11.13 로지스틱 회귀모델(Logistic Regression) (0) 2022.11.06 선형 회귀 (Linear Regression) (0) 2022.10.09 정규화 모델 (Ridge, LASSO, Elastic Net) (0) 2022.09.03