반응형
반응형



doc2vec이란?

paragraph2vec으로 뉴스 기사 본문과 같은 큰 텍스트 블록에 대하여 vector값으로 변환시키는 것을 말한다.

word2vec에서 확장된 버전이라고 생각하면 쉽다. 


시작하기

코퍼스(Corpus)의 크기, 문서의 개수가 많을수록 좋다.


실습

word2vec 모델에서는 두 개의 중요한 알고리즘이 있었다. (CBOW와 Skip-gram)

마찬가지로 doc2vec 모델에서도 Distribted memory(DM)과 Distributed bag of words(DBOW)가 있다.


doc2vec의 입력은 Labeled Sentence 객체의 iterator(연속)이다.

각 객체는 하나의 문장을 나타내며 단어 목록과 레이블 목록으로 구성된다.



참고문서




반응형
반응형

K-means Clustering 테스트 자료 


import tensorflow as tf
from tensorflow.contrib.factorization import KMeans
from tensorflow.python.framework import ops


k = 3 #3개의 Cluster로 설정
num_features = 3 #데이터 Feature 2 (카테고리 분류 코드, 제목)

# 데이터 읽어오기
Data_X = []
with open("C:/Users/N3815/Desktop/sample_kmeans_data.txt", 'r') as f:
for line in f.readlines():
dump = []
dump.append(float(line.split()[1].split(":")[1]) )
dump.append(float(line.split()[2].split(":")[1]))
dump.append(float(line.split()[3].split(":")[1]))
Data_X.append(dump)

print(Data_X)

X = tf.placeholder(tf.float32, shape = [None, num_features])

kmeans = KMeans(inputs=X, num_clusters=k, distance_metric='squared_euclidean', use_mini_batch=True)

(all_scores, cluster_idx, scores, cluster_centers_initialized, init_op, train_op) = kmeans.training_graph()
cluster_idx = cluster_idx[0]
avg_distance = tf.reduce_mean(scores)

init = tf.global_variables_initializer()
sess = tf.Session()
sess.run(init)
sess.run(init_op, feed_dict={X: Data_X})

#학습
for i in range(1, 100) :
_, d, idx = sess.run([train_op, avg_distance, cluster_idx], feed_dict={X: Data_X})

#확인
print(idx, d)
for i in range(0,k) :
result = []
for j in range(0, idx.size,1) :
if(idx[j] == i):
result.append(Data_X[j])
print(i, '에 속한 데이터 :', result)

0 1:0.0 2:0.0 3:0.0
1 1:0.1 2:0.1 3:0.1
2 1:0.2 2:0.2 3:0.2
3 1:9.0 2:9.0 3:9.0
4 1:9.1 2:9.1 3:9.1
5 1:9.2 2:9.2 3:9.2
6 1:5.5 2:2.5 3:5.7
7 1:5.2 2:2.5 3:5.3
8 1:5.4 2:5.9 3:5.9
9 1:0.1 2:9.0 3:9.1
10 1:9.1 2:9.2 3:9.3

참고 : http://iamksu.tistory.com/84

반응형
반응형

[머신러닝] lab 8: Tensor Manipulation

https://www.youtube.com/watch?v=ZYX0FaqUeN4&index=24&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm



1. 텐서플로우의 기본적인 1차원 Array 사용법

t = np.array([0,1,2,3,4,5,6])

pp.print(t)

print(t.ndim) #차원 수 출력

print(t.shape) #행렬

print(t[0], t[1], t[-1])...

print(t[2:5], t[4:-1])...

print(t[:2], t[4:])... 


2. 2차원의 Array 사용법

t = np.array([1, 2, 3],[1, 2, 3], [1, 2, 3], [1, 2, 3])

pp.print(t)  #(4,3)행렬이 나오게 됨 

print(t.ndim) # 차원 수 : 2

print(t.shape) # 행렬



반응형
반응형

