딥러닝(Deep Learning) - 핵심 개념

728x90
반응형

딥 뉴럴 네트워크는 입력층, 은닉층, 출력층이 노드로 연결되어 있는 구조입니다.

 

서론

 

딥 뉴럴 네트워크(Deep Neural Network, DNN)는 현대 인공지능의 핵심 기술 중 하나로, 인간의 뇌를 모방한 구조를 통해 다양한 패턴을 학습하고 예측하는 데 사용됩니다. 이러한 딥 뉴럴 네트워크의 기본 구성요소와 원리를 이해하는 것은 컴퓨터 공학과 머신러닝에 깊이 관심이 있는 모든 이들에게 꼭 필요한 과정입니다. 본 글에서는 딥 뉴럴 네트워크를 구성하는 핵심 개념들인 퍼셉트론(perceptron), 다층 퍼셉트론(multi layer perceptron, MLP), 피드포워드(feed-forward), 출력 및 손실 함수(output/loss function), 그리고 역전파(backpropagation)에 대해 탐구해보려 합니다. 이들 각각의 개념은 딥 뉴럴 네트워크를 이루는 기본 구성 요소이며, 이들의 상호 작용을 통해 복잡한 패턴을 학습하고 예측하는 데 사용됩니다.

 

이러한 개념들을 한 단계씩 차근차근 살펴보며, 딥 뉴럴 네트워크의 복잡성을 이해하고 이를 통해 어떻게 머신러닝 모델이 인간의 뇌처럼 정보를 처리하고 학습하는지에 대해 깊이 있게 이해해보고자 합니다. 이 과정을 통해 딥 뉴럴 네트워크의 기본 구조와 동작 원리에 대한 이해를 높이고, 이를 바탕으로 더 복잡한 딥러닝 모델을 이해하고 설계하는 데 도움이 될 것입니다.

 

퍼셉트론

 

퍼셉트론(Perceptron)은 머신러닝의 가장 기본적인 형태로, 선형 이진 분류기의 일종입니다. 1957년에 코넬 항공 연구소의 프랑크 로젠블라트(Frank Rosenblatt)에 의해 제안되었으며, 인간의 뉴런(neuron)을 모델링한 것이라고 볼 수 있습니다.

 

퍼셉트론은 여러 개의 입력값 x1, x2, x3, ...을 받아 각각의 값에 가중치 w1, w2, w3, ...을 곱한 후, 모두 합한 값이 임계치를 넘으면 1을 출력하고, 그렇지 않으면 0을 출력하는 구조를 가집니다.

 

이를 수학적으로 표현하면 다음과 같습니다:

y = f(w1x1 + w2x2 + w3x3 + ... + wn*xn + b)

 

여기서 f는 활성화 함수(activation function)로, 퍼셉트론에서는 주로 계단 함수(step function)가 사용됩니다. 계단 함수는 입력값이 0 이상이면 1을, 그렇지 않으면 0을 출력하는 함수입니다. b는 bias로, 퍼셉트론의 출력이 1로 활성화되는 정도를 조절하는 역할을 합니다. 퍼셉트론은 이렇게 계산된 결과를 기반으로 실제 출력값과 기대 출력값 사이의 오차를 줄이는 방향으로 가중치를 조정하면서 학습을 진행합니다.

 

이러한 학습 과정은 퍼셉트론이 주어진 데이터를 잘 분류하는 선형 경계를 찾아내는 과정으로 볼 수 있습니다. 퍼셉트론은 단층 퍼셉트론과 다층 퍼셉트론으로 나뉘는데, 단층 퍼셉트론은 선형적으로 분류 가능한 문제만을 해결할 수 있습니다. 반면, 다층 퍼셉트론은 비선형 문제도 해결할 수 있으며, 이는 딥 뉴럴 네트워크의 기초가 됩니다.

 

다층 퍼셉트론(Multi-Layer Perceptron, MLP)

 

다층 퍼셉트론(Multi Layer Perceptron, MLP)은 퍼셉트론을 확장한 형태로, 여러 개의 퍼셉트론 층을 포함하고 있습니다. 이러한 구조를 통해 MLP는 비선형 분류와 회귀 문제를 처리할 수 있습니다.

MLP는 일반적으로 입력층(input layer), 하나 이상의 은닉층(hidden layer), 그리고 출력층(output layer)으로 구성됩니다. 각 층은 여러 개의 노드로 이루어져 있으며, 이를 통해 복잡한 패턴을 학습할 수 있습니다.

입력층은 입력 데이터를 받아들이며, 은닉층은 입력층의 정보를 처리하여 다음 층으로 전달합니다. 은닉층은 비선형 변환을 수행하므로 MLP가 비선형 분류가 가능하게 됩니다. 출력층은 최종적인 결과를 출력합니다.

