본문 바로가기
AI/Deep Learning

Deep Neural Network (DNN)

by 알푼 2023. 5. 17.
728x90
728x90

Deep Neural Network (DNN)


DNN은 MLP에서 다소 확장된 개념으로 다수의 hidden layer를 가지고 있는 인공신경망이다. 즉, DNN에서 “Deep”은 hidden layer가 많다는 의미이다. Layer수가 많아지면서 데이터의 feature(특징)를 더 잘 추출할 수 있다. 아래 그림에서 각 원은 노드(Node)라고 부르는데, Input Node는 Input data의 변수의 수가 되며 Hidden Layer와 Node는 사용자가 지정해야 할 Hyperparameter, 그리고 Output Node의 수는 풀고자 하는 문제에 따라 달라진다. 예를 들어 숫자를 구분하는 문제라면 0~9까지 총 10개로 구분 가능하므로 Output Node의 수는 10이 된다.

MPL 소개 : https://ai-onespoon.tistory.com/entry/Deep-Neural-Network-DNN

 

퍼셉트론(perceptron)과 Multilayer Perceptron(MLP)

퍼셉트론 (perceptron) 퍼셉트론이란? 퍼셉트론은 Frank Rosenblatt가 1957년에 고안한 알고리즘이다. 다수의 신호를 입력받아 하나의 신호를 출력하는 feedforward 형태의 네트워크로 선형분류기로도 볼 수

ai-onespoon.tistory.com

 

소프트맥스(Softmax)


일반적으로 출력층에서 activation function은 softmax 함수를 사용한다. MLP로 구성된 신경망에서 추출한 output이 아래와 같을 때, z2의 결과만 보면 0.73으로 상당히 높은 수치를 가진다. 따라서 y가 z2라고 판단할 수 있지만 모든 결과 값을 확인 한다면 z1이 0.95로 더 좋은 값임을 알 수 있다. 따라서 output을 판단할 때 확률 개념이 판단하기 더 좋으며, softmax 함수는 다음과 같이 정의 한다. $\cfrac{e^{zi}}{\sum{e^{zj}}}$ (참고로 softmax 함수는 확률처럼 보이게 해 주는 것이지, 수학적으로 확률은 아니다.) 이러한 특성으로 인하여 소프트맥스 함수의 출력 총 합은 1이 된다.

 

Overflow


Overflow는 컴퓨터가 표현하지 못하는 수가 나타나는 경우를 말한다. 컴퓨터는 수를 8비트나 16비트 등으로 크기를 정해 놓고 다루기 때문에 이 범위를 넘어 설 때 overflow가 발생한다. 소프트맥스 함수는 지수 함수를 사용하기 때문에 $e^{x}$에서 $x$값이 커지면 무한대를 향해 간다. 그리고 이렇게 커진 값끼리 나눗셈을 하면 수치가 불안정해진다.

a = np.array([1010, 1000, 990])
print(np.exp(a) / np.sum(np.exp(a)))
# 결과 값
[nan nan nan]

Overflow를 막기 위해서 일반적으로 입력 신호 중 최대값을 이용한다. 소프트맥스 수식에 분자와 분모에 각각 임의의 상수, 여기는 입력 신호 중 최대값을 빼주어 조치한다.

c = np.max(a)
print(np.exp(a-c) / np.sum(np.exp(a-c)))
# 결과 값
[9.99954600e-01 4.53978686e-05 2.06106005e-09]

 

참고 :

[1] 도서 : 파이썬 딥러닝 파이토치, 정보문화사, 이경택 외

[2] 도서 : Deep Learning from Scratch, 한빛미디어, 사이토 고키

[2] 유튜브 : 오승상 딥러닝

 

728x90
반응형

'AI > Deep Learning' 카테고리의 다른 글

PSNR과 SSIM 설명  (1) 2024.02.06
AutoEncoder(AE)  (0) 2023.08.25
퍼셉트론(perceptron)과 Multilayer Perceptron(MLP)  (0) 2023.05.16

댓글