티스토리 뷰

ML

ML 이론 강의 필기 - 3

khe0616 2018. 10. 27. 17:42

Lec 7-1. Learning rate, data preprocessing, overfitting






learning rate

Gradient descent 알고리즘에서
cost함수의 미분값에 곱해지는 값 알파(위 사진의 빨간색 부분)을 LearningRate라고 한다.

learning rate는 적절한 값으로 설정되어야 한다.









만약 learning rate 값이 너무 클 경우, cost가 줄어들지 않고 발산해버릴 우려가 있다.

이런 현상을 overshooting 이라고 한다.






반면에, learning rate 값이 너무 작을 경우,

1. cost를 최소화하는데 너무 오랜 시간이 걸리거나

2. cost의 local minimum에서 멈추어 버림

과 같은 문제점들이 발생할 수 있다.








 적절한 learning rate 결정방법 -> cost function 값을 관찰 해본다.


(learning rate) 0.01 정도에서 시작 -> (cost function 값이) 발산하면 줄이고,

                                                 (cost function 값이) 너무 느리게 수렴하면 크게한다.










Data preprocessing


w가 2개 있는(w1, w2) Cost function에 Gradient Descent 알고리즘을 적용한다고 가정하자

위 사진과 같이 cost function이 균형잡힌 모양이라면,

global minimum에 정상적으로 수렴할 수 있다. (정상적인 학습)









그러나 위와 같이 data set에서 x2 값들 간에 큰 차이가 나는 경우 (w1이 w2보단 클 것이다), cost function의 모양이 왜곡된 모양이 될 수 있다.

이러한 경우 learning rate가 좋음에도 불구하고, 학습과정에서 잘못 밖으로 나가면 학습이 안되고 발산해버릴 우려가 있다.


따라서, 이 문제점을 해결하기 위해 data set에 대한 전처리(선처리) 과정이 필요하다.







보통 이런 단계로 데이터(data set) 전처리를 한다고 한다.







Normalization

 "(해당 변수값 - 최소값) / (최대값 - 최소값)"

으로 0~1사이의 값으로 나타내는 척도법이다.



출처: http://gentlej90.tistory.com/26






Standardization

특정한 분포(ex. 정규분포) 들의 평균과 분산 혹은 표준편차를 이용해

" (변수값 - 평균)/표준편차 " 로 해당분포에서의 이 변수값의 평균으로부터의 위치를 표준편차 단위로 옮겨서 다시 나타낸 것이다.


파란색 부분 -> 평균

빨간색 부분 -> 표준편차


출처: http://gentlej90.tistory.com/26





-> Normalization 이나 Standardization은 머신러닝이 좋은 성능을 발휘하기 위한 방법 중 하나이다.








Overfitting -> 머신러닝의 가장 큰 문제


머신러닝 -> 학습을 통해 model을 만든다.


그러나, 학습데이터에 너무 딱 잘맞는 모델을 만들어 낼 수가 있다 (with memorization)

이러한 경우, 학습데이터로 물어보면 잘 답을 해주겠지만 test dataset으로 물어보거나 실제 사용시 잘 안맞는 경우가 발생한다.








왼쪽 (good model) -> 좀 더 일반적인 모델로, 다른 data set이 들어와도 잘 맞는 모델이 될 수 있다.


오른쪽 (bad model : overfitting) -> 너무 갖고있는 학습데이터에만 맞춰진 모델

                                          -> 실제 사용시 정확도가 떨어질 수 있다.






Overfitting에 대한 Solutions

1. 많은 training data set

2. (중복된거 있으면) feature의 개수 줄이기

3. Regularization(일반화)






Regularization(일반화)


위 모델은 어떤 특정한 weight가 굉장히 큰 값을 가져 구부러져 있는 모델이다.

학습 성능을 높이기 위해서는 구부러진 것을 펴주어야 한다. ( weight를 작게 )





파란색으로 표시한 Loss function의 목표는 값을 최소화 시키는 것이다.


Regularization은 이 Loss function에 빨간 밑줄 친 항(Term)을 더한다음 이것을 최소화 시키는 것이다.

결과적으로 loss function을 최소화 하는 동시에, weight의 제곱을 한 값이 작아지도록(최소화) 할 수 있다. -> weight가 크면 구부러지니까 작게해서 펴주는 것



파란색 원으로 표시한 람다는 regularization strength 이다. 이 값이

0인 경우 -> Regularization(일반화) 안함

1(큰값) 인 경우 -> Regularization(일반화)를 중요히 생각함

0.001 -> Regularization(일반화)가 크게 중요하진 않지만 하긴한다.











Lec 7-2. Learning and test data sets



머신러닝 모델이 얼마나 잘 동작하는지 확인하는 방법


training set으로 학습 -> 이 training set으로 다시 질문 -> 나쁜 방법



