Skip to content

Instantly share code, notes, and snippets.

@znxkznxk1030
Last active November 15, 2024 16:38
Show Gist options
  • Save znxkznxk1030/d8c24baf8ced935fa7a83239db9ada94 to your computer and use it in GitHub Desktop.
Save znxkznxk1030/d8c24baf8ced935fa7a83239db9ada94 to your computer and use it in GitHub Desktop.

면접질문 리스트

ML/DL

Frequentist 와 Bayesian의 차이는 무엇인가?

 둘 다 통계적 추론에서 사용하는 방법론 입니다.
 빈도적 추론은 데이터로부터 모수, 즉 평균이나 분산같은 확률분포의 특성을 추측하는 것입니다.
 이때 모수는 고정된 상수라고 가정합니다.
 반면에 베이즈 추론에서는 모수도 확률변수라고 보고 모수에 대한 신뢰성을 분석하는 방법입니다.
 예를들어, 의사가 90%확률로 암이라는 진단을 내렸다고 한다면.
 빈도적 추론에서는 100명중 90명이 걸릴것으로 추론하는 것이고
 베이즈 추론에서는 암이라고 판단한 의사의 신뢰도는 90%라고 추론하는 것입니다.

Frequentist 와 Bayesian의 장점은 무엇인가?

표본 데이터가 많다면 대수의 법칙에 의해 빈도적 추론의 신뢰성이 높지만, 데이터가 적거나 불확실하다면 신뢰가 떨어집니다.
반면 베이즈 추론은 확률 모델이 명확하다면 적은 데이터로도 신뢰도가 높습니다.
하지만 사전지식에 대한 모델링이 어렵고, 사전지식 모델링에 따른 사후확률 결과가 크게 달라질 수 있습니다.

차원의 저주란?

차원이 증가하게 되면 개별 차원 내 학습할 데이터의 수가 적어지는 현상이 발생하는 것을 말합니다.
인공지능에서는 차원은 곧 모델의 feature를 의미하고, 이 feature의 개수가 많아진다면,
해당 feature를 학습해야할 데이터가 부족해져 모델의 성능이 저하되는 현상을 말합니다.
이러한 현상을 막기 위해 주성분분석(PCA)와 같은 차원 축소 기법을 적용해 볼 수 있습니다.

Train, Valid, Test를 나누는 이유는 무엇인가?

학습에서 데이터는 관측여부에 학습 데이터와 테스트 데이터로 나뉩니다.
테스트 데이터는 실제로 레이블링 되지 않은 현실에서의 데이터고 이를 잘 예측하는 것이 일반화의 목적입니다.
Train Set은 레이블링이된 데이터로 모델을 학습하기 위해 사용합니다.
Train Set에서 학습된 모델을 평가하기위해서 레이블링된 데이터를 일부 빼놓는데,
이를 Valid Set이라고 합니다.

Cross Validation이란?

학습데이터 셋은 레이블링 된 데이터이고 이러한 데이터의 양은 한정적입니다.
이러한 한정적이고 소중한 데이터에서 다량으로 빼서 Valid Set으로 사용한다면,
학습성능이 그만큼 떨어 질수 밖에 없습니다.
그래서 이를 보완하기 위해, Train Set을 구간별로 나누고,
한 집합만 Valid Set으로 두고 나머지를 학습시켜서 검증하고 나서, 그 다음 집합을 또 Valid Set으로 두고를 반복하는 것이 Cross Validation 방법입니다.

이렇게 하는 방법을 k-fold validation이라고 하고,
한집합에 한개의 데이터만 넣는 k-fold validation은 LOOCV (Leave One-Out Cross Validation)이라고 합니다.

(Super-, Unsuper-, Semi-Super) vised learning이란 무엇인가?

  • Supervised Learning / Unsupervised Learning / Semi-Supervised Learning
지도학습은 레이블링된 학습 데이터를 가지고 모델의 파라미터를 학습시켜서 모델의 성능을 최적화 시키는 방법이고,
대부분의 머신러닝 모델은 여기에 속합니다.
비지도 학습은 학습데이터 없이 현실의 데이터를 가지고 모델을 학습시키는 방법으로
k-mean같은 군집화, 차원축소 등이 여기에 속합니다.