각 층의 노드는 이전 층의 노드와 연결되어 있으며, 이 연결에는 가중치가 부여됩니다. 이 가중치를 통해 각 노드의 출력은 다음 식으로 계산됩니다:

h1 = f(w11x1 + w21x2 + w31x3 + b)

이 식에서 f는 활성화 함수로, 퍼셉트론에서와 같이 입력에 대한 노드의 출력을 결정합니다. MLP에서는 비선형 활성화 함수, 예를 들어 시그모이드 함수(sigmoid function) 등이 주로 사용됩니다. 시그모이드 함수는 다음과 같습니다:

f(z) = 1 / (1 + e^-z)

이 함수는 입력값 z를 0과 1사이의 값으로 변환합니다. 이러한 비선형 활성화 함수의 도입으로 MLP는 복잡한 비선형 패턴을 학습할 수 있습니다.

은닉층의 출력은 다음 층의 입력으로 사용되며, 이 과정이 반복되어 최종적으로 출력층에서 결과값이 나오게 됩니다. 출력층에서의 출력값 계산은 다음과 같습니다:

O1 = f(w11'h1 + w21'h2 + b')

이렇게 계산된 출력값과 실제 값과의 차이를 줄이는 방향으로 가중치가 조정되며, 이 과정을 통해 MLP는 학습을 진행합니다. 이러한 학습 과정은 역전파(Backpropagation) 알고리즘을 통해 이루어집니다.

피드포워드(Feed Forward)

 

피드포워드(feed-forward)는 딥 뉴럴 네트워크에서 데이터가 입력층에서 출력층으로 한 방향으로 흐르는 과정을 말합니다. 이 과정에서는 역전파나 반복적인 학습 과정이 없고, 순차적으로 각 층의 뉴런들이 활성화되면서 결과를 출력해냅니다. 이러한 피드포워드 과정을 통해 신경망은 주어진 입력에 대한 예측값을 생성합니다. 이를 추론(inference)라고도 부릅니다.

 

피드포워드 과정에서는 각 층의 뉴런들이 활성화 함수를 통해 비선형 변환을 수행합니다. 일반적으로 ReLU(Rectified Linear Unit)와 같은 활성화 함수가 사용됩니다.

 

ReLU 함수는 다음과 같이 정의됩니다: f(x) = max(0, x)

 

이 함수는 입력값이 0보다 크면 입력값을 그대로 출력하고, 0보다 작으면 0을 출력합니다.

 

예를 들어, 은닉층의 첫 번째 뉴런(h1)과 두 번째 뉴런(h2)의 출력은 다음과 같이 계산됩니다

: h1 = max(0, w11*x1 + w21*x2 + w31*x3 + b) h2 = max(0, w12*x1 + w22*x2 + w32*x3 + b)

 

여기서 w는 가중치, x는 입력값, b는 bias를 나타냅니다.

 

이렇게 계산된 은닉층의 출력값(h1, h2)은 다시 출력층의 입력으로 사용됩니다. 출력층의 뉴런 O1의 출력은 다음과 같이 계산됩니다

: O1 = max(0, w11'*h1 + w21'*h2 + b') = max(0, O + w21'*z + b')

 

이때 z는 은닉층의 출력을 나타냅니다.

 

요약하면, 피드포워드는 네트워크에서 데이터가 입력층에서 출력층으로 한 방향으로 순차적으로 흐르는 과정입니다. 이 과정에는 각 층의 뉴런들이 활성화 함수를 통해 비선형 변환을 수행하며, 이를 통해 주어진 입력에 대한 예측값을 출력합니다.

 

Output/loss function

 

출력 함수(output function)는 신경망의 최종 출력을 결정하는 함수입니다. 이는 보통 분류 문제에서는 softmax 함수, 회귀 문제에서는 항등 함수 등이 사용됩니다. 이진 분류(binary classification) 문제에서는 보통 sigmoid 함수를 사용하여 출력값을 0과 1사이로 제한하고, 이를 두 클래스 중 하나에 속할 확률로 해석합니다. 다중 클래스 분류 문제에서는 softmax 함수를 사용합니다. softmax 함수는 각 클래스에 대한 점수를 계산하고 이를 확률로 변환합니다.

 

softmax 함수는 다음과 같이 정의됩니다

 

: softmax(sj) = e^sj / Σ(e^si)

 

여기서 sj는 j번째 클래스에 대한 점수이고, Σ(e^si)는 모든 클래스에 대한 점수의 지수를 합한 것입니다. 이렇게 계산된 확률은 one-hot 벡터를 사용해 실제 정답 레이블을 표현합니다. one-hot 벡터는 정답 클래스의 위치에만 1이고 나머지 위치는 0인 벡터입니다.

 

예측된 확률 분포와 실제 정답 레이블의 차이를 계산하기 위해 손실 함수(loss function)를 사용합니다. 이는 신경망의 출력과 실제 값 사이의 차이를 측정하는 함수입니다. 분류 문제에서는 주로 교차 엔트로피(cross-entropy) 손실 함수를 사용합니다. 교차 엔트로피 손실 함수는 실제 클래스의 확률 로그값에 음수를 취한 것의 평균을 계산합니다

 

: Cross-entropy = - (y * log(p) + (1 - y) * log(1 - p))

 

여기서 y는 실제 클래스 레이블, p는 예측된 확률입니다. 이러한 손실 함수를 최소화하는 방향으로 신경망의 가중치를 조정하면서 학습을 진행하게 됩니다. 이 과정은 경사 하강법 등의 최적화 알고리즘을 사용하여 수행됩니다.

 

역전파(Backpropagation)

 

역전파(backpropagation)는 신경망을 학습시키는 데 사용되는 알고리즘입니다. 이 알고리즘은 출력층에서 발생한 오차를 입력층 방향으로 거꾸로 전파하면서 각 노드에서의 가중치를 조정해 나갑니다. 역전파의 핵심은 연쇄 법칙(chain rule)에 기반한 미분입니다. 연쇄 법칙에 따르면, 복합 함수의 미분은 각 함수의 미분의 곱으로 표현할 수 있습니다. 즉, f(g(x))의 미분은 f'(g)) * g'(x)입니다. 이를 통해 각 노드에서의 가중에 대한 그래디언트를 계산할 수 있습니다.

 

학습률(learning rate)은 가중치를 업데이트하는 정도를 결정하는 하이퍼파라미터입니다. 학습률이 너무 크면 최적의 솔루션을 뛰어넘을 수 있고, 너무 작으면 학습 속도가 느려질 수 있습니다. 가중치는 그래디언트 방향으로 학습률만큼 조정됩니다

 

: w = w - learning_rate * ∇w

 

학습 과정에서는 전체 데이터를 한번에 사용하는 것이 아니라 일부 데이터만을 사용해서 가중치를 업데이트합니다. 이를 확률적 경사 하강법(Stochastic Gradient Descent, SGD) 또는 미니 배치 경사 하강법(mini-batch gradient descent)이라고 합니다. 이 방식은 전체 데이터를 사용하는 GD(full-batch)에 비해 메모리를 더 효율적으로 활용할 수 있습니다.

 

예를 들어, 전체 데이터가 10000개(N=10000)이고 배치 사이즈가 100(batch_size=100)인 경우, 한번의 에폭(epoch)에서는 100번의 반복(iteration)이 필요합니다. 여기서 에폭은 전체 데이터를 한 번 모두 사용하는 과정을 말하며, 반복은 가중치 업데이트를 수행하는 횟수를 말합니다. 이 경우, 한번의 에폭에서 100번의 가중치 업데이트가 이루어집니다. 이렇게 역전파 알고리즘을 통해 신경망의 가중치를 조정하면서 학습을 진행하게 됩니다. 이 과정을해 신경망은 주어진 문제에 대한 최적의 해답을아가게 됩니다.

 

결론

 

딥 뉴럴 네트워크는 인간의 뇌를 모방한 구조를 가지고 있으며, 이를 통해 다양한 패턴을 학습하고 예측합니다. 이러한 복잡한 구조를 이루는 핵심 요소들은 퍼셉트론, 다층 퍼셉트론, 피드포워드, 출력 및 손실 함수, 그리고 역전파입니다. 이들 각각의 개념은 딥 뉴럴 네트워크를 이루는 기본 구성 요소로, 이들의 상호 작용을 통해 복잡한 패턴을 학습하고 예측하는 데 사용됩니다.

 

또한, 이러한 딥 뉴럴 네트워크의 학습 과정은 확률적 경사 하강법 등을 통해 이루어지며, 이 과정에서 학습률과 같은 하이퍼파라미터의 중요성이 강조됩니다. 따라서, 딥 뉴럴 네트워크를 이해하고 설계하는 것은 컴퓨터 공학과 머신러닝에 깊이 관심이 있는 모든 사람들에게 필수적인 과정입니다. 본 글을 통해 딥 뉴럴 네트워크의 기본 구조와 동작 원리에 대한 이해를 높일 수 있었기를 바랍니다. 이를 바탕으로 더 복잡한 딥러닝 모델을 이해하고 설계하는 데 도움이 되었기를 바랍니다.

반응형