학습을 반복하면 Training error는 줄어들 수 밖에 없다. 하지만 이것은 원하는 최적값에 도달했다는 것을 보장해 주지는 않는다. 어느정도 반복을 하게 되면 test error는 오히려 커지게 된다.
이 test error와 training error의 차이를 Generalization gap이라고 한다.
초록선처럼, 학습 데이터를 과하게 학습한 것을 overfitting(과적합)이라고 한다.
cross-validation, k-fold validation
k개로 데이터 셋을 쪼개 k-1개로 학습시킨 후 나머지 하나로 테스트를 하는 것을 cross-validation이라고 한다.
파라미터 : 내가 최적해서 찾고 싶은 값 ex) bias 등
하이퍼 파라미터: 내가 정하는 값 ex) learning rate 등
bias and Variance
편향은 학습 알고리즘에서 잘못된 가정을 했을 때 발생하는 오차이고, 분산은 트레이닝 셋에 내재된 작은 변동(fluctuation) 때문에 발생하는 오차이다.
모델의 특성이 bias를 줄이면 variance가 커질 가능성이 높고, variance를 줄이면 bias가 커질 가능성이 크다. noise가 존재할 경우에, bias와 variance를 같이 줄이는 방법은 구하기 힘들다.
Bootstrapping
Bagging(bootstrap aggregating)
고정된 학습 데이터가 있을 때, 그 안에서 random sampling을 이용해 여러 개의 모델을 만들어, 각각의 결과가 얼마나 일치하는지 확인하는, 정확도를 확인하는 기법이다.
ex) 학습 데이터중 80%의 학습 데이터를 사용하는 n개의 모델의 결과 값을 사용하여 도출해낸 성능이 모든 학습 데이터를 사용한 1개의 모델의 성능보다 더 좋은 성능을 낼 때가 많다.
Boosting
고정된 학습 데이터가 있을 때, 모델을 만든 후 잘 분류되지 않은 데이터를 따로 취합해 이에 대한 모델을 새로 만드는 것을 반복하여 결국에는 이렇게 만들어진 모델을 모두 합치는 것.
Gradient Descent Methods
Stochastic Gradient descent
Mini-batch gradient descent
Batch gradint descent
대부분의 Gradient Descent를 사용할 때는 Mini-batch gradient descent를 사용한다.
Batch-size
큰 배치 사이즈를 사용하는 것보다는 sharp minimizers가 일어나게 되고, 배치 사이즈를 사용하는 것은 flat minimizer가 일어나는데, 배치 사이즈를 작게 사용하는 것이 일반적으로 성능이 더 좋다. 일반적으로 Generalization가 좋아지기 때문이다.
flat minimum = training function에서 잘 되면, testing Function에서 잘 동작하는 것, 즉, 일반화 성능이 좋다.
sharp minimizers = training function에서 잘 되어도, testing Function에서 잘 동작하지 않을 수 있다.
Optimizer
기본적인 Gradient descent
Wt+1←Wt−ηgradientgt
이는 Learning rate를 조절하는 것이 어렵다. 너무 크면 학습이 안되고, 너무 작으면 학습을 아무리 시켜도 학습이 되지 않는다.
이를 발전시키고자, gradient 값만 사용해도 더 좋은 성능을 낼수 있도록 optimizer가 등장한다.
Momentum
at+1Wt+1←βat+gt←Wt−ηat+1
β(momentum)이라는 하이퍼 파라미터가 들어간다.
하이퍼 파라미터 momentum과 gradient를 합친 at+1(accumulation)를 이용한다.
한번 흘러가게 된 gradient 방향을 어느정도 유지시키기 때문에 gradient 값이 변동이 심해도 어느 정도 유지시켜주는 장점이 있다.
NAG(Nesterov Accelerated Gradient)
at+1Wt+1←βat+∇L(Wt−ηβat)←Wt−ηat+1
Lookagead gradient = a라고 하는 현재 정보가 존재하면 그 방향으로 그레디언트를 계산한 것을 이용해 accumulation을 만든다.
Momentum의 local minima로 도달하는데 매우 오래걸릴 수 있는 문제를 보완할 수 있다.
Adagrad
Wt+1=Wt−Gt+ϵηgt
지금까지 많이 변화한 파라미터는 적게 변화시키고, 적게 변한 파라미터는 많이 변화시키기 위해 각 파라미터가 얼만큼 변화했는지 알려주는 Gt를 이용한다. ϵ = 분모가 0이 되지 않게 하기 위한 값
가장 큰 문제는 Gt는 계속해서 커지기 때문에, 결국 무한대로 가게되면 학습이 멈춰지는 현상이 생긴다.