본문 바로가기
AI/Deep-Learning

DNN(Digital Neural Network) 용어 정리

by Wikinist 2023. 9. 11.

DNN(Digital Neural Network)은 딥러닝의 한 유형으로, 인공신경망을 사용하여 복잡한 문제를 해결하는 데 사용됩니다. DNN은 여러 종류의 레이어로 구성되며, 여기에는 FFNN(Feedforward Neural Network), FC(Fully Connected), 그리고 Dense Layer가 포함됩니다. 이들에 대한 간단한 설명은 다음과 같습니다:

FFNN(Feedforward Neural Network)

FFNN은 가장 기본적인 딥러닝 아키텍처 중 하나이며, 정보가 한 방향으로만 흐르는 feedforward 구조를 갖습니다.
입력 레이어, 은닉 레이어, 출력 레이어로 구성됩니다.
각 레이어는 노드(뉴런)로 구성되며, 이러한 노드 간에는 가중치(weight)와 활성화 함수(activation function)를 통해 정보 전달이 이루어집니다.
FFNN은 주로 분류 및 회귀 문제를 해결하는 데 사용되며, 이미지 분류, 자연어 처리, 음성 인식 등 다양한 분야에서 적용됩니다.

FC(Fully Connected) 또는 Dense Layer

FC 레이어는 FFNN의 일부로 사용되며, 모든 노드(뉴런)가 이전 레이어의 모든 노드와 연결되는 특징을 가집니다.
이것은 각 입력 뉴런과 출력 뉴런 간의 가중치로 연결된다는 의미입니다.
Dense 레이어는 네트워크에서 정보 전달 및 특징 추출을 위한 핵심적인 역할을 합니다.
각 노드는 입력 값과 가중치를 곱한 다음 활성화 함수를 통과시켜 출력을 생성합니다.
요약하면, FFNN은 DNN의 한 종류로, FC 레이어 또는 Dense 레이어를 포함하며, 이러한 레이어는 뉴런 간의 가중치 연결과 활성화 함수를 사용하여 입력 데이터에서 유용한 특징을 추출하고 복잡한 문제를 해결하는 데 사용됩니다. 이러한 레이어는 딥러닝 모델의 핵심 구성 요소 중 하나이며 다양한 응용 분야에서 효과적으로 활용됩니다.

활성화 함수(Activation Function)

활성화 함수(Activation Function)은 인공 신경망의 각 뉴런(노드)에서 입력 신호의 가중치 합을 계산한 후 출력 값을 생성하는 함수입니다. 활성화 함수는 뉴런의 출력을 결정하고 네트워크가 복잡한 함수를 모델링할 수 있도록 합니다. 다음은 몇 가지 일반적인 활성화 함수와 각각의 역할에 대한 설명입니다:

시그모이드 함수 (Sigmoid Function)

S자 형태의 곡선을 갖는 활성화 함수로, 주로 이진 분류 문제에서 사용됩니다.
입력을 0과 1 사이의 값으로 압축하여 출력합니다.
그러나 시그모이드 함수는 그레이디언트 소실 문제로 인해 깊은 신경망에서는 잘 동작하지 않을 수 있습니다.

하이퍼볼릭 탄젠트 함수 (Hyperbolic Tangent Function, Tanh)

시그모이드와 유사한 S자 형태의 곡선을 가지며, 출력 범위는 -1에서 1까지입니다.
시그모이드와 마찬가지로 그레디언트 소실 문제가 있을 수 있습니다.

렐루 함수 (Rectified Linear Unit, ReLU)

가장 널리 사용되는 활성화 함수 중 하나로, 입력이 양수인 경우에는 그 값을 그대로 출력하고, 음수인 경우에는 0으로 출력합니다.
계산이 효율적이고, 그레디언트 소실 문제를 완화시켜줍니다.
그러나 입력이 음수인 경우에는 해당 뉴런이 죽을 수 있는 문제가 있습니다.

리키 렐루 함수 (Leaky ReLU)

