전체 글 40

Date Fruit Datasets

https://www.kaggle.com/datasets/muratkokludataset/date-fruit-datasets Date Fruit Datasets 7 Class; Barhee, Deglet Nour, Sukkary, Rotab Mozafati, Ruthana, Safawi, Sagai www.kaggle.com 이번 데이터는 Kaggle 에 있는 7개의 과일 종류가 존재합니다. 각 데이터를 구분할 수있는 특성들이 주어졌을때, 분류하는 문제입니다 Import Modules import numpy as np import pandas as pd import os from sklearn.preprocessing import LabelEncoder,StandardScaler from sklearn...

Kaggle 2022.05.17

[GAN] 생성적 적대 신경망

GAN 논문자료 GAN 딥러닝 논문 리뷰(Youtube - 동빈나) Youtube 동빈나 님의 자료와 GAN 논문 자료를 인용하여 작성하였습니다. GAN에 대해 설명하기 앞서, 필요한 내용인 Generative Models에 대해서 간략하게 설명하겠습니다. Generative Models Generative model이란 실존하지는 않지만 있을 법한 이미지를 생성할 수 있는 모델을 의미합니다. 사진의 왼쪽에서 보면 분류의 경우는 클래스간의 경계를 나눈 것이고, Generative 의 경우는 데이터간의 분포를 생성한 것입니다. 생성모델의 목표는다음과 같습니다. 입력 데이터의 분포에 근사하는 모델 G를 만드는 것 모델 G가 잘 작동한다는 것은 기존 이미지들의 분포를 잘 모델링 한다는 의미인데, 이때 2014..

Variational AutoEncoder(VAE)

오토인코더의 모든것(유튜브) - 이활석 Variational AutoEncoder(논문) Variational AutoEncoder - reference 이번 포스트에서는 이활석님의 "오토인코더의 모든 것"의 강의를 참고하여 정리하고자 쓴글 입니다. 뒤에 나올 내용들은 수학적 배경지식이 많이 필요하기 때문에, 이글 을 읽고 오시는것이 좋습니다. VAE를 설명하기전, AutoEncoder에 간단하게 설명 드리면, 오토인코더의 구조는 Encoder ,Decoder 부분으로 나누어져있습니다. 입력값 x에 대해서 특징을 추출해서, 입력의 정보를 Latent Variables(z)에 담은후,Latent Variables로 부터 자기자신을 다시 복호화하는 알고리즘 입니다.즉 X를 넣어서 X를 반환 하려고 하는 알고..

기초 정보 이론(Entropy, Cross Entropy, KL Divergence)

ML,DL을 공부하면서, 자주접하게 되는 개념들이기 때문에 정리해야 할 필요성이 있어서 정리합니다. 정보이론의 의미 1. Probability Theory : 불확실성에 대한 일어날 가능성을 모델링 베이즈 모델의 예시 $ P(Y \vert X) = \frac{P(X \vert Y)P(y)}{P(X)} $ 2. Decision Theory : 불확실한 상황에서 추론에 근거해 결론을 내리는 방식 $$ Y = 1\text{if } \frac{P(x \vert y = 1)p(y = 1)}{P(x \vert y = 0)p(y = 0)} > 1 $$ 3.Information Theory : 확률 분포 P(X) 의 불확실 정도를 평가하는 방법 $$ H(X) = -\sum_{x}P(X) \log{P(X)} $$ 정보량..

트랜스포머 정리(3)

이전글에 이어서 정리하는 글입니다. 트랜스포머 정리(2) 이전 글에 이어서 정리하는 글입니다. 앞의 글에서는 트랜스포머의 구조와 셀프 어텐션에 대해서 알아보았습니다. 멀티 헤드 어텐션(Multi-head Attention) 앞서 배운 어텐션에서는 $d_{model}$의 차원을 peaco.tistory.com 인코더에서 디코더로 지금까지 인코더에 대해서 정리를 했습니다. 인코더는 입력 데이터를 num_layers 수만큼의 연산을 순차적으로 수행 한 후, 마지막 층의 인코더의 출력을 디코더에 전달합니다. 그럼 이제 디코더도 num_layers 수만큼의 연산을 수행할텐데, 디코더의 역할은 무엇일까요? 디코더의 첫번째 서브층 : 셀프 어텐션과 룩-어헤드 마스크 위 그림을 살펴보면, 디코더도 인코더와 비슷한 점이..

