본문 바로가기
IT/[Everyday]Coding

딥러닝_Neural Network_서론

by Jang HyunWoong 2014. 12. 19.

deep learing(딥러닝)을 공부하려면 기본적으로 신경망 네트워크를 알아야 한다.

앞으로 간단하게 요약을 해서 정리하려고 한다. 

먼저 기본적으로 

퍼셉트론(perceptron)은 인공신경망의 한 종류로서, 1957년에 코넬 항공 연구소(Cornell Aeronautical Lab)의 프랑크 로젠블라트 (Frank Rosenblatt)에 의해 고안되었다. 이것은 가장 간단한 형태의 피드포워드(Feedforward) 네트워크 - 선형분류기- 으로도 볼 수 있다.

퍼셉트론이 동작하는 방식은 다음과 같다. 각 노드의 가중치와 입력치를 곱한 것을 모두 합한 값이 활성함수에 의해 판단되는데, 그 값이 임계치(보통 0)보다 크면 뉴런이 활성화되고 결과값으로 1을 출력한다. 뉴런이 활성화되지 않으면 결과값으로 -1을 출력한다.

마빈 민스키와 시모어 페퍼트는 저서 "퍼셉트론"에서 단층 퍼셉트론은 XOR 연산이 불가능하지만, 다층 퍼셉트론으로는 XOR 연산이 가능함을 보였다.

-위키백과

 

사람의 뇌는 biological 한 뉴런 네트워크로 이루어져 있다고 볼 수 있다. 

뇌에 대한 전문가는 아니지만 기본적인 지식으로는 여러가지 전기신호를 수상돌기(dendrite)에서 받는다. 그러한 신호들을 소마에서 처리 한 후 축색 돌기(axon)를 통해 output을 다른 뉴런으로 신호를 전달한다. 

아직 인간의 뇌가 어떻게 동작하는지 명확하게 정의 내린 것이 없다. 여러가지 의견과 추측이 있을 뿐이다. 자세히 파고 들어가면 How?를 정의하기는 쉽지 않다. 

사람들은 뉴런 네트워크의 형태를 구현하려고 한다. 그 이유는 아마도 사람의 뇌를 구현시키는게 기계 발전에 있어서 거의 막판이 아닐까 생각된다. 

 

신경망(Neural Network)은 오래 전부터 연구되어 왔다. 1950년대 쯤, 인간의 뇌에서 영감을 얻어 뉴런과 비슷하게 artificial neural network를 구현 했다. 하지만 기계적인 문제, 구현문제, XOR연산 등 여러가지로 성능이 좋지 않게 나왔기 때문에 사라졌었다. 그러다가 최근(약 10년?) 힐튼 교수에 의해 다시 부활했다. 이유는 여러가지가 있다. 컴퓨터 성능, overfitting 문제 해결, 빅데이터, RBM(Restricted Boltzmann Machine) 등을 통해 딥러닝이라는 용어로 나타났다. 

 

신경망은 connectionist model 이라고 할 수 있다. 

보통 프로그램은 처음 한 줄씩 시작해서 실행하고 다음으로 넘어가기 때문에 linear적이라고 볼 수 있다. 

그에 반해 뉴럴 네트워크는 parallel 평행적이라고 할 수 있다. 복잡한 구조이다.

 

뉴럴 네트워크의 특징 중 하나는 learn, 학습이다. 그냥 단순히 복잡한 시스템이  아니라 적응 가능(adaptive)시스템이다. 곧 정보에 따라 내부 구조가 변할 수 있다는 뜻이다. (여기서 구조는 연결되는 신호 정보이다.)

일반적으로 weight를 통해 조정되고 활성화 된다. 위의 그림에서 보면 여러가지 각 노드를 연결하는 선이 있는데 Inputs노드에서 다음 노드를 연결하는 선들에 weight 정보가 있다. 이 weight는 두 뉴런사이의 신호를 제어한다. 

 

앞으로 다룰 퍼셉트론에 대해 보면 어떻게 다루는지(control) 알 수 있다. 

 

오늘날 신경망 알고리즘은 여러 분야에 사용되는데 크게

Pattern Recognition (패턴 인식) - 예를 들어 얼굴인식, 손글씨 인식, 이미지 인식 등

Time Series Prediction - 예를 들어 날씨 예측

Signal Processing - 예를 들어 음성인식

Control - 예를 들어 스마트 카 제어

Anomaly Detection - 이상값을 찾아내는 것, 보안쪽에 쓰이는거 같다. 특히 최근에 이슈가 되고있는 스마트카 보안에도 사용되서 나왔던 것으로 세미나에서 봤었다. 예를 들어 보안

 

내 전공이 AI쪽도 아니기 때문에 자세하게 볼 수 없고 차근차근 공부해 나가면서 정리하겠다. 

아마 깊게는 못들어가고 기본적인 이해만 할 수 있을 것이다. 

 

서론을 끝내고 기본적으로 알아야할 Neural Network에 대해 알아보겠다. 

반응형

'IT > [Everyday]Coding' 카테고리의 다른 글

딥러닝_Neural Network_퍼셉트론2  (1) 2014.12.19
딥러닝_Neural Network_퍼셉트론  (0) 2014.12.19
퀵정렬 (Quick Sort)  (0) 2014.12.19
사각형그리기2  (0) 2014.12.19
사각형그리기1  (0) 2014.12.19