'딥러닝'에 해당되는 글 2건

  1. 2018.03.05 인공신경망과 학습
  2. 2018.02.27 공부할 때 참고한 자료들

 "인공지능" 이라는 단어가 주변에 심심치 않게 보인다.. "인공지능 XXX" 같은 단어로 광고도 많이 나오고, 뉴스에서도 인공지능 관련 기사를 드물지 않게 다룬다. 인공지능이 우리에게 어떤 미래를 가져다 줄지 각자 생각이 다르겠지만, 이제 인공지능이 우리 삶 깊숙히 들어와 있다는 사실은 누구도 쉽게 부인할 수 없을 것 같다.  

 

 이렇게 "인공지능"이라는 단어가 자주 보이게 된 데는 제작년 딥마인드 챌린지가 큰 역할을 한 것 같다. 나는 그 때 "알파고는 절대 이세돌을 이길 수 없을 것" 이라고 말하고 다녔다. 결국 알파고가 학습하는 기보는 사람이 만든 기보고, 그 기보를 통해 얻을 수 있는 정보는 결국 이세돌같은 최고수의 직관을 넘어설 수 없을 것이라고 생각했기 때문이다.

(결과는 아시다시피..)

그런데 결과는 아시다시피 정반대로 나왔다. 꽤나 놀랐었다. 예전에 봤던 신경망은 "다" 하고 "하"를 구별 못하는 알고리즘이었는데, 내가 별 관심 없는 동안 똑똑하신 분들이 그녀석을 딥러닝이라는 괴물로 키워 내셨다.

그런데 알파고와 동일한 DNA를 가진 괴물들이 또 있었다. 괴물들 중 유명한 괴물에게는 이름이 부여되기도 하는데, AlexNet, GoogleNet, LeNet 라는 이름을 달고 있다..

 

(각기 다른 이름을 가지고 있지만 모두 인공뉴런 이라는 공통 DNA를 가진다)

일종의 Named 몹이라고 보면 좋겠다. 여러 괴물들이 각자의 능력을 뽐내지만 이 괴물들은 모두 아래와 같이 neuron이라는 공통 DNA를 가진다. 괴물들이 모두 아래와 같은 neuron조직의 연결로 만들어져 있다는 이야기다.

 

 

 

왼쪽 사진은 사람이 가진 생체 뉴론이다. 외부로부터 신호를 받고 그 신호의 총량이 역치를 넘어서면 다른 뉴런과 연결된 신경다발을 통해 또다시 신호를 전달한다. 이때 전달되는 신호의 강도는 다른 신경과 연결된 신경다발의 연결강도를 통해 알 수 있다. 이런 생체뉴론을 컴퓨터상에서 시뮬레이션 해 망으로 엮어 만든 것이 괴물의 정체라고도 할 수 있겠다.  

여기서 한개의 뉴런을 컴퓨터 상에서 시뮬레이션 하기 위해 외부로부터 받는 input 신호 x, 연결의 강도를 표현하기 위한 w, 뉴런의 역치를 표현하기 위한 bias b, 그리고 마지막으로 뉴런의 반응을 표현하기 위한 activation function f(z)등이 사용된다. 그리고 이것들을 조합해서 한개의 뉴런이 내는 activation signal은 아래와 같이 결정된다. 아무리 크고 대단한 괴물들도 모두 이 단순한 뉴런의 연결로 구성되어 있다.

 

 

그럼 이 단순한 뉴런들을 가지고 어떻게 그 괴물들을 만들 수 있었을까? 

사람의 뇌에는 특정한 일에 특화된 기계장치가 없다. 단순히 서로 연결 될 수 있는 뉴런이 무진장 많이 들어있다. 뇌는 뉴런을 서로서로 연결해서 특정 기능이 가능한 구조를 만들어 낸다. 뉴런간의 연결구조를 보고 어떤 기능을 할지 알아 낼 방법은 없지만, 어찌됐든 연결된 망은 물건을 인식하고, 숫자를 분별하고, 책을 읽고, 번역을 하고 특정 기능을 한다.

우리가 컴퓨터 상에서 시뮬레이션 하고 있는 신경망 또한 이와 같이 동작한다. 뇌 속의 망과 같이, 우리는 왜 어떤 연결 구조가 특정한 기능을 하는지 모른다. 다만 뇌가 그랬던 것 처럼 뉴런간 연결 구조를 만들어 사람이하듯 숫자를 분별하고, 책을 읽고, 번역을 하도록 구조를 만들어 기능을 부여할 수 있다. 여기서 뉴런간의 연결구조를 만드는 과정을 학습이라고 한다.

