머신 러닝, 딥 러닝 직군으로 인터뷰를 볼 때, 인터뷰 질문으로 나올 간단한 질문들을 준비해보았다. 기본 개념이어도 갑자기 물어보면 당황해서 말을 못할 수도 있고, 정말 한 두 줄로 깔끔하게 설명하지 못할 수도 있다. 그러므로 짧게 어떻게 대답할 지 준비해두자.
예상 질문 리스트 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 갯수 만큼) 반복한다.
위에 적어둔 면접 질문들과 예상 답안은.. 다음 기회에.
코드 적용도.. 다음에..
'info : 유용한 정보, 체험기' 카테고리의 다른 글
딥 러닝 GNN, Message Passing Neural Network 메세지 패싱 뉴럴 네트워크 (0) | 2022.11.02 |
---|---|
여행 경비 정산 어플 추천, 경비 정리에 편한 어플 추천 + 미국 여행 필수 어플 추천, 여행 준비물 (0) | 2022.10.30 |
python 머신 러닝, 딥 러닝 인터뷰 질문 단골 loss function, 손실함수 (0) | 2022.10.27 |
블로그 개발, 블로그에 코드 넣기 : 깃 헙 지스트, Gist GitHub (0) | 2022.10.25 |
맥/윈도우/리눅스 파이썬 python 연습 환경 설정 (visual studio git hub, anaconda) (0) | 2022.10.24 |
댓글