본문 바로가기

카테고리 339

Batch, Mini-batch Mini-batch 딥러닝에서 가장 중요한 알고리즘 중 하나이다. Batch vs. Mini-batch Batch는 1번 iteration(1-epoch) 할 때 사용되는 example들의 set을 말한다. Vectorization은 train example의 계산을 좀 더 효율적으로 만들어준다. 그런데 train example의 수가 너무 많아지면 단순한 batch로는 vectorization으로도 힘들어진다. 계산 시간, resource 등이 많이 필요해지기 때문이다. Mini-batch는 train sample을 disjoint하게 subset으로 나눠서 작은 사이즈로 줄인다. 이를 통해 memory와 속도 측면에서 성능을 향상시킬 수 있다. 즉, sample 기준에서 1차원으로 나열되어있는 것을 .. 2022. 4. 21.
Normalization Normalization 문제 특정 값이 엄청나게 클 때, 그것에 붙어있는 w는 조금만 커져도 activation이 크게 바뀐다. Input Normalization Training set에 대해 normalization을 했으면 test set에 대해서도 동일한 normalization을 해야 한다. 가장 많이 사용되는 normalization 방법은 정규분포화이다. input에 평균만큼 뺀다. input에 분산으로 나눠준다. 2022. 4. 20.
Weight Initialization - Gradient Problem 방지 Weight Initialization Vanishing/Exploding Gradients 네트워크가 매우 깊은 경우 깊게 들어갈 수록 가해지는 수가 많기 때문에 vanishing/exploding gradient 문제가 발생하기 쉽다. 아래와 같이 모든 w가 같다고 가정했을 때 네트워크가 깊어질수록 y가 쉽게 너무 매우 커질수도 너무 매우 작아질 수도 있다. Gradient도 마찬가지로 네트워크가 깊어질 수록 gradient가 매우 작아지거나 너무 매우 커질 수 있다. 끝단(back의 초입부)에는 연산 횟수가 적기 때문에 문제가 발생할 가능성이 적고 깊어질 수록 문제가 발생할 가능성이 크다. 따라서 적당한 w을 유지해야 한다. Weight Initialization Input의 dimension(개수.. 2022. 4. 20.
Early Stopping - Overfitting 방지 Early Stopping Training iteration이 증가할 수록 training error는 무조건 내려가는 방향이다. Training은 loss를 줄이는 방향으로 진행되기 때문이다. 그러나 dev/test set error는 단순히 감소하는 경향을 보이지 않는다. 감소하다가 다시 오를수도 멈출수도 있다. Iteration 수가 너무 적으면 high bias하고, 너무 많으면 high variance(overfitting) 할 수 있다. 따라서 training error가 작고 dev/test error도 작은 적당한 지점에서 training을 stop해야 한다. 데이터셋이 많이 없을 때 많이 사용하는 기법이다. 2022. 4. 20.
[Regularization] Dropout Dropout 큰 네트워크에서 랜덤하게 unit들을 제거함으로써 복잡한 네트워크를 단순화한다. 매 training 마다 랜덤하게 제거하기 때문에 일부 unit에 역할이 뭉치지 않는다. 이를 통해 overfitting을 줄일 수 있다. 원리 각 노드가 언제든 제거될 수 있기 때문에 각 노드들이 중요한 역할을 하지 않게 된다. 즉, 역할이 한 곳에 집중되지 않고 나눠서 수행되는 것이다. output layer 쪽을 제거하면 output이 정상적으로 나오지 않을 수 있기 때문에 끝단으로 갈수록 제거하지 않는다. Pseudo Code using Inverted Dropout Inverted dropout을 이용하여 dropout regularization을 구현할 수 있다. 단, test 시에는 전부 다 사용하.. 2022. 4. 20.