준지도 학습은 레이블되지 않은 데이터를 특정 규칙으로 기계가 레이블링을 하고, 이를 스스로 학습하는 자기지도 학습방법입니다. 
지도학습에 비해 효율은 떨어지지만, 인터넷에있는 레이블링 되지 않은 대규모의 데이터를 학습 가능하다는 점에서 이점이 있고,
최근에는 BERT가 이러한 방법론을 이용해서 대규모 언어모델을 학습시키는 것을 시작으로 많은 모델들이 자기지도학습을 통해 학습하고 있습니다.

이 외에도 주변 환경을 통해 피드백을 받아서 학습하는 강화학습이 있습니다.

Decision Theory란?

불확실한 상황에서 최선의 결정을 내리기 위한 이론으로.
이 이론을 이용한 머신러닝 모델인 의사결정나무가 있습니다.
이는 Feature를 여러개의 영역으로 나누고 계층화하여 Tree 형태로 만들어서
주어진 입력에 대한 분류를 수행합니다.

장점은 기존의 선형모델들에 비해 왜 특징을 나누었는지에 대한 해석이 쉽다는 것이고
성능은 떨어지지만 Bagging과 Boosting과 같은 앙상블 기법을 이용해서
성능을 높이는 것이 연구되어 왔습니다.

Receiver Operating Characteristic Curve란 무엇인가?

혼동행렬을 이용한 모델 성능 평가지표로,
TPR (True Positive Rate)와 FPR(False Posivie Rate)에 대한 비율을 그린 그래프를 뜻합니다.
해당 커브아래의 영역의 넓이는 AUC(Area Under Curve)라고 불리며, AUC가 넓을 수록 좋은 성능을 가진 모델이라고 볼수 있습니다.
좋은 모델을 정하고 나면 TPR검출과 FPR검출중 중요도에 따라 Thredhold값을 정합니다.

Precision Recall에 대해서 설명해보라

Precision은 참이라고 예측한 것에 대해 실제 참인 비율이고,
Recall은 실제 참인 것들에 대해 참이라고 예측한 것에 대한 비율입니다.

Precision과 Recall은 Trade-off관계에 있습니다.
예를 들어 전부다 참이라고 예측한다면 Recall은 항상 1이지만,
Precision은 매우 저조할 것입니다.

Precision Recall Curve란 무엇인가?

앞서 말씀드린 바와 같이 Precision과 Recall은 Trade-Off관계에 있어서
이 둘의 비율을 적절히 조율할 필요가 있습니다.

이때 사용되는 것이 Precision Recall Curve입니다.
ROC와 마찬가지로 아래 영역의 넓이가 클수록 좋은 모델이고,
ROC에 비해 양성 클래스에 집중해야하는 불균형 데이터에 유용합니다.

Precision과 Recall 사이를 측정하는 다른 방법으로는
F-measure가 있고
이는 둘 사이의 조화평균을 구해서 어느 한쪽으로 치우져 지지 않게 조율해줍니다.
흔히 둘의 비율을 1로 두는 F1-measure가 유명합니다.

Type 1 Error 와 Type 2 Error는?

Type 1 Error는 귀무가설이 참인데 기각하는 오류입니다.
Type 2 Error는 귀무가설이 거짓인데 기각하지않는 오류입니다.

Entropy란 무엇인가?

불확실성이나 무질서를 수치적으로 표현한 개념입니다.
예를들어 균등분포의 경우 모든 경우가 똑같은 확률변수를 가지게 되니 어떤 것을 선택할지에 대한 불확실성이 가장 높습니다.
반면에 한가지의 경우에 확률이 높게 설정되어 있는 경우에 사건의 결과가 대부분 그 경우로 선택하게 되니 불확실성이 줄어들게 됩니다.
수학적으로 이를 각 사건에 대해 발생 확률과 이를 역수시키고 로그화 시킨 것을 곱한고 이를 전부 합하여 표현하였습니다.
이렇게 하면 균등분포에서 가장 높은 값이 나오고, 분포가 더 볼록해질수록 값이 낮아지게 됩니다.

Cross-Entropy란 무엇인가?

두 확률분포가 있을 때, 두 확률분포의 불확실성의 차이를 측정할 때 사용합니다.
두 확률분포가 같은 분포를 가지게 될 때, 이 Cross-Entropy는 최솟값을 가지게 됩니다.

