뉴런과 레이어, 신경망의 구성요소

by 멘토사피엔스

ChatGPT도 딥러닝의 일종입니다. 그리고 딥러닝의 핵심 구조는 신경망(Neural Network)입니다. 신경망은 인간 두뇌의 신경세포(뉴런) 연결 방식을 모방하여 데이터를 학습하고, 문제를 해결하는 데 사용됩니다. 이미지는 물론 텍스트, 음성, 숫자 데이터 등 다양한 데이터를 처리하며, 번역, 음성 인식, 자율 주행 같은 첨단 기술의 기초가 됩니다.

딥러닝의 신경망을 이해하기 위해서는 먼저 뉴런과 레이어의 개념을 이해해야 합니다. 이번 글에서는 뉴런과 레이어에 대한 간단한 설명과 데이터, 연산에 쓰이는 구성요소들에 대해 정리해 보았습니다.


뉴런


신경망에서 데이터를 처리하는 가장 작은 단위입니다. 뉴런은 레이어에서 설계자에 의해 그 개수가 정의됩니다. 이를 수학적으로는 출력 벡터의 차원이라 할 수 있습니다. 예를 들어 입력 데이터가 3개라면 입력 레이어의 뉴런 개수는 3개이고 3차원 벡터로 표현됩니다.


각 뉴런은 입력받은 값에서 연산한 뒤 출력되는데 이는 다음 레이어의 입력값으로 전달됩니다. 연산은 가중치, 편향, 활성화 함수를 활용합니다. 그리고 가중치를 곱하는 선형결합, 활성화함수를 통과시킨 비선형 변환으로 구분됩니다.

뉴런수가 많을수록 모델은 더 많은 특징을 학습할 수 있습니다. 하지만 너무 많으면 계산량이 증가하고 과적합 위험도 커집니다.


뉴런이 많아지면 모델의 파라미터 수도 비례적으로 증가합니다. 데이터의 세부적인 패턴과 노이즈를 학습할 수 있으나, 노이즈가 많은 경우 데이터의 노이즈를 학습하게 될 수 있습니다. 우리가 원하는 일반적인 패턴이 아닌 임의적이고 불규칙적인 패턴을 학습하게 되면 예측 정확도가 떨어질 수 있습니다.


데이터셋의 크기에 따라 뉴런 수를 적합하게 설정해야 합니다. 예로 데이터가 적고 간단한 문제는 뉴런 수를 줄입니다. 데이터셋보다 과도하게 뉴런이 많다면 패턴을 찾는 것이 아니라 데이터를 있는 그대로 학습합니다. 시험 문제를 이해하려 하지 않고 암기만 하는 학생과 같습니다. 문제의 패턴과 원리를 이해해야 시험 문제에 더 잘 대응할 수 있을 것입니다.


학습 중 일부 뉴런을 임시로 비활성하거나(드롭아웃), 가중치를 작게 유지해 과적합을 방지할 수 있습니다.


레이어


레이어는 신경망에서 뉴런들이 모여 있는 하나의 층을 의미합니다. 신경망은 여러 개의 레이어로 구성되며, 각 레이어는 입력 데이터를 처리하고 다음 레이어로 전달하는 역할을 합니다.


레이어는 크게 입력층, 은닉층, 출력층으로 구분합니다.

입력층 - 모델에 데이터를 입력하는 첫 번째 레이어로 뉴런의 개수가 입력 데이터의 차원과 동일합니다.

은닉층 - 입력 데이터를 처리하고 특징을 추출합니다. 뉴런의 개수와 활성화 함수는 설계자가 결정합니다.

출력층 - 모델의 최종 결과를 생성합니다. 뉴런의 개수는 예측할 값의 개수와 동일합니다.


레이어가 너무 적으면 복잡한 데이터의 패턴과 관계를 충분히 학습하지 못합니다. 특히 비선형적이고 고차원적인 관계를 모델링하는 데 한계가 있습니다. 예를 들면 이미지 인식, 자연어 처리와 같은 고차원 데이터 문제를 해결하기 어렵습니다.


