DL 기본 상식

2024. 4. 22. 11:56기술 면접/AI(ML,DL)

볼츠만 머신은 무엇인가요?

  • 가시층과 은닉층, 총 두 개의 층으로 구성된 신경망입니다. Full-connected 형태이며 확률모델로 분류나 선형 회귀 분석등에 사용될 수 있습니다.

 

딥러닝은 무엇인가요? 딥러닝과 머신러닝의 차이는?

  • 딥러닝은 머신러닝이 고도화로 발전된 것으로 사람의 도움 없이 정확한 결정을 내릴 수 있도록 프로그래밍한 신경망을 의미합니다. 
  • 머신러닝과 차이점이라고 한다면 인간의 도움여부라고 이해하고 있습니다. 머신러닝은 여러 feature 중 어떤 feature를 추출할지 사람이 직접 분석하고 판단하는 반면 딥러닝은 모델이 스스로 데이터로부터 특징을 추출하여 학습합니다.

 

하이퍼 파라미터란? 파라미터와 차이점

  • 일단 파라미터란 매개변수로 weight라고도 표현합니다. 데이터를 통해 결정되는 모델 내부 결정계수로 사용자가 조정할 수 없습니다.
  • 반면에 하이퍼 파라미터란 사용자가 직접 설정해주는 값으로 일종의 변수에 대해 실험을 진행할 당시 종속변수에 해당하는 값입니다.
    • 대표적인 하이퍼파라미터는 batch size, learning rate, epoch, activate function 종류 등이 있고, 튜닝 기법으로는 Grid Search, Random Search등이 있습니다

 

Weight Initialization 방법에 대해 말해주세요. 그리고 무엇을 많이 사용하나요?

  • 일반적으로 weight 초기화는 [0,1] 사이의 값을 가지는 random initialization를 사용합니다. 만약 weight가 단일값을 가지게 된다면 back propagation 진행 시 gradient가 동일하고, 지속적으로 같은값을 가지게 됩니다. 이는 weight가 여러개 있는 의미가 사라지게 되므로 단일값으로 설정하지 않고, 만약 0으로 설정하게 된다면 update 자체가 발생하지 않습니다.
  • 추가적으로 최근 ReLU activation function을 주로 활용하는데, 이때는 표준편차가 2/n**(1/2) 인 He initialization을 사용하는 것이 좋다고 알고있습니다.

 

Cost Function과 Activation Function이란?

  • cost function : 비용함수로 즉 목적함수입니다. loss function이라고도 하며 회귀에서는 MSE, 분류에서는 CrossEntropy가 주로 활용됩니다.
  • Activation Function : 활성화 함수라고하며 복잡한 문제를 해결하기 위한 비선형 모델 변환을 수행합니다. layer에서 수행되는 multiply와 같은 선형 함수 수행 뒤에 비선형 함수를 결합함으로써 딥러닝 모델은 비선형 모델이 됩니다. 대표적인 활성화 함수로는 Sigmoid, Tanh, ReLU가 있습니다.

비선형의 의미와 필요성은?

  • 선형이 아니라는 의미로 우선 선형을 설명한다면 y=ax+b와 같이 변수와 가중치로 표현할 수 있으며 동시에 가산성과 동차성을 만족해야합니다. 쉬운말로 + 연산과 * 연산으로만 이루어진 수식을 의미하는 것이라고 말할수 있고, 이를 만족하지 못한다면 비선형이라고 합니다.
  • 딥러닝에서 비선형 함수의 필요성은 여러 층을 깊게 쌓기 위함입니다. 만약 선형함수를 깊게 쌓았다고 가정할 시, y=ax 함수를 여러번 쌓으면 최종 값은 y = (a**n)x가 됩니다. 이는 결국 a**n의 1층 신경망과 동일하기 때문에 깊게 쌓는 이유가 없습니다. 따라서 비선형 함수를 통하여 더 복잡한 표현이 가능해집니다.

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

  • sigmoid : [0,1] 사이 값을 가지는 s자 형태의 단조증가 함수입니다. 최대 기울기는 x=0일때 0.25이며 입력값이 매우 크거나 작을 때 gradient가 0에 가까워 vainishing 문제를 야기할 수 있는 단점이 있습니다.
  • tanh : [-1,1] 사이 값을 가지는 s자 형태의 단조증가 함수로 최대 기울기는 x=0일때 1입니다. 하지만 이 또한 입력값이 매우 크거나 작을 때 gradient가 0에 가까워 vainishing 문제를 야기할 수 있습니다.
  • ReLU : max(0,x) 의 단순한 함수입니다. 음수에 대해서는 gradient가 0으로 update가 진행되지 않는 dead ReLU 문제가 발생할 수 있습니다. 하지만 양수에 대해서는 gradient가 1로 일정하기 때문에 gradient vanishing 문제를 방지하기 위해 고안되었습니다.
  • LeakyReLU : max(0.01x,x) 함수로 ReLU의 음수일 때 dead ReLU 문제를 해결하기 위해 도입된 방법입니다.

