2020. 12. 27. 23:53ㆍ머신러닝
Learning rate의 조정방법과, 데이터의 노이즈가 뭔지 알아보자.
Learning rate
알다시피 Learning rate는 한 epoch 마다 Weight에 얼마큼 업데이트를 해주는지를 정하는 값이다.
이 Learning rate 값은 적당해야하는데, 너무 크면 와리가리하느라 학습이 안되고 너무 작으면 시간이 오래 걸리기 때문이다.
그래서 학습 중에 Learning rate를 알맞게 변경하는 방법이 있다.
위 그림에는 exponenetial_dacay가 나와있는데, 일정한 epoch 마다 원하는 만큼의 learning rate를 감소시킨다.
(https://www.tensorflow.org/api_docs/python/tf/compat/v1/train/exponential_decay)
▪ learning_rate: A scalar float32 or float64 Tensor or a Python number. The initial learning rate.
: 초기 learning rate.
▪ global_step : A scalar int32 or int64 Tensor or a Python number. Global step to use for the decay computation. Must not be negative.
: 현재 step
▪ decay_steps : A scalar int32 or int64 Tensor or a Python number. Must be positive. See the decay computation above.
: 몇 step마다 decay (감소) 시킬 것인지 ex)1000
▪ decay_rate : A scalar float32 or float64 Tensor or a Python number. The decay rate.
: decay 되는 비율 ex) 0.96
▪ staircase : Boolean. If True decay the learning rate at discrete intervals
: staircase가 True이면, decay_steps마다 learning rate의 급격한 decay를 하고, False 이면 decay_steps 마다 원하는 만큼 decay가 되도록 지속적으로 learning rate를 감소시킨다.
▪ name : String. Optional name of the operation. Defaults to 'ExponentialDecay'
Data Preprocessing
Feature Scaling
데이터는 좌측 그림처럼 일부 동떨어진 녀석들(feature) 때문에 수많은 중요한 데이터가 심각하게 작아 보일 수 있다. (0에 근접한 수많은 값들이 하나로 보인다.) 그래서 이 데이터들을 알맞은 범위에 분포시키는 작업을 Feature Scaling이라고 한다.
예를 들면 키(x1)와 발의 크기(x2)로 옷의 사이즈(y)를 예측할 때 사람들의 키(x1)와 몸무게(x2)는 범위와 값의 단위도 다르다. optimize를 할 때 같은 learning rate를 사용하기 때문에 이 경우에 시간도 오래 걸리고 최적화가 잘 안될 수 있다.
그래서 이런 이유로 feature들을 같은 범위 (0~1)로 scaling 해주는 것이다. 그럼 cost function이 원형이겠지? feature scaling을 해주는 방법은 크게 두 가지가 있다.
Standardization(표준화)와 Normalization (정규화)이다. 간단하게 보면
Standardization
- 기존 변수에 범위를 정규 분포로 변환한다.
- 식) (X - X의 평균값) / (X의 표준편차)
- 데이터의 최솟값, 최댓값을 모를 경우 사용한다.
Normalization
- 데이터를 일반적으로 0~1 사이의 값으로 변환시켜준다.
- 식) (X - X의 최솟값) / (X의 최대값 - X의 최소값)
- 데이터의 최솟값, 최댓값을 알 경우 사용한다.
Noisy Data
raw data에는 학습에 필요 없는 noise들이 있다. 예를 들면 자연어 처리에서 Will you order a pizza?? 에서 파란 부분만 필요한 경우. 얼굴 인식에서 이목구비만 필요한 경우가 있다. 이러한 Noisy Data 들을 잘 preprocessing 해서 사용해야 효율적인 ML이 되겠다.
'머신러닝' 카테고리의 다른 글
[텐서플로우로 시작하는 딥러닝 기초] Lab 06-2: Fancy Softmax classifier 를 TensorFlow 로 구현하기 (0) | 2020.12.22 |
---|---|
[텐서플로우로 시작하는 딥러닝 기초] Lab 06-1: Softmax classifier 를 TensorFlow 로 구현하기 (0) | 2020.12.05 |
[텐서플로우로 시작하는 딥러닝 기초] Lec 06-2: Softmax Classifier의 cost함수 (0) | 2020.11.11 |
[텐서플로우로 시작하는 딥러닝 기초] Lec 06-1: Softmax Regression: 기본 개념소개 (0) | 2020.10.29 |
[텐서플로우로 시작하는 딥러닝 기초] 복습과 고민 (0) | 2020.10.17 |