DNN은 여러개의 hidden layers를 사용하는 NN으로, layer가 많을 수록 이전 layer에 있는 feature들의 값 조합을 통해 더 높은 퀄리티의 feature를 뽑아내기에 더 좋은 성능을 낸다.


Activation Function의 필요성 :
NN들은 layer들 사이에서의 계산과정에서 weighted sum을 구한 이후 activation function을 적용한 값을 다음 layer의 feature로 보낸다. Activation function은 비선형 함수를 사용한다. 만약 activation function이 없이 weighted sum을 한 값이 바로 다음 layer node의 feature로 할당된다면, 여러개의 layer를 지나서 나온 값이라도 결국 여러 번의 선형 함수가 적용된 값이다. 여러 개의 선형함수가 적용된 계산과정은 선형함수의 특성으로 인해 하나의 선형함수로 일축할 수 있다. 즉, 여러개의 layer를 지났더라도 해당 layer를 지나는 계산과정에서 비선형성이 없다면, 하나의 layer를 통과한 것과 같은 역할을 한 것이다. 이는 단일 perceptron을 이용했을 때와 마찬가지로 성능이 좋지 않다.
Activation Function으로 사용하기 좋은 특징 :
Activation Function으로 사용하려면 다음과 같은 특징을 갖는 것이 좋다. 첫 번째로 연속함수이며, 두 번째로 미분가능 함수이다. 이러한 특성을 갖는 함수가 Activation Function으로서 유리한 이유는 backpropagation을 할 때 activation function을 미분해야하기 때문이다. 자주 쓰이는 Activation Function인 sigmoid function은 두 가지를 모두 만족한다. 참고로 sigmoid function은 입력(x)가 어떤 실수값이든 0~1의 출력(y)을 내놓는 함수이다. sigmoid function은 미분하면 계산이 더 간단해진다. 더하여 미분 불가능한 Activation Function으로 relu라는 함수도 사용되는데, 미분이 불가하더라도 backpropagation 자체는 가능하다.

softmax function은 supervised learning의 classifycation에서 output layer의 feature 값들을 계산할 때 activation function으로 요긴하게 사용된다. Softmax function은 input layer와 hidden layers에선 전혀 사용되지 않고 오직 output layer에서 종종 사용된다.
classifycation 문제에서 만약 output layer까지 activation function을 sigmoid function을 쓴다면, output data를 봤을 때, 모든 요소 중 부분 요소의 값만 보고는 어떤 label로 분류될 것으로 알고리즘이 추정했는지를 알기 어렵다. output data중 하나가 0.8이라 매우 높은 수치여도, 0.9 처럼 더 높은 수치가 있다면 더 높은 값으로 분류되기 때문이다. Softmax function은 이러한 문제를 해결한다. output layer의 전 layer의 feature들의 합 기준으로 해당 feature들을 정규화하여, output data가 각 요소에 해당할 "확률처럼" 보이도록 만들어준다. 이를 통해 상대적인 값비교로 부분적인 output data만 보더라도 어느정도 분류될 추정라벨이 예상가능해진다. 유의해야할 것은 Softmax function 처리 이후의 값은 실제 확률분포가 아니라는 것이다. 확률의 모습만 띄고 있지, 실제 확률 분포가 절대 아니다.

이젠 DNN의 성능개선을 위한 parameters를 설정한다. weights라고도 한다. 이는 각 layer들에서의 weight들과 bias들을 포함한다. 이러한 parameter는, classifycation에 적용한다면 이미지의 숫자를 정확하게 분류할 수 있도록 찾아져야한다. 이를 찾기위한 방법은 backpropagation을 사용한다. 이때 backprpagation을 하기위해 output과 label사이의 error가 얼마나 큰지를 나타내는 function인 cost function을 정의해야한다.