"인공신경망"의 두 판 사이의 차이
(→활성화함수) |
(→활성화함수) |
||
26번째 줄: | 26번째 줄: | ||
인공신경망은 인간의 뉴런(Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. [[뉴런]]은 가지돌기로부터 신호를 받아들여 출삭돌기에서 축삭말단으로 전달한다. 이때 불필요한 정보일 경우 다음 뉴런으로 전달하지 않는데 이런 특성과 원리를 이용해 인공지능을 개발한 것이다. 뉴런과 신경망 원리에 인공 뉴런의 개념을 덧씌우면 입력신호(입력값x)에 가중치(W)를 곱하고 편향(b)를 더한 뒤 [[활성화함수]]를 거쳐 결과값(y)를 만들어 내기 위해 가중치와 편향을 변경해가면서 적절한 값을 찾아내는 과정을 학습 또는 훈련이라고 한다. | 인공신경망은 인간의 뉴런(Neuron)의 동작 원리에 기초해 인공적으로 구축한 신경망이다. [[뉴런]]은 가지돌기로부터 신호를 받아들여 출삭돌기에서 축삭말단으로 전달한다. 이때 불필요한 정보일 경우 다음 뉴런으로 전달하지 않는데 이런 특성과 원리를 이용해 인공지능을 개발한 것이다. 뉴런과 신경망 원리에 인공 뉴런의 개념을 덧씌우면 입력신호(입력값x)에 가중치(W)를 곱하고 편향(b)를 더한 뒤 [[활성화함수]]를 거쳐 결과값(y)를 만들어 내기 위해 가중치와 편향을 변경해가면서 적절한 값을 찾아내는 과정을 학습 또는 훈련이라고 한다. | ||
− | 활성화 함수(activation function)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지 결정하는 함수이다. 즉, 활성화 함수는 인공 뉴런의 핵심 중에서도 가장 중요한 요소라고 할 수 있다. 활성화함수는 크게 단극성 활성화함수와 양극성 활성화함수로 구분된다. 단극성 활성화함수는 출력값이 양수만 가능하고, 양극성 활성화함수는 음수,양수 모두 출력가능한 함수를 나타낸다. | + | 활성화 함수(activation function)는 인공신경망을 통과해온 값을 최종적으로 어떤 값으로 만들지 결정하는 함수이다. 즉, 활성화 함수는 인공 뉴런의 핵심 중에서도 가장 중요한 요소라고 할 수 있다. 활성화함수는 크게 단극성 활성화함수와 양극성 활성화함수로 구분된다. 단극성 활성화함수는 출력값이 양수만 가능하고, 양극성 활성화함수는 음수,양수 모두 출력가능한 함수를 나타낸다. 대표적인 활성화 함수에는 step, Sigmoid, tanh,ReLU 함수가 있다. |
− | |||
*스텝 함수(step funtion) | *스텝 함수(step funtion) | ||
: <math> h(x) = \begin{cases} 0 (x\le0) \\ 1 (x>0) \end{cases} </math><br> 가장 기본이 되는 활성화 함수는 스텝 함수라고 할 수 있다. 그래프 모양이 계단과 같이 생겨 임계값을 기준으로 활성화 되거나 비활성화 되는 형태를 보인다. | : <math> h(x) = \begin{cases} 0 (x\le0) \\ 1 (x>0) \end{cases} </math><br> 가장 기본이 되는 활성화 함수는 스텝 함수라고 할 수 있다. 그래프 모양이 계단과 같이 생겨 임계값을 기준으로 활성화 되거나 비활성화 되는 형태를 보인다. |
2019년 9월 19일 (목) 16:14 판
인공신경망(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)
-
로지스틱함수라고도 하며 X값의 변화에 따라 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) : 결과적으로 얻고자 하는 학습된 데이터가 담긴 뉴련층, 입력 값과 현재 시스템 상태에 기준하여 시스템 출력 값을 산출한다.
위 뉴런들은 각각 많은 가중치와 바이어스 값의 조합을 가진다. 전파되는 과정에서 가중치와 바이어스 값을 조절하지만 단순히 데이터를 오른쪽으로만 전달하면 데이터 최적하가 잘 이루어지지 않는다. 따라서 결과값에서 오차가 발생하면 해당 오차만큼 다시 앞쪽으로 전파시키면서 가중치를 갱신하는 기술이 사용되는데 이를 역전파(Backpropagation)라고 한다. 또한 매우 많은 은닉층을 두어 단계적으로 학습시킬 수 있다. 은닉층이 심층적인 신경망을 심층신경망이라고 하며 그러한 배경에서 뉴런들을 학습시키는 것을 딥러닝이라고 한다. 뉴런과 시냅스의 관계를 모방하여 간소화한 인공신경망 모델의 목표는 각 노드를 연결하는 가중치를 알아내는 것이다. 즉, 각각의 뉴런을 연결하는 시냅스의 적절한 임계값을 찾는 것이다.
역전파
종류
퍼셉트론
전망
인공신경망은 기존의 분류나 예측모형보다 복잡한 모델을 가지며 많은 계산량을 요구한다. 실제 다양한 분야에서 우수한 성과를 보이며 그 유용성을 인정받고 있는데, 이러한 인공신경망은 하나의 문제점을 가진다. 연결강도, 은닉층의 갯수와 같은 다양한 피라미터들을 최적값으로 수렴시키는 과정에서 인공신경망 모델은 학습데이터에 과적합되는 경향을 보인다. 학습된 모델을 새로운 데이터에 적용했을 때 성과가 떨어진다는 의미이다. 최근 인공신경망은 알파고가 도입하고 있는 딥러닝이라는 알고리즘이 인공신경망의 과적합 문제를 해결할 수 있는 강력한 대안으로 떠오르며 다시 주목받고 있다. 머신러닝을 통한 인공지능의 발전은 무한한 가능성을 가지고 있다.