딥러닝/인공신경망
01. Neuron(뉴런)
devmin67
2024. 10. 10. 10:29
딥러닝의 목적: 인간의 두뇌가 작동하는 방법을 모방하는 것이고 이를 위해서는 뉴런의 작동방식을 모방해야 한다.
뉴런의 기본 구성 요소
- 입력(Input):
- 뉴런은 여러 개의 입력값을 받습니다. 입력값은 보통 이전 레이어의 뉴런 출력이거나, 모델에 직접 주어진 데이터입니다.
- 생물학적 뉴런에서 수상돌기에 해당합니다.
- 가중치(Weights):
- 각 입력에는 **가중치(weight)**가 곱해집니다. 가중치는 입력 데이터의 중요도를 조정하는 파라미터입니다. 학습 과정에서 이 값이 최적화됩니다.
- 가중치는 모델이 입력 중 어떤 정보를 더 중요하게 볼지를 결정하는 역할을 합니다.
- 바이어스(Bias):
- 가중치로 변환된 입력들을 더한 결과에 **바이어스(bias)**가 추가됩니다. 바이어스는 모델이 학습하는 데 있어 유연성을 더해줍니다.
- 바이어스는 생물학적 뉴런에서 역치(threshold)에 해당하며, 뉴런이 활성화되기 위한 기준을 설정하는 역할을 합니다.
- 활성화 함수(Activation Function):
- 입력값에 가중치가 적용되고 바이어스가 더해진 결과는 활성화 함수를 통과합니다. 활성화 함수는 비선형성을 모델에 추가하는 역할을 합니다. 이를 통해 딥러닝 모델은 더 복잡한 관계를 학습할 수 있습니다.
- 가장 흔히 사용되는 활성화 함수에는 ReLU (Rectified Linear Unit), 시그모이드(sigmoid), 하이퍼볼릭 탄젠트(tanh) 등이 있습니다.
- 생물학적 뉴런에서 **액션 포텐셜(활성화 신호)**와 비슷한 역할로, 일정 기준을 넘으면 출력이 활성화됩니다.
- 출력(Output):
- 활성화 함수를 통과한 값은 뉴런의 출력이 됩니다. 이 출력값은 다음 레이어의 뉴런으로 전달되거나 최종 결과값으로 사용됩니다.
- 생물학적 뉴런에서 **축삭(axon)**을 통해 다음 뉴런으로 신호를 전달하는 것과 유사합니다.
- 입력 값 (Input values: X₁, X₂, ..., Xₘ):
- Independent variable로 표시된 입력 값은 모델이 처리해야 하는 여러 특징(Feature)이나 변수를 의미합니다.
- 예를 들어, 이미지 분류 모델에서 X₁, X₂, Xₘ은 각각 이미지의 픽셀 값일 수 있습니다.
- 이 입력 값들은 뉴런에게 정보를 제공하여, 해당 뉴런이 무엇을 예측해야 할지 도움을 줍니다.
- 뉴런 (Neuron):
- 중앙에 있는 Neuron은 입력을 받아 처리하는 계산의 중심 단위입니다.
- 입력 값 각각은 **가중치(weight)**가 곱해져서 뉴런에 전달됩니다. 뉴런은 모든 입력 값에 가중치를 적용한 후, 그 값을 더해 계산합니다.
- 또한 뉴런에는 **바이어스(bias)**가 추가될 수 있는데, 이는 일정한 값을 더해주는 역할을 합니다.
- 수학적으로는 다음과 같은 형태로 표현됩니다: z=w1x1+w2x2+⋯+wmxm+bz = w_1x_1 + w_2x_2 + \cdots + w_mx_m + b
- 이 계산 결과는 **활성화 함수(activation function)**를 통과하여 비선형성을 추가한 후, 최종 출력 값을 만듭니다.
- 출력 값 (Output value: y):
- 뉴런에서 계산된 결과는 **출력 값(y)**으로 나타납니다. 이 값은 다음 레이어의 뉴런으로 전달되거나, 최종 결과(예측 값)로 사용됩니다.
- 예를 들어, 출력 값은 특정 이미지가 고양이인지 개인지를 예측하는 결과일 수 있습니다.
요약:
- 입력 값(X₁, X₂, ..., Xₘ): 모델이 처리할 데이터나 특징을 의미합니다.
- 뉴런(Neuron): 입력 값에 가중치를 곱한 후 더한 값을 계산하는 단위로, 활성화 함수를 통해 출력을 생성합니다.
- 출력 값(y): 뉴런의 계산 결과로서, 다음 레이어로 전달되거나 최종 예측 결과로 사용됩니다.
이미지에서 볼 수 있듯이, 뉴런은 하나의 관찰 값(단일 샘플)에 대해 여러 개의 **특성(Features)**을 받습니다. 예를 들어, X₁, X₂, ..., Xₘ은 하나의 샘플에 대한 여러 특징을 나타냅니다. 각 특징은 독립적으로 뉴런으로 전달되고, 뉴런은 이 특징들을 종합하여 **출력 값(y)**을 계산합니다.
왜 "여러 개의 행을 입력하지 말라"는 말이 나올 수 있을까?
- 단일 관찰(Single Observation):
- 이미지에서 보면, X₁, X₂, ..., Xₘ은 하나의 샘플에 대한 입력값들입니다. 각각의 X는 같은 샘플에 대한 서로 다른 **특성(예: 픽셀 값, 또는 데이터의 다른 속성들)**을 나타냅니다.
- 이때 중요한 것은, **한 번에 하나의 샘플(즉, 하나의 관찰 데이터)**에 대해서만 신경망이 처리한다는 것입니다.
- 여러 개의 샘플을 한꺼번에 처리하지 않는 이유:
- 신경망은 단일 샘플에 대한 여러 입력값(특성)을 기반으로 출력값을 계산하는 방식으로 설계됩니다. 만약 여러 샘플을 동시에 뉴런에 넣는다면, 신경망이 그 샘플들을 개별적으로 처리하는 대신 모든 샘플을 하나로 묶어서 계산할 수 있습니다.
- 예를 들어, 샘플 간의 특성이 섞여버려 제대로 된 계산이 어려워질 수 있습니다. 따라서 입력 데이터는 각 샘플별로 구분되어 뉴런에 전달되어야 합니다.
배치 처리 (Batch Processing):
다만, 실질적인 딥러닝에서는 여러 개의 샘플을 배치(batch) 형태로 처리할 수 있습니다. **배치(batch)**는 여러 개의 샘플을 한 번에 처리하지만, 내부적으로는 각 샘플을 독립적으로 처리하는 형태로 신경망이 동작합니다. 즉, 각 샘플에 대한 계산은 독립적으로 이루어지며, 그 결과를 동시에 처리할 수 있습니다.
요약:
- "여러 개의 행을 입력하지 말라"는 말은 신경망이 한 번에 하나의 샘플에 대해 계산하도록 설계되었다는 의미입니다.
- 각 뉴런은 **단일 관찰 데이터(하나의 샘플)**에 대해 여러 특성을 받아 계산하고, 그 결과로 하나의 출력값을 생성합니다.
- 실질적으로는 배치(batch) 처리로 여러 샘플을 동시에 처리할 수 있지만, 각각의 샘플은 독립적으로 처리되어야 합니다.