Oneulog

독립 변수 데이터를 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 결과 사진이란 건 사진을 보는 각도, 조명, 타겟의 변형(고양이의 자세)에..
문서의 유사도를 구하기 위한 방법으로는 코사인 유사도 외에도 여러가지 방법들이 있다. 여기서는 문서의 유사도를 구할 수 있는 다른 방법들을 학습한다. 유클리드 거리(Euclidean distance) 유클리드 거리는 문서의 유사도를 구할 때 자카드 유사도나 코사인 유사도만큼 유용한 방법은 아니다. 하지만 여러 가지 방법을 이해하고, 시도해보는 것 자체만으로 다른 개념들을 이해할 때 도움이 되므로 의미가 있다. 다차원 공간에서 두 개의 점 p와 q가 각각 p = (p1, p2, p3, ..., pn)과 q = (q1, q2, q3, ..., qn)의 좌표를 가질 때 두 점 사이의 거리를 계산하는 유클리드 거리 공식은 다음과 같다. 다차원 공간이라고 가정하면, 처음 보는 입장에서는 식이 너무 복잡해보인다. ..
BoW에 기반한 단어 표현 방법인 DTM, TF-IDF, 또는 뒤에서 배우게 될 Word2Vec 등과 같이 단어를 수치화할 수 있는 방법을 이해했다면 이러한 표현 방법에 대해서 코사인 유사도를 이용해 문서의 유사도를 구하는 게 가능하다. 코사인 유사도(Cosine Similarity) 코사인 유사도는 두 벡터 간의 코사인 각도를 이용해 구할 수 있는 두 벡터의 유사도를 의미한다. 두 벡터의 방향이 완전히 동일한 경우에는 1의 값을 가지며, 90도의 각을 이루면 0, 180도로 반대의 방향을 가지면 -1의 값을 가지게 된다. 즉, 결국 코사인 유사도는 -1 이상 1 이하의 값을 가지며 값이 1에 가까울수록 유사도가 높다고 판단할 수 있다. 이를 직관적으로 이해하면 두 벡터가 가리키는 방향이 얼마나 유사한가..
NLP Developer
'NLP/딥러닝을 이용한 자연어 처리 입문' 카테고리의 글 목록