2.supervised learning(epoch#2)-3
TRANSCRIPT
Introduction to
Machine Learning with Python
2. Supervised Learning(3)
Honedae Machine Learning Study Epoch #2
1
Contacts
Haesun Park
Email : [email protected]
Meetup: https://www.meetup.com/Hongdae-Machine-Learning-Study/
Facebook : https://facebook.com/haesunrpark
Blog : https://tensorflow.blog
2
Book
파이썬라이브러리를활용한머신러닝, 박해선.
(Introduction to Machine Learning with Python, Andreas
Muller & Sarah Guido의번역서입니다.)
번역서의 1장과 2장은블로그에서무료로읽을수있습니다.
원서에대한프리뷰를온라인에서볼수있습니다.
Github:
https://github.com/rickiepark/introduction_to_ml_with_python/
3
커널서포트벡터머신
4
Linear SVM
5
결정평면의기울기를줄여마진을최대화하기위해 w를최소화
마진위배를허용하는슬랙변수를최소화
같은 epsilon 높이에서마진을최대화하기위해 w를최소화
비선형특성
6
커널기법kernel trick
어떤특성을추가해야할지불분명하고많은특성을추가하면연산비용커짐
커널함수라부르는특별한함수를사용하여데이터포인트간의거리를계산하여
데이터포인트의특성이고차원에매핑된것같은효과를얻음
다항커널
xa = 𝑎1, 𝑎2 , 𝑥𝑏 = 𝑏1, 𝑏2 일때 (𝑥𝑎⋅ 𝑥𝑏)2 = (𝑎1𝑏1 + 𝑎2𝑏2)
2 =
𝑎12𝑏1
2 + 2𝑎1𝑏1𝑎2𝑏2 + 𝑎22𝑏2
2 = 𝑎12, 2𝑎1𝑎2, 𝑎2
2 ⋅ (𝑏12, 2𝑏1𝑏2, 𝑏2
2)
RBFradial basis function 커널
exp(−𝛾 𝑥𝑎 − 𝑥𝑏2), 𝑒𝑥의테일러급수전개: 𝐶 𝑛=0
∞ 𝑥𝑎⋅𝑥𝑏𝑛
𝑛!
무한한특성공간으로매핑하는효과, 고차항일수록특성중요성은떨어짐
7
SVM 이해하기
커널기법을적용한 SVM을 ‘커널 SVM’ 혹은그냥 ‘SVM’으로부릅니다.
Scikit-Learn은 SVC, SVR 클래스를제공합니다.
클래스경계에위치한데이터포인트를
서포트벡터라부릅니다.
RBF 커널을가우시안Gaussian 커널이라고도부릅니다.
8유클리디안거리
커널의폭(gamma), 𝑒0~𝑒−∞ = 1~0
𝛾가작을수록샘플의영향범위커짐
𝛾 =1
2𝜎2일때 𝜎를커널의폭이라부름
exp(−𝛾 𝑥𝑎 − 𝑥𝑏2)
SVC + forge dataset
9
서포트벡터
매개변수튜닝
10
small gamma
less complex
large gamma
more complex
small C
큰제약, 과소적합
large C
작은제약, 과대적합
SVC + cancer dataset
11
C=1, gamma=1/n_features
과대적합
cancer 데이터셋의데이터스케일
SVM은특성의범위에크게민감함
데이터전처리
MinMaxScaler : 𝑋 −min(𝑋)
max 𝑋 −min(𝑋), 0 ~ 1 사이로조정
12
SVC + 전처리데이터
13
전처리된후에는오히려과소적합됩니다.
제약완화
장단점과매개변수
장점
강력하며여러종류의데이터셋에적용가능합니다.
특성이적을때에도복잡한결정경계만듦니다(커널 트릭).
특성이많을때에도잘작동합니다.
SVC/SVR(libsvm), LinearSVC/LinearSVR(liblinear)
단점
샘플이많을경우훈련속도가느리고메모리를많이사용합니다(>100,000).
데이터전처리와매개변수에 민감합니다.(랜덤 포레스트, 그래디언트부스팅)
분석하기어렵고비전문가에게 설명하기어렵습니다.
매개변수
C, gamma, coef0(다항, 시그모이드), degree(다항)
𝑙𝑖𝑛𝑒𝑎𝑟: 𝑥1 ⋅ 𝑥2, 𝑝𝑜𝑙𝑦: 𝛾 𝑥1 ⋅ 𝑥2 + 𝑐 𝑑 , 𝑠𝑖𝑔𝑚𝑜𝑖𝑑: tanh(𝛾 𝑥1 ⋅ 𝑥2 + 𝑐) 14
신경망neural network
15
퍼셉트론perceptron
1957년에프랑크로젠블라트가발표하였습니다.
종종뉴럴네트워크를멀티레이어퍼셉트론multilayer perceptron으로도부릅니다.
사이킷런은 sklearn.linear_model.Perceptron 클래스를제공하다가 0.18 버전에서
MLPClassifier, MLPRegressor 추가되었습니다.
16입력레이어
출력레이어
선형모델의일반화
𝑦 = 𝑤 0 × 𝑥 0 + 𝑤 1 × 𝑥 1 + ⋯+ 𝑤 𝑝 × 𝑥 𝑝 + 𝑏
17
가중치
유닛
신경망그림에서편향이표현되지않는경우가종종있습니다.
다층퍼셉트론
h 0 = 𝑤 0,0 × 𝑥 0 + 𝑤 1,0 × 𝑥 1 + 𝑤 2,0 × 𝑥 2 + 𝑤 3,0 × 𝑥 3 + 𝑏 0
h 0 = 𝑤 0,1 × 𝑥 0 + 𝑤 1,1 × 𝑥 1 + 𝑤 2,1 × 𝑥 2 + 𝑤 3,1 × 𝑥 3 + 𝑏 1
h 0 = 𝑤 0,2 × 𝑥 0 + 𝑤 1,2 × 𝑥 1 + 𝑤 2,2 × 𝑥 2 + 𝑤 3,2 × 𝑥 3 + 𝑏 2
𝑦 = 𝑣 0 × ℎ[0] + 𝑣 1 × ℎ 1 + 𝑣 2 × ℎ 2 + 𝑏
18
Naming
완전연결뉴럴네트워크
(Fully Connected Neural Network)
덴스네트워크
(Dense Network)
멀티레이어퍼셉트론
(Multi-Layer Perceptron)
피드포워드뉴럴네트워크
(Feed Forward Neural Network)
딥러닝
(Deep Learning)
19
뉴런혹은유닛unit으로불립니다.
(동물의뇌와전혀관련이없습니다)
다층퍼셉트론
h 0 = tanh(𝑤 0,0 × 𝑥 0 + 𝑤 1,0 × 𝑥 1 + 𝑤 2,0 × 𝑥 2 + 𝑤 3,0 × 𝑥 3 + 𝑏 0 )
h 0 = tanh(𝑤 0,1 × 𝑥 0 + 𝑤 1,1 × 𝑥 1 + 𝑤 2,1 × 𝑥 2 + 𝑤 3,1 × 𝑥 3 + 𝑏 1 )
h 0 = tanh(𝑤 0,2 × 𝑥 0 + 𝑤 1,2 × 𝑥 1 + 𝑤 2,2 × 𝑥 2 + 𝑤 3,2 × 𝑥 3 + 𝑏 2 )
𝑦 = 𝑣 0 × ℎ[0] + 𝑣 1 × ℎ 1 + 𝑣 2 × ℎ 2 + 𝑏
20
이진분류일경우시그모이드다중분류일경우소프트맥스함수사용
비선형활성화함수
비용함수
로지스틱회귀와마찬가지로로지스틱비용함수(이진분류)나크로스엔트로피
비용함수(다중분류)를사용합니다.
모델함수가비선형이므로최적값을해석적으로계산하지못해경사하강법gradient
descent 계열의알고리즘을즐겨사용합니다.
각가중치 w에대해비용함수를미분하여기울기아래쪽으로조금씩(learning_rate)
이동합니다.
비용함수를직접 w에대해미분하는대신체인룰을이용해미분값(그래디언트)을
누적하여곱해갑니다(역전파backpropagation)
21
−
𝑖=1
𝑛
𝑦𝑙𝑜𝑔 𝑦
𝑑 𝑦
𝑑𝑤=
𝑑 𝑦
𝑑𝑢⋅𝑑𝑢
𝑑𝑤
활성화함수activation function
은닉유닛의가중치합의결과에비선형성을주입
렐루ReLU, 하이퍼볼릭탄젠트tanh, 시그모이드sigmoid
22
기울기가 0에가까워집니다.
x>0 그래디언트는 1
x=0 (sub)그래디언트는 0
x<0 그래디언트는 0
(여러변종등장)
𝑑𝑦
𝑑𝑤=
𝑑𝑦
𝑑𝑢⋅𝑑𝑢
𝑑𝑤
MLPClassifier + two_moons
23
hidden_layer_sizes=[100],
activation=‘relu’
Limited BFGS
의사뉴턴방법
은닉유닛개수 = 10
24
레이어추가, tanh 활성화함수
25
L2 규제매개변수 alpha
26
기본값
낮은규제 높은규제
신경망의복잡도
은닉층의수가많을수록,
은닉층의유닛개수가많을수록,
규제가낮을수록복잡도가증가됨
모델훈련시훈련샘플마다은닉층의유닛의일부를랜덤하게작동시키지않아
마치여러개의신경망을앙상블하는것같은드롭아웃dropout이신경망에서과대적합
방지하는대표적인방법 scikit-learn에추가될예정
27
랜덤초기화
모델을훈련할때가중치를무작위로초기화
모델의크기와복잡도가낮으면영향을미칠수있음
28
가중치초기화방법
Scikit-Learn에서는 Glorot 초기화방식을사용하여가중치와편향을모두
초기화합니다.
시그모이드함수: −2
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠~ +
2
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠의균등분포
tanh, relu 함수: −6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠~ +
6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠의균등분포
* Xavier 초기화
시그모이드: ±6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠tanh: ±4
6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠relu: ± 2
6
𝑛𝑖𝑛𝑝𝑢𝑡𝑠+𝑛𝑜𝑢𝑡𝑝𝑢𝑡𝑠
29
MLPClassifier + cancer dataset
신경망에서도데이터의범주에민감함
30
평균이 0이고, 분산이 1인표준정규분포표준점수또는 z 점수StandardScaler
MLPClassifier + adam
31
최대반복횟수도달(기본값 200)
solver=‘adam’ (Adaptive Moment Estimation)
신경망의가중치검사
32
밝을수록큰값입력층과은닉층사이의가중치
은닉층과출력층사이의가중치는해석하기더어렵습니다.
덜중요하다고판단됨
DL framework landscape
33
+
PyTorch
Caffe2(Python)
lasagna
Python’17 Mar. KDnuggets
Wrapper
장단점과매개변수
장점
충분한시간과데이터가있으면매우복잡한모델을만들수있습니다.
종종다른알고리즘을 압도하는성능을발휘합니다(음성인식, 이미지분류, 번역등)
단점
데이터전처리에민감합니다(배치 정규화).
이종의데이터타입일경우트리모델이더나을수있습니다.
매개변수튜닝이매우어렵습니다(학습된 모델재사용).
Scikit-Learn은콘볼루션convolution이나리커런트recurrent 신경망을제공하지않습니다.
매개변수
solver=[‘adam’, ‘sgd’, ‘lbfgs’],
sgd일경우 momentum + nesterovs_momentum
alpha(L2 규제)
34
𝛼 ↑ → 규제 ↑ 𝑤 ↓𝛼 ↓ → 규제 ↓ 𝑤 ↑
신경망의복잡도와권장설정
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
모멘텀
모멘텀알고리즘은이전그래디언트값을가속도와같이생각하여전역최적값의
방향으로더빠르게수렴하게만듭니다.
momentum 매개변수는일종의댐퍼와같은역할을합니다.
𝑣𝑡+1 = 𝜇𝑣𝑡 − 𝜖𝑔 𝜃𝑡
𝜃𝑡+1 = 𝜃𝑡 + 𝑣𝑡+1
36
learning_ratemomentum
네스테로프모멘텀
네스테로프모멘텀은모멘텀방식으로진행한후의그래디언트를계산하여현재에
적용합니다.
𝑣𝑡+1 = 𝜇𝑣𝑡 − 𝜖𝑔 𝜃𝑡 + 𝜇𝑣𝑡
𝜃𝑡+1 = 𝜃𝑡 + 𝑣𝑡+1
실제구현에서는앞선그래디언트를계산하는대신모멘텀방식을두번적용하여
네스테로프의근사값을구합니다.(https://tensorflow.blog/2017/03/22/momentum-nesterov-momentum/ 참조)
37
분류의불확실성추정
38
분류의불확실성
어떤테스트포인트에대해예측클래스뿐만아니라얼마나그클래스임을
확신하는지가중요할때가있음
대부분 decision_function 과 predict_proba 메서드둘중하나는제공함
39
결정함수
40
이진분류에서 decision_function() 반환값의크기 (n_samples,)
𝑦 = 𝑤 0 × 𝑥 0 + 𝑤 1 × 𝑥 1 + ⋯+ 𝑤 𝑝 × 𝑥 𝑝 + 𝑏
결정경계 + decision_function
41
예측확률
predict_proba() 반환값의크기 (n_samples, n_classes)
가장큰확률값을가진클래스를예측클래스로선택함
42
결정경계 + predict_proba
43
다중분류 + decision_function
반환값의크기는 (n_samples, n_classes)
가장큰값이예측클래스가됨
44
다중분류 + predict_proba
반환값의크기는 (n_samples, n_classes)
45
요약및정리
46
알고리즘정리
최근접이웃
작은데이터셋일경우, 기본모델로서좋고설명하기쉬움.
선형모델
첫번째로시도할알고리즘. 대용량데이터셋가능. 고차원데이터에가능.
나이브베이즈
분류만가능. 선형모델보다훨씬빠름. 대용량데이터셋과고차원데이터에가능.
선형모델보다덜정확함.
결정트리
매우빠름. 데이터스케일조정이필요없음. 시각화하기좋고설명하기쉬움.
47
랜덤포레스트
결정트리하나보다거의항상좋은성능을냄. 매우안정적이고강력함.
데이터스케일조정필요없음. 고차원희소데이터에는잘안맞음.
그래디언트부스팅
랜덤포레스트보다조금더성능이좋음. 랜덤포레스트보다 학습은느리나예측은
빠르고메모리를조금사용. 랜덤포레스트보다 매개변수튜닝이많이필요함.
서포트벡터머신
비슷한의미의특성으로이뤄진중간규모데이터셋에잘맞음.
데이터스케일조정필요. 매개변수에민감.
신경망
특별히대용량데이터셋에서 매우복잡한모델을만들수있음.
매개변수선택과데이터스케일에민감. 큰모델은학습이오래걸림.
48