본문 바로가기
딥러닝&머신러닝

인공지능 대학원 및 스타트업 면접 예상 질문

by David.Ho 2023. 12. 16.
728x90
반응형

H대 대학원

로지스틱 회귀란? 언제 로지스틱 회귀를 사용할 수 있을까?
로지스틱 회귀(Logistic Regression)는 이름은 회귀라고 붙어있지만, 실제로는 이진 분류(Binary Classification)를 위한 지도 학습 알고리즘입니다. 로지스틱 회귀는 선형 회귀와는 다르게 이진 분류를 위한 확률을 추정하는 모델로 사용됩니다.

로지스틱 회귀는 입력 특성의 가중치 합을 로지스틱 함수 또는 시그모이드 함수를 통과시켜 0과 1 사이의 값으로 변환하여 해당 클래스에 속할 확률을 추정합니다. 이를 통해 데이터를 분류합니다.

로지스틱 회귀는 다음과 같은 경우에 사용될 수 있습니다:
이진 분류 문제:
 두 개의 클래스 중 하나를 예측하는 문제에서 사용됩니다. 예를 들어, 스팸 메일 여부, 질병 발병 여부 등을 예측할 때 활용됩니다.

확률 추정:
 각 클래스에 속할 확률을 추정할 수 있어, 이를 기반으로 임계값을 정하여 원하는 클래스로 분류할 수 있습니다.

간단하고 빠른 모델:
 선형 모델이므로 계산이 간단하며, 작은 데이터셋이나 선형 결정 경계가 잘 맞는 경우에 효과적으로 사용됩니다.

로지스틱 회귀는 선형 분류기로서, 선형적으로 분리 가능한 문제에 잘 작동하며, 해석이 용이하고 간단한 모델입니다. 하지만 비선형적인 문제나 복잡한 패턴을 가진 데이터에는 제한적일 수 있습니다.

답변: 로지스틱회귀란 회귀라는 단어가 붙어있지만 사실 지도 학습 알고리즘의 이진 분류의 한 종류이며 이진 분류를 위한 확률을 추정하는 모델로 사용됩니다. 
입력 특성의 가중치의 합을 시그모이드 함수에 통과시켜 0과 1 사이의 값으로 변환하여 해달 클래스에 속할 확률을 추정하며 이를 통해 데이터를 분류합니다. 그리고 로지스틱 회귀는 선형 분류기로서, 선형적으로 분리 가능한 문제에 잘 작동되며, 해석이 용이하고 간단한 모델입니다. 그러나 비선형적인 문제나 복잡한 패턴을 가진 데이터에는 제한적일 수 있습니다.


이어지는 문제
Loss는 어떠한 것을 사용하고 학습은 어떻게 일어나는가?

Binary Cross-Entropy BCE(이진 교차 엔트로피)는 이진 분류 문제에서 예측값과 실제 레이블 간의 차이를 측정하는 데에 주로 쓰입니다. 실제 레이블과 예측값 사이의 오차를 측정하며, 이를 최소화하여 모델을 훈련시킵니다.

1. 파라미터 초기화: 모델은 초기에 랜덤하게 파라미터를 설정합니다.

2. 순전파(Forward Propagation): 학습 데이터를 모델에 입력하여 예측값을 계산합니다.

3. 손실 함수 계산: BCE를 이용하여 예측값과 실제 레이블 간의 차이를 계산합니다.

4. 역전파(Backpropagation): 손실 함수의 그래디언트(기울기)를 계산하여 역전파합니다. 이 그래디언트는 손실 함수 값이 감소하는 방향으로 파라미터를 업데이트할 수 있도록 도와줍니다.

5. 파라미터 업데이트: 경사하강법 또는 최적화 알고리즘을 사용하여 파라미터를 업데이트합니다. 파라미터를 업데이트하면서 BCE가 감소하는 방향으로 파라미터를 조정합니다.

6. 반복: 위의 과정을 반복하여 손실 함수가 최소가 되는 파라미터 값을 찾을 때까지 학습을 진행합니다.

답변: Loss로는 바이너리 크로쓰 엔트로피(Binary Cross-Entropy)를 사용하며 예측값과 실제 레이블 간의 차이를 측정합니다. 이 오차를 최소화하는 방향으로 모델을 훈련시킵니다.
순서는 파라미터 초기화 -> 순천파 -> 손실 함수 계산 -> 역전파 -> 파라미터 업데이터





경사 하강법(Gradient Descent)에 대해서 가능한 자세하게 설명한다면?
학습을 할 때 매개변수를 조정하여 모델의 손실 함수(Loss Function)을 최소화하는 방법이며, 주어진 손실 함수에서 최소값을 찾기 위해 경사(기술기)를 따라 내려사는 방법입니다.

1. 기본 개념:
경사 하강법은 모델의 손실 함수를 최소화하기 위해 매개변수(가중치 또는 파라미터)를 조정합니다. 모델이 예측한 값과 실제 값 사이의 차이를 측정하는 손실 함수를 정의하고, 이 손실 함수를 최소화하는 방향으로 매개변수를 조정합니다.

2. 경사(기술기) 계산:
경사 하강법은 매개변수 공간에서 손실 함수의 기울기(경사)를 계산합니다. 이 기울기는 현재 위치에서 손실 함수가 가장 급격하게 증가하는 방향을 나타냅니다. 기울기는 편미분을 통해 구할 수 있습니다.

3. 학습률(learning rate):
학습률은 한 번의 경사 하강 단계에서 이동하는 거리를 결정하는 매개변수입니다. 적절한 학습률은 중요한데, 너무 크면 수렴하지 못하고 발산할 수 있으며, 너무 작으면 수렴하는 데 많은 시간이 소요될 수 있습니다.

4.경사 하강법 알고리즘:
경사 하강법은 다음과 같은 단계로 이루어집니다:
초기에는 임의의 매개변수 값을 선택합니다.
매개변수를 조금씩 조정하면서 손실 함수의 기울기(경사)를 계산합니다.
계산된 기울기의 반대 방향으로 매개변수를 업데이트하고, 학습률을 곱해 이동 거리를 조절합니다.
손실 함수가 최소값에 도달할 때까지 이러한 과정을 반복합니다.

5. 수렴과 손실 최소화:
경사 하강법은 손실 함수의 최솟값에 도달하기 위해 매개변수를 조정하면서 이동합니다. 학습이 진행될수록 기울기는 작아지고, 최적점에 가까워집니다. 알고리즘이 수렴하면 손실 함수의 값은 최소값에 수렴하게 됩니다.

6.주의 사항:
경사 하강법은 지역 최소값(local minima)에 갇힐 수 있으며, 이를 극복하기 위해 다양한 변형 기법이 사용됩니다. 또한, 손실 함수가 비선형이거나 복잡한 경우에는 학습률이나 다른 하이퍼파라미터를 조정해야 할 수 있습니다.

프로젝트에 사용 CosineAnnealingWarmRestarts

답변: 경사 하강법은 손실 함수의 기울기를 이용하여 모델의 매개변수를 조정하고 최적화하는 방법으로,
학습률과 반복적인 매개변수 업데이트를 통해 손실을 최소화하여 모델을 학습시킵니다.
 편미분을 통해 기울기를 구하며 최적점을 찾아가는 과정에서 경사가 최소가 되는 지점까지 반복하여 모델을 향상시킵니다.






l2, l1 정규화란?
L1 정규화는 가중치의 절댓값 합에 비례하는 패널티를 모델에 부과하여 가중치 값 자체를 0으로 만들어 희소성을 유도하고 불필요한 특성을 제거합니다.
반면, L2 정규화는 가중치의 제곱합에 비례하는 페널티를 모델에 추가하여 가중치 값을 작게 유지하고 모델의 복잡성을 줄입니다.(0으로 수렴하지는 않음)



overfitting이란?
모델이 훈련 데이터에 지나치게 적합하여, 새로운 데이터에 대한 예측 능력이 떨어지는 현상을 의미합니다. 이는 모델이 훈련 데이터의 노이즈까지 학습하여 다른 데이터에 일반화하기 어려워지는 상황으로, 모델이 너무 복잡하거나 훈련 데이터가 부족하거나 학습 과정이 길 경우 발생할 수 있습니다. 과적합을 막기 위해 데이터를 더 수집하거나 모델을 단순화하고 규제하는 등의 방법을 사용합니다.



최적화란 무엇인가요?

딥러닝 답변:
 최적화는 모델의 학습을 통해 손실 함수를 최소화하는 과정으로,
파라미터 조정과 손실 최소화를 통해 모델의 성능을 향상시키는 것을 의미합니다.
 경사 하강법을 이용하여 모델의 매개변수를 업데이트하고,
학습률 및 하이퍼파라미터를 조정하여 최적의 모델을 찾습니다.
 최적화는 딥러닝에서 모델이 학습 데이터에 더 잘 일반화되고,
높은 예측 성능을 달성하기 위해 중요한 단계입니다.

프로그래밍 관점: 프로그래밍에서 최적화란 코드의 실행 속도나 자원 사용을 개선하여 효율적으로 만드는 과정입니다. 이는 코드의 성능을 향상시키고, 메모리 사용을 줄이거나 알고리즘을 개선하여 빠른 실행을 도모하는 것을 의미합니다. 최적화는 코드의 효율성을 높이고 시간 및 자원을 절약하여 더 좋은 성능을 얻는 것에 중점을 둡니다.

1. SGD(확률적 경사 하강법):
가장 기본적인 경사 하강법으로, 각 반복마다 단일 데이터 샘플 또는 미니배치에 대한 손신의 그래디언트를 계산하고 가중치를 업데이트합니다. 데이터가 크거나 노이즈가 많은 때 수렴이 느릴 수 있고, 지역 최솟값에 갇히기 쉽습니다.

2. Momentum(모멘텀):
SGD에 모멘텀 개념을 도입하여 경사 하강 시 관선을 활용하는 방법입니다.
기울기 갱신 시, 현재 기울기 값뿐만 아니라 이전 단계에서의 기울기 정보를 일정 비율로 함께 반영하여 기울기 갱신 방향을 조절합니다. 이전 기울기의 방향을 고려함으로써 SGD보다 빠른 수렴을 도와줍니다.

3. Adam(적응적 모멘트 추정):
Adam은 학습률로 조정하는 방법으로, 모멘텀과 RMSProp을 결합한 알고리즘입니다.
이전 그래디언트의 제곱값의 지수 가중 이동 평균을 이용하여 학습률을 조정하며, 모멘텀과 비슷한 효과를 가지면서도 학습률을 조절하여 SGD보다 안정적으로 빠르게 수렴할 수 있습니다.




Transformer모델이란??
Transformer는 자연어 처리(NLP)에서 사용되는 딥 러닝 모델 중 하나로, 기계 번역, 텍스트 분류, 문서 요약 등의 작업에 널리 활용됩니다. 이 모델은 2017년에 발표되었으며, 기존의 순차적인 RNN(Recurrent Neural Network)이나 LSTM(Long Short-Term Memory) 등의 모델보다 훨씬 더 병렬적이고 효율적인 학습을 가능하게 합니다.

Transformer의 주요 특징은 다음과 같습니다:

Self-Attention 메커니즘: 입력 시퀀스의 모든 위치 간의 상호 작용을 고려하는 메커니즘입니다. 이를 통해 모델은 문장 내 단어 사이의 의미적 관계를 학습할 수 있으며, 문맥을 파악하여 번역, 분류 등의 작업에 유용하게 활용됩니다.

병렬 처리 가능: RNN과 달리 Transformer는 병렬 처리에 더 용이하여 학습 속도를 향상시키고 효율적인 계산을 가능케 합니다.

