기본기 다지기 18

[자료구조] 비선형 자료구조(힙, 우선순위 큐, 맵, 셋, 해시테이블)

비선형 자료구조(힙, 우선순위 큐, 맵, 셋, 해시테이블)책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 힙2. 우선순위 큐3. 맵4. 셋5. 해시테이블 비선형 자료 구조란 요소가 일렬로 나열되어 있지 않고 순서나 관계가 복잡한 자료구조를 말한다.종류로는 트리, 그래프, 힙, 우선순위 큐, 맵, 셋, 해시테이블이 있다. (아래에서는 힙부터 설명한다.) 1. 힙  - 힙은 완전 이진 트리 기반의 자료구조로, 각 노드의 값이 특정 규칙에 따라 정렬된 구조이다.    - 최소힙(Min-Heap): 루트 노드에 가장 작은 값이 위치한다.    - 최대힙(Max-Heap): 루트 노드에 가장 큰 값이 위치한다.   - 힙의 삽입과 삭제는 아래와 같이 ..

[데이터베이스] 인덱스

인덱스책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 인덱스의 필요성2. 인덱스의 효율성    2.1 트리 구조    2.2 대수확장성3. 인덱스 만드는 방법    3.1 MySQL    3.2 MongoDB4. 인덱스 최적화 기법  1. 인덱스의 필요성- 인덱스(index)는 데이터베이스에서 테이블의 데이터를 빠르게 검색하기 위해 사용하는 데이터 구조이다.- 아래 그림과 같은 책의 '찾아보기'섹션에 비유할 수 있다.  '찾아보기'를 통해 내가 찾고자 하는 항목이 본문의 어느 위치에 있는지 빠르게 확인할 수 있다.  2. 인덱스의 효율성- 인덱스가 효율적인 이유는 크게 균형 잡힌 트리 구조와 트리 깊이의 대수확장성 때문이다.    2.1 트리..

[운영체제] CPU 스케줄링 알고리즘

CPU 스케줄링 알고리즘책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 스케줄링이란?2. 스케줄링 알고리즘의 종류  2.1 비선점형 방식    2.1.1 FCFS    2.1.2 SJF    2.1.3 우선순위  2.2 선점형 방식    2.2.1 라운드 로빈    2.2.2 SRF    2.2.3 다단계 큐 1. CPU 스케줄링이란?  - 스케줄링(scheduling)은 자원을 어떤 시점에 어떤 프로세스에 할당할지 결정하는 것이다.                                                ↳여기서는 CPU를 의미함  - 목적: 자원을 효율적으로 이용하고, CPU를 공정하게 사용할 수 있도록 한다.  - 스케줄링 방..

[네트워크] IP주소

IP주소책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. ARP  1.1 ARP  1.2 RARP2. 홉바이홉 통신3. IP 주소 체계4. IP 주소를 이용한 위치정보 1. ARP  - 컴퓨터와 컴퓨터 간의 통신은 MAC주소를 기반으로 한다.   1.1 ARP (Address Resolution Protocol)    - IP주소를 MAC주소로 변환한다.     Q1: (필요성) 왜 IP주소를 MAC주소로 변환하는가?      - 패킷이 목적지로 도착하려면 최종적으로 MAC 주소가 필요하다.         IP 주소만으로는 로컬 네트워크 내에서 물리적인 장치를 구분할 수 없기 때문이다.     - 절차      ① A가 보내고자 하는 메세지를 ..

[기본이론] 최적화 방법6- Adam (수식o)

