검수요청.png검수요청.png

"인공신경망"의 두 판 사이의 차이

위키원
이동: 둘러보기, 검색
잔글
(활성화함수)
31번째 줄: 31번째 줄:
  
 
*시그모이드 함수(Sigmoid Function)
 
*시그모이드 함수(Sigmoid Function)
:  <math> Y = sigmoid(Wx + b) </math> <br> 로지스틱함수라고도 하며 X값의 변화에 따라 0부터 1까지의 값을 출력하는 S자형(비선형)함수이다. 0과 1사이에도 연속적인 출력값이 있다는 것으로 보고, 미분이 가능하도록 사이를 부드럽게 이어주는 특징과 함께 입력 전체 범위에 걸쳐 도함수를 계산할 수 있다는 특징을 가진다. 제일 큰 함수 값이 거의 1이고 매우 작은 값을 가지면 거의 0이다. 이런 특징들 덕분에 신경망 초기에는 많이 사용되었지만 그라디언트 배니싱(Gradient Vanishing)현상이나 함수값 중심이 0이 아니라 학습이 느려질 수 있고, exp 함수 사용시 비용이 크다는 단점들 때문에 최근에는 자주 사용하지 않게 되엇다.
+
:  <math> Y = sigmoid(Wx + b) </math> <br> 로지스틱함수라고도 하며 <math> X </math>값의 변화에 따라 0부터 1까지의 값을 출력하는 S자형(비선형)함수이다. 0과 1사이에도 연속적인 출력값이 있다는 것으로 보고, 미분이 가능하도록 사이를 부드럽게 이어주는 특징과 함께 입력 전체 범위에 걸쳐 도함수를 계산할 수 있다는 특징을 가진다. 제일 큰 함수 값이 거의 1이고 매우 작은 값을 가지면 거의 0이다. 이런 특징들 덕분에 신경망 초기에는 많이 사용되었지만 그라디언트 배니싱(Gradient Vanishing)현상이나 함수값 중심이 0이 아니라 학습이 느려질 수 있고, exp 함수 사용시 비용이 크다는 단점들 때문에 최근에는 자주 사용하지 않게 되엇다.
  
 
*하이퍼볼릭탄젠트 함수(Hyperbolic tangent function)
 
*하이퍼볼릭탄젠트 함수(Hyperbolic tangent function)

2019년 9월 20일 (금) 08:58 판

인공신경망(ANN; Artificial Neural Network)은 사람 또는 동물 두뇌의 신경망에 착안하여 구현된 컴퓨팅 시스템으로 인간의 신경을 흉내낸 머신러닝 기법이다.

개요

인공신경망(ANN)은 인간의 뇌가 패턴을 인식하는 방식을 모사한 알고리즘으로 시각, 청각 입력 데이터를 퍼셉트론이나 분류, 군집을 이용하여 해석하는데, 이렇게 해석한 결과를 이용하면 이미지나 소리, 문자, 시계열 데이터등 에서 특정 패턴을 인식할 수 있다.[1] 인공신경망을 이용하면 각종 분류및 군집화가 가능하다. 분류나 군집화를 원하는 데이터 위에 여러가지 층을 얹어서 원하는 작업을 하게 된다. 긱 층은 라벨링이 되어 있지 않은 데이터를 비교하여 유사도를 구할 수 있고, 라벨링이 되어있는 데이터는 분류기를 학습하여 자동으로 데이터를 분류할 수 있게 한다. 즉, 인공신경망으로 특징을 추출하고 추출한 특징을 다시 다른 기계학습 알고리즘의 입력으로 사용하여 분류또는 군집화를 할 수 있다.

예를 들면 인공신경망이 사람들의 암 발병률을 예측하도록 학습할 수 있다. 암에 걸리거나 걸리지 않은 사람들이 각각 어떤 행동 패턴을 가지고 있는지, 어떤 기준으로 어떻게 분류하는지를 신경망이 학습할 수 있도록한다. 가지고 있는 데이터로 학습이 잘 되었다면 사람들의 행동 패턴을 이용해 암에 걸릴 확률을 예측할 수 있다.

