- L1과 L2 regularization의 효과와 그 원리에 대해 설명하시오.
- L1
- 원리
- task를 수행함에 있어, 영향력이 낮은 weight를 0으로 만들어, Loss를 줄이는 방식
- 효과
- 특정 weight값을 0으로 줄이기 때문에 특정 feature의 영향력을 소명시켜버림
- L2
- 원리
- task를 수행함에 있어, 영향력이 높은 weight를 줄여, 모든 weight들이 골고루 사용하여 Loss를 줄이는 방식
- 효과
- 다양한 weight들을 골고루 사용하여 하기 때문에 영향력이 높은 특정 weight dependency를 낮추고 다양한 feature들을 사용할 수 있음
<aside>
💡
풀이
L1 loss
- $\mathrm{L}_1 = |w_1| + |w_2|$
- 어떤 weight의 값을 줄여도 모두 똑같이 전체 loss가 줄어들게 됨
- 풀고자 하는 task에 의미없는 feature들의 weight를 0이 될 때 까지 우선적으로 줄인다.
- e.g. 특정 분류할 때 학습할때는 의미가 있을 수 있지만 test할 때에는 의미가 없으므로 소멸시킴
L2 Loss
- 제곱의 성질에 의해 큰 웨이트에 더 큰 loss가 측정됨. 따라서 큰 weight가 있으면 작게 만들어 주는 방식으로 동작함
- 모든 웨이트가 비슷한 스케일의 값을 갖게 함
한 웨이트가 너무 크거나 튀어버리면 모델의 학습이 다이나믹하게 fluctuate함
</aside>
오버피팅이 일어나는 두가지 이유를 설명하시오.
-
- 데이터의 개수가 굉장히 적을 때
- 모델이 데이터를 모두 외워버릴 수 있음 → overfitting되었다고 함
-
- 모델사이즈(layer 개수)가 너무 클때
- 모델사이즈가 데이터에 비해 너무 커서 데이터를 모두 외워버릴 수 있을 만큼의 capacity를 가지고 있게되면 오버피팅이 일어남
<aside>
💡 풀이
데이터의 크기가 작거나 모델의 크기가 큰 경우 모델이 데이터의 노이즈까지 학습하기 때문
</aside>
- 딥러닝 모델 학습 및 평가 과정 전체의 구현 플로우를 간략히 작성하시오
- 데이터를 가져와서 트랜스포머에 넣고 사용할 수 있도록 변형시킨다
- 데이터로더를 통해 변형한 데이터를 셔플하고 배치사이즈에 맞춰서 나눠준다
- 데이터를 인풋과 레이블로 나눈다
- 데이터를 gpu에 올린다
- 모델의 input_dim과 hidden_dim, output_dim 을 설정하고, layer를 설정한다
- 모델의 forward pass할 수 있도록 forward 함수를 설정한다.
- 모델을 gpu에 올린다
- task에 맞게 목적함수를 설정하고, 옵티마이저도 설정해준다
- 옵티마이저를 초기화하고 forward pass진행하고, loss function 설정하고 backward pass 해서 grad 저장 및 계산 할 수 있게하고, 파라미터를 업데이트 한다.