📍목차
1. 역전파 알고리즘이란?
- 순전파
- 역전파
- 신경망 학습 과정
2. 경사 하강법이란?
- 최적화 과정
- 수식 유도
- 한계점
1. 역전파 알고리즘이란?
1.1 순전파(Forward Propagation)
순전파는 입력층에서 입력된 신호가 은닉층의 연산을 거쳐서 출력층에 값을 내보내는 과정.
1. 입력층으로부터 데이터를 입력받음
2. 입력된 데이터를 가중치 및 편향과 연산한 뒤에 더해준다
3. 가중합을 통해 구해진 값은 활성화 함수를 통해 다음 층으로 전달된다
1.2 역전파(Backpropagation) 알고리즘
역전파란 역방향으로(출력층-> 입력층) 오차를 전파시키면서 각 층의 가중치를 업데이트하고 최적의 학습 결과를 찾아가는 방법이다.
출력값에 대한 입력값의 기울기(미분값)을 출력층 layer에서부터 계산하여 거꾸로 전파시키는 것이다.
출력값과 정답의 차이를 줄이기 위해 손실함수를 이용해서 가중치를 업데이트 하는 알고리즘으로 경사 하강법은 이 가중치를 어떤 식으로 업데이트할지 결정한다.
1.3 신경망 학습 과정
- 입력층에 데이터가 입력되면 신경망의 각 레이어에서 연산을 수행 (연산 : 가중치, 활성화 함수의 연산)
- 모든 레이어에서 위의 과정이 이루어진 뒤 출력층에 결과를 출력
- 출력층의 결과(예측값)와 실제값(정답)의 차이를 손실 함수를 이용해서 계산
- 오차(예측값과 정답의 차이)를 줄이기 위해 경사하강법과 역전파를 이용해 가중치를 갱신
- 이를 여러차례 반복하여 최적의 결과를 만들어냄
2. 경사 하강법이란?
앞에서 오차가 역전파되는 것을 보았는데 오차를 역전파하여 계속 업데이트하는 이유는 신경망을 통해 더 나은 결과값을 내기 위해서 weight를 조정하는데 오차가 영향을 주기 때문이다. 간단한 신경망이라면 오차를 계산하는 식은 간단하겠지만 효과적인 신경망은 절대 간단하지 않다. 수백,수만개의 노드가 연결되어서 수많은 가중치의 조합으로 특정 노드의 weight를 계산해야 한다면 효율적인 방법이 필요할 것이다.
경사하강법은 많은 신경망 안의 가중치 조합을 효율적으로 계산하기 위해 고안된 방법이다.
경사하강법(Gradient Descent)이란 최적화 방법 중 하나로 예측값과 정답값 간의 차이인 손실함수의 크기를 최소화시키는 파라미터를 찾는 방법이다.
- 현재 위치의 기울기가 음수라면 파라미터를 증가시키면 최솟값을 찾을 수 있음
- 기울기가 양수라면 파라미터를 감소시키면 최솟값을 찾을 수 있음
2.1 최적화 과정
모델 가중치의 파라미터를 업데이트하는 과정은 다음과 같다
- 현재 지점의 gradient(기울기)를 구하여 이동할 방향을 정한다
- 한번 이동할때마다 얼마나 이동할 것인지 step size를 정하여 학습률(learning rate)을 곱해서 그만큼 이동한다
- 최적의 해를 찾을 때까지 위의 과정을 반복한다
학습률(learning rate) 란?
학습을 진행할 때 각각의 가중치를 얼마나 업데이트할지 (한번에 얼마나 이동할 것인지) 결정하는 하이퍼파리미터.
아래 그림과 같이 작은 learning rate는 최적화되기까지 시간이 오래걸리며 local minimum에 빠질 수 있음.
큰 learning rate는 수렴이 아닌 발산을 할 수도 있음.
2.2 수식 유도
위의 그래프로 설명을 해보겠다.
현재 지점에서 기울기를 구한 뒤 기울기가 양수인지 음수인지 판단하고, 얼마큼 이동할 것인가를 정하는 것이 경사 하강법의 수식이다.
기울기가 음수일 때는 양의 방향으로, 양수일 경우에는 음의 방향으로 이동하면 함수의 극소점을 찾을 수 있다.
최종 수식은 다음과 같다. ( α : step size )
2.3 한계점
경사 하강법의 한계점은 local minimum에 빠지기 쉬운 것이다.
위의 그림처럼 전역 최솟값(global minimum)을 찾아야하는데 어떤 이유로 인해 지역 최솟값(local minimum)에 빠지는 경우 탈출하지 못하고 해당 위치로 수렴할 가능성이 존재한다.
local minimum에서 탈출하기 위한 방법으로 momantum 등 여러 방법이 존재하는데 다음 포스팅에서 다루겠다.
출처 및 참고
- https://velog.io/@ssu_hyun/N412.-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95%EA%B3%BC-%EC%97%AD%EC%A0%84%ED%8C%8C-%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
- https://hi-guten-tag.tistory.com/205
- https://da-journal.tistory.com/entry/n412-%EC%97%AD%EC%A0%84%ED%8C%8C-%EA%B2%BD%EC%82%AC%ED%95%98%EA%B0%95%EB%B2%95-%EC%98%B5%ED%8B%B0%EB%A7%88%EC%9D%B4%EC%A0%80
'DL\ML > 기본개념' 카테고리의 다른 글
[DL/기본개념] 옵티마이저(Optimizer) 종류 (0) | 2024.02.18 |
---|---|
[DL/기본개념] 손실함수(Loss Function) 개념 및 종류 (0) | 2024.02.06 |
[DL/기본개념] 활성화 함수(Activation Function) 개념 및 종류 (0) | 2024.02.05 |
[DL/기본개념] 퍼셉트론(Perceptron) 개념 (0) | 2024.02.05 |