이러한 성질을 이용해서 목표하는 분포와 지금 적용하는 분포의 차이를 수치로 표현 가능하게 됩니다.

사용의 예로는,
분류문제에서 베르누이 분포를 따르는 목표분포에 대한 손실 함수로 사용가능하고
결정론적인 결과가 나오지 않는 생성모델에서는 확률분포로 결과값이 나오게 되는데,
이때 이 결과 값을 목표 분포와의 차이를 구해서 손실함수로 사용할 수 있습니다.

Cross-Entropy loss 란 무엇인가?

분류문제에서 사용되는 Cross-Entropy의 성질을 이용한 손실함수를 이야기합니다.

이때 목표 분포는 one-hot인코딩된 벡터를 사용하고, softmax와 같은 분류모델이 구한 해당 class을 예측할 확률을 cross-entropy 를 이용해 손실을 구하는 함수입니다.

KL-Divergence란 무엇인가?

쿨백-라이블러 발산은 앞선 Cross-Entopy에서 파생된 개념으로,
Cross Entropy는 두 분포의 차이를 구하기 위해 목표분포의 실제 Entropy값도 포함됩니다.
KL-Divergence에서는 목표분포와 예측분포의 차이만 구하는데서 차이점이 있습니다.
이를 이용해 예측분포가 목표분포에 더 가깝게 갈수 있도록 하는 최적화에 사용됩니다.

제가 아는것으로는 VAE(Variational AutoEncoder)에서 정규화항에 사용되어서 최적화를 하고있습니다.

Mutual Information이란 무엇인가?

두 확률변수간의 의존성을 의믜합니다.
Mutual Infomation이 크다면 두 확률변수간 의존성이 크다는 것을 의미합니다.

예를들어, 밖에 우산을 가지고 사람들의 확률변수와 비가 올 확률변수사이의 의존성이 크므로,
Mutual Information이 크다고 볼 수 있습니다.

Generative Model이란 무엇인가?

데이터를 생성하는 모델로 분류모델과는 다르게 결과값이 결정론적이지 않다는 특징이 있습니다.
그래서 생성모델은 단순히 예측하는 것이 아니라 생성하는 규칙을 학습하게 됩니다.

대표적으로 텍스트를 생성하는 GPT모델과 이미지를 생성하는 GANs모델이 있습니다

Discriminative Model이란 무엇인가?

주어진 데이터를 특정 클래스로 분류하는 모델을 말합니다.
조건부 확률 모델링을 통해서 이루저이면

대표적으로는 이진 분류를 하는 로지스틱 회귀,이를 확장한 softmax,
SVM, Decision Tree등이 있습니다.

Discriminator function이란 무엇인가?

GAN모델에서 사용하는 함수로,
판별자의 역할을 하는 함수입니다.

예를들어 GAN에서 생성자가 데이터를 생성하면
Discriminator function은 이 데이터의 진위 여부 혹은 분류를 합니다.
이에 따라 피드백을 주어 모델을 학습하도록 합니다.

Overfitting 이란?

훈련데이터에서는 성능이 좋지만 테스트 데이터에서는 성능이 떨어지는 현상을 말합니다.
주요 요인으로는 복잡성이 높은 모델은 사용한 경우가 있고 그 외에도 학습데이터가 부족하너가 훈련 횟수(epoch)가 너무 과다한 경우가 있을 수 있습니다.

이를 방지하기 위해, 정규화를 주어 방지할수 있습니다.

Underfitting이란?

Underfitting은 학습데이터에도 성능이 떨어지는 현상을 말합니다.

훈련모델이 너무 단순하거나 정규화의 선호도가 너무 큰 경우 발생할 수 있습니다.

Overfitting과 Underfitting은 어떤 문제가 있는가?

둘다 동일하게 일반화된 테스트 데이터에서 성능이 떨어집니다.

Overfitting과 Underfitting을 해결하는 방법은?

과적합을 방지하기 위해서는
정규화를 도입해볼수 있고, 조기종료,교차검증등을 고려해 볼 수 있습니다.

과소적합을 방지하기 위해서는 모델설계를 다시 해볼수 있고, 정규화의 선호도를 줄여볼 수 있습니다.

Regularization이란?