ReLU의 변형 중 하나로, 입력이 음수인 경우에도 작은 양의 기울기를 가집니다.
ReLU의 죽음 문제를 해결하기 위해 도입되었습니다.

소프트맥스 함수 (Softmax Function)

다중 클래스 분류 문제에서 주로 사용되며, 출력 벡터의 합을 1로 정규화합니다.
입력된 값 중 가장 큰 값에 대응하는 클래스를 선택합니다.

다양한 활성화 함수

이 외에도 다양한 활성화 함수가 존재하며, 각각의 특징과 사용 사례에 따라 선택됩니다. 예를 들어, PReLU(Parametric ReLU), ELU(Exponential Linear Unit), SELU(Scaled Exponential Linear Unit) 등이 있습니다.

활성화 함수는 신경망의 성능과 수렴 속도에 큰 영향을 미치므로, 문제의 특성과 네트워크 아키텍처에 맞게 선택하는 것이 중요합니다.

활성화 함수의 특징

활성화 함수(Activation Function)는 인공 신경망에서 매우 중요한 역할을 하는데, 각각의 활성화 함수는 다양한 특징과 역할을 갖고 있습니다. 이러한 특징들은 활성화 함수를 선택할 때 고려해야 합니다. 다음은 주요 활성화 함수의 특징에 대한 설명입니다:

비선형성 (Non-linearity)

활성화 함수는 비선형 함수여야 합니다. 왜냐하면 신경망에서 모든 뉴런이 선형 함수로 연결된다면 전체 네트워크는 단일 선형 변환으로 표현될 것이며, 비선형 문제를 해결할 수 없게 됩니다. 따라서 활성화 함수는 입력과 출력 간의 비선형 관계를 도입하여 신경망이 복잡한 패턴을 학습할 수 있도록 합니다.

복잡한 함수 근사(Approximating Complex Functions)

활성화 함수는 네트워크가 복잡한 입력-출력 매핑을 근사하도록 돕습니다. 비선형 활성화 함수를 사용하지 않으면 모든 층의 선형 결합만 구성되므로 네트워크의 표현력이 제한될 것입니다. 활성화 함수는 다양한 종류의 함수를 모델링할 수 있게 합니다.

그레디언트 (Gradient) 전파

활성화 함수는 미분 가능해야 하며, 그레디언트(기울기)를 계산할 수 있어야 합니다. 이는 역전파(backpropagation) 알고리즘을 사용하여 가중치를 조정하고 신경망을 훈련시키는 데 필요합니다.

효율적인 계산

활성화 함수는 계산이 효율적이어야 합니다. 빠른 연산이 중요하며, GPU 또는 TPU와 같은 병렬 처리 장치에서도 효과적으로 실행되어야 합니다.

그레디언트 소실 문제 해결

일부 활성화 함수(예: 시그모이드)는 네트워크의 깊이가 깊어질 때 그레디언트 소실 문제를 유발할 수 있습니다. 이런 문제를 완화하기 위해 ReLU와 같은 활성화 함수가 도입되었습니다.

죽은 뉴런(Dead Neurons) 방지

일부 활성화 함수(ReLU 등)는 입력이 음수인 경우 해당 뉴런이 항상 0을 출력하여 죽을 수 있는 문제가 있습니다. 이를 해결하기 위해 Leaky ReLU와 같은 변형이 개발되었습니다.

클래스 확률 분포(softmax)

다중 클래스 분류 문제에서 사용되는 softmax 함수는 출력을 클래스 확률 분포로 정규화합니다. 이것은 다중 클래스 분류 문제에서 유용합니다.

적합한 문제에 따른 선택

어떤 활성화 함수를 선택할지는 풀고자 하는 문제에 따라 다릅니다. 예를 들어, 시그모이드 함수는 이진 분류 문제에 적합하며, ReLU는 대부분의 경우에서 잘 동작합니다.
최적의 활성화 함수는 문제의 특성과 신경망 아키텍처에 따라 달라집니다. 실험을 통해 가장 적합한 활성화 함수를 찾아내는 것이 중요합니다.

역전파(Backpropagation)

