cost function을 최소화하는 방법으로 gradient descent를 이용하는데, 이때 우리는 임의의 learning rate를 이용했당.
학습을 잘 하게 하려면! learning rate를 잘 조정해야한다.
learning rate는 하나의 step으로 보는데,
1. step을 크게 조정하면 overshooting(계속 큰값으로 발산)이 나타난다.
2. step을 엄청나게 작게 조정하면, 최소값에 도달하는데 너무나 오래걸리게 된다.
이 두가지를 피하기 위해선(잘 조정하기 위해서는) cost function을 계속 출력시켜서 값이 어떻게 변화하는지 관찰(?)해야한다.
(보통 0.01으로 설정한다.. 여기에서 값을 보고 잘 맞추길..)
Data preprocessing
data 값에 큰 차이가 생기게 되면, learning rate가 잘 설정되어도 제대로 학습되지 않는 경우가 있다. 이때 해야하는것이 data preprocessing이다.
이때, zero0centered data/ normalized data 를 이용하여 전처리를 해야한다.
normalization 종류 중 Standardization
식은 다음과 같으며,
python으로는 그냥 .. 공식을 적어주면된다. X_std[:,0] = (X[:,0] - X[:,0].mean()) / X[:,0].std() 하면된당
Overfitting
학습데이터만! 너무 딱 잘맞는 모델을 만들어낸 것을 의미한다.
이렇게 되면, 학습에 사용하지 않은 다른 data를 집어넣게 되면 그지같은 값을 내놓게 되신다..
예를들어서 우리는 첫번째 그림과 같은 데이터들이 있을때, 두번째와 같은 동그라미, 세모로 분류하는 모델을 만들고 싶었다.
하지만, overfitting이 된다면 세번째와 같은 모델을 만들게 되며, 이렇게 되면 다른 임의의 데이터가 들어왔을때, 정답률이 떨어질수 있다!
해결방안
1. training data의 수를 늘인다!
2. features의 갯수를 줄인다!
3. Regulariztion(일반화)
- 우리가 가지고 있는 weigth를 너무 큰 값을 가지지 말자!
: 구부린다(weigth 값이 크다)
cost function 뒤에 각 엘리먼트를 제곱하여 합한 값에 상수(regularization strength)을 추가하게 된당
상수가 0이 되면, 쓰지않겠다.
상수가 큰 값이면, 중요하게 생각한다! 로 알 수 있음
tensorflow로 보자면, 저 상수가 regularization strength이다.
* l2reg = 0.001 * tf.reduce_sum(tf.square(W))
'Study > 모두를 위한 딥러닝 시즌1' 카테고리의 다른 글
Lec 08 - 딥러닝의 기본 개념: 시작과 XOR 문제, back-propagation과 deep! (0) | 2018.05.15 |
---|---|
Lec 07-2 - Training/Testing data set (0) | 2018.05.15 |
Lec 06 - Softmax Regression: 기본 개념 소개 및 cost 함수 (0) | 2018.05.14 |
Lec 05-2 - Logistic Regression의 cost 함수 (0) | 2018.05.02 |
Lec 05 - Logistic Classification의 가설 함수 정의 (0) | 2018.05.02 |
댓글