전체 글 235

ML - Generative Model(2) / GAN(adversarial networks) / generator / discriminator

Generative Adversarial Networks GAN : generative model중에 크게 VAE와 GAN이 있는데 GAN이 압도적으로 더 많다. GAN 중 일부는 VAE의 좋은 특성을 갖고 있는 것들도 있다. GAN이란, generator(생성자)와 discriminator(판별자) 네트워크 간의 경쟁적인 학습을 기반으로 하며, 실제 데이터와 비슷한 가짜 데이터를 생성하는 모델이다. generator는 random latent vector(잠재 벡터) 에서 데이터를 생성하려 계속해서 업그레이드 되고, discriminator는 생성된 데이터와 실제 데이터를 구별하기 위해 계속해서 업그레이드 됨으로써 이 둘이 경쟁 구도를 가지며 생성자가 점차적으로 실제와 더욱 유사한 데이터를 생성하도록 ..

ML - Generative Modeling(1) / autoencoder / VAE(variational autoencoder)

Generative Modeling - Generative Model - Basic Autoencoders - Variational Autoencoders (VAE) - Generative Adversarial Networks (GAN) - Fancier Generative Models Generative Modeling Generative Modeling이란, training data를 학습하여 유사한 데이터를 생성하는 모델이다. training data 들의 샘플마다 픽셀들의 분포를 분석하여 오른쪽 그림처럼 training data와 유사하게 새로운 데이터를 만들어내는 것이다. 결국, generative modeling에서 가장 중요한 것은 training data의 분포를 학습하는 것이다. tran..

ML - RNN(4) / LSTM / cell / forget gate / input gate / output gate

Long Short-Term Memory(LSTM) RNN vs LSTM : RNN은 결국 input이 internal state로 들어가고, self 루프가 있으며 아래 식으로서 stae가 계산된다. [Symbol 소개] 1) Neural Network Layer : neural network layer 중 하나로서 activation function이 드 ㄹ어 2) pointwise operation : 데이터 요소에 대해 요소별로 연산 3) vector transfer : 벡터가 이동한다. 4) Concatenate : 벡터가 하나로 합쳐진다. 5) Copy : 벡터가 두개로 나눠진다. [ RNN vs LSTM 비교 ] RNN : 다음 time step으로 넘어가는 internal state가 하나..

ML - RNN(3) / Long-term dependencies / Truncated / gradient 폭발&소실 / clipping / tradeoffs

문제 1. Long-Term Dependencies Long-Term Dependencies : sequence data에서 이전 시간 단계의 정보가 현재 또는 미래 시간 단계에서의 예측에 영향을 미치는 경우를 말한다. Long term denpendesncies로 인하여 time 구간이 너무 길어서 가장 끝에 있는 loss function이 앞쪽에 있는 입력단까지 잘 전달이 되지 않을 수 있다. CNN에서 Layer가 깊어지면, update하는 과정에서 gradient가 잘 흘러가지 않는다. RNN도 마찬가지로 time step이 길어지면 출력값에 대해서 bptt를 통해 update되면서 gradient가 소실될 수 있다. h2에서의 loss function이 있다면, RNN에서는 그 이전 모든 영역에..

ML - RNN(2) / character-level language model / one-hot encoding / Ground Truth / auto regressive

Character-level language model Word level Language model : 주어진 텍스트나 문장을 이해하고 다음 단어나 토큰이 무엇일지 예측하는 잡업을 수행할 때 사용되는 것이 Language model이다. 예측은 문장의 맨 끝의 단어도 가능하고, 문장 중간에 있는 단어를 target word로 하여 예측하는 작업을 수행할 수도 있다. 구글이나 네이버에 어떠한 단어의 조합을 검색할 떄, 내가 자성하고 있는 단어 뒤에 올 단어를 이어서 검색창 아래쪽에 연관 검색어로 보여주는 것이 이에 해당한다. 완벽한 문장에 구멍을 뚫어, RNN과 같은 model에 앞 단어들을 순차적으로 넣어주고, 마지막 출력을 예측하도록 한다. 이렇게 수많은 데이터를 학습하며 문맥 관계를 파악하고, 이렇..

ML - RNN(1) / sequence data / many to one / one to many / hidden state weight / BPTT

