목록전체 글 (315)
rueki
털과 날개가 있는지 없는지에 따라, 포유류인지 조류인지 분류하는 신경망 모델을 만들어보자 import tensorflow as tf import numpy as np # [털, 날개] x_data = np.array([[0, 0], [1, 0], [1, 1], [0, 0], [0, 0], [0, 1]]) #[기타, 포유류, 조류] y_data = np.array([ [1, 0, 0], # 기타 [0, 1, 0], # 포유류 [0, 0, 1], # 조류 [1, 0, 0], [1, 0, 0], [0, 0, 1] ]) 실제로 데이터를 적용시킬 때는 one-hot 인코딩을 해주어야한다. 지금은 인위적으로 one-hot 형태로 만들었다. classification에서 많이 사용되는 기법이기 때문에 기억해두자 X ..

이 글을 기본적인 선형회귀에 대한 지식이 있다고 가정하고, 텐서플로우로 구현해보는 시간을 가지도록 하겠다. 선형회귀에서도 가설 H = W * X + b를 적용하도록 하겠다. #텐서플로우 라이브러리 불러오기 import tensorflow as tf # 입력 X와 출력 Y에 대해 변수로 선언 X = tf.placeholder(tf.float32, name='X') Y = tf.placeholder(tf.float32, name='Y) # 선형회귀 모델에 적용시킬 X,Y의 값 x_data = [1.,2.,3.] y_data = [1.,2.,3.] # random_uniform - 정규분포 난수를 생성 W = tf.Variable(tf.random_uniform([1],-1.0, 1.0)) # -1과 1사이의..
머신러닝 및 딥러닝 구현에 유용한 라이브러리 Tensorflow에 대해 알아보려고 한다. 텐서(Tensor) : 다차원 배열로 나타내는 데이터 플로우(flow) : 데이터의 흐름 즉, 텐서플로우는 그래프를 따라 데이터가 노드를 거쳐 흘러가면서 계산을 수행한다. 텐서플로우를 사용해보는 시간을 가져보자. #텐서플로우 라이브러리 불러오기 import tensorflow as tf 텐서플로우를 사용하기 위해서는 먼저 라이브러리 호출을 해야한다. 호출을 해보았으면 먼저, 텐서플로우로 Hello, TensorFlow를 실행해보자. hello = tf.constant('Hello, TensorFlow!') #constant = 상수 print(hello) 텐서플로우에서는 상수 설정을 Constant로 선언을 해줘야한..

글로브는 카운트 기반과 예측 기반을 모두 사용하는 방법론이다. 카운트 기반의 LSA와 예측 기반의 Word2vec의 단점을 보완하며, 성능 역시 뛰어나다. LSA는 TF-IDF 행렬과 같이 각 문서에서의 각 단어 빈도 수를 카운트 한 행렬이라는 통계 정보를 입력으로 받아, 차원을 축소(Truncated SVD)하여 잠재된 의미를 끌어낸다. Word2vec은 실제값과 예측값에 대한 오차를 loss function을 통해 줄여나가는 예측 기반 방법론이다. -> 예측 좋음, 코퍼스의 전체적인 통계정보 반영 못 함 윈도우 기반 동시 등장 행렬 동시 등장 행렬은 행과 열을 전체 단어 집합의 단어들로 구성하고, i 단어의 윈도우 크기 내에서 주변단어 k가 등장한 횟수를 i 행 k 열에 기재한 행렬을 말한다. I l..
Word2vec의 확장판으로서, Fast Text와 Word2vec의 차이점은 Word2vec은 단어를 쪼개질 수 없는 단위로 생각한다면, Fast Text는 하나의 단어에도 여러단어가 존재한다고 간주한다. Fast Text의 각 단어는 글자들의 n-gram으로 나타내는데, n을 몇으로 결정하는지에 따라 단어들이 얼마나 분리되는지 결정된다. n을 3으로 잡았을 때 apple -> app, ppl, ple로 분리하고 임베딩한다. 패스트텍스트의 인공 신경망을 학습한 후에는 데이터 셋의 모든 단어의 각 n-gram에 대해서 워드 임베딩이 된다. 데이터 셋만 충분하다면 내부 단어(Subword)를 통해 모르는 단어(Out of Vocabulary)에 대해서도 다른 단어와의 유사도를 계산할 수 있다. Word2v..

단어 간 유사성을 고려하기 위해 단어의 의미를 벡터화 시켜주는데, 이러한 방법을 워드투벡터라고 한다. Word2vec은 추론 기반 기법으로, 데이터의 일부를 사용하여 순차적으로 학습하는 미니배치 학습을 바탕으로 한다. 먼저 추론 기반 방법에 대해서 알아보자. 추론은 단어의 출현 패턴을 학습하는 것을 목적으로 하는 것이다. you goodbye i say hello you say goodbye i say hello 라는 문장이 있을 때 you 다음에 나올 단어는 say라는 것은 바로 알아챌 것이다. 그러나 이를 모델학습에 의한 추론으로 무슨 단어일 지, 유추할 때는 you 0.1 , say 0.8, goodbye 0.03, i 0.04 say 0.01, hello 0.01 의 확률을 가지고 있다고 가정했을..

본 문은 https://wikidocs.net/33520 를 참고해서 작성한 글입니다. Word Embedding은 텍스트를 구성하는 하나의 단어를 수치화하는 방법이다. 즉, 단어를 벡터로 표현한다고 생각하면 될 것이다. 희소 표현에서 밀집 표현으로 변환하는데 희소 표현과 밀집 표현을 먼저 알아보자 희소 표현(Sparse Representation) 희소 벡터의 예는 원-핫 인코딩을 통한 벡터이다. 원-핫 벡터는 표현하고자 하는 단어의 인덱스를 1, 그 외에는 전부 0으로 표현했는데 여기서 문제는, 단어의 개수가 늘어나면 벡터의 차원은 끝없이 커진다는 것이다. 단어 갯수 10000개 중에 원하는 단어의 인덱스가 5라고 하면, [0, 0, 0, 0, 1, 0, 0 ....., 0, 0] 이 되는데 찾는 단..

잠재 디리클레 할당(LDA)은 토픽 모델링의 대표적 알고리즘으로서, 문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다고 가정한다. 문서1 : 저는 사과랑 바나나를 먹어요 문서2 : 우리는 귀여운 강아지가 좋아요 문서3 : 저의 깜찍하고 귀여운 강아지가 바나나를 먹어요 LDA를 수행할 때 문서 집합에서 토픽이 몇 개가 존재할 지 가정하는 것은 사용자가 해야한다. 토픽의 개수 K를 2라고 가정하고 LDA를 수행했다고 할 때, 문서1 : 토픽 A 100% 문서2 : 토픽 B 100% 문서3 : 토픽 B 60%, 토픽 A 40% 토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0% 토픽B : 사과 0%, 바..