NN(Neural Networks)

JOY JHJEONG·2021년 12월 6일
0

NN Foundation

  • Perceptron
    신경망을 이루는 가장 기본 단위
    다수의 신호를 입력받아 하나의 신호를 출력
    입력 데이터와 가중치의 연산으로 정보 전달
    • AND GATE
      입력 신호가 모두 1(True)일 때 1(True) 출력
    • NAND GATE (Not AND GATE)
      AND GATE 결과의 반대
    • OR GATE
      입력 신호 중 하나만 1(True)이어도 1(True) 출력
    • XOR GATE
      입력 신호가 다를 경우 1(True) 출력
      >> 퍼셉트론의 한계

ANN(Artificial Neural Networks)

  • 활성화 함수(Activation Function)
    • 신경망에서 각 노드는 활성화 함수를 가지고 있는데, 일반적으로 각 층에는 같은 종류의 활성화 함수를 지닌다.
    • 다음 층으로 신호를 얼마만큼 전달할지 결정 (transfer function)
    • 보통은 은닉층에는 ReLU 사용, 출력층에는 Sigmoid(이진 분류)나 Softmax(다중 분류) 사용
  • 신경망 층(Layer) 구성
    • 입력층(Input Layers)
      • 데이터셋으로부터 입력을 받는다.
      • 입력 변수의 수와 입력 노드의 수 동일
      • 어떤 계산도 수행하지 않는다.
    • 은닉층(Hidden Layers)
      입력층과 마지막 출력층 사이에 있는 층들
    • 출력층(output Layers)
      - 회귀 문제에서 예측값이 실수이면 활성화함수 불필요
      - 이진 분류 문제의 활성화 함수는 Sigmoid Function 사용. 출력을 확률값으로 변환하여 label 결정
      - 다중 분류 문제의 활성화 함수는 Softmax Function 사용. 출력층 노드 수와 label 수 동일

  • 신경망 구조
    • 노드(node)에 입력 신호가 들어오면 각각 고유한 가중치(weights)가 곱해지고 다음 노드에서 입력된 모든 신호의 합 연산
    • 각 노드에서의 연산값이 입계값(Threshold Logic Unit, TLU)을 넘으면 다음 층(layer)으로 신호 전달
  • 신경망의 비선형성(Nonliearities)
    데이터의 차원이 매우 높으며 비선형 패턴을 가진 데이터를 학습하려면 그에 따라 매우 복잡한 다차원의 특성 조합이 이루어져야 한다. 딥러닝은 활성화 함수로 비선형성을 만들어 내서 좀 더 유용해진다.

  • 표현 학습(Representation Learning)
    스스로 특성 관계를 찾아내는 것
    머신러닝과 딥러닝의 차이는 표현 학습에 있다.
    머신러닝은 사용자가 직접 데이터를 파악하여 그 특징에 맞는 특성들을 설계하고 찾아낸다.
    반면 딥러닝은 데이터에서 필요한 특성들을 스스로 조합하여 찾아낸다. 신경망의 구조와 깊이를 변화시키면 데이터를 더욱 유용하게 표현할 수 있다.

경사하강법과 역전파 알고리즘

신경망의 학습(training)은 적절한 가중치를 찾아가는 과정이다.
신경망은 경사하강법과 역전파를 통해 스스로 적절한 가중치를 찾는다.
경사하강법에 필요한 기울기(gradient) 계산을 역전파 알고리즘을 통해 구하게 된다.

  • 순전파
    입력층에서 입력된 신호가 은닉층의 연산을 거쳐 출력층에서 값을 내보내는
    과정

  • 신경망 학습 알고리즘 요약
    • 신경망 구조 설계
    • 가중치를 랜덤하게 초기화
    • 순전파를 통해 모든 입력 데이터에 대한 출력값 계산
    • 비용 함수(손실 함수) 계산
    • 역전파를 통해 각 가중치에 대한 편미분 값 계산
    • 경사하강법을 사용하여 비용함수를 최소화하는 방향으로 가중치 갱신

  • 역전파(Backpropagation, BP)
    손실 정보를 출력층부터 입력층까지 전달하여 각 가중치를 얼마나 업데이트 해야할지 결정하는 알고리즘

  • 경사하강법(Gradient Descent, GD)
    손실을 줄이는 방향 결정

  • Optimizer
    경사하강법에서 지역 최적점에 빠지는 문제를 방지하는 알고리즘
    경사를 내려가는 방법 결정
    얼마만큼의 데이터를 사용하여 어떻게 가중치를 업데이트 할지 결정

NN Training Options

  • 손실 함수(Cost function) 혹은 오차 함수(Error function)
    • 평균 제곱을 기반으로 하는 손실 함수
      • MSE(Mean Squared Error)
      • RMSE(Root Mean Squared Error)
      • MAE(Mean Absolute Error)
      • R-Squared
        ...
    • 엔트로피를 기반으로 하는 손실 함수
      • Binary Crossentropy
      • Categorical Crossentropy
        ...

