Siamese network 샴 네트워크는 두 개의 input이 encoding된 결과를 비교하여 그 차이의 정도를 학습합니다. 입력이 각각 x1, x2라고 할 때, 최종 output인 f(x1), f(x2)의 n2 norm을 구하게 됩니다. 즉, f(x1), f(x2) 차의 제곱이 손실함수라고 볼 수 있습니다. Goal of learning 만약 xi, xj가 동일한 사람의 사진이라면 두 output의 차는 거의 없을 것입니다. 반대로 동일한 사람이 아니라면 두 output의 차는 훨씬 크겠죠. 물론 처음에는 그렇게 학습이 되어있지 않겠지만 역전파를 통해 반복적으로 학습하는 과정에서 동일한 사람과 다른 사람을 구분하는 방식으로 학습될 것입니다. 출처: Coursera, Convolutional Neur..
(1) What is Face Recognition Face recognition 데모 영상을 보여주셨는데 바이두의 얼굴 인식 출입 시스템이었다. 기존 얼굴 인식을 생각하면 그 사람의 얼굴이 찍힌 사진으로 남용이 가능하지 않겠느냐 하는 우려가 많았다. 근데 이미 저 영상이 촬영될 당시에도 실물인지 아닌지를 구분하는 기능이 존재했다. Face verification vs. face recognition 본 수업에서는 verification에 초점을 둔다고 하셨다. 난이도로 따지자면 이게 맞는지 아닌지를 구분하는 태스크뿐인 verification가 쉽다. 그리고 이것을 recognition에 적용하는 것은 또다른 문제이다. (2) One Shot Learning One-shot learning 만약 네 명의..
Basics Typical memory usage for primitive types and arrays 자바에서 사용되는 기본 자료형에 대한 메모리 크기를 정리한 표입니다. privitive types는 고정적인 메모리 크기를 갖지만, 나머지는 가변적인, 즉 N과 M의 크기에 비례하는 메모리 크기를 갖습니다. Typical memory usage for objects in Java 간단한 예시를 통해 메모리가 얼마 정도 필요한지 계산하고 있습니다. primitive type 네 개가 각각 4바이트를 차지하기 때문에 합이 16바이트 입니다. 이것을 모두 감싸는 공간 object overhead와 합쳐 총 32바이트가 됩니다. 우측의 예시는 value라는 char 리스트를 만들기 때문에 2N + 24 바이..
Types of analyses 알고리즘을 분석하기 위해서는 크게 세 가지로 나눠서 보는 것 같습니다. Best case : 처리하기 가장 좋은 형태의 input이 주어진 경우 Worst case : 처리하기 가장 어려운 형태의 input이 주어진 경우 Average case : random한 input이 주어지는 경우 Theory of algorithms 일반적으로는 주어진 문제를 해결하기 위한 최적의 알고리즘을 찾기 위해서, 우선 어려운 문제를 기준으로 접근해야 합니다. 즉, 최악의 상황을 가정하고 이를 개선하는 방식으로 접근하는 것이죠. Commonly-used notations in the theory of algorithms 일반적으로 우리에게 잘 알려진 것은 중간의 빅오 표기법이지만 세 개를 ..
Common order-of-growth classifications 알고리즘을 효율성에 따라 구분하면 위와 같습니다. 모델의 사이즈가 커져도 처리하는 시간이 크게 증가하지 않는 constant(상수), logarithmic(로그) 모델의 크기와 거의 비례하는 linear(선형), linearithmic 모델이 커지는 것보다 더 많은 시간을 필요로 하는 quadratic(이차), cubic, exponential(지수) Practical implications of order-of-growth Binary search demo 아주 효율적인 탐색 알고리즘인 이진 탐색(binary search) 알고리즘입니다. 이 알고리즘은 배열 내 값들이 오름차순으로 정렬되어 있다는 것을 전제로 삼습니다. 반복적으로 배..
Mathematical models for running time 1970년대에 프로그램의 작업 효율을 확인할 수 있는 수학적 모델이 고안되었다고 합니다. Cost of basic operations 예전에는 이런 표를 참고해서 프로그램을 만들었다고 하네요.. 기본 연산 명령을 수행하는데 걸리는 시간을 나노초 단위로 정리한 표입니다. Example: 1-Sum, 2-Sum 1-Sum과 2-Sum을 예시로 실제 명령이 몇 번 수행되는지를 분석한 결과입니다. 모든 명령에 대해 굉장히 세부적으로 분석이 되어 있고, 딱 봐도 '귀찮아..'라는 느낌을 줍니다. Simplifying the calculations 그래서 이러한 계산을 간단하게 정리하는 방법이 고안되었고 지금의 방식이 그걸 지켜오고 있는 거라고 생각..