Study/AI

[AI][Deep learning]오차 역전파

seomj 2021. 1. 28. 23:57

퍼셉트론

뉴런(neuron) / 출처 : wikipedia
퍼셉트론(perceptron)

신경망을 이루는 가장 중요한 기본 단위

입력 값과 활성화 함수를 사용해 출력 값을 다음으로 넘기는 가장 작은 신경망 단위

 

두뇌의 신경세포인 뉴런이 연결된 형태를 모방한 모델을 신경망이라고 함

-> 즉 하나의 뉴런이 하나의 퍼셉트론을 의미하며 여러 퍼셉트론이 연결된 형태를 신경망이라고 함

 

 

단일 퍼셉트론의 한계

 

단일 퍼셉트론

단일 퍼셉트론 : 입력층과 출력층으로 이루어짐

 

단일 퍼셉트론의 한계의 예로 논리회로 문제가 존재

 

출처 : http://ecee.colorado.edu/~ecen4831/lectures/NNet3.html

and와 or은 하나의 직선으로 문제 해결 가능

xor은 하나의 직선으로 문제 해결 불가능

 

 

출처 : https://analysisbugs.tistory.com/50

이를 해결하기 위해 차원을 늘려 평면으로 문제를 해결하게 됨

-> 퍼셉트론에 적용

 

다층 퍼셉트론의 등장

다층 퍼셉트론

다층 퍼셉트론 : 입력층과 출력층 사이에 은닉층이 존재

 

BUT!

퍼셉트론을 여러 층으로 쌓을수록 학습하기가 어려운 문제가 발생

-> 역전파 알고리즘을 제안

 

 

 

오차 역전파

오차 역전파 과정

순전파 알고리즘에서 발생한 오차를 최소화 하기 위해 가중치와 바이어스를 계산하여 업데이트하고, 다시 학습하는 과정을 역전파 알고리즘, 오차 역전파라고 함

 

이는 경사하강법을 이용하여 앞 가중치를 오차가 작아지는 방향으로 업데이트함

 

가중치 값이 변화함에 따라 오차 값이 얼마만큼 변하는지를 알아야 함

 

α : 학습률 (이동하는 정도)

(∂E_total)/∂w : 오차 값을 가중치에 대해 편미분 (가중치 값이 변화함에 따라 오차 값이 얼마만큼 변하는지)

 

원래 가중치인 w(t)에서 빼면 새로운 가중치 w(t+1)를 구할 수 있음

 

 

오차 역전파 계산

 

사진의 신경망을 사용하여 가중치를 업데이트 해볼 것이다

 

 

w5 업데이트

w5 업데이트 식

w5는 0.35로 값을 알고 있으니 E_totalw5에 대해 편미분을 해주어야 함

 

그러나 w5를 미분해줄 수 없음

-> 체인 룰(합성합수) 이용

 

해당 값을 계산하면 됨

 

그렇다면 net과 out은 무엇인가

(앞에 계산과정을 생략하여 하는 설명입니다..)

 

net은 가중합을 구하는 과정

out은 활성화 함수

-> 활성화 함수로 시그모이드 함수를 이용 (미분하기 편리)

 

 

그렇다면 본격적으로 계산을 시작해보겠습니다.

첫 번째 항 : E_total을 out_o1에 대해 편미분

 

 

두 번째 항 : out_o1을 net_o1에 대해 편미분

 

아까 그림을 다시 보면 neto1에서 시그모이드 함수를 통해 outo1을 구함

-> 시그모이드 함수를 미분한 값이 해당 값이 됨

 

 

 

세 번째 항 : net_o1을 w5에 대해 편미분

 

뒤에 있는 1은 바이어스 값

시그모이드 함수가 가장 안정된 예측을 하게 하는 바이어스 값이 1이기 때문에 1로 설정

 

 

최종 계산

 

학습률은 임의로 0.5로 설정

이렇게 가중치 w5가 0.35에서 0.3143으로 업데이트가 되었다.

 

w6, w7, w8도 같은 방식으로 계산하여 업데이트하면 된다.

 

 

여기서 문제는 은닉층의 가중치 계산은 이와 좀 차이가 있다.

 

고로 w1도 업데이트를 한번 진행하겠다.

 

 

w1 업데이트

w1 업데이트 식

은닉층의 오차가 아닌 출력층의 오차인 E_totalw1에 대해 편미분

-> 은닉층의 값은 겉으로 드러나지 않아 알 수가 없기 때문

 

이 또한 체인 룰을 적용

 

이제 본격적으로 계산을 시작

두 번째 항과 세 번째 항은 아까와 동일한 방식

 

두 번째 항
세 번째 항

 

첫 번째 항을 유심히 볼 필요가 있다

 

바로 편미분이 불가능

-> 계산이 쉬워질 때까지 분해

 

 

최종 계산

 

학습률은 동일하게 임의로 0.5 설정

이렇게 가중치 w1이 0.15에서 0.1499로 업데이트가 되었다.

 

w2, w3, w4도 같은 방식으로 계산하여 업데이트하면 된다.

 

 

가중치들은 모두 계산하여 한번에 업데이트를 하게 된다.

이를 여러번 반복하여 가중치들은 계속 업데이트 된다.

 

 

 

참고 : bskyvision.com/718

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

[AI][ML]데이터 스케일링  (0) 2022.07.20
로지스틱 회귀  (0) 2022.06.04
[AI]작업 흐름  (0) 2021.02.09
[AI][Deep learning]행렬의 내적(행렬 곱)  (0) 2021.02.06
[AI][Machine learning]생활코딩 Machine learning 1 정리  (0) 2020.12.29