딥러닝

케라스를 사용한 인공 신경망 소개

잔잔한 흐름 2025. 4. 27. 14:57

 

이 글은 "핸즈온 머신러닝(2판)"을 바탕으로 만들어졌습니다.

 

1. 인공 신경망 (Artificial Neural Network, ANN)


1. 인공 신경망이란?

  • 인공 신경망은 뇌의 생물학적 뉴런 네트워크에서 영감을 받아 만들어진 머신러닝 모델입니다.
  • 시간이 지나면서, 인공 신경망은 실제 생물학적 뉴런과는 점점 다른 방향으로 발전해왔습니다.
  • 인공 신경망은 딥러닝(Deep Learning) 의 핵심을 이루는 기술입니다.

인공 신경망의 특징

  • 다재다능성: 다양한 문제를 해결할 수 있음
  • 강력함: 복잡하고 방대한 데이터를 처리할 수 있음
  • 확장성: 모델 규모를 유연하게 확장 가능

인공 신경망은 특히 대규모 복잡한 머신러닝 문제에 적합합니다.

 

활용 사례

  • ✅ 수백만 개의 이미지 분류 (예: 구글 이미지 검색)
  • ✅ 음성 인식 시스템 개선 (예: 애플 Siri)
  • ✅ 사용자 맞춤형 동영상 추천 (예: 유튜브 추천 알고리즘)
  • ✅ 바둑 세계 챔피언을 이긴 인공지능 (예: 딥마인드 AlphaGo)

학습 순서

  1. 인공 신경망의 초창기 구조 소개
  2. 대표적인 신경망 구조인 다층 퍼셉트론(Multi-Layer Perceptron, MLP) 설명
  3. 케라스(Keras) API를 사용한 인공 신경망 구현 방법 학습

케라스(Keras)란?

  • 케라스는 신경망 구축, 훈련, 평가, 실행을 쉽게 할 수 있도록 설계된 고수준 API입니다.
  • 간결함표현력을 모두 갖추었으며, 복잡한 신경망도 충분히 설계할 수 있습니다.
  • 대부분의 신경망은 케라스만으로도 구현할 수 있으며,
    • 더 고급 기능이 필요한 경우 저수준 API로 사용자 정의 컴포넌트를 만들 수 있습니다.

 

1.1 생물학적 뉴런에서 인공 뉴런까지


인공 뉴런의 탄생

  • 1943년, 신경생리학자 워런 매컬러(Warren McCulloch) 와 수학자 월터 파츠(Walter Pitts) 가 역사적인 논문을 발표했습니다.
  • 이 논문에서는 명제 논리를 사용하여, 동물 뇌의 생물학적 뉴런이 복잡한 계산을 어떻게 수행하는지를 설명하는 단순한 계산 모델을 제시했습니다.
  • 이는 최초의 인공 신경망 구조였으며, 이후 다양한 신경망 구조가 개발되는 출발점이 되었습니다.

인공 신경망의 첫 번째 부흥과 침체

  • 초기 인공 신경망의 성공은
    "머지않아 지능을 가진 기계와 대화할 수 있을 것이다"는 대중적 기대를 불러일으켰습니다.
  • 그러나 1960년대, 기술적 한계로 인해 이 약속이 실현 불가능함이 드러났고,
    투자금이 다른 분야로 이동하면서 인공 신경망 연구는 긴 침체기에 빠졌습니다.

1980~90년대: 재도약과 다시 찾아온 침체

  • 1980년대 초, 새로운 네트워크 구조와 더 나은 훈련 기법이 등장하면서 연결주의(신경망 연구)에 대한 관심이 다시 살아났습니다.
  • 그러나 1990년대,
    • 서포트 벡터 머신(SVM) 등 강력하고 이론적 기반이 탄탄한 다른 머신러닝 기법들이 등장했습니다.
    • 이들은 인공 신경망보다 더 좋은 성능을 보였고,
    • 결국 인공 신경망은 또다시 긴 침체기를 겪게 됩니다.

현재: 인공 신경망의 부활