Encoder와 Decoder 구조: Transformer 모델은 Encoder와 Decoder로 구성됩니다. Encoder는 입력 시퀀스를 처리하고, Decoder는 출력 시퀀스를 생성합니다. 이러한 구조는 기계 번역과 같은 시퀀스-투-시퀀스(Sequence-to-Sequence) 작업에서 유용합니다.

사전 학습(pre-training) 기반의 모델: Transformer 모델들은 사전 학습을 통해 대량의 텍스트 데이터로 미리 학습된 후, 특정 작업에 fine-tuning하여 사용될 수 있습니다. 이는 전이 학습(Transfer Learning)에 기반한 NLP 작업에 매우 효과적입니다.




Self-Attention이란?
Self-Attention은 Transformer 모델에서 사용되는 핵심적인 메커니즘 중 하나로, 특정 단어와 다른 모든 단어 사이의 관계를 계산하는 데 사용됩니다. 이는 입력 시퀀스 내의 각 단어 간의 의미적, 문법적 관련성을 파악하는 데 도움이 됩니다.

Self-Attention 메커니즘의 주요 구성 요소:
Query, Key, Value (Q, K, V):

Query(Q): Self-Attention을 수행하는 단어입니다. 특정 단어를 표현하는 벡터입니다.
Key(K): 모든 단어들의 대한 정보를 담고 있는 벡터입니다.
Value(V): 각 Key와 관련된 정보를 가지고 있는 벡터입니다.
Attention Score(어텐션 스코어):

Query와 Key 벡터 사이의 유사도를 계산하여 얻습니다. 이 유사도는 일반적으로 내적(dot product)을 사용하여 계산됩니다.
유사도가 높을수록 해당 단어의 중요도가 높아지는데, 이는 Attention Score로 표현됩니다.

Attention Weight(어텐션 가중치):
어텐션 스코어를 소프트맥스(softmax) 함수를 통해 정규화하여 얻습니다. 이렇게 하면 각 단어의 중요도를 나타내는 0과 1 사이의 값으로 변환됩니다.
각 단어의 중요도에 따라 가중치가 부여됩니다.

가중합(Weighted Sum):
어텐션 가중치와 Value를 곱하여 가중합을 계산합니다.

이를 통해 Query에 대한 가장 중요한 정보를 가진 단어를 찾을 수 있습니다.
Self-Attention 메커니즘은 입력된 Query에 대해 각 Key와의 유사도를 계산하여 가중치를 부여하고, 이 가중치에 따라 Value에 대한 가중합을 구합니다. 이를 통해 특정 Query에 대한 정보를 요약하고, 문맥을 이해하는 데 도움을 줍니다. Transformer의 여러 레이어에서 Self-Attention이 적용되어 모델은 입력 시퀀스의 문맥을 파악하고 표현합니다. Self-Attention을 여러 번 쌓아 레이어를 구성하여 각 단어 간의 상호작용을 고려하여 입력 시퀀스를 처리합니다.




BERT란?
BERT는 2018년 구글에서 발표된 자연어 처리를 위한 사전 학습 언어 모델입니다. 이 모델은 Transformer 구조를 기반으로 하며, 양방향으로 문맥을 고려하여 텍스트를 이해하는 데 주로 사용됩니다.

BERT의 주요 특징과 구성 요소는 다음과 같습니다:

Transformer 구조: BERT는 Transformer 아키텍처를 기반으로 합니다. Self-Attention 메커니즘을 사용하여 문장 내 단어들 간의 상호 작용을 고려하여 문맥을 이해하고 표현합니다.

양방향 학습: 기존의 모델들과 달리 BERT는 양방향 언어 모델로 사전 학습됩니다. 이는 문장 내 모든 단어들 간의 상호 작용을 고려하여 문맥을 이해하고, 양방향으로 정보를 전파하여 효과적인 학습을 가능하게 합니다.

사전 학습: BERT는 대량의 텍스트 데이터로 미리 학습된 후, 특정 자연어 처리 작업에 맞춰 추가적인 학습 없이 fine-tuning될 수 있습니다. 이는 전이 학습(Transfer Learning)에 기반한 NLP 작업에 매우 유용합니다.

다양한 자연어 처리 작업에 적용 가능: BERT는 다양한 자연어 처리 작업에 활용될 수 있으며, 문장 분류, 질의 응답, 문서 요약, 기계 번역 등의 작업에 뛰어난 성능을 보입니다.

BERT는 문장이나 단락의 의미를 파악하는 데 우수한 성과를 보이며, 사전 학습된 언어 모델의 등장으로 자연어 처리 분야에서 혁신을 이끌고 있는 중요한 모델 중 하나입니다. 이후에는 BERT를 개선하고 확장한 다양한 변형 모델들이 등장하여 NLP 분야에서 계속해서 발전하고 있습니다.





VIT 모델
VIT(Visual Transformer)는 비전 트랜스포머(Transformer) 모델로, 딥러닝에서 이미지 분류 및 비전 작업을 위해 설계된 혁신적인 구조입니다. VIT는 기존의 합성곱 신경망(CNN)과는 다르게 Transformer 아키텍처를 이미지 처리에 적용한 모델입니다.

주요 특징:

Transformer 기반: VIT는 이미지를 나누어 각 부분을 임베딩하고, 이를 Transformer의 self-attention 메커니즘으로 처리합니다. 이미지를 패치(patch)로 나누고, 이를 벡터 형태로 변환한 후 Transformer 구조를 활용하여 각 패치 간의 상호작용을 학습합니다.

패치 임베딩(Patch Embedding): 이미지를 격자 모양의 작은 패치로 나누고, 이를 임베딩하여 Transformer에 입력으로 제공합니다. 이러한 패치 임베딩은 이미지의 공간적 정보를 캡처하기 위한 기법입니다.

Transformer Encoder: 이미지 패치의 임베딩을 Transformer 인코더로 전달하여 각 패치 간의 관계를 학습합니다. Self-attention을 사용하여 패치 간의 중요한 관계를 이해하고, 그것을 기반으로 이미지를 분류하거나 다른 비전 작업을 수행합니다.

Pre-trained 모델 및 전이 학습: 대규모 데이터셋에서 사전 훈련된 VIT 모델은 전이 학습(transfer learning)에 유용합니다. 이는 새로운 작업에 맞게 파인 튜닝하여 작은 데이터셋에서도 효과적인 결과를 얻을 수 있도록 도와줍니다.

성능과 확장성: VIT는 일부 고전적인 CNN 기반 모델을 뛰어넘는 성능을 보여주며, 비교적 작은 데이터셋에서도 좋은 일반화 능력을 보입니다. 또한 이미지 크기가 다양한 경우에도 적용 가능하며, 이는 패치 임베딩 기술의 확장성 덕분입니다.

VIT는 이미지 분류를 위한 초기 버전으로 등장하였으며, 비전 태스크에서 Transformer의 효과적인 활용을 증명하면서 다양한 영역에서 연구 및 적용되고 있습니다.





Independence(독립성)이란?
"독립성은 확률 이론에서 두 사건이 서로 영향을 미치지 않고 서로 독립적으로 발생하는 것을 의미합니다. 만약 사건 A와 B가 독립적이라면, 하나의 사건이 발생하더라도 다른 사건의 발생 여부에 영향을 주지 않습니다. 이는 두 사건 간의 연관성이 적거나 없음을 의미하며, 이러한 독립성은 확률 곱셈의 법칙과 관련하여 A와 B의 결합 확률이 각각의 개별 확률의 곱과 같다는 특징을 갖고 있습니다. 확률 변수들이 독립적이라면, 그들 간의 조건부 확률은 각각의 개별 확률과 같아집니다."



"Uncorrelated"란
 두 변수 간에 상관관계가 없거나 낮은 상관관계를 가지고 있는 것을 의미합니다. 이는 한 변수의 값이 다른 변수의 값과 관련이 없거나 거의 영향을 주지 않는 경우를 나타냅니다.

상관관계는 통계학에서 두 변수 간의 관련성을 측정하는 데 사용됩니다. 두 변수가 완전히 무관한 경우, 이러한 변수들은 서로 "uncorrelated"라고 할 수 있습니다. 상관관계는 -1에서 1 사이의 값으로 표현되며, 0에 가까울수록 변수들 간의 상관관계가 적거나 없다는 것을 의미합니다.

예를 들어, 한 변수의 값이 증가함에 따라 다른 변수의 값이 증가하거나 감소하는 경향이 없는 경우, 이 두 변수는 uncorrelated 상태입니다. 하지만, 두 변수 간의 상관관계가 없다고 해서 반드시 인과관계가 없다는 것을 의미하지는 않습니다. 상관관계가 없어도 다른 변수들의 영향을 받아 변화할 수 있기 때문입니다.

데이터 분석이나 머신 러닝에서, 변수들 간의 상관관계를 파악하는 것은 모델링이나 데이터 이해에 중요한 요소 중 하나입니다. 상관관계가 낮은 변수들은 독립적이거나 중요한 정보를 제공할 수 있으며, 이를 통해 모델 성능을 향상시키거나 데이터 특성을 이해하는 데 도움이 될 수 있습니다.





주성분 분석(Principal Component Analysis, PCA)는 고차원 데이터셋의 차원을 줄이는 데에 사용되는 통계적 방법입니다. 이를 통해 데이터의 주요 정보를 보존하면서 차원을 축소할 수 있습니다. PCA는 주로 데이터의 분산을 최대화하는 새로운 축을 찾아 변환하여 차원을 축소합니다.

PCA를 사용하여 데이터의 차원을 축소하는 과정은 다음과 같습니다:

데이터 준비: PCA를 적용하기 전에 데이터는 평균을 0으로 중앙 정렬해야 합니다. 각 특성(변수)의 값에서 평균을 빼줌으로써 데이터를 중심에 위치시킵니다.

공분산 행렬 계산: 주성분 분석은 변수들 간의 공분산 행렬을 기반으로 합니다. 공분산은 변수들 간의 관계를 측정하는데 사용되며, 이를 통해 데이터의 분산과 방향성을 파악합니다.

고유값과 고유벡터 계산: 공분산 행렬로부터 고유값(Eigenvalues)과 고유벡터(Eigenvectors)를 계산합니다. 고유벡터는 새로운 축의 방향을 나타내며, 고유값은 해당 방향으로의 데이터의 분산을 나타냅니다.

주성분 선택: 고유값이 큰 순서대로 정렬된 고유벡터들은 데이터의 주요한 변동성(분산)을 나타내는데, 이들 중 주요한 주성분(Principal Components)을 선택합니다.

주성분으로 데이터 변환: 선택한 주성분들로 데이터를 새로운 축으로 변환합니다. 이를 통해 원래 데이터의 차원을 축소할 수 있습니다.

PCA를 통해 데이터를 새로운 저차원 공간으로 변환하면서 원래 데이터의 정보를 최대한 보존합니다. 주성분은 원래 변수들의 선형 조합으로 이루어져 있기 때문에, 적은 수의 주성분으로도 원래 데이터의 상당 부분을 설명할 수 있습니다. 이러한 방식으로 PCA는 차원 축소를 통해 데이터를 시각화, 압축, 또는 노이즈 제거 등 다양한 목적으로 활용됩니다.





-------------------------------------------------------------------------------------------------------------------------------------------

머신러닝 / 딥러닝


머신러닝과 딥러닝의 차이점은?
머신러닝(Machine Learning)과 딥러닝(Deep Learning)은 인공지능의 하위 분야로, 데이터를 기반으로 패턴을 학습하여 문제를 해결하는 데 중점을 둔다는 공통점이 있습니다. 하지만 머신러닝과 딥러닝은 몇 가지 중요한 차이점이 있습니다.

