Quality control (2)/AI

AI - Midterm exam

빈그레 2024. 4. 21. 22:02

1. Tensor는 무엇인지 설명하라

데이터를 표현하는 방법으로서,  Multidimensional array(다차원 배열)을 나타낸다.

vector와 matrix 개념의 일반화라고 할 수 있다.

vector,matrix을 모두 포함하는 구조이나, 일반적으로 3차원 이상의 array를 가질 때에, tensor라 칭한다.





2. Curse of dimensionality에 대해 설명하라

고차원의 데이터를 다룰 때에 나타나는 문제에 대해 지칭하는 용어이다. 

 

실제로 가까웠던 값들이 차원이 올라감에 따라 변수가 많아지면서 멀어지게 되는 문제이다.


차원의 저주에 치명적인 알고리즘인 KNN은 근접한 점들을 이용해서 label을 예측하는 알고리즘이나, 차원이 늘어나고 변수의 개수가 많아지면, 가장 근접한 점들이라 해도 그 거리가 멀어지기 때문에, KNN은 고차원 데이터셋에서 잘 작동하지 않는다.



3. SVM Classifier와 Softmax Classfier의 공통점과 차이점을 설명하라

[공통점]

SVM classfier와 softmax classfier 모두 supervised learnign  모델이며, class를 분류하는 classficaition에 해당한다.그리고 두 classifier모두 정답 score의 값이 가장 높아지게 하는 것을 목표로 한다.

 


[차이점]

SVM classfier의 경우, hinge loss를 이용하여 데이터에 대한 score의 차이를 loss값으로서 활용하고, Softmax classifer는 각 score값에 대해 확률값으로 표현하여 target score의 확률적 표현에 대해  cross-entropy를 활용해 확률 사이의 거리를 loss로서 training을 이어나간다.

즉, SVM은 score 값 자체에 대한 차이를 loss로서 활용하고, softmax는 score값을 확률로서 표현하여 확률적 거리를 loss로서 사용한다.


4. Lasso와 Ridge의 차이를 설명하라  ( update 필요 )
 

linear Regression 모델에 overfitting을 방지하는 regularization 기법을 추가한 모델로 Lasso와 Ridge가 있다.

 

Lasso는 계수의 절댓값을 기준으로 규제를 적용하고, Ridge는 계수의 제곱한 값을 기준으로 규제를 적용한다.

두 모델 모두 계수의 크기를 줄이지만, 

 






5. KNN의 알고리즘을 설명하라

[train]
data set을 train data와 test data를 나누고 train data의 데이터와 라벨을 모두 저장한다.

[predict]
이후, 분류하고자 하는 데이터에 대해, L1,L2등의 distance metric을 활용하여 기존에 저장해두었던 data와의 차이를 구해, 거리가 가까운 것들을 K개 선별한다. 여기서 k는 hyperparameter이다.


[분류]
 K개의 데이터 중 중 다수결을 통해 가장 많이 포함되어있는 class로 label을  prediction한다.


[한계]
저장만 하면 돼서 training시간은 따로 걸리지 않으나, testdata를 traindata와 하나하나 비교하며 거리값을 측정해야해서  data가 많아질수록 prediction 과정이 매우 오래걸린다.

( 또한, KNN에서 K값이 너무 작으면 너무 적은 수의 이웃에만 맞춰져서 overfitting이 일어날 수 있고, K값이 너무 크면 underfitting이 일어날 수 있다. )



6. Gradient descent에서 loss를 감소시키는 원리를 설명하라
 

먼저, 초기 weight값을 random하게 선정하여 loss function에서의 gradient값을 계산한다.

loss functino에서 현재 지점의 gradient 값이 음수이면 양의 방향으로 진행하고, 현재 지점의 gradient 값이 양수이면 음의 방향으로 learning rate에 따라 weight를 update하며  loss function의 최소값을 찾아간다.

 

gradient 값은 backpropagation과정에서 chain rule에 의해 연산되어 weight를 update시킨다.

weight가 update되는 값이 아주 작은 값으로 수렴할때까지 iteration을 반복하며 loss를 줄여나간다.

 

 

 


7. Neural Network란 무엇인가

 

인간의 뇌의 뉴런 구조에서 아이디어를 얻은 딥러닝 모델로, input layer, hidden layer, output layer로 구성되어있다.

Neural Network는 보통 여러 hidden layer를 가질 수 있으며, 각 계층은 여러 뉴런들로 이루어져있다.

 

입력과 weigh를 곱하는 linear한 함수에 activation function을 거쳐  다음 뉴런에 전달되고, 이렇게 여러 layer를 가질 수 있다.

 

다음 layer에 대한 weight를 곱하기 전에 activation function을 곱해서 비선형성을 갖게 해주며 model의 표현력을 높여줄 수 있다.

 

뇌에서 다음 뉴런으로 신호를 전달할지 여부에 대한 판단을 해주는 역할을 NN에서는 activation function이 한다.