역전파(Backpropagation)는 인공 신경망(Deep Neural Network, DNN)에서 가중치(weight) 및 편향(bias)을 효과적으로 조정하여 네트워크를 훈련시키는 기술입니다. 역전파는 기울기 하강법(Gradient Descent) 알고리즘과 함께 사용되며, 네트워크의 출력과 실제 정답 간의 오차를 최소화하고 모델을 최적화하는 데 사용됩니다. 아래는 역전파의 주요 개념과 작동 방식에 대한 설명입니다:

순전파 (Forward Pass)

훈련 데이터를 입력으로 주고, 네트워크는 순전파 단계에서 입력부터 출력까지의 정보 전달 과정을 수행합니다.
각 레이어에서는 입력 데이터와 해당 레이어의 가중치(weight)를 사용하여 가중합을 계산하고, 그 결과를 활성화 함수(activation function)에 적용하여 출력을 생성합니다.
이렇게 순전파를 통해 예측값(네트워크의 출력)이 생성됩니다.

손실 함수 (Loss Function)

순전파로 얻은 예측값과 실제 정답(레이블)을 비교하기 위해 손실 함수를 사용합니다. 손실 함수는 예측값과 실제 값 간의 차이를 계산하여 오차를 측정하는 역할을 합니다.

역전파 (Backward Pass)

역전파 단계에서는 손실 함수의 그레디언트(기울기)를 계산합니다. 이 그레디언트는 손실 함수를 각 가중치와 편향에 대해 편미분한 결과입니다.
역전파는 출력 레이어에서 시작하여 입력 레이어로 거꾸로 진행합니다.
각 레이어에서는 그레디언트를 사용하여 해당 레이어의 가중치와 편향을 업데이트하기 위한 정보를 계산합니다.
이 과정은 체인 규칙(Chain Rule)을 사용하여 진행됩니다.

가중치 및 편향 업데이트

역전파로 얻은 그레디언트를 사용하여 가중치와 편향을 조정합니다. 일반적으로 경사하강법(Gradient Descent) 또는 그 변종(Adam, RMSProp 등)을 사용하여 최적화합니다.
가중치와 편향은 손실을 최소화하도록 업데이트됩니다.

반복

위의 단계(순전파, 손실 계산, 역전파, 가중치 업데이트)를 여러 번 반복하여 네트워크를 훈련시킵니다. 전체 데이터셋을 여러 에포크(epoch) 동안 반복하면서 가중치를 개선시킵니다.

수렴

훈련이 진행되면서 손실이 감소하고 모델의 예측 성능이 향상됩니다. 훈련이 수렴될 때까지 반복을 진행합니다.

역전파 알고리즘은 기울기(Gradient)를 계산하고 이를 사용하여 가중치와 바이어스를 업데이트합니다. 이때 실제로 수치 미분을 사용하지 않고, 오차를 통해 미분 값을 계산하는 효율적인 방법을 사용합니다. 역전파 알고리즘은 신경망의 각 레이어에서 오차의 기울기를 계산하고, 이를 이용하여 역순으로 레이어를 거슬러가며 가중치와 바이어스를 조정합니다.

수치 미분은 미분 가능한 함수의 값을 근사적으로 계산하는 방법으로, 계산 비용이 매우 높고 정확도가 낮기 때문에 역전파 알고리즘과 비교할 때 효율적이지 않습니다. 따라서 역전파 알고리즘이 보다 일반적이고 신경망 학습에서 더 효율적으로 사용되는 방법입니다.

옵티마이저(optimizer)

옵티마이저(optimizer)는 기계 학습 및 딥러닝에서 사용되는 학습 알고리즘 중 하나로, 모델의 가중치와 편향을 조정하여 손실 함수를 최소화하려는 목표를 달성하는 데 사용됩니다. 옵티마이저는 학습 속도, 수렴 속도, 안정성 및 최적화의 품질을 향상시키기 위한 다양한 기술을 제공합니다. 다양한 종류의 옵티마이저가 존재하며, 각각의 특징과 장단점이 있습니다. 몇 가지 주요 옵티마이저에 대한 설명은 다음과 같습니다.