1. 구조와 모델 복잡성:
 - 머신러닝은 데이터의 특징을 추출하고 모델을 학습하는데 다양한 알고리즘을 사용합니다. 이들 알고리즘은 특징 공학(feature engineering)을 통해 데이터의 특징을 추출하고, 예를 들면 회귀, 결정 트리, SVM(Support Vector Machines) 등의 알고리즘을 사용합니다.
- 딥러닝은 인공 신경망을 기반으로 하며, 많은 수의 은닉층을 포함한 복잡한 구조로 이루어져 있습니다. 딥러닝은 데이터로부터 직접 특징을 학습하고, 이미지, 음성, 텍스트 등과 같이 매우 복잡한 데이터에서 높은 수준의 추상화된 특징을 추출할 수 있습니다.

2. 데이터 양과 계산 리소스:
 - 머신러닝 모델은 보통 적은 데이터에서도 잘 작동할 수 있습니다. 일반적으로 머신러닝은 적은 데이터에서도 상대적으로 좋은 성능을 보이는 경향이 있습니다.
 - 딥러닝은 대규모의 데이터셋이 필요하며, 많은 계산 리소스와 연산능력을 요구합니다. 대량의 데이터를 사용하여 매우 복잡한 모델을 학습하고, 이로부터 높은 수준의 표현을 추출할 수 있습니다.

3.특화된 문제 해결:
- 머신러닝은 다양한 영역에서 활용되며, 특히 상대적으로 작은 데이터셋이나 특정한 특징을 기반으로 한 문제들을 해결하는 데 효과적입니다.
-딥러닝은 대규모의 데이터셋과 높은 연산 능력이 필요하지만, 이미지 및 음성 인식, 자연어 처리와 같은 복잡한 문제들을 해결하는 데 뛰어난 성과를 보입니다.

[요약]
머신러닝은 다양한 알고리즘을 사용하여 특징을 추출하고 모델을 학습하는 반면,
딥리닝은 심층 신경망을 사용하여 데이터부터 직업 특징을 학습하며, 보다 복잡하고 대규모의 데이서텟과 연산 리소스를 요구하는 경향이 있습니다.




머신러닝을 3가지로 분류한다면?

1. 지도 학습 (Supervised Learning):
지도 학습은 레이블이 지정된 데이터를 사용하여 모델을 학습하는 방법입니다. 입력 데이터와 그에 상응하는 출력(레이블 또는 타겟)을 모델에 제공하여 학습합니다. 이 방법은 분류(Classification) 및 회귀(Regression) 문제를 해결하는 데 주로 사용됩니다. 예를 들어, 이메일이 스팸인지 아닌지를 분류하거나 집 가격을 예측하는 등의 작업에 사용될 수 있습니다.

2. 비지도 학습 (Unsupervised Learning):
비지도 학습은 레이블이 없는 데이터에서 패턴을 발견하거나 데이터를 그룹화하는 데 사용됩니다. 이 방법은 데이터의 숨겨진 구조를 탐색하고, 데이터 간의 관계를 발견하거나 차원 축소(Dimensionality Reduction), 군집화(Clustering) 등을 수행합니다. 예를 들어, 고객 세분화(Customer Segmentation), 이상 탐지(Anomaly Detection), 데이터 시각화 등에 활용될 수 있습니다.

3. 강화 학습 (Reinforcement Learning):
강화 학습은 에이전트(agent)가 환경과 상호작용하며 어떤 작업을 수행할 때 보상을 최대화하기 위한 학습 방법입니다. 에이전트는 시행착오를 통해 보상을 최대화하는 행동을 학습하고, 시간이 지나면서 어떤 행동이 가장 유리한지를 배우게 됩니다. 이 방법은 게임, 로봇 제어, 자율 주행 자동차 등과 같이 의사 결정을 내리고 행동해야 하는 상황에서 적용됩니다.




Cross validation이란?

교차 검증은 머신러닝 모델의 성능을 평가하고 일반화(generalization)능력을 향상시키기 위한 효과적인 방법입니다. 데이터를 여러 개의 fold(부분집합)로 나누고, 각각의 fold를 사용하여 모델을 반복적으로 학습하고 평가함으로써 모델의 성능을 평가하는 방법입니다.모델이 새로운 데이터에 대해 얼마나 일반화되는지 평가하고, 과적합(Overfitting)을 방지하며 모델의 안정성을 높이는 데 도움을 줍니다. 모델을 학습하고 평가하는 과정을 여러 번 반복하므로, 모델의 성능 추정이 더욱 신뢰할 수 있게 됩니다.

1.K-Fold Cross Validation:
가장 일반적인 교차 검증 방법 중 하나로, 데이터를 K개의 동일한 크기의 부분집합(또는 fold)으로 나눕니다. 그리고 K번의 반복을 수행하며, 각 반복에서 하나의 fold를 평가에 사용하고 나머지 fold들은 학습에 사용합니다. 이렇게 모든 fold에 대해 모델을 학습하고 평가한 후, 그 결과를 평균하여 최종 성능을 산출합니다.

2.Holdout Method:
데이터를 학습용과 테스트용으로 단순히 나누는 방식입니다. 보통은 전체 데이터셋 중 일정 비율을 학습에 사용하고 나머지를 테스트에 사용합니다. Holdout 방법은 단순하고 빠르지만, 데이터가 적을 때는 성능 추정이 불안정할 수 있습니다.

3.Leave-One-Out Cross Validation (LOOCV):
데이터 포인트 하나를 제외하고 모든 데이터를 학습에 사용하고, 제외한 데이터 포인트 하나만을 평가에 사용하는 방식입니다. 데이터셋이 작을 때 유용하지만, 데이터가 많을 경우에는 계산 비용이 높아질 수 있습니다.




경사 하강법(Gradient Descent)에 대해서 가능한 자세하게 설명한다면?
학습을 할 때 매개변수를 조정하여 모델의 손실 함수(Loss Function)을 최소화하는 방법이며, 주어진 손실 함수에서 최소값을 찾기 위해 경사(기술기)를 따라 내려사는 방법입니다.

1. 기본 개념:
경사 하강법은 모델의 손실 함수를 최소화하기 위해 매개변수(가중치 또는 파라미터)를 조정합니다. 모델이 예측한 값과 실제 값 사이의 차이를 측정하는 손실 함수를 정의하고, 이 손실 함수를 최소화하는 방향으로 매개변수를 조정합니다.

2. 경사(기술기) 계산:
경사 하강법은 매개변수 공간에서 손실 함수의 기울기(경사)를 계산합니다. 이 기울기는 현재 위치에서 손실 함수가 가장 급격하게 증가하는 방향을 나타냅니다. 기울기는 편미분을 통해 구할 수 있습니다.

3. 학습률(learning rate):
학습률은 한 번의 경사 하강 단계에서 이동하는 거리를 결정하는 매개변수입니다. 적절한 학습률은 중요한데, 너무 크면 수렴하지 못하고 발산할 수 있으며, 너무 작으면 수렴하는 데 많은 시간이 소요될 수 있습니다.

4.경사 하강법 알고리즘:
경사 하강법은 다음과 같은 단계로 이루어집니다:
초기에는 임의의 매개변수 값을 선택합니다.
매개변수를 조금씩 조정하면서 손실 함수의 기울기(경사)를 계산합니다.
계산된 기울기의 반대 방향으로 매개변수를 업데이트하고, 학습률을 곱해 이동 거리를 조절합니다.
손실 함수가 최소값에 도달할 때까지 이러한 과정을 반복합니다.

5. 수렴과 손실 최소화:
경사 하강법은 손실 함수의 최솟값에 도달하기 위해 매개변수를 조정하면서 이동합니다. 학습이 진행될수록 기울기는 작아지고, 최적점에 가까워집니다. 알고리즘이 수렴하면 손실 함수의 값은 최소값에 수렴하게 됩니다.

6.주의 사항:
경사 하강법은 지역 최소값(local minima)에 갇힐 수 있으며, 이를 극복하기 위해 다양한 변형 기법이 사용됩니다. 또한, 손실 함수가 비선형이거나 복잡한 경우에는 학습률이나 다른 하이퍼파라미터를 조정해야 할 수 있습니다.

프로젝트에 사용 CosineAnnealingWarmRestarts 



back propagation이란?
역전파(back propagation)은 딥러닝에서 사용되는 학습 알고리즘이며 신경망의 weight와 bias를 효율적으로 조정하여 Loss Funtion을 최소화하는 데 사용된다.
- 순전파(Forward Propagation):
입력 데이터가 신경망을 통과하여 예측값을 계산하고 각 뉴런의 활성화 값이 계산되어 출력된다.
- 오차 계산(Calculation of Error):
손실함수를 통해 예측값과 실제값 사이의 오차를 계산하며 이 값을 통해 신경망이 얼마나 잘 예측되었는지 측정한는 데 사용된다.
- 역전파 (Backward Pass):
오차를 역으로 전파하여 각 가중치에 대한 손실 함수의 기울기(Gradient)를 계산합니다. 역전파에서는 체인 룰(Chain Rule)을 사용하여 각 층의 가중치에 대한 손실함수 의 기술기를 계산하고, 이를 이용하여 가중치를 조정합니다.

체인 룰(Chain Rule)이란?
미분의 연쇄 법칙으로, 합성 함수의 미분을 구하는 데 사용되는 미분법의 기본 규칙 중 하나입니다.

gradient vanishing이 생기는 이유는? 이를 해결할 수 있는 방법은 무엇이 있을까?
그래디언트 손실(Gradient Vanishing)은 딥러닝 모델에서 역전파 과정 중 일부 층에서의 기울기(Gradient)가 너무 작아져 학습이 원활하게 이뤄지지 않는 현상입니다. 이는 주로 네트워크가 깊어질수록 발생할 가능성이 높으며 소실이 발생하는 이유는 주로 2가지로 설명이 가능합니다.
1. 활성화 함수(Activation Function):
Sigmoid나 tanh와 같은 활성화 함수는 특정 범위에서 기울기가 매우 작아지는 문제가 있습니다. 따라서 네트워크가 깊어질수록 역전파 과정에서 이전 레이어로 전달되는 기울기가 소실될 수 있습니다.
2. 깊은 네트워크의 연쇄적 계산:
체인 룰을 통해 기울기사 전파될 때, 매번 기울기를 곱해 나가는 과정에서 작은 값이 계속 곱해지면서 전체 기울기가 지수적으로 감소하는 현상이 발행할 수 있습니다.

위 문제의 해결방법은 크게 4가지가 있겠습니다.
1. Relu 계열의 활성화 함수를 사용하여 기울기 소실 문제를 완화시키는 방법이 있으며
2. 가중치 초기화(Weihgt Initialization) 조정: Xavier나 He 초기화와 같이 적절한 가중치 초기화 방법을 사용하여 네트워크 초기 가중치를 설정한다.
3. 배지 정규화(Batch Normalization)을 사용하여 각 층의 활성화 값이 적절한 범위에 있도록 정규화하여 소실을 완화
4. ResNet 아키텍처 구조에서 사용한 잔차 연결과 같은 구조 변경을 통해 기울기가 직접적으로 흐를 수 있도록 하여 그래디언트 소실을 완화시킵니다.



Activation Function에서 RELU함수를 많이 사용하는 이유는?
ReLU 함수는 비선형성을 제공하고 연산 속도가 빠르며, 그래디언트 소실 문제를 완화하고 희소성을 유지하여 더 효과적인 학습을 가능하게 합니다. 이러한 이유로 ReLU는 딥러닝 모델에서 주로 활용되며, 빠른 학습과 높은 성능을 보입니다.