#모두를 위한 딥러닝 강좌 lec 8-2 : 딥러닝의 기본 개념2: Back-propagation 과 2006/2007 '딥'의 출현

https://www.youtube.com/watch?v=AByVbUX1PUI&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=23



Breakthrough

in 2006 and 2007 by Hinton and Bengio

초기값을 잘준다면 신경망이 많아도 학습이 잘 될 수 있다는 이론의 논문 발표

뉴럴넷이라고 하면 사람들이 어려워하고 힘들어하니까 Deep learning 으로 명칭도 바꿔서 말하기 시작함


ImageNet 

이미지 넷이라는 사이트에서는 사진을 주고 컴퓨터에게 무슨 사진인지 맞춰보라고 하는 기능이 비약적으로 오류율을 줄이면서 관심을 더 갖게 됨

뿐만 아니라 기술의 발전으로 그림을 설명하기도 했다. 


최근 바이두에서는 소음이 많은 곳에서도 사람의 음성을 인식하는 기술을 개발했다..


그러면서 Hinton이 왜 이전에 잘 안됐는지 4가지 원인을 밝혀보았다.

요건 다음 시간에..


데이터 마이닝을 알면 뭐가 좋은가?

비즈니스 환경에서 활용할 수 있다.

ex) 유튜브의 자막, 페이스북의 추천도 모두 AI를 통해서 만들어지고 있는 서비스다.

반응형
반응형


#텍스트간의 유사성을 판단하는 : 편집거리 알고리즘 (Levenshtein distance)

https://en.wikipedia.org/wiki/Levenshtein_distance




두 문자열의 유사도를 판단하는 알고리즘으로 비교하려는 문자열을 기준으로 문자열을 삽입/삭제/변경(수정)을 몇 번이나하여 동일하게 바꿀 수 있는 지를 계산하여 유사도의 판단 기준으로 삼는 알고리즘이다.


예시) next과 text의 유사도를 알고 싶다면?

 {}

N

E

X

T

T

E

 

 

 

 

X

 

 

 

 

T

 

 

 

 


ㄱ. T를 N으로 바꾸는 방법

(방법1) T를 삭제(+1)하고 N으로 수정(+1)한다. : 비용2

(방법2) T에 N을 추가(+1)하고 (TN) T를 삭제(+1)한다. : 비용 2

(방법3) T를 N으로 수정(+1)한다. : 비용1


이런 방식으로 모든 칸의 비용을 계산한 뒤, 최소 비용의 값을 구하면 된다.



참고 링크


반응형
반응형

#모두를 위한 딥러닝 강좌 lec 8-1: 딥러닝의 기본 개념: 시작과 XOR 문제

https://www.youtube.com/watch?v=n7DNueHGkqE&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=22



사람의 뇌는 굉장히 복잡하게 연결되어있는데, 연결된 부분들을 자세히보니(뉴런)을 자세히 보니 단순하게 움직이는 구조더라! input → input이 들어오는 신호의 길이에 따라서 input x* weight 되면서 계속해서 Sum이되고 Bias라는 값이 더해지면서 전달이 되더라!

근데 그 어떤값을 통해서 뇌가 활성화가 되고 활성화가 되지 않기도 하더라! 그래서 나온 컴퓨터로 구현할 수 있지 않을까해서 나온 것이


Activation Functions


값이 어떤 값보다 크면 1을 주고 어떤 값보다 낮으면 0을 주는 형태로 만들면 되겠다! 라는 아이디어가 나왔다.


Logistic regression Units


지난 번 시간에 배웠던 Logistic regression이 여러개가 있따면 이런식으로 네트워크를 형성할 수 있겠다!

= 여러개의 출력을 동시에 낼 수 있다.


False Promises (허황된 약속)


Frank 박사는 당시에 그러한 알고리즘을 통해서 말하고, 걷고, 글을쓰고, 자기자신을 인지할 수 있다고 말을 함...

많은 사람들에게 관심을 끌게 되었고...


