학부 졸업 기념, 개념 다시 되짚어보기

2022. 7. 11. 22:32Artificial_Intelligence/Natural Language Processing

인스타보다가 보이저엑스라는 회사에서 인공지능 및 프로그래밍 관련해서 기술질문 써놨길래 지금까지 공부했던 기억을 바탕으로 리프레쉬할겸 한번 풀어보았다.


프로그래밍 인턴 질문 (프로그래밍 질문: 15개)

PNG와 JPG의 차이점은?
PNG → 비손실압축 (원본 훼손X) 
JPG → 손실압축 (원본 훼손O) 
JPEG → 사람이 모를정도로만 원본 훼손(압축효과극대화알고리즘)

Dynamic Programming이란?
동적계획법, 큰문제를 작은문제로 나눠 푸는것. 복잡한 문제 나오면 여러개의 서브 문제로 나눠서 푸는데, 부분 반복 문제와 최적 부분 구조를 가지고있는 알고리즘 풀 때 사용.
부분 반복 문제→어떤 문제가 여러개의 부분문제로 쪼개질 수 있는 문제 (ex. N번째 피보나치 수 구하기 → N-1번쩨 / N-2번쨰 …). 재귀함수로 풀수있음.
최적 부분 구조 → 서브 문제에서 구한 답으로 메인 문제의 최적의 답을 구할 수 있는 것.
메모이제이션(Memoization) 사용.
Top-Down 과 Bottom-Up 방식으로 나뉨.

Virtual Memory란?
가상 메모리, 실제 매모리를 많아 보이게 하는 기술.
= 주기억장치 + 보조기억장치 동시 사용 프로세스가 전부 안올라가도 실행될 수 있는 것처럼 하드 디스크를 좀 사용해서 RAM처럼 작동하게 만듬.
RAM + HDD → 가상 메모리처럼 작동하게..

Semaphore란?
처음들어봄.. 세마포어는 프로세스에서 공유 자원에 접근하는데에 사용하는 변수라고한다.
다른말로는, 공유 자원에 대한 접근을 제한하는 방법으로 사용된다고 하는데, 고전적인 해법이지만 모든 교착 상태를 해결하지는 못한다고한다.

Cache란?
데이터, 값들을 미리 복사해서 잠깐 올려놓는 임시 저장 장소이다.
원본 데이터에 접근하는 시간이 오래걸릴때, 값을 다시 계산하고 동작할때의 시간을 절약할 때 쓰인다.
미리 결과를 저장해놓고, 후에 요청오면 바로 넘겨주는 느낌.

Garbage Collection이란?
쓰뤠기 콜뤡터 메모리 관리하는 기법으로, 동적으로 할당한 메모리 중에 필요없는 것들 해제하는 역할 안쓰이거나 못쓰이는, 어떠한 것도 가르키지 않는 변수들이나 값들을 자동으러 버리는 역할을 함.

Database Index 추가의 장단점은?
장점 → Table 검색 성능(속도) 향상.
정렬되어있기에 조건에 맞는 데이터를 빠르게 찾을 수 있음.
단점 → 인덱스 관리도 해야해서 일이 늘어남. 데이터 용량도 살짝 늘어남.

NoSQL의 장단점은?
정처기 준비 안함 + DB 잘 안씀 = NoSQL이 뭔가요…
Not Only SQL. 정해진 스키마가 없어서 자유롭게 데이터를 저장할 수 있다고 한다.
여기서 스키마란 전반적으로 개체(Entity)랑 속성(Attribute)랑 관계(Relationship)이랑 제약 조건등에 관해 전반적인 명세를 기술한 것이다.

공유기의 원리는?
하나의 공인 IP 써서 여러개의 기기가 인터넷 사용할 수 있게 만드는 네트워크 기기. (=라우터)
연결된 기기가 패킷(데이터의 형식화된 블록. 제어정보+사용자데이터)을 보냄 → Network Address Translation이 다시 재기록해서 외부로 전송 → 패킷받은 서버가 응답 패킷을 공유기로 보냄 → 다시 NAT를 이용해서 패킷을 연결된 기기로 전송함.
간단하게 얘기하면 컴터에서 발신→서버에서 수신→서버에서 발신 →컴터에서 수신 느낌

HTTP/2의 특성은?
뭔가요…
멀티플렉싱,헤더압축,서버푸쉬,우선순위,보안통신 이라고한다…
주요 목표는 전체 요청을 통해 지연 시간을 줄이고, 응답 다중화를 지원하며, HTTP 헤더 필드의 효율적 압축을 통해 프로토콜 오버헤드를 최소화하고, 요청 우선순위 지정을 추가하며, 서버 푸시를 지원 하는 것이라고한다..

비대칭 암호화란?
암호화 할때랑 복호화할때 서로 다른 Key를 쓰는 것.
Private Key와 Public Key가 쌍으로 이룬 형태.
다른말로 공개키 알고리즘이라고 함.

