http://futurelab.creatorlink.net/
Scaler
- input data의 범위를 조정
-> input 간에 (x1, x2) 범위가 달라지게 되면 cost 함수가 찌그러진 형태로 그려질 수 밖에 없고, 그렇게 되면 일정한 learning rate에 대해서 학습이 잘 이루어지지 않을 수 있다. (Gradient Descent에서 정체가 될 수 있다)
따라서, 범위를 일정하게 만들 필요가 있다.
1) minmaxscaler
-feature의 최대/최소를 1(Max),0(min)이 되도록 scaling
ex) 0 -> 0
/// 101 -> 1
/// 9 -> 0.08
/// 2 -> 0.01
but, oulier에 취약할 수 있다.
2) standardscaler
xi - mu / sigma -> xi ~ N(mu, sigma^2)
-> outlier가 있더라도 좀 더 robust하게 범위들을 바꿔줄 수 있다.
Mini-batch Gradient Descent
1) mini batch : 단일 iteration에서의(한번 학습을 진행할 때) gradient descent하는데 사용하는 data의 총 개수
2) epoch : data 전체를 train한 횟수
3) Batch G.D : 한 번에 모든 data로 gradient descent
4) Mini-batch G.D (SGD)
: 한 번에 mini-batch씩 gradient descent
5) batch_size (hyperparameter)
-2의 거듭제곱
-최솟값 : 2^5 = 32 (default)
-최댓값 : 클수록 좋다 -> 클수록 학습속도 증가 & 더 정확
-> batch size가 클수록 많은 데이터를 사용하기 때문에, 정확한 gradient를 계산할 가능성이 크다.
따라서, OOM(out of memory)가 발생하지 않는 선에서 최대한 크게 batch size를 잡아주는 것이 좋다.

Initialization
- random initialization의 필요성
layer가 엄청 깊어질수록
1) w가 계속해서 작으면 gradient vanishing
2) w가 계속해서 크면 gradient exploding
=> w값을 적절하게 설정할 필요가 있다.
- random initialization의 문제점
1) fan-in : 들어오는 node의 개수
2) fan-out : 현재 layer의 node 개수
-> fan-in이 길수록, 출력되는 fan-out의 값이 커진다. (gradient exploding)
-> fan-in이 짧을수록, 출력되는 fan-out의 값이 작아진다.(gradient vanishing)
- Xavier Initialization
1) glorot initialization이라고도 부름
2) 보편적으로 잘 된다.
3) 현재는 fan-in과 fan-out을 모두 고려하는 방식을 선택
-> w = 1/root(fan-in) * random값
=> layer가 깊어져도 분포에 변화가 없음
(layer마다 곱해지는 상수가 달랐기 때문)
- He Initialization
1) fan-in만 고려하는 방식
2) ReLU계열에 특화
Optimizer
- SGD : random하게 추출한 mini-batch씩 gradient descent를 진행
1) 단점 : 해당 위치에서의 gradient만 고려한다.
-gradient가 dimension별로 차이가 크면 minimum을 찾기 어렵다.
-local minimum or plateaus에서 gradient descent가 멈춘다.
2) 해결책 : 관성
-관성 : 이전 운동 상태를 지속하려는 성질
== 이전 gradient도 G.D에 반영하자!
-> 관성이 가해지면 당연히 local minimum 혹은 plateaus는 극복 가능하다.
3) vector = 방향, 크기를 모두 갖는 물리량
-방향 = gradient
-크기 = learning rate
4) 그래서 optimizer에는 2가지 계보가 있다.
<1> gradient에 관성을 주는 경우
<2> learning rate에 관성을 주는 경우
=> "Adam" : 방향 + 스텝사이즈 둘다 고려!
- SGD + Momentum

