- 본 글에서는 딥러닝에 기반이 되는 신경망에 대해 간단히 소개합니다.
가장 왼쪽의 동그라미는 변수를 의미합니다. 어떤 연산에 의해 두 번째 레이어에 새로운 변수를 만들어냅니다. 유효한 정보를 뽑아내는 과정을 다단계로 반복하는 것이 신경망의 핵심 아이디어입니다.
6개의 독립변수로 1개의 종속변수를 예측하는 선형 모델의 파라미터는 몇 개일까요? 6개의 독립변수에 맞춰진 6개의 파라미터와 bias 하나를 더해 총 7개가 됩니다. 신경망에서 N개의 독립변수로 1개의 노드를 만들기 위해서는 N+1개의 파라미터가 필요합니다. 만약 노드의 개수가 8개라면 8*(N+1) 개의 파라미터가 필요합니다. 은닉층이 많아질수록 필요한 연산은 많아집니다. 이런 이유로 딥러닝에서 컴퓨터의 연산속도가 중요합니다.
퍼셉트론은 인공 신경망의 기본적인 모델로, 인공 신경망에서 신호를 처리하는 방식을 이해하는데 매우 중요한 역할을 합니다. 퍼셉트론은 간단한 논리 회로로 구성되어 있어 이해하기 쉽고, 이를 통해 딥러닝의 기본 개념을 이해하기 쉽습니다.
퍼셉트론은 입력 신호를 가중치와 곱하고, 그 결과를 모두 더한 후 이 값이 임계값보다 크면 출력 신호를 1로 하고, 그렇지 않으면 0으로 하는 기본적인 논리 회로를 가지고 있습니다. 예시와 같이 z가 0보다 크면 출력 신호를 1로, 그렇지 않으면 0으로 하는 논리 회로를 가지고 있습니다.
퍼셉트론을 통해 구현한 AND와 OR Gate입니다. AND 구조는 입력 신호 중 모두가 1일 때 출력이 1이 되는 구조를 의미합니다.
예를 들어 입력 신호가 [1,1]이면 출력 신호는 1이 됩니다. 이를 구현하기 위해서 입력 신호의 가중치를 [0.5,0.5]로 설정하고 bias를 -0.3으로 설정하였습니다. OR 구조는 입력 신호 중 하나 이상이 1일 때 출력이 1이 되는 구조를 의미합니다.
예를 들어 입력 신호가 [1, 0]이면 출력 신호는 1이 됩니다. 이를 구현하기 위해서 입력 신호의 가중치를 [0.5,0.5]로 설정하고 bias를 -0.8로 설정하였습니다.
그러나 단층 퍼셉트론은 XOR논리 구조를 구현할 수 없습니다. 어떻게 가중치를 설정하더라도 [[0,0], [0,1], [1,0], [1,1]]으로 [0,1,1,0]을 만들 수 없습니다. 단층 퍼셉트론으로는 XOR을 구성할 수 없기 때문에 이는 초기 퍼셉트론에서 가장 큰 문제가 되었습니다.
시간이 흐르면서 단층이 아닌 2개의 퍼셉트론을 사용하는 Multi-layer Perceptron이라는 개념이 등장했습니다. 입력 신호와 출력 신호 사이에 하나의 은닉층을 추가하여 XOR논리 구조를 구성할 수 있게 된 것입니다. 히든 레이어에서 하나의 노드에는 AND Gate를 구성하고, 다른 하나의 노드에 OR Gate를 구성하여 XOR 논리구조를 구현할 수 있게 되었습니다.
순전파(forward propagation)는 인공 신경망의 기본적인 계산 과정입니다. 인공 신경망은 입력 데이터를 입력층으로부터 출력층까지 여러 층을 거쳐 최종적으로 출력을 내놓는데, 이 과정을 순전파라고 합니다. 순전파는 각 층에서 입력 데이터를 계산하는 과정이며, 이를 통해 출력을 내놓는 것이 목표입니다.
순전파는 딥러닝의 학습 과정에서도 사용되며, 이를 통해 모델이 입력 데이터를 어떻게 처리하는지를 이해하고 모델을 조정할 수 있습니다. 위의 예시에서 height와 weight를 통해 어떤 값을 예측하고자 합니다. 연산과정은 입력값과 가중치 행렬의 연산으로 이루어지고, 그 과정에서 활성화함수(activation)라고 하는 함수를 통하여 은닉층 노드의 값이 도출됩니다. 다시 은닉층의 값을 통해 다시 연산을 시행하고, 출력층에 값을 전달하게 됩니다.
머신러닝에서 학습의 기본은 가중치를 계속 업데이트하여 오답과 실제값의 차이가 가장 작은 가중치를 찾는 것입니다. 하지만 순전파로는 가장 이상적인 가중치를 찾을 수 없습니다. 이런 순전파의 한계때문에 역전파라는 개념이 등장했습니다.
역전파(backpropagation)는 인공 신경망의 학습 과정에서 사용되는 기법인데, 순전파를 거쳐 계산된 출력과 실제 정답의 오차를 계산하고, 이를 이용해 각 층의 가중치를 조정하는 과정을 말합니다.
예시를 살펴보겠습니다. 먼저 x, y, z는 입력층값에 대한 가중치입니다. 함수 f는 퍼셉트론의 활성화함수이라고 생각해봅시다. 이제 함수 f로 나온 값과 실제 값의 차이를 줄이기 위해 가중치를 조절해야 합니다. 그 과정에서 가중치가 활성화함수를 통해 나온 값에 얼마나 영향을 끼쳤는지 확인하고, 오차를 줄이기위해 최적화할 것입니다. 이를 위해 활성화함수에 대해 가중치를 편미분 하여 가중치를 업데이트하고, 오차가 최소가 될 때까지 과정을 반복합니다. 이것을 역전파라고 합니다.
Recurrent Neural Networks (0) | 2022.12.16 |
---|---|
Convolution Neural Network (0) | 2022.12.14 |
Hyper Parameter (0) | 2022.12.12 |
클러스터링(Clustering) (0) | 2022.12.07 |
교차검증(Cross-validation)과 차원축소(Dimension Reduction) (0) | 2022.12.05 |
댓글 영역