뉴럴네트워크(Neural Network)

기술/인공지능 2017. 8. 18. 20:45 Posted by 아는 개발자


숫자 인식 코드를 분석 할 때 이미지 사이즈의 크기는 28x28이라서 총 784개의 feature를 두어서 구할 수 있었습니다. 그런데 실제로 사용하는 이미지는 이것보다 훨씬 크기가 큽니다. 바탕화면 해상도는 1920x1020이고 여기에 색깔을 넣기 위해 3차원까지 넣어서 총 요소(Element)들의 개수는 5,875,200(1920*1020*3)개가 됩니다. 요소들의 개수만큼 feature로 놓고 학습을 시킨다면 매우 시간이 오래 걸리겠죠?


그래서 인공지능 과학자들은 다른 방법을 고안했습니다. 과학자들은 연구에서 어려움이 있을 때마다 주로 자연에서 해답을 얻곤 하는데요 인공지능 뇌과학자들은 인간의 뇌의 뉴런구조를 본따서 이 문제를 해결하기로 했습니다. 인간의 뇌가 생각하는 방식을 컴퓨터에 이식 할 수 있다면 이 문제도 쉽게 해결 할 수 있다고 본겁니다. 완전히 발상을 전환했지요?



아마 고등학교때 생물 수업을 들어보신 분은 뉴런 구조에 대해서 간단히 알고 계실 겁니다. 왼쪽 줄기로 된 부분들에서 외부의 전기 자극을 받고 이것의 종합 값이 새로운 전기 자극을 발생시킬 정도가 되는지 확인해서 자극을 전달하는 방식입니다. 이것을 좀더 수학적으로 표현하면 아래와 같습니다.




x1, x2, x3는 외부에서 온 자극의 세기를 말합니다. 그리고 g(x1, x2, x3)는 이 자극들을 어떠한 수식에 의해서 변환된 총합을 의미합니다. 최종적으로 H(x) 함수를 통해 외부의 세기로 전달할 자극의 세기를 결정합니다. 이것으로 어떤 세기로 전달할지가 결정 되는 것이지요. 여기서 g(x1, x2, x3) 이 식은 주로 직선 개별에 가중치 값을 둬서 w1*x1 + w2*x2 + w3*x3로 표현하곤 하는데요 반복적인 학습 작업을 통해서 적절한 w1, w2, w3의 값을 구하게 됩니다.


뉴런 하나 가지고 학습하고 미래를 예측하기엔 턱없이 부족합니다. 하지만 뉴런의 개수가 많다면 더 효율적으로 예측 할 수 있습니다. 실제로 뉴럴네트워크에서는 아래의 그림처럼 여러 개의 뉴런층을 나눠서 학습시킵니다.


neural network에 대한 이미지 검색결과


많은 양의 데이터와 뉴럴네트워크를 사용한 학습모델은 생각보다 '아주 잘' 작동합니다. Feature 개수가 늘어나서 도저히 학습시키기 어려워 보였던 것들도 뉴럴 네트워크를 이용해 금방 해결 할 수 있고 예측도 '생각보다 잘' 합니다. 정말 인간의 뇌를 복사한 것 같기도 합니다. 뉴럴네트워크 덕분에 이미지/음성 인식처럼 불가능해보였던 영역이 많이 발전했습니다. 특히 이미지인식은 알래스카 맬러뮤트랑 시베리언 허스키를 구분 할 수 있는 수준까지 왔다고 하네요


728x90

'기술 > 인공지능' 카테고리의 다른 글

Q-Learning  (0) 2018.08.19
파이썬으로 AI 개발할 때 유용한 패키지 모음  (0) 2018.08.07
뉴럴네트워크(Neural Network)  (0) 2017.08.18
오버피팅(Overfitting)  (0) 2017.08.10
숫자인식 코드 분석해보기  (2) 2017.08.03
Softmax와 Cross entropy  (0) 2017.08.03