ML & DL

딥러닝 신경망/활성화 함수/손실함수/경사하강법/오차역전파법

토오오끼 2021. 7. 23. 17:13
728x90
반응형

 

> 신경망 <

사람의 뇌에는 천억개 가까운 신경계 뉴런들이 있다.

이들은 서로 복잡하게 얽혀 있으며 하나의 거대한 그물망과 같은 형태를 이루고 있어 보통 이를 신경망이라고 부른다.

 

머신러닝/딥러닝에서도 사람의 뇌 속의 신경망 구조에 착안해 퍼셉트론(Perceptron)이라는 형태를 제안했고 이를 연결한 형태를 인공신경망(Artificial Neural Network)이라고 불렀다.

 


> 다층 퍼셉트론 <

AIFFEL

입력값이 있는 입력층(input layer), 최종 결과값이 있는 출력층(output layer), 이 두 층 사이에 있는 은닉층(hidden layer)으로 총 3개의 레이어로 구성된 퍼셉트론을 나타낸 이미지이며, 은닉층에는 H개의 노드, 출력층에는 K개의 노드가 존재하는 인공신경망이다.

그림으로 인공신경망을 표현할 땐 노드를 기준으로 레이어를 표시하기 때문에 3개의 레이어라고 할 수 있지만 실제 인공신경망은 2개의 레이어를 가지고 있는 것이다. 

위의 그림처럼 2개 이상의 레이어를 쌓은 것을 다층 퍼셉트론(Multi-Layer Perceptron, MLP)이라고 부른다.

 

- Parameters / Weights

입력층-은닉층, 은닉층-출력층 사이에는 각 행렬이 존재한다. 

입력값이 100개, 은닉 노드가 20개면 입력층-은닉층 사이에 100x20 형태의 행렬이 존재하게 된다.

이러한 행렬들을 Parameter 또는 Weights라고 한다.

 


> 활성화 함수 (Activation Functions) <

수학적 이유 + 모델의 표현력 때문에 딥러닝에서 활성화 함수의 존재는 필수적이다.

활성화 함수는 보통 비선형 함수를 사용하는데 이를 MLP에 포함시키면서 모델의 표현력이 좋아진다.

활성화 함수의 종류에는 Sigmoid, Tanh, ReLu가 있다.

 

- Sigmoid

https://reniew.github.io/12/

이전부터 활성화 함수로써 많이 사용되어 온 sigmoid 함수는 입력값들을 0 ~ 1 사이의 값으로 바꾸어 준다.

 

- Tanh

https://reniew.github.io/12/

tanh 함수는 함수의 중심값을 0으로 옮겨 sigmoid의 최적화 과정이 느려지는 문제를 해결 해 준다.

 

- ReLu

https://reniew.github.io/12/

위의 두 함수에 비해 ReLu는 학습이 빠르며 연산 비용이 적고 구현이 매우 간단하다.

 


> 손실함수 <

비선형 활성화 함수를 가진 여러 개의 은닉층을 거친 후 다음 신호 정보들은 출력층으로 전달된다.

원하는 정답과 전달된 신호 정보들의 차이를 계산하여 이 차이를 줄이기 위해 조정하는 것이 딥러닝의 전체적인 학습 흐름이다.

이 차이를 구하는데 사용되는 손실함수는 비용함수라고도 한다.

손실함수의 종류에는 평균제곱오차, 교차 엔트로피가 있다.

 

-평균제곱오차

실제 데이터와 예측 데이터 편차의 제곱의 합이었던 오차 제곱 합(SSE)을 데이터의 크기로 나누어 평균으로 만든 것이다. 

 

- 교차 엔트로피 (Cross Entropy)

교차 엔트로피는 두 확률 분포 사이의 유사도가 클수록 작아지는 값이다. 

 


> 경사하강법 <

위에서의 오차를 줄이기 위해 경사하강법을 사용한다. 

쉽게 말해 각 단계에서 기울기를 구해 기울기가 가리키는 방향으로 이동하는 방법이다.

학습률이라는 개념을 사용하여 기울기 값과 학습률을 곱한 값만큼 이동한다.

파라미터 값들을 어떻게 초기화하는지의 문제와 간련하여 이동하는 속도도 관련이 있다.

 

-가중치 초기화

딥러닝에서 가중치를 잘못 설정하면 기울기 소실, 표현력의 한계와 같은 문제를 야기하기 때문에 초기 가중치 초기화 설정은 매우 중요하다. 

가중치를 초기화하는 방법은 LeCun Initialization, Xavier Initialization, He Initialization가 있다.

이 3가지에 대한 자세한 설명은 아래 링크로 대신한다

https://reniew.github.io/13/

 

가중치 초기화 (Weight Initialization)

An Ed edition

reniew.github.io

 


> 오차역전파법 <

위에서 구한 기울기를 입력층에 전달하여 파라미터들을 조정하기 위해서는 오차역전파법을 사용한다.

이는 MLP를 학습시키이 위해 사용하는 일반적인 알고리즘 중 하나이다.

AIFFEL

오차역전파법은 출력층의 결과와 원하는 타겟의 값과의 차이를 구하여 그 오차 값을 각 레이어들을 지나며 역전파 해서 각 노드가 가진 변수들을 갱신하는 방법이다.

 


 

728x90
반응형