역사

  • 1940년대
인간 기억에 대한 연구는 워렌 맥클록(Warren McCulloch)과 월터 피츠(Walter Pitts)가 뉴런이 작동하는 방법에 관해 논문을 작성하던 1943년에 큰 변화를 맞이한다. 맥클록은 철학과 의학분야에서 학위를 받고 신경정신과 교수였으며, 월터 피츠는 뇌신경 시스템에 관심이 많은 수학자였다. 이들은 전기스위치처럼 끄고 켤 수 있는 인공 신경을 그물망 형태로 연결하면 인공 신경이 사람의 뇌에서 동작하는 간단한 기능을 흉내 낼 수 있다는 것을 이론적으로 증명했다. 이것이 최초의 뉴런 인공신경망 모델이다. 당시 이 모델은 단순한 선형 모델이었기 때문에 한계가 있었지만 퍼셉트론(perceptron)등 이후의 인공신경망 연구로 이어진다. 1940년대 후반에 심리학자인 도널드 헤비안(Donald Hebb)은 신경가소성의 원리에 근거한 학습의 기본 가정인 헤비안 학습(Hebbian learning)을 만들었다. 헤비안 학습은 전형적인 자율학습으로 장기강화(long term potentiation)의 초기모델이 된다.
  • 1950년대
1954년 팔리(Farley)와 웨슬리 클라크(Wesley A. Clark)는 MIT에서 헤비안 네트워크를 모의 실험하기 위해 처음으로 계산학 모델을 사용하였다. 이 모델은 후에 계산기라고 불린다. 그 외에도 로체스터(Rochester), 홀랜드(Holland), 하빗(Habit), 두다(Duda)등이 다른 신경망 계산학 기계들을 만들었다. 뉴욕 코넬 항공 공학 연구소 컴퓨터 과학지인 프랭크 로젠블라트(Frank Rosenblatt)는 패턴인식을 위해 간단한 덧셈과 뺄셈이 가능한 이층구조의 학습 컴퓨터 망에 근거한 알고리즘인 퍼셉트론(Perceptron)을 만들었다.
  • 1960년대
마빈 민스키(Marvin Minsky)와 시모어 페퍼트(Seymour Papert)에 의해 기계학습 논문이 발표된 후 1969년에 신경망 연구는 침체되었다. 이들은 인공신경망에서 두 가지 문제점을 찾아냈는데, 첫번째는 단층 신경망은 배타적 논리합 회로(exclusive-or circuit)를 처리하지 못한다는 것, 두번째는 거대한 신경망에 의해 처리되는 긴 시간을 컴퓨터가 효과적으로 처리할 만큼 정교하지 못한다는 것이다. 이 후 컴퓨터가 충분히 빨리지고, 배타적 논리합 문제를 효율적으로 처리하는 오차역전파법이 만들어지기 전까지 신경망 연구는 더디게 진행되었다.[2]
  • 1980년대
중반 병렬 분산 처리는 연결주의라는 이름으로 주목받았다. 데이비드 럼멜하트(David E. Rumelhart)와 제임스 맥클레랜드(James McClelland)가 쓴 교과서에는 연결주의를 이용해 신경 처리를 컴퓨터에서 모의 실험하기 위한 모든 것을 설명하고있다. 인공신경망이 얼마나 뇌의 기능을 반영하는지가 불분명하기때문에 뇌 신경 처리의 간단한 모델과 뇌 생물학적 구조간의 상관관계에 대해 논란이 되지만 인공지능에서 사용되는 신경망은 전통적으로 뇌 신경 처리의 간단한 모델로 간주된다.
  • 2000년대이후
