[딥러닝 Express] Chapter 08. 심층 신경망 - (1)

배규리·2024년 1월 23일

AI 기초

목록 보기
17/32
post-thumbnail

이제 본격적인 딥러닝인 DNN에 대해서 배워볼 것이다!

1. 심층 신경망

심층 신경망(DNN: Deep Neural Networks)는 MLP(다층 퍼셉트론)에서 은닉층의 개수를 증가시킨 것이다.

DNN이 혁신적인 기술처럼 등장한 이유는 MLP의 여러가지 문제(그래디언트 소실(Gradient Vanishing), 과잉 적합, ...)들을 효과적으로 해결하였기 때문이다.😯

MLP는 인간이 영상의 특징을 추출하여 신경망에 제공하였다.
반면에 DNN에서는 특징 추출 자체도 학습으로 수행할 수 있다.


2. 그래디언트 소실 문제

그래디언트 소실 문제는 심층 신경망에서 그래디언트가 전달되다가 점점 0에 가까워지는 현상이다.

범인은 시그모이드 활성화 함수이다!
시그모이드 함수의 특성상, 아주 큰 양수나 음수가 들어오면 출력이 포화되어서 거의 0이 된다.
그래디언트는 접선의 기울기인데, 약간 큰 양수나 약간 큰 음수가 시그모이드 함수에 들어오면 기울기가 거의 0이 된다.

얕은 신경망에서 시그모이드 함수를 사용하는 것은 문제되지 않겠지만, 은닉층이 많은 심층 신경망에서는 문제가 될 것이다ㅜㅜ

왜냐하면 그래디언트 값을 각 레이어로 역전파하여서 학습이 이루어지기 때문이다.

이 값이 너무 작아지면 가중치와 바이어스 값들이 효과적으로 업데이트되지 못한다.😅

이 문제를 해결해 준 것이 바로 ReLU 함수이다.
ReLU 함수는 max(x, 0)으로 정의할 수도 있다.

아래의 그림에서 볼 수 있듯이, 입력값이 양수일 경우, 입력값에 상관 없이 항상 동일한 미분 값은 1이다. 즉, 역전파 과정에서 기울기가 소실되는 문제를 해결할 수 있다.

더불어, ReLU 함수는 Simoid, tanh 함수처럼 특별한 연산이 필요 없이 단순히 임계값(0)에 따라 출력값이 결정되므로 연산 속도 또한 빠르다.


3. 손실 함수 선택 문제

평균 제곱 오차

"정답과 예측값 차이를 제곱하여 평균 낸 것"
정답과 예측값의 차이가 커지면 MSE도 커지므로 충분히 사용할 수 있는 손실함수이다.
회귀 문제에서 주로 사용되며, 분류 문제에서는 교차 엔트로피 함수의 성능이 더 뛰어나다고 한다.

교차 엔트로피 손실 함수

"실제 값(ti)과 모델의 예측값(yi)의 로그 값을 곱하여 모든 데이터에 대해 합산한 것"
이때, 실제값은 0또는 1의 이진값으로 표현되는 One-hot 벡터로 사용

아래와 같은 예제를 들 수 있다.

여기서 실제 출력을 확률 분포로 가정하였다.⭐
확률 분포로 만들기 위해서는 소프트맥스(softmax) 활성화 함수를 출력층의 활성화 함수로 사용하면 된다.

소프트맥스(softmax) 활성화 함수


4. 케라스에서의 손실 함수

이 부분에 대해서는 이전에 다루었던 적이 있다.
[딥러닝 Express] Chapter 07. MLP와 케라스 라이브러리 여기의 케라스 클래스들을 소개할 때 함께 다루었다!
읽어보길 바람 ㅎ_ㅎ👍


회귀 문제인 경우에는 손실함수로 평균 제곱 오차(MSE) 사용하기!
분류 문제인 경우에는 손실함수로 교차 엔트로피(Cross Entropy) 손실함수 사용하기!
대신 이때 출력층의 활성화함수는 Softmax 활성화 함수 사용해주기! 왜냐하면 출력층값이 확률 분포여야 하기 때문!

참고 자료
https://hong-zone17.tistory.com/76
https://dbrang.tistory.com/1537
https://gr-st-dev.tistory.com/410

profile
백엔드 개발은 취미인 AI 개발자🥹

0개의 댓글