- 비선형성(Non-linearity) 제공:
ReLU 함수는 입력이 음수인 경우 0을 출력하고, 양수인 경우 선형적으로 값을 전달합니다. 이를 통해 비선형성을 제공하여 신경망이 복잡한 패턴을 학습할 수 있도록 돕습니다.
- 계산 효율성(Computational Efficiency):
Sigmoid나 tanh와 같은 함수는 지수 및 삼각 함수 계산이 필요한 반면, ReLU는 간단한 연산으로 빠르게 계산되기 때문에 학습 속도를 높일 수 있습니다.
- Vanishing Gradient 문제 완화:
Sigmoid나 tanh와 같은 함수들은 입력이 일정 범위를 벗어나면 기울기가 매우 작아지는 문제가 있습니다. 이에 비해 ReLU 함수는 입력이 양수인 경우에는 기울기가 1로 유지되어 기울기 소실 문제를 완화시킵니다.
- Sparse Activation(희소 활성화):
ReLU는 입력이 음수인 경우에 0을 출력하기 때문에, 네트워크 내에서 더 많은 뉴런이 활성화되지 않게 하여 희소성(Sparsity)를 도모합니다. 이는 모델이 더 간결하고 효과적으로 표현되도록 돕습니다.


batch normalization이란? 어떻게 동작하는가?
Batch Normalization이란 신경망에서 각 층의 활성화 값을 정규화하여 학습을 안정화시키고 속도를 향상시키는 기법입니다. 각 층의 활성화 값을 정규화하여 평균을 0, 분산을 1로 조정하고, 이후 스케일과 이동을 수행하여 학습 과정을 안정화시킵니다. 이를 통해 학습 속도를 높이고, 더 깊은 신경망을 효과적으로 학습시킵니다.


normalization과 regularization의 차이는?
정규화(Normalization)은 입력 데이터의 스케일을 조정하여 학습을 안정화시키는 기법으로, 모든 특성들을 유사한 범위에 두는 것입니다.
반면에, 정칙화(Regularization)는 모델의 복잡성을 줄여 '과적합'을 방비하기 위한 기법으로, 모델의 학습 과정에 패널티를 부여하여 일반화 성능을 높이는 방법입니다.
이 두 기법은 모델 학습의 다른 측면을 다루며, 데이터와 모델의 관점에서 서로 다른 역할을 합니다.




weight initialization이란? 어떤 방법들이 있는가?
가중치 초기화(Weight Initialization)는 신경망에서 가중치를 처음부터 설정하는 방법을 말합니다. 주요 초기화 방법으로는 제로 초기화, 랜덤 초기화, Xavier 초기화, He 초기화 등이 있습니다. 올바른 초기화는 신경망 학습을 원활하게 하고 그래디언트 소실이나 폭주를 방지하여 모델의 성능 향상에 도움을 줍니다.

제로 초기화(Zero Initialization):
 가중치를 모두 0으로 초기화합니다. 이 방법은 사용을 지양하는 것이 좋습니다. 모든 가중치가 동일하게 갱신되기 때문에 네트워크가 대칭성을 가지게 되어 학습이 이루어지지 않을 수 있습니다.

랜덤 초기화(Random Initialization):
 작은 랜덤한 값을 사용하여 가중치를 초기화합니다. 이 방법은 널리 사용되며, 가중치를 작은 무작위 값으로 초기화하면 각 뉴런이 다른 시그널을 학습할 수 있도록 도와줍니다.

Xavier 초기화(Xavier Initialization / Glorot Initialization):
 가중치를 입력과 출력 뉴런의 수에 따라 적절한 분포로 초기화합니다. 이 방법은 학습이 빠르게 진행되도록 도와주며, 시그모이드나 하이퍼볼릭 탄젠트와 같은 활성화 함수와 잘 맞을 수 있습니다.

He 초기화(He Initialization):
 ReLU(Rectified Linear Unit)와 같은 활성화 함수에 적합한 초기화 방법으로, Xavier 초기화의 변형입니다. 이 방법은 Xavier 초기화보다 ReLU와 같은 선형적이지 않은 활성화 함수에서 더 좋은 결과를 보일 수 있습니다.



overfitting이란?
모델이 훈련 데이터에 지나치게 적합하여, 새로운 데이터에 대한 예측 능력이 떨어지는 현상을 의미합니다. 이는 모델이 훈련 데이터의 노이즈까지 학습하여 다른 데이터에 일반화하기 어려워지는 상황으로, 모델이 너무 복잡하거나 훈련 데이터가 부족하거나 학습 과정이 길 경우 발생할 수 있습니다. 과적합을 막기 위해 데이터를 더 수집하거나 모델을 단순화하고 규제하는 등의 방법을 사용합니다.



l2, l1 정규화란?
L1 정규화는 가중치의 절댓값 합에 비례하는 패널티를 모델에 부과하여 가중치 값 자체를 0으로 만들어 희소성을 유도하고 불필요한 특성을 제거합니다.
반면, L2 정규화는 가중치의 제곱합에 비례하는 페널티를 모델에 추가하여 가중치 값을 작게 유지하고 모델의 복잡성을 줄입니다.(0으로 수렴하지는 않음)




차원의 저주란?
차원의 저주(Curse of Dimensionality)는 고차원 공간에서 발생하는 문제를 지칭합니다. 이는 데이터의 차원(특성의 수)이 증가함에 따라 발생하는 여러 현상들을 설명하는 개념입니다.

고차원 공간에서의 데이터 처리는 몇 가지 문제점을 초래할 수 있습니다:

데이터 희소성(Sparsity of Data):
 고차원 공간에서는 데이터가 희소해질 가능성이 높습니다. 데이터 포인트 간의 거리가 멀어지면서, 데이터가 부족한 영역이 많아질 수 있습니다.

계산 비용 증가:
 고차원에서의 거리 계산, 모델 학습 및 예측에 필요한 계산 비용이 기하급수적으로 증가합니다.

과적합(Overfitting):
 고차원에서 모델을 학습할 때, 과적합 문제가 발생할 가능성이 높아집니다. 모델이 작은 데이터셋에서는 잘 작동하지만, 새로운 데이터에 대한 일반화 능력이 떨어질 수 있습니다.

데이터 수집 및 관리의 어려움:
 고차원 데이터를 수집, 시각화하거나 관리하는 것이 어려울 수 있습니다.

이러한 문제들로 인해, 고차원 공간에서의 데이터 분석과 머신 러닝 모델링은 적절한 차원 축소 기법이나 특성 선택 등의 전략을 통해 해결해야 할 필요가 있습니다. 차원 축소는 데이터의 중요한 정보를 보존하면서 차원을 줄여주는 기법으로, 주성분 분석(PCA)이나 t-SNE와 같은 기법을 사용하여 고차원 데이터를 저차원으로 효과적으로 변환할 수 있습니다.




모델의 성능 평가 지표에는 무엇이 있는가?
정확도(Accuracy), 정밀도(Precision), 재현율(Recall), F1 Score 등이 있지만 저는 Loss Function을 기준으로 모델을 학습하는 함수를 구현했습니다.

- 정확도 (Accuracy):
정확도는 전체 예측 중 올바르게 예측한 비율을 나타냅니다. (정확히 맞춘 샘플 수 / 전체 샘플 수)
- 정밀도 (Precision):
정밀도는 모델이 양성 클래스로 예측한 샘플 중 실제로 양성인 샘플의 비율을 나타냅니다. (양성으로 올바르게 예측된 샘플 수 / 양성으로 예측된 샘플 수)
- 재현율 (Recall):
재현율은 실제 양성인 샘플 중 모델이 양성으로 올바르게 예측한 비율을 나타냅니다. (양성으로 올바르게 예측된 샘플 수 / 실제 양성인 샘플 수)
- F1 점수 (F1 Score):
정밀도와 재현율의 조화 평균으로, 불균형한 클래스 분포에서 모델의 성능을 평가하는 데 사용됩니다.
- 손실 함수 (Loss Function):
모델의 예측과 실제 값 사이의 차이를 측정하는 함수로, 모델이 얼마나 잘 작동하는지를 평가하는 데 사용됩니다.




accuracy, recall, precision 각각은 언제 사용하는 것이 좋을까?
- Accuracy(정확도):
데이터의 클래스가 균형 있고, False Positive와 False Negative가 동등한 비중을 갖는 경우에 적합합니다. 클래스 간 비율이 비슷하고, 오분류된 예측이 동등한 영향을 미칠 때 사용됩니다.
이진 분류에서 클래스가 균형있을 때 유용하며, 모든 클래스의 중요도가 동일한 경우에 적합합니다. 예를 들어, 스팸 메일 분류에서 스팸과 비스팸의 비율이 거의 비슷한 경우 정확도를 사용할 수 있습니다.
- Recall(재현율):
False Negative를 최소화하고 싶을 때 사용됩니다. 실제로 Positive인 데이터 중 모델이 정확하게 감지한 비율을 측정하는데 유용합니다.
예를 들어, 암 진단과 같이 실제 양성 중에서 놓치면 안 되는 경우에 사용됩니다. 여기서는 암 환자를 놓치는 것(거짓 음성)을 피하기 위해 재현율을 높이는 것이 중요합니다.
- Precision(정밀도):
False Positive를 최소화하고 싶을 때 사용됩니다. 모델이 Positive로 예측한 것 중에서 실제로 Positive인 비율을 측정합니다.
예를 들어, 스팸 분류 모델에서 실제로 스팸이 아닌 것(거짓 양성)을 최소화하고 싶을 때 정밀도가 중요합니다.




cost function이란?
모델의 예측값과 실제 값 사이의 차이를 측정하는 함수입니다. 모델이 학습하는 동안, 이 함수를 사용하여 모델의 예측값이 실제 값과 얼마나 다른지 측정하고 이 차이를 최소화하려고 합니다.

일반적으로 회귀문제는 MES나 MAE와 같은 함수가 사용되며, 분류 문제에서는 Cross Entropy나 Hinge Loss같은 함수들이 사용되며 최적화 알고리즘(경사하강법)을 통해 최소화됩니다.

- Mean Squared Error (MSE - 평균 제곱 오차):
회귀 문제에 주로 사용되며, 예측값과 실제 값의 차이를 제곱하여 평균을 계산합니다. 잔차(오차)의 제곱을 평균한 값으로, 큰 오류에 민감한 특성을 가집니다.
- Mean Absolute Error (MAE - 평균 절대 오차):
MSE와 비슷하지만 제곱을 하지 않고 예측값과 실제 값의 차이를 절댓값으로 계산하여 평균을 취합니다. MAE는 제곱되지 않은 오차의 절댓값을 평균한 값으로, 이상치에 덜 민감합니다.
- Cross Entropy (크로스 엔트로피 손실 함수):
주로 분류 문제에서 사용되며, 두 확률 분포(예측값과 실제 레이블) 사이의 유사성을 측정합니다. 이 함수는 정답 레이블에 대한 모델의 예측이 얼마나 잘 맞는지 측정하며, 높은 확률일수록 손실이 작아지는 특성을 가지고 있습니다.
- Hinge Loss (힌지 손실 함수):
주로 이진 분류 및 서포트 벡터 머신(SVM)에서 사용됩니다. 모델의 예측값과 실제 값 간의 차이가 일정 값 이상일 때 손실을 증가시키는 함수입니다. SVM에서는 마진을 최대화하기 위해 사용되며, 분류 문제에서 클래스 간 간격을 늘리려는 경향이 있습니다.




sgd와 momentum, Adam에 대해서 설명해주세요.
모두 경사 하상법의 변종이며, 신경망 학습에서 많이 사용되는 최적화 알고리즘이다.

