본문 바로가기

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은 생성기와 판별기라는 두 네트워크로 구성된다. 생성기의 입력은 노이즈고, 출력은 합성된 신호다. 판별기의 입력..