이번 포스팅에서는 XOR 문제처럼 단일 직선으로는 분류할 수 없는 복잡한 비선형 데이터셋을 다루고, 이를 해결하기 위해 필수적인 인공신경망 모델인 다층 퍼센트론(MLP, Multi-Layer Perceptron)을 설계하고 학습하는 과정을 상세히 설명합니다. 특히 make_moons와 같은 비선형 데이터셋을 MLP의 은닉층과 비선형 활성화 함수를 사용하여 어떻게 성공적으로 분류하는지 그 원리를 깊이 이해하는 데 초점을 맞춥니다.
비선형 데이터셋 분류
주요 개념은 비선형성(Non-linearity)을 가진 데이터를 비선형 함수를 포함하는 다층 신경망을 이용해 분류하는 것입니다. 단일 퍼센트론은 선형(직선) 경계만 학습할 수 있지만, MLP는 여러 층과 비선형 활성화 함수를 통해 곡선이나 복잡한 모양의 결정 경계를 만들 수 있습니다.
용어 정리
| 용어 | 실제 단어 의미 | IT에서 개념 |
| 퍼센트론(Perceptron) | 인지하다, 감지하다 | 인공신경망의 가장 단순한 형태 다수의 입력을 받아 하나의 출력을 내는 선형 분류기 단위 |
| MLP(Multi-Layer Perceptron) | 다층 퍼셉트론 | 입력층, 하나 이상의 은닉층, 출력층으로 구성된 신경망 비선형 문제를 해결할 수 있는 가장 기본적인 심층 학습(Deep Learning) 모델 |
| 비선형성(Non-linearity) | 선형(직선)이 아님 | 데이터의 관계가 직선으로 설명되지 않는 특성. MLP에서 활성화 함수를 통해 도입되어 복잡한 패턴 학습을 가능하게 함 |
| 활성화 함수(Activation Function) | 활성화 + 함수 | 신경망에서 뉴런의 출력 값을 결정하는 함수 특히 ReLU나 Sigmoid 같은 비선형 함수가 층 사이에 삽입되어 비선형 결정 경계를 생성함 |
| make_moons | 만들다 + 달 | scikit-learn에서 제공하는 비선형 이진 분류 문제 예시 데이터셋 두 개의 겹치는 반달 형태로 구성되어 선형 분리가 불가능함 |
사용 사례 및 예시
이해를 돕기 위한 사용 사례 및 예시 (과일 바구니 분류)
- 선형 분류(단일 퍼센트론) : 무게만으로 사과(무거움)와 딸기(가벼움)를 분리하는 것 → 직선(무게 기준선)으로 쉽게 분리 가능
- 비선형 분류(MLP) : 사과, 딸기 외에 적당히 무거운 바나나가 있고, 작은 미니어처 사과가 섞여 있어 무게와 색깔만으로는 복잡하게 얽혀있는 경우 → MLP는 여러 기준(층)과 복잡한 판단(비선형 함수)을 조합하여, 무게가 중간이고 붉은 색이면 딸기가 아닐 확률이 높다와 같은 복잡한 비선형 판단 경계를 만듭니다.
왜?(사용 목적과 필요성)
왜 사용하는지
- 복잡한 현실 문제 해결 : 대부분의 현실 데이터는 선형적이지 않습니다. 이미지 인식, 음성 처리, 복잡한 패턴 인식 등은 비선형적인 관계를 내포하며, 이를 해결하기 위해선 비선형적인 결정 경계를 만들 수 있는 MLPrk 필수적입니다.
- 표현 능력 향상 : 은닉층을 추가하고 비선형 활성화 함수를 사용함으로써, MLP는 어떤 복잡한 연속 함수라도 근사할 수 있는 능력(범용 근사 정리, Universal Approximation Theorem)을 갖게 됩니다.
왜 필요한지
단일 퍼셉트론으로는 XOR 문제나 make_moons 데이터셋을 분류할 수 없습니다. MLP의 비선형 활성화 함수는 데이터를 고차원 공간으로 매핑하거나 복잡하게 변환하여 원래 공간에서 분리 불가능했던 데이터(예 : XOR)를 새로운 공간에서 선형적으로 분리 가능하도록 만들어 주기 때문에 필요합니다.
언제 사용하는지
- 선형 분리가 불가능한 이진 또는 다중 클래스 분류 문제를 해결할 때
- 가장 기초적인 인공신경망 모델로, 심층 학습(Deep Learning)을 시작할 때 기초 모델로 사용합니다.
- 데이터 특성(Feature)이 이미 잘 정의되어 있고, 이미지나 시퀀스 데이터처럼 특수한 구조가 없을 때 주로 사용됩니다.
어떻게 사용할 건지
MLP는 주로 다음과 같은 3단계로 사용됩니다.
- 데이터 준비 : 비선형 데이터셋을 생성(make_moons)하고 훈련/테스트 세트로 분할합니다.
- 모델 정의 : 입력층 → ReLU를 포함한 은닉층 → Sigmoid를 포함한 출력층 순서로 층을 쌓습니다.
- 학습 및 예측 : binary_crossentropy 손실 함수를 사용하여 모델을 학습시키고, 테스트 데이터로 정확도를 평가합니다.
MLP를 이용한 Make-Moons 분류
우리는 make_moons 데이터셋을 사용합니다. 이 데이터는 2차원 평면에서 두 개의 클래스가 마치 뫼비우스의 띠처럼 얽혀 있어, 직선 하나로는 절대 분리할 수 없습니다.
- 입력층
데이터가 2차원이므로 입력층은 2개의 노드를 갖습니다. - 은닉층과 비선형 활성화
은닉층은 입력된 2차원 데이터를 10차원의 새로운 잠재 공간으로 변환합니다. 이 변환 자체가 선형이지만, 바로 뒤에 붙는 ReLU 함수가 이 변환에 비선형성을 부여합니다.
이 비선형 변환 덕분에, 원래 2차원 평면에서 얽혀 있던 데이터가 10차원의 새로운 공간에서는 선형적으로 분리 가능한 형태로 퍼지게 됩니다. 이것이 MLP가 비선형 문제를 해결하는 핵심 원리입니다. - 출력층
변환된 데이터를 받아 최종적으로 이진 분류 결과를 내기 위해 1개의 노드와 Sigmoid 함수를 사용합니다.
예시 코드
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_moons
from sklearn.model_selection import train_test_split
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
# 1. 비선형 데이터 생성
X, y = make_moons(n_samples=1000, noise=0.1, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# 2. MLP 모델 설계
model = Sequential([
# 은닉층: 비선형성 도입 (ReLU)
Dense(units=10, activation='relu', input_shape=(2,), name='hidden_layer'),
# 출력층: 이진 분류 확률 출력 (Sigmoid)
Dense(units=1, activation='sigmoid', name='output_layer')
])
# 3. 모델 컴파일 및 학습
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])
model.fit(X_train, y_train, epochs=100, batch_size=32, verbose=0)
# 4. 성능 평가
loss, accuracy = model.evaluate(X_test, y_test, verbose=0)
print(f"테스트 데이터 정확도: {accuracy:.4f}")
장단점 및 특징
MLP의 장점
- 비선형 문제 해결 가능
- 구현이 간단하고 직관적임
- 범용 근사 능력 보유
MLP 단점
- CNN, RNN에 비해 비효율적(이미지, 시계열 데이터의 경우)
- 최적 은닉층 개수 및 뉴런 수 결정이 어려움
MLP 특징
- 각 층의 뉴런들이 다음 층의 모든 뉴런과 연결되는 완전 연결(Fully-Connected) 구조를 가짐
- 역전파(Backpropagation) 알고리즘을 통해 가중치 학습
결론
MLP는 단순히 입력과 출력을 연결하는 것을 넘어, 비선형 활성화 함수라는 핵심 도구를 사용하여 복잡한 비선형 문제를 해결하는 능력을 갖춘 기본적이면서도 강력한 신경망 모델입니다. make_moons 데이터셋 분류 성공은 MLP가 선형 분류기의 한계를 극복하고 현대 딥러닝 기술의 초석을 다졌음을 분명히 보여줍니다. 비선형 데이터에 대한 이해와 MLP의 활용은 모든 AI 및 머신러닝 엔지니어에게 필수적인 지식입니다.
'AI > 인공지능(CNN)' 카테고리의 다른 글
| [인공지능] 딥러닝 핵심 : CNN(Convolution Neural Network) (0) | 2025.10.28 |
|---|---|
| [인공지능] 인공 신경망(Artificial Neural Network, ANN) (0) | 2025.10.28 |
| [인공지능] 신경망의 필수 요소 : Bias(편향)를 잡을 때와 안 받을 때의 차이 (0) | 2025.10.25 |
| [인공지능] 데이터 준비부터 딥러닝 최적화까지 : 머신 러닝 핵심 개념 흐름 정리 (0) | 2025.10.24 |
| [인공지능] 인공지능 신경망의 핵심 : 비선형 활성화 함수(Activation Function) (0) | 2025.10.23 |