본문 바로가기
AI/Deep Learning

[DL] 역전파(backpropagation)

by 안녕나는현서 2021. 5. 13.
728x90

- 신경망의 손실함수 식 : 다차함수 → 정의하거나 미분하기 어려움

 

 

- 신경망의 목적 : 손실함수가 최솟값일 때의 파라미터를 찾아 올바른 학습 결과를 내는 것(회귀분석이나 로지스틱 회귀와 기본 개념이 같음, 단 신경망이 사용하는 파라미터의 개수가 더 많음)

 

 

- 역전파(backpropagation)

  • 신경망의 파라미터를 효율적으로 찾기 위한 연구
  • 1987년 역전파가 공개됨
  • 뉴런의 가중치를 효율적으로 조정하기 위하여 거꾸로 무엇인가를 전파하는 방식

신경망 모델

  • 위의 신경망 모델에서 기대 출력 값과 현재 출력 값의 오차 = 1
  • 역전파
    1. 기존 출력값을 지우고 새로운 출력값으로 3을 전달
    2. 은닉층 노드 값(3)과 고정값(1)을 비교하여 값이 큰 쪽의 가중치 혹은 편향을 더 크게 조정하여 출력 값을 3이 되도록 조정
    3. 편향에서 0.1을 빼서 0.9로 조정, 은닉층 노드 값은 3이므로 가중치는 3배인 0.3을 빼서 0.7 → 이러한 조정을 통해 은닉층에 전파할 오차는 총 0.4
    4. 따라서 역전파를 적용한 신경망의 출력 값은 새로운 출력값 3에서 은닉층에 전파할 오차 0.4를 뺀 2.6에 가까운 값이어야함
    5. 이러한 방식으로 입력층과 은닉층 사이의 가중치와 편향도 조정 → 편향은 0.1빼서 0.9, 가중치는 0.2빼서 0.8
    6. 이를 다시 계산해보면 은닉층의 노드 값은 2.5, 출력층의 값은 2.65

1~4
가중치 1보다 기대 출력값에 훨씬 더 가까워진 결과

  • 즉, 역전파는 출력값과 지도 데이터 사이에 생기는 '오차'를 이용해 출력층에서 입력층 쪽으로 가중치를 조정
  • 역전파는 경사 하강법을 사용
  • 이와 같은 신경망에서 손실 함수 정의해보면 손실함수는 출력값과 지도 데이터 사이의 오차라고 할 수 있음

  • 역전파는 이 손실함수가 최솟값일 때의 가중치로 원래의 가중치를 조정해야 함
  • 그래서 입력값 각각의 손실함수 전체를 고려해야 함
  • 특정 입력값에서 손실함수 최솟값은 크게 의미가 없음
  • 모든 입력값을 대상으로 손실 함수가 최솟값일 떄의 파라미터를 찾는 것
  • 입력값 각각의 손실 함수 합은

  • 이 때 손실 함수 E가 최솟값일 때의 가중치를 찾는 식 : E를 가중치w에 대하여 편미분

미분한 값이 0에 가까운 가중치를 찾아야함

  • 0에 가까운 미분 값을 찾는 이유? 경사 하강법에서 기울기값이 0에 가까워졌을 때, 손실함수 값이 최솟값 후보가 되기 때문
    • 후보? 계산 결과를 통해 기울기가 0에 가까워졌다 해도 그 값이 꼭 최솟값이라 확신할 수 없음
    • → 기울기에 대한 변화가 없다가 다시 점차 증가 혹은 감소하는 현상이 발생할 수도 있으며 마치 심하게 요동치는 파동과도 같은 모습을 보이는 경우가 다수 있기 때문
  • E를 각각 전개하여 직접 편미분을 진행하면 꽤나 번거로움 → 입력값 각각의 손실함수를 편미분한 후에 합이 0에 가까운지 확인하는 것이 더 간단

 

 

- 손실함수가 최솟값일 때의 가중치 찾아보기

  • E를 w로 편미분할 때는 연쇄법칙을 이용하여 간단하게
    1. b로 편미분 진행
    2. w로 편미분 진행

  • 은닉층 편향의 편미분으로 E에 관한 은닉층 가중치 w의 편미분을 정의할 수 있음

  • 이와 같은 방식으로 입력층과 은닉층 사이도 가중치와 편향 조정할 수 있음

  • 이렇게 역전파를 활용하게 되면, 신경망의 출력 값부터 차례로 이진 노드 값이 정해지게 됨
  • 역전파는 수열의 점화식처럼 오차를 전파하는 방법
  • 역전파 = 역방향 미분

 

 

- 역전파 기법의 문제 : 기울기 소멸 문제

  • 당시 역전파 알고리즘에서 주로 사용된 활성화 함수는 Sigmoid, Softmax
  • 시그모이드의 경우, 미분의 최대치가 0.3이며 여러 층을 거칠 수록 기울기는 점차 0에 수렴하는 문제
  • 소프트 맥스는 출력 값으로 확률 벡터를 얻기 위해 사용됐는데, 각 출력 노드의 출력값을 0에서 1 사이의 값으로 제한
  • 시그모이드, 소프트맥스는 최종 출력을 결정하는데 있어 합리적인 선택이 가능했으나, 출력된 값들이 항상 너무 적은 값을 가지고 있었기에 신경망이 깊어질수록 오차의 기울기가 점차 작아지며 끝으로 가는 도중 기울기가 소실되면서 가중치 조정이 이뤄지지 않는다는 (학습이 잘 되지 않는) 문제 발생
  • 기울기 소멸 문제를 해결하기 위해 제프리 힌튼 교수 'ReLU'함수를 활성화 함수로 활용
    • 'ReLU'는 입력이 음수일때는 0 출력, 양수일때는 양수 값을 그대로 출력
    • 다른 함수보다 기울기 소실문제에 있어 어느 정도 면역을 가짐

728x90

'AI > Deep Learning' 카테고리의 다른 글

[DL] 퍼셉트론(perceptron)  (0) 2021.05.13
[DL] 딥러닝 기초  (0) 2021.05.12

댓글