트랜스포머 정리(2)

이전 글에 이어서 정리하는 글입니다. 앞의 글에서는 트랜스포머의 구조와 셀프 어텐션에 대해서 알아보았습니다. 멀티 헤드 어텐션(Multi-head Attention) 앞서 배운 어텐션에서는 $d_{model}$의 차원을 가진 단어를 num_heads로 나눈 차원을 가지는 $Vector_{Q,K,V}$로 바꾸고 어텐션을 수행했는데, 왜 어텐션을 $d_{model}$로 하지않고, 굳이 num_heads로 나눈 크기만큼의 차원을 축소했을까요? 한번의 어텐션을 하는것 보다 여러번의 어텐션을 병렬로 사용하는 것이 더 효율적 이라고 합니다.어딘가를 감시할때 혼자 감시하는 것보다 여러명이 동시에 감시하는것이 더욱더 정확하게 하는것 처럼말이죠.. 그래서 $d_{model}$의 차원을 num_heads로 나눠서 $d_{..

트랜스포머 정리(1)

2017년 구글이 발표한 논문인 "Attention is all you need"에서 나온 모델인 트랜스포머는 기존의 seq2seq의 구조인 인코더 디코더를 따르면서도, 어텐션만으로 구현이 가능한 모델입니다. 이 모델은 RNN을 사용하지 않고, 인코더-디코더 구조를 설계하였음에도 번역 성능에서도 RNN 보다 우수한 성능을 보여주었습니다. 트랜스포머 하이퍼 파라미터 아래에서 정의한 수치는 트랜스포머를 제안한 논문에서 사용한 수치로 하이퍼파라미터는 사용자가 모델 설계시 임의로 변경이 가능합니다. $ d_{model} $ = 512 트랜스포머의 인코더와 디코더의 정해진 입력과 출력의 크기 임베딩 벡터의 차원 또한 $ d_model $ 이며, 인코더와 디코더가 다음 층의 인코더와 디코더로 보낼때도 차원 값 유지..

어텐션 메커니즘

RNN의 seq2seq 방식에는 두가지의 문제가 존재합니다. 하나의 고정된 크기에 모든 정보를 압축하려고 하기때문에, 정보 손실이 발생 RNN의 고질적인 문제인 기울기 소실이 발생 이러한 문제로 기계 번역 분야에서 문장이 길수록 번역이 이상하게 되는 현상이 일어납니다.이를 해결 하기위해 고안된 기법이 바로 어텐션 메커니즘 입니다. Attention Idea & Function 디코더에서 출력 단어를 예측하는 매 시점마다, "인코더에서의 전체 입력 문장을 다시 한 번 본다" 라는 점입니다. 전체입력을 동일한 비율로 보는것이 아니라, 연관이 있는 입력단어 부분을 조금더 집중적으로 보게됩니다. 어텐션 함수는 다음과 같이 표현합니다. Attention(Q, K, V) = Attention Value 다음과 같은..

TensorFlow tf.lookup

tf.lookup 의 모듈에는 다음과 같은 클래스들을 가지고 있습니다. KeyValueTensorInitalizer tf.lookup.KeyValueTensorInitializer( keys, values, key_dtype=None, value_dtype=None, name=None )​ 예제를 잠시 보겠습니다. 우선 keys,values값들은 텐서로 이루어져야 합니다. keys_tensor = tf.constant(['a', 'b', 'c']) vals_tensor = tf.constant([7, 8, 9]) input_tensor = tf.constant(['a', 'f']) init = tf.lookup.KeyValueTensorInitializer(keys_tensor, vals_tensor) ..

TensorFlow tf.strings

TensorFlow 의 tf.strings 메서드 입니다. tf.strings.substr() tf.strings.substr( input, pos, len, unit='BYTE', name=None ) input Tensor를 pos 인덱스부터 len길이전까지 짤라서 사용합니다. input = [b'Hello', b'World'] position = 1 length = 3 output = tf.strings.substr(input,position,length) # 결과 output = [b'ell', b'orl'] 각각의 데이터에 대해서 적용됩니다. Hello 의 index [1:3], World 의 index[1:3] tf.strings.regex_replace() tf.strings.regex_re..

1 2 3 4