반대로 레이어가 너무 많으면 깊은 특징을 추출하고 고차원적 관계를 학습할 수 있습니다. 뉴런 수와 마찬가지로 너무 많으면 훈련 데이터의 노이즈나 불필요한 세부사항까지 학습하게 됩니다. 그러나 기울기 소실 문제(Vanishing Gradient Problem)가 생깁니다. 깊은 네트워크에서 역전파 중 기울기가 소실되거나 폭발하면 학습이 제대로 이루어지지 않습니다.


레이어가 많을수록 모델 설계와 튜닝이 복잡해지고 최적의 하이퍼파라미터(뉴런 개수, 학습률 등)를 찾기 어렵습니다.


최근에는 단순히 하나의 레이어를 이어 구성하는 것이 아니라 병렬적 레이어 구조(Residual Connections, Skip Connections) 같은 현대적 설계가 모델의 깊이에 따른 학습 문제를 극복하는 데 활용됩니다.


뉴런에서 최초 주어진 데이터는 입력층에 주어진 뒤 연산되어지고 그 결과 값은 다음 은닉층의 입력값으로 사용됩니다. 그리고 출력층에는 확률에 따라 결과로 선택되는 뉴런의 집합이 있습니다. 뉴런에 활용되는 데이터와 연산장치인 가중치, 편향, 활성화 함수를 포함해 추론에 영향을 미치는 구성요소들을 살펴보겠습니다.


입력(Input)


네트워크에 주어지는 학습할 데이터를 의미합니다. 입력 데이터는 신경망의 출발점이자, 모델이 학습을 통해 세상에 대해 배우기 시작하는 재료와 같습니다.


예를 들어,

이미지 처리라면 입력은 이미지의 픽셀 값입니다. 한 장의 흑백 이미지가 28x28 크기라면, 784개의 픽셀 값(0~255 범위의 숫자)으로 입력됩니다. 컬러 이미지의 경우는 RGB 색상 값이 포함되어, 한 픽셀당 3개의 값으로 표현됩니다.

텍스트 처리라면 입력은 단어 벡터(Word Embedding) 또는 문자 인코딩 값으로 표현됩니다. 예를 들어 ‘사과’라는 단어가 모델에 입력되면, ‘사과’를 숫자로 변환한 벡터가 입력으로 들어갑니다.

음성 인식의 경우는 음성의 파형을 나눈 신호값이나 스펙트로그램으로 변환된 데이터가 입력됩니다.

숫자 예측 문제(회귀)에서는 과거의 숫자 데이터들이 입력으로 사용됩니다.


이처럼 입력 데이터는 문제의 유형과 데이터의 성격에 따라 다르게 표현되지만, 공통적으로는 모델이 학습하기 위해 반드시 필요한 출발점입니다.


추가로, 입력 데이터는 정규화(Normalization) 과정을 거쳐 모델에 전달됩니다. 정규화는 입력값의 범위를 01 또는 -11 등 일정한 범위로 맞추어 주는 작업으로, 학습 속도를 높이고 안정적인 학습을 돕습니다. 예를 들어, 이미지의 픽셀 값이 0255 범위라면, 이를 01 사이의 값으로 나누어 입력합니다.


입력은 요리로 비유하면 재료 준비 과정과 같습니다. 좋은 재료가 있어야 맛있는 요리가 나오듯, 충분하고 깨끗하게 전처리된 데이터가 있어야 모델이 제대로 학습할 수 있습니다. 만약 데이터가 부족하거나 잘못 준비되면, 아무리 좋은 모델이라도 잘못된 결과를 낼 수 있습니다.


가중치(Weights)


가중치(Weights) 는 입력 데이터와 뉴런 간의 연결 강도를 나타내는 값입니다. 쉽게 말해, 신경망이 입력 데이터를 처리하면서 “어떤 정보가 더 중요한지” 판단하고 강조하거나 약화시키는 역할을 합니다.