Temporal Modeling [contents] 1. Recurrent Neural Networks (RNN) 2. Long Short-Term Memory (LSTM) 3. Transformer : Self-Attention Recurrent Neural Networks (RNN) Sequence Data : RNN은 Sequence data를 처리하는 모델이다. Sequence data는 순서대로 처리되어야하는 data이며 음성인식, 자연어처리 등이 이에 포함된다. 자연어의 경우 단어 하나만 안다고해서 처리될 수 없고, 앞뒤 문맥을 함께 이해해야 해석이 가능하다. 따라서 지금까지 배운 neural network나 CNN만으로는 할 수 없다. 순차적으로 들어온느 입력을 그림으로 표현하면 위와 같다...

Python - 파일 읽고 쓰기 / readline vs readlines / read / 읽기모드

04-3 파일 읽고 쓰기 파일 생성 에디터에 다음과 같이 작성하면, 프로그램을 실행한 디렉토리에 새로운 파일이 생성된다. 파일을 생성하기 위해 파이썬 내장함수인 open을 사용한다. [파일 열기 모드] 다음과 같이 파일 객체를 생성할 때, open함수의 입력값으로 파일 이름과, 파일 열기 모드를 받아야한다. 파일 열기 모드에는 r,w,a, 세가지가 있다. 파일을 읽거나, 내용을 쓰거나, 새로운 내용을 추가할 때 각각 상황에 맞는 열기 모드를 사용하여 open 함수를 통해 파일을 생성하거나 다루 수 있다. 파일을 쓰기 모드로 열어 출력값 적기 write함수를 사용하여 file에 data를 작성하는 코드이다. 보통은 값을 에디터 화면에 출력하는 방식을 많이 사용하나 위 예시는 값을 파일 내에 작성해가는 방식..

ML - Computational Graph & Backpropagation / upstream & downstream & local gradient

Computational Graph Gradient loss function은 결국 W에 대한 함수이기 때문에, 특정 W에서의 편미분을 통해 gradient(기울기)가 낮은 방향으로 가면, loss를 줄일 수 있다. 결국 gradient는 편미분들로 구성되어있는 일종의 vector라고 볼 수 있다. 각 weight에 대해서 편미분되므로 여러개의 가중치가 있을 때에는 하나의 편미분 값이 아닌, vector로 표현될 수 있다. Backpropagation How to compute gradients? : layer가 20개 이상으로 너무 deep하거나 너무 복잡하면, loss funciton이 너무 복잡해져, 이것을 편미분하는 계산 과정이 너무너무너무울트라슈퍼똥방구 복잡해진다.... 위 식처럼 이미 loss..

ML - Neural Networks (NN) / Tensor / flattening / non-linear / activation function / ReLU

Neural Networks Flow of Tensors Neural Network의 module들은 결국 tensor들의 flow이다. input tensor와 중간중간의 featur map tensor들이 계속해서 흘러가는 것이며 그것들이 또 다른 module 의 input 으로 주어지는 흐름으로 neural network가 구성된다. Tensor : scalar부터 vector,matrix 등을 모두 총칭하는 general한 용어이다. scalar는 0차원 tensor, vector는 1차원 tensor, matrix는 3차원 텐서라 할 수 있으나, 기준점을 어디에 두냐에 따라 차원은 달라질 수 있다. tensor에서 차원은 보통 축의 개수를 의미한다. Neural Networks (NN) [ Ar..

Python - 사용자 입출력 / input / print / 문자열 출력 / end 이어쓰기

사용자 입력 input //사용자 입력 : 사용자가 입력한 값을 변수에 대입하고 싶을 때에는 input함수를 사용한다. 입력값을 받기 위한 설명을 넣고 싶을 때에는 input함수의 parameter자리에 큰 따옴표를 포함하여 작성한다. 다음과 같이 코드를 작성하면 위와 같이 input으로 작성한 값이 name으로 들어가 출력된다. print //출력 - 기본 구조 print 함수의 파라미터 자리에 숫자,문자열, 리스트 를 넣으면 해당 값이 출력된다. - 큰따옴표 연결 위와 같이 큰따옴표로 구분하여 파라미터 자리에 연속해서 넣으면 해당 문자열들이 이어져 하나의 문자열로 출력된다. +를 통해 문자열들을 더한 것과 동일하게 출력된다. 허나, 위에 출력된 것을 보면 띄어쓰기가 되지 않아 문장으로 읽기 어렵다. ..