8. Gradient Descent를 이용하여 학습할 때, local minima를 피하여 효율적으로 학습할 수 있는 방법을 제시하라

 

Momentum

weight를 update할 때에 loss function의 현재 지점의 미분값의 반대방향으로 가는 것에 추가적으로, 원래 가던 방향에 대한 관성을 더해주는 것이다. 원래 가던 방향으로 관성을 가졌을 때, local minima에서 빠져나올 가능성이 있다.

 

NAG (Nesterov Accelerated Gradient)

weight를 update할 때에, 원래 가던 방향으로의 관성을 추가해주고, 본래 현재 위치에서의 미분값의 반대방향으로 더 진행하였으나, 현재 위치가 아닌, 한수 뒤에서의 미분값을 반영하여 극점 주변에서 진동을 덜 하게 한다. 

이를 통해 관성을 유지하면서 local minimum에서 빠져오되, 극점 주위에서의 진동은 줄일 수 있게 된다.

 

Adagrad

weight가 update된 양을 제곱해서 계속 더하고, 이를 weight updtae에 반영하여 지금까지 update가 많이 된 것에 대해서는 변화를 적게 주고, update가 많이 되지 않은 것에 대해서는 변화를 크게 준다. sadle point에서 빠져나오게 해준다.

 

RMSprob

Adagrad를 통해 update가 많이 된 것에 대해 변화율을 줄이다보면 변화율이 0에 수렴해버릴 수 있으므로, 전체 update에 대해 동일한 가중치로 더하는 것이 아니라, 최근의 step을 더 많이 반영하며 weight를 update시키는 방법이다.

 

ADAM

Momentum과 RMSprop을 합친 것으로, 관성을 반영하고, update된 weight들의 값을 누적하여 반영하되, 최근의 step에해 더 큰 비중을 두도록 하였다. 따라서 sadle point를 빠져나가고 local minimum을 빠져나갈 수 있도록 하였다.

 

// momentum으로 local minimum 빠져나가고, RMSprob으로 sadle point 빠져나가구,, 물론 두개다 작용가능~~암튼,,

 

 

9. Dropout의 역할을 설명하라

 

overfitting이 방지하기 위해, 학습 과정에서 랜덤하게 일부 뉴런을 학습에 참여하지 못하도록 하여, 특정 뉴런에 과하게 의존하는 것을 막는다. dropout을 통해 뉴런들의 다양한 조합으로 학습을 하게 되어 더 좋은 성능을 낼 수 있도록 한다. 

 


10. 편미분 하는 법..? 이걸 왜 물어봄

Gradient는 거꾸로 세모로 연산하고, 그 결과값을 각 변수에 대한 편미분값으로 이루어진 vector로 표현된다.



11. 아래 코드를 사용해야하는 이유를 설명하라

전체 dataset에 대해서 training set과 test set으로 나누기 위해서 split함수를 사용한다. 매개변수로 추가된 stratify는 분할된 데이터가 원본 데이터셋의 비율을 유지하도록 하는 것이다. 데이터를 분할할 때, 샘플링편향이 일어나지 않도록 해당 매개변수를 추가해주는 것이 중요하다.

전체 데이터셋을 모두 training 에 사용하게 되면 overfitting이 일어날 수 있으므로  데이터를 분할하여 training단계에서는 train data만 사용하여 weight를 update하고, test 단계에서 test data를 사용하여 training된 model의 evaluation을 진행하며 hyperparameter을 조정하는 단계를 가진다.





12. 아래 코드를 통해 knn을 만들었더니 성능이 좋지 않았다. 개선 방법을 제시하고 설명하라.

 


split에서 train과 test로 데이터를 나눌 때, class의 비율을 균등히 나누지 못하는 샘플링 편향이 발생했을 수 있으므로,,엥 이게 아니네.,? stratify는 분할된 데이터가 원본 데이터셋의 비율을 유지하도록 하는 것이다.

KNeigobresClassfier함수로 객체를 만들어서 training 시켰을 때, K값은 default로 5의 값이 들어가나, model에 따라 최적의 K값이 5가 아닐 수 있다. 따라서 여러 K값으로 학습시켜보며 accuracy를 비교해보고 최적의 k값으로 선정해주어야한다.


5-fold cross validation과 같은 방식을 사용하여 여러 k값에 대해 accuracy를 비교해보고 최적의 k값을 찾을 수 있다.



13. Regression과 Classification의 loss function 차이

[Linear Regression]
linear Regression의 경우,  ground truth값과 estimation한 값의 차이의 제곱의 평균을 cost funciton으로 사용한다. 이 cost function 값을 가장 최소로 만들어주는 weight값을 찾도록 한다. 제곱에 대한 2차식이기 때문에 convex형태로 존재하여 미분이 0이 되는 값에서 언제나 최소값을 가진다.