기계학습에서 과적합을 방지하고 일반화 능력을 높이기 위한 방법입니다.
일반적으로 모델이 학습데이터에 지나치게 잘 맞춰져 성능이 떨어지지 않도록합니다.

대표적인 기법으로는 L1, L2정규화가 있습니다.

Ridge / Lasso 정규화란?

L1정규화는 Lasso 정규화라고도 부르고 모델의 가중치에 절대값 제약을 추가하는 것입니다.
특징은 특정 가중치를 0으로 만들 수 있어서 
불필요한 특징을 제거하는데 도움이 됨.

L2정규화는 Ridge정규화라고도 부르며 모델의 가중치의 제곱 제약을 추가하는 것.
특정 가중치가 지나치게 커지지 않도록 함. 또한 특징을 0으로 가깝게 만듦.

Activation function이란 무엇인가?

신경망내의 노드에서 출력을 결정하는 함수입니다.
신경망이 고전적인 선형모델에 비해 높은 성능을 내는 이유로 비선형 데이터를 분류하는데 높은 성능을 보이기 때문이라고 생각합니다.
이때 비선형 패턴을 학습 하기위해서는 비선형성을 가지는 활성화 함수를 포함해야합니다.
신경망이 아무리 복잡해지더라도 비선형의 활성함수가 없다면 선형모델에 불과하기 때문입니다.

3가지 Activation function type?

활성화 함수의 주요한 3가지 타입으로는
Sigmoid, Tanh, ReLU가 있습니다.

Sigmoid는 가장 기본적인 함수로 0과 1사이의 값을 출력합니다.
하지만 입력값이 커질수록 기울기 소실 문제가 있습니다.

Tanh함수는 Sigmoid의 발전된 함수로 출력값이 -1에서 1사이로 출력합니다.
중심이 0이 되어 학습에 더 효율적이지만,
여전히 기울기 소실 문제가 남아있습니다.

ReLU함수는 기존의 exponential이 아닌 선형 함수로 입력값이 커지더라도 기울기 소실문제가 없어
많이 사용하고 있습니다.
하지만 기본 ReLU함수에서는 입력값이 음수가되면 값이 무조건 0이되므로 죽은뉴런문제가 발생할수 있습니다.

CNN에 대해서 설명해보라

CNN은 수학에서의 합성곱 연산을 기반으로 만들어진 신경망입니다.
주요한 특징은 입력이미지를 커널 또는 필터라고 불리는 것을 이용하여 처음부터 끝까지 훝으면서 특성맵을 생성하는 것이 특징입니다.

구조적인 특징으로 핵심적인 합성곱층과 차원을 줄여주는 Pooling계층 마지막으로 남은 파라미터들로 추출된 특징으로 분류나 회귀 문제를 푸는 Fully Connected Layer이 있습니다.

주요한 특징으로는 전체의 데이터가 커널을 공유하게 되므로 전체 영역에 파라미터를 공유하는 것과
커널을 통해 특징들을 추출하는 것이 있습니다.
또 풀링층을 이용해서 작은 변화에도 특징을 유지하는 불변성을 갖도록 합니다.

이러한 이점으로 이미지 분석과 객체 탐지에 뛰어난 능력을 보입니다.

RNN에 대해서 설명해보라

CNN이 뛰어난 능력을 같고있지만 입력데이터의 크기가 주어져야한다는 문제점이 존재했습니다.
RNN은 고정되지 않은 입력 시퀀스에 대해 학습되도록 설계된 신경망입니다.

순차적으로 들어오는 입력데이터에 대해 출력데이터를 생성하고 이를 다시 입력데이터와 함께 사용하는 순환구조를 가지고 있는게 특징입니다.
이러한 전의 출력데이터를 기억하는 것을 hidden state라고 하고 이를 기반으로 이전 시점의 정보를 계속 반영할 수 있습니다.

하지만 이전 데이터를 기억하는 과정에서 시퀀스가 길어지게 될경우 기울기 소실문제가 발생할 수 있습니다.
이를 보완하기위해 LSTM는 cell state를 도입해서 중요한 정보는 더 오래 기억하고,불필요한 정보는 잊도록 하고 있습니다.
또는 Gate를 이용한 더 간단한 구조인 GRU가 있습니다.

