목록전산/Deep Learning (11)
Manduss life

Style Transfer content 이미지, style 이미지가 주어졌을 때, 이미지의 형태는 content 이미지의 형태를 유지하면서, style 이미지의 domain(style)로 변형하는 것 실습 VGG19 모델의 앞 5개의 CNN layer를 사용한다. 5개의 CNN layer 중에 특정 layer에서 content loss, style loss를 계산한다. 여기서는 최초 style tranfer 논문에서 제안한 5개 layer에서 style loss 계산, 4번째 layer에서 content loss 계산한 형태를 따른다. Content loss : 합성곱의 기대값과 예측값의 MSE Style loss : 합성곱의 기대값의 그람 행렬과 예측값의 그람행렬의 MSE (output은 상수 los..
CNN의 발전 요인 layer 수 증가 (깊이) 네트워크가 깊어질수록 모델은 더 복잡해지고, 그에 따라 상당히 복잡한 특징을 학습할 수 있으므로 깊이를 깊게 만드는 것이 중요하다. 그러나, 깊이가 증가함에 따라 경사 소실 문제(vanishing gradient), overfitting 문제가 발생할 수 있으므로 절충점을 찾아야 한다. feature map 또는 channel 수 증가 (너비) 채널 수가 많아질수록 네트워크가 더 세밀한 특징을 학습할 수 있으므로 이론적으로는 너비를 증가시키는 것이 도움이 된다. 그러나, 모델이 극도로 넓어지면 정확도가 빠르게 saturate되는 경향이 있다. 이미지 공간차원 증가(32x32 => 224x224) (해상도) 고해상도 이미지는 더 세분화된 정보를 포함하므로 이..

ResNet Batch Normalization 사용한 layer수를 152개로 대폭 상승시킨 네트워크. 이전에도 BN이 사용되었으나, 깊은 모델이 얕은 모델보다 성능이 더 안좋았다고 함. (underfitting 문제가 있었다고 함) Shortcut connection (한국어로, '지름길'이란 뜻.) Vanishing gradient 문제를 해결하기 위함. 한 블럭의 결과값에 input 값을 더하는 구조이다. 기존의 input x 에 대한 결과값이 H(x)라면, shortcut의 결과값은 H(x) = F(x) + x 이다. 위 수식을 풀면, F(x) = H(x) - x이다. H(x)는 현재의 결과값이고, x는 이전 블럭의 결과값이니, 잔차(Residual)로 학습이 이루어졌다는 뜻이다. 논문에서 수식..

VGG (Visual Geometry Group) 13개의 layer(10개의 Convolution layer, 3개의 fully connected layer) 1억 3천 8백만 parameter 사용 AlexNet보다 더 많은 layer를 쌓고, 작은 크기의 kernel(2x2, 3x3) 사용 GoogLeNet 22개의 layer VGG보다 많은 layer를 사용하지만, parameter는 단지 5백만개를 사용한다. Inception 모듈(여러 병렬 합성곱 계층으로 구성된 모듈)을 사용 parameter 개수를 줄이기 위해 1x1 conv 사용 overfitting을 줄이기 위해 fully connected layer가 아닌 전역 평균 풀링을 사용 vanishing gradient 문제를 해결하기 위해..

LeNet 5개의 계층(2개의 Convolution layer, 3개의 Fully Connected layer) 6만개의 parameter nMB의 MNIST 데이터셋 사용 아래 코드에서 보면, 첫번째 layer의 input dimension이 3이다. 초기에는 단일 이미지가 입력이었는데, 색상 이미지(3채널)이미지가 입력으로 들어오는 구조로 수정되었다. ## LeNet은 maxpooling이 아닌 average pooling을 사용한다. class LeNet(nn.Module): def __init__(self): super(LeNet, self).__init__() self.cn1 = nn.Conv2d(3, 6, 5) self.cn2 = nn.Conv2d(6, 16, 5) self.fc1 = nn.L..

CNN 특징 가중치 공유 CNN은 가중치를 공유할 수 있어 매개변수를 효율적을 활용한다. 즉, 동일한 가중치 또는 매개변수로 다양한 특징을 추출한다. 자동 feature 추출 feature 추출 단게를 여러개 둠으로써 CNN은 데이터셋에서 자동으로 특징 표현을 학습할 수 있다. 계층적 학습 여러 계층으로 구성된 CNN 구조 덕분에 저수준에서 고수준까지의 feature를 학습할 수 있다. 시각적, 공간적 상관관게 탐색 가능 ex) 동영상 처리 작업 CNN의 발전 요인 경사 소실 문제를 극복하기 위한 활성화 함수, 손실 함수 사용 경사 소실 문제 : chain rule에 따르면, 손실 함수의 gradient 값은 각 계층의 gradient의 곱으로 나타내는데, 이 값들이 1보다 작으면, 0으로 수렴되어 매개..

Dropout self.dp1 = nn.Dropout2d(0.5) --> 이전 뉴런을 0.5 확률로 제거 커널 크기 커널 크기를 크게 잡으면 정밀해지지 못함. 이미지의 가장 중요한 시각적 특징은 특정 범위에서 발견되므로, 시각적 패턴을 찾으려면 한번에 인접한 픽셀 몇 개만을 보는 작은 저널을 쓰는 것이 낫다. 3x3 커널 크기를 가장 많이 쓴다. optim.zero_grad() 매 학습마다 gradient값을 0으로 설정해주어야한다. Pytorch에서는 gradients값들을 추후 backward를 해줄때 계속 더해주기 때문이다. 출처 : https://algopoolja.tistory.com/55 with torch.no_grad(): inference 시에 해주는 자동으로 gradient를 계산하는 ..
Softmax 분류 문제를 풀 때, 모델의 출력을 확률로 해석할 수 있게 변환해주는 연산 분류 문제를 풀 때, 선형 모델과 softmax 함수를 결합하여 예측한다. 학습 시에는 softmax를 사용하지만, 추론 시에는 원-핫 벡터를 사용한다. 원-핫 벡터는 최대값을 가진 주소만 1로 출력하는 연산이다. $$\textrm{softmax(o)} = \left ( \frac{exp(o_1)}{\sum_{k=1}^p exp(o_k)}, \cdots, \frac{exp(o_p)}{\sum_{k=1}^p exp(o_k)} \right )$$ layer 층을 여러 개 쌓는 이유 층이 깊을수록 목적함수로 근사하는데 필요한 뉴런의 수가 훨씬 빨리 줄어들어 효율적인 학습이 가능하다. 층이 얇으면 뉴런의 숫자가 기하급수적으..