주요 개념 싱글 쓰레드(Single Thread) 비동기(Asynchronous) JavaScript는 싱글 쓰레드(Single Thread) 언어이다. 한 번에 하나의 작업만 수행이 가능하다는 의미로 받아들일 수 있다. 하지만 우리가 사용하는 웹 페이지에는 여러 컴포넌트들과 기능들이 동시다발적으로 수행되고 있다. 이는 JavaScript는 메인 쓰레드인 이벤트 루프가 싱글 쓰레드이기 때문에 이렇게 불리지만 결국 실행한 후(런타임)에는 NodeJS와 같은 멀티 쓰레드 환경에서 구동되므로 동시다발적으로 여러 동작이 가능하다. 기존의 동기식 요청은 인터프리터 언어이므로 위에서 차례대로 수행된다. 앞에서 연산이 오래 걸리는 작업을 수행하고 뒤에 금방 끝날 수 있는 연산을 계속 미루게 되면 리소스의 낭비가 있어..
주요 개념 자연어 처리 코사인 유사도(Cosine Similarity) 유클리드 거리(Euclidean distance) 코사인 유사도(Cosine Similarity)는 내적 공간의 두 벡터 간 각도의 코사인 값을 이용하여 측정된 벡터 간의 유사한 정도를 의미한다. 각도가 0°일 때의 코사인 값은 1이고 이외 다른 모든 각도의 코사인 값은 1보다 작다. 이 값은 벡터의 크기가 아닌 방향의 유사도를 판단하는 목적으로 사용되며, 두 벡터의 방향이 완전히 같을 경우 1, 90°의 각을 이룰 경우 0, 180°로 완전히 반대 방향인 경우 -1의 값을 갖는다. 이때 벡터의 크기는 값에 아무런 영향을 미치지 않는다. 코사인 유사도는 어떤 개수의 차원에도 적용이 가능하지만 특히 결과값이 [0,1]의 범위로 떨어지는..
머신러닝 공부를 하다 보면 오컴의 면도날(Occam's Razor)이란 단어를 종종 마주하게 된다. 단순성의 원리에 대해 강조하기 위해 등장하곤 하는데 의미는 아래와 같다."많은 것들을 필요 없이 가정해서는 안된다" (Pluralitas non est ponenda sine neccesitate.)"더 적은 수의 논리로 설명이 가능한 경우, 많은 수의 논리를 세우지 말라."(Frustra fit per plura quod potest fieri per pauciora.) 즉, 어떤 현상을 설명할 때 불필요한 가정을 해서는 안 된다는 것이다. 더 쉽게 말하면 같은 현상을 설명하는 두 개의 주장이 있다면, 간단한 쪽을 선택하라는 뜻이다.예를 들어 성적이 F가 나왔다는 사실이 있으면 이를 해설하기 위해 아래와..
주요 개념최대 우도 추정(Maximum Likelihood Estimation)우도 함수(Likelihood Function) 최대 우도(Maximum Likelihood)란 도출된 결과의 각 가설마다 계산된 가능도(우도) 값 중 가장 큰 값을 말한다. 즉 발생할 확률이 가장 큰 가설이라 할 수 있다. 하지만 만약 모수가 알려지지 않은 어떤 \( \theta \)인 확률분포가 있다면 여기서 뽑은 표본들을 이용해 \( \theta \)를 추정할 수 있다. 이를 최대 우도 추정(Maximum Liklihood Estimation, MLE)라고 한다. 우도 또한 정확한 수치가 아닌 추정에 가깝기 때문에 이러한 방식을 적용하기에 적절하다 볼 수 있다. 가장 대표적인 예시인 동전던지기를 예를 들어보자. 만약 10..
주요 개념 원시 타입(Primitive Type) 참조 타입(Reference Type) 깊은 복사(Deep copy) 얕은 복사(Shallow copy) JS에는 원시 타입(Primitive Type)과 참조 타입(Reference Type)이 있다. 1. 원시값 Number String Boolean Null Undefined 2. 객체(참조)값 Object Symbol 원시 타입인 숫자, 문자열, 논리형, 널, 언디파인드 다섯 가지를 제외한 모든 값은 객체(참조) 타입이다. 참조 타입이라고 불리는 이유는 객체의 모든 연산이 실제 값이 아닌 참조값으로 처리되기 때문이다. 이름에서 알 수 있든 원시 타입은 값 자체를 복사하여 사용한다. 그렇기 때문에 어떠한 변수를 복사하고 나서 원본에 해당하는 변수를 ..