근데 성과가 없었던 것은 아니였다고 한다..


AND/OR problem : linearly separable? 


그 당시에 AND와 OR라는 로직을 풀 수 있으면, 이것들을 조합해서 인공지능 기계를 만들 수 있겠다고 생각했었다.


OR = x1(가로축 값)과 x2(세로축 값)의 값이 있을 때

x1이 1이고 x2가 1이면 = 1이되고

x1이 0이고 x2가 0이면 = 0이되는 것을 안다면 (왼쪽 or 그림)


x1+x2를 통해서 Y라는 값을 만들 수 있을까?

linear하기 때문에 값을 구분할 수 있다!


AND

x1이 0일때, x2도 0이면은 값이 0이 되고,

x1이 1일때, x2도 1이면은 값이 1이되는 (오른쪽 and 그림)


..... 진짜 인공지능 머신을 만들 수 있겠다 싶었는데!!


XOR라는 이상한게 나옴! 어떻게 나왔느냐


 x1

 x2

 결과

 0

 0

0

 0

 1

1

 1

 0

 1 

 1

 1

0


값이 같을 때 0, 값이 다를때 1이되는.. XOR를 가지고 x1과 x2를 더해서 Y값을 나오게 기계에게 시켰는데?

Y가 정확하게 안나오는 것이다..


이유는 +와 -값이 다르기 흩어져있기 때문에 어떻게해도 linear하게 선이 그어질 수 없어서 100프로 맞게 나올 수가 없다. 

확률이 아무리해도 50%밖에 안나오더라.. 그래서 많은 사람들이 좌절함


Perceptrons(1969) by Minsky

이런 시기에 Minsky라는 교수가 XOR는 수학적으로 풀 수 없다며 수학적인 증명으로 말했고

[  ] [  ] [  ] MLP를 여러개 합쳐서 XOR를 할 수는 있지만, 각각 [  ]안에 들어가는 weight 과 bias를 학습시킬 수 없다고 했다.






그러다가 74,84년도 쯤에 해결이 된다.

Backpropagation (1974, 1982)

가운데에 네트워크가 연결되어있고 w+b를 통해서 출력을 만들어낼 수 있는데

출력이 원하는 결과가 아닐 경우 w나 b를 조절해야했는데,


나중에 앞에서 w나 b값을 조절하지말고 나중에 w와 b를 조절하면 어떨까?하고 논문을 냄


이것을 통해서 본격적으로 ML에 이 알고리즘이 사용되기 시작함.


그리고 나중에 고양이의 시신경이 어떻게 움직이는지 보려고 했는데

그림을 다르게 줄 때마다 새로운 네트워크를 형성하여가는 것을 발견함


즉, 일부를 인식하고 나중에 합쳐지는 것이 아닐까란 생각을 함


Convolutional Neural Networks

그림을 모두 한번에 읽는 것이 아니라. 

A라는 그림을 잘라서 작게 쪼개서 머리로 보내고 나중에 그림을 다 합치는 방법을 발견하였다 => Neural Networks 방법 발견


A Big problem


Backpropagetion을 통해서 몇개는 괜찮던데 네트워크가 여러개로 만들어지는 머신러닝의 경우,

뒤에서 조절된 W와 B값이 다시 앞까지 가는데, 정보가 소실되고 어렵게 됨..

결국 간단한 알고리즘들이 더 성능이 좋더라!


반응형
반응형

#모두를 위한 립러닝 강좌 7-2 : Meet MNIST Dataset

https://www.youtube.com/watch?v=ktd5yrki_KA&index=21&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm


...

반응형
반응형

#모두를 위한 립러닝 강좌 7-1 : Training/test dataset, learning rate, normalization

https://www.youtube.com/watch?v=oSJfejG2C3w&list=PLlMkM4tgfjnLSOjrEJN31gZATbcj_MpUm&index=20



ㅇㅇㅇㅇ

반응형

+ Recent posts