The architecture of neural networks

2016. 1. 20. 13:37machine learning

http://neuralnetworksanddeeplearning.com/ 의 e-book을 의역함.



이 전에 언급한 바와 같이 가장 최좌측의 레이어를 input layer라고 부르며 가장 오른쪽의 레이어를 output layer라고 부른다. output layer는 하나의 neuron만을 가진다. 중간에 있는 layer들은 hidden layer라고 부른다. hidden이라는 뜻이 무언가 엄청 그럴싸한 느낌을 주는 layer라고 생각할 수가 있겠지만 그냥 단지 input도 output도 아닌 존재를 hidden이라고 부를 뿐이다. 위의 네트워크는 하나의 hidden layer를 가지고 있지만, 다른 몇몇의 네트워크들은 다중의 hidden layer를 가질 수도 있다. 예를 들어 아래의 네트워크는 두 개의 hidden layer를 지닌다.



이러한 다중 레이어 네트워크를 multilayer perceptron 또는 MLP라고 부른다. input layer와 output layer는 간단해 보인다. 예를 들어 9라고 씌여진 handwritten 이미지를 구분해야 한다고 가정하자. 만약 이미지가 64 x 64의 grey image라면 input neuron은 64 x 64 = 4096 개가 된다. 각각의 input은 0과 1 사이에 적절한 값으로 매핑되어야 한다. output 결과가 0.5보다 작다면 image가 9가 아님을 말하는 것이며 0.5보다 크다면 image가 9임을 나타내게 된다. 

input layer와 output layer가 쉬운 반면에 hidden layer의 디자인은 상당히 어렵다. 이를 위해 연구자들은 사용자들이 원하는 네트워크를 형성할 수 있도록 도움을 줄 수 있는 많은 hidden layer들을 만들어 놓았다. 


지금까지 우리는 하나의 layer에서 output이 다음 layer의 입력으로 나타내는 형태의 네트워크를 공부하였다. 이러한 네트워크를 feedforward neural network라고 부른다. 이 의미는 네트워크 상 루프가 없다는 뜻이 된다. 만약 우리가 루프를 가지게 된다면, 함수의 입력이 출력에 영향을 미치는 상황이 오게된다. 이는 매우 풀기 어려우며 우리는 이러한 루프를 허용하지 않는다.

일부 네트워크는 feedback loop를 허용하는데 이러한 모델을 recurrent neural network라고 부른다.