[Binary Classification / Logistic Regression ]
** Logistic Regression : classification 모델을 확률적 관점에서 접근하여  training하는 모델이다.
sigmoid함수를 사용하여 예측값에 대해 0과 1사이의 확률값으로서 바꾸어주어 binary classification으로서 변환해주고, sigmoid를 거쳐 나온 확률로서의 예측값과, 확률로서의 참값에 대해  cross entropy를 loss function으로 사용한다.
L(yi',yi) = yi * log(yi') + (1-yi)log(1-yi')
**cross entorpy : 서로 다른 확률을 가진 것 사이의 거리
-> 확률로서의 예측값이 확률로서의 참값과 가까울수록 함수값이 작아지므로 loss function으로 사용될 수 있음



14. hyperparameter 종류
: Distance Metric (L1 or L2) , KNN에서의 K값 , Optimizer, Learning rate



15. Validation의 역할 (ex. 5-fold cross-validation -> hyperparameter update ) 
: 모델의 성능을 평가하고, hyperparameter를 조정하는 등, 모델 학습에 간접적으로 관여한다.
( weight update는 train 단계에서만 직접적으로 이루어짐. )

 

5-fold cross validation

: training과 validation에 쓸 데이터에 대해서 5개로 나누어 1개씩 validation set으로 지정한 경우에 대해 accuracy를 측정한다. 이러한 방식으로 각 k값의 경우에 대해 5fold cross validation을 진행하고, accuray의 평균값을 비교하여, 가장 높은 accuracy 평균값을 가진 최적의 hyperparameter를 찾는다.





16 Binary Classification이 Linear Regression으로 구해지는 과정

*** Linear Regression : 데이터들의 상관관계로 값을 예측하는 것


: weighted sum으로 나온 score에 대해  sigmoid 함수를 거치게 하여 결과값이 0에서 1사이 값으로 나오게 함으로써, 예측값을 확률로 만들어주면서 binary classification으로 전환될 수 있다.

sigmoid : linear regression 결과값을 확률로서 변환시켜주는 함수

logistic regression model로서 binary classfication에 대해 score를 확률로서 나타내고, cross-entropy를 통해 확률간의 거리를 측정하는 loss function을 정의할 수 있다.




17. softmax classifier에 대해 설명하세요

score에 대해 지수함수를 취해 모든 값에 대해 양수로 만들어 준 뒤, 모든 값의 합으로 나누어주어 normalization을 해줌으로써 각 값을 총 합이 1이 되는 확률값으로 나타낸다.이후 정답인 확률분포 ex [1,0.0]과의 cross-entropy 연산을 통해 확률 간의 차이를 loss로 표현하여 loss값을 최소화하는 방향으로 학습을 해나간다.

(logistic regression을 일반화한 것)

 


18.KNN과 비교하여  SVM,SOFTMAX가 가지는 장점을 말해보슈.. ( 교수님이 언급한건데,,,, general 하지 못한듯,, pass)

KNN은 test data에 대해서 모든 training set과 값을 비교하여 그 차이를 계산해보아야 하므로, data가 많아질수록 매 test머마다  걸리는 시간이 아주 오래 걸리는데, svm과 softmax의 경우 training을 통해 weight를 구해놓으면, 이후부터는 test에 knn만큼 오랜 시간을 소비하지 않아도 된다. 

 

 

 

19. data의 preprocessing

zero centered -> normalization (표준편차로 나누기)

 

 

 

20.Learnign rate가 너무 클 때와 너무 작을 때의 특징

 

Learning rate가 너무 크면 loss function에서 값이 발산하여 학습이 되지 않을 수 있다. 

Learning rate가 너무 작으면 학습이 너무 오래걸리고, local minima에 빠질 수 있다.

 

 

21. Stocahstic Gradient Descent 중 Minibatch를 이용하는 알고리즘을 설명하세요

(batch size=minibatch size)

NN에서는 전체 데이터셋에 대해 한번에 처리하는 것이 매우 어렵다. 따라서 dataset을 subset으로 나누어  weight를 update한다. 이 때의 subset의 size가 minibatch size이다. 

 

전체 data set에서 batch size만큼의 데이터를 가져와서 forward로 예측값을 구하고, loss를 구한다. 이후 backpropagation에서 loss 함수에서 gradient값을 구해 weight를 update 시킨다.

 

minibatch size만큼의 다음 subset들에 대해서 동일한 과정으로 weight 를 update 시키며 한 epoch에 대한 training 과정을 거친다. 1epoch동안 iteration은 전체 dataset의 개수를 batch size로 나눈 것 만큼 존재한다. 즉, weight가 update되는 횟수와 동일하다. 

 

 

 

22. batch size가 너무 클 때와 너무 작을 때

 

batch size가 크면 전체를 대변할 가능성이 생겨 좋으나, memory에 한계가 존재한다.

하지만, batch size가 너무 작으면 너무 국소적인 범위에 대한 정보로 update가 진행된다는 단점이 있다.

 

 

23. activation 의 역할

 

Activation function을 넣어줌으로써 모델에 비선형성을 추가하여 모델의 표현력을 향상시켜준다.

만약 activation function이 없다면, 그저 linear한 weight들의 곱이 되어 layer를 여러개 쌓는 것이 무의미해진다.