가. 머신러닝/딥러닝
1. Cross Validation 이란?
- 교차검증
- trian set을 train set과 validation set으로 분리한 뒤, validation set을 사용해 검증하는 방식이다.
- 모든 데이터셋을 훈련에 활용해 정화독를 향상시킬 수 있고 underfitting을 방지할 수 있다.
- 평가 결과에 따라 좀 더 일반화된 모델을 만들 수 있다.
- Iteration 횟수가 많기 때문에 모델 훈련/평가 시간이 오래 걸린다.
- 검증기법 : 홀드아웃 교차검증,
K-Fold Cross Validation(k-겹 교차 검증), Stratified K-Fold Cross Validation(계층별 k-겹 교차 검증)
2. Gradient Descent란?
- 경사하강법 알고리즘
SGD(Stochastic gradient descent)
- 경사하강법이라고 하며, 1차 미분계수를 이용해 함수의 최솟값을 찾는 알고리즘이다.
- step size를 조정해가며 최솟값을 찾아가는 과정이다.
- 실제 분석할 함수들이 대부분 닫힌 형태의 함수가 아니라 함수의 형태가 복잡하여
미분계수와 그 근을 계산하기 어려워서 미분계수가 0인 지점을 찾는 방식이 아닌
Gradient Descent를 이용해 함수의 최소값을 찾는다.
- 컴퓨터로 미분 계수를 계산하는 것보다 Gradient Descent로 구하는 것이 비교적 쉽기 때문이기도 하다.
- 데이터 양이 매우 큰 경우에도 계산량 측면에서 더 효율적으로 해를 구할 수 있다.
3. Local Minima를 해소하기 위한 방법
- 지역적으로 미분값이 0이 되는 지점을 Local minima라고 한다.
- 기존의 경사하강법으로는 이런 문제를 해결할 수 없어 모멘텀(Momentum)을 도입하여 문제를 해결할 수 있다.
- Learnging Rate에 일종의 물리학적인 관성의 일종인 모멘텀 개념을 추가하게 되면,
직적에 계산된 기울기를 고려하여 일정한 비율로 계산하게 된다.
- 이렇게 하면 갑자기 양수->음수, 음수->양수로 넘나드는 경우가 줄어들게 되고,
완만한 경사를 더 쉽게 타고 넘을 수 있게 된다.
4. Normalization과 Regularization의 차이는?
Normalization(정규화)
- 값의 범위를 0~1 사이의 값으로 바꾸는 것
- 학습 전에 scale 큰 feature를 조정하는 scaling하는 것을 말한다.
- Minmax scaler의 경우는 0과 1로 정규화를 진행하고,
Activation function이 tanh와 같은 경우 -1 ~ 1로 정규화를 한다.
Regularization(표준화)
- Weight를 조정하는데 제약을 거는 기법이다.
- Overfitting을 막기 위해 사용하고
- L1 Regularization, L2 Regularization이 있다. 이것이 무엇인지 찾아보자
- 정규화와 차이 알
5. Batch Norm이란?
- 가우시안 범위로 Activation을 유지시키는 아이디어다.
- 학습을 시작할 때 newwork가 unit gaussian distribution을 취할 수 있도록 만들어 준다.
- Unit gaussian으로 Normalize 된 값들은 감마로 스케일링 효과를 주고, 베타로 이동 효과를 줄 수 있다.
- gradient(기울기)의 흐름을 보다 원활하게 해주며 결국 더 학습이 잘되게 해준다.(robust)
- Batch Norm을 하면 다양한 초기화 기법들을 사용해볼 수 있다.
- Batch 단위로 한 레이어에 입력이 들어오는 모든 값의 평균과 분산을 구한다.
- 평균과 분산값을 이용해 Normalization을 해주는 것이다.
- Batch Norm은 미분이 가능한 함수이다.
- Training(훈련) 단계에서 사용되고, Test시에는 사용하지 않는다.
6. Activation Function에서 ReLU를 많이 사용하는 이유는?
- 활성화 함수로 Relu를 많이 사용하는 이유는 0이나 무한으로 수렴하지 않아
신경망의 성능이 많이 개선되었기 때문에 자주 활용된다.
Sigmoid : 함수값 (0,1)로 제한
- Logistic 함수라고 불리기도 한다.
- 선형인 퍼셉트론에서 비선형값을 얻기 위해 사용한다.
- 함수의 중간값이 1/2라 최적화 과정이 느리다.
Hyperbolic Tangent Function(하이퍼볼릭탄젠트)
- 쌍곡선 함수중 하나이다.
- 시그모이드 함수를 transforamtion해서 얻을 수 있다.
- 함수의 중간값을 0으로 맞춰 최적화 과정이 느려지는 문제를 해결했다.
ReLU
- 앞의 두 함수에 비해 학습 속도가 빠르다.
- 연산 비용이 크지 않고, 구현이 매우 간단하다.
- x < 0 인 값들에 대해서는 기울기가 0이기 때문에 뉴런이 죽을 수 있는 단점이 존재한다.
Leaky ReLU
- Dying ReLU현상을 해결하기 위해 나온 함수이다.
- 0 대신 0.01 같은 작은 수를 사용한다.
7. CNN이란?
- 합성곱 연산
- 일반적으로 Computer Vision Task에서 사용된다.
- CNN은 여러개dml Convolution(합성곱)을 쌓는다.
- 이것은 필터의 역할을 하면서, 이미지에서 필터와 비슷한 지역적인 정보가 담긴 feature들을 뽑는다.
- 엣지 성분, blob 성분, texture과 object와 같은 복잡한 패턴에 대해서도 feature를 추출할 수 있다.
8. RNN이란?
- Recurrent Neural Network
- 주로 Sequential(연속적인) 데이터들을 학습시킬 때 사용되고 주로 자연어 처리, 음성신호를 처리할 때 사용한다.
- 타입 스텝마다 순환 뉴런들이 있고, 이전 셀의 타임 스텝의 출력이 다음 스템이 셀의 입력으로 들어가게 된다.
- RNN의 Long term dependency의 단점을 해결하기 위해 LSTM, GRU가 있다.
9. Overfitting이란?
- 과적합
- 모델이 학습데이터에 대해 너무 과도하게 학습되어 Traing 정확도는 매우 높지만,
Validation이나 Test에서는 정확도가 떨어지는 것을 말한다.
- Train Loss만 떨어지고 Validation Loss가 오르기 시작하는 지점이 보통 Overfitting 이 되고 있다고 판단할 수 있습니다.
- 과적합을 해결하기 위해서는 모델의 복잡도를 줄이고 데이터의 양을 늘린다.
- 모델의 복잡성을 줄이기 위해서는 Regularization을 적용한다.
Regularization
- L1 Regularization : 가중치 w들의 절대값 합계를 비용 함수에 추가한다.
- L12Regularization : 모든 가중치 w들의 제곱합을 비용 함수에 추가한다.
10. Dropout
- 과적합을 방지하는 방법
- 신경망의 일부를 사용하지 않는 방법이다.
- 매번 랜덤하게 사용할 신경망을 선택함으로써 다른 신경망들을 앙상블하여 사용하는 것 같은 효과를 내어
과적합을 방지한다.
11. Optimizer 종류
- 최적화
GD : full-batch
SGD : mini-batch를 활용하여 빠르게 weight를 수정하며 학습한다.
Momentum : SGD에 모멘텀 개념을 추가한 것이다. 이전의 batch 학습결과도 반영한다
NAG : ?
Adam : v와 h가 처음에 0으로 잘못 초기화되는 문제를 해결하기 위해 고안되었다.
Adagrad : 변동이 큰 경우는 학습률을 감소시키고, 변동이 적은 경우는 학습률을 증가시킨다.
RMSProp : Adagrad에서 어느순간 h가 너무 커져서 학습이 안되는 것을 개선하였다.
복잡한 다차원 곡면에서 학습이 가능하다.
AdaDelta : ?
12. Loss란?
- 오류를 측정하는 손실함수
- 일반적으로 손실함수, 비용함수라고 칭한다.
- 모델의 예측 값 vs 실제 값의 차이를 표현하는 지표인다.
- 이 값이 낮을수록 모델이 예측을 잘 했다고 해석할 수 있다.
회귀의 Loss
- MAE(평균 절대 오차, Mean Absolute Error) : 오차의 절대값을 모두 더하고 개수로 나누어 평균을 낸 값이다. 최적값에 수렴하 기 어렵다.
- MSE(평균 제곱 오차, Mean Square Error) : 오차를 제곱하여 모두 더하고 개수로 나누어 평균을 낸 값이다. 최적값에 수렴하기 용이하다.
- RMSE(평균 제곱근 오차, Root Mean Square Error) : MSE에 루트를 씌운 지표이다. 제곱해서 생기는 왜곡이 줄어 오차를
직관적으로 보여준다.
분류의 Loss
- Cross-Entropy(CEE) : Classification Task 에서 사용되는 대표적인 손실 함수이다. one-hot encoding일 경우에만 사용 가능하다.
- Binary Cross-Entropy : 이진 분류에서 사용된다.
- Categorical Cross-Entropy : 멀티클래스 분류에 사용된다.
Triplet Loss
- 보통 벡터, 행렬 학습과 같은 임베딩 학습할 때 사용하며 유사성을 학습하는데 사용된다.
- 이 손실함수는 유클리디안 거리 함수를 사용하여 설명할 수 있다.
Focal Loss
- Object Detection에서 정확도를 향상시키기위해 CEE를 reshape(재설계)한 것이다.
- Object detector는 크게 one-stage, two-stage로 구분되는데
극단적인 클래스 불균형으로 일어난 one-stage의 낮은 정확도를 해결하기 위해 CEE를 재설계하였다.
- one-stage detector는 YOLO, SSD 등이 있으며 속도는 빠르지만 정확도가 낮음
- two-stage detector는 R-CNN 계열이며, 속도는 느리지만 정확도는 높음
13. 성능평가 지표란?
14. Region proposal 추출방법
- R-CNN은 Selective Search와 같은 전통 computer vision 알고리즘을 사용한다.
나. 자료구조와 알고리즘
1. 자료구조
- 스택 : 세로로 된 바구니와 같은 구조로 Fist-in-Last-out 구조이다.
- 큐 : 가로로된 구조로 먼저 넣게 되는 자료가 가장 먼저 나오는 First-in-First-Out 구조이다.
- 트리 : 정점과 간선을 이용해 사이클을 이루지 않도록 구성한 Graph의 특수한 형태로,
계층이 있는 데이터를 표현하기 적합하다.
- 힙 : 최댓값 또는 최솟값을 찾아내는 연산을 쉽게 하기 위해 고안된 구조로,
부모의 키값이 자식의 키값보다 작지 않거나(최대힙),
부모의 키값이 자식의 키값보다 크지 않은(최소힙) 완전이진트리이다.
- 해시테이블 : (Key, Value)로 데이터를 저장하는 자료구조 중 하나로 빠른 데이터 검색이 필요할 때 유용하다.
해시테이블은 key값에 해시함수를 적용해 고유한 index를 생성하여 그 index에 저장된 값을 꺼내오는 구조이다.
해시테이블은 고유한 index로 값을 조회하기 때문에 평균적으로 O(1)의 시간복잡도를 가진다.
- ArrayList : 원하는 데이터에 무작위로 접근할 수 있다.
리스트의 크기가 제한되며 크기 재조정은 많은 연산이 필요하다.
데이터 추가/삭제 시 임시 배열을 생성하여 복제해야해서 시간이 오래 걸린다.
스택을 구현할 때 좋다.
- LinkedList : 리스트의 크기에 상관없이 데이터를 추가할 수 있다.
노드를 추가/삭제할 때 연결만 하므로 연산이 빠르다.
무작위 접근이 불가능하며, 순차 접근만이 가능하다.
큐를 구현할 때 쓰면 좋다.
- 레드블랙 트리 : 모든 노드를 빨간색 또는 검은색으로 칠하고 연결된 노드들의 색이 중복되지 않도록 관리한다.
2. 정렬 알고리즘
- Quick 정렬(시간복잡도 구하는 방법) 최악 O(n^2) 평균
- Merge Sort(병합정렬)
- Heap 정렬
3. 로그(Logarithm)
- 로그란 어떤 임의의 수를 특정 base로 하여 이에 대한 거듭제곱 수를 표현하고자 할 때,
그 정확한 지수값(exponent)를 표시하기 위해 고안된 것이다.
log2(8)=3 // base2를 몇 번 곱하면 8이 되는지에 대해(=3) 수학기호로 표현한 것
https://m.blog.naver.com/davidj09/221103452305
4. 음함수와 편미분을 통한 연쇄법칙(Chain Rule)
다. 웹 프로그래밍
1. Restful API
- Http 통신에서 어떤 자원에 대한 CRUD 요청을 Resource와 Method로 표현하여 특정한 형태로 전달하는 방식이다.
- 항상 연결되어있는 것이 아니라 요청에 의해 전달하는 방식이다.
2. 메모리 구조
- 코드 영역 : 실행할 프로그램의 코드
- 데이터영역 : 전역변수와 정적 변수가 저장된다.
- 힙영역 : 사용자의 동적 할당이 이뤄지는 영역으로 런타임에 크기가 결정된다. 자바에서는 가비지 컬렉터가 자동으로 정리를 해준다.
- 스택영역 : 지역변수, 매개변수 등이 저장되며 컴파일 타임에 크기가 결정된다. 함수의 호출이 완료되면 소멸한다.
3. 프레임워크와 라이브러리의 차이
- 라이브러리 : 사용자가 흐름에 대한 제어를 하며 필요한 상황에 가져다가 쓸 수 있다.
- 프레임워크 : 전체적인 흐름을 자체적으로 제어한다.
- 프레임워크를 사용하면서 사용자가 관리해야할 부분을 프레임워크에 넘겨 신경써야할 것을 줄이는 것을 제어의 역전(IoC)라고 한다.
-> 즉 실행 흐름에 대한 제어 권한이 어디에 있는지에 따라 구분이 된다.
- 병렬 처리 프레임워크의 종류와 특징 : Hadoop, Spark
4. 동기와 비동기의 차이
- 동기 방식 : Synchronous 요청을 보내고 실행이 끝나면 다음 동작을 처리하는 순차적인 진행
- 비동기 방식 : Asynchronous 여러가지 요청을 동시에 처리한다. 작업이 완료될 때까지 기다리지 않기 때문에 자원을 효율적으로 사용할 수 있다.
5. SQL Injection
- 특수문자 및 SQL 예약어들을 입력하여 조건문을 참으로 처리하게 해서 SQL을 실행하는 웹해킹기법이다.
6. 도커와 쿠버네티스
- 도커는 컨테이너 기반의 가상화 기술로 쉽고 빠르게 실행 환경을 구축할 수 있다.
- 하드웨어가 아니라 컨테이너를 가상화하여 GuestOS를 따로 설치하지 않아도 된다.
- 도커를 통해 구동되는 컨테이너를 관리하기 위해 쿠버네티스가 등장하게 되었다.
7. GET과 POST 차이
- GET은 데이터를 조회하기 사용되는 방식으로 데이터를 헤더에 추가하여 전송하는 방식이다. URL에 데이터가 노출된다.
- POST는 데이터를 추가 또는 수정하기 위해 사용되는 방식으로 데이터를 바디에 추가하여 전송하는 방식이다.
8. OSI 7계층
- 7계층(응용계층) : 어플리캐이션 프로그램
- 6계층(표현계층) : 데이터의 형식(Format)을 정의하는 계층
- 5계층(세션계층) : 통신을 하기 위해 세션을 만드는 계층
- 4계층(전송계층) : 데이터의 전송을 담당하는 계층
- 3계층(네트워크계층) : 패킷을 목적지까지 가장 빠른 길로 전송하기 위한 계층
- 2계층(데이터링크계층) : 데이터의 물리적인 전송꽈 에러 검출, 흐름제어를 담당하는 계층
- 1계층(물리계층) : 데이터를 전기 신호로 바꾸어주는 계층
9. TCP/IP 4계층(계층/데이터단위/전송주소)
- 4계층(응용계층/Data,Message/-) : 응용프로그램 간의 데이터 송수신, 파일 전송, 이메일, FTP, HTTP, SSH, Telnet, DNS, SMTP
- 3계층(전송계층/Segment/Port) : 호스트 간의 자료 송수신 게이트웨이 장비를 통해 TCP, UDP, RTP, RTCP 포트로 전송
- 2계층(인터넷계층/Packet/IP) : 라우터를 활용하여 논리적 주소 지정 및 경로 지정
- 1계층(네트워크엑세스/Frame/MAC) : 실제 데이타인 프레임을 송수신
10. HTTP 프로토콜이란?
- HTTP(Hyper Text Transfer Protocol)이란 서버/클라이언트이 데이터를 주고 받기 위한 프로토콜이다.
- TCP/IP 위에서 작동한다.
- HTTP는 상태를 가지고 있지 않은 Stateless한 프로토콜이며, Method, Path, Version, Headers, Body등으로 구성된다.
'인공지능 대학원 > 면접 후기' 카테고리의 다른 글
[인공지능 대학원/특수대학원]2022년 후기 한양대 인공지능대학원 면접 합격 후기 (0) | 2022.09.25 |
---|---|
[인공지능 대학원/특수대학원]숭실대학교 정보과학대학원 인공지능학과 합격 후기 (0) | 2022.09.13 |
[인공지능 대학원/특수대학원]한양대학교 인공지능융합대학원 인공지능시스템학과 합격 후기/합격 스펙 (4) | 2022.09.11 |
[인공지능 대학원/특수대학원]국민대학교 소프트웨어융합대학원 인공지능전공 합격 후기/합격 스펙 (0) | 2022.09.11 |