Machine Learning

역전파(1)

se0_ing 2024. 1. 5. 14:54
반응형

 

오늘은 신경망을 학습시키는 알고리즘인 역전파(back propagation)에 대해 알아보자. 

 

 

신경망이 학습할 때 결합강도가 어느 정도로 변화하는지 설명한 것을 학습 규칙이라고 하는데, 역전파배경 이론으로서 두 학습 규칙에 대해 알아보겠다.

 

 

 

 

 

햅의 규칙과 델타 규칙

 

 

헵의 규칙은 도널드 헵이 주장한 노의 시냅스 가소성에 관한 법칙이다. 헵의 규칙은 시냅스 앞쪽의 신경세포가 흥분하고 이에 따라 시낸스의 뒤쪽 신경세포가 흥분하면 전달 효율이 강화된다는 주장에 근거한 이론이다.

 

 

이 전달 효울의 강화를 수식으로 표현해보자. 가중치 변화량을 w, 시냅스 앞쪽 뉴런 흥분 정도를 yi, 뒤쪽 뉴런 흥분 정도 yj, Γ(감마)는 상수로 하면 위의 공식으로 나타낼 수 있다.

 

 

 

 

 

 

두 출력이 함께 커지면 결합 강도(가중치)가 크게 증가된다. 또한 뉴런의 흥분이 발생하면 이후부터는 시냅스에서 정보가 점차 효율적으로 전달이 된다. 이 규칙은 헵의 규칙에 근거한 학습 규칙이다.

 

 

 

 

델타 규칙은 버나드 위드로와 마시안 호프가 주장한 규칙으로 다음과 같다.

 

  • 출력값과 정답의 오차가 커질수록 가중치 수정량도 커진다.
  • 입력값이 커질수록 가중치 수정량이 커진다.

 

 

델타 규칙을 수식으로 표현하면 다음과 같아. w 는 가중치 변화량, yi는 시냅스 앞쪽 뉴런의 출력값, yj는 뒤쪽 뉴런의 출력값, 여기까지 헵의 규칙과 같고, t는 정답이다. η(에타)는 학습률이라고 하는 상수이다.

 

 

 

 

델타 규칙에 따라 이상적인 상태에서 벗아날수록 이상적인 상태로 되돌아가기 위해 가중치 수정량이 커지게 된다, 또한 뉴런에 큰 입력값이 들어오게 되면 강한 자극이 있다고 느껴 가중치가 큰 폭으로 변화한다. 이처럼 델타 규칙은 직관적이고 논리적으로 이해하기 쉬운 학습 규칙이다.

 

 

 

 

 

역전파란

 

학습 완료한 신경망은 고도의 인지, 판단 능력을 발휘한다. 역전파는 이러한 신경망을 학습시킬 때 이용하는 알고리즘이다. 출력값과 정답의 오차를 네트워크에서 역잔파시켜 네트워크의 가중치와 편향을 조정, 최적화 시킨다. 역전파는 딥러닝에서 필수불가결하다고 해도 과언이 아닐 정도로 굉장히 중요한 알고리즘이다.

 

 

 

역전파의 개요

 

 

 

 

 

역잔파를 이해 하려면 다음과 같은 5가지 개요를 알아보자.

 

  • 훈련 데이터와 테스트 데이터
  • 손실 함수
  • 경사 하강법
  • 최적화 알고리즘
  • 배치 사이즈

 

신경망 학습에 이용되는 데이터는 훈련 데이터(training data)테스트 데이터(test data)로 나뉘며, 훈련 데이터는 신경망 학습에 이용되고 테스트 데이터는 학습 결과를 검증하기 위해 사용된다.

 

 

신경망에서 결과 출력되는 여러 값은 각각 정답이 있다. 이런 출력값과 정답의 오차를 정의하는 함수를 손실 함수(loss function)라고 한다.

 

 

오차를 순차적으로 이전 층으로 전파시켜 가중치와 오차를 조금씩 수정하면서 오차를 최소화 하는데 이때 경사 하강법이라는 알고리즘을 이용한다. 그 중에 가중치와 오차를 반복적으로 수정하는 최적화 알고리즘에는 확률적 경상 하강법(stochastic gradient descent, SGD), 아다그라드(AdaGrad) 등, 다양한 방법이 있다.

 

 

가중치와 오차의 수정은 데이터를 그룹으로 묶어 진행하는데 이 그룹의 크기배치 사이즈(batch size)한다. batch size는 학습 효율에 영향을 미친다.

 

 

 

 

 

 

 

 

손실함수

 

 

 

손실 함수(loss function)를 조금 더 자세히 살펴보자

 

 

손실 함수는 출력값과 정답의 오차를 정의하는 함수로서 오차 함수비용 함수(cost function)라고도 부른다. 오차값이 클수록 신경망이 이상적인 상태에서 멀어져 있는 것이다. 학습은 이 오차를 최소화 시키도록 진행된다.

 

 

손실함수에는 다양한 종류가 있는데 대표적인 두 가지를 알아보자.

 

 

 

 

 