우리는 지금 인공 신경망의 또 다른 부흥기를 경험하고 있습니다.
이번 부흥은 단순한 유행이 아니라, 여러 강력한 요인들에 의해 뒷받침되고 있습니다.

인공 신경망 부흥의 주요 이유

  1. 방대한 데이터의 확보
    • 대규모 데이터셋 덕분에 인공 신경망은 다른 머신러닝 방법보다 좋은 성능을 보이기 시작했습니다.
  2. 컴퓨팅 파워의 비약적 발전
    • 무어의 법칙에 따른 CPU 발전
    • 게임 산업의 성장으로 인한 대량 생산된 고성능 GPU 덕분에
      대규모 신경망도 합리적인 시간 안에 훈련 가능해졌습니다.
  3. 훈련 알고리즘의 개선
    • 최적화 기술이 향상되어 신경망을 효과적으로 학습시킬 수 있게 되었습니다.
  4. 실제에서는 이론적 한계가 잘 드러나지 않음
    • 많은 이들이 지역 최적점(Local Optima) 문제를 걱정했지만,
      실제로는 대부분 전역 최적점(Global Optima) 근처까지 학습하는 경우가 많습니다.
  5. 투자와 발전의 선순환
    • 성공적인 사례들이 쌓이면서 투자와 기술 발전이 서로를 가속화하는 선순환 구조에 들어섰습니다.

 

1.2 생물학적 뉴런 (Biological Neuron)


생물학적 뉴런의 구조

  • 뉴런은 크게 두 부분으로 구성됩니다:
    • 세포체(Cell Body): 뉴런의 중심, 핵을 포함하고 있음
    • 돌기(Dendrite, Axon): 정보를 주고받는 가지들

뉴런에는 두 가지 주요 돌기가 있습니다:

  • 수상돌기(Dendrite):
    나뭇가지처럼 퍼진 구조, 다른 뉴런으로부터 신호를 받는 역할
  • 축삭돌기(Axon):
    하나의 긴 돌기로, 신호를 다른 뉴런에게 전달
  • 축삭돌기의 특징:
    • 길이가 세포체의 수 배에서 최대 4만 배에 달할 수 있음
    • 끝 부분은 **축삭끝가지(Axon Terminal)**로 나뉘며,
    • 각 끝은 **시냅스(Synapse)**라는 미세한 구조를 형성하여 다른 뉴런과 연결

생물학적 신호 전달 과정

  • 뉴런은 활동 전위(Action Potential, AP) 라는 짧은 전기 신호를 생성합니다.
  • 이 신호는 축삭돌기를 따라 이동하여 시냅스에 도달합니다.
  • 시냅스에서는 신경전달물질(Neurotransmitter) 이 분비되어 다른 뉴런의 수상돌기나 세포체에 신호를 전달합니다.
  • 일정 시간(약 1/1000초) 동안 충분한 양의 신경전달물질을 받으면 해당 뉴런도 새로운 전기 신호를 발생시키게 됩니다.

<생물학적 뉴런>


생물학적 신경망 (Biological Neural Network, BNN)

  • 단일 뉴런은 단순한 작동 원리를 가집니다.
  • 하지만 뉴런 수십억 개가 모여 거대한 네트워크를 구성하면,
    • 기억, 학습, 사고 등 고차원적인 기능이 가능해집니다.
  • 생물학적 신경망 구조는 현재도 활발히 연구되고 있으며, 뇌 과학 및 인공지능 연구의 중요한 주제입니다.

 

2. 뉴런을 사용한 논리 연산


MCP 뉴런 (McCulloch-Pitts Neuron)

  • 워런 메컬러(Warren McCulloch)월터 피츠(Walter Pitts)
    생물학적 뉴런을 기반으로 매우 단순한 신경망 모델을 계산해냈습니다.
  • 이 모델은 바로 인공 뉴런(Artificial Neuron) 의 탄생으로 이어졌습니다.

모델의 특징

  • 입력: 하나 이상의 이진 입력(On/Off, 1/0)
  • 출력: 하나의 이진 출력(On/Off, 1/0)