최적화 방법6- Adam앞에서 RMSProp까지 정리했다. 이어서 Adam에 대해서 정리하려고 한다. ~ 목차 ~0. 서론- 왜 갑자기 최적화를 공부하고 있는가1. 최적화란2. 종류  2.1 경사하강법(GD)  2.2 확률적 경사하강법(SGD)  2.3 Momentum  2.4 AdaGrad  2.5 RMSProp  2.6 Adam  2. 종류   2.6 Adam- Adam은 Adaptive Moment Estimation의 약자로, ①Momentum의 장점과 ②RMSProp의 장점을 결합한 방법이다.    ① Momentum의 장점: 기울기 방향성 보존(안정성)    - Momentum의 기본 수식은 $v \leftarrow \alpha v - \eta \frac{\partial L}{\partial ..

[기본이론] 최적화 방법5- RMSProp (수식o, 그래프o)

최적화 방법5- RMSProp앞에서 모멘텀(Momentum)까지 정리했다. 이어서 RMSProp에 대해서 정리하려고 한다. ~ 목차 ~0. 서론- 왜 갑자기 최적화를 공부하고 있는가1. 최적화란2. 종류  2.1 경사하강법(GD)  2.2 확률적 경사하강법(SGD)  2.3 Momentum  2.4 AdaGrad  2.5 RMSProp  2.6 Adam  2. 종류   -AdaGrad의 단점(학습이 진행될수록 기울기 제곱값이 누적되어 학습률이 작아짐)을 개선하기 위해 RMSProp이 제안되었다.  2.5 RMSProp  - RMSProp은 Root Mean Square Propagation의 줄임말로, 기울기 제곱의 지수 이동 평균을 사용해서 학습률을 조절하는 방법이다. (c.f. 지수 이동 평균: 최근..

[운영체제] 프로세스

프로세스책 『면접을 위한 CS 전공지식 노트』를 바탕으로 스터디를 진행하면서 공부한 내용을 정리했다. ~ 목차 ~1. 프로세스란2. 프로세스와 컴파일 과정  2.1 인터프리터와 컴파일러  2.2 컴파일러를 사용하는 이유  2.3 컴파일러의 컴파일 과정3. 프로세스의 상태4. 프로세스의 메모리 구조  4.1 동적 영역  4.2 정적 영역5. PCB  1. 프로세스란  - 프로세스(process)란 프로그램을 실행하기 위해서 메모리에 올린 상태이다.    (+ 프로그램은 정적인 상태이고 프로세스는 동적인 상태이다.) 2. 프로세스와 컴파일 과정  2.1 인터프리터와 컴파일러  - 프로그램을 실행하려면 고급언어로 작성한 소스코드를 기계어로 번역해야 하는데,    이때 사용되는 방법으로는 대표적으로 인터프리터(..

[기본이론] 최적화 방법4- AdaGrad (수식o)

최적화 방법4- AdaGrad앞에서 모멘텀(Momentum)까지 정리했다. 이어서 AdaGrad에 대해서 정리하려고 한다. ~ 목차 ~0. 서론- 왜 갑자기 최적화를 공부하고 있는가1. 최적화란2. 종류  2.1 경사하강법(GD)  2.2 확률적 경사하강법(SGD)  2.3 Momentum  2.4 AdaGrad  2.5 RMSProp  2.6 Adam 2. 종류   2.4 AdaGrad  - AdaGrad는 Adaptive Gradient의 줄임말로, 기울기 제곱의 누적합을 사용해서 학습률을 조절(자주 업데이트되면 학습률 감소, 드물게 업데이트되면 학습률 유지)하는 방법이다.   - 이 역시 수식으로 설명해보고자 한다. AdaGrad의 가중치 매개변수 업데이트 공식은 아래와 같다. $h \leftarr..

[기본이론] 최적화 방법3- Momentum (수식o)

최적화 방법3- Momentum앞에서 확률적 경사하강법(SGD)까지 정리했다. 이어서 모멘텀(Momentum)에 대해서 정리하려고 한다. ~ 목차 ~0. 서론- 왜 갑자기 최적화를 공부하고 있는가1. 최적화란2. 종류  2.1 경사하강법(GD)  2.2 확률적 경사하강법(SGD)  2.3 Momentum  2.4 AdaGrad  2.5 RMSProp  2.6 Adam3. 정리 2. 종류   2.3 Momentum  - 모멘텀(Momentum)은 운동량이라는 뜻으로, 이전의 이동방향을 계속 유지하려고 하는 성질, 즉 관성을 뜻한다. 최적화에서는 이러한 느낌을 살려서 가중치 매개변수를 갱신할 때 이전 기울기를 일부 반영하면서 현재 기울기에 따라 새로운 방향으로 이동하도록 만든다.  - 모멘텀을 도입하면 SG..

[기본이론] 최적화 방법2- Stochastic Gradient Descent (수식o)

최적화 방법2- Stochastic Gradient Descent앞에서 경사하강법(GD)까지 정리했다. 이어서 확률적 경사하강법(SGD)에 대해서 정리하려고 한다. ~ 목차 ~0. 서론- 왜 갑자기 최적화를 공부하고 있는가1. 최적화란2. 종류  2.1 경사하강법(GD)  2.2 확률적 경사하강법(SGD)  2.3 Momentum  2.4 AdaGrad  2.5 RMSProp  2.6 Adam3. 정리 2. 종류   2.2 확률적 경사하강법(SGD)  - Stochastic Gradient Descent, SGD  - Stochastic의 의미: 데이터를 무작위로 골라냈다는 뜻  - 기본 아이디어는 GD와 비슷하다. 데이터 추출 방식을 바꾼 것 뿐이다. GD는 1번 이동할 때 모든 데이터를 사용해서 $w..