ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [n411] Neural Networks
    AI 부트캠프 2021. 12. 17. 10:26

    퍼셉트론 (Perceptron)

    퍼셉트론은 신경망을 이루는 가장 기본 단위이다. 여러개의 신호를 입력으로 받아 하나의 신호를 출력하는 구조이다. 다음은 퍼셉트론을  나타낸 이미지이다.

    퍼셉트론은 크게 두 부분으로 나눌 수 있다. 가중치-편향 연산과 활성화 함수 부분이다.

     

    가중치-편향 (Weight-bias) 연산

    입력된 신호는 각각의 가중치와 곱해지고 그 결과를 합한다. (가중합 즉, weighted sum)이 퍼셉트론의 첫 단계이다.

    입력이 1, 2, 3이고 가중치가 각 0.2, 0.3, -0.1일 때 가중합은 다음과 같다. 

    import numpy as np
    
    input = np.array([1, 2, 3])
    weight = np.array([0.2, 0.3, -0.1])
    
    np.dot(input, weight)

     

    활성화 함수 (Activation Function)

    자주 사용되는 활성화 함수로는 Step, Sigmoid, ReLU, Softmax가 있다.

    1. Step Function (계단 함수)

    입력값이 임계값을 넘기면 1, 그렇지 않으면 0을 출력하는 함수이다. 

     

    2. Sigmoid Function (시그모이드 함수)

    경사 하강법을 통해 학습을 진행하기 위해서는미분 과정이 필요하지만 Step Function에서는 기울기가 0이므로 미분을 할 수 없다. 따라서 이 단점을 해결하기 위해 시그모이드 함수를 사용한다. 

    시그모이드 함수는 모든 지점에서 미분이 가능하며, 기울기(미분값)가 0이 아니다. 

     

    3. ReLU Function

    시그모이드 함수를 여러 차례 사용하면 기울기 소실 (Vanishing Gradient) 문제 발생한다. 이를 해결하기 위해 등장한 것이 ReLU이다. ReLU 함수는 양수가 입력되면 그 값을 그대로 출력하고 음수 값이면 0을 출력한다.

     

    4. Softmax Function (소프트맥스 함수)

    Multi-classification(다중 분류) 문제에 적용할 수 있도록 시그모이드 함수를 일반화시킨 Activation Function이다. 가중합 값을 소프트맥스 함수에 통과시키면 모든 클래스의 값의 합이 1이 되는 확률값으로 변환된다. 클래스 개수에 따라 몇 개로 나뉘는지 정해진다. 

     

    논리 게이트 (Logic Gate)

    퍼셉트론의 가장 단순한 형태는 AND, NAND, OR과 같은 논리 게이트이다. 

     

    AND GATE

    입력 신호가 모두 1(True)일 때 1(True)을 출력하고, 하나라도 0이면 0(False) 출력한다.

     

    NAND GATE

    Not AND 입력 신호가 모두 1(True)일 때 0(False)를 출력한다. AND gate에 Not을 한 개념이다. 

     

    OR GATE

    입력 신호가 단 하나라도 1(True)일 때 1(True)를 출력하고, 모두 0일 때, 0을 출력한다.

     

    XOR GATE

    입력 신호가 서로 다를 경우 1(True)를 출력한다.

     

    선형 경계로 분류하기

    검은 색이 1, 흰 색이 0을 나타낸다.

    XOR의 경우 (세 번째 그래프) 선형 경계로 분류할 수 있을까? 2개 이상의 경계를 사용한다!

     

    인공 신경망

    딥러닝은 인공 신경망의 층을 깊게 (deep) 쌓은 것을 의미한다. 인공 신경망 (ANN, Artificial Neural Networks)은 줄여서 뉴럴넷(Neural-Net)으로 부르기도 한다. 

    퍼셉트론을 다층으로 쌓는 이유는 무엇일까?

    예를 들어 XOR GATE 문제의 경우 1개의 분류기로는 풀 수 없었다. 다음과 같이 AND, NAND, OR GATE를 다층으로 활용하면 XOR GATE를 풀 수 있다. 

    여러 층으로 쌓아 만든 신경망을 다층 퍼셉트론 신경망 (MLP, Multi-Layer Perceptron)이라고 한다. 

    딥러닝은 더 많은 노드로 층을 깊게 구성하여 복잡한 분류 문제 (예를 들어 이미지) 등의 문제를 해결 할 수 있다.

    신경망의 층은 크게 3가지로 나눌 수 있다. 입력층, 은닉층, 출력층.

     

    입력층 (Input Layer)

    • 데이터셋이 입력되는 층을 입력층이라 한다.
    • 입력층 노드의 수는 입력되는 데이터셋의 feature에 따라 결정된다.
    • 입력층은 계산 과정 없이 단순히 입력 데이터를 전달 하는 특징이 있다.
    • 주의할 점은 신경망의 층수 또는 깊이를 셀 때 입력층은 포함하지 않는다. 

     

    은닉층 (Hidden Layer)

    은닉층은 입력층으로부터 입력된 신호가 가중치, 편향과 연산되는 층이다.
    일반적으로 입력층과 출력층 사이에 있는 모든 층을 은닉층이라고 부른다.
    은닉층에서 일어나는 계산의 결과를 사용자가 볼 수 없기 때문에 '은닉(Hidden)층' 이라는 이름이 붙었다.
    은닉층은 입력 데이터셋의 특성 수와 상관 없이 노드 수를 구성할 수 있다.

    일반적으로 딥러닝(Deep Learning)이라고 하면 2개 이상의 은닉층을 가진 신경망을 말한다.
    은닉층의 수가 늘어나고 더 좋은 학습 방법이 개발되면서 복잡한 데이터의 구조를 학습할 수 있게 되었다.
    이렇게 복잡한 신경망이 다른 알고리즘이 세웠던 성능을 갱신하면서 딥러닝이 유명해졌다.

     

    출력층 (Output Layer)

    출력층은 가장 마지막에 연산을 마친 뒤 최종 값이 출력되는 층이다.
    우리가 풀어야 할 문제 종류에 따라서 이진 분류, 다중 분류, 회귀 등으로 나뉜다.

    • 이진 분류(Binary Classification) : 출력층의 노드는 1개이다. Activation function은 시그모이드 함수를 사용한다. 출력되는 값이 0과 1 사이의 확률값이 된다.
    • 다중 분류(Multi-class Classification) : 몇 개의 클래스로 분류하는지에 따라 출력층의 노드 수가 결정된다. 활성화 함수는 소프트 매스 함수를 사용한다. 
    • 회귀(Regression) : 출력층의 노드 수는 출력값의 특성(Feature) 수와 동일하게 설정한다. 예를 들어 하나의 수를 예측하는 문제라면 1로 설정한다. 활성화 함수를 따로 지정하지 않는다. 

     

    ❗️ 왜 활성화 함수가 필요할까?

    선형 변환을 여러개 연결해도 결국 선형 변환 뿐이다. 즉, 층을 쌓아도 하나의 층과 동일하다. 이 상태로는 복잡한 문제를 풀 수 없으므로 비선형 활성화 함수를 추가한다! 

    댓글