DL 기본 상식 2

2024. 4. 22. 14:13기술 면접/AI(ML,DL)

Gradient Descent에 대해서 쉽게 설명한다면?

  • 기울기. 즉 loss function에서 cost를 최소로 하는 모수(파라미터)를 찾기 위한 과정이다.

Gradient Descent에서 가로축과 세로축은 무엇인가?

  • 가로축은 찾고자 하는 모수(=파라미터)이며 세로축은 cost. 즉 loss입니다.
  • 실제 상황에서는 gradient가 0인 지점을 찾기위해 반복되며 양수일 때는 모수 값을 감소시키고, 음수일 때는 모수를 증가시키기 때문에 0을 기준으로 진동하는 그래프가 형성됩니다.(x축은 파라미터, y축은 gradient)

Gradient Descent에서 Loss가 증가하는 이유는?

  • 극솟값 주변에서 learning rate가 너무 커서 진행을 너무 많이 했을 때 입니다. 한편으로는 local minima에서 벗어나는 중이라고 볼 수도 있습니다.

 

Back propagation이란?

  • 한국말로 역전파. 즉 정답과 예측 간의 loss를 줄이기 위해 weight가 update 되는 과정입니다. loss function에서의 기울기에 따라 weight가 update가 되는데 이때 output을 생성하기 까지 거쳐간 layer마다 weight가 존재하며 연쇄적으로 곱해지게 됩니다. 따라서 weight의 변화량을 계산하기 위해 다시 chain rule을 이용하여 해당 layer에서 weight의 기울기를 구하고, 해당 기울기에 따라 weight를 update합니다.
  • 역전파 알고리즘을 수행하는 이유는 layer가 깊은 딥러닝 모델에서는 파라미터가 매우 많습니다. 이때 loss와 직접적으로 연관된 마지막 layer에서부터 기울기를 계산하고 해당 값을 이전 layer에서 재활용한다면 더욱 쉽게 weight를 update시킬 수 있습니다.

 

 

 

Optimizer 종류와 아는대로 설명해보세요

  1. BGD(Batch Gradient Descent), SGD(Stochastic Gradient Descent), Mini-batch Gradient Descent
    1. BGD : 전체 dataset을 활용하여 Gradient Descent를 수행
    2. SGD : 랜덤으로 하나의 data를 추출하여 해당 데이터에 대해 Gradient Desent를 수행
      • Stochastic: 전체 데이터셋에서 무작위로 선택된다는 의미.
    3. Mini-batch : 전체 dataset에서 일부 subset을 추출하여 해당 subset에 대해 Gradient Descent를 수행
      • mini-batch 사이즈가 작아질 경우 iteration 당 계산량이 감소하기 때문에 step당 속도가 빨라진다.
      • 이는 곧 적은 그래픽 사양으로도 학습이 가능하다.
      • 하지만 데이터 전체의 경향을 반영하기 힘든 단점이 존재함.
  2. Momentum : weight update에 있어서 관성 법칙을 적용하는 기법입니다. 즉 이전 변화량(보통 베타는 0.9로 이전 10개를 평균값)을 고려하여 update의 양을 다르게 조절함으로써 local minima에 빠지지 않고 좀 더 빠르게 global minima로 수렴될 수 있습니다.
  3. RMSprop : 지수 가중 평균을 활용하여 파라미터마다 변화량을 동적으로 조절합니다. 기울기가 큰 매개변수는 더 적게 update하며 기울기가 작은 weight는 크게 변화시킴으로써 빠른 수렴과 학습 과정의 안전성을 동시에 제공합니다.
  4. Adam : Momentum + RMSprop 기법. 즉 이전 기울기 값과 기울기 제곱값의 지두 이동 평균을 활용하여 update 변화량을 조절합니다.

Momentum, RMSprop, Adam 순서

 

 

 

 

간단한 MNIST 분류기를 MLP+CPU 버전으로 numpy로 만든다면 몇줄일까?

  • MLP layer의 개수에 따라 달라지겠지만 일반적으로 100줄 이내로 가능할 것 같습니다.
  • 또한 단순 MLP로도 30 epoch이내에 0.9이상의 정확도가 나오는 것으로 알고있습니다. 경험이 있는사람이라면 작성하는데 30분-1시간 내에 작성할 수 있다고 생각합니다.

CNN으로 바꾼다면?

  • filter size, padding, stride 및 pooling layer에 대한 정의가 추가적으로 들어가야하므로 한 50줄정도 추가되지 않을까 싶습니다.

Back propagation을 코드로 구현한다면?

  • back propagation을 pytorch로 작성한다면 loss.backward() 함수 한줄이며 직접 구현한다면 10줄정도 되는 함수로 구현할 수 있습니다.

간단한 MNIST 분류기를 TF, PyTorch 등으로 작성하는데 몇시간이 필요한가?

  • 딥러닝 모델을 구현해본 경험이 있는 사람이라면 공식 Document를 참고하였을 때 데이터 다운로드, 데이터셋 구축, 데이터로더, 모델 선언, 학습, 추론까지 코드작성은 1시간 내로 완성되며 학습까지 2시간 이내로 진행될 것 같습니다.

CNN이 아닌 MLP로도 잘 될까?

  • 간단한 MNIST 분류기 자체는 단순 MLP로도 0.9이상의 성능을 보이기 때문에 잘 된다라고 말할 수도 있겠지만 Convolution 연산을 통해 image의 지역적 특성을 반영할 수 있는 기회를 놓치게 되므로 CNN보다는 성능이 낮습니다.

CNN의 마지막 layer는 어떻게 구성되어있나?

  • 최종 task를 진행하기 위한 결과값을 도출하기 위해 Fully-connect layer가 쌓인 구조로 볼 수 있습니다. MNIST의 경우 0-9 사이의 숫자를 맞추게 되므로 최종적으로 10개의 unit을 가지는 layer가 최종 layer가 되며, 각 값에는 해당 label이 등장할 확률을 가지게 됩니다.

학습은 BCE, 상황은 MSE로 보고싶다면?

  • 학습시 loss function은 BCE를 사용하고, valid 데이터를 활용한 성능 측정시에는 MSE를 활용하면 됩니다.

 

 

딥러닝에서 GPU를 쓰는 이유는?

  • GPU는 부동 소수점 연산을 수행하는 많은 코어가 있어서 수많은 연산을 병렬처리할 수 있습니다. 또한 CPU보다 더 큰 메모리 대역폭을 가지고 있기 때문에 큰 데이터를 더 효율적으로 빠륵 ㅔ처리할 수 있습니다.
  • GPU를 여러대 동시에 사용하고 싶을 때는 Pytorch의 경우 torch.nn.DataParallel을 활용합니다. 또한 학습 시 필요한 GPU메모리를 미리 계산하고 싶다면 GPU에 올리는 모델의 크기 + 데이터의 크기 * 배치 크기를 더해서 예상해볼 수 있습니다.

'기술 면접 > AI(ML,DL)' 카테고리의 다른 글

DL 기본 상식  (0) 2024.04.22
ML 기본 상식 3  (1) 2024.04.22
ML 기본 상식 2  (0) 2024.04.21
ML 기본 상식  (0) 2024.04.16