"인공신경망"의 두 판 사이의 차이
(→역전파) |
잔글 (→같이 보기) |
||
(사용자 4명의 중간 판 62개는 보이지 않습니다) | |||
1번째 줄: | 1번째 줄: | ||
− | '''인공신경망'''(Artificial Neural Network)은 사람 또는 동물 두뇌의 신경망에 착안하여 구현된 [[컴퓨팅]] 시스템으로 인간의 신경을 흉내낸 [[머신러닝]] 기법이다. | + | '''인공신경망'''<!--인공 신경망-->(ANN; Artificial Neural Network)은 사람 또는 동물 두뇌의 신경망에 착안하여 구현된 [[컴퓨팅]] 시스템으로 인간의 신경을 흉내낸 [[머신러닝]] 기법이다. |
==개요== | ==개요== | ||
− | + | 인공신경망은 인간의 뇌가 패턴을 인식하는 방식을 모사한 알고리즘으로 시각, 청각 입력 [[데이터]]를 퍼셉트론(perceptron)이나 분류, 군집을 이용하여 해석하는데, 이렇게 해석한 결과를 이용하면 이미지나 소리, 문자, 시계열 데이터등에서 특정 패턴을 인식할 수 있다.<ref> Chris Nicholson, 〈[https://skymind.ai/kr/wiki/neuralnet-overview 인공 신경망 및 심층 신경망 소개]〉, 《A.I.Wiki》</ref> 인공신경망을 이용하면 각종 분류및 군집화가 가능하다. 분류나 군집화를 원하는 데이터 위에 여러가지 층을 얹어서 원하는 작업을 하게 된다. 각 층은 라벨링이 되어 있지 않은 데이터를 비교하여 유사도를 구할 수 있고, 라벨링이 되어있는 데이터는 분류기를 학습하여 자동으로 데이터를 분류할 수 있게 한다. 즉, 인공신경망으로 특징을 추출하고 추출한 특징을 다시 다른 [[기계학습]] [[알고리즘]]의 입력으로 사용하여 분류 또는 군집화를 할 수 있다. 예를 들면 인공신경망이 사람들의 암 발병률을 예측하도록 학습할 수 있다. 암에 걸리거나 걸리지 않은 사람들이 각각 어떤 행동 패턴을 가지고 있는지, 어떤 기준으로 어떻게 분류하는지를 신경망이 학습할 수 있도록한다. 가지고 있는 데이터로 학습이 잘 되었다면 사람들의 행동 패턴을 이용해 암에 걸릴 확률을 예측할 수 있다. | |
− | |||
− | 예를 들면 | ||
==역사== | ==역사== | ||
− | *1940년대 | + | * '''1940년대''' |
− | : 인간 기억에 대한 연구는 워렌 맥클록(Warren McCulloch)과 월터 피츠(Walter Pitts)가 [[뉴런]]이 작동하는 방법에 관해 논문을 작성하던 1943년에 큰 변화를 맞이한다. 맥클록은 철학과 의학분야에서 학위를 받고 신경정신과 교수였으며, 월터 피츠는 뇌신경 시스템에 관심이 많은 수학자였다. 이들은 전기스위치처럼 끄고 켤 수 있는 | + | : 인간 기억에 대한 연구는 워렌 맥클록(Warren McCulloch)과 월터 피츠(Walter Pitts)가 [[뉴런]]이 작동하는 방법에 관해 논문을 작성하던 1943년에 큰 변화를 맞이한다. 맥클록은 철학과 의학분야에서 학위를 받고 신경정신과 교수였으며, 월터 피츠는 뇌신경 시스템에 관심이 많은 수학자였다. 이들은 전기스위치처럼 끄고 켤 수 있는 인공신경을 그물망 형태로 연결하면 인공 신경이 사람의 뇌에서 동작하는 간단한 기능을 흉내 낼 수 있다는 것을 이론적으로 증명했다. 이것이 최초의 뉴런 인공신경망 모델이다. 당시 이 모델은 단순한 선형 모델이었기 때문에 한계가 있었지만 퍼셉트론 등 이후의 인공신경망 연구로 이어진다. 1940년대 후반에 심리학자인 [[도널드 헤비안]](Donald Hebb)은 신경가소성의 원리에 근거한 학습의 기본 가정인 [[헤비안 학습]](Hebbian learning)을 만들었다. 헤비안 학습은 전형적인 [[자율학습]]으로 [[장기강화]](long term potentiation)의 초기모델이 된다. |
− | *1950년대 | + | * '''1950년대''' |
− | : 1954년 팔리(Farley)와 웨슬리 클라크(Wesley A. Clark)는 MIT에서 헤비안 네트워크를 모의 실험하기 위해 처음으로 계산학 모델을 사용하였다. 이 모델은 후에 계산기라고 불린다. 그 외에도 로체스터(Rochester), 홀랜드(Holland), 하빗(Habit), 두다(Duda)등이 다른 신경망 계산학 기계들을 만들었다. 뉴욕 | + | : 1954년 팔리(Farley)와 웨슬리 클라크(Wesley A. Clark)는 MIT에서 헤비안 네트워크를 모의 실험하기 위해 처음으로 계산학 모델을 사용하였다. 이 모델은 후에 계산기라고 불린다. 그 외에도 로체스터(Rochester), 홀랜드(Holland), 하빗(Habit), 두다(Duda)등이 다른 신경망 계산학 기계들을 만들었다. 뉴욕 코넬대학교(Cornell University) 항공 공학 연구소 컴퓨터 과학자인 프랭크 로젠블라트(Frank Rosenblatt)는 패턴인식을 위해 간단한 덧셈과 뺄셈이 가능한 이층구조의 학습 컴퓨터 망에 근거한 알고리즘인 [[퍼셉트론]](Perceptron)을 만들었다. |
− | *1960년대 | + | * '''1960년대''' |
− | : 마빈 민스키(Marvin Minsky)와 시모어 페퍼트(Seymour Papert)에 의해 기계학습 논문이 발표된 후 | + | : 1969년, 마빈 민스키(Marvin Minsky)와 시모어 페퍼트(Seymour Papert)에 의해 기계학습 논문이 발표된 후 신경망 연구는 침체되었다. 이들은 인공신경망에서 두 가지 문제점을 찾아냈는데, 첫 번째는 단층 신경망은 배타적 논리합 회로(exclusive-or circuit)를 처리하지 못한다는 것, 두 번째는 거대한 신경망에 의해 처리되는 긴 시간을 컴퓨터가 효과적으로 처리할 만큼 정교하지 못한다는 것이다. 이 후 컴퓨터가 충분히 빨리지고, 배타적 논리합 문제를 효율적으로 처리하는 [[오차역전파법]]이 만들어지기 전까지 신경망 연구는 더디게 진행되었다.<ref name="위키">〈[https://ko.wikipedia.org/w/index.php?title=%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D&action=edit§ion=2#cite_note-10 인공신경망]〉, 《위키백과》</ref> |
− | *1980년대 | + | * '''1980년대''' |
: 중반 병렬 분산 처리는 연결주의라는 이름으로 주목받았다. 데이비드 럼멜하트(David E. Rumelhart)와 제임스 맥클레랜드(James McClelland)가 쓴 교과서에는 연결주의를 이용해 신경 처리를 컴퓨터에서 모의 실험하기 위한 모든 것을 설명하고있다. 인공신경망이 얼마나 뇌의 기능을 반영하는지가 불분명하기때문에 뇌 신경 처리의 간단한 모델과 뇌 생물학적 구조간의 상관관계에 대해 논란이 되지만 [[인공지능]]에서 사용되는 신경망은 전통적으로 뇌 신경 처리의 간단한 모델로 간주된다. | : 중반 병렬 분산 처리는 연결주의라는 이름으로 주목받았다. 데이비드 럼멜하트(David E. Rumelhart)와 제임스 맥클레랜드(James McClelland)가 쓴 교과서에는 연결주의를 이용해 신경 처리를 컴퓨터에서 모의 실험하기 위한 모든 것을 설명하고있다. 인공신경망이 얼마나 뇌의 기능을 반영하는지가 불분명하기때문에 뇌 신경 처리의 간단한 모델과 뇌 생물학적 구조간의 상관관계에 대해 논란이 되지만 [[인공지능]]에서 사용되는 신경망은 전통적으로 뇌 신경 처리의 간단한 모델로 간주된다. | ||
− | * | + | * '''2000년대 이후''' |
− | : 2000년대 [[딥러닝]] 출현 이후 신경 집합의 새로운 관심은 다시 | + | : 2000년대 [[딥러닝]] 출현 이후 신경 집합의 새로운 관심은 다시 조명받게 되었다. 생물물리학 모의실험이나 뇌신경학 컴퓨팅을 위한 계산학 디바이스들은 금속산화물반도체(complementary metal-oxide semiconductor, CMOS)를 통해 만들어졌다. 최근엔 큰 범위의 기본 요소들의 분석과 합성을 위해 나노 디바이스등이 제작되고 있는데 이는 디지털 컴퓨팅을 뛰어넘는 신경 컴퓨팅의 새로운 시대를 도래할 것이다. 2009년부터 2012년까지 스위스 AI 연구실(IDSIA)에서 위르겐 슈밋흠바(Jürgen Schmidhuber)과 댄 크리슨(Dan Ciresan) 등은 패턴 인식 경연에서 여러 번 우승하였다. 이들의 신경망은 처음으로 교통표지판 또는 MINIST 필기 인식 분야에서 인간과 비슷한, 또는 인간을 넘어서는 인공 패턴 인식이었다. 오늘날 신경망은 판독기, 일기 예보, 폭탄 탐지기 심지어 금융시장 예측까지도 이용되는 광학식 문자판독 기반 기술로 사용되고 있다.<ref> 잭 챌리너, [https://terms.naver.com/entry.nhn?docId=799067&cid=43121&categoryId=43121 인공신경망]〉, 《죽기 전에 꼭 알아야 할 세상을 바꾼 발명품 1001》, 2010-01-20 </ref> 또한 2010년대에는 컴퓨터 [[하드웨어]] 및 학습 알고리즘의 발달로 수십 개의 은닉층(hidden layer)이 있는 [[심층신경망]](Deep Neural Network, DNN)이 널리 사용되고 있다. 이미지 및 자연어 처리, 음성 인식 등의 분야에서 기존의 기계 학습 방법의 성능을 뛰어 넘는 결과를 보여주고 있다. |
+ | |||
+ | ==특징== | ||
+ | ===이론적특성=== | ||
+ | * '''오류탄력성''' : 오류 탄력성이 높으면 어느 한도 또는 범위내 오류가 입력, 연산에 발생하더라도 최종 결과에 미치는 영향이 없거나 매우 미미하다. 따라서 전체적인 성능에는 큰 문제가 없다. 대표적인 예가 컨볼루션신경망에서의 오류 탄력성이다. 기존의 모델에서 출력에 영향을 주지 않거나 적은 영향을 주는 한도내에서 노드간 연결망을 단순화 시킨다. 시냅스 가지치기를 통해 저장해야 할 연상망의 가증치가 줄어들게 된다. 저장해야 할 모델의 크기는 줄어들고 연산량을 크게 감소시킬 수 있기 때문에 추론 시 사용하는 하드웨어의 경량화까지 가능하다. | ||
+ | |||
+ | * '''수용성''' : 인공신경망 모델은 수용력의 특성을 가지며 이것은 신경망에서 주어진 함수 모델의 능력과 상당히 연관되어 있다. 신경망에 저장될 수 있는 어떤 정보의 총량과 정보 개념의 복잡도와 크게 연관된다. | ||
+ | |||
+ | * '''근사''' : 인공신경망을 계산할 때 근사에 대한 문제에 직면하게 되는데, 첫 번째로 국지적 최소값이 존재할 수 있다는 것이다. 이는 신경망의 비용함수와 모델에 영향을 받는다. 두 번째 문제는 알려진 최적화 방법은 국지적 최소값과 멀리 떨어져 있을 때 적당한 근사를 보장하지 않을 수 있다는 점이다. 세 번째로, 상당히 많은 양의 데이터나 변수들에 대해서 일부 알려져있는 알고리즘들은 비현실적일 수 있다. 일반적으로 근사에 대한 일노적 보장은 실생활 데이터에 적용할 때 신뢰하지 못할 수 있다고 알려져 있다. | ||
+ | |||
+ | ===장단점=== | ||
+ | ;장점 | ||
+ | * 시간에 따른 날씨의 변화등과 같은 수학적으로 해결 불가능한 복잡한 문제들을 분석하는데 유용하다. | ||
+ | * 모델링을 위한 계산이 간단하다. | ||
+ | * 은닉층의 결합함수나 은닉층과 출력층사이의 연결강도를 추정하기 쉽다. | ||
+ | * 학습을 통해 분석하기 때문에 기존 통계학적 분석방법에 비교하여 분석시간이 짧고, 비용이 적게든다. | ||
+ | * 패턴인식, 예측, 분류 등에 효과적이다. | ||
+ | * 범용 근사치추정모형으로 사용이 용이하다. | ||
+ | * 은닉단위 수를 조절하여 모든 함수를 정밀하게 모사 가능하다. | ||
+ | |||
+ | ;단점 | ||
+ | * 학습을 통해 찾은 최적의 가증치들은 신뢰도가 낮다. | ||
+ | * 새로운 데이터가 추가될 경우 학습을 처음부터 다시 시작해야 한다. | ||
+ | * 초기 가증치의 선택이 학습의 성능에 영향을 끼친다. | ||
+ | * 다수의 은닉마디를 필요로한다. | ||
+ | * 입력변수의 수가 많아질수록 필요한 은닉마디의 수가 급속하게 증가한다. | ||
+ | * 불필요하거나 중복된 입력자료에 대하여 민감하다. | ||
+ | * 실제 상황에 정확히 부합하는 작동을 학습하기 위해 수많은 경우에 대한 다양성을 가진 자료 수집을 필요로한다. | ||
+ | * 인간의 뇌와 같은 신경 그래프를 구축하기 위해 수백, 수천만개의 데이터베이스 행을 채워야 하는데 이는 엄청난 양의 컴퓨터 메모리와 하드디스크 공간을 소비하게 한다. | ||
− | == | + | ==작동 원리== |
===활성화함수=== | ===활성화함수=== | ||
− | 인공신경망은 인간의 뉴런(Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. | + | 인공신경망은 인간의 [[뉴런]](Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. 뉴런은 가지돌기로부터 신호를 받아들여 출삭돌기에서 축삭말단으로 전달한다. 이때 불필요한 정보일 경우 다음 뉴런으로 전달하지 않는데 이런 특성과 원리를 이용해 인공지능을 개발한 것이다. 뉴런과 신경망 원리에 인공 뉴런의 개념을 덧씌우면 입력신호 입력값 <math>(x)</math>에 가중치<math> (W) </math>를 곱하고 편향<math> (b) </math>를 더한 뒤 [[활성화함수]]를 거쳐 결과값(y)를 만들어 내기 위해 가중치와 편향을 변경해가면서 적절한 값을 찾아내는 과정을 학습 또는 훈련이라고 한다. |
+ | |||
+ | 활성화 함수(activation function)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지 결정하는 함수이다. 즉, 활성화 함수는 인공 뉴런의 핵심 중에서도 가장 중요한 요소라고 할 수 있다. 활성화함수는 크게 단극성 활성화함수와 양극성 활성화함수로 구분된다. 단극성 활성화함수는 출력값이 양수만 가능하고, 양극성 활성화함수는 음수, 양수 모두 출력 가능한 함수를 나타낸다. 대표적인 활성화 함수에는 스텝 함수(step), 시그모이드 함수(Sigmoid), 하이퍼볼릭탄젠트 함수(tanh), 정류선형단위 함수(ReLU) 함수가 있다. | ||
+ | |||
+ | * '''스텝 함수'''(step funtion) : <math> h(x) = \begin{cases} 0 (x\le0) \\ 1 (x>0) \end{cases} </math><br> | ||
+ | |||
+ | : 가장 기본이 되는 활성화 함수는 스텝 함수라고 할 수 있다. 그래프 모양이 계단과 같이 생겨 임계값을 기준으로 활성화 되거나 비활성화 되는 형태를 보인다. | ||
+ | |||
+ | * '''시그모이드 함수'''(sigmoid function) : <math> Y = sigmoid(Wx + b) </math> <br> | ||
− | + | : 로지스틱함수라고도 하며 <math> X </math>값의 변화에 따라 <math>0</math>부터 <math>1</math>까지의 값을 출력하는 S자형(비선형)함수이다. <math>0</math>과 <math>1</math>사이에도 연속적인 출력값이 있다는 것으로 보고, 미분이 가능하도록 사이를 부드럽게 이어주는 특징과 함께 입력 전체 범위에 걸쳐 도함수를 계산할 수 있다는 특징을 가진다. 제일 큰 함수 값이 거의 <math>1</math>이고 매우 작은 값을 가지면 거의 <math>0</math>이다. 이런 특징들 덕분에 신경망 초기에는 많이 사용되었지만 그라디언트 배니싱(Gradient Vanishing)현상이나 함수값 중심이 <math>0</math>이 아니라 학습이 느려질 수 있고, exp 함수 사용시 비용이 크다는 단점들 때문에 최근에는 자주 사용하지 않게 되엇다. | |
− | |||
− | |||
− | * | + | * '''하이퍼볼릭탄젠트 함수'''(TanH function) : 시그모이드함수를 재활용 하여 <math>-1</math>부터 <math>1</math>의 범위를 갖는 함수로 쌍곡선 함수중 하나이다. 함수의 중심값을 <math>0</math>으로 옮겨 시그모이드 함수의 최적화 과정이 느려지는 문제를 해결했다. 하지만 미분함수에 대한 일정값 이상 커질시 미분값이 소멸되는 그라디언트 배니싱문제는 여전히 남아있다. |
− | : | ||
− | * | + | * '''정류선형단위 함수'''(ReLU function) : <math> f(x) = max(0,x) </math> <br> |
− | : | ||
− | + | : 최근 가장 많이 사용되는 활성화 함수이다. <math> x>0 </math>이면 기울기가 <math>1</math>인 직선이고, <math> x<0 </math>이면 함수값이 <math>0</math>이 된다. 시그모이드 함수나 하이퍼볼릭탄젠트 함수와 비교했을 때 학습이 훨씬 빨라진다는 장점이 있고, 연산 비용이 크지 않고 구현이 매우 간단하다. 하지만 <math> x<0 </math>인 값들에 대해서 기울기가 <math>0</math>이 되기때문에 뉴런이 죽을 수도 있다는 단점이 존재한다. 활성화 함수로 정류선형단위 함수를 많이 사용하는데, 이는 입력값이 <math>0</math>보다 작으면 항상 <math>0</math>을, <math>0</math>보다 크면 입력값을 그대로 출력한다. 학습 목적에 따라 각기 다른 활성화 함수를 사용해야한다. | |
− | : | ||
+ | ===인공뉴런 연결=== | ||
+ | 인공뉴런은 가중치와 활성화 함수의 연결로 이루어진 간단한 구조라고 할 수 있다. 간단한 개념의 인공 뉴런을 충분히 많이 연결하는 것만으로도 인간이 인지하기 어려운 복잡한 패턴까지도 스스로 학습할 수 있게 된다. 인공 뉴런을 연결해 구성한 인공신경망은 입력층, 은닉층, 출력층 세 가지 층으로 구분된다. 모든 층들은 [[노드]]로 구성되어있다. 각 입력노드와 은닉노드들은 모두 가중치를 가지는 망으로 연결되어 있으며 은닉노드와 출력노드도 마찬가지로 연결된다. 즉, 뉴런과 시냅스의 관계를 모방하여 간소화한 인공신경망 모델의 목표는 각 노드를 연결하는 가중치를 알아내는 것이다. 각각의 뉴런을 연결하는 시냅스의 적절한 임계값을 찾는 것이라고 할 수 있다. | ||
− | + | * '''입력층'''(input layer) : 초기 데이터가 세팅되는 뉴런층, 시스템 외부로부터 입력자료를 받아들여 시스템으로 전송한다. | |
− | |||
− | * | + | * '''은닉층'''(hidden layer) : 데이터가 드러나지 않고 가려져있는 뉴런층, 시스템 안쪽에 자리잡고 있으며 입력 값을 넘겨받아 처리한뒤 결과를 산출한다. |
− | |||
− | |||
− | + | * '''출력층'''(output layer) : 결과적으로 얻고자 하는 학습된 데이터가 담긴 뉴련층, 입력 값과 현재 시스템 상태에 기준하여 시스템 출력 값을 산출한다. | |
+ | 위 뉴런들은 각각 많은 가중치와 바이어스 값의 조합을 가진다. 수천 수만 개의 가중치와 바이어스 값의 조합을 일일이 변경하며 계산하기엔 오랜 시간이 걸려 신경망을 제대로 훈련시키기가 어렵다. 또한 신경망 층이 깊어질수록 시도해야 하는 조합의 경우의 수가 더욱 늘어나기 때문에 유의미한 신경망을 만들기란 거의 불가능하다고 여겨졌다. 그 해법을 끈질기게 연구하던 제프리 힌튼 교수가 신경망 학습 알고리즘을 개발하고 [[심층신경망]]을 효율적으로 학습시킬 수 있음을 증명했다. 심층신경망은 매우 많은 은닉층을 두어 단계적으로 학습시킬 수 있고, 그러한 배경에서 뉴런들을 학습시키는 것을 [[딥러닝]]이라고 한다. 단순한 수치 계산과 병렬 처리에 강한 [[GPU]]가 발전하면서 본격적인 딥러닝의 시대가 열렸고, 이렇게 발전해온 알고리즘의 중심에는 [[역전파]](backpropagation)가 있다. | ||
===역전파=== | ===역전파=== | ||
− | 많은 가중치와 바이어스 값의 조합이 전파되는 과정에서 가중치와 바이어스 값을 조절하지만 단순히 데이터를 한쪽으로 전달하면 데이터 최적화가 잘 이루어지지 않는다. 따라서 결과값에서 오차가 발생하면 해당 오차만큼 다시 반대쪽으로 전파시키면서 가중치를 갱신하는 기술이 사용되는데 이를 역전파(Backpropagation)라고 한다. 즉, 출력층이 내놓은 결과의 오차를 신경망을 따라 입력층까지 역으로 전파하며 계산해나가는 기술이다. 입력층부터 가중치를 조절해가는 기존의 방식보다 훨씬 유의미한 방식으로 가중치를 조절해주기 때문에 최적화 과정이 훨씬 빠르고 정확해진다. 역전파는 신경망을 구현할 때 거의 항상 적용해야 하는 알고리즘이지만 구현하기 어렵다는 단점이 있다. 하지만 [[텐서플로]]는 역전파 기법을 기본으로 제공해주기때문에 | + | 많은 가중치와 바이어스 값의 조합이 전파되는 과정에서 가중치와 바이어스 값을 조절하지만 단순히 데이터를 한쪽으로 전달하면 데이터 최적화가 잘 이루어지지 않는다. 따라서 결과값에서 오차가 발생하면 해당 오차만큼 다시 반대쪽으로 전파시키면서 가중치를 갱신하는 기술이 사용되는데 이를 [[역전파]](Backpropagation)라고 한다. 즉, 출력층이 내놓은 결과의 오차를 신경망을 따라 입력층까지 역으로 전파하며 계산해나가는 기술이다. 입력층부터 가중치를 조절해가는 기존의 방식보다 훨씬 유의미한 방식으로 가중치를 조절해주기 때문에 최적화 과정이 훨씬 빠르고 정확해진다. 역전파는 신경망을 구현할 때 거의 항상 적용해야 하는 알고리즘이지만 구현하기 어렵다는 단점이 있다. 하지만 [[텐서플로]]는 역전파 기법을 기본으로 제공해주기때문에 구현하는 데 문제점이 없다. 역전파는 다른 머신러닝 알고리즘보다 상대적으로 느린편이지만, 학습하는 데 있어 다른 모델들 보다 높은 정확도를 갖기때문에 주요 기술이라고 할 수 있다. |
− | 인공신경망에서 역전파, 반대로 전파시킬 수 있는 값은 기대값과 실제값의 오차이다. 오차를 반대로 전하여 퍼트린다는 것은 결국 입력층의 노드들까지 오차를 각 노드마다 나눠준다. 가중치는 개별치에 부여되는 중요도라는 말이다. 즉 오차가 중요도 만큼씩 쌓여서 최종의 오차가 발생한다. 즉, 중요도에 비례하게 오차를 배분해 조정해 나가면 적절한 가중치로 고쳐나갈 수 있다. | + | 인공신경망에서 역전파, 반대로 전파시킬 수 있는 값은 기대값과 실제값의 오차이다. 오차를 반대로 전하여 퍼트린다는 것은 결국 입력층의 노드들까지 오차를 각 노드마다 나눠준다. 가중치는 개별치에 부여되는 중요도라는 말이다. 즉 오차가 중요도 만큼씩 쌓여서 최종의 오차가 발생한다. 즉, 중요도에 비례하게 오차를 배분해 조정해 나가면 적절한 가중치로 고쳐나갈 수 있다. 학습을 하기 위해서는 입력데이터와 원하는 출력(<math> o </math>) 데이터가 존재해야한다. 입력이 신경망의 가중치와 곱하고 더하는 과정을 몇 번 반복하면 입력의 결과인 출력값(<math> y </math>)이 나오는데, 이때 출력값은 학습 데이터에서 주어진 출력(<math> o </math>)과는 다르다. 신경망에서는 <math> (y-o) </math> 만큼의 오차가 발생하며 오차에 비례하여 출력층의 가중치를 갱신한다. 은닉층의 가중치까지 갱신하고, 갱신방향은 신경망의 처리방향과 반대이기 때문에 역전파라고 한다.<ref> 곽호안,〈[https://terms.naver.com/entry.nhn?docId=273353&cid=41990&categoryId=41990 역전파 알고리즘]〉, 《실험심리학용어사전》, 2008 </ref> |
==종류== | ==종류== | ||
===퍼셉트론=== | ===퍼셉트론=== | ||
+ | 퍼셉트론(perceptron)은 뉴런의 수학적 모델을 말하며, 최초로 제안된 신경망 알고리즘이다. 단층퍼셉트론이라고도 하는 이 알고리즘의 동작원리는 활성 함수가 내놓는 결과값이 실제 값과 오류가 최소가 되도록 입력층에서 전달되는 값들에 곱해지는 가중치의 값을 결정하는 것이다. 이때 활성함수는 1개이며 은닉층이 존재하지 않고 입력층과 출력층만 존재하기 때문에 출력층의 결과값을 확보한 실제값과 비교하여 오차가 최소가 되도록 가증치를 업데이트한다. | ||
+ | |||
+ | 퍼셉트론은 선형 분류기로 [[XOR]] 문제와 같은 비선형 분류를 할 수 없다. 즉, 단층 퍼셉트론을 이용하면 AND, NAND, OR게이트를 쉽게 구현할 수 있다. 하지만 단층퍼셉트론만으로 구현이 불가능한 게이트가 있는데 바로 XOR게이트이다. 퍼셉트론의 게이트 연산에서 쓰이는 것은 두 개의 입력값과 하나의 출력값이다. XOR게이트는 입력값 두 개가 서로 다른 값을 가지고 있을때에만 출력값이 1이 되고, 입력값 두 개가 서로 같은 값을 가지면 출력값이 0이 되는 게이트이다. 퍼셉트론의 코드에 아무리 많은 가중치와 편향을 넣어도 XOR게이트를 구현하는 것은 불가능하다. 단층퍼셉트론은 직선 하나로 두 영역을 나눌 수 있는 문제에 대해서만 구현이 가능하다.<ref> WikiDocs, 〈[https://wikidocs.net/24958 딥 러닝을 이용한 자연어 처리 입문]〉, 《WikiDocs》, 2019-09-18</ref> | ||
+ | |||
+ | ===다층퍼셉트론=== | ||
+ | 다층퍼셉트론(multi layer perceptron)은 입력층과 출력층 사이에 하나 이상의 중간층이 존재하는 신경망이다. 네트워크는 입력층, 은닉층, 출력층방향으로 연결되어 있고, 각 층내의 연결과 출력층에서 입력층으로 직접적 연결이 없다. 이를 전방향(feedforward) 네트워크 또는 순전파라고 한다. 다층퍼셉트론은 단층 퍼셉트론과 유사한 구조를 가지지만, 중간층과 각 구성단위의 입출력 특성을 비선형으로 하여 네트워크 능력을 향상시켜 퍼셉트론의 단점들을 극복했다. 다층퍼셉트론의 동작원리는 단층 퍼셉트론의 동작원리와 크게 다를 것이 없다. 다른점은 단층 퍼셉트론은 활성함수가 1개라는 점이고, 다층 퍼셉트론은 은닉층과 출력층에 존재하는 활성 함수가 여러 개이며, 이에 따라 가증치도 여러개인 것이다. 다층퍼셉트론의 동작원리는 다음과 같다. | ||
+ | |||
+ | # 각 층에서의 가증치를 임의의 값으로 설정한다. 보통 0으로 설정하게 되는데, 각 층에서 바이어스 값은 1로 설정한다. | ||
+ | # 하나의 트레이닝 데이터에 대해 각 층에서 순입력 함수값을 계산하고 최종적으로 활성 함수에 의한 출력값을 계산한다. | ||
+ | # 출력층의 활성 함수에 의한 결과값과 실제값이 허용오차 안에 들도록 각층에서 가증치를 변경한다. | ||
+ | # 모든 트레이닝 데이터에 대해서 출력층의 활성 함수에 의한 결과값과 실제값이 허용오차안에 들면 학습을 종료한다. | ||
+ | |||
+ | 다층퍼셉트론은 단층퍼셉트론과 달리 입력층과 출력층 사이에 은닉층이 존재하고, 은닉층의 출력값에 대한 기준값을 정의할 수 없기 때문에 은닉층에서 어떤값이 출력되어야 맞는지에 대한 기준이 없다. 다층 퍼셉트론에서는 출력층에서 발생하는 오차값을 이용해 은닉층으로 [[역전파]]시켜 은닉층에서 발생하는 오차값에 따라 은닉층의 가증치를 업데이트한다. | ||
+ | |||
+ | ===컨볼루션신경망=== | ||
+ | 컨볼루션신경망(convolution neural network, CNN)은 정규화된 버전의 다층퍼셉트론으로 CNN이라고도한다. 컨볼루션신경망은 정규화를 향한 다른 접근 방식을 취한다. 데이터에서 계층적 패턴을 활용해 더 작고 간단한 패턴을 사용하여 복잡한 패턴을 조립한다. 컨볼루션신경망은 다른 인공신경망들에 비해 상대적으로 전처리를 거의 사용하지 않는다. 네트워크가 기존 알고리즘에서 수작업으로 제작된 필터를 학습한다는 것을 의미하는데, 이미지나 비디오인식, 분류, 자연어 처리에 응용된다. 컨볼루션 신경망은 다음 3가지 특징을 가진다. | ||
+ | |||
+ | # 뉴런의 3D볼륨 : 컨볼루션의 층은 폭, 높이, 깊이의 3차원으로 배열된 뉴런을 가지는데 층 내부의 뉴런은 수용영역이라고 불리는 층의 작은 영역에만 연결된다. 로컬이나 완전히 연결된 고유한 유형의 계층들이 쌓여 컨볼루션신경망의 [[아키텍처]]를 형성한다. | ||
+ | # 로컬 연결 : 수용필드의 개념에 따라 컨볼루션신경망은 인접한 레이어의 뉴런 사이에 로컬 연결 패턴을 적용하여 공간적 지역성을 이용한다. 따라서 아키텍처는 학습된 필터가 공간적으로 로컬 입력 패턴에 대해 가장 강력한 응답을 생성하게한다. 이렇게 많은 레어어를 쌓게되면 네트워크가 입력력의 작은 부분을 표현하고, 더 큰영역의 표현을 구성할 수 있도록 점점 더 큰 픽셀 공간 영역에 반응하는 비서형 필터가 생성된다. | ||
+ | # 공유 가중치 : 컨볼루션신경망에서 각 필터는 전체 시야에 걸쳐 복제되는데 이 복제된 단위는 동일한 가중치와 바이어스값을 공유하고 피쳐 맵을 형성한다. 주어진 회선 레이어의 모든 뉴런이 특정 응답 필드 내에서 동일한 기능에 응답한다는 것을 뜻한다. 이런 방식으로 단위를 복제하면 위치와 관계없이 지형지물을 감지할 수 있게 되고, 변환 불변의 속성을 구성할 수 있다.<ref> 〈[https://en.wikipedia.org/wiki/Convolutional_neural_network 컨볼루션신경망]〉, 《위키피디아》</ref> | ||
+ | |||
+ | ===순환인공신경망=== | ||
+ | 순환인공신경망(recurrent neural network)은 전방 신경망과 정 반대의 동작을 한다. 노드들 간의 양방향 데이터가 이동하며 데이터는 선형적으로 전달된다. 데이터가 후방 노드에서 전방놓드로 전달하며 연산이 수행된다.<ref name="위키"></ref> 뉴런의 출력이 다시 입력으로 역전파되는 재귀적인 연결구조를 가진다. 다층퍼셉트론이 과거은닉정보를 기억하지 못한다는 단점을 해결했다. 기존의 심층신경망의 경우 각 층마다 매개변수들이 독립적이었으나, 순환인공신경망은 이를 공유한다. 따라서 현재의 출력결과는 이전 결과에 영향을 받고 은닉층, 즉 일종의 메모리 역할을 한다. | ||
==전망== | ==전망== | ||
− | 인공신경망은 기존의 분류나 예측모형보다 복잡한 모델을 가지며 많은 계산량을 요구한다. 실제 다양한 분야에서 우수한 성과를 보이며 그 유용성을 인정받고 있는데, 이러한 인공신경망은 하나의 문제점을 가진다. 연결강도, 은닉층의 갯수와 같은 다양한 피라미터들을 최적값으로 수렴시키는 과정에서 인공신경망 모델은 학습데이터에 과적합되는 경향을 보인다. 학습된 모델을 새로운 데이터에 적용했을 때 성과가 떨어진다는 의미이다. 최근 인공신경망은 [[알파고]]가 도입하고 있는 [[딥러닝]]이라는 알고리즘이 인공신경망의 과적합 문제를 해결할 수 | + | 인공신경망은 기존의 분류나 예측모형보다 복잡한 모델을 가지며 많은 계산량을 요구한다. 실제 다양한 분야에서 우수한 성과를 보이며 그 유용성을 인정받고 있는데, 이러한 인공신경망은 하나의 문제점을 가진다. 연결강도, 은닉층의 갯수와 같은 다양한 피라미터들을 최적값으로 수렴시키는 과정에서 인공신경망 모델은 학습데이터에 과적합되는 경향을 보인다. 학습된 모델을 새로운 데이터에 적용했을 때 성과가 떨어진다는 의미이다. 최근 인공신경망은 [[알파고]]가 도입하고 있는 [[딥러닝]]이라는 알고리즘이 인공신경망의 과적합 문제를 해결할 수 있는 강력한 대안으로 떠오르며 다시 주목받고 있다. [[머신러닝]]을 통한 인공지능의 발전은 무한한 가능성을 가지고 있다. |
{{각주}} | {{각주}} | ||
+ | |||
+ | ==참고자료== | ||
+ | * JK의 계단 밑 연구실, 〈[https://brunch.co.kr/@jk-lab/12 인공지능의 역사 1]〉, 《개인 블로그》, 2017-06-11 | ||
+ | * 〈[https://ko.wikipedia.org/w/index.php?title=%EC%9D%B8%EA%B3%B5_%EC%8B%A0%EA%B2%BD%EB%A7%9D&action=edit§ion=2#cite_note-10 인공신경망]〉, 《위키백과》 | ||
+ | * 〈[https://namu.wiki/w/%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D 인공신경망]〉, 《나무위키》 | ||
+ | * 잭 챌리너, 〈[https://terms.naver.com/entry.nhn?docId=799067&cid=43121&categoryId=43121 인공신경망]〉, 《죽기 전에 꼭 알아야 할 세상을 바꾼 발명품 1001》, 2010-01-20 | ||
+ | * Chris Nicholson, 〈[https://skymind.ai/kr/wiki/neuralnet-overview 인공 신경망 및 심층 신경망 소개]〉, 《A.I.Wiki》 | ||
+ | * 한국정보통신기술협회, 〈[https://terms.naver.com/entry.nhn?docId=3436152&cid=42346&categoryId=42346 인공신경망]〉, 《IT용어사전》, 2018-08-24 | ||
+ | * 안재준 교수, 〈[https://blog.lgcns.com/1359 인공신경망이란 무엇인가?]〉, 《Creative&Smart》, 2017-03-15 | ||
+ | * reniew, 〈[https://reniew.github.io/12/ 딥러닝에서 사용하는 활성화함수]〉, 《개인 블로그》, 2018-07-01 | ||
+ | * Saint Binary, 〈[https://saintbinary.tistory.com/8 활성화함수의 역할 및 종류]〉, 《Tistory》, 2018-09-05 | ||
+ | * 김진중, 골빈해커의 3분 딥러닝, 한빛미디어, 2017, P. 52-58 | ||
+ | * MIS, 〈[https://sohaha.tistory.com/entry/%EA%B3%BC%EC%A0%9C-25-%EC%9D%B8%EA%B3%B5%EC%8B%A0%EA%B2%BD%EB%A7%9D%EA%B8%B0%EB%B2%95%EC%9D%98-%EC%9E%A5%EC%A0%90%EA%B3%BC-%EB%8B%A8%EC%A0%90%EC%9D%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80 인공신경망기법의 장점과 단점은 무엇인가]〉, 《Tistory》, 2008-05-29 | ||
+ | * 곽호안, 〈[https://terms.naver.com/entry.nhn?docId=273353&cid=41990&categoryId=41990 역전파 알고리즘]〉, 《실험심리학용어사전》, 2008 | ||
+ | * 학부생, 〈[https://blog.naver.com/htowjr/221501497936 역전파(Backpropagation)]〉, 《네이버 블로그》, 2019-03-30 | ||
+ | * 옥수별, 〈[http://blog.naver.com/PostView.nhn?blogId=samsjang&logNo=221030487369&parentCategoryNo=&categoryNo=80&viewDate=&isShowPopularPosts=true&from=search 딥러닝의 기초 - 다층 퍼셉트론(Multi-Layer Perceptron; MLP)]〉, 《네이버 블로그》, 2017-06-18 | ||
+ | * WikiDocs, 〈[https://wikidocs.net/24958 딥 러닝을 이용한 자연어 처리 입문]〉, 《WikiDocs》, 2019-09-18 | ||
+ | * 〈[https://en.wikipedia.org/wiki/Convolutional_neural_network 컨볼루션신경망]〉, 《위키피디아》 | ||
+ | |||
+ | == 같이 보기 == | ||
+ | * [[인공지능]] | ||
+ | * [[딥러닝]] | ||
+ | |||
+ | {{인공지능 기술|검토 필요}} |
2020년 6월 29일 (월) 16:31 기준 최신판
인공신경망(ANN; Artificial Neural Network)은 사람 또는 동물 두뇌의 신경망에 착안하여 구현된 컴퓨팅 시스템으로 인간의 신경을 흉내낸 머신러닝 기법이다.
목차
개요[편집]
인공신경망은 인간의 뇌가 패턴을 인식하는 방식을 모사한 알고리즘으로 시각, 청각 입력 데이터를 퍼셉트론(perceptron)이나 분류, 군집을 이용하여 해석하는데, 이렇게 해석한 결과를 이용하면 이미지나 소리, 문자, 시계열 데이터등에서 특정 패턴을 인식할 수 있다.[1] 인공신경망을 이용하면 각종 분류및 군집화가 가능하다. 분류나 군집화를 원하는 데이터 위에 여러가지 층을 얹어서 원하는 작업을 하게 된다. 각 층은 라벨링이 되어 있지 않은 데이터를 비교하여 유사도를 구할 수 있고, 라벨링이 되어있는 데이터는 분류기를 학습하여 자동으로 데이터를 분류할 수 있게 한다. 즉, 인공신경망으로 특징을 추출하고 추출한 특징을 다시 다른 기계학습 알고리즘의 입력으로 사용하여 분류 또는 군집화를 할 수 있다. 예를 들면 인공신경망이 사람들의 암 발병률을 예측하도록 학습할 수 있다. 암에 걸리거나 걸리지 않은 사람들이 각각 어떤 행동 패턴을 가지고 있는지, 어떤 기준으로 어떻게 분류하는지를 신경망이 학습할 수 있도록한다. 가지고 있는 데이터로 학습이 잘 되었다면 사람들의 행동 패턴을 이용해 암에 걸릴 확률을 예측할 수 있다.
역사[편집]
- 1940년대
- 인간 기억에 대한 연구는 워렌 맥클록(Warren McCulloch)과 월터 피츠(Walter Pitts)가 뉴런이 작동하는 방법에 관해 논문을 작성하던 1943년에 큰 변화를 맞이한다. 맥클록은 철학과 의학분야에서 학위를 받고 신경정신과 교수였으며, 월터 피츠는 뇌신경 시스템에 관심이 많은 수학자였다. 이들은 전기스위치처럼 끄고 켤 수 있는 인공신경을 그물망 형태로 연결하면 인공 신경이 사람의 뇌에서 동작하는 간단한 기능을 흉내 낼 수 있다는 것을 이론적으로 증명했다. 이것이 최초의 뉴런 인공신경망 모델이다. 당시 이 모델은 단순한 선형 모델이었기 때문에 한계가 있었지만 퍼셉트론 등 이후의 인공신경망 연구로 이어진다. 1940년대 후반에 심리학자인 도널드 헤비안(Donald Hebb)은 신경가소성의 원리에 근거한 학습의 기본 가정인 헤비안 학습(Hebbian learning)을 만들었다. 헤비안 학습은 전형적인 자율학습으로 장기강화(long term potentiation)의 초기모델이 된다.
- 1950년대
- 1954년 팔리(Farley)와 웨슬리 클라크(Wesley A. Clark)는 MIT에서 헤비안 네트워크를 모의 실험하기 위해 처음으로 계산학 모델을 사용하였다. 이 모델은 후에 계산기라고 불린다. 그 외에도 로체스터(Rochester), 홀랜드(Holland), 하빗(Habit), 두다(Duda)등이 다른 신경망 계산학 기계들을 만들었다. 뉴욕 코넬대학교(Cornell University) 항공 공학 연구소 컴퓨터 과학자인 프랭크 로젠블라트(Frank Rosenblatt)는 패턴인식을 위해 간단한 덧셈과 뺄셈이 가능한 이층구조의 학습 컴퓨터 망에 근거한 알고리즘인 퍼셉트론(Perceptron)을 만들었다.
- 1960년대
- 1969년, 마빈 민스키(Marvin Minsky)와 시모어 페퍼트(Seymour Papert)에 의해 기계학습 논문이 발표된 후 신경망 연구는 침체되었다. 이들은 인공신경망에서 두 가지 문제점을 찾아냈는데, 첫 번째는 단층 신경망은 배타적 논리합 회로(exclusive-or circuit)를 처리하지 못한다는 것, 두 번째는 거대한 신경망에 의해 처리되는 긴 시간을 컴퓨터가 효과적으로 처리할 만큼 정교하지 못한다는 것이다. 이 후 컴퓨터가 충분히 빨리지고, 배타적 논리합 문제를 효율적으로 처리하는 오차역전파법이 만들어지기 전까지 신경망 연구는 더디게 진행되었다.[2]
- 1980년대
- 중반 병렬 분산 처리는 연결주의라는 이름으로 주목받았다. 데이비드 럼멜하트(David E. Rumelhart)와 제임스 맥클레랜드(James McClelland)가 쓴 교과서에는 연결주의를 이용해 신경 처리를 컴퓨터에서 모의 실험하기 위한 모든 것을 설명하고있다. 인공신경망이 얼마나 뇌의 기능을 반영하는지가 불분명하기때문에 뇌 신경 처리의 간단한 모델과 뇌 생물학적 구조간의 상관관계에 대해 논란이 되지만 인공지능에서 사용되는 신경망은 전통적으로 뇌 신경 처리의 간단한 모델로 간주된다.
- 2000년대 이후
- 2000년대 딥러닝 출현 이후 신경 집합의 새로운 관심은 다시 조명받게 되었다. 생물물리학 모의실험이나 뇌신경학 컴퓨팅을 위한 계산학 디바이스들은 금속산화물반도체(complementary metal-oxide semiconductor, CMOS)를 통해 만들어졌다. 최근엔 큰 범위의 기본 요소들의 분석과 합성을 위해 나노 디바이스등이 제작되고 있는데 이는 디지털 컴퓨팅을 뛰어넘는 신경 컴퓨팅의 새로운 시대를 도래할 것이다. 2009년부터 2012년까지 스위스 AI 연구실(IDSIA)에서 위르겐 슈밋흠바(Jürgen Schmidhuber)과 댄 크리슨(Dan Ciresan) 등은 패턴 인식 경연에서 여러 번 우승하였다. 이들의 신경망은 처음으로 교통표지판 또는 MINIST 필기 인식 분야에서 인간과 비슷한, 또는 인간을 넘어서는 인공 패턴 인식이었다. 오늘날 신경망은 판독기, 일기 예보, 폭탄 탐지기 심지어 금융시장 예측까지도 이용되는 광학식 문자판독 기반 기술로 사용되고 있다.[3] 또한 2010년대에는 컴퓨터 하드웨어 및 학습 알고리즘의 발달로 수십 개의 은닉층(hidden layer)이 있는 심층신경망(Deep Neural Network, DNN)이 널리 사용되고 있다. 이미지 및 자연어 처리, 음성 인식 등의 분야에서 기존의 기계 학습 방법의 성능을 뛰어 넘는 결과를 보여주고 있다.
특징[편집]
이론적특성[편집]
- 오류탄력성 : 오류 탄력성이 높으면 어느 한도 또는 범위내 오류가 입력, 연산에 발생하더라도 최종 결과에 미치는 영향이 없거나 매우 미미하다. 따라서 전체적인 성능에는 큰 문제가 없다. 대표적인 예가 컨볼루션신경망에서의 오류 탄력성이다. 기존의 모델에서 출력에 영향을 주지 않거나 적은 영향을 주는 한도내에서 노드간 연결망을 단순화 시킨다. 시냅스 가지치기를 통해 저장해야 할 연상망의 가증치가 줄어들게 된다. 저장해야 할 모델의 크기는 줄어들고 연산량을 크게 감소시킬 수 있기 때문에 추론 시 사용하는 하드웨어의 경량화까지 가능하다.
- 수용성 : 인공신경망 모델은 수용력의 특성을 가지며 이것은 신경망에서 주어진 함수 모델의 능력과 상당히 연관되어 있다. 신경망에 저장될 수 있는 어떤 정보의 총량과 정보 개념의 복잡도와 크게 연관된다.
- 근사 : 인공신경망을 계산할 때 근사에 대한 문제에 직면하게 되는데, 첫 번째로 국지적 최소값이 존재할 수 있다는 것이다. 이는 신경망의 비용함수와 모델에 영향을 받는다. 두 번째 문제는 알려진 최적화 방법은 국지적 최소값과 멀리 떨어져 있을 때 적당한 근사를 보장하지 않을 수 있다는 점이다. 세 번째로, 상당히 많은 양의 데이터나 변수들에 대해서 일부 알려져있는 알고리즘들은 비현실적일 수 있다. 일반적으로 근사에 대한 일노적 보장은 실생활 데이터에 적용할 때 신뢰하지 못할 수 있다고 알려져 있다.
장단점[편집]
- 장점
- 시간에 따른 날씨의 변화등과 같은 수학적으로 해결 불가능한 복잡한 문제들을 분석하는데 유용하다.
- 모델링을 위한 계산이 간단하다.
- 은닉층의 결합함수나 은닉층과 출력층사이의 연결강도를 추정하기 쉽다.
- 학습을 통해 분석하기 때문에 기존 통계학적 분석방법에 비교하여 분석시간이 짧고, 비용이 적게든다.
- 패턴인식, 예측, 분류 등에 효과적이다.
- 범용 근사치추정모형으로 사용이 용이하다.
- 은닉단위 수를 조절하여 모든 함수를 정밀하게 모사 가능하다.
- 단점
- 학습을 통해 찾은 최적의 가증치들은 신뢰도가 낮다.
- 새로운 데이터가 추가될 경우 학습을 처음부터 다시 시작해야 한다.
- 초기 가증치의 선택이 학습의 성능에 영향을 끼친다.
- 다수의 은닉마디를 필요로한다.
- 입력변수의 수가 많아질수록 필요한 은닉마디의 수가 급속하게 증가한다.
- 불필요하거나 중복된 입력자료에 대하여 민감하다.
- 실제 상황에 정확히 부합하는 작동을 학습하기 위해 수많은 경우에 대한 다양성을 가진 자료 수집을 필요로한다.
- 인간의 뇌와 같은 신경 그래프를 구축하기 위해 수백, 수천만개의 데이터베이스 행을 채워야 하는데 이는 엄청난 양의 컴퓨터 메모리와 하드디스크 공간을 소비하게 한다.
작동 원리[편집]
활성화함수[편집]
인공신경망은 인간의 뉴런(Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. 뉴런은 가지돌기로부터 신호를 받아들여 출삭돌기에서 축삭말단으로 전달한다. 이때 불필요한 정보일 경우 다음 뉴런으로 전달하지 않는데 이런 특성과 원리를 이용해 인공지능을 개발한 것이다. 뉴런과 신경망 원리에 인공 뉴런의 개념을 덧씌우면 입력신호 입력값 에 가중치를 곱하고 편향를 더한 뒤 활성화함수를 거쳐 결과값(y)를 만들어 내기 위해 가중치와 편향을 변경해가면서 적절한 값을 찾아내는 과정을 학습 또는 훈련이라고 한다.
활성화 함수(activation function)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지 결정하는 함수이다. 즉, 활성화 함수는 인공 뉴런의 핵심 중에서도 가장 중요한 요소라고 할 수 있다. 활성화함수는 크게 단극성 활성화함수와 양극성 활성화함수로 구분된다. 단극성 활성화함수는 출력값이 양수만 가능하고, 양극성 활성화함수는 음수, 양수 모두 출력 가능한 함수를 나타낸다. 대표적인 활성화 함수에는 스텝 함수(step), 시그모이드 함수(Sigmoid), 하이퍼볼릭탄젠트 함수(tanh), 정류선형단위 함수(ReLU) 함수가 있다.
- 스텝 함수(step funtion) :
- 가장 기본이 되는 활성화 함수는 스텝 함수라고 할 수 있다. 그래프 모양이 계단과 같이 생겨 임계값을 기준으로 활성화 되거나 비활성화 되는 형태를 보인다.
- 시그모이드 함수(sigmoid function) :
- 로지스틱함수라고도 하며 값의 변화에 따라 부터 까지의 값을 출력하는 S자형(비선형)함수이다. 과 사이에도 연속적인 출력값이 있다는 것으로 보고, 미분이 가능하도록 사이를 부드럽게 이어주는 특징과 함께 입력 전체 범위에 걸쳐 도함수를 계산할 수 있다는 특징을 가진다. 제일 큰 함수 값이 거의 이고 매우 작은 값을 가지면 거의 이다. 이런 특징들 덕분에 신경망 초기에는 많이 사용되었지만 그라디언트 배니싱(Gradient Vanishing)현상이나 함수값 중심이 이 아니라 학습이 느려질 수 있고, exp 함수 사용시 비용이 크다는 단점들 때문에 최근에는 자주 사용하지 않게 되엇다.
- 하이퍼볼릭탄젠트 함수(TanH function) : 시그모이드함수를 재활용 하여 부터 의 범위를 갖는 함수로 쌍곡선 함수중 하나이다. 함수의 중심값을 으로 옮겨 시그모이드 함수의 최적화 과정이 느려지는 문제를 해결했다. 하지만 미분함수에 대한 일정값 이상 커질시 미분값이 소멸되는 그라디언트 배니싱문제는 여전히 남아있다.
- 정류선형단위 함수(ReLU function) :
- 최근 가장 많이 사용되는 활성화 함수이다. 이면 기울기가 인 직선이고, 이면 함수값이 이 된다. 시그모이드 함수나 하이퍼볼릭탄젠트 함수와 비교했을 때 학습이 훨씬 빨라진다는 장점이 있고, 연산 비용이 크지 않고 구현이 매우 간단하다. 하지만 인 값들에 대해서 기울기가 이 되기때문에 뉴런이 죽을 수도 있다는 단점이 존재한다. 활성화 함수로 정류선형단위 함수를 많이 사용하는데, 이는 입력값이 보다 작으면 항상 을, 보다 크면 입력값을 그대로 출력한다. 학습 목적에 따라 각기 다른 활성화 함수를 사용해야한다.
인공뉴런 연결[편집]
인공뉴런은 가중치와 활성화 함수의 연결로 이루어진 간단한 구조라고 할 수 있다. 간단한 개념의 인공 뉴런을 충분히 많이 연결하는 것만으로도 인간이 인지하기 어려운 복잡한 패턴까지도 스스로 학습할 수 있게 된다. 인공 뉴런을 연결해 구성한 인공신경망은 입력층, 은닉층, 출력층 세 가지 층으로 구분된다. 모든 층들은 노드로 구성되어있다. 각 입력노드와 은닉노드들은 모두 가중치를 가지는 망으로 연결되어 있으며 은닉노드와 출력노드도 마찬가지로 연결된다. 즉, 뉴런과 시냅스의 관계를 모방하여 간소화한 인공신경망 모델의 목표는 각 노드를 연결하는 가중치를 알아내는 것이다. 각각의 뉴런을 연결하는 시냅스의 적절한 임계값을 찾는 것이라고 할 수 있다.
- 입력층(input layer) : 초기 데이터가 세팅되는 뉴런층, 시스템 외부로부터 입력자료를 받아들여 시스템으로 전송한다.
- 은닉층(hidden layer) : 데이터가 드러나지 않고 가려져있는 뉴런층, 시스템 안쪽에 자리잡고 있으며 입력 값을 넘겨받아 처리한뒤 결과를 산출한다.
- 출력층(output layer) : 결과적으로 얻고자 하는 학습된 데이터가 담긴 뉴련층, 입력 값과 현재 시스템 상태에 기준하여 시스템 출력 값을 산출한다.
위 뉴런들은 각각 많은 가중치와 바이어스 값의 조합을 가진다. 수천 수만 개의 가중치와 바이어스 값의 조합을 일일이 변경하며 계산하기엔 오랜 시간이 걸려 신경망을 제대로 훈련시키기가 어렵다. 또한 신경망 층이 깊어질수록 시도해야 하는 조합의 경우의 수가 더욱 늘어나기 때문에 유의미한 신경망을 만들기란 거의 불가능하다고 여겨졌다. 그 해법을 끈질기게 연구하던 제프리 힌튼 교수가 신경망 학습 알고리즘을 개발하고 심층신경망을 효율적으로 학습시킬 수 있음을 증명했다. 심층신경망은 매우 많은 은닉층을 두어 단계적으로 학습시킬 수 있고, 그러한 배경에서 뉴런들을 학습시키는 것을 딥러닝이라고 한다. 단순한 수치 계산과 병렬 처리에 강한 GPU가 발전하면서 본격적인 딥러닝의 시대가 열렸고, 이렇게 발전해온 알고리즘의 중심에는 역전파(backpropagation)가 있다.
역전파[편집]
많은 가중치와 바이어스 값의 조합이 전파되는 과정에서 가중치와 바이어스 값을 조절하지만 단순히 데이터를 한쪽으로 전달하면 데이터 최적화가 잘 이루어지지 않는다. 따라서 결과값에서 오차가 발생하면 해당 오차만큼 다시 반대쪽으로 전파시키면서 가중치를 갱신하는 기술이 사용되는데 이를 역전파(Backpropagation)라고 한다. 즉, 출력층이 내놓은 결과의 오차를 신경망을 따라 입력층까지 역으로 전파하며 계산해나가는 기술이다. 입력층부터 가중치를 조절해가는 기존의 방식보다 훨씬 유의미한 방식으로 가중치를 조절해주기 때문에 최적화 과정이 훨씬 빠르고 정확해진다. 역전파는 신경망을 구현할 때 거의 항상 적용해야 하는 알고리즘이지만 구현하기 어렵다는 단점이 있다. 하지만 텐서플로는 역전파 기법을 기본으로 제공해주기때문에 구현하는 데 문제점이 없다. 역전파는 다른 머신러닝 알고리즘보다 상대적으로 느린편이지만, 학습하는 데 있어 다른 모델들 보다 높은 정확도를 갖기때문에 주요 기술이라고 할 수 있다.
인공신경망에서 역전파, 반대로 전파시킬 수 있는 값은 기대값과 실제값의 오차이다. 오차를 반대로 전하여 퍼트린다는 것은 결국 입력층의 노드들까지 오차를 각 노드마다 나눠준다. 가중치는 개별치에 부여되는 중요도라는 말이다. 즉 오차가 중요도 만큼씩 쌓여서 최종의 오차가 발생한다. 즉, 중요도에 비례하게 오차를 배분해 조정해 나가면 적절한 가중치로 고쳐나갈 수 있다. 학습을 하기 위해서는 입력데이터와 원하는 출력() 데이터가 존재해야한다. 입력이 신경망의 가중치와 곱하고 더하는 과정을 몇 번 반복하면 입력의 결과인 출력값()이 나오는데, 이때 출력값은 학습 데이터에서 주어진 출력()과는 다르다. 신경망에서는 만큼의 오차가 발생하며 오차에 비례하여 출력층의 가중치를 갱신한다. 은닉층의 가중치까지 갱신하고, 갱신방향은 신경망의 처리방향과 반대이기 때문에 역전파라고 한다.[4]
종류[편집]
퍼셉트론[편집]
퍼셉트론(perceptron)은 뉴런의 수학적 모델을 말하며, 최초로 제안된 신경망 알고리즘이다. 단층퍼셉트론이라고도 하는 이 알고리즘의 동작원리는 활성 함수가 내놓는 결과값이 실제 값과 오류가 최소가 되도록 입력층에서 전달되는 값들에 곱해지는 가중치의 값을 결정하는 것이다. 이때 활성함수는 1개이며 은닉층이 존재하지 않고 입력층과 출력층만 존재하기 때문에 출력층의 결과값을 확보한 실제값과 비교하여 오차가 최소가 되도록 가증치를 업데이트한다.
퍼셉트론은 선형 분류기로 XOR 문제와 같은 비선형 분류를 할 수 없다. 즉, 단층 퍼셉트론을 이용하면 AND, NAND, OR게이트를 쉽게 구현할 수 있다. 하지만 단층퍼셉트론만으로 구현이 불가능한 게이트가 있는데 바로 XOR게이트이다. 퍼셉트론의 게이트 연산에서 쓰이는 것은 두 개의 입력값과 하나의 출력값이다. XOR게이트는 입력값 두 개가 서로 다른 값을 가지고 있을때에만 출력값이 1이 되고, 입력값 두 개가 서로 같은 값을 가지면 출력값이 0이 되는 게이트이다. 퍼셉트론의 코드에 아무리 많은 가중치와 편향을 넣어도 XOR게이트를 구현하는 것은 불가능하다. 단층퍼셉트론은 직선 하나로 두 영역을 나눌 수 있는 문제에 대해서만 구현이 가능하다.[5]
다층퍼셉트론[편집]
다층퍼셉트론(multi layer perceptron)은 입력층과 출력층 사이에 하나 이상의 중간층이 존재하는 신경망이다. 네트워크는 입력층, 은닉층, 출력층방향으로 연결되어 있고, 각 층내의 연결과 출력층에서 입력층으로 직접적 연결이 없다. 이를 전방향(feedforward) 네트워크 또는 순전파라고 한다. 다층퍼셉트론은 단층 퍼셉트론과 유사한 구조를 가지지만, 중간층과 각 구성단위의 입출력 특성을 비선형으로 하여 네트워크 능력을 향상시켜 퍼셉트론의 단점들을 극복했다. 다층퍼셉트론의 동작원리는 단층 퍼셉트론의 동작원리와 크게 다를 것이 없다. 다른점은 단층 퍼셉트론은 활성함수가 1개라는 점이고, 다층 퍼셉트론은 은닉층과 출력층에 존재하는 활성 함수가 여러 개이며, 이에 따라 가증치도 여러개인 것이다. 다층퍼셉트론의 동작원리는 다음과 같다.
- 각 층에서의 가증치를 임의의 값으로 설정한다. 보통 0으로 설정하게 되는데, 각 층에서 바이어스 값은 1로 설정한다.
- 하나의 트레이닝 데이터에 대해 각 층에서 순입력 함수값을 계산하고 최종적으로 활성 함수에 의한 출력값을 계산한다.
- 출력층의 활성 함수에 의한 결과값과 실제값이 허용오차 안에 들도록 각층에서 가증치를 변경한다.
- 모든 트레이닝 데이터에 대해서 출력층의 활성 함수에 의한 결과값과 실제값이 허용오차안에 들면 학습을 종료한다.
다층퍼셉트론은 단층퍼셉트론과 달리 입력층과 출력층 사이에 은닉층이 존재하고, 은닉층의 출력값에 대한 기준값을 정의할 수 없기 때문에 은닉층에서 어떤값이 출력되어야 맞는지에 대한 기준이 없다. 다층 퍼셉트론에서는 출력층에서 발생하는 오차값을 이용해 은닉층으로 역전파시켜 은닉층에서 발생하는 오차값에 따라 은닉층의 가증치를 업데이트한다.
컨볼루션신경망[편집]
컨볼루션신경망(convolution neural network, CNN)은 정규화된 버전의 다층퍼셉트론으로 CNN이라고도한다. 컨볼루션신경망은 정규화를 향한 다른 접근 방식을 취한다. 데이터에서 계층적 패턴을 활용해 더 작고 간단한 패턴을 사용하여 복잡한 패턴을 조립한다. 컨볼루션신경망은 다른 인공신경망들에 비해 상대적으로 전처리를 거의 사용하지 않는다. 네트워크가 기존 알고리즘에서 수작업으로 제작된 필터를 학습한다는 것을 의미하는데, 이미지나 비디오인식, 분류, 자연어 처리에 응용된다. 컨볼루션 신경망은 다음 3가지 특징을 가진다.
- 뉴런의 3D볼륨 : 컨볼루션의 층은 폭, 높이, 깊이의 3차원으로 배열된 뉴런을 가지는데 층 내부의 뉴런은 수용영역이라고 불리는 층의 작은 영역에만 연결된다. 로컬이나 완전히 연결된 고유한 유형의 계층들이 쌓여 컨볼루션신경망의 아키텍처를 형성한다.
- 로컬 연결 : 수용필드의 개념에 따라 컨볼루션신경망은 인접한 레이어의 뉴런 사이에 로컬 연결 패턴을 적용하여 공간적 지역성을 이용한다. 따라서 아키텍처는 학습된 필터가 공간적으로 로컬 입력 패턴에 대해 가장 강력한 응답을 생성하게한다. 이렇게 많은 레어어를 쌓게되면 네트워크가 입력력의 작은 부분을 표현하고, 더 큰영역의 표현을 구성할 수 있도록 점점 더 큰 픽셀 공간 영역에 반응하는 비서형 필터가 생성된다.
- 공유 가중치 : 컨볼루션신경망에서 각 필터는 전체 시야에 걸쳐 복제되는데 이 복제된 단위는 동일한 가중치와 바이어스값을 공유하고 피쳐 맵을 형성한다. 주어진 회선 레이어의 모든 뉴런이 특정 응답 필드 내에서 동일한 기능에 응답한다는 것을 뜻한다. 이런 방식으로 단위를 복제하면 위치와 관계없이 지형지물을 감지할 수 있게 되고, 변환 불변의 속성을 구성할 수 있다.[6]
순환인공신경망[편집]
순환인공신경망(recurrent neural network)은 전방 신경망과 정 반대의 동작을 한다. 노드들 간의 양방향 데이터가 이동하며 데이터는 선형적으로 전달된다. 데이터가 후방 노드에서 전방놓드로 전달하며 연산이 수행된다.[2] 뉴런의 출력이 다시 입력으로 역전파되는 재귀적인 연결구조를 가진다. 다층퍼셉트론이 과거은닉정보를 기억하지 못한다는 단점을 해결했다. 기존의 심층신경망의 경우 각 층마다 매개변수들이 독립적이었으나, 순환인공신경망은 이를 공유한다. 따라서 현재의 출력결과는 이전 결과에 영향을 받고 은닉층, 즉 일종의 메모리 역할을 한다.
전망[편집]
인공신경망은 기존의 분류나 예측모형보다 복잡한 모델을 가지며 많은 계산량을 요구한다. 실제 다양한 분야에서 우수한 성과를 보이며 그 유용성을 인정받고 있는데, 이러한 인공신경망은 하나의 문제점을 가진다. 연결강도, 은닉층의 갯수와 같은 다양한 피라미터들을 최적값으로 수렴시키는 과정에서 인공신경망 모델은 학습데이터에 과적합되는 경향을 보인다. 학습된 모델을 새로운 데이터에 적용했을 때 성과가 떨어진다는 의미이다. 최근 인공신경망은 알파고가 도입하고 있는 딥러닝이라는 알고리즘이 인공신경망의 과적합 문제를 해결할 수 있는 강력한 대안으로 떠오르며 다시 주목받고 있다. 머신러닝을 통한 인공지능의 발전은 무한한 가능성을 가지고 있다.
각주[편집]
참고자료[편집]
- JK의 계단 밑 연구실, 〈인공지능의 역사 1〉, 《개인 블로그》, 2017-06-11
- 〈인공신경망〉, 《위키백과》
- 〈인공신경망〉, 《나무위키》
- 잭 챌리너, 〈인공신경망〉, 《죽기 전에 꼭 알아야 할 세상을 바꾼 발명품 1001》, 2010-01-20
- Chris Nicholson, 〈인공 신경망 및 심층 신경망 소개〉, 《A.I.Wiki》
- 한국정보통신기술협회, 〈인공신경망〉, 《IT용어사전》, 2018-08-24
- 안재준 교수, 〈인공신경망이란 무엇인가?〉, 《Creative&Smart》, 2017-03-15
- reniew, 〈딥러닝에서 사용하는 활성화함수〉, 《개인 블로그》, 2018-07-01
- Saint Binary, 〈활성화함수의 역할 및 종류〉, 《Tistory》, 2018-09-05
- 김진중, 골빈해커의 3분 딥러닝, 한빛미디어, 2017, P. 52-58
- MIS, 〈인공신경망기법의 장점과 단점은 무엇인가〉, 《Tistory》, 2008-05-29
- 곽호안, 〈역전파 알고리즘〉, 《실험심리학용어사전》, 2008
- 학부생, 〈역전파(Backpropagation)〉, 《네이버 블로그》, 2019-03-30
- 옥수별, 〈딥러닝의 기초 - 다층 퍼셉트론(Multi-Layer Perceptron; MLP)〉, 《네이버 블로그》, 2017-06-18
- WikiDocs, 〈딥 러닝을 이용한 자연어 처리 입문〉, 《WikiDocs》, 2019-09-18
- 〈컨볼루션신경망〉, 《위키피디아》
같이 보기[편집]