data set이 있을때,

70% 정도는 training set -> 이걸로 학습시켜서 모델을 만듬

30% 정도는 test set -> 절대로 학습에 포함시키면 안되고, 이 data로 질문

-> 좋은 방법





Training, validation and test sets



dataset을 70%의 training set과 30%의 test set으로 나누는 것이 더 일반적이긴 하나

training set을 training set과  validation set으로 나누기도 한다.



validation(모의시험) -> learning rate나 regularization strength 를 튜닝할 필요가 있을 때, 이러한 값들이 어떤것이 좋을지 튜닝하는 용도








Online Learning


Training set이 많을때(100만개) -> 학번에 학습하기 힘듬 (메모리의 제약 등)

따라서 이를 10만개씩 나눠, 추가하면서 학습하는 개념이다.


유의할점은 학습때마다, 지금까지 학습했던 결과가 모델에 남아 있어야 한다.




Training epoch/batch and iteration의 관계


training example -> 10000개

batch size -> 500

일때,


1 epoch를 complete하기 위해서 20 iteration이 필요하다.








Accuracy

accuracy(정확성)은

모델을 통과하여 얻어낸 hypothesis(y bar)와 참값(y) 를 비교하는 것이다.


분야에 따라 다르나, 최근 이미지 인식의 accuracy는 95~99% 라고 한다.







Lec 8. Deep Neural Net 개요


궁극적 목표 -> thinking machine 만들기





Activation Function

activation function에 의해,

빨간 밑줄친 값이 일정 값을 넘어가면 신호 1을주고, 

                       일정 값 보다 아래면 신호 0을 준다.






AND/OR problem VS XOR problem


or나 and의 경우 위와 같이 선으로 구분할 수 있다. -> linearly separable 하다.






그러나, xor의 경우 위와 같이 선으로 구분할 수 없다. -> linearly separable 하지 않다.

-> Backpropagation 알고리즘을 통해 이 문제를 해결










Backpropagation


위 사진과 같이 backward로 error를 전달해주는데,

자세한 내용은 뒤에 적을 예정이다.













Convolutional Neural Networks




그림을 잘라서 보내고, 나중에 이 부분들을 합치는 방식이다.


문자 인식률이 90% 이상이며, 알파고도 CNN을 사용했다고 한다.












BackPropagation의 big problem


BackPropagation 알고리즘 -> 적은 layer에 대해서는 잘동작하였다. (학습을 잘 시켰다.)




그러나 위와 같이 layer가 많아질수록 성능은 떨어지게 되었다.(학습을 제대로 시키지 못하였음)

backward로 error를 앞으로 보낼 때, layer들을 지나면서 error의 의미가 갈수록 약해지고, 결국은 error가 거의 전달되지 않아 학습을 시킬수가 없게 된다.


오히려, Neural Network(너무 복잡하기도 함)보다 간단한 SVM, Random Forest 같은 알고리즘들이 더 잘동작하였다.







Breakthrough


바로 위의 backpropagation에서의 big problem으로 인해 deep한 neural network는 학습할 수 없는 것으로 여겨져 왔다.

그러나 2006, 2007년 Hinton과 Bengio가 이 문제에 대한 돌파구가 되는 논문을 발표하였다.


그 내용은 아래와 같다.

▶ weight(w)의 초기값을 잘 지정해 준다면, deep한(many layer) Neural Networks를 학습시킬 수 있음을 확인 (2006)

▶ 깊게 신경망(neural network)을 구축하면 굉장히 복잡한 문제들을 풀 수 있음 (2007)

    -> 복잡하고 어려운 문제들에 대해서는 Deep machine learning method가 shallow method보다 더 효율적임


-> 이름을 Neural Network에서 Deep Network, Deep Learning 으로 바꿈 (단순히 관심을 끌기 위해)







IMAGENET

이미지 주면 뭔지 맞추기 -> Deep Learning이 주목을 받게 된 계기



Deep API Learning

자연어로 하고싶은 작업 입력 -> 예)  "copy a file and save it to your destination path"

자동으로 순서에 맞게 써야하는 API를 알려준다.











그림을 맞추는 것 뿐만 아니라 그림을 설명하는 것도 가능하다.













예전에는 딥러닝이 잘 안됬던 이유


1. Our labeled datasets were thousands of times too small.

2. Our computers were millions of times too slow.

3. We initialized the weights in a stupid way.

4. We used the wrong type of non-linearity.



'ML' 카테고리의 다른 글

ML 이론 강의 필기 - 5  (0) 2018.11.16
ML 이론 강의 필기 - 4  (0) 2018.11.12
ML 이론 강의 필기 - 2  (0) 2018.10.17
ML 이론 강의 필기 - 1  (0) 2018.10.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
글 보관함