2000년대 딥러닝 출현 이후 신경 집합의 새로운 관심은 다시 조명받게되었다. 생물물리학 모의실험이나 뇌신경학 컴퓨팅을 위한 계산학 디바이스들은 CMOS를 통해 만들어졌다. 최근엔 큰 범위의 기본 요소들의 분석과 합성을 위해 나노 디바이스등이 제작되고 있는데 이는 디지털 컴퓨팅을 뛰어넘는 신경 컴퓨팅의 새로운 시대를 도래할 것이다. 2009년부터 2012년동안 스위스 AI 연구실(IDSIA)에서 위르겐 슈밋흠바(Jürgen Schmidhuber)과 댄 크리슨(Dan Ciresan)등은 패턴 인식 경연에서 여러 번 우승하였다. 이들의 신경망은 처음으로 교통표지판 또는 MINIST 필기 인식 분야에서 인간과 비슷한, 또는 인간을 넘어서는 인공 패턴 인식이었다. 오늘날 신경망은 판독기, 일기 예보, 폭탄 탐지기 심지어 금융시장 예측까지도 이용되는 광학식 문자판독 기반 기술로 사용되고 있다.[3] 또한 2010년대에는 컴퓨터 하드웨어 및 학습 알고리즘의 발달로 수십 개의 은닉층(hidden layer)이 있는 심층신경망(DNN: Deep Neural Network)이 널리 사용되고 있다. 이미지 및 자연어 처리, 음성 인식 등의 분야에서 기존의 기계 학습 방법의 성능을 뛰어 넘는 결과를 보여주고 있다.

작동원리

활성화함수

