ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [Algorithms] 인공 신경망(Artificial Neural Network)이란?
    Data Analysis/Algorithms 2020. 7. 27. 23:26

    Table of Contents

    1. Introduction
    2. 인공 신경망(Artificial Neural Network)이란?
    3. 인공 신경망 in R
    4. Reference

     

    Introduction

     지난 날 인터넷 기술의 발달과 재생 에너지를 기반으로 3차 산업 혁명을 이끌어 왔다면, 4차 산업혁명(The Fourth Industrial Revolution)은 초연결(Hyperconnectivity)과 초지능(Superintelligence)이라는 특징을 가지고 있기에 기존의 주변 환경을 보다 빠르게 변화시키고 있다. 이를 가능케 했던 근본적인 기술에는 인공 지능(Artificial Intelligence;AI), 사물 인터넷(Internet of Things;IoT), 클라우드 컴퓨팅(Cloud Computing), 빅데이터 등과 각 분야에서 한정하는 것이 아닌 자기 분야를 초월하여 다양한 분야에서의 융복합 기술들이 배경이 된다(한국정보통신기술협회).

     

     기술의 발달과 함께 데이터 생산이 다양화되고 증가하는 속도 역시 빠른 속도로 가속화되고 있다. 이와 함께 다양한 분야에서 인공 지능을 연구 및 적용함에 따라 다양한 영역으로 분류하고 있으며, 이는 다음 <그림 1>과 같이 머신 러닝(Machine Learning), 자연어 처리(Natural Language Processing), 음성 분석(Speech), 최적화(Optimization), 로보틱스(Robotics), 영상(Vision)으로 분류하고 있다(Reddy and Minsky).

     

    &lt;그림 1&gt; 인공지능(Artificial Intelligence) 영역

     

    인공 신경망(Artificial Neural Network)이란?

     인공 신경망은 바로 인공 지능을 적용하는 다양한 기술 중 하나인 머신 러닝(Machine Learning) 알고리즘으로 학습 데이터를 기반으로 문제를 해결하는 다양한 알고리즘 중에 한 가지 이다. 이름에서부터 알 수 있드시, 생물학에서 나오는 뉴런으로부터 아이디어가 확장한 개념이다. 인간의 뇌에 존재하는 신경세포(뉴런)는  <그림 2>와 같이 구성되어 있으며 뉴런은 수상돌기(Dendrite)로부터 신호를 받고 축삭돌기(Axon)으로 다른 뉴런에 신호를 전달한다. 이 때 뉴런 간의 사이를 연결하는 하는 것이 시냅스(Synapse)이다.

    &lt;그림 2&gt; 뉴런의 구조&nbsp;

     인공 신경망은 생물학에서 정의한 뉴런의 개념을 수학적으로 적용한 것으로 입력 데이터를 받아서 활성화 함수를 활용하여 값을 제어하여 출력하게 된다. 활성화 함수에는 흔히 부호 또는 분계점 함수(Sign or threshold function), 계단 함수(Step Function), 시그모이드 함수(Sigmoid Function), Softmax 함수, tanh 함수, 가우스 함수, ReLU 함수를 활용한다.

     

    - 부호 또는 분계점 함수의 결과는 -1 또는 1로 나온다.

    부호 함수

    - 계단 함수의 결과는 0 또는 1로 나온다.

    계단 함수

    - 시그모이드 함수의 결과는 0부터 1사이의 값으로 나온다.

    시그모이드 함수

    <그림 3>은 Layer1(입력층; Input Layer), Layer2, Layer3, Layer4(은닉층; Hidden Layer) 그리고 Layer5(출력층; Output Layer)로 구성된 인공 신경망이다.

     

    &lt;그림 3&gt; 은닉층이 3중인 인공 신경망

     

     인공 신경망의 초기 모델은 1943년 Warren McCulloch과 Walter Pitts에 의해 제안된 모델로 'On'과 'Off'의 이진 원소들의 결합을 바탕으로 인간의 신경구조 모델을 표현할 수 있다고 제안하였다. 현대의 인공신경망 구조는 1958년 Frank Rosenblatt에 의해 제한되었으며, 퍼셉트론(Perceptron)이란 개념을 제안하였다. 

     

    인공 신경망 in R

     인공 신경망을 위한 패키지는 'nnet', 'neuralnet', 'validann' 등이 있다. 그 중에서 'nnet'을 이용하여 쉽게 ANN을 적용할 수 있다. 아래의 순서에 따라 데이터 로드 > 샘플링 > 학습 > 모델 확인 > 검증 프로세스를 진행하면 된다. 

    > library(nnet)
    
    ######샘플 데이터 생성 및 로드
    > iris_new = data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),
    	                    species = factor(c(rep("s", 50), rep("c", 50), rep("v", 50))))
    
    ######학습 데이터 샘플링
    > samp = c(sample(1:50,25), sample(51:100,25), sample(101:150,25))
    
    ######ANN 알고리즘 학습
    > irn.nn = nnet(species ~ .,
                    iris_new,
                    subset = samp,
                    size = 2,             # 은닉층 노드 수
                    rang = 0.1,           # 초기 랜덤 가중치의 범위
                    decay = 5e-4,         # weight decay 모수(Default = 0)
                    maxit = 200)          # 최대반복수(Default = 100회)
    
    #######ANN 학습 결과	
    > irn.nn
    a 4-2-3 network with 19 weights
    inputs: Sepal.L. Sepal.W. Petal.L. Petal.W. 
    output(s): species 
    options were - softmax modelling 
    
    #######ANN 신경망 시각화
    > library(clusterGeneration)
    > library(scales)
    > library(reshape)
    > plot(irn.nn)
    
    ######정오표 작성
    > table(iris_new$species[-samp], predict(irn.nn, iris_new[-samp,], type = "class"))
    
         c  s  v
      c 22  0  3
      s  0 25  0
      v  1  0 24

     

    Reference

    1. 한국정보통신기술협회, "제4차 산업혁명, 第4次産業革命, The Fourth Industrial Revolution",  http://word.tta.or.kr/dictionary/dictionaryView.do
    2. R. Reddy and M. Minsky, "The challenge of Artificial Intelligence", 1996
    3. "Neuron", https://www.wikiwand.com/simple/Neuron
    4. Brian Ripley, "Feed-Forward Neural Networks and Multinomial Log-Linear Models", https://cran.r-project.org/web/packages/nnet/nnet.pdf

    댓글

Designed by Tistory.