Slides based on "Introduction to Machine Learning with Python" by Andreas Muller and Sarah Guido for Hongdae Machine Learning Study(https://www.meetup.com/Hongdae-Machine-Learning-Study/) (epoch #2)
홍대 머신 러닝 스터디(https://www.meetup.com/Hongdae-Machine-Learning-Study/) (epoch #2)의 "파이썬 라이브러리를 활용한 머신러닝"(옮긴이 박해선) 슬라이드 자료.
2. Contacts
Haesun Park
Email : haesunrpark@gmail.com
Meetup: https://www.meetup.com/Hongdae-Machine-Learning-Study/
Facebook : https://facebook.com/haesunrpark
Blog : https://tensorflow.blog
2
3. Book
파이썬 라이브러리를 활용한 머신러닝, 박해선.
(Introduction to Machine Learning with Python, Andreas
Muller & Sarah Guido의 번역서입니다.)
번역서의 1장과 2장은 블로그에서 무료로 읽을 수 있습니다.
원서에 대한 프리뷰를 온라인에서 볼 수 있습니다.
Github:
https://github.com/rickiepark/introduction_to_ml_with_python/
3
7. 커널 기법kernel trick
어떤 특성을 추가해야할 지 불분명하고 많은 특성을 추가하면 연산 비용 커짐
커널 함수라 부르는 특별한 함수를 사용하여 데이터 포인트 간의 거리를 계산하여
데이터 포인트의 특성이 고차원에 매핑된 것 같은 효과를 얻음
다항 커널
xa = 𝑎1, 𝑎2 , 𝑥 𝑏 = 𝑏1, 𝑏2 일때 (𝑥 𝑎⋅ 𝑥 𝑏)2 = (𝑎1 𝑏1 + 𝑎2 𝑏2)2 =
𝑎1
2
𝑏1
2
+ 2𝑎1 𝑏1 𝑎2 𝑏2 + 𝑎2
2
𝑏2
2
= 𝑎1
2
, 2𝑎1 𝑎2, 𝑎2
2
⋅ (𝑏1
2
, 2𝑏1 𝑏2, 𝑏2
2
)
RBFradial basis function 커널
exp(−𝛾 𝑥 𝑎 − 𝑥 𝑏
2
), 𝑒 𝑥의테일러 급수 전개: 𝐶 𝑛=0
∞ 𝑥 𝑎⋅𝑥 𝑏
𝑛
𝑛!
무한한 특성 공간으로 매핑하는 효과, 고차항일 수록 특성 중요성은 떨어짐
7
8. SVM 이해하기
커널 기법을 적용한 SVM을 ‘커널 SVM’ 혹은 그냥 ‘SVM’으로 부릅니다.
Scikit-Learn은 SVC, SVR 클래스를 제공합니다.
클래스 경계에 위치한 데이터 포인트를
서포트 벡터라 부릅니다.
RBF 커널을 가우시안Gaussian 커널이라고도 부릅니다.
8유클리디안 거리
커널의 폭(gamma), 𝑒0
~𝑒−∞
= 1~0
𝛾가 작을 수록 샘플의 영향 범위 커짐
𝛾 =
1
2𝜎2일 때 𝜎를 커널의 폭이라 부름
exp(−𝛾 𝑥 𝑎 − 𝑥 𝑏
2
)
14. 장단점과 매개변수
장점
강력하며 여러 종류의 데이터셋에 적용가능합니다.
특성이 적을 때에도 복잡한 결정 경계 만듦니다(커널 트릭).
특성이 많을 때에도 잘 작동합니다.
SVC/SVR(libsvm), LinearSVC/LinearSVR(liblinear)
단점
샘플이 많을 경우 훈련 속도가 느리고 메모리를 많이 사용합니다(>100,000).
데이터 전처리와 매개변수에 민감합니다.(랜덤 포레스트, 그래디언트 부스팅)
분석하기 어렵고 비전문가에게 설명하기 어렵습니다.
매개변수
C, gamma, coef0(다항, 시그모이드), degree(다항)
𝑙𝑖𝑛𝑒𝑎𝑟: 𝑥1 ⋅ 𝑥2, 𝑝𝑜𝑙𝑦: 𝛾 𝑥1 ⋅ 𝑥2 + 𝑐 𝑑
, 𝑠𝑖𝑔𝑚𝑜𝑖𝑑: tanh(𝛾 𝑥1 ⋅ 𝑥2 + 𝑐) 14
19. Naming
완전 연결 뉴럴 네트워크
(Fully Connected Neural Network)
덴스 네트워크
(Dense Network)
멀티 레이어 퍼셉트론
(Multi-Layer Perceptron)
피드 포워드 뉴럴 네트워크
(Feed Forward Neural Network)
딥 러닝
(Deep Learning)
19
뉴런 혹은 유닛unit으로 불립니다.
(동물의 뇌와 전혀 관련이 없습니다)
21. 비용 함수
로지스틱 회귀와 마찬가지로 로지스틱 비용 함수(이진분류)나 크로스엔트로피
비용 함수(다중분류)를 사용합니다.
모델 함수가 비선형이므로 최적값을 해석적으로 계산하지 못해 경사 하강법gradient
descent 계열의 알고리즘을 즐겨 사용합니다.
각 가중치 w에 대해 비용 함수를 미분하여 기울기 아래쪽으로 조금씩(learning_rate)
이동합니다.
비용 함수를 직접 w에 대해 미분하는 대신 체인룰을 이용해 미분값(그래디언트)을
누적하여 곱해갑니다(역전파backpropagation)
21
−
𝑖=1
𝑛
𝑦𝑙𝑜𝑔 𝑦
𝑑 𝑦
𝑑𝑤
=
𝑑 𝑦
𝑑𝑢
⋅
𝑑𝑢
𝑑𝑤
27. 신경망의 복잡도
은닉층의 수가 많을 수록,
은닉층의 유닛 개수가 많을 수록,
규제가 낮을 수록 복잡도가 증가됨
모델 훈련시 훈련 샘플마다 은닉층의 유닛의 일부를 랜덤하게 작동시키지 않아
마치 여러개의 신경망을 앙상블하는 것 같은 드롭아웃dropout이 신경망에서 과대적합
방지하는 대표적인 방법 scikit-learn에 추가될 예정
27
28. 랜덤 초기화
모델을 훈련할 때 가중치를 무작위로 초기화
모델의 크기와 복잡도가 낮으면 영향을 미칠 수 있음
28
29. 가중치 초기화 방법
Scikit-Learn에서는 Glorot 초기화 방식을 사용하여 가중치와 편향을 모두
초기화합니다.
시그모이드 함수: −
2
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
~ +
2
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
의 균등 분포
tanh, relu 함수: −
6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
~ +
6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
의 균등 분포
* Xavier 초기화
시그모이드: ±
6
𝑛 𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
tanh: ±4
6
𝑛 𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
relu: ± 2
6
𝑛 𝑖𝑛𝑝𝑢𝑡𝑠+𝑛 𝑜𝑢𝑡𝑝𝑢𝑡𝑠
29
30. MLPClassifier + cancer dataset
신경망에서도 데이터의 범주에 민감함
30
평균이 0이고, 분산이 1인 표준정규분포
표준 점수 또는 z 점수
StandardScaler
34. 장단점과 매개변수
장점
충분한 시간과 데이터가 있으면 매우 복잡한 모델을 만들 수 있습니다.
종종 다른 알고리즘을 압도하는 성능을 발휘합니다(음성인식, 이미지분류, 번역 등)
단점
데이터 전처리에 민감합니다(배치 정규화).
이종의 데이터 타입일 경우 트리모델이 더 나을 수 있습니다.
매개변수 튜닝이 매우 어렵습니다(학습된 모델 재사용).
Scikit-Learn은 콘볼루션convolution이나 리커런트recurrent 신경망을 제공하지 않습니다.
매개변수
solver=[‘adam’, ‘sgd’, ‘lbfgs’],
sgd일 경우 momentum + nesterovs_momentum
alpha(L2 규제)
34
𝛼 ↑ → 규제 ↑ 𝑤 ↓
𝛼 ↓ → 규제 ↓ 𝑤 ↑
35. 신경망의 복잡도와 권장 설정
100개의 특성과 100개의 은닉 유닛, 1개의 출력 유닛 = 10,100개의 가중치
+ 100개의 유닛을 가진 은닉층 추가 10,000개의 가중치 증가
만약 1000개 유닛을 가진 은닉층이라면 101,000 + 1,000,000 = 1,101,000개
solver의 기본값은 ‘adam’으로 데이터 스케일에 조금 민감합니다.
("The Marginal Value of Adaptive Gradient Methods in Machine Learning," A. C. Wilson et al. (2017), 에서
Adam, RMSProp 등이 보여준 회의적인 결과로 모멘텀 방식을 함께 고려해야 합니다.)
‘lbfgs’는 안정적이지만 규모가 큰 모델이나 대량의 데이터셋에서는 시간이 오래
걸립니다.
‘sgd’는 ’momentum’과 ‘nesterov_momentum’ 옵션과 함께 사용합니다.
35
36. 모멘텀
모멘텀 알고리즘은 이전 그래디언트 값을 가속도와 같이 생각하여 전역 최적값의
방향으로 더 빠르게 수렴하게 만듭니다.
momentum 매개변수는 일종의 댐퍼와 같은 역할을 합니다.
𝑣 𝑡+1 = 𝜇𝑣 𝑡 − 𝜖𝑔 𝜃𝑡
𝜃𝑡+1 = 𝜃𝑡 + 𝑣 𝑡+1
36
learning_ratemomentum
37. 네스테로프 모멘텀
네스테로프 모멘텀은 모멘텀 방식으로 진행한 후의 그래디언트를 계산하여 현재에
적용합니다.
𝑣 𝑡+1 = 𝜇𝑣 𝑡 − 𝜖𝑔 𝜃𝑡 + 𝜇𝑣 𝑡
𝜃𝑡+1 = 𝜃𝑡 + 𝑣 𝑡+1
실제 구현에서는 앞선 그래디언트를 계산하는 대신 모멘텀 방식을 두 번 적용하여
네스테로프의 근사값을 구합니다.(https://tensorflow.blog/2017/03/22/momentum-nesterov-momentum/ 참조)
37
47. 알고리즘 정리
최근접 이웃
작은 데이터셋일 경우, 기본 모델로서 좋고 설명하기 쉬움.
선형 모델
첫 번째로 시도할 알고리즘. 대용량 데이터셋 가능. 고차원 데이터에 가능.
나이브 베이즈
분류만 가능. 선형 모델보다 훨씬 빠름. 대용량 데이터셋과 고차원 데이터에 가능.
선형 모델보다 덜 정확함.
결정 트리
매우 빠름. 데이터 스케일 조정이 필요 없음. 시각화하기 좋고 설명하기 쉬움.
47
48. 랜덤 포레스트
결정 트리 하나보다 거의 항상 좋은 성능을 냄. 매우 안정적이고 강력함.
데이터 스케일 조정 필요 없음. 고차원 희소 데이터에는 잘 안 맞음.
그래디언트 부스팅
랜덤 포레스트보다 조금 더 성능이 좋음. 랜덤 포레스트보다 학습은 느리나 예측은
빠르고 메모리를 조금 사용. 랜덤 포레스트보다 매개변수 튜닝이 많이 필요함.
서포트 벡터 머신
비슷한 의미의 특성으로 이뤄진 중간 규모 데이터셋에 잘 맞음.
데이터 스케일 조정 필요. 매개변수에 민감.
신경망
특별히 대용량 데이터셋에서 매우 복잡한 모델을 만들 수 있음.
매개변수 선택과 데이터 스케일에 민감. 큰 모델은 학습이 오래 걸림.
48
Editor's Notes
이 코스에서 다룰 내용은 이 책에 크게 의존하고 있습니다. 이 수업을 듣기 위해 꼭 이 책이 필요한 것은 아니지만 수업에 맞추어 병행해서 본다면 도움이 될 것 입니다.
quasi-newton method 뉴턴 방법을 사용하기 위해 미분을 구하는 것이 어렵거나 비용이 많이 들 때 사용
은닉 유닛의 개수를 줄이면 모델의 복잡도가 낮아짐
결정 경계가 조금 더 날카로워짐
초기에 충분히 과대적합될 정도로 복잡한 모델을 만들고 난 후에 조금씩 신경망의 구조를 줄이거나 alpha 값을 증가시켜 규제를 강하게 하여 일반화 성능 향상시킴
adam 대부분의 경우에 잘 작동하지만 데이터 스케일에 민감
lbfgs 규모가 큰 모델이나 대량 데이터셋에는 시간이 많이 걸림
sgd는 모멘텀과 네스테로프 모멘텀 설정을 조절하면 성능을 크게 향상시킬 수 있음
모멘텀은 이전 그래디언트를 momentum 비율 만큼 반영(일종의 관성)
nesterovs_momentum이 true로 설정되면(기본값) 계산된 모멘텀을 이전 그래디언트로 두고 다시 모멘텀을 적용함
결정 함수의 부호만 보고 클래스를 알수 있음
결정 함수의 리턴값의 크기의 의미를 이해하기는 어려움