728x90
반응형

가. 머신러닝/딥러닝

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등으로 구성된다.

 

 

 

728x90
반응형

+ Recent posts