Oneulog

이전 글인 Word2Vec 논문 리뷰에 이어 구현을 진행한다.  해당 논문에서 소개된 CBOW를 구현한다.전반적인 구현 과정더미 데이터를 생성한다.해당 데이터를 띄어쓰기를 기준으로 쪼개 단어로 이루어진 시퀀스 리스트를 생성한다.해당 시퀀스에 있는 단어들을 중복을 제거해 단어 : 인덱스 값을 가지는 딕셔너리를 생성한다.시퀀스 리스트와 딕셔너리를 활용해 CBOW 모델 학습을 위한 데이터셋을 생성한다.모델 학습을 위한 DataLoader를 생성한다.CBOW 모델을 정의한다.CBOW 모델과 loss, optimizer를 선언하고 학습을 진행한다.단어 간의 유사도를 확인한다.0. 라이브러리 설정해당 과정에서 사용할 패키지들을 불러온다.import torchfrom torch.utils.data import Ten..
논문 링크 : Efficient Estimation of Word Representations in Vector Space 0. Abstract 단어의 연속 벡터 표현을 계산하기 위한 2가지 새로운 모델 아키텍처를 제안한다. 결과는 이전에 다양한 유형의 신경망을 기반으로 최고 성능을 발휘했던 기술들과 비교되며, 우리가 제안하는 방식을 통해 훨씬 낮은 비용으로 정확도가 크게 향상하는 것을 관찰했다. 16억 개의 단어 데이터세트에서 고품질의 단어 벡터를 학습하는데 하루가 채 걸리지 않으며, 이러한 벡터는 구문 및 의미 단어 유사성을 측정하기 위한 우리의 테스트셋에서 최첨단 성능을 제공한다. 1. Introduction현재 많은 NLP 시스템과 기술은 단어를 원자 단위로 다루며, 단어 사이의 유사성에 대한 개..
독립 변수 데이터를 x, 숫자 0 초과인 경우에는 1, 이하인 경우에는 0을 부여한 레이블 데이터를 y라고 해 보자 Keras로 구현하는 로지스틱 회귀 이번 데이터는 앞서 배운 단순 선형 회귀 때와 마찬가지로 1개의 실수 x로부터 1개의 실수인 y를 예측하는 맵핑 관계를 가지므로 Dense의 output_dim, input_dim 인자값을 각각 1로 기재한다. 또한 시그모이드 함수를 사용할 것이므로 activation 인자값을 sigmoid로 기재해준다. 옵티마이저로는 가장 기본적인 경사 하강법인 sgd를 사용했다. 시그모이드 함수를 사용한 이진 분류 문제에 손실 함수로 크로스 엔트로피 함수를 사용할 경우 binary_crossentropy를 기재해주면 된다. 에포크는 200으로 한다. x = np.ar..
이진 분류(Binary Classification) 앞서 선형 회귀를 설명하며 공부 시간과 성적 간의 관계를 직선의 방정식으로 표현한다는 가설 하에, 주어진 데이터로부터 가중치 w와 편향 b를 찾아 데이터를 가장 잘 표현하는 직선을 찾았다. 하지만 둘 중 하나의 선택지 중에서 정답을 고르는 이진 분류 문제는 직선으로 표현하는 것이 적절하지 않다. 학생들이 시험 성적에 따라 합격, 불합격이 기재된 데이터가 있다고 가정해보자. 시험 성적이 x라면, 합불 결과는 y이다. 이 데이터로부터 특정 점수를 얻었을 때의 합격, 불합격 여부를 판정하는 모델을 만들고자 한다. 위 데이터에서 합격을 1, 불합격을 0이라고 하였을 때 그래프를 그려보면 아래와 같다. 이러한 점들을 표현하는 그래프는 알파벳의 S자 형태로 표현된..
자동 미분 tape_gradient()는 자동 미분 기능을 수행한다. 임의로 2w^2 + 5라는 식을 세워보고, w에 대해 미분해보자 Tensorflow를 활용한 자동 미분 import tensorflow as tf w = tf.Variable(2.) def f(w) : y = w**2 z = 2*y + 5 return z gradient를 출력하면 w에 대해 미분한 값이 저장된 것을 확인할 수 있다. with tf.GradientTape() as tape : z = f(w) gradient = tape.gradient(z, [w]) print(gradient) 출력 결과 : [] Pytorch를 활용한 자동 미분 import torch w = torch.tensor([2], dtype = float,..
선형 회귀 시험 공부하는 시간을 늘리면 늘릴수록 성적이 잘 나온다. 또한 운동량이 많을수록 몸무게는 줄어든다. 이는 수학적으로 생각해보면 어떤 요인의 수치에 따라서 특정 요인의 수치가 영향을 받고 있다고 말할 수 있다. 조금 더 수학적인 표현을 써보면 어떤 변수의 값에 따라 특정 변수의 값이 영향을 받고 있다고 볼 수 있다. 다른 변수의 값을 변하게 하는 변수를 x, 변수 x에 의해 값이 종속적으로 변하는 변수를 y라고 해 보자. 이때 변수 x의 값은 독립적으로 변할 수 있는 것에 반해, y 값은 계속해서 x 값에 의해 종속적으로 결정되므로 x를 독립 변수, y를 종속 변수라고도 한다. 선형 회귀는 한 개 이상의 독립 변수 x와 y의 선형 관계를 모델링한다. 단순 선형 회귀 분석 위의 수식은 단순 선형 ..
머신 러닝 모델의 평가 기계를 학습하기 전 데이터셋을 훈련용, 검증용, 테스트용으로 분리하는 것이 일반적이다. 훈련 데이터는 머신 러닝 모델을 학습하기 위한 용도이고, 테스트 데이터는 학습된 머신 러닝 모델의 성능을 평가하기 위한 용도이다. 그렇다면 검증용 데이터의 용도는 무엇일까? 검증용 데이터는 모델의 성능을 평가하기 위한 용도가 아니라 모델의 성능을 조정하기 위한 용도이다. 정확히는 모델이 훈련 데이터에 오버피팅이 발생하는지 판단하거나 하이퍼파라미터 조정을 위한 용도이다. 하이퍼파라미터와 매개변수라는 용어를 알아두자. 하이퍼파라미터 : 모델의 성능에 영향을 줄 수 있는 값을 지정하는 변수 매개변수 : 가중치와 편향. 학습을 하는 동안에 값이 계속해서 변하는 수 이 두 변수의 가장 큰 차이는 하이퍼파..
머신 러닝이 아닌 접근 방법의 한계 머신 러닝이 아닌 기존의 프로그래밍 작성 방식을 통해서는 해결하기 어려운 문제 예시를 하나 들어보자. 예시 : 주어진 사진으로부터 고양이 사진인지 강아지 사진인지 판별하는 일 위 문제는 실제 2017년에 있었던 DGIST의 딥 러닝 경진대회의 문제다. 사진을 보고 고양이 사진인지, 강아지 사진인지 판단하는 건 사람에게는 너무나 쉬운 일이다. 그런데 이 문제를 풀 수 있는 프로그램을 작성하는 것은 상당히 난해한 수준이다. 입력된 이미지로부터 강아지와 고양이를 구분할 수 있는 코드를 어떻게 작성할 수 있을까? def prediction(이미지 as input) : 어떻게 코딩해야 하지? return 결과 사진이란 건 사진을 보는 각도, 조명, 타겟의 변형(고양이의 자세)에..
NLP Developer
'NLP' 카테고리의 글 목록 (2 Page)