본문 바로가기
Programming/Deep learning

Traning/test dataset, Learning rate, normaliztion

by OKOK 2018. 5. 3.

07-1 : training/test dataset, learning rate, normalization. 

알파값을 임의로 정하였습니다. 소스코드에서 코스트를 정의하고. 미니마이즈할때. 러닝레이트를 임의의 값을 넘겨 주었습니다. 러닝 레이트를 잘 정하는 것이 중요합니다. 굉장히 큰 값을 정한다고 보면, 경사면을 따라서 한발자국의 스텝이 있습니다. 



 

그레디언트 디센트. 코스트 함수 웨이트가 여러개있을때 2차원상에서 표현을 하게 됩니다. 


왜곡된 형태의 등고선이 나타날 것입니다. 알파값을 잡았을 때, 노말라이즈 할 필요가 있습니다. 보통 많이 쓰는 방법이 제로 센터 데이터입니다. 또 가장 많이 사용하는 것은 이 값 전체의 범위가 항상 범위안에 들어가도록 노말라이즈 하는 것입니다. 러닝 레이트. 코스트 함수 발산한다면 점검할 필요가 있습니다. 평균과 분산의 값을 가지고 하면 됩니다. 한줄로 노말라이제이션을 할 수 있습니다. 스탠다르제이션이라고 합니다. 그 중에 하나를 선택해서 엑스 데이터를 처리해보는 것도 좋습니다.


오버피팅(Overfitting) 

실제 데이터가 아래의 형태 있을 때. 


모델을 꼬아서 만들 수가 있을 것입니다. 이런식으로 2개를 구분하는 경계를 하는 모델이 있다면(모델2) 어떤 것이 좀 더 일반적이고 좋은 모델일 것인가요. 실제적으로 사용할 때는 정확도가 떨어질 수가 있습니다. 오버피팅이다 이렇게 이야기를 합니다. 어떻게 오버피팅을 줄일 수 있을까요. 트레이닝 셋 데이터를 많이 가지고 있는 것입니다. 피쳐의 갯수를 줄이는 방법이 있습니다. 그리고 일반화입니다.(Regularization) 


구부리지 말고. 좀 펴자. 웨잇. 구부리지 말고 피세요. 이것을 하기 위해서 코스트 함수를 설명할 때. 코스트를 최소화하는 것이 목표였는데. 코스트 함수 뒤에. 일반화 텀을 추가 시켜줍니다. 더블유의 값 제곱하는 값이 작아질 수 있도록. 간단한 것입니다. 그것을 제곱하고 합하고 최소화 시키는데 그 앞에 하나의 상수를 둘 수 있습니다. 이것을 regularization strength입니다. 텐서플로를 할 때 굉장히 쉽게 구현 할 수 있습니다. l2rg = 0.001 * tf.reduce_sum(tf.sqaure(W))


요약하자면 오버피팅을 방지하기 위해서는 일반화시키는 방법과 많은 데이터를 학습 시키는 방법입니다.


lec 07-2 : Training/Testing 데이터 셋 

보통 데이터를 7:3 정도로 나누고 트레이닝 데이터 셋을 가지고, 뒷 부분에 있는 것을 테스트 셋이라고 부릅니다. 그런 다음에 테스트 데이터 셋을 숨겨 있다고 가정합니다.

 교과서 일 것이고, 실전 문제라고 생각을 하면 됩니다. 러닝 레잇을 예기 했었고, 람다라고 하는 일반화하는데 얼마나 강하게 할 것인가. 이런 값들을 튜닝할 필요가 있을 때, 벨리데이션 셋이라고 하는데 트레이닝 셋을 학습을 시키고요. 벨리데이션 셋을 맞추고요. 어떤 값들이 좋을까 튜닝을 하게 도비니다. 벨리데이션 모의 시험을 해보는 것이다. 완벽하게 되면 테스팅 셋을 가지고. 모델일 잘 동작하는지 살펴보면 됩니다. 


메모리에 모두 올리기 쉽지 않을때 올라인 러닝이라는 것이 있습니다. 트레이닝 셋이 백만개가 있다고 합니다. 이것을 한번에 넣어서 학습을 시키려면 공간이 많이 필요하므로 10만개씩 잘라서 학습을 시킵니다. 끝났으면 2번째를 학습시키고, 자 이때 모델이 해야할 일은 모델에 남아 있어야 합니다. 이것이 좋은 모델인데요. 10만개의 새로운 데이터가 들어왔습니다. 새로 학습을 하지 않고 추가로 학습을 시킬 수 있기 때문에 온라인이라고 하는 것입니다. 


실제 데이터 셋을 보게 되면 숫자 손으로 적어놓은 것입니다. 유명한 미니스트 데이터 셋입니다. 

이런 것들이 필요합니다. 트레이닝 셋 그리고 테스트 셋으로 나누어져 있습니다. 각각의 이미지와 각각의 레이블이 있습니다. 보통 이렇게 트레이닝과 테스트 셋으로 나누어져 있습니다. 그 의미를 알고 있어야 합니다. 테스트 셋을 가지고 있으면 정확도를 맞추는 것은 측정하는 것은 굉장히 간단한 일입니다. 실제 데이터의 와이값. 도출한 값을 비교하면 됩니다. 이미지를 인식하는 것의 정확도는 95정도를 넘고 있습니다. 굉장히 잘 되고 있는 것입니다. 실제로 이것을 어떻게 측정하는지는 다음 랩에서 살펴보도록 합니다.