[미래연구소] 딥러닝 17기 week7

qw4735·2022년 3월 9일

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


0개의 댓글