본문 바로가기

basic_ML_models

(12)
경사하강법 python 구현 (Gradient Descent) 다양한 머신러닝 툴을 이용하여 경사 하강법을 이용한 모델을 사용할 수 있지만, 이를 직접 구현한다면 경사하강법이 기초가 되는 모델들을 더 쉽게 이해할 수 있고, 사용자 정의 손실 함수의 정의 등 입맛에 맞는 머신러닝 모델 편집이 가능할 것 선형 회귀 모델의 MSE 비용 함수 가중치 벡터는 특성별 가중치와 분산의 추가된 행벡터, (m, p) 크기의 행렬 x는 각 특성별 값과 1(분산에 곱해지는)이 추가된 (m,p+1) 크기의 행렬 y는 출력값 (m,1) 크기의 행렬 위 함수를 통해 최적의 가중치를 찾아야 함, 즉 가중치 변화량에 따른 값의 변화가 최소가 되는, 0인 지점의 탐색 가중치에 대한 미분 값이 0이 되는, 0에 가까워지는 가중치 탐색 각각의 가중치 행 벡터에 대한 미분이 필요, 벡터의 미분 결과 ..
basic_DCGAN 심층 CNN을 사용한 GAN, DCGAN의 설계 원칙 MaxPooling2D나 UpSampling2D 대신 strides>1 합성곱을 사용한다. CNN은 특징 맵 크기를 조정하는 방법을 학습한다. Dense 계층 사용을 피한다. 모든 계층에서 CNN을 사용한다. Dense 계층은 생성기의 첫 번째 계층에서만 z-vector를 받기 위해 사용된다. Dense 계층의 출력 크기는 조정되어 뒤따라 나오는 CNN 계층의 입력이 된다. 각 계층의 입력이 평균 0에 단위 분산을 가져서 학습을 안정화시키도록 배치 정규화를 사용한다. 생성기 출력 계층과 판별기 입력 계층에는 BN을 사용하지 않는다. ReLU는 tanh 활성화 함수를 사용하는 출력 계층을 제외하고 생성기 전 계층에서 사용된다. 판별기 전 계층에 Leak..
basic_CGAN DCGAN에는 가짜 이미지는 임의로 생성된다. 생성기에서 어떤 숫자를 생성할지는 제어할 수 없다. 생성기에 특정 숫자를 요청할 방법이 없다. 이는 조건부 GAN을 사용해 해결할 수 있다. 생성기와 판별기 입력 모두에 조건을 부여한다. 그 조건은 숫자를 원-핫 벡터 형태로 변환한 것, 이 조건은 생성기에서는 생성할 이미지와 관련이 있으며 판별기에서는 진짜 혹은 가짜로 분류하는 것과 관련이 있다. 생성기의 경우 원-핫 레이블은 Dense 계층 앞에서 잠재 벡터와 연결된다. 판별기에서는 새로운 Dense 계층이 추가된다. 이 새로운 계층은 원-핫 벡터를 처리하고 뒤따라 나오는 CNN 계층의 다른 입력과 연결하기에 적합한 형상으로 변경하기 위해 사용된다. 생성기는 100차원 입력 벡터와 특정 숫자로부터 가짜 이..
basic_GAN 잠재 공간 보간법을 수행해 실존 인물이 아닌 새로운 유명 인사의 얼굴을 생성할 수 있다는 사실로 증명되었다. GAN은 생성기와 판별기라고 하는 두 적대 관계의 네트워크를 훈련시킴으로써 입력 분포를 모델링하는 방법을 학습할 수 있다. 생성적 적대 신경망 Generative Adversarial Network, GAN GAN 원리 생성기의 역할을 판별기를 속일 수 있는 위조 데이터 또는 신호를 생성한느 방법을 계속해서 알아내는 것이다. 판별기는 위조와 실제 신호를 구분하도록 훈련된다. 훈련이 진행될수록 판별기는 생성된 데이터와 실제 데이터의 차이를 구분할 수 없게 될 것이다. 그림에서 보듯이 GAN은 생성기와 판별기라는 두 네트워크로 구성된다. 생성기의 입력은 노이즈고, 출력은 합성된 신호다. 판별기의 입력..
basic_color_autoencoder 충분한 양의 흑백 사진을 입력으로 하고 그에 대응하는 채색된 사진을 출력으로 해서 오토인코더를 훈련시킬 수 있다면 적절하게 색을 입히는 숨겨진 구조를 발견할 수 있을 것이다. 충분한 양의 흑백 사진을 입력으로 하고 그에 대응하는 채색된 사진을 출력으로 해서 오토인코더를 훈련시킬 수 있다면 적절하게 색을 입히는 구조를 발견할 수 있을 것이다. 잡음을 제거하는 것이 아닌 잡음을 흑백 이미지게 추가하는 것 from keras.layers import Dense, Input from keras.layers import Conv2D, Flatten from keras.layers import Reshape, Conv2DTranspose from keras.models import Model from keras.c..
basic_DAE 잡음 제거 오토인코더 from keras.layers import Dense, Input from keras.layers import Conv2D, Flatten from keras.layers import Reshape, Conv2DTranspose from keras.models import Model from keras import backend as K from keras.datasets import mnist import numpy as np import matplotlib.pyplot as plt from PIL import Image np.random.seed(42) (x_train, _), (x_test, _) = mnist.load_data() image_size = x_train.sha..
basic_autoencoder 오토인코더는 주어진 입력 데이터의 압축된 표현을 찾으려는 심층 신경망 아키텍처다. 오토인코더는 입력 데이터에 유용한 변환을 수행하기 위해 표현을 찾으려고한다. 예로 잡음을 제거할 때 심층 신경망은 잡음이 섞인 데이터를 깨끗한 데이터로 변환하기 위해 사용될 수 있는 코드를 찾으려고 한다. 가장 간단한 형태로 오토인코더는 입력을 출력에 복사함으로써 표현 또는 코드를 학습한다. 오토인코더는 입력 분포를 일반적으로 벡터 형태를 띄는 저차원의 텐서로 인코딩한다. 이는 보통 잠재 표현이나 코드, 벡터로 불리는 입력 분포의 숨겨진 구조에 근사한다. 이 과정이 인코딩 부분을 구성한다. 그 다음 잠재 벡터 (latent vector)는 원본 입력을 복원하기 위해 디코더 부분에서 디코딩된다. 잠재 벡터가 입력 분포의 저차..
basic_Y_network_model 입력이 두 개, 출력이 하나인 모델 생성 신경망은 concatenate 계층을 사용해 결과를 결합, 동일한 형상을 갖는 두 개의 텐서를 연결해 하나의 텐서를 구성하는 것과 비슷하다. (3, 3, 16)인 두 개의 텐서를 연결하면 그 결과로 (3, 3, 32)인 텐서를 얻게 된다. import numpy as np from keras.models import Sequential from keras.layers import Dense, Activation, Dropout, Input from keras.layers import Conv2D, MaxPooling2D, Flatten from keras.utils import to_categorical, plot_model from keras.datasets i..