관리 메뉴

너와 나의 스토리

NN(Neural Network) - backpropagation 본문

Data Analysis/Machine learning

NN(Neural Network) - backpropagation

노는게제일좋아! 2019. 7. 29. 20:43
반응형

* '핸즈온 머신러닝' 책의 내용을 기반으로 작성

 

 

● 퍼셉트론(Perceptron)

  • 가장 간단한 인공 신경망 구조 중 하나
  • TLU(threshold logic unit)라는 조금 다른 형태의 인공 뉴런을 기반으로 한다.
  • 입력과 출력이 어떤 숫자고 각각의 입력 연결은 가중치와 연관되어 있다.
  • 층이 하나뿐인 TLU로 구성된다.

 

  • ● TLU
  • 간단한 선형 이진 분류 문제에 사용할 수 있다.
  • 입력의 선형 조합을 계산해서 그 결과가 임곗값을 넘어서면 양성 클래스를 출력하고 그렇지 않으면 음성 클래스를 출력한다. 여기에 편향 특성이 더해진다.

 

● 다층 퍼셉트론(Multi-Layer Perceptron) - MLP

  • 여러 퍼셉트론을 쌓아올려 일부 제약을 줄일 수 있는데, 이런 신경망을 MLP라고 한다.
  • [입력층 하나 + 은닉층 하나 이상 + 출력층]으로 구성됨
    • * 은닉층: TLU층
  • 출력층을 제외하고 모든 층은 편향 뉴런을 포함하며 다음 층과 완전히 연결되어 있다.
  • 인공 신경망의 은닉층이 2개 이상일 때, 이를 심층 신경망(deep neural network; DNN)이라고 한다.

 

● 역전파(backpropagation)

  1. 각 훈련 샘플을 네트워크에 주입하고 연속되는 각 층의 뉴런마다 출력을 계산한다
    • -> 예측할 때와 같은 정방향
  2. 그 후, 네트워크의 출력 오차(출력된 값과 실제 값의 차)를 계산한다.
  3. 출력 뉴런의 오차에 마지막 은닉층의 뉴런이 얼마나 기여했는지 측정한다.
  4. 그런 다음 이전 은닉층의 뉴런이 여기에 또 얼마나 기여했는지 측정한다
    • -> 입력층 도달할 때까지 계속 측정
  5. 이는 오차 gradient를 후방으로 전파함으로써 네트워크의 모든 연결 가중치에 대한 오차 그래디언트를 효율적으로 계산한다.
  6. 역전파 알고리즘의 마지막 단계는 앞서 계산한 오차 그래디언트를 네트워크의 모든 연결 가중치에 반영하는 경사 하강법 스텝이다.

 

정리

1. 예측 (정방향 계산)

2. 오차 측정

3. 각 층을 거치면서 각 연결이 오차에 기여한 정도 측정 (역방향 계산)

4. 이 오차가 감소하도록 가중치 조금씩 조절

 

  • 역전판 알고리즘이 쓸 수 있는 활성화 함수(activation function)
    • tanh(z), ReLu
    • tanh(z): 연속적이고 미분 가능, 출력 범위는 -1부터 1 사이 (로지스틱 함수는 0에서 1사이)
    • ReLu(z):
      • max(0,z)
      • 연속적이지만 z=0에서 미분 불가
      • 실제로 잘 작동하고 계산 속도가 빠름
      • 출력에 최대값이 없다. -> 경사 하강법의 일부 문제 완화
  •   경사 하강법의 문제:
    • sigmoid 함수는 입력 x가 어느 정도 커지면 항상 1에 가까운 값을 출력하기 때문에, 입력의 변화가 출력에 반영되기 어렵다. 그 결과, 오차 함수의 가중치 매개 변수에 대한 편미분이 0에 가까운 값이되어, 경사 하강법의 학습이 늦어지는 문제가 있다. (vanishing gradient problem)
    • layer가 많을 때, 미분 결과를 최초 layer까지 전달하는 것이 힘들다. 

Rectifier = ReLu

 

 

 

반응형
Comments