[Machine Learning] Concept of Neural Network

사람의 뇌는 biological neural network (신경망)로 구성되어 있다고 한다. 각 neural이 독립적으로 동작하여 서로 signal을 주고받는 형태이다 (솔직히 뭔 말인지 모르겠다. 사람의 뇌가 어떻게 동작하는지는 정확히 이해하지 못하였다). 아래 그림은 사람의 neuron을 그려놓은 그림이다.

 

400px-Neuron_Hand-tuned.svg
그림 1: 사람의 Neuron (출처)

 

1943년에 Warren S. McCulloch (neuroscientist)와 Walter Pitts (logician)이 처음으로 인공지능망이란 개념을 제안하였다고 한다 (출처). 제안한 개념에 따르면, 인공신경망의 각 객체 (cell)은 input을 받아서 output을 만들어내는 함수와 같은 존재라고 정의하였다. 인공지능망을 관련 연구를 지속하면서 인공지능망은 사람의 뇌와 비슷하게 동작하기보다는 특정 문제를 풀기 위한 형태로 발전하였다고 한다.

 

인공지능망은 기존의 프로그램과의 약간의 차이가 존재한다. 기존 프로그램은 순차적인 실행을 한다. main 함수에서 시작을 하여 끝까지 순차적으로 실행하는 형태이다. 하지만, 인공지능망의 경우는 특정한 data만 병렬적으로 실행하는 형태라고 한다. (이것도 정확히 다른 점이라고 이야기를 하기에는 무리가 있는 것 같다. 결과적으로 인공지능망도 main과 같은 함수가 있어서 순차적인 실행 한다. 단지 선택적인 실행을 한다는 의미인 것 같다). 아래 그림은 인공지능망의 예를 보여준다. 각 동그란 모양이 neuron을 의미하는 것이다. 각 neuron은 input을 읽어서 연산을 수행 후 output을 만들어낸다.

 

ch10_02
그림 2: 인공지능망의 예 (출처)

 

인공지능망의 가장 큰 특징(?)은 학습(learning)할 수 있다는 것이다. 인공지능망은 학습을 통하여 다양한 형태로 변경이 가능한 시스템이다. 간단한 예로 위의 그림에서 neuron이 연결된 line의 weight 값을 변경하면 새로운 시스템이 된다. 각 line의 weight는 각 neuron의 signal behavior를 의미한다고 한다. 결과적으로 weight 값이 변하며 neuron 간의 시그널값이 변경되게 되기 때문에 적합한 weight 값을 찾아가는 단계를 학습이라고 한다.

 

학습 방법은 크게 아래의 3가지가 존재한다고 한다.
  • Supervised learning: 결과를 알고 있는 input을 사용하여 인공지능망을 학습하는 방법이다. 예를 들어 동물 사진이 여러 개가 있다고 가정을 하면 각 사진에 어떤 동물이 포함되어 있는지 결과를 알고 있다. 이러한 사진을 input으로 넣으면 인공지능망은 해당 사진의 동물이 무엇인가 결과를 찾아낼 것이다. 만약 그 결과가 틀리면 인공지능망의 weight와 같은 특정 값을 수정하는 것을 supervised learning이라고 한다.
  • Unsupervised learning: 결과가 없는 input을 이용하여 인공지능망을 학습하는 방법이다. 이 부분을 이해하는데 정말로 많은 시간이 걸렸다. 그리고 정확히 이해한 것인지 모르겠다. Unsupervised learning의 간단한 예가 clustering이다 (정말로 많은 곳에서 이렇게 단순히 설명했다). 이해한 바에 의하면 input을 특정한 방법으로 나누는 것을 의미한다. 예를 들어 input으로 100장의 사진이 있다고 가정을 하자. 그 100장을 사진을 다 보면서 비슷한 점이나 특징을 찾아서 그 100장을 임의로 나누는 방법이다. 100장 중 10장은 무언가 비슷한 공통점이 있고, 나머지 20장은 또한 다른 특정한 공통점이 있어서 나누어 지고, 이런 식으로 나누어 지게 되면 마지막에 100장은 어떠한 특징들로 나누어 지게 된다. 결과적으로 그 나누어진 사진들이 무엇을 의미하는지는 알 수 없지만, 비슷한 공통된 특징을 가지게 된다. 이렇게 나누어진 특징을 네트워크 형태로 변경하면 인공지능망이 되는 것이다. 결과적으로 인공지능망이 미리 설계되어 있으면 나뉘는 특징의 개수가 제한되는 것이고 만약 인공지능망이 미리 설계되어 있지 않으면 나뉘는 특징은 여러 개에서 수십 개까지 늘어날 수도 있다 (위 내용은 내가 이해한 부분이다. 솔직히 설명을 찾다가 명확한 설명이 없어서 혼자 내린 결론이며 예제이다. 그러므로 틀린 부분이 있을 수도 있다).
  • Reinforcement Learning: 해당 학습은 observation(관찰, 관측)을 통한 학습을 의미한다. 가장 간단한 예로 로봇 청소기이다. 로봇 청소기를 처음 사면 집을 이곳저곳 다니면서 벽과 부딪히고 책상과 부딪히면서 집 구조를 학습한다. 이런 학습을 통하면 로봇 청소기는 똑똑해진다(?). 물론 그래도 계속 부딪히긴 한다. 하지만 불필요한 움직임을 제거해가는 과정이다. 이러한 학습을 reinforcement learning이라고 한다.
위와 같은 학습을 통해서 인공지능망이 결정된다. 학습된 인공지능망을 사용하면 특정 문제들을 해결할 수 있게 되는 것이다. 인공지능망은 현재 다양한 분야에서 아주 효율적인 성능을 발휘한다. 예로 pattern (image) recognition, self driving 등이 있다. 실제로 인공지능망을 이해하려면 아주 많은 수학지식이 필요하다고 한다. 하지만 대략 작동하는 방법을 이해하는 데는 수학을 몰라도 큰 무리가 없다. 위의 내용은 해당 사이트를 참조로 작성하였다 (참조). 계속 공부를 하면서 새로운 내용을 지속해서 추가할 계획이다.

 

참고로 인공지능망은 사람은 쉽게 풀 수 있으나 컴퓨터가 풀기 어려운 문제를 풀기 위해서 만들어졌다는 이야기도 있다. 예를 들어 수학적인 계산은 컴퓨터가 사람보다 훨씬 빠른 시간에 문제를 풀 수 있다. 하지만, 반대로 사진에 어떤 동물이 그려져 있는지는 사람은 쉽게 알 수 있지만, 컴퓨터는 어떤 동물인지 쉽게 판단할 수 없다. 이렇게 컴퓨터가 풀기 어려운 문제를 해결하는 데 인공지능망이 사용된다고 한다.

Leave a Comment