Node.js의 특징은?
벡엔드 개발자가 서버 만질때 쓰는….것…
Chrome V8 JavaScript 엔진 기반 
단일 쓰레드(Single Thread)와 이벤트 기반 
비동기 I/O 처리 (Non-Blocking I/O) 
고성능 네트워크 서버 
개발 생산성 향상 
방대한 모듈 제공 (NPM) 
라고 한다….. 모르겠습니다..

HDD, SSD, DRAM 각각의 성능은?
HDD → 안지워지는 비휘발성 기억장치. 엄청느리지만 쌈.

SSD → HDD에 비해 상대적으로 최근에 나온 비휘발성 기억장치.
HDD보다 훨씬 빠르지만 가격이 좀 더 비쌈.

DRAM → 다이나믹램. 그냥 RAM카드라고 생각하면 쉽다. 휘발성 기억장치이고, HDD랑 SSD랑 달리 매우빠름.
주기억장치랑 보조기억장치의 차이…

SRAM → 스태틱램.  DRAM보다 빠른데 비쌈. 그리고 DRAM보다 메모리용량도 작음. 보통 캐시메모리로 쓰임.

Memory Leak 디버깅은?
메모리 누수 → 어디서 메모리를 계속 점유하고있는지.
메모리 할당 후 해제를 안하고 있으니 메모리만 잡아먹는 것
Google에 Python 메모리 누수 검색..

GIT의 장점은?
협업할 때 매우 편하고 빠름.
병렬 개발 가능.
코드 날리거나 이상해졌을때 다시 복구 가능.
포트폴리오 관리 및 잔디 심어진 양보고 얼마나 성실한지 볼 수 있음.

 

 

딥러닝 인턴 질문
(딥러닝 질문: 10개)

Gradient Descent란?
경사하강법.
딥러닝 학습시 사용되는 최적화 방법(optimizer)중에 하나.
예측값과 정답값과의 차이인 Loss Function의 크기를 최소화시키는 파라미터를 찾는것.
함수의 기울기를 구하면서 기울기가 낮은쪽으로 계속 이동시켜서 최적값에 도달하도록 반복하는 것.
Learning Step Size를 잘 조절해서 글로벌 최소값에 도달할 수 있도록 만들어야함.
  
Sigmoid의 단점은? 
입력값과 상관없이 출력값이 0~1 사이여서 경사하강법 진행 시 Gradient Vanishing 발생함.

 

Validation 세트, Test 세트의 각각의 역할은?
검증용, 실험용
학습할때 잘되는지 볼려고 모델 Train과정에서 Validation 데이터셋 쓰고, 모델 성능 및 실험 결과 보는 마지막 단계에서 Test 데이터셋을 사용해서 끝냄. 단, Test 데이터셋은 학습에서 사용되거나 건드리면 안됌.

 

Auto Encoder란?
인코더를 통해 입력 데이터를 압축시키고 디코더를 통해 다시 확장하는 네트워크 구조.
Representation Learning Task에 신경망을 활용하는 비지도학습 방법.
차원축소를 통해 시간복잡도랑 파라미터가 줄어듬.
→ 인코더가 고차원 데이터를 잘 표현해주는 Latent Vector(차원이 줄어든채로 데이터를 잘 설명할 수 있는 잠재 공간에서의 벡터)를 자동으로 추출하기에 오토인코더라 불림.

 

Dropout의 효과는?
신경망의 뉴런을 부분적으로 생략하는 기법 특정 Feature값이 과도하게 집중되어 학습함으로인해 발생하는 과적합(overfitting)방지, 성능 향상.
매번 랜덤으로 생략하기에, 매번 학습할때 다른 노드로 학습하고, 이렇기에 앙상블 효과도 낼수 있음.

 

CNN의 장점은?
vision쪽에서 이미지 데이터에서 Feature값과 패턴을 찾는데에 유용함.
데이터를 입력받으면 컨볼루션 레이어와 풀링을 반복하면서 특징을 찾고, 모델이 찾은 패턴과 특징으로 학습하면서 결과내기에 좋음
근데, Pooling하면서 정보손실이 있을 수도있고, 깊이가 충분해야함.

 Word2Vec의 원리는?
첫번째 논문에서 CBOW 방식과 Skip-gram 방식이 있고,
두번째 논문에서 Negative Sampling이 있는데,

CBOW는 타겟 단어를 맞추기 위해 인접한 Context를 사용하여 예측하고,
Skip-gram은 반대로 나머지 Context들을 맞추기 위해 타겟단어만 보여주는 방식.
여기서 타겟단어와 나머지 인접한 단어들의 개수? 범위설정?하는 개념이 Window 개념.
네거티브 샘플링은 Skip-gram이랑 똑같은데 윈도우 상에 없는 단어를 보여주는 방식.

 

Adam Optimizer의 동작은?
ADAM을 많이 쓰긴 하지만.. 어떻게 동작하는지는… 손실함수 값 최소화 되는 방향으로 동작하지 않을까요…
RMSProp + Momentum 섞어서 쓴 알고리즘이라고 하는데
RMSProp → 이전 정보 상황 보면서 스텝사이즈 조절하면서 탐색
Momentum → 스텝방향을 설정. 다시 돌아갈 수도있음.
ADAM → 방향과 스텝사이즈를 적절하게 합쳐서,,,

 