작동 원리

  • 인공 뉴런은,
    • 주어진 입력 중 일정 수 이상이 활성화될 경우,
    • 출력 신호를 생성합니다.

논리 연산과 인공 뉴런

  • 메컬러와 피츠는 논문을 통해
    이 단순한 인공 뉴런 네트워크로 모든 논리 명제를 계산할 수 있음을 증명했습니다.
  • 즉, 단순한 뉴런들의 조합만으로
    논리 연산(AND, OR, NOT 등) 을 모두 수행할 수 있다는 것입니다.

가정

  • 여기서는 입력이 2개 이상 활성화되어야 뉴런이 활성화된다고 가정합니다.

참고

  • 이런 인공 뉴런을 두 사람의 이름을 따서 MCP 뉴런(McCulloch-Pitts Neuron) 이라고 부르기도 합니다.

<간단한 논리 연산을 수행하는 인공 신경망>

 

 

3. 퍼셉트론 (Perceptron)

퍼셉트론(Perceptron)은 가장 기본적인 형태의 인공 신경망 구조 중 하나로,
1957년 프랭크 로젠블라트(Frank Rosenblatt)에 의해 제안되었습니다.

퍼셉트론은 TLU(Threshold Logic Unit) 또는 LTU(Linear Threshold Unit)라는,
조금 다른 형태의 인공 뉴런 모델을 기반으로 합니다.


퍼셉트론의 주요 특징

  • 입력과 출력은 이진(on/off) 값이 아니라 숫자(real number)입니다.
  • 각 입력 연결은 가중치(weight)와 연결되어 있습니다.
  • 퍼셉트론은 입력의 가중치 합을 계산한 후, 계단 함수(step function)를 적용하여 출력을 결정합니다.

수식 표현

  1. 가중합 계산
    입력 x=(x1,x2,…,xn)과 가중치 w=(w1,w2,…,wn)를 사용하여 다음을 계산합니다:

                                         z=w1x1+w2x2+⋯+wnxn=x^Tw

    2. 활성화 함수 적용
        계산된 가중합 z계단 함수(step function)를 적용하여 최종 출력을 구합니다:

                                          hw(x) = step(z)   where   z = x^Tw

 

       여기서 step 함수는 다음과 같이 정의된다.

 

<TLU: 입력의 가중치 합을 계산한 다음 계단 함수를 적용하는 인공 뉴런>

퍼셉트론에서 가장 널리 사용되는 계단 함수는 헤비사이드 계단함수(Heaviside step function)이다.

이따금 부호 함수(sign function)를 대신 사용하기도 한다.

 

3.1 퍼셉트론과 TLU

1. TLU(Threshold Logic Unit)와 선형 이진 분류

  • 하나의 TLU(Threshold Logic Unit)간단한 선형 이진 분류 문제에 사용할 수 있습니다.
  • 입력값들의 선형 조합을 계산하고, 그 결과가 임곗값(threshold)을 넘으면 양성 클래스(positive class)를 출력합니다.
    그렇지 않으면 음성 클래스(negative class)를 출력합니다.
  • 동작 방식은 로지스틱 회귀(Logistic Regression)선형 SVM 출력기와 유사합니다.

예시

  • 입력: 꽃잎의 길이와 너비
  • 편향(bias) 특성 x0=1x_0 = 1을 추가
  • 목표: 하나의 TLU를 훈련하여 붓꽃(Iris) 품종을 분류

훈련 과정은 최적의 가중치 (w0,w1,w2)(w_0, w_1, w_2)를 찾는 것입니다.


2. 퍼셉트론의 구조

  • 퍼셉트론(Perceptron)하나의 층(layer)만 가진 TLU들의 집합입니다.
  • 퍼셉트론의 각 TLU는 모든 입력완전히 연결(fully connected)되어 있습니다.
    • 이를 완전 연결 층(fully connected layer) 또는 밀집 층(dense layer)이라고 부릅니다.

