728x90

분류 전체보기 430

[python/Tensorflow2.0]GANs(Generative Adversarial Networks) ; basic & DCGAN

1. GANs(Generative Adversarial Networks, 敵対的生成ネットワーク)란? 두 개의 모델이 적대적인 과정을 통해 동시에 훈련된다. 생성자(예술가)는 진짜 처럼 보이는 이미지를 생성하도록 배우는 와중에, 감별자(예술비평가)는 가짜의 이미지로부터 진짜를 구별하게 되는 것을 배우게 되는 것을 의미한다. 훈련과정 동안 생성자는 점차 실제같은 이미지를 더욱 잘 생성하게 되고, 감별자는 진짜와 가짜를 더욱 잘 구별하게 된다. 이 과정은 감별자가 가짜 이미지에서 진짜 이미지를 더 이상 구별하지 못하게 될 때 평행 상태에 도달하게 된다. 조금 더 구체적으로는 얘기하자면 생성자가 균일한 분포나 정규 분포로 랜덤 벡터를 생성해 가짜 이미지를 만들어 내면 감별자는 그 이미지에 대해 진짜라고 판별되면..

IT/AI\ML 2020.04.22

[python/Tensorflow2.0] AutoEncoder(오토인코더) ; Variational autoencoder(VAE)

1. VAE(Variational AutoEncoder)란? VAE(Variational AutoEncoder)는 2014년 D.Kingma와 M.Welling이 Auto-Encoding Variational Bayes논문에서 제안한 오토인코더의 한 종류이다. VAE는 이전에 살펴 본 오터인코더와 다음과 같은 차이점이 있다. - VAE는 확률적 오터인코더(probabilistic autoencoder)다. 즉, 학습이 끝난 후에도 출력이 부분적으로 우연에 의해 결정된다. - VAE는 생성 오토인코더(generatic autoencoder)이며, 학습 데이터셋에서 샘플링된 것과 같은 새로운 샘플을 생성할 수 있다. VAE의 구조는 다음의 그림과 같다. VAE의 코딩층은 다른 오토인코더와는 다른 부분이 있는..

IT/AI\ML 2020.04.22

[python/Tensorflow2.0] AutoEncoder(오토인코더) ; basic

1. AutoEncoder이란? AutoEncoder는 아래의 그림과 같이 단순히 입력을 출력으로 복사하는 신경망이다. 그러나 단순한 복사가 아닌 네트워크에 여러가지 방법으로 제약을 준다. 예를 들어 아래 그림처럼 hidden layer의 뉴런 수를 입력층(input layer)보다 작게 하여 데이터를 압축(=차원 축소)한다거나, 입력 데이터에 노이즈(nosie)를 추가한 후 원본 입력을 복원할 수 있도록 네트워크를 학습시키는 등 다양한 AutoEncoder가 있다. 이를 통해 데이터를 효율적으로 표현(representation)하는 방법을 학습하도록 제어한다. 즉 AutoEncoder이란 차원 축소 등을 위해 표현학습(Representation Learning) 또는 특징학습(Feature Learni..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ; seq to seq with attention (simple neural machine translation, attention)

1. Attention 방식이란? seq to seq의 성능을 높이기 위해 도입된 방법 중 하나인 seq to seq Attention에 대해 알아보는 시간을 가지도록 하겠다. 기존의 seq to seq는 다음과 같은 문제점을 가지고 있다. ①중간에 한 개의 벡터 값(C)을 활용하는 방식으로는 모든 정보를 담기 어렵다. ②입력 언어와 타켓 언어가 길면 길어질수록 모델의 성능이 떨어지는 현상이 발생한다. 위와 같은 문제를 해결하기 위해 등장한 것이 바로 Attention이다. 이는 우리가 영어 지문을 해석할 때 모든 정보를 기억하기 보다 중요한 문장이나 단어에 집중하듯, 모델이 예측을 할 때 중요한 정보만 기억하면서 학습하는 구조이다. 기존에 배운 seq to seq에서 어텐션을 적용한 그림을 한 번 살펴..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ;seq to seq(simple neural machin translation)

1. seq to seq 구조 이번에는 챗봇이나, 번역기 등에서 사용하는 seq 2 seq에 대해 알아 볼 것이다. seq 2 seq는 시퀀스의 입력을 받고 시퀀스를 출력하는 모델이다. 일반 RNN도 시퀀스의 입력을 받지만 seq 2 seq 모델은 인코더와 디코더 구조가 존재한다는 차이점이 있다. 인코더 부분에서는 입력 정보를 담은 벡터를 만들어내고 이후 디코더에서는 이 벡터를 활용하여 재귀적으로 출력값을 만들어내는 구조이다. 그림으로 살펴보자. 우선 아래쪽의 박스가 인코더로 RNN step마다 입력값이 들어가고 있다. 이때의 입력값은 하나의 단어가 됐고 인코더 부분의 전체 신경망의 마지막 부분에 C로 표현된 하나의 벡터 값이 나온다. 이 벡터는 인코더 부분의 정보를 요약해 담고 있다. 정확하게 말하자면..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] bidirectional RNN(Recurrent Neural Network) ; many to many