Batch Normalization의 동작은?
활성화 함수를 통해 나오는 값들을 정규화 함.
배치별로 다양한 분포를 가질 수 있으니, 매 Iteration(=미니배치) 하나씩 지나면서 가중치가 업데이트될때마다 정규화를해서 훈련 시에 각 층의 활성화 값이 고르게 퍼지도록 하는 기법임.
각 배치별로 평균과 분산을 이용해 정규화 하는 것으로, 레이어 사이사이에 보통 평균 0, 표준편차 1로 데이터 분포를 조정하여 다음 레이어에 넘겨주는 방식으로 동작함.

 

CycleGAN이란?
비지도학습 GAN
Unpaired Data를 사용하여 인풋X를 아웃풋Y처럼 변환시키는 GAN의 한 종류.


딥러닝 정규직 질문
( 딥러닝 질문: 10개 )

Gradient Descent란?
경사하강법. 위에 얘기했으니 패스

 

Loss Surface란?
Surface란 용어를 서피스 노트북말고 딥러닝쪽에서 들어본적이 없었따..
검색을 해보니 Loss Function이 내놓은 예측값과 실제값의 차이를 나타내는 지표라고 한다.
직역하면 오차 표면이니 각각 Loss function을 gif로 설명할때 보여주었던 그래프상의 3D loss값 모습인 듯 하다.

 

Attention이란?
집중하는 기법.
NLP로 설명하자면, 디코더에서 출력 단어를 예측하는 매 Time-step 마다 인코더에서의 모든 단어 중에서 예측할 값과 연관이 있는 부분을 더 집중해서 보는 것.
Query와 Keys, Values 로 이루어져 있음.
주어진 쿼리에 대해 모든 Key와 유사도를 구하고, 해당 유사도를 가중치로해서 Key와 매핑되어 있는 각 Value에 반영하고, 유사도가 반영된 Value를 모두 가중합해서 리턴함.

 

Transformer란?
Attension is all you need 논문에서 나온 모델
기존 Seq2Seq 구조의 인코더-디코더를 어텐션으로 구현한 모델
RNN사용하지 않지만 포지셔널 인코딩을 통해 각 단어의 위치 정보를 얻을 수 있음.

 

Collaborative filtering이란?
추천시스템에 쓰이는 개념으로만 알고 한번도 알아본적이 없다..
추천시스템의 협업 필터링에 딥러닝을 적용한 모델이라고 한다.

 

Few-Shot Learning이란?
메타러닝(방법을 배우는 것)의 한종류
NLP로 설명하자면, 작업에 대한 설명을 명시해주고 2개 이상의 예제를 던져준 다음, prompt를 던져주면 맞추는 방식으로, 특정 Task에 특화된 모델 학습이 아닌 전체적으로 학습한 다음에 새로운 예제를 몇개 주고, 이를 학습한 예측모델을 사용해 모델의 지식을 이용해서 추론하는 학습방식.

 

Federated Learning이란?
처음들어봤다.. 연합 학습이라는데,User들의 Data를 Server에 보내지 않고 그대로 둔 상태에서 학습하는 모델이라고 한다.
데이터는 모바일 환경에 놓고, 모바일 컴퓨팅 파워를 사용해 글로벌 모델을 학습한 다음 결과만 가져와서 서버에서 종합하는 형태로, 서버에서 데이터 받는게 아닌 모델의 Weight를 받아서 학습하는 개념인 듯 하다. 이번 대학원 수업으로 수강신청했으니 공부해봐야겠다. https://github.com/Liky98/Federated_Learning/blob/master/README/Week3%203f7a8157a4b6403ab14d2ee8e5bcf967.md

 

SVD란?
서포트 백터 머시기인가 했는데 Singular Value Decomposition 이였다..
특이값 분해 차원 축소를 하는 기법인 듯 하다.
중심극한정리란?
동일한 확률 분포를 가진 독립 확률 변수들의 평균 분포가 적당히 크면 정규분포에 가까워진다는 개념.
어느 한 집합에서 100개의 값들이 있다고 했을 때, 그 값들 중에 30개씩 1,000번을 뽑았을 때, 그 30개의 값의 평균이 표본 평균이고, 이 표본 평균은 정규분포에 가까워진다는 개념이다.



막상 그냥 사용하던 기법이나 개념들도, 뭐냐고 물어보면 한 5초 정리하고 얘기해야 할 것 같다.

바로 얘기했다면 어버버했을 듯한 질문들이였다.

프로그래밍 기술 질문쪽은 학부때 공부했던 느낌 + 정처기 문제 같다.


그리고 확실히 딥러닝 인턴쪽 질문은 '기초 개념 느낌 + 관심있는지' 판단하는 문제들 같고,

정규직 질문같은 경우에는 해당 분야를 얼만큼 이해하고 공부했는지 판단하는 문제같다.


개념 다시한번 다잡고 연구하러 갑니다 춍춍춍..

728x90