입력층 (Input Layer)

  • 퍼셉트론의 입력은 입력 뉴런(input neuron)이라 불리는 특별한 통과 뉴런(pass-through neuron)에 주입됩니다.
  • 입력 뉴런은 입력을 가공하지 않고 그대로 통과시켜 출력합니다.
  • 입력층(input layer)은 모두 입력 뉴런으로 구성되며, 보통 여기에 편향 특성이 추가됩니다.
  • 편향 뉴런(bias neuron)은 항상 1을 출력하는 특별한 뉴런입니다.

3. 퍼셉트론 예시

  • 구성: 입력 2개, 출력 뉴런 3개
  • 이 퍼셉트론은 하나의 샘플을 3개의 이진 클래스동시에 분류할 수 있습니다.
  • 따라서 이 퍼셉트론은 다중 레이블 분류기(Multi-labeled Classifier)입니다.

 

 

선형 대수학 덕분에 다음 식을 사용하여 한번에 여러 샘플에 대해 인공 뉴런 층의 출력을 효율적으로 계산할 수 있다.

 

  • 이전과 마찬가지로 X는 입력 특성의 행렬을 나타낸다. 이 행렬의 행은 샘플, 열은 특성입니다.
  • 가중치 행렬 W는 편향 뉴런을 제외한 모든 연결 가중치를 포함한다. 이 행렬의 행은 입력 뉴런에 해당하고 열은 출력층에 있는 인공 뉴런에 해당합니다.
  • 편향 벡터 b는 편향 뉴런과 인공 뉴런 사이의 모든 연결 가중치를 포함한다. 인공 뉴런마다 하나의 편향 값이 있습니다.
  • 활성화 함수 (activation function)라고 부른다. 인공 뉴런이 TLU일 경우 이 함수는 계단 함수(step function)이다.

 

3.2 퍼셉트론 훈련 방법

1. 퍼셉트론 훈련의 기초

