순환 모델 이해하기 RNN: Recurrent Neural Network은 순환 신경망으로 순서가 있는 sequence 데이터를 학습하는 데 사용한다. 단일 RNN 층을 보면 은닉층($h$)이 순환하며 이전 상태의 정보를 가져간다. 즉, 반복되는 은닉층은 시간에 따른 맥락을 저장한다. Multi-layer RNN을 여러 층으로 쌓으면 위와 같은 형태가 된다. 연산 과정 $t$는 time step이다. $t-1$은 $t$ 바로 이전 상태를 의미한다. 먼저 RNN은 입력 2개를 받는다. 외부 입력($x$) $t-1$ 시점의 은닉층 정보($h^{t-1}$) $t$ 시점 은닉층($h^t$)을 구하는 과정이다. $z_h^t=W_{xh}x^t+W_{hh}h^{t-1}+b_h$ $h^t=\phi_h (z_h^t)$ ..
에라토스테네스의 체는 $O(nlog(logn))$의 시간 복잡도를 가지는 알고리즘으로, 효율적으로 소수(Prime Number)를 구할 수 있다. 소수: 1과 자기 자신 만을 약수로 가지는 수 아이디어는 간단하다. 자연수 N이 있을 때, N의 배수는 소수가 아니다. 소수는 1과 자기 자신만을 약수로 가지는데, N의 배수는 N을 약수로 가지기 때문이다. 소수의 정의를 생각해 보면 당연한 이야기이다. 1 ~ 100까지의 수가 있는 표를 만들자. 그리고 만약 소수가 아니라면 표에서 값을 지운다. 0과 1은 소수가 아니다. 0 1 2 3 4 5 6 7 8 ... 2는 소수이다. 하지만 2의 배수는 소수가 아니다. 따라서 4, 6, 8 ... 등은 지운다. 0 1 2 3 4 5 6 7 8 ... 3은 소수이다. ..
Quick Sort는 분할 정복을 이용한 정렬 알고리즘으로 평균적으로 좋은 성능을 보인다. 평균 시간 복잡도: $O(nlog_2n)$ 정렬된 리스트에 대해: $O(n^2)$ 정렬 원리 1 퀵 정렬의 아이디어는 생각보다 간단하다. 기준을 정한다. 기준보다 작으면 기준점의 왼쪽으로, 기준보다 크면 기준점의 오른쪽으로 모은다. 기준의 왼쪽과 오른쪽의 배열을 쪼갤 수 없을 때까지 재귀적으로 정렬한다. 이때 기준점을 pivot이라고 한다. 배열의 첫번째 값을 pivot으로 설정한 예시: 1. [5 4 3 1 6 2 7] 2. pivot: 5 [4 3 1 2] + [5] + [6 7] 3. pivot: 4, 6 [3 1 2] + [4] + [5] + [6] + [7] 4. pivot: 3, (우측은 정렬 완료) [..
Optimizer는 모델의 Training Loss를 최소화하는 방향으로 파라미터를 업데이트하는 중요한 역할을 한다. 쉽게 말해 모델을 어떤 방향으로 얼마만큼 업데이트할 것인지를 결정하는 역할을 한다. Optimizer는 Gradient Descent(경사하강법)를 기반으로 한다. 기울기(Gradient)는 학습 방향을 결정하고, 학습률은 학습할 정도를 결정한다. 여기까지 내용을 모른다면 "경사하강법과 학습률" 글을 먼저 이해해야 한다. 아래 내용은 Gradient Descent를 기반으로 한 여러 optimizer의 개념들을 설명한다. SGD momentum Adagrad RMSProp Adam [기호 정리] $w$: 가중치, $t$: 시점(step), $\mu$: 학습률, $L$: Loss 값. SG..