이러한 장점들로 자연어 처리나 음성인식, 주가예측과 같은 시계열 입력 시퀀스에 대해 높은 성능을 가지고 있습니다.

하지만 자연어 처리에 있어서 여전히 hidden state관리에 대한 문제가 남아있어서 긴 시퀀스에 대해서는 잘 인식하지 못하는 케이스가 있었고,
이러한 단점을 때문에 이후나온 Attention 기반의 Transformer로 많이 대체되었습니다..

Newton's method란 무엇인가?

비선형 방정식에서 해를 근사적으로 구하는 방법.
근을 찾기 위해 접선을 이용해서 반복적으로 근사하는 방법.
매우 빠르게 수렴할 수 있다는 장점이 있다.

하지만 global optimum는 기울기가 0인 지점이고 이럴 찾는 것이 최적화과정인데,
Newton's method를 이용해서 이를 찾으려면 도함수가 2차 미분이 가능해야한다는 제약이 있음.

하지만 신경망구조같은 복잡한 함수에서 2차 도함수를 찾는것은 어렵고 계산이 많이 필요함.

Gradient Descent란 무엇인가?

기울기만을 이용해서 기울기가 0이 되는 지점을 찾는 최적화 방법이다.
기울기 방향으로 기울기 크기만큼 이동하는 특징이 있다.

1차 도함수만 가지고 계산이 가능하다는 장점이 있다.

단점으로는 기울기가 너무 작으면 기울기가 소실될 수 있고, 
초기값을 잘못 잡으면 local optimun에 빠질수 있다.

Stochastic Gradient Descent란 무엇인가?

확률적 경사하강이란 경사 하강법의 변형으로 대규모 데이터 셋에서 효율적으로 최적화 하기 위해 사용하는 알고리즘,
각 레이어에서 하나의 샘플 또는 미니 배치에 대해서 기울기를 계산해서 가중치를 업데이트한다.

이로인해 빠르게 업데이트가 가능하고 불규칙하게 업데이트를 하도록합니다. (Local optimun를 피할 수 있음)
하지만 변동성이 생기므로 수렴이 불안정 할 수 있고 최적화가 느리게 진행됩니다.

Local optimum으로 빠지는데 성능이 좋은 이유는 무엇인가?

보편적으로는 Global Optimum을 찾는 것이 성능이 더 좋지만
Deep Learning의 경우 일반화에서 성능이 더 좋은 경우도 있음.

그리고 Local Optimum을 찾는 것이 더 빠르므로 메모리및 계산 자원을 절약하는데에도 도움이 된다.

Internal Covariance Shift 란 무엇인가?

신경망 훈련과정에서 각 층에 입력 데이터 분포가 학습도중에 계속 변화하는 현상.
입력되는 데이터의 평균과 분산이 학습과정에서 계속 바뀌게 되어, 모델의 안정성을 저하시키는 문제가 발생

Batch Normalization은 무엇이고 왜 하는가?

Internal Covariance Shift를 방지하기 위해서 하는 것으로
입력 데이터의 분산을 평균 0, 분산 1로 정규화 하여 각 층에 전달되는 데이터 분포가 일정하게 유지되도록 한다.

Backpropagation이란 무엇인가?

역전파란 신경망 학습중에 모델이 출력한 값과 정답간의 오차를 담은 오차항만큼의 차이를 역으로 전달하면서 가중치를 최적화 하는 알고리즘을 말합니다.
이는 신경망 모델의 구조는 다중 함수라고 볼수 있습니다.
여기서 각 층에서 가중치 별로 오차항을 편미분한 기울기는 각 가중치가 이 오차항에 얼마만큼 기여했는지를 알 수 있고,
여기에 학습률을 곱하여 가중치를 업데이트 합니다.

Optimizer의 종류와 차이에 대해서 아는가?

신경망에서 Optimizer는 크게 두가지 Gradient Decent와 Momentum 방식으로 알고있습니다.

Gradient Decent는 기울기를 이용해 파라미터를 업데이트하여 Global Optimum을 찾는 방법이고,
여기서 Local Optimum에 빠질수 있는 문제가 있습니다.

이 문제를 해결하기 위해서 Momentum은 기울기로 일정 비율로 누적하여 모멭텀을 부여하여 Local Optimum에 빠지지 않도록 도와줍니다.

Ensemble이란?