출력층의 모든 뉴런에서 출력값과 정답의 차이를 제곱하고 이 값들을 모두 합한 것을 오차제곱합(Sum of Squares for Error, SSE)이라고 부른다. 오차제곱합 함수에서 E를 오차제곱의 합, yk를 출력층의 각 출력값, tk를 정답이라고 할 때 다음과 같은 공식 도출된다.

 

 

 

 

 

 

1/2을 붙인 것은 미분을 쉽게 하기 위함이다.

 

 

 

 

 

 

오차제곱합을 이용하면 정답과 어느정도 일치하는지 정량화를 할 수 있다. 오차제곱합은 출력값과 정답이 연속적인 수치인 경우에 잘 맞기 때문에 회귀 문제에서 많이 쓰인다.

 

Numpy를 이용하여 코드로 구현해보자.

 

 

import numpy as np

def square_sum(y, t):
    return 1.0 / 2.0 * np.sum(np.square(y - t))

 

 

 

 

 

 

교차 엔트로피 오차(Croos Entroypy Error, CEE)는 두 분포 간의 차이를 나타내는 척도로서 분류 문제에서 많이 사용된다. 교차 엔트로피 오차는 다음 수식과 같이 출력값 yk의 자연로그와 정답의 곱을 모두 더한 값에 마이너스 기호를 분인 식으로 표현한다.

 

 

 

 

 

분류 문제에서 정답은 1 하나이고 나머지는 원핫 인코딩에 따라 모두 0으로 표현된다. 따라서 우변의 시그마 내부에서 tk가 1인 항의 오차에만 영향을 주고 tk가 0인 항에는 영향을 주지 않는다.

 

 

이해를 돕기 위해서 y = -log(x) 그래프를 살펴보자. 

 

 

 

 

 

 

-log(x)는 x가 1일때 0이고, x가 0에 접근할수록 무한대로 커진다. 따라서 위의 수식은 정답에 가까울수록 작아지며 정답에서 멀어질수록 오차도 한없이 커진다는 뜻이다.

 

 

 

그렇기 때문에 교차 엔트로피의 장점은 출력값과 정답의 오차가 클 때 학습 속도가 빠르고 차이도 빠르게 줄어든다는 점이다. 코드로 구현해보자.

 

 

import numpy as np
import matplotlib.pyplot as plt

def cross_entropy(y, t):
    return -np.sum(t * np.log(y + 1e-7)) #log함수의 진수부분이 0이 되면 자연로그가 무한히 작게 
    #발산하기 때문에 이를 방지하기 위해 아주 작은 값을 더해준다.

 

 

 

 

 

 

 

경사 하강법

 

 

 

오차를 차례 차례 이전 층으로 전파시켜 가중치와 편향을 조금씩 수정하면서 최적하기 위해서 경사 하강법(gradient decent)라는 알고리즘을 이용한다.

 

먼저 경사 하강법의 개념기울기를 구하는 방법에 대해 알아보자. 미분을 많이 사용하기 때문에 딥러닝을 위한 수학을 한번 복습하고 와도 좋다. 

 

 

 

경사 하강법을 이용한 근사값 구하기

 

 

 

 

어떤 파라미터의 변화량에 대한 함수의 변화율 즉 기울기를 구해 이 기울기에 따라 파라미터를 조정하고 최적화하는 알고리즘을 경사법이라고 한다. 경사 하강법은 경사법의 한 종류로 결과가 y의 최솟값을 향해 내려가도록 파라미터를 변화시킨다.

 

 

 

경사 하강법

 

 

 

 

역전파에선 손실 함수로 구한 오차값을 기점으로 신경망의 반대 방향으로 가중치와 편향수정해 나가는데 이때 경사 하강법으로 오차가 줄어들도록 신경망의 가중치와 오차를 조정한다.

 

 

 

가중치 변화량과 편향 변화량은 곡선의 기울기로 결정된다. 신경망의 모든 가중치, 편향을 수정하기 위해 우선 오차의 기울기를 구하는 것이다. 위의 그림처럼 간단한 모양의 곡선만 있는 것은 아니다. 아래 그림처럼 국소적인 최소점에 빠져 더 이상 가중치 수정을 하지 못하고 최솟값에 도달하지 못하는 경우도 있다.

 

 

 

국소적인 최솟값

 

 

 

 

이러한 최솟값을 국소 최적해(local minima)라고 한다. 이에 반해 진짜 최솟값은 전역 최적해(global minima)라고 한다. 국소 최적해를 위해 다양한 조정이 필요한데, 역전파(2)에서 살펴보도록 하자.

 

 

경사 하강법으로 가중치와 편향을 수정할 때, w를 가중치, b를 편향, E를 오차, η(에타)를 학습률을 나타내는 상수라고 두면 편미분을 이용해 다음과 같은 수식으로 표현할 수 있다.

 

 

 

 

다음 역전파(2)에서는 각층의 기울기를 구하는 것부터 시작하겠다.

 

 

 

 

 

 

 

 

 

 

 

 

오늘은 역전파가 무엇이고, 배경과 역전파를 5개 개요, 손실 함수와 일부 경사 하강법에 대해 살펴보았다.

 

 

 

반응형