1. SGD(확률적 경사 하강법):
가장 기본적인 경사 하강법으로, 각 반복마다 단일 데이터 샘플 또는 미니배치에 대한 손신의 그래디언트를 계산하고 가중치를 업데이트합니다. 데이터가 크거나 노이즈가 많은 때 수렴이 느릴 수 있고, 지역 최솟값에 갇히기 쉽습니다.

2. Momentum(모멘텀):
SGD에 모멘텀 개념을 도입하여 경사 하강 시 관선을 활용하는 방법입니다.
기울기 갱신 시, 현재 기울기 값뿐만 아니라 이전 단계에서의 기울기 정보를 일정 비율로 함께 반영하여 기울기 갱신 방향을 조절합니다. 이전 기울기의 방향을 고려함으로써 SGD보다 빠른 수렴을 도와줍니다.

3. Adam(적응적 모멘트 추정):
Adam은 학습률로 조정하는 방법으로, 모멘텀과 RMSProp을 결합한 알고리즘입니다.
이전 그래디언트의 제곱값의 지수 가중 이동 평균을 이용하여 학습률을 조정하며, 모멘텀과 비슷한 효과를 가지면서도 학습률을 조절하여 SGD보다 안정적으로 빠르게 수렴할 수 있습니다.




Local Minima를 해결하는 방법은?
초기값 조정:
가중치와 편향과 같은 모델 파라미터의 초기값을 잘 설정하는 것이 중요합니다. 잘못된 초기화는 지역 최솟값에 빠질 가능성을 높일 수 있으므로 Xavier 또는 He 초기화와 같은 효율적인 초기화 방법을 사용하는 것이 좋습니다.

다양한 최적화 알고리즘:
경사 하강법 이외의 최적화 알고리즘을 사용할 수 있습니다. Momentum, RMSProp, Adam과 같은 알고리즘은 로컬 미니마에 빠지지 않고 빠르게 전역 최솟값을 찾을 수 있도록 도와줍니다.

더 깊고 넓은 네트워크:
더 깊고 넓은 신경망 구조는 더 많은 파라미터를 사용하여 더 복잡한 함수를 근사할 수 있으며, 이는 로컬 미니마에 빠질 가능성을 줄여줄 수 있습니다.

랜덤 초기화와 다양한 시작점: 
다양한 초기화 방법과 시작점에서 여러 번 모델을 학습시켜 여러 로컬 미니마에 빠지는 가능성을 줄일 수 있습니다.

Dropout 및 정규화: 
Dropout과 같은 규제 기법을 사용하여 과적합을 줄이고, 이를 통해 로컬 미니마에 빠질 가능성을 낮출 수 있습니다.

학습률 조정:
적절한 학습률을 선택하는 것도 중요합니다. 학습률이 너무 작으면 수렴이 느려지고, 너무 크면 발산하여 로컬 미니마에 빠질 수 있으므로 학습률을 조정하는 것이 중요합니다.




Max Pooling을 하는 이유는?
이미지나 특성 맵의 공간 차원을 줄이는데 사용되며, 각 영역에서 가장 큰 값을 선택하여 해당 영역의 정보를 유지하는 방식으로 동작합니다.

Max Pooling을 사용하는 이유는 다음과 같습니다.

1. 공간 차원 축소:
공간 차원을 축소하여 연산량을 줄입니다. 이는 모델의 복잡성을 줄이고 연산 속도를 향상시킵니다.

2. Translation Invariance(이동 불변성)제공):
이미지 내 객체의 위치가 변해도 해달 객체의 주요한 특징이 유지되도록 돕고 가장 큰 값만 선택하기 때문에 작은 변화나 이동에 대해 더 견고한 특성을 가질 수 있습니다.

3. Feature Enhancement(특성강화):
Max Pooling은 주변 영역의 특성을 강화합니다. 해당 영역에서 가장 중요한 특성을 유지하고, 중요하지 않은 특성은 버리는 방식으로 작동하여 노이즈를 감소시키고 중요한 특징만을 추출합니다.

4. Overfitting 방지:
일부 정보를 버림으로써 모델이 훈련 데이터에 지나치게 적합되는 것을 방지하고, 일반화 성능을 향상시킵니다.




Global Average pooling이란?
특성맵의 각 채널에 대해 평균을 계산하여 공간 차원을 축소합니다. 주로 CNN의 마지막 합성곱층 뒤에 사용되어 전체 공간 정보를 간결한 형태로 압축하여 최종적으로 분류나 예측을 위한 출력 레이어로 활용됩니다. 이를 통해 공간적인 정보를 최소화하면서도 중요한 특성을 유지하고 일반화 능력을 향상시킵니다.

-동작 방식
1. 특성 맵의 공간 차원 축소:
특성 맵의 각 채널에 대해 전체 공간을 대상으로 평균을 계산합니다.
2. 차원 축소를 통한 특성 추출:
각 채널별로 계산된 평균값은 해당 채널의 중요한 특성을 요약하는 값으로 사용

-사용 이점
1. 매개변수 수의 감소:
Max Pooling과는 달리 최댓값을 취하는 대신 평균을 취하기 때문에 추가 매개변수를 필요로 하지 않습니다.
2. 과적합 방지:
정보를 압축하고 일반화된 특성을 추출하여 과적합을 방지




activation function을 사용하는 이유는?
활성화 함수는 신경망에서 입력 신호를 받아 비선형성을 추가하여 복잡한 데이터 패턴을 학습하고,
역전파를 통해 그래디언트를 효과적으로 전파하여 신경망이 더 나은 성능을 발휘할 수 이도록 돕습니다. 이를 통해 신경망이 비선형 문제를 처리하고 다양한 데이터를 효과적으로 모델링할 수 있습니다.

- 비선형성(Non-Linearity) 추가:
활성화 함수는 비선형성을 추가하여 신경망이 복잡한 함수를 학습할 수 있도록 돕습니다. 비선형 함수를 사용하면 신경망이 다양한 패턴과 특징을 학습할 수 있어서 신경망의 표현력을 향상시킵니다.

- 복잡한 문제 해결:
비선형 활성화 함수를 사용하면 신경망이 복잡한 문제를 모델링하고 다룰 수 있습니다. 비선형성은 신경망이 입력 데이터의 복잡한 특징과 패턴을 학습할 수 있도록 합니다.

- 그래디언트 전파(Gradient Propagation) 개선:
비선형 함수를 사용하면 역전파 알고리즘이 잘 작동하여 그래디언트(기울기)를 효과적으로 전파할 수 있습니다. 이는 신경망이 깊어질수록 그래디언트 소실 또는 폭주 문제를 완화하는 데 도움이 됩니다.

- 비선형 문제 처리:
입력 데이터가 선형적으로 분리되지 않는 경우 비선형 활성화 함수를 사용하여 신경망이 비선형 문제를 처리하고 분류, 회귀 등의 작업을 수행할 수 있도록 합니다.




CNN의 장점은?
크게 5가지고 답변드릴 수 있습니다.

1. 공간적 패턴 인식:
이미지과 같은 2차원 데이터의 지역적 패턴을 잘 이해하고 학습합니다.

2. 파라미터 공유로 효율성:
합성곱층의 가중치가 공유되어 학습 파라미터 수를 줄여 학습 효율성을 높입니다.

3. 이동 불변성 유지:
객체 위치가 변경되어도 인식 능력이 유지되어 이동에 강한 특성을 가집니다.

4. 계층적 학습:
여러 층으로 구성되어 점진적으로 추상적 특성을 학습하여 복잡한 데이터를 처리합니다.

5. 자동 특성 추출:
입력 데이터로부터 특성을 자동 추출하고 복잡한 패턴을 학습하며, 사전 지식이 없이도 효과적으로 학습이 가능

이러한 특성들로 이미지 처리 및 컴퓨터 비전 분야에서 뛰어난 성능을 보입니다.




하이퍼파라미터 튜닝은 어떻게 할 수 있을까?
하이퍼파라미터 튜닝은 모델의 성능을 향상시키기 위해 매개변수를 조정하는 과정으로, 그리드 서치, 랜덤 서치, 교차 검증 등의 방법을 사용하여 가장 좋은 조합을 찾는 것입니다. 또한, 자동화된 도구나 도메인 지식을 활용하여 최적의 조합을 찾을 수 있으며, 이는 모델의 성능 향상에 중요한 요소입니다.

1. 그리드 서치(Grid Search) 및 랜덤 서치(Random Search):
그리드 서치는 가능한 모든 조합을 대상으로 하이퍼파라미터를 조정하고, 최적의 조합을 찾습니다. 랜덤 서치는 무작위로 하이퍼파라미터 공간을 탐색하며, 더 넓은 범위의 조합을 탐색할 수 있습니다.
2. 교차 검증(Cross-Validation):
교차 검증을 통해 모델의 일반화 성능을 평가하고 하이퍼파라미터 튜닝을 할 수 있습니다. 훈련 데이터를 여러 개의 서브셋으로 나누어 교차 검증을 수행하여 각 하이퍼파라미터 조합의 성능을 평가합니다.
3. 자동화된 하이퍼파라미터 최적화 도구 사용:
Bayesian Optimization, Hyperopt, Optuna 등과 같은 자동화된 하이퍼파라미터 최적화 도구를 사용하여 자동으로 최적의 하이퍼파라미터 조합을 찾을 수 있습니다.
4. 튜닝 대상 하이퍼파라미터 선택:
튜닝할 하이퍼파라미터를 선정하는 것이 중요합니다. 모델에 영향을 크게 주는 하이퍼파라미터부터 우선적으로 튜닝하는 것이 좋습니다.
5. 도메인 지식 활용:
특정 문제 도메인에 대한 지식을 활용하여 하이퍼파라미터를 조정하는 것이 도움이 될 수 있습니다. 하이퍼파라미터의 범위를 지정하거나 최적화 과정에 추가적인 제약을 두는 데 활용될 수 있습니다.




SVM이란?
SVM(서포트 벡터 머신)은 데이터를 분류하기 위한 지도 학습 알고리즘으로, 클래스 간 최대 마진을 갖는 결정 경계를 찾아주어 데이터를 분리하는데 사용됩니다. 선형 및 비선형 문제를 해결할 수 있으며, 커널 트릭을 통해 고차원 공간으로 변환하여 데이터를 분류하는 강력한 방법입니다. 이상치에 민감할 수 있지만, 일반적으로 일반화 성능이 뛰어나며 다양한 분야에서 활용됩니다.

SVM(서포트 벡터 머신, Support Vector Machine)은 분류(classification)와 회귀(regression) 문제에 사용되는 지도 학습 알고리즘 중 하나입니다. 주로 분류 문제에서 사용되며, 데이터를 기반으로 두 클래스를 분리하는 초평면(hyperplane)을 찾는 것이 목표입니다.

SVM은 특징 공간에서 데이터 포인트를 분류하기 위해 결정 경계(decision boundary)를 찾습니다. 이때, 초평면은 두 클래스 간의 최대 마진(margin)을 갖도록 결정됩니다. 이러한 최대 마진을 갖는 초평면은 서포트 벡터(Support Vectors)라 불리는 데이터 포인트와 가장 가까운 지점에 위치합니다.

SVM은 선형 분류 뿐만 아니라, 커널 트릭(kernel trick)을 통해 선형 분리가 어려운 비선형 문제를 해결할 수 있습니다. 다양한 커널 함수를 사용하여 데이터를 고차원 공간으로 변환하고, 그 공간에서 선형 분리가 가능한 경우에도 비선형 문제를 해결할 수 있습니다.

SVM은 마진 최대화를 통해 일반화 성능이 우수하며, 이상치에 대해 민감하게 반응하는 단점도 있지만, 적은 데이터에 대해서도 효과적으로 작동하며, 분류 및 회귀 문제에 널리 사용됩니다.