퍼셉트론(Perceptron)의 훈련 알고리즘은 헤브의 규칙(Hebb's Rule)에서 큰 영감을 받았습니다.
프랭크 로젠블라트(Frank Rosenblatt)는 퍼셉트론 학습 방법을 제안하면서,
생물학적 뉴런이 학습하는 방식을 모델링하려고 했습니다.


2. 헤브의 규칙(Hebb's Rule)이란?

  • 도널드 헤브(Donald Hebb)는 생물학적 뉴런 연구를 통해 다음과 같은 아이디어를 제안했습니다:
  • "한 뉴런이 다른 뉴런을 활성화할 때, 이 두 뉴런 사이의 연결이 강화된다."
  • 이 개념은 나중에 시에그리드 로웰(Siegfried Löwel)이 간결하게 요약했습니다:
  • "서로 활성화되는 세포가 서로 연결된다."
  • 요약하면, 두 뉴런이 동시에 활성화될수록 이들 사이의 연결 가중치(weight)는 점점 더 강해지는 경향이 있습니다.

이 학습 원칙은 이후 헤브 학습(Hebbian Learning)으로 널리 알려졌습니다.


3. 퍼셉트론 학습 규칙

퍼셉트론은 순수한 헤브 학습을 그대로 사용하지는 않습니다.
대신, 예측 오차(prediction error)를 반영하여 가중치를 조정하는, 약간 변형된 규칙을 사용합니다.

핵심은 다음과 같습니다:

  • 오차가 발생할 경우 → 올바른 출력을 내도록 연결 가중치를 수정한다.
  • 가중치 조정 방향은 오차를 줄이는 쪽으로 설정된다.

  • wi, j는 i번째 입력 뉴런과 j번째 출력 뉴런 사이를 연결하는 가중치입니다.
  • xi는 현재 훈련 샘플의 i번째 뉴런의 입력값입니다.
  • yi는 현재 훈련 샘플의 j번째 출력 뉴런의 출력값입니다.
  • yj는 현재 훈련 샘플의 j번째 출력 뉴런의 타깃값입니다.
  • η는 학습률입니다

 

각 출력 뉴런의 결정 경계는 선형이므로 퍼셉트론도 복잡한 패턴을 학습하지 못한다. 

하지만 로젠블라트는 훈련 샘플이 선형적으로 구분될 수 있다면 이 알고리즘이 정답에 수렴하는 것을 증명했다.

이를 퍼셉트론 수렴 이론(perceptron convergence theorem)이라고 한다.

 

사이킷런은 하나의 TLU 네트워크를 구현한 Perceptron 클래스를 제공한다.

이 파이썬 클래스를 동일한 방식으로 사용할 수 있습니다.

import numpy as np
from sklearn.datasets import load_iris
from sklearn.linear_model import Perceptron

iris = load_iris()
X = iris.data[:, (2,3)] #꽃잎의 길이와 너비
y = (iris.target == 0).astype(np.int) #부채붓꽃(Iris Setosa)인가?

per_clf = Perceptron()
per_clf.fit(X, y)

y_pred = per_clf.predict([2, 0.5])



3.3 퍼셉트론의 한계와 다층 퍼셉트론(MLP)의 등장

1. 퍼셉트론과 확률적 경사 하강법(SGD)

퍼셉트론 학습 알고리즘은 확률적 경사 하강법(SGD, Stochastic Gradient Descent)과 매우 유사합니다.

  • 실제로 사이킷런(scikit-learn)의 Perceptron 클래스는 다음 설정을 가진 SGDClassifier와 동일합니다:
    • loss="perceptron"
    • learning_rate="constant"
    • eta0=0.1 (학습률)
    • penalty=None (규제 없음)

즉, 퍼셉트론은 일종의 매우 단순한 형태의 SGD로 이해할 수 있습니다.


2. 퍼셉트론 vs 로지스틱 회귀

  • 퍼셉트론은 클래스 확률을 제공하지 않습니다.
  • 대신, 고정된 임곗값(threshold)을 기준으로 이진 예측을 수행합니다.
  • 반면, 로지스틱 회귀(Logistic Regression)는 클래스에 속할 확률(probability)을 예측할 수 있어
    더 많은 정보를 제공합니다.

이런 이유로 실제 분류 문제에서는 퍼셉트론보다는 로지스틱 회귀가 더 널리 선호됩니다.


3. 퍼셉트론의 한계

1969년, 마빈 민스키(Marvin Minsky)와 시모어 퍼페트(Seymour Papert)는
Perceptrons』라는 책을 통해 퍼셉트론의 여러 심각한 약점을 지적했습니다.

특히 퍼셉트론은 다음과 같은 문제를 해결할 수 없습니다:

  • XOR 문제와 같은 비선형 분리 문제(non-linearly separable problem)

이러한 한계 때문에 많은 연구자들은 퍼셉트론에 대한 기대를 접고,
논리학, 문제 해결, 검색 등의 고차원 인공지능 문제로 관심을 돌리게 되었습니다.


4. 다층 퍼셉트론(MLP)의 등장

그러나 이후 연구자들은 중요한 사실을 발견했습니다:

퍼셉트론을 여러 층으로 쌓으면 비선형 문제도 해결할 수 있다!

이렇게 여러 층을 가진 인공 신경망을 다층 퍼셉트론(MLP, Multi-Layer Perceptron)이라고 부릅니다.

MLP는 XOR 문제도 해결할 수 있습니다:

입력값 (x₁, x₂)출력값 (y)
(0, 0) 0
(0, 1) 1
(1, 0) 1
(1, 1) 0

특징:

  • 입력이 (0,0)이나 (1,1)일 때는 출력 0
  • 입력이 (0,1)이나 (1,0)일 때는 출력 1

MLP는 XOR 문제처럼 하나의 직선으로는 구분할 수 없는 문제를
비선형적인 방식으로 분류할 수 있습니다.

참고: XOR 문제를 푸는 MLP 구성

  • 대부분의 연결 가중치는 1로 설정됩니다.
  • 단, 특정 4개의 빨간색 연결만 별도로 조정되어 있습니다.

 

다음 편에서는 다층 퍼셉트론과 역전파, 회귀와 분류를 위한 다층 퍼셉트론에 대해 알아보겠습니다.