과적합을 방지하기 위한 방법 (Regularization Strategies)

  • Early Stopping
    학습 데이터셋에 대한 손실은 계속 줄어들지만 검증 데이터셋에 대한 손실은 증가한다면 학습 종료
  • Weight Decay
    과적합은 가중치의 값이 클 때 주로 발생
    >> 손실 함수에 가중치와 관련된 항을 추가하여 값이 너무 커지지 않도록 조정
    • L1 Regularization
      L(θw)=12i(outputitargeti)2+λθwL(\theta_w) = \frac{1}{2} \sum_i (output_i - target_i)^2 + \color{blue}{\lambda} \cdot \color{red}{\vert \theta_w \vert}
    • L2 Regularization
      L(θw)=12i(outputitargeti)2+λθw2L(\theta_w) = \frac{1}{2} \sum_i (output_i - target_i)^2 + \color{blue}{\lambda} \cdot \color{red}{\Vert \theta_w \Vert^2}
  • Weight Constraint
    특정 가중치를 제거하거나 범위 제한

  • Drop-Out
    iteration마다 레이어 노드 중 일부를 사용하지 않으면서 학습 진행
    • 어느 layer(visible vs hidden)에 적용하는지에 따라 다른 효과를 불러올 수 있다.
    • 사용하고 있는 모델이 과적합이나 일반화 문제가 있지 않다면 굳이 쓸 필요는 없다.
  • Learning rate Decay / Scheduling

NN Hyperparameters

  • Hyper-parameter
    좋은 예측을 위해 사전에 정의되는 값
    • Parameter
      좋은 예측을 위해 업데이트 되어야 하는 변수

  • Babysitting one model
    데이터는 방대하지만 CPU나 GPU 등 컴퓨터 자원이 많이 필요하지 않아서 적은 숫자의 모델을 한번에 학습시킬 수 있을 때 사용
    며칠, 몇 주에 걸쳐 매일 모델을 돌보며 학습
    성능을 잘 지켜보다가 학습 속도를 조금씩 바꾸는 방식
    여러 모델을 동시에 학습시킬 컴퓨터 자원이 충분하지 않을 때 사용

  • Training many models in parallel
    하이퍼파라미터를 며칠에 걸쳐 스스로 학습하게 하고 동시에 다른 모델의 다른 하이퍼파라미터 설정을 다루는 방식으로 서로 다른 모델을 동시에 학습
    여러 하이퍼파라미터 설정을 시험해 볼 수 있고, 마지막에는 최고 성능을 보이는 것 선택

  • 튜닝 가능한 하이퍼파라미터 옵션
    • batch_size
      The number of samples that will be passed through to the network at one time (batch a.k.a. mini-batch)
      • Larger batches
        - Faster training
        - GPU memory limitations
    • training epochs
    • optimization algorithms
      • optimizer
        옵티마이저에 따라 하이퍼파라미터의 종류, 값 등도 달라지므로 어떤 옵티마이저를 선택하느냐에 따라 옵티마이저의 learning rate이나 momentum을 튜닝해야 할 수도 있다.
        - adam
        보통 가장 좋은 결과 제공
        - adamW
        ...
    • learning rate
      경사하강법 기반의 optimizer 선택을 위한 하이퍼파라미터 (default = 0.01)
      • 너무 높게 설정하면 모델이 발산하고, 너무 낮으면 수렴에 실패하므로 최적의 학습율을 찾아야 한다.
      • epoch 횟수도 같이 튜닝하는 것이 좋다. learning rate이 최솟값에 도달할 수 있을 때까지 iteration의 횟수를 충분히 설정했는지 판단할 수 있기 때문
    • momentum
      옵티마이저가 최솟값을 overshooting하게 결정하는 속성
      진행 중인 방향으로 관성을 더해 지역 최소점(local minima)에 빠지지 않도록 함
      • ADAM(Adaptive Momentum Estimation)
        기울기의 지수 평균과 기울기의 제곱의 지수 평균
    • activation functions
    • dropout regularization
    • hidden layer의 neuron 개수
      ...
  • Network Weight Initialization
    어떤 가중치 초기화 모드를 선택하는지에 따라 모델의 초기 정확도에 큰 영향을 끼친다.
    가중치를 잘 초기화하면 훨씬 적은 epoch로 모델을 위한 최적의 가중치를 찾을 수 있다.
    • 가중치 표준편차를 1인 정규분포로 초기화를 할 때 활성화 값의 분포
    • 가중치의 편차를 1/sqrt(n)으로 초기화한 Xavier 초기값의 활성화 값의 분포
    • 가중치 표준편차를 sqrt(2/n)로 초기화한 He 초기값의 활성화 값의 분포
    • Activation function에 따른 초기값 추천
      • Sigmoid >> Xavier 초기화를 사용하는 것이 유리
      • ReLU >> He 초기화를 사용하는 것이 유리

Reference

profile
Data Scientist를 향한 공부 기록✏️

0개의 댓글