1. bidirectional(양방향) RNN 이란 ? 이전 강의까지는 모두 RNN을 모두 단방향으로만 활용을 하였는데, 사실 이 방식은 정보의 불균형이 존재한다. 풀어서 설명하자면 다음과 같다. 단방향 RNN이 시퀀스의 첫 번째 토큰을 읽었을 때, 첫 번째 토큰에 대한 hidden states에는 정보가 1만큼 저장되어 있다고 하면, 그 정보를 기반으로 첫 번째 아웃풋을 내고, 다시 RNN이 시퀀스의 두 번째 토큰을 읽었을 때는 첫 번째 토큰에 대한 hidden states의 정보도 활용하여 두 번째 아웃풋을 출력하고, 또 다시 RNN이 시퀀스의 세 번째 토큰을 읽었을 때는 첫 번째와 두 번째 토큰에 대한 hidden states의 정보를 활용하여 세 번째 아웃풋을 내는 방식이므로 정보의 불균형이 생길..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ; many to many

1. Many to Many 방식이란 ? ​many to many 방식은 자연어 처리에서 개체명 인식, 또는 형태소 분석과 같은 시퀀스 태깅을 모델링 하는데 활용할 수 있다. 이전에 다뤘던 many to one의 경우 RNN이 시퀀스를 구성하고 있는 각각의 토큰을 읽어들이면서 시퀀스의 마지막에 해당하는 토큰을 읽었을 때 출력을 내는 구조였다. 이와는 다르게 many to many는 RNN이 시퀀스를 구성하고 있는 각각의 토큰에 대해서 모두 출력을 하는 구조이다. ​ RNN을 many to many 구조로 활용하는 방법을 간단한 형태소 분석 예제를 통해 확인해보도록 하자. 예를 들어 'tensorflow is very easy'라는 문장이 주어졌을 때, 문장의 단어 단위로 tokenization을 한 후 ..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ; many to one stacking

1. Stacking이란? ​CNN에서 convolution layer를 여러 개를 썼듯 ,RNN도 마찬가지로 여러 개를 쌓을 수 있다. 이를 multi layered RNN 또는 stacked RNN이라고 얘기한다. CNN에서 convolution layer를 여러 개 쌓았을 때, 인풋 이미지에 가까운 convolution layer는 edge와 같은 글로벌한 feature을 뽑을 수 있고 아웃풋에 가까운 convolution layer는 좀 더 abstract한 feature을 뽑을 수 있듯이 RNN에서도 stacked RNN를 활용하여 비슷한 효과를 얻을 수 있다. 이는 이론적으로 증명된 것은 아니지만 다양한 문제를 풀 때 stacked RNN 구조가 shallow RNN보다 더 좋은 성능을 보여왔..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ; many to one

이번에 다룰 Many to one은 특히 자연어 처리 분야에서 어떤 문장, 또는 단어를 RNN으로 인코딩하고 해당 문장 또는 단어의 sentiment를 classification하는 데 활용할 수 있다. ​ 먼저 간단하게 many to one의 활용 방법을 확인해보자. 예를 들어 'This movie is good'이라는 문장이 주어져 있을 때, 문장의 polarity를 파악하는 문제를 푼다고 가정해보자. 'This movie is good'문장을 단어의 시퀀스라고 생각해 문장을 ['This', 'movie', 'is', 'good']과 같이 단어 단위로 쪼갠 후 (이를 'Tokenization'라고 한다) Tokenization한 단어들을 RNN에 입력하면 RNN은 각각의 토큰을 읽고, 마지막 토큰을 ..

IT/AI\ML 2020.04.21

[python/Tensorflow2.0] RNN(Recurrent Neural Network) ; basic

1. RNN(Recurrent Neural Network)란? ​음악, 동영상, 에세이, 시, 소스 코드, 추가 차트의 공통점은 바로 시퀀스라는 점이다. 여기서 시퀀스(sequence)란 연관된 연속의 데이터를 의미한다. 음악은 음계들의 시퀀스, 동영상은 이미지의 시퀀스, 에세이는 단어들의 시퀀스 등으로 볼 수 있다. 한 페이지의 에세이, 한 권의 에세이 등이 있듯 시퀀스의 길이는 가변적이다. 기존의 뉴럴 네트워크 알고리즘은 고정된 크기의 입력을 다루는 데는 탁월하지만, 이러한 가변적인 크기의 데이터를 모델링하기에는 적합하지 않 는 문제점이 있었다. 이 때 등장한 것이 바로 RNN(Recurrent Neural Network, 순환신경망)이다. RNN이 기존 뉴럴 네트워크와 다른 점은 '기억'(다른 말로..

IT/AI\ML 2020.04.21
728x90