DNN의 파라미터(weight, bias etc.)가 정해졌을 때, 이 파라미터의 성능은 어떻게 평가할 수 있을까? 이는 input data의 예측치와 label의 비교를 통해 평가할 수 있다. 이때 문제점이 있다. classify의 분류기의 경우는 output은 각 label에 해당할 확률 vector이고, label 자체는 scalar이다. 고로 벡터와 스칼라의 비교가 문제가 된다.

이는 label을 벡터화 시켜서 해결한다. label 자체가 2이고 0~9로의 분류기라면, 10개의 벡터에서 2에 해당하는 값만 1로 만들어서 벡터로 만든다. 이젠 label과 output의 비교가 가능하다. 이처럼 특정 스칼라에 해당하는 값을 벡터화 시켜서 해당 스칼라에 해당하는 벡터 요소만 1의 값을 넣고 나머지는 0으로 처리하는 기법을 one-hot coding이라고 한다.
비교는 label과 output벡터간의 MSE 혹은 cross entropy를 구하여 할 수 있다. 각 요소간의 차이의 제곱을 모두 더하고 벡터의 요소개수로 나눠준다. 이가 MSE(mean square error)의 정의다. Total Cost는 이러한 MSE를 모든 training data에 대해서 구한 후 더한 값이다. 하나의 데이터의 MSE만으로 파라미터의 성능을 평가하기엔 무리가 있기에 이와 같이 Total Cost를 구하여 파라미터의 성능을 평가한다. Total Cost가 낮을수록 label과 output의 차이가 training data 기준으로 작다는 것이기 때문에, 좋은 파라미터가 된다.

경사하강법이란 함수의 최솟값을 찾기위해 사용하는 반복적 최적화 알고리즘이다. 1차 미분인 gradient를 사용한다. Cost function을 최소화하기 위해 사용된다. 그래디언트는 수학적으로 가장 값이 빠르게 증가하는 방향이다. 그래서 그래디언트에 마이너스를 곱한 값을 사용하여 가장 빠르게 값이 감소하는 방향으로 이동하여 Cost Function을 최소화한다.
파라미터의 요소가 특정 값들로 결정되면, 그에 따른 Cost function(Total Cost)를 구할 수 있다. 파라미터가 2개뿐인 DNN의 경우 Cost값을 3차원 요소값으로 생각할 경우, 파라미터에 따른 Cost값이 하나의 곡면(Cost surface)으로 나타난다.
경사하강법의 과정은 다음과 같다.
1. 랜덤으로 시작점 파라미터를 설정한다.
2. 파라미터에서의 그래디언트를 계산하고 이에 마이너스를 곱하여 그 방향으로 이동한다.
3. 2번을 반복한다.

독립변수가 1개일때는 미분하면 Derivative이다. 이는 기울기이며, 이 값의 부호에 따라 값이 증가하거나 감소하는 방향이 정해진다. 독립변수가 2개 이상일때는 이들에 대해 편미분한 벡터가 Gradient이다. 이 방향은 항상 함수값이 가장 빠르게 증가하는 방향이다. 이것이 Derivative와 구분되는 가장 큰 특징이며, 이 특징 덕분에 추가적인 처리과정없이 항상 Gradient를 구한 후 이에 마이너스 부호를 곱한 방향으로 이동하면 Cost function의 값을 줄일 수 있다.

경사하강법을 시행할 때, cost funtion이 감소하는 방향으로 이동한다. 이때 큰 보폭으로 감소하게 되면, 파라미터가 최적값에 수렴하지 않고 근처에서 돌아다니거나 최적값 근처의 범위를 벗어날 수 있다. 고로 learining rate를 그래디언트의 음수버전에 함께 곱하여 이를 gradient descent로 사용하면, 아주 조금씩 파라미터가 수정되면서 최적의 값에 도달하는 것이 효율적으로 진행된다.
경사하강법의 한계
- Local Minima (지역 극솟값) 문제
사실 경사하강법은 최솟값을 찾는다기보다는 극솟값을 찾는 방식에 가까움. 고로 시작하는 지점에 따라서 수렴하는 파라미터가 달라질 수 있으며, 해당 파라미터가 최적의 값인지를 추가적으로 판단하기 위한 수단이 필요해보임.- Plateau 현상 (고원 현상)
현재 위치한 파라미터에서의 Cost surface에 대해서 주변의 cost값이 현재 파라미터의 cost값과 아무 차이가 없다면, 그렇다면 극소 주변의 cost를 생각할 때 cost가 줄어드는 방향이 없으므로, 그래디언트 자체가 0이 될 수 있다. 즉, 주변이 평면인 파라미터에 대해서는 효율적이지 못하다.- Oscillation (진동) 문제
경사하강법이 반복적으로 진행될 때마다, 파라미터는 최적의 방향이 아닌 현재의 cost surface기준으로 빠르게 값이 감소하는 방향으로 이동한다. 두 방향은 서로 상이할 수 있다. 고로 진동하면서 최적의 값에 수렴할 수 있으며, 이때는 경사하강법이 비효율적인 최적화방식이 된다.- 많은 연산량과 컴퓨터 자원 소모
파라미터의 모든 요소에 대해 미분하고, 파라미터를 반복적으로 수렴시킨다. 파라미터의 요소의 개수가 많다면 그리고 반복 횟수가 많아지면 컴퓨터는 굉장히 많은 연산량을 감당해야 한다.