경사하강법 (Gradient Descent)

경사하강법은 가장 기본적인 옵티마이저 중 하나로, 손실 함수의 그레디언트(기울기)를 사용하여 가중치와 편향을 업데이트합니다.
학습률(learning rate)라고 불리는 하이퍼파라미터를 사용하여 그레디언트 크기에 따른 가중치 조정을 제어합니다.
경사하강법은 안정적이고 간단하지만, 빠르게 수렴하지 못하는 경우가 있습니다.

확률적 경사하강법 (Stochastic Gradient Descent, SGD)

확률적 경사하강법은 경사하강법의 변형으로, 각 학습 반복에서 무작위로 선택한 하나의 데이터 포인트에 대한 그레디언트를 계산하여 업데이트합니다.
빠른 수렴과 미니배치 학습을 지원하며, 대규모 데이터셋에서 효율적으로 작동합니다.

미니배치 경사하강법 (Mini-batch Gradient Descent)

미니배치 경사하강법은 전체 데이터셋을 사용하는 것이 아니라 작은 미니배치를 사용하여 그레디언트를 계산하고 가중치를 업데이트합니다.
이로 인해 효율적인 수렴과 병렬 처리가 가능하며, 대부분의 딥러닝 모델에서 사용됩니다.

Adam (Adaptive Moment Estimation)

Adam은 적응적 학습률을 사용하는 최적화 알고리즘으로, 경사의 모멘트(moment)를 고려하여 학습률을 조정합니다.
Adam은 수렴 속도가 빠르고 안정적이며, 다양한 신경망 아키텍처에서 잘 작동합니다.

RMSProp (Root Mean Square Propagation)

RMSProp은 그레디언트 크기의 제곱에 대한 이동 평균을 사용하여 학습률을 조절합니다.
RMSProp은 주로 RNN(순환 신경망)과 같은 순차 데이터 처리에 사용되며, 학습률을 적응적으로 조절하여 수렴을 도와줍니다.

Adagrad (Adaptive Gradient Descent)

Adagrad는 각 파라미터에 대한 학습률을 개별적으로 조절하며, 빈번하게 나타나는 그레디언트를 작은 학습률로 처리하고 드물게 나타나는 그레디언트를 큰 학습률로 처리합니다.
Adagrad는 간단하고 효과적이지만, 학습률이 너무 작아져서 수렴이 느릴 수 있는 단점이 있습니다.

각각의 옵티마이저는 모델과 데이터에 따라 다르게 작동하며, 실험을 통해 가장 적합한 옵티마이저를 선택하는 것이 중요합니다. 옵티마이저의 선택은 학습의 효율성과 모델의 성능에 큰 영향을 미칩니다.

과적합(Overfitting)

과적합(Overfitting)은 기계 학습 및 딥러닝 모델에서 주요한 문제 중 하나입니다. 과적합은 모델이 훈련 데이터에 너무 맞추어져서 새로운 데이터에 대한 일반화 성능이 떨어지는 현상을 나타냅니다. 이를 방지하고 모델의 일반화 성능을 향상시키기 위해 다양한 기법이 사용됩니다. 아래는 과적합 방지 기법에 대한 주요 설명입니다:

더 많은 훈련 데이터 사용

과적합을 방지하는 가장 효과적인 방법 중 하나는 더 많은 훈련 데이터를 사용하는 것입니다. 더 다양한 데이터를 모델에 제공하면 모델은 일반화하기 쉬워집니다.

모델 복잡도 제한

모델의 복잡도를 줄이는 것은 과적합을 줄이는 데 도움이 됩니다. 이를 위해 모델의 아키텍처를 단순화하거나, 더 적은 수의 파라미터를 사용할 수 있는 모델을 선택합니다.

규제(Regularization)

규제는 모델의 복잡도를 줄이는 데 도움을 주는 기법입니다. 주로 L1 규제(라쏘, Lasso)와 L2 규제(릿지, Ridge)가 사용됩니다. 이러한 규제는 가중치에 페널티를 부여하여 가중치 값이 작아지도록 유도합니다.

