1️⃣ 동기식 처리 모델 vs 비동기식 처리 모델 글로 설명하기 전에 동기와 비동기를 비유한 아래 그림을 보면 이해가 훨씬 쉬울 것 같다. 동기식 처리 모델 (Synchronous processing model) 동기식 처리 모델은 태스크(task)를 직렬적으로 처리한다. → 태스크는 순차적으로 실행되며 어떤 작업이 수행 중이면 다음 작업은 대기하게 된다. 동기 프로그래밍 const name = 'Miriam'; const greeting = `Hello, my name is ${name}!`; console.log(greeting); 브라우저는 위 코드를 프로그램을 작성한 순서대로 한 줄씩 실행한다. 1) name이라는 문자열을 선언한다. 2) name을 사용하여 greeting이란 또다른 문자열을 선..
호이스팅에 대해서는 옛날에 퍼블리셔 수업에서 제이쿼리를 배울 때 함수를 어디에다 선언해도 사용할 수 있도록 선언을 맨위로 끌어올려주는 기술이라고 배웠던 기억이 난다. 지금까지 그정도의 개념만 가지고 코드를 작성하는데에 문제는 없었지만 자바스크립트에 대해 제대로 공부하고 있으니 자바스크립에서의 호이스팅에 대해서도 자세하게 알아보자. 1️⃣ 호이스팅이란? 자바스크립트는 ES6에서 도입된 let, const를 포함한 모든 선언(var, let, const, function, function*, class)을 호이스팅한다. 여기서 호이스팅이란 무엇일까? 호이스팅(hoisting)에 대한 다양한 정의를 찾아보았다. "인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다." - MDN "..
자바스크립트에서 함수는 일급객체(first-class object)이다.일급 객체란 변수처럼 대상을 다룰 수 있는 것을 얘기하는데 즉, 자바스크립트에서 함수는 변수처럼 다룰 수 있다.클로저는 함수의 일급객체성질을 이용한다. 함수가 생성될 때 함수 내부에서 사용되는 변수들이 외부에 존재하는 경우 그 변수들은 함수의 스코프에 저장된다.함수와 함수가 사용하는 변수들을 저장한 공간을 클로저라고 한다. 여기까지는 아직 무슨 말인지 이해가 안가니 클로저의 정의에 대해 더 찾아보기로 했다. 클로저(Closure) 정의 찾아보기 - 함수와 그 함수가 선언된 어휘적 환경( Lexical Environment)의 조합이다.- 내부함수가 외부함수의 맥락(context)에 접근할 수 있는 것을 가르킨다.- 내부함수..
브라우저 콘솔의 Sources 탭에서 원하는 라인의 라인넘버를 클릭한 뒤 새로고침하면 해당 라인에 브레이크 포인트가 걸려 해당 라인에서 프로그램이 멈춰있게 된다. debugger 기본 사용방법 정리글 아래와 같은 예시 코드를 디버깅할 때 2번 라인(n0 ='n0')에 브레이크 포인트를 걸고 우측 노란 표시된 버튼(한 줄씩 실행하는 버튼)을 클릭하면 Scope의 Global에서 n0를 확인할 수 있다. → 변수 선언 시 var, let, const 등을 붙이지 않고 이름만 주면 그 값은 Global에 저장된다. ESC를 눌러 console을 열고, n0를 입력하면 n0값을 가져온다. → 자바스크립트는 어떤 변수를 읽으려고 할 때 Scope에서 변수를 찾는다. Scope의 Script 안에 변수가 없으면 G..
1️⃣ LSTM (Long Short Term Memory) ▶ LSTM 이란? Long Short Term Memory = 장단기 메모리 → 장기 의존성과 단기 의존성을 모두 기억할 수 있다는 의미 - Vanilla RNN의 기울기 소실 문제를 해결하고자 등장했다. - 새로 계산된 hidden state를 출력값으로도 사용한다. - Vanilla RNN과 내부 연산 방식만 다르고 입력값, 출력값은 Vanilla RNN처럼 사용할 수 있다. (Vanilla RNN을 사용한 부분의 모델을 LSTM으로 바꿔서 사용 가능) 💡 RNN의 장기 의존성 문제 RNN은 시계열 데이터와 같은 순차 데이터의 경향성을 학습하는 데 훌륭한 성능을 제공한다. 하지만 모델 학습에 사용하는 데이터의 길이(sequence)가 길어..
1️⃣ 한국어 자연어 처리 ▶ 자연어 처리의 기본 요소 - 자연어 처리의 기본은 단어 추출에서 시작 - 텍스트의 단어를 통해 문장의 의미, 구성 요소 및 특징을 파악 가능 ▶ 한국어에서의 단어 - 한국어에서 단어의 기준은 명확하지 않다. - 교착어인 한국어에서 단어는 의미적 기능을 하는 부분과 문법적인 기능을 하는 부분의 조합으로 구성된다. → 한국어 자연어 처리에서는 단어의 의미적 기능과 문법적인 기능을 구분하는 것이 중요 2️⃣ KoNLPy ▶ 형태소 분석 형태소 분석이란 ? : 주어진 한국어 텍스트를 단어의 원형 형태로 분리해 주는 작업 ▶ KoNLPy : 여러 한국어 형태소 사전을 기반으로 한국어 단어를 추출해 주는 파이썬 라이브러리 - 각 형태소 사전별 형태소 표기 방법 및 기준의 차이가 존재한..
1️⃣ 모델 저장하고 불러오기 ▶ 모델의 구성요소 1) 모델의 구조 - 레이어의 종류와 형태 - 입력 값의 형태 2) 가중치 값 - 각 레이어의 행렬에 저장된 실제 float32 실수 값들 - 모델의 학습 = Loss값이 낮아지도록 가중치의 값을 수정하는 과정의 연속 (학습된 가중치가 있다면 직접 학습할 필요없이 사용 가능) - 같은 모델도 가중치 값에 따라 성능이 달라짐 3) Compile 정보 - Optimizer의 종류, Learning Rate(lr), 사용한 Loss Function 정보 - 모델을 학습시키기 위한 정보들 (모델을 학습시키지 않고 사용만 할 목적이라면 위 정보들은 Compile 정보는 필요 없음) ▶ 모델의 저장 형식 1) H5 Format - 과거 Keras에서 사용하던 저장 ..
1️⃣ Generic 이란? 정적 type 언어는 클래스나 함수를 정의할 때 type을 선언해야 한다. 예를 들어, C언어는 int type 변수를 선언하면 정수형 값만 할당할 수 있다. Generic은 코드를 작성할 때가 아니라 코드가 수행될 때 타입을 명시한다. (클래스나 메서드에서 사용할 내부 데이터 type을 외부에서 지정하여 정의 시점이 아니라 생성 시점에 타입을 명시할 수 있게함 → 코드의 재사용성이 높아짐) 코드를 작성할 때 식별자를 써서 아직 정해지지 않은 타입을 표시한다. 일반적으로 식별자는 T, U, V, ...를 사용 필드 이름의 첫 글자를 사용하기도 함 ▶ Generic을 사용하는 이유 1) 재사용성이 높은 함수와 클래스 생성 가능 - 여러 타입에서 동작이 가능하다. (한 번의 선언..
1️⃣ Interface란? 일반적으로 변수, 함수, 클래스에 타입 체크를 위해 사용된다. - 직접 인스턴스를 생성할 수 없고 모든 메소드가 추상 메소드이다. - 추상 클래스의 추상 메소드와 달리 abstract 키워드는 사용할 수 없다. - ES6는 interface를 지원하지 않지만 TypeScript는 interface를 지원한다. function sayName(obj: { name: string }) { console.log(obj.name); } let person = { name: "june" }; sayName(person); 위 코드를 interface로 표현하면 아래와 같다. interface Person { name: string } function sayName(obj: Person)..
1️⃣ 순차 데이터란? ▶ RNN과 순차 데이터 - RNN(Recurrent Neural Network)은 CNN과 함께 대표적인 딥러닝 모델 - 시계열 데이터 같은 순차 데이터(Sequential Data) 처리를 위한 모델 RNN의 이해에는 순차 데이터가 가지는 특징의 이해가 필요하다. 순차 데이터 - 순서(Order)를 가지고 나타나는 데이터 - 데이터 내 각 개체 간의 순서가 중요 - 날짜에 따른 기온 데이터나 단어들로 이루어진 문장 등 순차 데이터 종류 1) 시계열 데이터 (Time-Series Data) - 일정한 시간 간격을 가지고 얻어낸 데이터 ex) 연도별 대한민국의 평균 기온, 시간별 주식 가격 기록 등 2) 자연어 데이터 (Natural Language) - 인류가 말하는 언어를 의미..