Neural Network 개선

출처. :  http://adventuresinmachinelearning.com/improve-neural-networks-part-1/

우리가 신경망의 성능을 “향상”하려고 할 때 일반적으로 두 가지를 언급합니다 :

(1) 정확도 향상
(2) 학습 과정 속도 향상 (정확성을 유지하면서)

(1)과 (2)는 서로 경쟁적입니다. 왜냐하면 정확성을 높이기 위해 더 많은 데이터와 반복 횟수로 네트워크를 학습해야하기 때문입니다. 이것은 그러나 학습 속도가 느려지고 비용이 많이 듭니다.

신경망에서의 오버피팅(Overfitting)과 정규화(Regularisation)

1.1 오버 피팅
신경 회로망에서 우리는 항상 사용 가능한 데이터를 적어도 룬련 및 테스트 세트로 분할합니다. 우리는 신경망이 잘 일반화 되기를 원하기 때문에 이렇게 합니다. 이것은 우리 네트워크가 학습 중 이전에 “보지 못한” 데이터에 대해 잘 수행되기를 바랍니다. 우리가 학습중에 네트워크에있는 모든 데이터를 입력하면 학습 데이터에 오버피팅이 있는지는 알 수 없습니다 . 그럴 경우, 훈련을 받지 않은 새로운 데이터를 잘못 처리합니다. 우리는 네트워크가 잘 작동 하는지 확인하기 위해 테스트세트인 또 다른 데이터 세트가 필요 합니다.

학습과정에서 머신러닝 모델이 오버피팅이 일어나면  어떻게 됩니까? 그것에 대해 간단한 방법은 학습 데이터를 고려할 때 지나치게 복잡해진다는 것입니다. 이것은 종종 선형 회귀 예제를 사용하여 가장 잘 설명됩니다. 위키 백과의 아래 이미지를 참조하십시오.

 

검은점은 훈련 데이터입니다. 보이듯이, 데이터 포인트는 분명히 x가 증가함에 따라 선형 추세를 따릅니다 . 그러나 관계에 약간의 노이즈가 있습니다. 즉 모든 데이터 포인트가 검은색 선형 추세선에 있지는 않습니다. 파란선은 고차원 다항 모델( high order polynomial model)로, 훈련 데이터에 완벽하게 부합합니다. 그러나 직관적으로 우리는 검은색 선형선이 더 나은 모델이라고 말할 수 있습니다. 왜 그런가요? 파란색 모델은 데이터를 고려할 때 너무 복잡하기 때문에 데이터의 무작위 노이즈를 “뒤쫓아” 복잡합니다. 가로축의 작은 변화가 세로축의 큰 변화를 초래할 수 있음을 알 수 있습니다. 이것은 좋은 모델이 아니므로 시도한 모든 테스트 세트에서 성능이 좋지 않습니다.
오버피팅 (over-fitting)은 우리가 신경 네트워크에서 주의해야하는 것입니다. 이것을 피하는 좋은 방법은 정규화라고하는 것을 사용하는 것입니다.

1.2 정규화
정규화는 훈련 과정에서 신경망의 가중치(Weight)가 너무 커지지 않도록하는 것입니다. 훈련 중 신경 네트워크는 비용 함수의 로컬 최소값에 수렴 할 것입니다. 이 로컬에는 많은 최소값이 있고, 그들 중 대다수는 대략 동일한 비용함수(Cost Function)를 가질 것입니다 – 다른 말로하면, 고양이를 다듬는 많은 방법이 있습니다. 이러한 로컬 최소값 중 일부는 노드와 레이어를 연결하는 큰 가중치를 가지며 다른 값은 더 작은 값을 갖습니다. 우리는 우리의 신경망이 더 큰 것이 아니라 더 작은 가중치를 선택하도록 강요하고자합니다.

이것은 우리 네트워크의 복잡성을 덜어줍니다.하지만 그 이유는 무엇입니까? 우리가 오버핏된 모델이 작은 입력 변화에 비해 예측에 큰 변화가 있음을 고려하십시오. 다시 말해서 데이터에 약간의 노이즈가 있는 경우 초과 모델은 해당 노이즈에 강하게 반응합니다. 신경 네트워크의 유사한 상황은 우리가 큰 가중치를 갖는 경우입니다. 그러한 네트워크는 노이즈에 강하게 반응 할 가능성이 더 큽니다. 큰 가중치는 노이즈로 인한 것일 수있는 입력의 작은 변화를 증폭시키기 때문입니다. 그러므로 우리는 훈련을 가중치의 크기를 줄이려고 노력하면서 여전히 좋은 예측을 생산하도록 비용 함수를 조정하려고합니다.

이전의 비용함수는 다음과 같습니다.

이후 내용은 원문 참조.