2. 지금까지 우리는 다양한 알고리즘을 배웠다. (왜 기억이 안날까요..?)
이번 Chapter는 실전이다!
어떻게 하면 나의 모델을 개선 할 수 있는가?
3. 저자가 추천하는 딥러닝 설계 과정
* 목표를(목표 오차) 결정한다 : 어떠한 오차 측정법을 사용할 것인가?
* End-to-end pipeline을 최대한 일찍 확립한다.
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
4. 저자가 추천하는 딥러닝 설계 과정
* 목표를(목표 오차) 결정한다 : 어떠한 오차 측정법을 사용할 것인가?
* End-to-end pipeline을 최대한 일찍 확립한다.
End-to-end pipeline :
Ex) 음성 인식
(오디오 클립을 입력 X로 가져온다)
X y
(오디오 클립이 글로 옮겨진다)
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
5. 저자가 추천하는 딥러닝 설계 과정
* 목표를(목표 오차) 결정한다 : 어떠한 오차 측정법을 사용할 것인가?
* End-to-end pipeline을 최대한 일찍 확립한다.
End-to-end pipeline :
Ex) 음성 인식
X yFeature를 만든다. 음소를 만든다. 단어
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
6. 저자가 추천하는 딥러닝 설계 과정
* 목표를(목표 오차) 결정한다 : 어떠한 오차 측정법을 사용할 것인가?
* End-to-end pipeline을 최대한 일찍 확립한다.
그런데 찾아보니 End-to-end deep learning라는 것도 있더라.
Ex) 음성 인식
(오디오 클립을 입력 X로 가져온다)
X y
(오디오 클립이 글로 옮겨진다)
기존에 있던 중간 단계를 생략하고 x와 y만을 이용해 학습 시킨다. (파이프 라인을 생략한다)
but : 데이터 양이 충분해야 한다. (매우 효과적이지만 만병통치약은 아니다)
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
7. End to end pipeline 추가 예시
Ex) 회사 출입문 얼굴 인식 시스템 만들기
사람이 들어오면 이미지 인식으로 바로 누구인지 신원 확인을 하게 만들 수 도 있기는 하다.
(end to end deep learning)
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
8. End to end pipeline 추가 예시
Ex) 회사 출입문 얼굴 인식 시스템 만들기
1. '사람’이 들어왔는지 유무만을 파악하는 모델 => 이미지를 자르고
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
9. End to end pipeline 추가 예시
Ex) 회사 출입문 얼굴 인식 시스템 만들기
2. 그 사람이 '누구’인지 파악하는 모델
(파이프 라인 구축)
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
10. End to end pipeline 추가 예시
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
11. End to end pipeline 추가 예시
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
12. 저자가 추천하는 딥러닝 설계 과정
* 목표를(목표 오차) 결정한다 : 어떠한 오차 측정법을 사용할 것인가?
* End-to-end pipeline을 최대한 일찍 확립한다.
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론
13. 저자가 추천하는 딥러닝 설계 과정
1. 어떻게 하면 나의 모델을 개선 할 수 있는지를 이론ㅊ
• 목표를(목표 오차) 결정한다(어느어떠한 오차 측정법을 사용할 것인가?
• End-to-end pipeline을 최대한 일찍 확립한다.
• 목표를 이루기 위해 데이터를 더 수집하거나, 매개변수들을 조정하거나,
알고리즘을 바꾸는 등의 점진적인 변화를 반복해서 시스템에 가한다.(우리가 많이 해본 거죠?)
14. 1-1 성과 측정
적절한 수준의 목표를 어떻게 결정하는가?
- 학술 연구 : 달성 가능한 오류율을 이전에 발표된 벤치마크 결과들에 기초해서 추정한다.
- 실제 응용 : 소비자들에게 어필할 만한 오류율을 추정한다.
어떻게 보면 당연한 소리..책읽듯이 11장은 한 번 쭉 읽는 걸 추천합니다.
적절한 목표 성과 수준을 어떻게 측정하는가?
- 우리가 정말 많이 했던 confusion matrix, roc curve 이야기를 책도 동일하게 합니다.
15. Recall = sensitivity
P라고 검출한 사건 중 실제로도 P인 사건
항상 positive라고 검출하는 분류기의 recall은 100%이다.
But Precision은 형편 없을 것이다. 둘 모두 중요하다.
1. 어떻게 하면 나의 모델을 개선 할 수 있는가
16. 1. 어떻게 하면 나의 모델을 개선 할 수 있는가
Recall과 precision의 조화 평균
17. 1-2 추가 자료 수집 여부 결정
기계 학습 초보자 중에는 서로 다른 여러 알고리즘을 시도함으로써 시스템을 개선하려는 사람이 많다.
그러나 학습 알고리즘을 개선하기보다는 자료를 더 수집할 때 더 나은 성과를 얻을 때가 많다.
그렇다면 ‘아!!! 이건 자료를 더 수집 해야해!’ 라고 결정을 내리는 과정은 어떠할까?
18. 1-2 추가 자료 수집 여부 결정
Train data 성과가 나쁘다
자료 수집 X
층을 더 추가하는 등 parameter 튜닝
그래도 성과가 안 나온다
데이터 품질의 문제일 수 있다.
노이즈가 너무 많거나 등, 다시 자료
수집을 한다.
19. 1-2 추가 자료 수집 여부 결정
Train data 성과는 괜찮은데
Test data는 잘 안된다.
자료를 더 수집하는 것이 아주 효과적일 수 있다.
이때 핵심 고려사항
1. 추가 자료 수집의 실현 가능성과 비용
2. 다른 수단으로 Test data error를 줄일 가능성
과 비용
3. 추가로 필요한 데이터는 얼마나
실무적인 이야기 우리에게는 해당 사항이 글쎄…
20. 1-2 추가 자료 수집 여부 결정
얼마나 자료 수집을 더 해야하냐?
Training data의 크기와 오차를 그래프로 그리면 대략적으로 알 수 있다.
21. 1-3 hyperparameter 선택
당연한 이야기지만 초매개변수를 튜닝하는 목적은
underfitting과 overfitting 그 사이의 줄다리기에서 핫스팟을 찾는 것
몇 가지 방법들에 대해 알아보자
22. 1-3 hyperparameter 선택
Grid search(격자 검색)
- 초매개변수 값의 집합들이 존재할 때 이 집합들로 만들 수 있는 모든 집합에 대해 모형을 훈련하는 것
- 그러면 이 값들의 집합은 어떻게 결정해야 할까?
- 보통 로그 축적(logarithmic scale)에 따라 근사적으로 고르는 것이 무난하다고 한다.
Ex) 학습 속도 {0.1, 0.01, 0.001, 0.0001} hidden unit 수 {50, 100, 200, 500, 1000, 2000}.
23. 1-3 hyperparameter 선택
Grid search(격자 검색)
Ex) 학습 속도 {0.1, 0.01, 0.001, 0.0001} hidden unit 수 {50, 100, 200, 500, 1000, 2000}.
당연하면서 강력한 단점 : 계산 비용이 초매개변수 개수에 지수적으로 증가한다.
초매개변수가 m개 있고, 각 초매개변수가 가질 수 있는 값이 n가지
시행 횟수 => 𝑛 𝑚
- 초매개변수 값의 집합들이 존재할 때 이 집합들로 만들 수 있는 모든 집합에 대해 모형을 훈련하는 것
- 그러면 이 값들의 집합은 어떻게 결정해야 할까?
- 보통 로그 축적(logarithmic scale)에 따라 근사적으로 고르는 것이 무난하다고 한다.
24. 1-3 hyperparameter 선택
random search(무작위 검색)
- 각 hyperparameter 대해 하나의 분포를 정의 한다.
- 분포에 특정 구간을 정하고 구간 내에 랜덤으로 표본을 추출한 값을 hyperparameter로 사용한다.
- 이 때 랜덤으로 뽑힌 hyperparameter의 값을 이산화하지 않아야 한다.
Ex) 베르누이 분포로 정의하고, 3~10사이의 구간을 정했는데 3.3이 나와도 그냥 그 값을 쓴다.
따로 정수화 같은 작업을 하지 않는다.
Why? 더 큰 범위를 탐색하기 위해서 + 추가적인 계산 비용을 피하기 위해서
- 랜덤으로 뽑기 때문에 grid 처럼 불필요한 실험적 실행에 의한 낭비가 적다.
25. 1-3 hyperparameter 선택
grid search vs random search
- 당연히 random search가 계산량은 grid보다 든다.
- 튜닝 해야할 초매개변수가 적다면 Random search가 보편적으로 grid search보다 더 좋은 성능을 낸다.
(튜닝 해야할 변수가 많으면 당연히 둘다 최적을 찾기는 힘들겠지요)
- 데이터의 양이 클 때도 grid search 보다 random search가 더 좋을 듯 (네이버에서 경험..)
26. 기계 학습 시스템은 디버깅이 어려움
Why?
1. 모델의 성과가 나쁠 때, 그것이 알고리즘 자체의 결함 때문인지 아니면
알고리즘의 구현에 버그가 있는 건지 파악하기가 어려움
2. 기계 학습의 핵심은 사용자(사람)이 미리 지정할 수 없는 어떤 유용한 행동을
알고리즘이 스스로 발견하는 경우가 많기 때문에 (왜 성능이 이렇게 나오는지 명확하게 말하기 어려움)
1-3 디버깅 전략과 검사 방법
그럼에도 불구하고 디버깅 전략과 검사 방법 몇 가지가 있다!
27. 1-3 디버깅 전략과 검사 방법
1. 모델의 작동을 중간 중간 시각화한다.
너무 당연한 이야기지만 실무에서는 정확도와 같은 성과 측도 수치만을 살펴보고
다른 정보를 간과하는 경우가 있다. 모델이 과제를 수행하는 모습을 직접 관찰해 보면
수치적인 성과 측도들이 실제로 의미가 있는지 파악할 수 있다.
28. 1-3 디버깅 전략과 검사 방법
2. 작은 데이터 셋에 모델을 적용시켜 본다.
Train data에 오차가 높다.
1. 그냥 Underfitting 인가?
2. 소프트웨어 결함인가?
아주 작은 크기의 데이터셋으로 분류 모델을 돌려본다.(sample 1개)
그랬는데도 부안된다면 소프트웨어(?) 문제이다.
29. 어느 정도 딥러닝을 코드로 돌릴 수 있는 능력이 있을 때
이 챕터가 도움이 되리라 생각이 들었습니다.
그래서 한 번 코드를 돌려봤습니다
30. 11장 교재에서 보여주고 있는 예시에서는
거리뷰의 번지수 이미지를 문자로 바꾸는 것이다
379
31. 하지만 좀 오래 걸릴 것 같아
좀 더 간단하게 MNIST 데이터 셋을 이용하여
교재와 최대한(?) 비슷한 접근 방법으로 간다
33. 텐서플로우 케라스 설치하기
1. 파이썬 버전 확인 (3.6x 이하 버전만 가능/64bit에서만 가능), 아나콘다와 함께라면
편하다
2. GPU를 사용하기 위해서는 CUDA, cuDNN설치 (CUDA 9.x 이하 버전만 가능)
3. 참고 http://solarisailab.com/archives/1581 , <케라스 창시자에게 배우는 딥러닝>
인터넷, 관련 책에 설치 방법 소개가 많기 때문에 어렵지 않지만, 설치하기 전에 기존의
파이썬 버전, CUDA의 버전을 확인해야 한다. 최근 버전(파이썬 3.7x , CUDA 10.x)는 텐서플로우에서
아직 지원을 하지 않아서 설치 시 에러가 난다.
34. Keras 에서 MNIST 데이터 불러오기
mnist 데이터 간단하게 불러옴
(samples, height, width) 출력
Train_images에서 5번쨰 이미지
이미지로 나타내기