예를 들어,

이미지 처리에서, 어떤 픽셀 값이 고양이를 인식하는 데 중요하다면 그 픽셀 값에 높은 가중치가 부여됩니다.

텍스트 처리에서, ‘긴급’, ‘경고’와 같은 단어는 문장 의미 파악에 중요하기 때문에 높은 가중치를 받게 됩니다.


가중치는 학습 과정에서 자동으로 조정되는 값으로, 신경망이 데이터를 학습하고 문제를 해결하는 과정에서 ‘어떤 특징이 중요한지’를 스스로 찾아내도록 돕습니다.


가중치는 라면 스프의 양과 비슷합니다. 국물 맛(결과)에 영향을 주는 주요 요소로, 많이 넣으면 국물이 짜지고, 적게 넣으면 싱거워집니다. 입력(물, 면, 재료)은 같아도 스프(가중치)에 따라 맛이 달라지듯, 입력이 같아도 가중치에 따라 모델의 출력이 달라집니다.


가중치의 초기값과 학습 과정은 아래와 같습니다.

학습 초기에는 가중치가 무작위(Random)로 설정됩니다. 처음에는 모델이 무엇이 중요한지 알 수 없기 때문입니다.

학습이 진행되면 모델은 손실 함수(Loss Function) 를 통해 예측값과 실제값의 차이를 계산합니다.

이 차이를 줄이기 위해 역전파(Backpropagation) 와 최적화 알고리즘(Optimizer, 예: SGD, Adam) 을 사용해 가중치를 조금씩 조정해 나갑니다.

이러한 과정을 반복하여 가중치가 계속 업데이트되면서 모델은 ‘중요한 정보’에 더 높은 가중치를 부여하고, 덜 중요한 정보에는 낮은 가중치를 부여하여 예측 정확도를 높여갑니다.


편향(Biases)


편향(Biases) 은 뉴런의 활성화 여부를 조정하는 추가 값으로, 신경망이 보다 유연하게 학습하고 예측할 수 있도록 돕는 역할을 합니다. 신경망에서 가중치만 사용하게 되면, 입력이 0일 때 뉴런의 출력도 무조건 0이 되어버립니다. 하지만 실제 문제에서는 입력이 0일 때도 출력이 0이 아닐 수도 있습니다. 편향은 이러한 상황을 보완해주는 역할을 합니다.


편향은 가중치가 반죽이라면 ‘이스트’와 같습니다. 아무리 좋은 재료(가중치)를 사용해도 이스트(편향)가 없으면 반죽이 부풀지 않듯, 편향은 출력에 기본적으로 더해져 결과가 너무 제한적이지 않도록 만듭니다.


편향의 작동 방식

편향은 가중치가 곱해진 입력 값에 추가되는 값으로, 뉴런의 최종 출력 값(활성화 함수 통과 전)에 더해집니다.

예를 들어,

출력 = (입력 × 가중치) + 편향


이러한 방식으로 편향은 모델이 특정한 경향성을 학습하도록 조정해줍니다.


편향 역시 학습 초기에는 무작위(Random)로 설정됩니다. 학습 과정에서 손실 함수(Loss Function)를 통해 예측값과 실제값의 차이를 계산하고, 역전파(Backpropagation)와 최적화 알고리즘(Optimizer)을 통해 편향 값도 가중치와 함께 업데이트됩니다.


왜 편향이 중요한가?

편향이 없다면 신경망은 입력값이 0일 때 항상 0을 출력하게 되며, 특정 상황에서 유연하게 대응하지 못합니다.

편향은 모델이 데이터의 특정 패턴을 더 잘 맞출 수 있도록 도와줍니다.

예를 들어, 날씨 데이터에서 평균 기온이 항상 15도 이상이라면, 편향이 이를 반영하여 예측의 기준선을 올려주게 됩니다.