**딥러닝 모델이란 layer가 깊게 형성되고, gradient의 back propagation이 더욱 깊이 전달됩니다. 이때 gradient가 chain rule에 의해 깊어질수록 기울기가 연쇄적으로 곱해지게 되는데, sigmoid 혹은 tanh의 경우 [0,1] 사이 값으로 모델의 깊이가 깊어질수록 최종 값이 0에 수렴하는 gradient vainishing 문제가 발생합니다. 따라서 최근에는 ReLU 함수를 주로 사용합니다.

 

ReLU 함수는 어떻게 곡선 함수로 근사하나?

  • 일반적으로 ReLU 함수는 직선함수 두개가 x=0을 기준으로 이어붙인것 이라고 볼 수 있습니다. 하지만 무수히 많은 n각형은 원이 되듯이, ReLU를 여러개 이어붙인다면 특정 방향에서의 직선이 무수히 이어붙게 되며 이는 곡선에 근사한다고 할 수 있습니다.
  • Bias는 왜 있는걸까?

ReLU의 문제점은?

  • 우선 입력값이 0인 경우 0으로 취급하여 해당 뉴런이 0값을 의미하게 되어 더이상 무의미해지고(=dead라고 표현). 이후에 해당 뉴런과 연결된 모든 뉴런 또한 0이 곱해져 dead neurons가 발생합니다. 이를 방지하기 위해 LeakyReLU 함수를 고안하였고, 또 다른 방법으로는 ReLU에 bias를 추가하여 함수를 왼쪽으로 조금 이동시킨다면 모든 뉴런을 활성화 시킬 수 있습니다.
  • 두번째 문제점은 항상 0이상의 값을 출력하기 때문에 활성화값의 평균이 0보다 큽니다. 이는 가중치 업데이트 방향이 동일한 방향으로만 진행되고, 학습속도가 느려질 수 있으므로 batch normalization 또는 zero-centered된 activation function을 활용할 수 있습니다.

 

Batch Noramlization이란?

  • 학습 시 mini-batch를 활용하여 입력의 분포가 평균0, 분산1이 되도록 정규화를 진행합니다. 이렇게 하는 이유는 gradient vanishing 문제를 해결할 수 있고, weight의 초기값에 크게 의존하지 않아도 됩니다. 또한 자체적으로 Regularization 효과가 존재하기 때문에 Dropout 혹은 weight decay와 같은 가중치 규제 방법을 사용하지 않아도 되는 이점이 있습니다.
  • 다만 학습 시에는 mini-batch에 대하여 평균과 분산을 계산 후 정규화를 진행하지만, 추론 시에는 학습 데이터 전체에 대해 평균과 분산을 계산하여 정규화를 진행해야함을 주의해야합니다.

Dropout이란?

  • 사용자가 설정한 확률로 각 뉴런의 활성여부를 결정하는 방법론입니다. 임시적으로 해당 뉴런의 출력을 0으로 만들어 전파가 일어나지 않도록 합니다. overfitting을 방지하기 위한 기법으로 매 iteration마다 활성화되는 뉴런이 달라지므로 앙상블의 효과 또한 기대할 수 있습니다.

 

뉴럴넷의 가장 큰 단점은 무엇인가? 이를 위해 나온 One-Shot Learning은 무엇인가?

  • 사람과 달리 처음 보는 물건에 대해서 다른 물건과 구별해내기 위해서 많은 데이터를 학습해야한다는 점 입니다.
  • Few-shot learning이란 Downstream task의 몇 개의 예시를 보고 적응하여 문제를 해결하는 방법론을 의미하는데, 그 중에서도 one-shot learning은 하나의 예시만 보고도 모델이 적응하여 문제를 잘 해결하는 방법을 의미합니다. 이를 위해서는 기존의 다른 레이블을 많이 학습하여 데이터의 특성을 잘이해하는 pretrained 모델이 필수입니다.

 

Tensorflow와 Pytorch 각각 특징과 차이점

  • 가장 큰 차이점은 딥러닝 구현 패러다임이 다른 것으로 알고 있습니다. Tensorflow는 Define-and-Run, Pytorch는 Define-by-Run입니다.
  • Tensorflow(Define-and-Run) : 코드 실행 환경인 세선은 만들고, placeholder를 이용하여 계산 그래프를 먼저 define. 이후 코드를 실행하는 시점에 데이털르 넣어 Run을 해야합니다. 형성된 그래프는 static-graph 형태로 실행시점에 데이터만 바꿔면 되는 유연함을 장점으로 가지지만 비직관적입니다.
  • Pytorch(Define-by-Run) : 선언과 동시에 데이터를 집어넣고 세션 없이 실행이 가능한 Dynamic-graph 형태이기 때문에 코드가 간결하고 난이도가 낮은 편으로 알고있습니다.

'기술 면접 > AI(ML,DL)' 카테고리의 다른 글

DL 기본 상식 2  (0) 2024.04.22
ML 기본 상식 3  (1) 2024.04.22
ML 기본 상식 2  (0) 2024.04.21
ML 기본 상식  (0) 2024.04.16