분류 전체보기 95

[자연어처리 CS224N] #5-2 Neural Language Model, Perplexity

🔷 시작하며, 흐름 정리 지난 포스팅에서 우리는 n-gram Language Model에 대해서 알아보았다. 이번 글에서 알아볼 것은 n-gram Language Model이 가지고 있는 치명적인 단점을 극복시켜줄 Neural Language Model이다. n-gram Language Model의 문제점부터 복습해보자. n-gram Language Model은 앞의 n-1개의 단어만을 보고 n번째 단어를 예측한다. 예를 들어 "students opened their"이 1000번 나왔고, "students opened their exams"가 100번 나왔다면, "students opened their" 다음에 "exams"가 나올 확률은 0.1(100/1000)이다. 따라서 n이 커질 수록 그 특정 ..

자연어처리 2024.03.26

[자연어처리 CS224N] #5-1. n-gram Language Model

오늘도 어김없이 자처 하수하따 🔹 Language Model 오늘은 Language Modeling에 대해 배웠다. Language Modeling은 단어가 주어졌을 때, 다음에 어떤 단어가 올 지를 예측하는 모델이다. 더 구체적으로 말하자면 일련의 단어들이 주어졌을 때(x1, x2, x3, ... ,xt), 다음 단어 x(t+1)이 무엇일지에 대한 조건부 확률을 계산하는 것이다. 이러한 시스템을 Language Model 이라고 부른다. 우리는 Language Model을 매일 사용한다. 스마트폰이나 검색창의 자동완성기능, GPT 등 모두 Language Model이다. 🔹 n-gram Language Model ▪️ n-gram Language Model 이란 Language Model은 어떻게 학습..

자연어처리 2024.03.24

[자연어처리 CS224N] #2-3. GloVe

GloVe는 Global Vectors for Word Representation의 약자로 카운트 기반(Count-based)과 예측 기반(Prediction-based)를 모두 사용하는 방법론이다. 통계정보를 포함한 Direct prediction embedding 방식이다. 어떻게 카운트 기반과 예측 기반 모두를 사용해서 두 개의 장점들을 취했을까? 손실함수를 보면서 이해해보자. (이 부분은 위키독스의 을 참고하여 작성했습니다.) 먼저 용어를 정리해보자면, X는 동시 등장 행렬(Co-occurrence Matrix)이다. Xij는 중심 단어 i가 등장했을 때 윈도우 내 주변 단어 j가 등장하는 횟수이다. P( i | j )는 중심 단어 j가 등장했을 때 윈도우 내 주변 단어 i가 등장할 확률이다. 예..

자연어처리 2024.03.24

[자연어처리 CS224N] #2-2. Skip-gram with Negative Sampling