로지스틱 회귀란? 언제 로지스틱 회귀를 사용할 수 있을까?
로지스틱 회귀(Logistic Regression)는 이름은 회귀라고 붙어있지만, 실제로는 이진 분류(Binary Classification)를 위한 지도 학습 알고리즘입니다. 로지스틱 회귀는 선형 회귀와는 다르게 이진 분류를 위한 확률을 추정하는 모델로 사용됩니다.

로지스틱 회귀는 입력 특성의 가중치 합을 로지스틱 함수 또는 시그모이드 함수를 통과시켜 0과 1 사이의 값으로 변환하여 해당 클래스에 속할 확률을 추정합니다. 이를 통해 데이터를 분류합니다.

로지스틱 회귀는 다음과 같은 경우에 사용될 수 있습니다:
이진 분류 문제:
 두 개의 클래스 중 하나를 예측하는 문제에서 사용됩니다. 예를 들어, 스팸 메일 여부, 질병 발병 여부 등을 예측할 때 활용됩니다.

확률 추정:
 각 클래스에 속할 확률을 추정할 수 있어, 이를 기반으로 임계값을 정하여 원하는 클래스로 분류할 수 있습니다.

간단하고 빠른 모델:
 선형 모델이므로 계산이 간단하며, 작은 데이터셋이나 선형 결정 경계가 잘 맞는 경우에 효과적으로 사용됩니다.

로지스틱 회귀는 선형 분류기로서, 선형적으로 분리 가능한 문제에 잘 작동하며, 해석이 용이하고 간단한 모델입니다. 하지만 비선형적인 문제나 복잡한 패턴을 가진 데이터에는 제한적일 수 있습니다.





앙상블을 사용하는 이유는?
앙상블은 단일 모델보다 더 나은 성능, 안정성, 일반화 능력을 제공하는 경우가 많습니다. 앙상블을 사용하는 이유는 다음과 같습니다:

성능 향상:
 다양한 모델을 결합하면 개별 모델의 약점을 보완하여 더 나은 성능을 달성할 수 있습니다. 각 모델이 다른 특징을 잡아내고, 다양한 측면에서 데이터를 학습하기 때문에 앙상블은 보다 강력한 예측력을 제공합니다.

과적합 감소:
 여러 모델을 결합하면 일반화 능력이 향상되어 과적합을 방지하는 데 도움을 줍니다. 다양한 모델을 결합하면서 각 모델의 잡음이나 오차를 상쇄시켜 일반화된 모델을 만들 수 있습니다.

안정성 및 신뢰성:
 앙상블은 여러 모델의 평균이나 다수결 투표 등을 통해 개별 모델의 변동성을 줄이고 안정된 예측을 할 수 있도록 도와줍니다.

다양성 추가:
 서로 다른 알고리즘을 사용하거나, 데이터를 다르게 처리하여 다양성을 추가하면 앙상블이 더 강력하고 안정적으로 작동할 수 있습니다.

대규모 데이터에서의 성능 향상:
 대규모 데이터셋에서는 여러 모델을 병렬로 학습시키거나, 각 모델을 분할하여 학습시킨 후 결합함으로써 계산 속도와 예측력을 향상시킬 수 있습니다.



k-fold cross validation이란?
k-fold cross-validation은 기계 학습 모델의 성능을 평가하기 위한 기법 중 하나로, 데이터를 k개의 서브셋으로 나눈 뒤, 그 중 하나를 검증용 데이터로, 나머지를 학습용 데이터로 사용하여 모델을 k번 학습하고 평가하는 방법입니다.

일반적으로는 다음과 같은 과정으로 진행됩니다:
1. 원본 데이터를 무작위로 k개의 폴드(Subset)로 나눕니다.
2. 각각의 폴드를 하나씩 검증용 데이터셋으로 선택하고, 나머지 폴드들을 합쳐서 학습용 데이터셋으로 사용합니다.
3. 모델을 학습용 데이터로 학습시키고 선택된 검증용 데이터로 평가합니다. 이를 k번 반복하여 각 폴드에 대한 모델의 성능을 평가합니다.
4. k개의 평가 결과를 평균하여 최종 성능 지표를 계산합니다.

이 방법을 통해 모든 데이터를 학습과 검증에 활용할 수 있으며, 특정 데이터에 과적합(Overfitting)되는 것을 방지하고 모델의 일반화 성능을 더 정확하게 평가할 수 있습니다. 또한, 데이터의 분할에 따라 결과가 달라질 수 있기 때문에 편향된 평가를 방지할 수 있습니다. k-fold cross-validation은 모델의 성능 평가 및 하이퍼파라미터 튜닝에 자주 사용됩니다.



원-핫 인코딩이란?
원-핫 인코딩(One-Hot Encoding)은 범주형 데이터를 수치형 데이터로 변환하는 기법 중 하나입니다. 이는 주로 머신 러닝에서 범주형 데이터(카테고리형 데이터)를 처리하기 위해 사용됩니다.

원-핫 인코딩은 각 범주(category)를 이진 형태의 벡터로 표현합니다. 범주에 해당하는 인덱스는 1로, 다른 인덱스는 0으로 표현되는 방식입니다. 예를 들어, ["사과", "바나나", "오렌지"]라는 세 가지 과일의 범주를 원-핫 인코딩으로 표현하면:

"사과"는 [1, 0, 0]
"바나나"는 [0, 1, 0]
"오렌지"는 [0, 0, 1]

와 같이 표현됩니다. 각 범주는 전체 범주 개수만큼의 길이를 가진 이진 벡터로 표현됩니다. 이러한 인코딩은 각 범주 간의 관계를 배제하고, 각 범주를 독립적인 형태로 나타냅니다.

원-핫 인코딩은 텍스트, 범주형 변수와 같은 데이터를 머신 러닝 모델에 입력하기 위해 범주형 데이터를 수치형 데이터로 변환할 때 사용되며, 특히 범주가 명확하게 구분되고 순서가 없는 경우에 많이 사용됩니다.




word2vec의 원리는?
Word2Vec은 단어를 벡터로 표현하는 워드 임베딩 기술 중 하나입니다. 이 기술은 단어를 고차원 공간에 매핑하여 단어 간의 의미적 유사성을 포착하는 방법으로, 단어들의 분산 표현을 학습합니다.

Word2Vec은 크게 두 가지 모델인 CBOW(Continuous Bag of Words)와 Skip-gram 두 가지 모델을 기반으로 합니다.

CBOW(Continuous Bag of Words):
 주변에 있는 단어들을 이용하여 중심 단어를 예측하는 방식입니다. 주변 단어들의 벡터 평균을 사용하여 중심 단어를 예측합니다.

Skip-gram:
 중심 단어를 가지고 주변 단어를 예측하는 방식입니다. 중심 단어를 가지고 주변 단어를 예측하며, 중심 단어와 주변 단어 사이의 관계를 학습합니다.

두 모델 모두 신경망 기반의 얕은 신경망(Shallow Neural Network)을 사용하며, 단어를 고정 길이의 벡터로 표현합니다. 이 과정에서 비슷한 문맥에서 등장하는 단어들은 비슷한 벡터 표현을 갖게 됩니다. 즉, 비슷한 단어들은 공간상에서 가까이 위치하게 됩니다.

Word2Vec은 단어 간의 의미적, 문법적 유사성을 잘 파악하고, 단어들의 분산 표현을 학습하여 단어들 간의 관계를 이해하는 데 유용하게 사용됩니다. 이를 통해 자연어 처리 분야에서 단어 임베딩의 효율적인 활용이 가능해집니다.




auto encoder에 대해서 설명한다면?
오토인코더(Autoencoder)는 비지도 학습(Unsupervised Learning) 방법 중 하나로, 입력 데이터의 압축(인코딩)과 복원(디코딩)을 통해 입력 데이터의 효율적인 표현을 학습하는 인공 신경망 구조입니다.

오토인코더는 크게 두 부분으로 구성됩니다: 인코더(encoder)와 디코더(decoder).

인코더:
 입력 데이터를 저차원 표현(잠재 공간, latent space)으로 압축하는 역할을 합니다. 주어진 입력을 내부 표현으로 매핑하는 부분입니다.

디코더:
 인코더에서 얻은 저차원 표현을 사용하여 원본 입력 데이터를 복원하려는 역할을 합니다.

오토인코더는 주어진 입력 데이터를 학습하고, 인코더를 통해 데이터를 저차원 표현으로 압축한 다음, 디코더를 사용하여 복원하려고 합니다. 학습 과정에서 입력 데이터를 복원하는 것을 최대한 비슷하게 만들어주는 방향으로 학습되며, 이러한 과정을 통해 입력 데이터를 효과적으로 압축하고 복원하는 방법을 학습합니다.

오토인코더는 데이터의 잠재적인 구조를 학습하고 이를 통해 데이터의 특징을 추출할 수 있습니다. 주로 차원 축소, 데이터 압축, 노이즈 제거 등 다양한 영역에서 활용됩니다. 또한, 오토인코더를 활용하여 생성 모델(Generative Model)을 구축하는 변형된 형태의 오토인코더들도 있습니다.




n-gram은 무엇인가요?
n-gram은 텍스트 또는 문서에서 연속된 n개의 항목(단어, 문자, 혹은 다른 토큰)을 의미합니다. 여기서 n은 연속된 항목의 수를 나타냅니다.

가장 일반적으로 사용되는 것은 단어 기반의 n-gram으로, 연속된 단어들의 시퀀스를 의미합니다. 예를 들어, "apple is tasty"라는 문장을 2-gram으로 만들면 다음과 같은 단어들의 조합이 생깁니다:

2-gram: "apple is", "is tasty"

n-gram은 자연어 처리(Natural Language Processing) 분야에서 문서나 문장의 특징을 추출하거나 모델링하는 데 사용됩니다. 주로 텍스트 분류, 언어 모델링, 정보 검색 등 다양한 자연어 처리 작업에 적용됩니다. 또한, n-gram을 이용하여 문장 내의 패턴이나 특징을 파악하고, 예측하는 데 사용됩니다.





stop words란? 왜 stop words를 제거해야 하나요?
stop words(불용어)는 자연어 처리에서 일반적으로 무시되거나 제거되는, 문장에서 높은 빈도로 등장하지만 분석에 큰 의미를 갖지 않는 단어들을 말합니다. 예를 들면 "the", "and", "is", "in"과 같은 것들이 불용어에 해당합니다.

Stop words를 제거하는 이유는 다음과 같습니다:
의미가 없는 단어:
 불용어는 대부분 문장에서 자주 등장하지만, 실제 의미나 정보를 전달하지 않는 단어들입니다. 따라서 분석에 중요한 의미를 가지지 않으며, 제거해도 중요한 정보가 손실되지 않습니다.

메모리와 연산 비용 절감:
 불용어가 포함된 텍스트는 많은 메모리와 연산을 요구하므로, 불필요한 단어를 제거하면 데이터 크기가 감소하고 연산 비용을 절감할 수 있습니다.

성능 향상:
 불용어를 제거하면 모델 학습이나 분류 작업에서 성능을 향상시킬 수 있습니다. 제거하지 않으면 불필요한 정보로 인해 모델이 노이즈에 민감해질 수 있습니다.

물론, 특정한 경우에는 불용어가 중요한 의미를 갖는 경우도 있을 수 있습니다. 예를 들어, 문서 요약이나 감성 분석 등에서는 때로 불용어를 제거하지 않고 사용하기도 합니다. 하지만 일반적으로 텍스트 전처리 단계에서 불용어 제거는 자연어 처리의 성능을 향상시키는 데 도움을 줍니다.





