본문 바로가기
AI/Basic

신경망 기초

by 컴돈AI 2023. 11. 10.

목차

    신경망이란?

    • 신경망(Neural Network)은 인공 지능과 기계 학습 분야에서 중요한 개념으로, 인간 뇌의 신경 세포(뉴런)의 동작을 모방하여 설계된 계산 모델입니다.
    • 작동 방식: 신경망은 입력 데이터에 대해 일련의 계산을 수행합니다. 각 뉴런은 입력된 데이터에 대해 가중치를 곱하고, 편향(bias)을 더한 다음, 비선형 활성화 함수를 적용합니다. 이러한 과정을 통해 신경망은 입력 데이터의 특징을 학습합니다.
    • 학습 과정: 신경망은 일반적으로 오류 역전파(Backpropagation)와 경사 하강법(Gradient Descent)을 사용하여 학습됩니다. 학습 과정에서는 신경망의 예측이 실제 값과 얼마나 차이가 있는지를 측정하고, 이 오차를 최소화하기 위해 네트워크의 가중치를 조정합니다.

    신경망 종류

    • 신경망 종류
      • 완전 연결 신경망(Fully Connected Neural Networks, FCNN) / 다층 퍼셉트론(Multi-Layer Perceptron, MLP)
        • 각 뉴런이 이전 층의 모든 뉴런과 연결되어 있는 기본적인 신경망 구조
        • 다양한 분류 및 회귀 문제에 사용
      • 합성곱 신경망(Convolutional Neural Networks, CNN)
        • 이미지와 같은 고차원 데이터의 공간적 특성을 활용하는 신경망
        • 이미지 분류, 객체탐지, 영상 인식 등에 사용
      • 순환 신경망(Recurrent Neural Networks, RNN)
        • 시퀀스 데이터 처리에 적합한 구조, 시간적인 정볼르 기억
        • 자연어, 음성 인식, 시계열 예측 등에 사용
      • LSTM, GRU, Transformer 등
    •  이중 가장 기본이 되는 신경망인 완전 연결 신경망(Fully Connected Neural Networks, FCNN) / 다층 퍼셉트론(Multi-Layer Perceptron, MLP)을 살펴보도록 하겠습니다.

    완전 연결 신경망(Fully Connected Neural Networks, FCNN) / 다층 퍼셉트론(Multi-Layer Perceptron, MLP)

    • 완전 연결 신경망(Fully Connected Neural Networks, FCNN) 또는 다층 퍼셉트론(Multi-Layer Perceptron, MLP)은 가장 기본적인 형태의 인공 신경망으로, 여러 개의 층(layers)으로 구성되어 있습니다.
    • 각 층은 여러 개의 뉴런을 가지고 있으며, 한 층의 모든 뉴런은 다음 층의 모든 뉴런과 연결(fully connected)되어 있습니다. 
      • Fully Connected라는 것은 한 층(layer)의 모든 뉴런이 다음 층의 모든 뉴런과 연결된 상태를 의미합니다.
      • 한 개의 뉴런은 선형회귀식에 비선형 활성화 함수가 포함된 형태로 표현할 수 있습니다.
        • 선형회귀는 feature들에 매개변수를 곱해주어서 하나의 값을 출력하기 때문입니다.
          • y = w0 + w1x1 + w2x2 + ... + wnxwn
          • y = w^(T)x + b
            • w = [[w1], [w2], ..., [wn]]  ( shape : (feature개수, 1) )
            • x = [[x1], [x2], ..., [xn]] ( shape : (feature개수, 1) )
      • 한 개의 층은 여러개의 뉴런으로 이루어져 있기 때문에 각 뉴런을 쌓아주게 되면 W행렬로 z = Wx+b로 표현됩니다. 자세한 내용은 아래 내용 참고 (단 여기서는 T를 붙이지 않고 그냥 작성합니다.)
    • z=Wx+b 식에 비선형 활성화함수(시그모이드, ReLU 등)를 적용하고, 여러개의 층으로 이루어진 것을 다층 퍼셉트론이라고 합니다.
    • 간단한 2층 퍼셉트론를 살펴보도록 하겠습니다.
      •  
        • 위 신경망이 2층 신경망인 이유는 신경망을 셀 때 입력층은 세지 않기 때문입니다. (입력층을 0번째 층이라고 표기, 매개변수와 관련이 없는 층이기 때문입니다.)
        • 위 그림에서 원 하나가 로지스틱 회귀와 같은 역할을 수행합니다. (비선형 활성화 함수는 시그모이드 말고 ReLU와 같은 다른 비선형함수로 변경 가능합니다.)
          • 로지스틱 회귀는 시그모이드 비선형 활성화함수를 적용한 것입니다.
      • 이제 각각의 원을 하나로 합쳐서 생각해보도록 하겠습니다. (데이터가 1개인 경우)
        • row 방향으로 각각의 원을 합쳐주게 되면 하나의 층에 대한 연산이 한 번에 진행되게 됩니다. (w를 합친 W를 표현할 때는 T를 제외하고 표현해 줍니다.)
      • 그렇다면, X, W, b, A 차원은 어떠한 값들에 영향을 받게 되는 걸까요? (데이터가 여러 개인 경우)
        • X 차원 : (input feature 개수, 데이터 개수)
        • W 차원 : (output feature 개수, input feature 개수)
        • b 차원 : (output feature 개수, 1)
        • A 차원 : (output feature 개수, 데이터 개수) 
        • 데이터의 개수는 X만 column 방향으로 쌓아주면 되고, output feature의 개수는 W와 b를 row방향으로 쌓아주면 됩니다. 따라서 그 결과 A차원은 (output feature 개수, 데이터 개수)가 됩니다.
      • 이처럼 이와 같은 연산이 층마다 feature 개수에 따라서 연산이 진행되게 됩니다. 여기서는 시그모이드 함수를 사용했는데 비선형 활성화 함수는 다른 것으로 바꿔서 사용해도 됩니다.

    표기법

    • 위 첨자 [ ] 숫자는 신경망의 층을 의미합니다. 
      • 참고 : ()로 묶인 위 첨자 숫자는 데이터의 개수를 의미하고, 아래 첨자 숫자는 몇 번째 feature 또는 매개변수를 의미합니다.
    • [] 와 ()는 둘 다 위첨자인데 이럴 경우 []를 먼저 작성해 줍니다. 

    신경망은 왜 비선형 함수가 필요할까?

    • 예시를 살펴보면 손쉽게 알 수 있습니다.
      • 비선형 함수가 없을 경우 신경망 층을 여러 개로 하더라도 결국에는 하나 쌓은 경우와 별다른 차이가 없게 됩니다.