본문 바로가기
info : 유용한 정보, 체험기

인터뷰 질문들 - 머신 러닝 딥 러닝 배치, 미니배치, Gradient descent

by 퇴근길에 삼남매가 알려드림 2022. 10. 28.

머신 러닝, 딥 러닝 직군으로 인터뷰를 볼 때, 인터뷰 질문으로 나올 간단한 질문들을 준비해보았다. 기본 개념이어도 갑자기 물어보면 당황해서 말을 못할 수도 있고, 정말 한 두 줄로 깔끔하게 설명하지 못할 수도 있다. 그러므로 짧게 어떻게 대답할 지 준비해두자.

 

예상 질문 리스트 1

 

  • Gradient descent 방법이 뭔가요?
  • 어떻게 신경망 모델이 어떻게 '배우는'지 설명해 보실래요?
    (답변 예시 gradient descent 를 이용해서 신경망 레이어의 weight 과 bias를... )
  • Gradient descent 방법의 기본이 되는 수학적 개념은 무엇인가요?
  • 손실 함수란 무엇인가요?
  • 어떤 종류의 gradient descent 방법이 있나요?
  • 어떻게 learning rate 이 gradient descent 에 어떤 영향을 미치나요?
  • Gradient descent 방법의 약점과 약점을 극복하는 방법들은 무엇이 있나요?
  • 각 gradient descent 방법이 다른 방법과 비교해서 장점과 단점이 있다면 어떤게 있을 수 있을 까요? 
  • 어떤 경우에 gradient descent 를 이용한 학습이 실패하나요? 
    if not convex, many local minimum, 경사도가 평평할 때, 스탭 사이즈 (즉 learning rate)이 적합하게 설정 안되었을 때..등
  • 어떤 기준으로 최적화 함수를 고르나요?
    (totally depends on problem. I will probably start with.. for global minimum: minibatch gradient descent with momentum,local minimum, conjugate gradient .. )
  • mini batch 가 뭔지 설명해 보세요.
  • epoch 이 뭔가요 ?
  • 모멘텀이 무엇이고 왜 쓰나요?
    previous step 의 일부를 현재 step에 더하는 '관성' 을 줌으로...
  • 슈도 코드로 신경망 모델을 어떻게 학습 시키는 지 설명해보실래요? 
    일단, 모델을 정해줍니다. 예를 들어서, 가장 간단하게 convolutonal neural net .. activation .. 을 정의해주고,  데이터가 있다고 했을 때 배치 사이즈를 n 으로 하면 for loop 에서... 

    관련 질문, convolutional neural net 이 무엇인가, 그 activation function을 왜 선택했는가. 어떻게 weight을 initialize 하는가 또는 수학적으로 신경망 모델을 설명..구현.. 등등

 


 

일단, Gradient descent 는 뭐라고 말할 수 있을까?

 

실제 값과 모델의 예측값을 차이를 최소화하는데 이용되는 최적화 알고리즘 중 하나이다. 실제 값과 모델 예측 값의 차이는 손실 함수를 통해서 정의된다. 모델을 통해서 손실함수 값을 계산 한 후, 모델의 parameter 에서 굉장히 작은 값만 바꾸었을 때, 손실 함수 값이 감소하는 방향으로 이동하고 이를 여러번 반복하면 손실함수 값을 최소화 하는 parameter values 를 찾을 수 있는데 이를 gradient descent 방법이라고 한다.

 

이 외에도 아래와 같은 포인트를 언급하거나 언급해서 대답할 수 있다.

 

  • '굉장히 작은 값만 바꾸었을 때, 손실 함수 값이 감소하는 방향' 대신 '미분을 통해 음의 기울기 방향으로 이동'이라고 표현
  • " learning rate 은 최적화 된 값을 향해 얼마나 빨리 움직이는지를 조절할 수 있다" 라고 하는 것도 방법
  • 이 때 learning rate 이 너무 작거나 클 때의 문제점 등이 기본적인 연관문제로 나올 수 도 있다. (단, 상위 직급일 수록 이런 기본 적 개념 보다 연구 내용, 문제를 해결한 경험 위주로 질문이 들어올 것이다)

 

 그 외로 연관되어서 말할 개념들이 많지만 면접에서 너무 많은 개념을 줄줄 이야기하는 것도 안 좋다. 일부 중요한 개념들이 포함되게 이야기를 했다면, 거기서 멈추는 것이 좋다.

 

왜냐면 딱 물어본 질문에 간결하게 대답을 해야, 면접관이 이 사람이 제대로 개념을 파악하고 있구나 라고 생각하고, 하고 싶은 다른 질문을 할 수 있다. 그렇기 때문에 모든 관련 개념을 줄줄 이야기하는 것도 면접에서 좋은 인상을 주진 않는다.  (면접관이 강의를 듣고 싶어하는 건 아니니까..?)

 

 

만약 개념을 더 이야기 하고 싶으면, 아니면 내가 지금 잘 이야기하고 있는 지 확실하지 않다면 아래와 같은 표현을 이요하자.

 

  • 아 제가 혹시 더 자세히 이런 부분에 대해서도 이야기를 해야할까요? 
  • 혹시 원하시는 방향의 답변을 드리고 있나요?

일단, 

 샘플  sample: 한번에 입력되는 데이터 값.

 데이터셋 dataset : 전체 데이터 값 . 세트! 메뉴 할 때.. 세트.

머신러닝

여기서, 

우리는 모델에 샘플을 넣어서, 손실 함수를 줄이는 방향으로 모델의 변수들을 업데이트 해줘야 한다.

이 때, 몇 개의 샘플 손실 값으로 모델 업데이트 해주냐 에 따라서 세가지 방법으로 나뉜다.

 

 

머신러닝

  Batch Gradient Descent Stochastic Gradient Descent Mini-Batch Gradient Descent
Batch numbers 1개 데이터 사이즈와 같다 전체 데이터 사이즈 / 미니 배치 사이즈
Batch size 데이터 사이즈와 같다 한 개 1개 보단 많고 전제 데이터 갯수 보단 적다

 

장 단 점은,

Batch Gradient Descent 의 경우 물론 한번에 계산하는 샘플 수가 많으면 메모리가 부족하겠지. 매번 모든 샘플을 이용하면 손실 함수 값이 안정적 (variance 가 적을 ) 수 있지만 그만큼 로컬 미니멈에 빠질 수 도 있지.

 

 

이런 점은 Stochastic Gradient Descent 에서 반대로 작용할 테고 샘플마다 차이가 크니까 손실 함수 값의 한가지 값으로 수렴하는데 오래 걸리겠지, 그렇지만 batch gradient descent 와 비교해서 메모리는 적게 들고, 로컬 미니멈에 덜 빠지겠지 ..

 

 

 

어쨌든, 이렇게 모든 데이터 셋트를 이용해서 모델을 업데이트하면 이걸 에포크 epoch 1개 지났다, 라고 한다. 이제 데이터를 무작위로 섞어주고, 위의 일을 손실값이 더이상 안 줄어들 때 까지 (또는 주어진 epoch 갯수 만큼) 반복한다.

 

위에 적어둔 면접 질문들과 예상 답안은.. 다음 기회에. 

코드 적용도.. 다음에..

 

 

 

 

 

퇴근길 저작권

댓글


TOP