인공신경망은 인간의 뉴런(Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. 뉴런은 가지돌기로부터 신호를 받아들여 출삭돌기에서 축삭말단으로 전달한다. 이때 불필요한 정보일 경우 다음 뉴런으로 전달하지 않는데 이런 특성과 원리를 이용해 인공지능을 개발한 것이다. 뉴런과 신경망 원리에 인공 뉴런의 개념을 덧씌우면 입력신호(입력값x)에 가중치(W)를 곱하고 편향(b)를 더한 뒤 활성화함수를 거쳐 결과값(y)를 만들어 내기 위해 가중치와 편향을 변경해가면서 적절한 값을 찾아내는 과정을 학습 또는 훈련이라고 한다.

활성화 함수(activation function)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지 결정하는 함수이다. 즉, 활성화 함수는 인공 뉴런의 핵심 중에서도 가장 중요한 요소라고 할 수 있다. 활성화함수는 크게 단극성 활성화함수와 양극성 활성화함수로 구분된다. 단극성 활성화함수는 출력값이 양수만 가능하고, 양극성 활성화함수는 음수,양수 모두 출력가능한 함수를 나타낸다. 대표적인 활성화 함수에는 step, Sigmoid, tanh,ReLU 함수가 있다.

  • 스텝 함수(step funtion)

가장 기본이 되는 활성화 함수는 스텝 함수라고 할 수 있다. 그래프 모양이 계단과 같이 생겨 임계값을 기준으로 활성화 되거나 비활성화 되는 형태를 보인다.
  • 시그모이드 함수(Sigmoid Function)

로지스틱함수라고도 하며 값의 변화에 따라 0부터 1까지의 값을 출력하는 S자형(비선형)함수이다. 0과 1사이에도 연속적인 출력값이 있다는 것으로 보고, 미분이 가능하도록 사이를 부드럽게 이어주는 특징과 함께 입력 전체 범위에 걸쳐 도함수를 계산할 수 있다는 특징을 가진다. 제일 큰 함수 값이 거의 1이고 매우 작은 값을 가지면 거의 0이다. 이런 특징들 덕분에 신경망 초기에는 많이 사용되었지만 그라디언트 배니싱(Gradient Vanishing)현상이나 함수값 중심이 0이 아니라 학습이 느려질 수 있고, exp 함수 사용시 비용이 크다는 단점들 때문에 최근에는 자주 사용하지 않게 되엇다.
  • 하이퍼볼릭탄젠트 함수(Hyperbolic tangent function)
하이퍼볼릭탄젠트 함수(TanH함수)는 시그모이드함수를 재활용 하여 -1부터 1의 범위를 갖는 함수로 쌍곡선 함수중 하나이다. 함수의 중심값을 0으로 옮겨 시그모이드 함수의 최적화 과정이 느려지는 문제를 해결했다. 하지만 미분함수에 대한 일정값 이상 커질시 미분값이 소멸되는 그라디언트 배니싱문제는 여전히 남아있다.
  • 정류선형단위 함수 (Rectified Linear Unit)

정류선형단위 함수(ReLU함수)는 최근 가장 많이 사용되는 활성화 함수이다. 이면 기울기가 1인 직선이고, 이면 함수값이 0이 된다. Sigmoid함수나 TanH함수와 비교했을 때 학습이 훨씬 빨라진다는 장점이 있고, 연산 비용이 크지 않고 구현이 매우 간단하다. 하지만 인 값들에 대해서 기울기가 0이 되기때문에 뉴런이 죽을 수도 있다는 단점이 존재한다. 활성화 함수로 ReLU함수를 많이 사용하는데 ReLU함수는 입력값이 0보다 작으면 항상 0을, 0보다 크면 입력값을 그대로 출력한다. 학습 목적에 따라 각기 다른 활성화 함수를 사용해야한다.

인공뉴런 연결

인공뉴런은 가중치와 활성화 함수의 연결로 이루어진 간단한 구조라고 할 수 있다. 간단한 개념의 인공 뉴런을 충분히 많이 연결하는 것만으로도 인간이 인지하기 어려운 복잡한 패턴까지도 스스로 학습할 수 있게 된다. 인공 뉴런을 연결해 구성한 인공신경망은 입력층, 은닉층, 출력층 세 가지 층으로 구분된다. 모든 층들은 노드로 구성되어있다. 각 입력노드와 은닉노드들은 모두 가중치를 가지는 망으로 연결되어 있으며 은닉노드와 출력노드도 마찬가지로 연결된다. 즉, 뉴런과 시냅스의 관계를 모방하여 간소화한 인공신경망 모델의 목표는 각 노드를 연결하는 가중치를 알아내는 것이다. 각각의 뉴런을 연결하는 시냅스의 적절한 임계값을 찾는 것이라고 할 수 있다.

  • 입력층(Input Layer) : 초기 데이터가 세팅되는 뉴런층, 시스템 외부로부터 입력자료를 받아들여 시스템으로 전송한다.
  • 은닉층(Hidden Layer) : 데이터가 드러나지 않고 가려져있는 뉴런층, 시스템 안쪽에 자리잡고 있으며 입력 값을 넘겨받아 처리한뒤 결과를 산출한다.
  • 출력층(Output Layer) : 결과적으로 얻고자 하는 학습된 데이터가 담긴 뉴련층, 입력 값과 현재 시스템 상태에 기준하여 시스템 출력 값을 산출한다.

위 뉴런들은 각각 많은 가중치와 바이어스 값의 조합을 가진다. 수천 수만개의 가중치와 바이어스 값의 조합을 일일이 변경하며 계산하기엔 오랜 시간이 걸려 신경망을 제대로 훈련시키기가 어렵다. 또한 신경망 층이 깊어질수록 시도해야하는 조합의 경우의 수가 더욱 늘어나기 때문에 유의미한 신경망을 만들기란 거의 불가능하다고 여겨졌다. 그 해법을 끈질기게 연구하던 제프리 힌튼 교수가 신경망 학습 알고리즘을 개발하고 심층신경망을 효율적으로 학습시킬 수 있음을 증명했다. 심층신경망은 매우 많은 은닉층을 두어 단계적으로 학습시킬 수 있고, 그러한 배경에서 뉴런들을 학습시키는 것을 딥러닝이라고 한다. 단순한 수치 계산과 병렬 처리에 강한 GPU가 발전하면서 본격적인 딥러닝의 시대가 열렸고, 이렇게 발전해온 알고리즘의 중심에는 역전파(backpropagation)가 있다.

역전파

많은 가중치와 바이어스 값의 조합이 전파되는 과정에서 가중치와 바이어스 값을 조절하지만 단순히 데이터를 한쪽으로 전달하면 데이터 최적화가 잘 이루어지지 않는다. 따라서 결과값에서 오차가 발생하면 해당 오차만큼 다시 반대쪽으로 전파시키면서 가중치를 갱신하는 기술이 사용되는데 이를 역전파(Backpropagation)라고 한다. 즉, 출력층이 내놓은 결과의 오차를 신경망을 따라 입력층까지 역으로 전파하며 계산해나가는 기술이다. 입력층부터 가중치를 조절해가는 기존의 방식보다 훨씬 유의미한 방식으로 가중치를 조절해주기 때문에 최적화 과정이 훨씬 빠르고 정확해진다. 역전파는 신경망을 구현할 때 거의 항상 적용해야 하는 알고리즘이지만 구현하기 어렵다는 단점이 있다. 하지만 텐서플로는 역전파 기법을 기본으로 제공해주기때문에 구현하는데에 문제점이 없다. 역전파는 다른 머신러닝 알고리즘보다 상대적으로 느린편이지만, 학습하는데에 있어 다른 모델들 보다 높은 정확도를 갖기때문에 주요기술이라고 할 수 있다.

인공신경망에서 역전파, 반대로 전파시킬 수 있는 값은 기대값과 실제값의 오차이다. 오차를 반대로 전하여 퍼트린다는 것은 결국 입력층의 노드들까지 오차를 각 노드마다 나눠준다. 가중치는 개별치에 부여되는 중요도라는 말이다. 즉 오차가 중요도 만큼씩 쌓여서 최종의 오차가 발생한다. 즉, 중요도에 비례하게 오차를 배분해 조정해 나가면 적절한 가중치로 고쳐나갈 수 있다. 학습을 하기 위해서는 입력데이터와 원하는 출력() 데이터가 존재해야한다. 입력이 신경망의 가중치와 곱하고 더하는 과정을 몇 번 반복하면 입력의 결과인 출력값()이 나오는데, 이때 출력값은 학습 데이터에서 주어진 출력()과는 다르다. 신경망에서는 만큼의 오차가 발생하며 오차에 비례하여 출력층의 가중치를 갱신한다. 은닉층의 가중치까지 갱신하고, 갱신방향은 신경망의 처리방향과 반대이기 때문에 역전파라고 한다.[4]

종류

퍼셉트론

퍼셉트론(Perceptron)은 뉴런의 수학적 모델을 말하며, 최초로 제안된 신경망 알고리즘이다. 선형 분류기로 XOR 문제와 같은 비선형 분류를 할 수 없다.

다층 인공신경망

다층 인공신경망(Multi Layer Perceptron)은

Convolution Neural Network

Recurrent Neural Network

전망

인공신경망은 기존의 분류나 예측모형보다 복잡한 모델을 가지며 많은 계산량을 요구한다. 실제 다양한 분야에서 우수한 성과를 보이며 그 유용성을 인정받고 있는데, 이러한 인공신경망은 하나의 문제점을 가진다. 연결강도, 은닉층의 갯수와 같은 다양한 피라미터들을 최적값으로 수렴시키는 과정에서 인공신경망 모델은 학습데이터에 과적합되는 경향을 보인다. 학습된 모델을 새로운 데이터에 적용했을 때 성과가 떨어진다는 의미이다. 최근 인공신경망은 알파고가 도입하고 있는 딥러닝이라는 알고리즘이 인공신경망의 과적합 문제를 해결할 수 있는 강력한 대안으로 떠오르며 다시 주목받고 있다. 머신러닝을 통한 인공지능의 발전은 무한한 가능성을 가지고 있다.

각주

  1. Chris Nicholson,〈인공 신경망 및 심층 신경망 소개〉, 《A.I.Wiki》
  2. 인공신경망〉, 《위키백과》
  3. 잭 챌리너, 인공신경망〉, 《죽기 전에 꼭 알아야 할 세상을 바꾼 발명품 1001》,2010-01-20
  4. 곽호안,〈역전파 알고리즘〉, 《실험심리학용어사전》, 2008

같이 보기


  검수요청.png검수요청.png 이 인공신경망 문서는 알고리즘에 관한 글로서 검토가 필요합니다. 위키 문서는 누구든지 자유롭게 편집할 수 있습니다. [편집]을 눌러 문서 내용을 검토·수정해 주세요.