[AI 이론] 딥러닝 - 퍼셉트론 한방에 끝내기 (Perceptron)

    딥러닝

    왜 사람들은 딥러닝을 이야기할 때 "뇌" 이미지를 자주 사용합니다.
    AI가 사람처럼 생각을 하는 걸까요? 곧 가능하겠지만, 아직은 아닌 것 같습니다.
    왜 "뇌" 이미지가 등장하는지 AI에 대해 소개하면서 알아보도록 하죠.

    AI

    출처: NVIDIA

    앞서 이야기한 사람처럼 생각하는 AI를 "General AI"라 합니다.
    현재 기술은 이미지 분류, 얼굴 인식 등 특정 기능에서 인간보다 좋은 능력을 갖는 "Narrow AI"의 수준에 있죠.
    AI에 대해 관심이 없는 분들도 "머신러닝"과 "딥러닝"이라는 용어는 들어보셨을 겁니다.
    간단한 설명과 함께 차이를 보도록 하죠.

    머신러닝

    "머신러닝"

    머신러닝은 AI의 하위집합입니다.
    정의는 데이터를 분석하고 학습한 후 정보를 바탕으로 결정을 내리기 위해 학습 내용을 적용한 알고리즘입니다.

    일반적으로 머신러닝을 말할 때는 스팸메일의 분류, 영화 추천 시스템 등을 예로 들죠.
    그렇다고 비교적 간단한 작업만 할 수 있는 것은 아닙니다.
    과거에는 "Narrow AI"조차 완성하기 어려웠지만,
    현재 머신러닝은 컴퓨터 비전등의 분야에서도 큰 성과를 이루고 있다고 해요.
    다만, 아직은 한계가 있는 상황이죠. (안개 낀 상황에서 표지판 인식률이 떨어져요.)

    딥러닝

    "딥러닝"

    딥러닝은 머신러닝의 하위 개념입니다.
    머신러닝의 한 방식으로 "인공 신경망(Artificial Neural Network)"라는 알고리즘이 활용되죠.

    출처:https://www.javatpoint.com/artificial-neural-network

    여기서 "AI와 뇌"의 관계가 나옵니다.
    "인공 신경망"은 인간의 뇌, 특히 뉴런의 연결 구조에서 영감을 받은 학습 알고리즘입니다.
    수많은 뉴런들이 연결된 것처럼 Layer들이 연결되어 있죠. (방법은 아래에서 다루겠습니다.)
    물론 복잡해질수록 모델이 무겁고, 학습을 위해 데이터가 많이 필요한 것은 사실입니다.
    딥러닝 예로 "강아지와 고양이"를 구분하는 AI를 이야기합니다.
    하지만 가장 유명한 것은 "AlphaGo"겠죠? (물론 AlphaGo는 강화학습에 포인트를 둘 수도 있습니다.)

    머신러닝과 딥러닝의 차이"답을 아는 문제인지, 모르는 문제인지"로 이야기하기엔 아쉬움이 있습니다.
    (Unsupervised Learning 등이 있기 때문이죠.)
    둘의 차이는 학습 과정에서 엔지니어의 개입 정도로 보는 것이 더 좋다고 생각합니다.


    퍼셉트론 (Perceptron)

    Perceptron은 Perception(인식, 지각) + Neuron(신경세포)의 합성어입니다.
    Perceptron은 인공신경망(ANN)의 한 종류인데요.
    다수의 입력값을 받아 하나의 값을 출력하는 알고리즘입니다.

    구성

    퍼셉트론의 기본 구성을 먼저 볼게요.

    • Input Layer: 입력값은 Vector로 생각하는 것이 좋습니다.
    • Weight & Bias
      • Weight(가중치)
        • 들어온 Input(신호)를 얼마나 증폭해줄지를 정하는 부분입니다.
        • 입력 Vector와 내적을 합니다. (같은 차원은 필수)
      • Bias(편향)
        • 들어온 Input에 무관하에 들어오는 값입니다. 
        • Scale값입니다.
    • Net Sum
      • 입력 Vector와 weight, bias를 합산합니다. 
      • w0x0 + w1x1 + b0
    • Activation Function: 비선형 성질을 갖고 있는 함수입니다. (sigmoid, tanh, ReLU, ...)
                                     XOR Gate Problem을 해결할 풍부한 표현력을 주는 녀석이죠.
                                     쉬운 이해를 위해 역치를 떠올리시면 됩니다. 다음 Node로 보낼지 말지를 정하는 기준이죠.
                                     다음 글(링크)에서 자세히 다뤄볼게요.
    • Hidden Layer: 다층 퍼셉트론에서 Input Layer와 최종 Output Layer 사이에 있는 Layer 들입니다.
    • Output Layer: Activation Function을 통해 나온 결과입니다.

     

    종류

    Perceptron은 Hidden Layer의 존재 여부에 따라 SLP와 MLP로 나뉩니다.

    단층 퍼셉트론 (SLP, Single-Layer Perceptron)

    출처1:https://www.javatpoint.com/single-layer-perceptron-in-tensorflow///출처2:https://m.blog.naver.com/windowsub0406/220883022888

    SLP는 Hidden Layer 없이 Input Layer와 Output Layer로 구성된 선형 모델(선형 분류기)입니다.
    SLP는 확실한 한계가 있는데요.
    선형 모델이기 때문에 Input 간의 관계는 찾을 수 없다는 점이죠.
    대표적인 예는 XOR Gate의 문제입니다. 바로 AI의 첫 빙하기를 부른 문제죠.
    디지털 논리 회로의 AND, NAND, OR Gate는 선형 모델로 구분이 가능합니다. 하지만 XOR 게이트는 구현하지 못하죠.
    (XOR Gate가 "개와 고양이" 문제와 같은 개념입니다.)

    다층 퍼셉트론 (MLP, Multi-Layer Perceptron)

    출처: https://www.javatpoint.com/single-layer-perceptron-in-tensorflow

    MLP가 나오면서 AI는 첫 빙하기에서 깨어납니다.
    MLP는 Input Layer와 Output Layer 사이에 Hidden Layer 가 존재하는 Perceptron이죠.
    SLP가 해결하지 못한 XOR Gate Problem을 해결하기 위해 시작했습니다.
    "SLP의 구조를 계속 쌓다 보면 Input 간의 관계식과 유사한 의미의 함수를 찾을 수 있지 않을까?"라는 생각이죠.

    이렇게 Hidden Layer들이 많아지면서 깊은 신경망이라는 의미에서 "Deep Learning"이라는 용어가 나왔다고 해요.


    여기까지 "AI와 퍼셉트론"에 대해 알아봤어요.
    다음에는 "Activation Function과 Loss Function"에 대해 알아보겠습니다.
    글이 도움이 되셨다면 공감 버튼 눌러주세요. 😊

    댓글

    Designed by JB FACTORY