앙상블이랑 여러개의 모델을 결합하여 하나의 강렬한 모델을 만드는 방법.
단일 모델의 한계를 극복하기 위해서 사용, 편차나 분산을 줄여줄 수 있습니다.

하지만 계산 비용이 늘고, 해석 가능성을 낮추는 단점이 있습니다.

Stacking Ensemble이란?

각 모델의 예측을 새로운 특징으로 사용하여 메타 모델을 학습시키는 방법

Bagging이란?

Bootstrap Aggregating의 약자로, 학습 데이터에서 일부 추출된 표본으로 학습을 하여 모델을 생성하는 것을 반복해서 다수의 모델을 생성하는 것을 말합니다.
최종적으로 여기서 생성된 모델들의 예측을 다수결로 하여 정하도록 합니다.

독립적으로 실행하기 때문에 병렬로 처리가 가능합니다.
Bagging은 분산을 줄여주는 효과가 있습니다.

대표적으로 표본을 무작위로 뽑는 Random Forest모델이 있습니다.

DT의 장점인 해석 가능성이 떨어지게 됨.

Bootstrapping이란?

Boot Strapping이랑 영어 관용구에서 나온 말로, 내가 스스로 자립한다는 의미입니다.
CS에서는 다양한 곳에서 사용하고 있는데, 
Bagging에서는 학습데이터를 외부에서 가져오지 않고 내부에서 스스로 구성해서 추출(복원추출)한다는 의미를 갖고 있습니다.

Boosting이란?

Weak Learner를 순차적으로 결합하여 강한 모델을 만드는 앙상블 기법.
Weak Learner는 개별적으로는 성능이 낮지만 Boosting을 통해 이전 오류를 보완하고 점진적으로 성능을 향상 시킨다.

결과적으로 편차를 줄여주는 역할을 한다.

Bootstrap과 달리 순차적으로 실행해야하기 때문에 병렬적으로 실행을 할 수 없다.

대표적으로 AdaBoost가 있다.

Bagging 과 Boosting의 차이는?

Bagging은 분산을 줄이고 Boosting은 편향을 줄이기 위해 사용한다.
학습방법으로는 Bagging은 병렬화가 가능하고 Boosting은 그렇지 못하다.
결합방식은 Bagging은 다수결, Boosting은 가중합으로 한다.

AdaBoost / Logit Boost / Gradient Boost

AdaBoost -  잘못 분류된 데이터에 가중치를 부여하며 순차적으로 학습
Logit Boost - 로지스틱 회귀를 기반으로 설계
Gradient Boosting - 잔여 오차(residual error)를 줄이는 방식으로 설계

Support Vector Machine이란 무엇인가?

데이터를 분류하거나 회귀를 수행할때 사용하는 모델로 결정 경계를 찾아서 데이터 포인트 간의 마진을 최대화 하는 것이 목표입니다.
복잡한 다차원 데이터에도 효과가 좋고,
커널트릭을 이용해서 비선형 데이터에도 적용이 가능하다는 특징이 있습니다.

적은 데이터로도 효과적인 학습이 가능하다는 장점이 있고, 데이터간 분리가 확실해진다는 점도 있습니다.
하지만 대규모 데이터에서 학습속도가 적어지고 해석이 어렵다는 문제가 있습니다.

Margin을 최대화하면 어떤 장점이 있는가?

마진을 최대화 하면 일반화 성능이 좋아져서 오류를 줄이고 과적합을 방지 할 수 있습니다.

나이브 베이즈 분류기란?

베이즈 정리를 기반으로한 확률적 분류기로
사전확률과 조건부 확률을 이용하여 사후 확률을 구해서 가장 높은 클래스로 분류하는 모델입니다.

빠르고 간단하게 적용할수 있다는 장점이 있지만,
각 특성이 독립적이여야한다는 제약이 있는 단점이 있습니다.

스팸메일 분류기 같은 자연어 분류나 추천 시스템에서 좋은 성능을 보입니다

Log Sum EXP 란??

통산 exp의 값은 지수적을 증가하기 때문에 오버플로우나 언더플로우가 생길 수 있습니다.
이때 log를 취해줌으로써 곱셈문제를 덧셈문제로 변형해서 풀 수 있습니다.

softmax함수나 MLE에서 사용합니다.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment