ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 뉴럴네트워크모델 (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값을 최적화 할 수 있다. 

     

    1. 모든 가중치 w를 임의로 생성
    2. 입력변수 값과 입력층과 은닉층 사이의 w값을 이용하여 은닉노드의 값을 계산 (선형결합 후 activation)
    3. 은닉노드의 값과 은닉층과 출력층 사이의 w값을 이용하여 출력노드의 값을 계산 (선형결합 후 activation)
    4. 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 은닉층과 출력층 사이의 w값을 업데이트
    5. 계산된 출력노드의 값과 실제 출력변수의 값의 차이를 줄일 수 있도록 입력층과 은닉층 사이의 w값을 업데이트
    6. 에러가 충분히 줄어들 때까지 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

    댓글

Designed by Tistory.