728x90
반응형

Feed Forward Network (FFN)

Feed Forward Network(FFN)는 가장 기본적인 인공 신경망 구조입니다. 완전 연결 층(Fully Connected Network, FCN)이라고도 불리며, 각 층의 모든 뉴런이 다음 층의 모든 뉴런과 연결되어 있습니다.

작동 원리:

  • 입력층은 데이터를 받아들이는 첫 번째 층입니다.
  • 은닉층은 입력 데이터를 처리하며, 여러 개의 층으로 구성될 수 있습니다.
  • 출력층은 최종 결과를 내보내는 층입니다.

FFN의 주요 특징은 '고차원 공간에서의 클러스터링'입니다. 이것은 다양한 특성을 가진 데이터를 고차원 공간에서 분류하는 능력을 의미합니다. 예를 들어, 이미지 분류 문제에서 픽셀값들의 패턴을 인식하여 고양이 사진과 강아지 사진을 구분할 수 있습니다.

현실 세계의 활용 예로는 얼굴 인식, 음성 인식, 자연어 처리 등이 있습니다. 예를 들어, 스마트폰의 잠금 해제 기능에서 얼굴 인식은 FFN과 같은 신경망 구조를 활용합니다.

심층 신경망의 가능성 근거

인공 신경망이 왜 효과적인지 이해하려면 그 근본적인 영감의 원천인 인간의 뇌를 살펴볼 필요가 있습니다.

생물학적 뉴런과 인공 뉴런의 비교:

  • 생물학적 뉴런은 수상돌기(입력), 세포체(처리), 축삭돌기(출력), 시냅스(연결)로 구성됩니다.
  • 인공 뉴런은 이를 단순화하여 입력값(x), 가중치(w), 활성화 함수(f), 출력값(o)으로 모델링합니다.

퍼셉트론의 수학적 표현

퍼셉트론은 가장 기본적인 인공 신경망의 구성 요소입니다. 1957년에 프랭크 로젠블랫이 개발한 이 알고리즘은 현대 딥러닝의 기초가 되었습니다.

수학적 원리:

  1. 여러 입력값(i₁, i₂, ...)에 각각 가중치(w₁, w₂, ...)를 곱합니다.
  2. 이들의 합(Σ)에 편향(b)을 더합니다.
  3. 이 결과를 활성화 함수(f)에 통과시켜 최종 출력을 얻습니다.

퍼셉트론의 기본 방정식 i₁·w₁ + i₂·w₂ = 0은 2차원 평면에서 직선을 의미합니다. 이 직선은 데이터를 두 클래스로 분류하는 '결정 경계'가 됩니다. 이것이 바로 '선형 분류기'의 개념입니다.

실생활 예시로는 이메일 스팸 필터를 들 수 있습니다. 메일에 포함된 특정 단어들(입력)에 가중치를 부여하고, 그 합계가 특정 임계값을 넘으면 스팸으로 분류하는 방식으로 작동할 수 있습니다.

퍼셉트론의 한계는 XOR 문제와 같은 선형적으로 분리할 수 없는 문제를 해결할 수 없다는 점입니다. 이러한 한계를 극복하기 위해 다층 퍼셉트론(MLP)이 등장했습니다.

활성화 함수의 종류와 특징

활성화 함수는 신경망에 비선형성을 추가하는 중요한 요소입니다. 비선형성이 없다면, 아무리 많은 층을 쌓아도 단일 층과 수학적으로 동일한 기능만 수행할 수 있습니다.

주요 활성화 함수:

  1. 계단 함수 (Step Function)
    • 가장 단순한 형태의 활성화 함수입니다.
    • 입력이 0보다 크거나 같으면 1, 작으면 0을 출력합니다.
    • 단점: 미분이 불가능하여 경사 하강법을 적용할 수 없습니다.
    • 활용: 초기 퍼셉트론에서 사용되었으나 현대 딥러닝에서는 거의 사용되지 않습니다.
  2. 시그모이드 함수 (Sigmoid)
    • 모든 입력을 0과 1 사이의 값으로 매핑합니다.
    • 수식: σ(z) = 1/(1+e^(-z))
    • 장점: 출력이 확률처럼 해석될 수 있습니다.
    • 단점: 깊은 신경망에서 기울기 소실 문제를 일으킬 수 있습니다.
    • 활용: 이진 분류 문제의 출력층에서 주로 사용됩니다.
  3. ReLU (Rectified Linear Unit)
    • 입력이 0보다 크면 그대로 출력, 작으면 0을 출력합니다.
    • 수식: f(z) = max(0, z)
    • 장점: 계산이 단순하고 경사 소실 문제가 적습니다.
    • 단점: 일부 뉴런이 '죽는' 현상(Dying ReLU)이 발생할 수 있습니다.
    • 활용: 현대 CNN, RNN 등 대부분의 딥러닝 모델에서 사용됩니다.
  4. Softmax 함수
    • 다중 클래스 분류를 위한 활성화 함수입니다.
    • 각 클래스의 확률 값으로 해석할 수 있는 출력을 생성합니다.
    • 수식: softmax(z)_i = e^z_i / Σ e^z_j
    • 활용: 다중 분류 문제의 출력층에서 사용됩니다(예: MNIST 숫자 인식).

활성화 함수의 선택은 신경망의 성능에 큰 영향을 미칩니다. 최근에는 ReLU와 그 변형(LeakyReLU, PReLU 등)이 은닉층에서 널리 사용되고, 출력층에서는 문제의 특성에 따라 시그모이드나 소프트맥스가 주로 사용됩니다.

실습 환경 구축

신경망과 딥러닝을 공부하려면 적절한 개발 환경이 필요합니다. 이 강의에서는 다음과 같은 환경을 구축하게 됩니다:

  1. 주피터 노트북 설치
    • 데이터 분석과 시각화를 위한 대화형 환경
    • 설치 명령어: pip install jupyterlab 또는 pip install notebook
    • 실행 명령어: jupyter lab 또는 jupyter notebook
  2. 텐서플로우 설치
    • 구글에서 개발한 딥러닝 프레임워크
    • 설치 명령어: pip install tensorflow
    • 버전 확인: import tensorflow as tf; print(tf.__version__)
  3. 구글 Colab 활용
    • 별도의 설치 없이 웹 브라우저에서 Python과 TensorFlow를 실행할 수 있는 환경
    • GPU/TPU를 무료로 사용할 수 있어 딥러닝 학습에 유리
    • 구글 계정만 있으면 바로 시작 가능: colab.research.google.com

실습 환경이 준비되면, MNIST 데이터셋을 이용한 숫자 인식, Fashion MNIST를 이용한 의류 이미지 분류, 자연어 처리를 위한 LSTM 모델 구현 등 다양한 실습을 진행하게 됩니다.

 

728x90
반응형

+ Recent posts