지난 포스팅에서 우리는 Word2vec의 손실함수를 Optimization 하는 과정에 대해 배웠다. (참조 2024.03.19 - [자연어처리] - [자연어처리 CS224N] #2-1. Word2Vec Optimization (SGD)) 그런데 지난 글에서 알아본 바로는 우리는 cross entropy 연산을 통해 구한 오차로부터 임베딩 테이블에 있는 모든 단어에 대한 임베딩 벡터 값을 업데이트 한다고 했다. 단어 집합의 크기가 매우 크다면 이 작업은 굉장히 오랜 시간이 걸릴 것이다. 크게 중요하지 않은 계산까지도 모두 거쳐야 하기 때문에 연산량이 매우 많고 비효율적이다. 그래서 이를 해결하기 위해 negative sampling을 사용한다. 이 방법은 Word2vec이 학습 과정에서 전체 단어 집합이..

자연어처리 2024.03.24

[운영체제] 16. segmentation 세그멘테이션

지금까지 메모리 가상화가 필요한 이유와 목적, 가상화를 하기 위한 동적 재배치 방법에 대해 알아보았다. 동적 재배치는 베이스/바운드 방식을 이용했다. 그런데 주소 공간에서 스택과 힙 사이에 사용되지 않는 빈 공간이 존재하는 것을 보았을 것이다. 그 사이의 빈 공간은 사용되지 않더라도 재배치할 때 물리 메모리를 차지한다. 따라서 메모리 낭비가 심하고, 주소 공간이 물리 메모리보다 크면 실행할 수 없다. 이러한 측면에서 베이스/바운드 방식은 유연성이 없다. 이를 해결하기 위해 등장한 아이디어가 세그멘테이션(segmentaition)이다. 16.1 세그멘테이션: 베이스/바운드(base/bound)의 일반화 이 아이디어는 MMU안에 오직 하나의 베이스/바운드 쌍만 존재하는 것이 아니라 주소 공간의 논리적인 세그..

운영체제 2024.03.24

[운영체제] 15. vm mechanism 주소 변환의 원리

앞서 메모리 가상화가 필요한 이유와 목표에 대해 살펴보았다. 그렇다면 어떻게 효율적이고 유연하게 메모리를 가상화할 수 있을까? 우리가 다룰 기법은 하드웨어 기반 주소 변환(hardware-based address translation), 짧게 말해서 주소 변환(address translation)이다. 하드웨어는 주소 변환을 통해 Load, Store, Fetch 등의 가상 주소를 실제 존재하는 물리 주소로 변환한다. 하지만 하드웨어만으로 메모리 가상화를 구현할 수는 없다. 운영체제가 관여한다. 15.1 가정 몇 가지 비현실적인 가정을 설정하고 시작해보자. 사용자 주소 공간은 물리 메모리에 연속적으로 배치되어야 하며, 주소 공간의 크기는 물리 메모리보다 작고, 각 주소 공간의 크기는 같다. 이렇게 가정하..

운영체제 2024.03.24

[운영체제] 13. Address Space 주소 공간

13.1 초기 시스템 초기의 시스템의 메모리는 매우 단순했다. 0~64KB의 메모리를 운영체제가 사용했고, 나머지 메모리는 하나의 실행 중인 프로그램(프로세스)가 사용했다. 13.2 멀티 프로그래밍과 시분할 하지만 컴퓨터를 더 효과적으로 사용하기 위해 멀티 프로그래밍(multi-programming)이 등장했다. 멀티 프로그래밍이란 하나의 CPU를 가지고 작업하던 중 어느 프로세스가 I/O 처리를 하게 되었을 때, 그 입출력 결과를 무한히 기다리는 대신 다음 프로세스 작업을 진행하는 것이다. 준비 상태에 있는 프로세스로 전환하는 것은 운영체제의 몫이다. 따라서 CPU의 이용률이 늘어나게 되었다. 그 이후 시분할(time-sharing) 방식도 도입되었다. 시분할을 구현하는 한 가지 방법은 하나의 프로세스..

운영체제 2024.03.23

[자연어처리 CS224N] #2-1. Word2Vec Optimization (SGD)

지난 포스팅에서 우리는 Word2vec으로 워드 임베딩을 하기 위한 손실 함수를 구했다. 우리가 학습해야 하는 벡터들(u,v)은 다 파라미터이다. 우리가 가진 목적 함수 J(θ)를 최소화 하기 위해서는 경사하강법(gradient descent)이라는 알고리즘을 사용한다. 경사하강법이란 J(θ)의 gradient를 계산해서, 기울기가 작아지는 방향으로 조금씩 나아가는 것이다. 우리는 u와 v를 이용해서 목적 함수를 만들었으므로 이 목적 함수를 최소화하는 파라미터를 찾는다면, 워드 임베딩이 잘 된 것이라고 할 수 있을 것이다. 아래 식을 보자. θ new 를 구하기 위해서는 θ old에서 (J(θ)를 편미분한 값 * α)를 빼주면 된다. α는 step size 혹은 learning rate라고 한다. 이는 ..

자연어처리 2024.03.19

[자연어처리 CS224N] #1. Introduction and Word Vectors

하하 나는 인공지능을 많이 공부해보지 않아서 잘 모르는데... 어쩌다보니 자연어처리 수업을 듣게 됐다. 최대한 이해하려고 부여잡으면서 열심히 해볼게... cs224n 강의자료를 활용하였고, 국민대학교 김장호 교수님의 강의를 듣고 정리한 글입니다. 공부하며 정리한 글이기에 오류가 매우매우 많을 수 있음을 밝힙니다. 우리는 단어를 어떻게 표현하는가? 단어에 대한 일반적인 언어의 사고방식은 denotational segmantics이다. 이는 '표의적(표시적) 의미론'이라고 한다. 우리는 '나무'라고 하면 자연스럽게 나무의 이미지가 떠오른다. 근데 컴퓨터는 어떻게 의미를 알지? 예전에 사용되던 방식은 WordNet 이었다. WordNet은 동의어(synonym sets)와 상의어(hypernyms)를 포함한 ..

자연어처리 2024.03.11

[Boj] 백준 C++ #2981 검문

https://www.acmicpc.net/problem/2981 2981번: 검문 트럭을 타고 이동하던 상근이는 경찰의 검문을 받게 되었다. 경찰은 상근이가 운반하던 화물을 하나하나 모두 확인할 것이기 때문에, 검문하는데 엄청나게 오랜 시간이 걸린다. 상근이는 시간 www.acmicpc.net #include #include using namespace std; int gcd(int a, int b){ //유클리드 호제법을 이용한 최대공약수 구하기 알고리즘 if(a

Boj 2024.01.10