활성화 함수(Activation Function)


활성화 함수(Activation Function) 는 신경망이 단순한 계산기를 넘어 복잡한 문제를 해결할 수 있도록 돕는 핵심 요소입니다.


신경망이 입력 데이터에 가중치를 곱하고 편향을 더해 연산한 결과는 단순히 선형(Linear) 적으로만 표현됩니다. 하지만 세상 대부분의 문제(이미지 인식, 음성 인식, 자연어 처리 등)는 단순 선형 관계만으로는 풀 수 없습니다. 활성화 함수는 연산 결과를 ‘비선형(Non-linear)’ 으로 변환하여 신경망이 복잡한 패턴과 관계를 학습할 수 있게 만들어 줍니다.


활성화 함수는 신경망의 ‘생각 스위치’ 역할을 합니다. 단순 계산기로는 ‘더하기, 곱하기’만 하며 직선처럼 결과가 나오지만, 활성화 함수가 개입하면 ‘꺾이는 곡선’처럼 복잡한 문제를 풀 수 있습니다.


작동하는 방식은 아래와 같습니다.

뉴런의 출력 = (입력 × 가중치) + 편향 → 활성화 함수 통과 → 최종 출력


즉, 활성화 함수는 뉴런이 출력값을 내기 전 마지막으로 거치는 단계입니다.


주요 활성화 함수에는 Sigmoid, ReLU(Recitified Linear Unit), Tanh 등이 있습니다.

Sigmoid: 출력값을 0과 1 사이로 제한하여 확률 값을 표현할 때 유용하지만, 기울기 소실 문제를 일으킬 수 있습니다.

ReLU(Recitified Linear Unit): 비선형 특성을 가지면서도 계산이 간단하여 깊은 신경망에서 가장 널리 사용됩니다.

Tanh: -1과 1 사이의 값을 출력하며 Sigmoid보다 출력 중심이 0에 가까워 학습 효율이 높지만, 여전히 기울기 소실 문제가 발생할 수 있습니다.


손실 함수


손실 함수(Loss Function) 는 신경망이 얼마나 잘 학습하고 있는지를 알려주는 ‘채점기’ 역할을 하는 핵심 요소입니다. 모델이 예측한 값과 실제 값의 차이를 수치로 계산해 주는 함수입니다. 이 값이 클수록 예측이 실제 값과 많이 다르다는 의미이고, 작을수록 예측이 잘 맞았다는 의미가 됩니다.


신경망은 손실 함수의 값을 최대한 줄이는 방향으로 학습을 진행합니다. 학습 중 손실 함수를 계산해 ‘현재 얼마나 잘 맞추고 있는지’ 평가합니다. 이 평가를 바탕으로 가중치와 편향을 조정해 더 나은 예측을 할 수 있도록 업데이트합니다. 즉, 손실 함수는 신경망이 올바른 방향으로 가고 있는지 확인하고 방향을 잡아주는 나침반입니다.


손실 함수는 시험에서 틀린 개수(오답 수)를 세어주는 역할을 합니다.

오답이 많으면(손실 값이 큼) → 더 열심히 공부(학습)해야 함을 알림

오답이 줄어들면(손실 값이 작아짐) → 공부한 방향이 맞았다는 신호


즉, 신경망이 예측 실력을 키워가는 과정에서 틀린 문제를 줄여 나가는 기준이 됩니다.


손실 함수는 문제의 유형에 따라 선택합니다. 몇가지 예시는 아래와 같습니다.


MSE (Mean Squared Error)

사용 예: 회귀 문제 (예: 집값 예측, 온도 예측)

예측값과 실제값의 차이를 제곱하여 평균을 구합니다.

예측 오차가 클수록 더 큰 패널티를 주어 오차를 줄이도록 유도합니다.


Binary Cross-Entropy

사용 예: 이진 분류 문제 (예: 스팸 메일인지 아닌지 판별)

두 클래스(0 또는 1) 중 하나를 예측할 때 사용합니다.

