Theory/Deep Learning

03 퍼셉트론 / 다층 퍼셉트론 / 오차 역전파 / 활성화 함수 / 고급 경사 하강법

Orangetasteboy 2023. 7. 1. 19:14

퍼셉트론

인공 신경망(Aritificial Neural Network, ANN)의 구성 요소로서 다수의 값을 입력받아 하나의 값으로 출력하는 알고리즘

2차원 평면상에 직선을 긋는 것만 가능

 

 

XOR 문제

XOR의 경우에는 직선을 그어 구분 불가

다층 퍼셉트론과 오차 역전파로 문제 해결 가능

 

 

다층 퍼셉트론

평면을 휘어서 XOR 문제 해결

다시 말하면, 퍼셉트론 2개를 한 번에 계산

퍼셉트론 2개를 각각 처리하는 은닉층(Hidden Layer) 추가

 

  1. 각 입력 값 x에 가중치 w를 곱하고 바이어스 b를 더해 은닉층으로 전달
  2. 은닉층에 취합된 값들은 활성화 함수를 통해 결과값이 출력층으로 전달
  3. 출력층으로 전달된 값은 활성화 함수를 통해 y 예측값 정함.

 

은닉층에 들어있는 가중치를 데이터를 통해 학습하는 방법 필요

은닉층에 포함된 가중치 업데이트 방법 필요

오차 역전파 사용

 

 

오차 역전파

데이터를 통해 스스로 가중치를 조절하는 학습을 가능하게 함.

은닉층의 가중치를 업데이트할 수 있는 방법

 

은닉층이 생기면서 한 번 이상의 경사 하강법 필요

 

  1. 한 번의 순전파를 통해 각 가중치의 초기값 설정
  2. 초기값의 가중치로 만들어진 값과 실제값을 비교해 출력층의 오차 계산
  3. 가중치들을 수정

 

은닉층은 겉으로 드러나지 않으므로 그 값을 알 수 없음.

오차를 구할만한 적절한 출력값도 없음.

 

출력층의 오차를 이용하여 해결

이를 이용해 깊은 층의 계산 또한 가능

깊은 층을 통해 학습 가능

 

 

활성화 함수

깊은 층을 만들면 출력층에서 시작된 가중치 업데이트가 처음 층까지 전달되지 않는 문제 발생

활성화 함수로 사용된 시그모이드 함수의 특성 때문

시그모이드 함수는 미분하면 1보다 작고 계속 미분할 경우 0에 가까워짐.

 

다른 활성화 함수를 사용하여 문제 해결

 

고급 경사 하강법

경사 하강법은 정확하게 가중치를 찾아가지만, 계산량이 매우 많은 단점 존재

 

확률적 경사 하강법

한 번 업테이트할 때마다 전체 데이터를 미분하므로 속도가 느릴 뿐 아니라, 최적 해를 찾기 전에 최적화 과정이 멈출 수 있는 경사 하강법의 단점을 보완하는 방법

 

랜덤하게 추출한 일부 데이터만 사용

빠르고 더 자주 업데이트 가능

 

모멘텀 확률적 경사 하강법

경사 하강법에 탄력을 더해 주는 방법

매번 기울기를 구하지만, 이를 통해 오차를 수정하기 전 바로 앞 수정 값과 방향(+, -)을 참고해 같은 방향으로 일정한 비율만 수정

 

수정 방향이 지그재그로 일어나는 현상이 줄고, 이전 이동 값을 고려해 일정 비율만큼 다음 값을 결정하므로 관성 효과 발생

 

아담(Adam)

정확도와 속도를 모두 향상시킨 고급 경사 하강법

현재 가장 많이 사용