ABOUT ME

Today
Yesterday
Total
  • 인공신경망(Artificial Neural Network)
    AI/DeepLearning 2022. 10. 3. 12:48

    신경망 구조 

    - 입력, 은닉, 출력 층 3가지로 구성 된다 

    - 가중치를 갖는 층은 2개(입력, 은닉)이다

    신경망 기본 구조

    신경망 종류   

    1. 피드 포워드 신경망(Feed-Forward Neural Network, FFNN)

    - 오직 입력층에서 출력층 방향으로 연산이 전개되는 신경망

    2. 순환신경망(Recurrent Neutral Network) 

    -  은닉층의 출력값을 출력층으로도 값을 보내지만, 동시에 은닉층의 출력값이 다시 은닉층의 입력으로 사용

     

    전결합층(Fully-connected layer, FC, Dense layer)

    - 은닉층과 출력층에 있는 모든 뉴런은 바로 이전 층의 모든 뉴런과 연결되어 있다

    - 어떤 층의 모든 뉴런이 이전 층의 모든 뉴런과 연결돼 있는 층을 전결합층(Fully-connected layer) 또는 완전연결층(FC) 

    - 밀집층(Dense Layer)라고 한다 

     

    활성화 함수(Activation Function)

    - 은닉층과 출력층의 뉴런에서 출력값을 결정하는 함수

    특징

    - 활성화 함수는

    비선형 함수(Nonlinear function)

    - 직선 1개로는 그릴 수 없는 함수

    - 활성화 함수를  f(x)=wx라고 가정(선형함수)한다고 해보자. 은닉층을 두개 추가 한다고 하면은, y(x) = f(f(f(x))) 선형 함수로 은닉층을 여러번 추가하더라도 1회 추가한 것과 차이가 없음  

    종류

    1) 계단 함수(Step function) - 입력이 0을 넘으면 1를 출력하고, 그 외에는 0을 출력하는 함수

     

     

    import numpy as np 
    def step_function(x):
      y = x > 0  # 0이 넣으면 int형으로 바꿔주자 
      return y.astype(np.int)
    
    step_function(np.array([-1.0, 1.0, 2.0])) # true는 1로, false는 0으로 반환

    2) 시그모이드함 수(Step function) 

    - 두 가지 선택지 중 하나를 고르는 이진 분류 (Binary Classification) 문제에 사용

    3)  렐루 함수(ReLU) 

    4) 리키 렐루 함수(Learky Relu)

    4) 소프트맥스 함수(Softmax funcion)

    세 가지 이상의 (상호 배타적인) 선택지 중 하나를 고르는 다중 클래스 분류(MultiClass Classification) 문제에 주로 사용

    순전파(Foward Propagation)란?!

    - 입력층에서 출력층 방향으로 예측값의 연산이 진행되는 과정을 순전파라고 한다  

    - 순전파를 진행하고 예측값을 얻는다 

    1. 다층 퍼셉트론의 순전파

     

    입력의 차원이 3, 출력의 차원이 2인 인공신경망

     

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense
    
    model = Sequential()
    
    # 3개의 입력과 2개의 출력
    # 입력층의 뉴런이 3개, 출력층의 뉴런이 2개 
    model.add(Dense(2,input_dim=3,activation='softmax'))
    model.summary()
    
    
    
    Model: "sequential"
    _________________________________________________________________
     Layer (type)                Output Shape              Param #   
    =================================================================
     dense (Dense)               (None, 2)                 8         
                                                                     
    =================================================================
    Total params: 8
    Trainable params: 8
    Non-trainable params: 0
    _________________________________________________________________

    Model Summary를 뜯어서보자

    - 학습가능한 매개변수 인 w b의 개수가 총 합해서 8개라는 의미

    3차원 벡터에서 2차원 벡터가 되기 위해서 3 × 2 행렬을 곱했다고 이해하자

    -  y1에 연결되는 화살표 w1, w2, w3를 주황색으로 표현

    -  y2에 연결되는 화살표 w4, w5, w6를 초록색으로 표현

    -  편향 b의 개수는 항상 출력의 차원을 기준으로 개수를 확인하면 된다(위의 예시 경우는 출력이 2이니까 편향 또한  b1, b2개 2개) 

     

     

    2. 다층 퍼셉트론의 순전파

    from tensorflow.keras.models import Sequential
    from tensorflow.keras.layers import Dense 
    
    model = Sequential()
    
    # 입력층 => 4개의 입력과 와 출력층 8개 
    model.add(Dense(8, input_dim=4, activation='relu'))
    
    # 은닉층1 => 8개의 입력과 8개의 출력 (입력은 생략)
    model.add(Dense(8, activation='relu'))  
    
    # 은닉층2  => 8개의 입력과 3개의 출력 (입력은 생략) 
    model.add(Dense(3, activation='softmax'))
    
    model.summary()
    
    Model: "sequential_1"
    _________________________________________________________________
     Layer (type)                Output Shape              Param #   
    =================================================================
     dense_1 (Dense)             (None, 8)                 40        
                                                                     
     dense_2 (Dense)             (None, 8)                 72        
                                                                     
     dense_3 (Dense)             (None, 3)                 27        
                                                                     
    =================================================================
    Total params: 139
    Trainable params: 139
    Non-trainable params: 0
    _________________________________________________________________

     

    역전파(Back Propagation)란?!

    - 순전파와는 반대 방향으로 연산을 진행하며 가중치를 업데이트하는 과정

    - 예측값과 실제값으로부터 오차를 계산하고, 오차로부터 가중치와 편향을 업데이트하는 일을 맡아 한다

     

     

    'AI > DeepLearning' 카테고리의 다른 글

    콜백함수(EarlyStopping)  (0) 2022.10.05
    LSTM  (0) 2022.10.04
    레이어들(Layers)  (0) 2022.09.30
    퍼셉트론(Perceptron)  (0) 2022.09.29
    Tensorflow에서 딥 러닝 모델을 만드는 방법  (0) 2022.09.26

    댓글

Designed by Tistory.