드롭아웃(Dropout)

드롭아웃은 훈련 과정 중에 무작위로 일부 뉴런을 제외하고 모델을 훈련시키는 기법입니다. 이를 통해 모델이 특정 뉴런에 너무 의존하는 것을 방지하고, 일반화 성능을 향상시킵니다.

조기 종료(Early Stopping)

조기 종료는 훈련 과정 중에 검증 데이터의 성능이 개선되지 않을 때 훈련을 멈추는 기법입니다. 이를 통해 모델이 훈련 데이터에 과적합되는 것을 방지합니다.

교차 검증(Cross-Validation)

교차 검증은 모델의 일반화 성능을 평가하기 위해 사용됩니다. 데이터를 여러 부분집합으로 나누어 검증하는 과정을 반복하여 모델의 성능을 신뢰성 있게 측정합니다.

특성 선택(Feature Selection) 및 차원 축소(Dimensionality Reduction)

불필요한 특성을 제거하거나 차원 축소 기법을 사용하여 입력 데이터의 차원을 줄이는 것은 과적합을 방지하는 데 도움이 됩니다.

앙상블(Ensemble) 기법

앙상블 기법은 여러 모델을 결합하여 더 강력한 모델을 만드는 방법입니다. 다양한 앙상블 기법 중에서는 배깅(Bagging), 부스팅(Boosting), 랜덤 포레스트(Random Forest) 등이 있습니다.

드롭아웃(Dropout)

드롭아웃(Dropout)은 과적합을 줄이고 신경망 모델의 일반화 성능을 향상시키는 효과적인 정규화(regularization) 기법 중 하나입니다. 드롭아웃의 주요 특징은 다음과 같습니다:

은닉층 (Hidden Layers): 드롭아웃은 주로 은닉층에서 사용됩니다. 은닉층의 뉴런 중 일부를 무작위로 비활성화시켜 모델이 특정 특징 또는 패턴에 과도하게 의존하지 않도록 합니다.

무작위로 뉴런 제거: 드롭아웃은 훈련 과정 중에 무작위로 선택한 일부 뉴런(뉴런의 출력)을 제외하고 모델을 훈련시킵니다. 이를 통해 모델이 특정 뉴런에 너무 의존하지 않도록 합니다.

확률적 방법: 드롭아웃은 각 뉴런을 제외할 확률을 설정하며, 이 확률은 하이퍼파라미터로 조절됩니다. 일반적으로 0.5와 같은 값을 사용하며, 이는 50%의 뉴런을 제외하도록 설정한 것을 의미합니다.

테스트 시에는 비활성화: 모델을 테스트 또는 추론할 때는 드롭아웃을 적용하지 않고 모든 뉴런을 사용합니다. 이렇게 하면 훈련 시와 동일한 모델을 사용하여 예측을 수행할 수 있습니다.

앙상블 효과: 드롭아웃은 여러 개의 서로 다른 네트워크를 훈련하는 것과 유사한 효과를 제공합니다. 각 훈련 단계에서 무작위로 뉴런을 제거하므로 서로 다른 네트워크를 훈련하는 것과 비슷한 효과를 얻을 수 있습니다.

과적합 방지: 드롭아웃은 과적합을 방지하고 모델의 일반화 성능을 향상시키는 데 도움을 줍니다. 특히, 훈련 데이터가 부족한 경우에 효과적입니다.

최적화 및 수렴 속도 향상: 드롭아웃은 모델의 복잡도를 감소시키므로 일반적으로 더 빠른 최적화와 빠른 수렴을 가능하게 합니다.

드롭아웃은 주로 컨볼루션 신경망(CNN)과 완전 연결 신경망(Fully Connected Neural Network)에서 사용되며, 딥러닝 모델의 성능을 향상시키는 데 널리 사용되는 정규화 기법 중 하나입니다.

해당 게시글은 ChatGPT의 도움을 받아 작성되었습니다.