'이론 > 신경망' 카테고리의 다른 글

He 초기화 구현 in tensorflow  (0) 2018.09.19
tensorboard 간단 요약  (0) 2018.09.13
전미분, 편미분, Gradient에 대해  (2) 2018.02.28
공부할 때 참고한 자료들  (0) 2018.02.27
신경망 글을 시작하면서..  (0) 2018.02.26
Posted by 굿쟌
,

1. http://neuralnetworksanddeeplearning.com

 처음 신경망을 공부하려고 마음먹고 공부한 자료다. MNIST Hand writing 문제를 가지고 neural network와 CNN까지 설명한다. 장점이라면, 쉽게 설명되어 있으면서도 Regularization, dropout, softmax, gradient vanishing등 전반적인 문제를 다루고, tensor레벨이 아니라 수식레벨에서 SGD와 Back Propagation을 유도하고 있어서 다소 이해가 쉬웠던 것 같다. 단점이라면 이 수식 유도를 일부만 보여주고 독자들에게 해보라고 시킨다는 것.. (내가 할 줄 알았으면 이걸 안 봤겠지..)

( 저자가 보는 나의 수식유도.. )

그리고 나중에 Tensor레벨의 back propagation을 이해하기 위해, 계산그래프를 이용한 Back Propagation유도와 Tensor 미적분 내용을 다시 찾아 봐야 했다는 것도 좀 단점이라면 단점이겠다.. 하지만 전체적으로 입문서로 보기에 231n 보다 좋은 것 같다. (참고로 샘플코드도 제공한다)

 

2. 밑바닥부터 시작하는 딥러닝 / 한빛 미디어 / 사이토 고키 저, 개앞맵시 역

물고기 책이다. 한글로 되어 있어서 1번보다 가독성이 좋은 장점이 있다. 계산 그래프 방식으로 back propagation을 소개하고 있어서 1번 자료를 정독하고 나서 읽었다. 1번 자료는 개별 데이터 단위, 계별 뉴런 단위로 back propagation을 유도해서 설명하다보니, 거기서 배운 것을 바로 layer단위, tensor 단위로 이뤄지는 back propagation에 적용하기 어려워서 이 책에서 설명하는 계산그래프를 공부했다.

책에서 설명하는 주제들은 대부분 1번 자료에서 다루는 주제와 겹친다. 하지만 설명만 놓고 보자면 1번 자료보다는 디테일이 좀 떨어지는 것 같다는 생각이 든다. 그래서 1번 자료를 한번 정독하고 보면 좋을 것 같다.

단점이라면 이놈의 책도 은근슬쩍 어려운 수식유도는 독자에게 넘긴다. 예를 들자면 affine계층의 backward pass를 유도할 때 "실제로 전개해 보면 다음 식이 도출 됩니다. [식 5.13]으로 이끄는 과정은 생략합니다." 라고 쓰고 유도를 안한다. 수식을 유도할 수 있어야 뭔가를 이해한 것 같다고 생각하는 사람에게는 상당히 찜찜한 전개다.

(필요한 만큼 못봤는데...)

그래서 한동안 Tesnor 미분을 어떻게 해야 하는지, Tensor 미분에서 chain rule은 어떻게 생각해야 하는지 한동안 자료를 찾아 구글을 떠돌아 다녔다. 그래도 상당히 친절한 편이며 코드를 제공하고 있어서 처음에 같이 따라해보면서 배우기에는 좋은 책인 것 같다.

 

3. cs231n (http://cs231n.stanford.edu/)

"딥러닝 입문자의 바이블이다." 라고 들었는데 실제로 나는 나 혼자 먼먼길을 돌아돌아 지금 이제서야 이걸 공부하고 있다. 하지만 1번 자료, 2번 자료를 어느정도 보고나서 공부하고 있기 때문에 그나마 이해를 하고 있는게 아닌가 싶다. 강의 비디오와 강의 노트가 제공되는데 강의 비디오를 아무 사전지식 없이 봤다면 영어 청취가 잘 안되는 나로서는 뭔소리인지 이해를 못하지 않았을까 싶다. 바이블인만큼 가장 많은 참고자료를 찾을 수 있어서 좋긴하다.

( 영어 잘하고 싶다.. )

'이론 > 신경망' 카테고리의 다른 글

He 초기화 구현 in tensorflow  (0) 2018.09.19
tensorboard 간단 요약  (0) 2018.09.13
인공신경망과 학습  (0) 2018.03.05
전미분, 편미분, Gradient에 대해  (2) 2018.02.28
신경망 글을 시작하면서..  (0) 2018.02.26
Posted by 굿쟌
,