협업 필터링이란?
협업 필터링(Collaborative Filtering)은 추천 시스템(Recommendation System)에서 사용되는 기술 중 하나로, 사용자들의 과거 행동이나 기호를 기반으로 아이템 간의 관계를 파악하여 사용자에게 적합한 아이템을 예측하거나 추천하는 방법론입니다.

협업 필터링은 크게 두 가지 방법으로 나뉩니다:

사용자 기반 협업 필터링(User-based Collaborative Filtering):
 사용자들의 선호도나 행동 패턴을 분석하여 유사한 취향을 가진 사용자들끼리 아이템을 추천하는 방법입니다. 유사한 사용자들이 선호하는 아이템을 찾아 추천합니다.

아이템 기반 협업 필터링(Item-based Collaborative Filtering):
 아이템 간의 유사성을 계산하여 사용자의 이전 구매나 평가 패턴을 기반으로 비슷한 아이템을 추천합니다. 사용자가 이전에 선호한 아이템과 유사한 아이템을 추천합니다.

협업 필터링은 사용자들의 행동 데이터(평가, 구매 기록 등)를 바탕으로 추천을 수행하기 때문에 추가적인 아이템 정보나 사용자 프로필 등의 외부 데이터가 필요하지 않은 장점이 있습니다. 또한, 사용자의 취향이나 아이템 간의 유사성을 추론할 수 있어, 개인화된 추천을 제공할 수 있는 강력한 방법론 중 하나입니다.





CAM이란?
CAM(CAM, Class Activation Map)은 Convolutional Neural Network (CNN)에서 주어진 입력 이미지의 특정 클래스에 대한 활성화를 시각화하는 기법 중 하나입니다. 이 기법은 네트워크의 예측과 함께 입력 이미지의 어느 부분이 해당 예측에 영향을 주었는지를 시각적으로 나타냅니다.

CAM은 CNN의 마지막 컨볼루션 레이어와 그에 이어지는 글로벌 평균 풀링(Global Average Pooling) 레이어를 활용하여 만들어집니다. 이러한 레이어들은 이미지의 공간적인 정보를 보존하면서 각 클래스에 대한 특성 맵(feature map)을 생성합니다.

CAM은 CNN을 훈련한 후, 네트워크의 가중치를 활용하여 마지막 컨볼루션 레이어의 출력값에 대한 클래스별 가중합을 계산합니다. 이 가중합을 활용하여 특성 맵을 조합하여 해당 클래스에 대한 활성화 맵(Activation Map)을 얻게 되고, 이를 입력 이미지에 덧씌움으로써 네트워크가 어떤 부분을 강조하여 특정 클래스로 분류했는지를 시각적으로 표현할 수 있습니다.

CAM은 시각적 설명 가능한 AI(XAI)의 한 예로, 딥러닝 모델이 이미지를 분류할 때 어떤 부분에 주목하고 있는지를 이해하는 데 활용됩니다. 이를 통해 모델의 예측을 해석하고, 모델이 이미지를 분류하는 데 영향을 주는 부분을 시각적으로 확인할 수 있습니다.




GAN이란?
GAN은 Generative Adversarial Network의 약자로, 생성적 적대 신경망입니다. GAN은 두 개의 신경망인 생성자(Generator)와 판별자(Discriminator)가 적대적인 과정을 통해 서로 경쟁하며 학습하는 모델입니다.

생성자(Generator): 무작위로 생성된 데이터를 실제 데이터처럼 보이도록 가짜 데이터를 생성하는 역할을 합니다. 생성자는 노이즈나 무작위한 입력값을 받아 실제 데이터와 비슷한 데이터를 생성하는 능력을 갖추도록 학습합니다.

판별자(Discriminator): 생성된 가짜 데이터와 실제 데이터를 구별하는 역할을 합니다. 판별자는 입력된 데이터가 실제 데이터인지 생성자에 의해 생성된 가짜 데이터인지를 식별하도록 학습합니다.

GAN의 핵심 아이디어는 생성자와 판별자가 서로 적대적인 과정을 통해 학습함으로써, 생성자는 더 진짜 같은 데이터를 생성하고, 판별자는 더 정확하게 실제와 가짜를 구분하는 능력을 키우는 방향으로 서로 경쟁하며 발전합니다.

GAN은 이미지 생성, 이미지 변환, 자연어 처리 등 다양한 분야에서 사용되며, 진짜 같은 데이터를 생성하는 능력과 품질을 높이기 위해 다양한 변형과 발전된 모델들이 연구되고 있습니다. GAN은 이미지 생성 분야에서 높은 품질의 사진을 생성하는 등 매우 혁신적인 결과를 도출해냈습니다.




엔트로피란?
엔트로피는 정보 이론에서 정보의 불확실성을 나타내는 척도로, 주어진 확률 분포에서의 평균적인 정보량을 의미합니다. 정보의 예측 가능성이 높을수록(불확실성이 낮을수록) 엔트로피 값은 작아지고, 불확실성이 커질수록(예측 가능성이 낮을수록) 엔트로피 값은 커집니다. 정보의 불확실성을 수치적으로 측정하여 데이터 압축, 통신, 확률적 모델링 등에 활용됩니다.


likelihood란? 이를 정규분포에서 어떻게 설명할 수 있을까?
likelihood(우도)는 주어진 통계 모델이 데이터를 설명하는 정도를 측정하는 것으로, 특정 데이터가 주어진 모델에서 얼마나 발생할 가능성이 있는지를 나타냅니다. 정규분포의 경우, likelihood는 주어진 데이터가 특정 평균과 분산을 가진 정규분포에서 나왔을 가능성을 수치적으로 나타내며, 각 데이터 포인트의 확률밀도 함수를 곱하여 전체 데이터셋에 대한 likelihood를 계산합니다.likelihood는 통계적 모델의 적합성을 평가하거나 파라미터 추정에 사용됩니다.



--------------------------------------------------------------------
[고려대 하반기 면접 질문]

객체지향이란?
객체지향 프로그래밍은 현실 세계의 사물을 코드로 표현하는 방법입니다. 객체(Object)는 데이터와 동작을 가진 단위로, 코드를 객체 단위로 구조화하여 작성하는 방식입니다. 캡슐화, 상속, 다형성과 같은 개념을 활용하여 코드를 모듈화하고 재사용성을 높이며, 복잡성을 낮춥니다. 이러한 특성들은 파이썬의 객체지향 프로그래밍을 유연하고 간결하게 만들어줍니다.






가우시안분포란?
"가우시안 분포는 중심극한 정리에 따라 많은 독립적인 확률 변수들의 평균이 정규 분포를 따르는 현상을 설명합니다. 이는 데이터의 분포를 나타내는데 자주 사용되며, 평균과 표준 편차를 가지고 있어 평균 주변으로 대칭적으로 분포합니다. 예를 들어, 키나 체중과 같은 자연적인 데이터, 혹은 측정 오차 등 다양한 현실 세계의 데이터들이 가우시안 분포를 따르는 경우가 많습니다."





조건부 확률 분포란?
"조건부 확률 분포는 한 사건이 다른 사건에 영향을 받는 경우, 즉 조건에 따라 확률이 변하는 경우를 설명합니다. 이는 주어진 조건 하에서의 사건이 발생할 확률을 계산하는데 사용됩니다. 예를 들어, '비가 올 확률이 어떤 특정 날씨 조건 하에서 더 높은가?'와 같은 질문은 조건부 확률을 통해 특정 날씨 조건에 따라 비가 올 확률이 어떻게 달라지는지를 분석할 수 있습니다. 조건부 확률은 베이즈 이론과 많은 통계적 모델링에 적용되며, 여러 분야에서 확률적인 사건을 예측하거나 분석하는 데 사용됩니다."





Independence(독립성)이란?
"독립성은 확률 이론에서 두 사건이 서로 영향을 미치지 않고 서로 독립적으로 발생하는 것을 의미합니다. 만약 사건 A와 B가 독립적이라면, 하나의 사건이 발생하더라도 다른 사건의 발생 여부에 영향을 주지 않습니다. 이는 두 사건 간의 연관성이 적거나 없음을 의미하며, 이러한 독립성은 확률 곱셈의 법칙과 관련하여 A와 B의 결합 확률이 각각의 개별 확률의 곱과 같다는 특징을 갖고 있습니다. 확률 변수들이 독립적이라면, 그들 간의 조건부 확률은 각각의 개별 확률과 같아집니다."





베이지안룰이란?
"베이지안 룰은 사건이 발생한 상황에서 이전에 가지고 있던 사전 정보를 고려하여 확률을 조정하는데 사용됩니다. 이는 베이즈 이론으로서, 사건 A가 발생했다는 가정하에 사건 B가 발생할 확률을 계산하는 방법을 설명합니다. 즉, 사건 B가 발생했을 때 사건 A가 발생할 조건부 확률을 사전에 알고 있는 경우, 이를 통해 사건 A가 발생했다는 새로운 정보를 고려하여 조건부 확률을 업데이트하는데 사용됩니다. 베이지안 룰은 머신러닝, 통계학, 인공지능과 같은 다양한 분야에서 확률적 모델링이나 예측에 사용되며, 사전 정보를 활용하여 보다 정확한 예측을 수행하는 데에 활용됩니다."




행렬의 네가지 space란?
행렬의 네 가지 공간은 Column Space(열 공간), Row Space(행 공간), Null Space(영공간 또는 커널), Left Null Space(좌영공간)입니다.

Column Space(열 공간): 행렬의 열 벡터들이 생성하는 공간을 의미합니다. 이 공간은 열 벡터들의 선형 조합으로 생성된 공간으로, 행렬의 열들이 차지하는 공간입니다.

Row Space(행 공간): 행렬의 행 벡터들이 생성하는 공간을 나타냅니다. 이 공간은 행렬의 각 행 벡터들이 만들어내는 벡터 공간으로, 선형 연립 방정식에서 해 공간을 결정하는 중요한 역할을 합니다.

Null Space(영공간 또는 커널): 행렬과 곱하여 영벡터(영 행렬)를 생성하는 모든 벡터의 집합입니다. 즉, Ax = 0을 만족하는 x 벡터들로 이루어진 공간으로, 선형 시스템의 해가 아닌 부분을 설명합니다.

Left Null Space(좌영공간): 행렬의 전치 행렬과 곱하여 영벡터를 생성하는 모든 벡터의 집합으로, A^T * y = 0을 만족하는 y 벡터들의 공간입니다.

이 네 가지 공간은 선형 대수학에서 행렬과 벡터 연산을 이해하고, 선형 시스템의 해, 랭크, 영공간 등을 분석하는 데 중요한 개념입니다. 각각의 공간은 행렬의 형태와 성질을 이해하는 데 도움이 됩니다.




Determinant(행렬식)이란?
는 정사각행렬(square matrix)에 대해 정의되며, 선형 변환에 의해 부피 확대/축소되는 정도를 나타내는 값입니다. Determinant는 주어진 행렬의 특성과 선형 변환의 특징을 설명하며, 여러 분야에서 활발하게 사용됩니다.

"행렬의 Determinant는 정사각행렬에 대해 정의되며, 선형 변환에 의해 얼마나 부피가 확대 또는 축소되는지를 나타내는 값입니다. 이는 행렬의 특성을 설명하는데 사용되며, 행렬이 특이(singular)한지, 역행렬이 존재하는지, 선형 시스템의 해가 유일한지 여부를 판단하는 데 중요한 역할을 합니다. Determinant의 값이 0이면 역행렬이 존재하지 않거나 선형 변환에 의해 부피가 0으로 축소되는 특성을 갖추고 있습니다. 이러한 특성으로 Determinant는 선형 대수학, 미적분학, 통계학 등 다양한 분야에서 활용됩니다."