예측한 확률과 실제 정답의 차이를 확률 기반으로 계산해 평가합니다.


Categorical Cross-Entropy

사용 예: 다중 클래스 분류 문제 (예: 사진 속 동물 종류 구분, 감정 분석)

여러 클래스 중 하나를 예측하는 문제에 사용합니다.

각 클래스에 대한 예측 확률과 실제 정답 클래스의 확률 차이를 계산해 평가합니다.


출력(Output)


출력(Output) 은 신경망이 학습과 추론 과정을 거쳐 내놓는 ‘최종 결과물’입니다. 신경망은 입력 데이터를 받고(예: 사진, 문장, 숫자), 여러 레이어와 뉴런을 거치며 연산을 진행합니다. 그렇게 연산과 학습 과정을 거친 뒤 ‘최종 판단’ 혹은 ‘예측값’을 만들어 내는 단계가 출력층(Output Layer) 입니다.


문제 유형에 따라 출력 형태가 달라집니다


분류(Classification) 문제

출력값: 각 클래스(범주)에 대한 확률 값

예) 고양이 vs 개 구분: 고양이일 확률: 0.8 개일 확률: 0.2

이 경우 확률이 가장 높은 고양이(0.8)를 ‘최종 예측 결과’로 판단합니다.


회귀(Regression) 문제

출력값: 연속적인 숫자 값

예) 내일 기온 예측: 예측 기온: 25.3도


출력은 시험에서 답안지를 작성해 제출하는 단계와 같습니다.

입력(Input): 문제지 받기

신경망 처리: 문제를 풀기(생각, 계산)

출력(Output): 답안 작성하여 제출하기


신경망은 이 출력값과 실제 정답(라벨)을 비교하여 틀린 부분을 손실 함수로 확인하고, 잘못된 부분을 고쳐 나가며 학습을 반복합니다.


출력값을 생성할 때도 상황에 따라 적절한 활성화 함수를 사용하여 값을 처리합니다. 출력층에서 사용하는 함수 예시는 아래와 같습니다.

Softmax 함수 (다중 클래스 분류) 여러 클래스 중 하나를 선택해야 할 때, 각 클래스의 확률값으로 변환하여 합이 1이 되도록 만듭니다. 예) [0.8(고양이), 0.2(개)]

Sigmoid 함수 (이진 분류) 두 가지 클래스 중 하나를 선택해야 할 때 사용하며, 출력값을 0과 1 사이의 확률로 변환합니다.

Linear(선형) 함수 (회귀 문제) 연속적인 수치 예측 문제에서는 별도의 변환 없이 연속된 값 그대로 출력합니다.


신경망은 LLM의 기반


신경망(Neural Network)은 단순히 데이터를 처리하는 도구가 아니라, 현대 딥러닝의 기초를 형성하는 강력한 구조입니다. 뉴런과 레이어의 개념을 이해하면 신경망이 데이터를 어떻게 학습하고 처리하며, 입력된 정보 속에서 패턴과 의미를 찾아내는지 명확히 알 수 있습니다. 이 구조 덕분에 컴퓨터는 단순 계산을 넘어서, 이미지 인식, 음성 인식, 자연어 처리와 같은 고도화된 작업을 수행할 수 있게 되었습니다.


오늘날 ChatGPT와 같은 거대한 언어 모델(LLM)도 이러한 신경망의 기본 개념에서 출발하고 있습니다. 작은 뉴런과 레이어의 연결이 쌓여, 문맥을 이해하고 자연스럽게 대답하는 AI로 발전한 것입니다. 신경망의 기본 원리를 이해하는 것은 AI가 어떻게 학습하고 추론하며 발전해 왔는지를 이해하는 첫걸음이며, 앞으로의 AI 시대를 살아가는 데 필수적인 기반 지식이 될 것입니다.

keyword
수, 토 연재
이전 07화답을 찾아가는 최적화 알고리즘