본문 바로가기
모의면접문답

문답지 - 2

by 피라냐콜라다 2023. 4. 7.

1. 정규화(normalization)를 왜 해야할까요? 정규화의 방법은 무엇이 있나요?

정규화(Normalization)란, 머신러닝 모델에서 입력 데이터의 값을 일정한 범위로 조정하여 학습을 개선하는 기술이다. 다음은 정규화를 하는 이유와 5가지의 방법이다.

1. 학습 안정성 향상

입력 데이터의 범위가 크게 차이나면 학습이 불안정해질 수 있다. 이러한 경우 정규화를 통해 입력 데이터의 범위를 조정하여 학습 안정성을 향상시킬 수 있다.

2. 과적합 방지

과적합 문제는 학습 데이터에 대해 과도하게 학습된 모델이 새로운 데이터에 대해 일반화 능력이 떨어지는 문제이다. 이를 방지하기 위해서 정규화를 사용할 수 있다.

3. 모델 성능 개선

정규화를 통해 입력 데이터의 범위를 조정하면, 모델의 성능을 개선할 수 있다. 특히, 딥러닝 모델에서는 입력 데이터의 정규화가 성능에 큰 영향을 미치는 경우가 많다.

4. 기울기 소실 문제 해결

일부 활성화 함수(예: sigmoid)는 입력값이 일정 범위를 벗어나면 기울기가 매우 작아져서 기울기 소실 문제(Vanishing Gradient Problem)가 발생할 수 있다. 이를 방지하기 위해서 정규화를 사용할 수 있다.

5. 학습 편향 방지

여러 독립 변수에 대해 입력 데이터가 다른 분포로 분포해 있을 경우, 더 큰 범위에 분포된 데이터가 더 큰 gradient를 가지기 때문에 학습이 해당 데이터에 편향되는 현상이 발생할 수 있다. 정규화를 통해 이를 방지할 수 있다.

 

방법

1. Min-Max Normalization: 최댓값을 1, 최솟값을 0으로 하여 데이터를 0과 1 사이의 값으로 변환한다.

2. Z-score Normalization: 데이터를 평균이 0, 표준편차가 1인 정규분포로 변환한다.

3. Log Transformation: 데이터에 로그를 취해 정규분포에 가깝게 만든다.

4. Batch Normalization: 각 batch에서의 입력값 분포를 정규화하여 학습 안정성을 향상시킨다.

5. Instance Normalization: 각 데이터 샘플에서의 입력값 분포를 정규화한다. 위와 같이 다양한 방법으로 정규화를 수행할 수 있다. 선택할 방법은 데이터의 특성, 모델의 구조 등에 따라 다르며, 적절한 방법을 선택하는 것이 중요하다.

2. Receptive field를 넓히는 방법으로 무엇이 있을까요?

크게 5가지의 방법이 있다.

1. kernel 크기를 키운다

2. 여러개의 convolutional layer를 중첩시킨다.

3. dilated convolution을 한다

→ kernel에 zero padding을 추가해 강제로 receptive field를 늘리는 방법이다

→ pooling을 수행하지 않고도 receptive를 크게 가져갈 수 있기 때문에 spatial dimension 손실이 적다

→ 대부분의 weight가 0이기 때문에 연산 효율이 좋다

4. pooling을 한다

5. strided convolution을 한다

→ strided convolution의 경우 pooling과 비슷한 역할을 하지만 학습을 위한 parameter가 추가되기 때문에 학습이 더 잘되는 효과가 있다.

3. 오버피팅일 경우 어떻게 대처해야 할까요? 

오버피팅이 발생할 경우 모델의 학습을 방해하는 여러가지 방법을 쓸 수 있다.

  1. early stopping 학습을 일찍 중단시켜 학습을 방해한다.
  2. batch의 크기를 줄인다 → flat minimizer로 만들어 input에 조금 차이가 있어도 유사한 결과가 나오게 된다.
  3. parameter norm decay → MSE의 크기를 줄여준다.
  4. data augmentation
  5. noise robustness → data와 hyperparameter에 noise를 넣어준다.
  6. label smoothing → cutmix와 같이 data와 label을 섞어준다.
  7. dropout → 일부 뉴런을 죽이고 학습한다.
  8. batch normalization → 각 batch의 정보를 정규화한다.

4. 알고있는 Activation Function에 대해 알려주세요. (Sigmoid, ReLU, LeakyReLU, Tanh 등) 

sigmoid → 1/1+e^-x 양 끝단으로 갈 때 기울기가 0 이 되어서 vanishing gradient가 발생한다. 0~1사이,, 중간값이 0.5로 수렴이 느리다.

tanh → 1~-1 사이의 값을 가지는 함수로, 마찬가지로 vanishing gradient문제가 있다.

ReLU → max(0,x) → vanishing gradient 문제를 해결했다, 그러나 음의 입력값에 대해서는 0만 반환하는 dead ReLU 문제가 있다.

LeakyReLU → max(0.01x, x) → dead ReLU 문제를 해결했다.

ELU → x<0 → a(e^x -1), x≥0 → x ⇒ a=1일 경우 x=0지점에서 미분가능하여 경사하강법의 속도를 높여줌, 그러나 ReLU변종들중 계산이 느리다.

maxout → relu의 모든 장점을 가지지만 계산이 복잡하다.

5. Fully Connected Layer의 기능은 무엇인가요?

Fully Connected Layer는 인공 신경망에서 가장 기본적인 레이어 중 하나로, 입력 데이터의 모든 뉴런과 출력 데이터의 모든 뉴런이 서로 연결된 형태로 이루어진 레이어이다. 이전 레이어의 출력값을 입력으로 받아 각각의 뉴런에서 가중치와 편향을 곱한 뒤 활성화 함수를 적용하여 출력값을 계산한다.

입력 데이터의 형태가 고차원인 경우에는 연산량이 매우 커지는 문제가 발생하기 때문에, 이러한 경우에는 CNN과 같은 다른 아키텍처를 사용하기도 한다.

또한 CNN을 거친 이후 FC layer가 적용되는 AlexNet, VGGNet, ResNet 등이 있는데 이 모델들에서는 CNN에서 추출된 feature map을 1차원 벡터로 변환하고 softmax함수를 적용해 분류 문제를 해결하는 역할을 한다.

'모의면접문답' 카테고리의 다른 글

문답지 - 1  (0) 2023.03.30

댓글