무말랭이 숙성중

[COURSERA] Improving Deep Neural Networks 1 본문

DEEP LEARNING/COURSERA

[COURSERA] Improving Deep Neural Networks 1

손혜정 2018. 5. 12. 23:30

Training, Development, Test set을 어떻게 설정하느냐에 따라서 High Performance에 빨리 도달하는데 영향을 줌.


Training Neural Networks에서,

 Decision 요소들:

1) Layer 갯수를 몇개로 할것인지

2) Hidden Units을 각 Layer에 몇개씩 둘것인지

3) Learning late를 뭘로 설정할건지

4) Activation function을 뭘로 할건지(서로다른 Layer에서)

등등...


새 application을 실행할때 이 모든 요소들을 고려하기란 쉽지 않음.

따라서, 아래의 과정을 반복함.


  ( Idea - Code - Experiment )


 ex) Layer를 x개로 해보자! / data set을 이렇게 해보자! -> 실행되는 코드로 실험 -> 결과를 확인해보고 Idea를 수정 -> 새 아이디어 적용 -> ,,,,.... => Better and Better!




 하지만, 이렇게 적용한 Best Choice가 , 특정 Domain에서 좋은 성능을 내는 Idea라고해서 다른 Domain에서도 잘되리란 보장은 없음.

 내가 소유한 Date의 양, GPU / CPU 환경 + .... 을 고려하여 configuration이 필요함



자, 그럼 어쨌든 Idea - Code - Experiment Cycle을 돌면서 Performance를 높여간다는 것을 알게되었다. 실제 환경에서도 우리는 이 Cycle을 많이 돌려볼텐데, 생각보다 많이 돌것이다. 결국 Cycle을 빨리 돌게 할필요가 있고 이는 즉, Cycle 이 "효율적"이어야 함을 의미한다.


 효율적이기 위해선, Data set(train, dev, test set)이 잘 설정되어 효과적으로 setting 되어있는 상태여야 한다.


Data :  [                 Train                         ]+  [    Dev   ]+ [    Test     ]

 

 Dev set : Hold out, Cross Validation, Development Set이라고도 한다.

Train을 통해 학습된 많은 model들이 best로 잘 수행되는가를 평가하여

그중 가장 best model이 선택되도록 한다. 결국 편향되지않는 model을 찾는 역할을 한다.



과거의 Data set 구성은 대부분

 Train : Test  = 70%:30% 또는 Train : Dev : Test = 60%:20%:20%이다.

하지만 데이터가 넘쳐나는 오늘날엔 이러한 구성이 무의미하다.

100만개의 데이터라고 했을때, Dev, Test 데이터의 양을 20%보다 더 작게 구성해도 된다. 1만개의 데이터만 가지고도 충분히 classifier이 잘 동작하는지 아닌지를 충분히 구분할 수 있기 떄문이다.


 => Train : Dev : Test = 98% : 1% : 1% 구성도 충분히 괜찮다는 의미이다.



이번엔 Train, Test distribution이 Mismatched 된 경우를 생각해보자


Training set으로 Cat pictures from Web pages ( Good Quality) 가 있고

Dev/Test set으로 Cat pictures from users using app ( Low Quality) 가 있다고 하자.


적어도 dev, test set은 같은 distribution이어야 함을 명심하자.


때때로 사람들은 Train, Test set으로만 구분을 한다. 사실 용도를 정확히 하자면 Test가 아닌 Dev 라고 불려야하지만,.. 쨌든 2가지로 분류를 한다. 그렇기에  Train + Test(Dev) 로만 데이터를 나누는 경우엔 대부분 Test set에 Overfitting을 한다.


 Train set으로 학습을 하고 그에 따라 different model architecture를 얻고 dev set으로 evaluate를 한다. 이후에 iterate과정을 통해 good model을 얻어내는 것이다.





'DEEP LEARNING > COURSERA' 카테고리의 다른 글

[COURSERA] Improving Deep Neural Networks 3  (0) 2018.05.13
[COURSERA] Improving Deep Neural Networks 2  (0) 2018.05.13
[COURSERA] ML strategy6  (0) 2018.05.08
[COURSERA] ML strategy5  (0) 2018.04.23
[COURSERA] ML strategy4  (0) 2018.04.23