SVD란??
특이값 분해(SVD)는 행렬을 세 부분 행렬의 곱으로 분해하는 방법으로, 주어진 데이터에서 중요한 정보를 추출하거나 데이터를 압축하는 데 사용됩니다. 이를 통해 데이터 분석, 차원 축소, 이미지 압축 등 다양한 분야에서 활용됩니다.


"특이값 분해(SVD)는 임의의 행렬을 세 부분 행렬의 곱으로 분해하는 기법입니다. 주어진 행렬 A를 U, Σ, V^T의 곱으로 분해하여 표현합니다. 여기서 U는 왼쪽 특이벡터 행렬, Σ는 대각 특이값 행렬, V^T는 오른쪽 특이벡터 행렬을 나타냅니다. SVD는 데이터의 차원 축소, 행렬 근사, 행렬의 랭크 결정 등에 활용되며, 특히 이미지 압축, 머신러닝에서의 특징 추출, 자연어 처리에서의 잠재 의미 분석 등 다양한 분야에서 중요하게 사용됩니다. 이를 통해 데이터의 중요한 특성을 추출하거나 데이터의 차원을 줄여 계산 효율성을 높이는 등의 목적으로 사용됩니다."




C와 파이썬의 차이를 답변해주세요.
선언적 vs. 동적 타입 언어:
C는 정적 타입(Statically typed) 언어로 변수의 자료형을 선언하고 컴파일 시간에 타입을 검사합니다.
파이썬은 동적 타입(Dynamically typed) 언어로 변수의 자료형을 선언하지 않고, 실행 시간에 자동으로 타입을 결정합니다.

컴파일러 vs. 인터프리터:
C는 컴파일러에 의해 기계어로 변환된 후 실행됩니다.
파이썬은 소스 코드를 바로 해석하며, 인터프리터에 의해 라인 단위로 실행됩니다.

속도와 성능:
C는 저수준의 언어로 직접 메모리를 관리하고, 빠른 속도와 높은 성능을 제공합니다.
파이썬은 추상화된 고수준 언어로 간편하게 사용할 수 있지만, C보다는 속도가 느릴 수 있습니다.

사용 목적:
C는 하드웨어에 가까운 시스템 프로그래밍, 운영체제, 임베디드 시스템 등의 영역에서 많이 사용됩니다.
파이썬은 다양한 영역에서 사용되며, 웹 개발, 데이터 분석, 인공지능, 스크립팅 등의 다양한 용도로 널리 활용됩니다.

문법:
C는 문법이 엄격하고 저수준의 작업을 위한 구조를 제공합니다.
파이썬은 문법이 간결하고 읽기 쉬우며, 빠르게 프로토타입을 만들고 작업할 수 있는 편리한 문법을 제공합니다.

메모리 관리:
C는 개발자가 메모리를 직접 할당 및 해제해야 하므로 메모리 관리에 대한 책임이 있습니다.
파이썬은 가비지 컬렉션 기능을 통해 자동으로 메모리를 관리하여 개발자가 메모리 관리를 신경 쓰지 않아도 됩니다.





리스트와 딕셔너리의 차이를 답변해주세요.
리스트(List)와 딕셔너리(Dictionary)는 파이썬에서 데이터를 저장하는 데 사용되는 자료 구조입니다.

리스트: 데이터를 순차적으로 저장하고 인덱스를 사용하여 요소에 접근합니다. 순서가 있으며, 요소들을 대괄호([])로 묶어 나열합니다. 데이터에 순서가 중요한 경우 사용됩니다.
딕셔너리: 키와 값을 쌍으로 저장하며, 키를 사용하여 값을 검색하거나 수정합니다. 중괄호({})로 키-값 쌍을 표현하며, 데이터의 관련성과 빠른 검색이 필요한 경우 사용됩니다.
리스트는 데이터를 순차적으로 저장하고 인덱스로 접근할 때 유용하며, 딕셔너리는 키를 활용하여 데이터를 효율적으로 관리하고 검색할 때 사용됩니다.



Linked List란 무엇입니까?
Linked List(연결 리스트)는 데이터 요소들이 포인터(링크)로 서로 연결된 데이터 구조입니다. 각 요소는 데이터와 다음 요소를 가리키는 포인터로 구성되어 있습니다.

면접에서 설명할 때는 다음과 같이 답변할 수 있습니다:

"Linked List는 데이터 요소들이 순차적으로 연결된 자료 구조로, 각 요소는 데이터와 다음 요소를 가리키는 포인터(링크)로 이루어져 있습니다. 이 포인터를 통해 연결 리스트의 각 요소가 메모리에 산재되어 있지만, 순차적으로 연결되어 있습니다. Linked List에는 Singly Linked List(단일 연결 리스트), Doubly Linked List(이중 연결 리스트), Circular Linked List(원형 연결 리스트) 등 여러 종류가 있습니다.

Linked List는 데이터의 삽입과 삭제가 배열과 달리 데이터 복사가 필요하지 않고, 포인터를 조정하는 것만으로 이루어지므로 삽입과 삭제 작업이 빠르며, 동적으로 크기를 조절할 수 있습니다. 하지만 데이터에 직접적으로 접근하기 위해서는 순차적으로 탐색해야 하는 단점이 있습니다. 이러한 Linked List의 특성은 메모리의 효율성이나 삽입/삭제 작업의 효율성을 고려해야 할 때 유용하게 활용됩니다."
--------------------------------------------------------------------
[고려대 전반기 면접질문]
1. Renk(계수)란 무엇입니까?
Rank란 행렬이 가지는 차원의 개수를 의미합니다.
Rank는 그 행렬 내에서 선형 독립인 벡터들의 최대 개수를 나타냅니다. 선형독립성은 서로 독립적인 벡터들이 존재한다는 것을 의미합니다.Rank가 낮을수록 행렬 내의 정보가 적고, 높을수록 더 많은 정보를 담고 있는 것으로 해석됩니다. 선형대수학에서 행렬의 Rank는 데이터 분석, 차원 축소, 선형 시스템의 해결 등 다양한 분야에서 중요한 개념으로 활용됩니다.












2. 벡터 공간이란?
벡터 공간(Vector Space)은 덧셈과 스칼라 곱에 대해 일정한 조건을 만족하는 벡터들의 집합입니다. 이 공간은 덧셈, 스칼라 곱에 대해 닫혀있고, 영벡터와 역원이 존재하며, 덧셈에 대해 교환법칙과 결합법칙이 성립합니다. 이러한 특성을 가진 벡터 공간은 다양한 수학적 연산과 분석에 사용되며, 선형대수학과 다른 분야에서 중요한 개념으로 활용됩니다.

(벡터 공간은 두 벡터의 덧셈과 스칼라 곱을 성립하는 벡터들의 집합입니다. 벡터 공간의 요소들은 벡터입니다.)








3. 역행렬을 구하는 방법은?

역행렬(Inverse Matrix)은 주어진 정사각 행렬에 대해 원래 행렬과 곱했을 때 단위 행렬이 되는 행렬을 말합니다. 면접에서 설명할 때, 다음과 같이 답변할 수 있습니다:

"역행렬을 구하는 방법은 보통 가우스-조르단 소거법(Gaussian-Jordan Elimination)을 사용하거나, 행렬식(Determinant)을 이용해 계산합니다. 가우스 소거법을 이용하면 행렬을 단위 행렬로 변환하여 역행렬을 얻을 수 있습니다. 하지만 행렬이 대칭적이거나 정방 행렬이 아닐 경우, 행렬식을 사용해 역행렬을 구하는 것이 더 효율적일 수 있습니다. 역행렬이 존재하려면 해당 행렬의 행렬식이 0이 아니어야 합니다. 역행렬은 선형방정식의 해를 구하는 데 유용하며, 수치해석, 물리학, 컴퓨터 그래픽스 등 다양한 분야에서 활용됩니다."

단위행렬
단위 행렬(Identity Matrix)은 주대각선 원소가 1이고 나머지는 0인 정사각 행렬로, 곱셈의 항등원으로서 다른 행렬을 변화시키지 않고 그대로 유지합니다. 

I로 표기되며, 
I×A=A인 성질을 가집니다. 선형 대수학에서 중요한 개념으로 활용됩니다.






4. 역행렬의 시간 복잡도란?
역행렬의 계산 시간 복잡도는 일반적으로 

big-O notation의 N의 3제곱 = O(n3)

n은 행렬의 크기(행 또는 열의 개수)를 나타냅니다. 따라서 행렬의 크기가 증가할수록 계산에 필요한 시간은 

n의 세제곱에 비례하여 증가합니다.






5. 고유값, 고유벡터란 무엇입니까?
어떤 행렬 A와 열 벡터를 곱하는 행위를 선형 변환이라고 생각할 수 있는데 이때 선형 변환 이후에 반향이 변화하지 않는 벡터를 고유벡터(eigenvector)라고 하고 크기가 변화한 정도를 고유값(eigenvalue)라고 합니다.
(고유값(Eigenvalue)과 고유벡터(Eigenvector)는 정방 행렬에 대한 특별한 성질을 나타냅니다. 고유값은 주어진 행렬이 고유벡터에 작용했을 때, 해당 벡터의 방향을 변하지 않고 스케일만 변경하는 스칼라입니다. 이때 고유벡터는 이러한 변환에 대응되는 벡터를 의미합니다. 고유값과 고유벡터는 데이터 분석, 차원 축소, 행렬 변환 등에 활용되며, 선형 대수학과 머신 러닝에서 중요한 개념으로 활용됩니다.)



6. PCA
PCA란 우리 나라의 말로는 주성분 분석이 되겠습니다. 고차원 데이터를 저차원(차원 축소) 데이터로 축소시키는 알고리즘입니다.
주성분을 알고 있으면 차원을 축소할 수 있고 용량이 큰 데이터를 획기적으로 필요한 메모리 사이즈를 줄일 수 있기 때문에 데이터 전처리에 사용이 가능합니다. 


7. Normal distribution(정규분포)에 대해서 설명
종모양을 가지고 있고 중심이 평균인 분포입니다.

정규분포는 평균과 표준편차가 주어져 있을 때 엔트로피를 최대화 하는 분포이다. 정규분포곡선은 좌우 대칭이며 하나의 꼭지를 가진다.

(정규분포는 평균 주변으로 대칭적인 종 모양의 확률 분포로, 통계학에서 많이 사용됩니다. 이 분포는 자연 현상에서 발견되며, 데이터가 평균 주변에 모이는 경향을 보입니다. 평균과 표준편차에 의해 특성이 결정되며, 중심극한정리에 따라 다수의 독립적인 확률 변수들의 합이나 평균은 정규분포에 근사합니다.)



8. CLT(Central limit thorem)
랜덤 샘플 여러개를 뽑아서 평균을 만들 때 표본의 갯수가 많으면 많을수록 정규분포에 가까워진다.

즉, 어떠한 분포이든 랜덤한 샘플의 갯수가 많다면 무조건 정규분포를 따릅니다.

중심 극한 정리(Central Limit Theorem, CLT)는 통계학에서 중요한 개념으로, 여러 독립적인 확률 변수들의 합이 정규분포에 가까워진다는 원리를 설명합니다. 많은 독립적인 확률 변수들의 평균이나 합은 해당 분포가 무엇이든간에, 그 수가 충분히 크다면 정규 분포를 따르게 됩니다. 이는 표본 평균이나 합이 정규분포에 근사하게 되는 현상을 의미하며, 통계적 추론과 추정에서 널리 활용됩니다.



10. 포인터
어떤 변수의 주소값을 갖는 변수를 포인터라고 부릅니다.

728x90
반응형

댓글