노는게 제일 좋습니다.
tensorflow 11 : evaluating model, online learning 본문
위 강의를 보고 공부한 내용을 토대로 정리한 것임.
사용한 도표나 사진이 강의에 있거나, 강의에 있는 것을 따라 그린 것일 수 있음.
1.
모델을 평가하려면 어떻게 해야 하는가.
학습 데이터로 학습을 시킨 뒤에, 학습데이터로 모델을 테스트 하는 것은 의미가 없다.
그래서 원본의 데이터를 전부 다 학습시키는데 쓰지 않고, 쪼개서 모델을 평가하는데 사용한다.
우선. 위와 같이 원본 데이터가 있다고 하자.
만약 우리가 갖고있는 데이터를 전부 다 학습에 써버린다면, 모델을 평가하기가 굉장히 어려워진다.
모델을 평가할 때 우리가 좋은 모델이라고 부르려면, 문제를 냈을 때 우리가 예상한 결과를 내야 한다.
데이터라 함은 문제-답 의 세트이다. 즉, 우리가 문제를 내고나서 모델이 답과 일치하는 결과를 내는지 채점을 할 수 있다.
하지만 원본데이터를 모두 소모해버리면 우리는 채점을 할 수 있는 답안지가 없다.
그래서 다음과 같이 학습 데이터와 시험 데이터(testing data)로 구분을 한다.
그리고 나서 학습데이터로만 학습을 시켜 모델을 만든다. 그 뒤에, 모델에 테스트 데이터를 토대로 문제를 낸다.
x로 7을 줄 때 y가 3이 나왔는가와 같은 확인을 하는 것이다.
여기서 한 번 더 보도록 하자. 우리의 가설함수(hypothesis)와 코스트 함수(cost function)에는 상수인 러닝레이트와 regularization strength가 있다. 이 두 상수를 잘 세팅하기 위해서 '확인 데이터' 라는 것을 또 따로 둘 수 있다.
이와 같은 방식으로 주어진 데이터를 토대로 모델을 평가할 수 있다.
2.
현재까지 블로그에 있는 텐서플로우 코드들은 한 번에 데이터들을 학습시킨다.
그 결과 모델이 형성된 상태에서, 새로운 학습데이터만 추가로 학습시켜 모델을 변형시킬 수는 없다.
만약 학습데이터를 정 추가하고 싶다면, 기존의 학습데이터와 새로운 학습데이터를 합쳐 처음부터 학습시켜야 한다.
이 양이 아주 큰 경우 시간도 오래걸리고, 데이터를 추가하는데 그 가치 이상의 자원(돈과 시간..)을 들여야 할 수 있다.
그래서 등장하는 개념이 온라인 러닝(online learning)이다.
큰 데이터를 쪼개서 a,b,c 데이터 세 개가 나왔다고 하자.
컴퓨터에 a를 먼저 학습시킨다. 그럼 a로 인해 모델이 형성되었을 것이다.
그 다음 b를 추가 학습시키자. 온라인 러닝을 하는 경우, a,b를 모두 학습시킬 필요 없다. a가 학습된 상태에서 오직 b만 추가 학습시킨다.
b를 학습시키면 기존에 a로 인해 형성된 모델에 b를 토대로 어떤 정보가 추가될 것이다.
여기에 c를 추가학습시킨다. 그럼 모델은 a,b,c 세 개의 데이터덩어리를 토대로 수정되고 수정되었을 것이다.
즉, 온라인 러닝은 다음과 같은 기술이 필요하다.
- 데이터를 추가로 학습 시킬 수 있다. 기존에 학습된 것까지 학습할 필요가 없어야 한다.
- 추가 학습될 때 모델은 초기화되는 것이 아니라, 기존에 있던 모델의 요소까지 그대로 갖고 있어야 한다.
'Python > 통계 및 데이터관련' 카테고리의 다른 글
anaconda folium의 popup 한글 인코딩 문제 임시해결방편 (3) | 2020.04.29 |
---|---|
pandas, matplotlib에서 글꼴을 불러오지 못할 때 (4) | 2020.04.28 |
tensorflow 10 : learning rate, normalization, overfitting (1) | 2017.01.27 |
tensorflow 9 : Shapes (0) | 2017.01.23 |
tensorflow 8 : Multinomial Logistic Regression (0) | 2017.01.23 |