koos808

딥러닝 제대로 시작하기(책) - 6장 요약 및 Quiz 본문

Deep Learning/딥러닝 제대로 시작하기

딥러닝 제대로 시작하기(책) - 6장 요약 및 Quiz

koos808 2020. 7. 5. 02:17
728x90
반응형

※ STEP 6 : 합성곱 신경망(Convolutional Neural Network)

합성곱 신경망의 개요

  • 합성곱 신경망은 합성곱층풀링층이라는 특별한 두 종류의 층을 포함하는 feed-forward 신경망으로, 주로 이미지 인식에서 사용됩니다.
  • 공통점 : 이전 feed-forward 신경망과 마찬가지로, 역전파법과 확률적 경사 하강법을 사용하여 최적화를 수행합니다.
  • 차이점 : 합성곱 신경망의 특징은 국소 감수 영역(local receptive field)가중치 공유라 불리는 특별한 층간 결합을 갖는 것입니다.
    • 이전 feed-forward 신경망은 인접층의 유닛이 모두 서로 연결된(전결합, fully-connected) 것이었다.
    • 이에 비해 CNN은 인접한 층과 층 사이에 특정한 유닛만이 결합을 갖는 특별한 층을 갖게 되고 이러한 층에서 합성곱과 풀링이라는 이미지 처리의 기본적 연산을 하게 됩니다.
  • Q. CNN의 전형적인 구조는 어떻게 되죠?
    • Input - [ 합성곱층(n개) - 풀링 ] 1쌍 - LCN(국소 콘트라스트 정규화) - [ 합성곱층(n개) - 풀링 ] 1쌍 - 전결합층(fully-connected layer) - 전결합층 - softmax - Output 입니다.
      • 합성곱층과 풀링층이 나오는 형태로 쌍을 이루며 여러 번 반복됩니다. 그리고 국소 콘트라스트 정규화(LCN)층을 배치하는 경우도 있습니다.
      • 합성곱층과 풀링층이 반복되는 구조 뒤에는 인접한 층 사이의 모든 유닛이 결합한 층이 배치되는데 이를 전결합층(fully-connected layer) 라고 하며, 일반 feed-forward 신경망의 각 층과 같습니다.
      • 전결합층은 일반적으로 여러 층을 연결하여 배치하고 마지막 출력층은 일반 feed-forward 신경망과 같습니다. [ 분류 목적이면 마지막 출력층 softmax ]
  • Q. conv(컨볼루션, 합성곱) 층 이 무슨 역할을 하죠?
    • 입력데이터와 가중치들의 집합체인 다양한 필터(filter)의 합성곱 연산을 통해 입력데이터의 특징(feature)을 추출하는 역할을 수행합니다.
    • 입력 데이터 특징(feature)을 추출하여 특징 맵(feature map)을 만들고, feature map에서 최대값을 뽑아서 다음 층으로 전달합니다.
  • Q. 합성곱 계산은 어떻게 하죠?
    • 이미지의 합성곱이란, 이미지와 필터 사이에 정의되는 연산입니다.
    • 이미지의 픽셀값과 필터(작은 크기의 이미지)의 픽셀값을 곱한 것이 이미지의 합성곱입니다.
    • 즉, 이미지에 필터를 겹쳤을 때, 이미지와 필터가 겹쳐지는 픽셀끼리 곱을 구한 다음 필터 전체에서 그 값을 합하는 연산을 뜻합니다.
    • output size(H,W) = ( (Input size+2*Padding-filter/kernel size)/Stride +1,  (Input size+2*Padding-filter/kernel size)/Stride +1)
  • Q. 합성곱은 어떠한 작용을 하나요?
    • 이미지의 합성곱은 필터의 명암 패턴과 유사한 명암 패턴이 입력된 이미지에서 어디에 있는지를 검출하는 작용을 합니다.
    • 간단히 말하면, 합성곱 연산은 이미지 처리에서 말하는 필터연산에 해당합니다.
  • Q. 제로 패딩(zero-padding)은 뭔가요?
    • 제로 패딩을 설명하려면 패딩을 먼저 설명할게요.
    • 보통 합성곱한 결과 이미지가 입력 이미지와 크기가 같으면 편리할 때가 많아요.
    • 또한, 합성곱 연산을 수행하면 데이터 크기가 줄어드는 단점을 방지하기 위해 사용합니다.
    • 입력 이미지의 바깥쪽에 폭만큼 테두리를 둘러 크기를 늘려서 출력 이미지의 크기가 원래 입력 이미지와 같은 크기가 되도록 만드는 것입니다.
    • 그 중에서도 제로 패딩은 이 '테두리' 부분의 픽셀값을 0으로 설정하는 방법입니다.
    • 제로 패딩 처리를 하면 출력 이미지의 주변부가 어둡게 될 수 있어요.
  • Q. 스트라이드(stride)란 무엇인가요?
    • 필터를 적용하는 위치의 간격을 스트라이드(stride)라고 합니다.
    • 스트라이드를 키우면 출력 크기는 작아지지만, 너무 큰 값을 지정하는 것은 이미지의 특징을 놓칠 가능성이 있기 때문에 주의해야 합니다.
  • Q. 합성곱층의 특징이 뭐죠?
    • 국소적인 결합을 가지는 것과 가중치를 공유하는 것입니다.
      • 국소적 결합 : 합성곱 연산의 국소성을 반영하여 출력층의 유닛 하나(채널 m의 한 개 픽셀)는 입력층의 유닛하고만 결합한다는 뜻입니다.
      • 가중치 공유 : 결합의 가중치는 출력층의 같은 채널에 속하는 모든 유닛에서 같다는 뜻입니다.
  • Q. 풀링층 이란 무엇인가요?
    • 풀링층은 보통 합성곱층의 바로 뒤에 배치됩니다.
    • 입력 정보를 최대값, 최소값, 평균값 등 하나의 대표값으로 압축하여 데이터 연산량을 줄여주는 역할을 수행합니다.
    • 합성곱층에서 추출한 feature의 위치 감도를 약간 저하시켜 대상이 되는 feature값의 이미지 내에서의 위치가 조금씩 변화하는 경우에도 풀링층의 출력이 변화하지 않도록 해주는 역할을 합니다.
    • 풀링 값이 크다는 것은, 데이터 안에 해당 필터의 특징(성분)이 많이 포함되어 있는 것을 의미합니다. 즉, 특징 맵 값이 압축되어 있는 풀링 경과 값을 통해 데이터의 특징(성분)을 추출 할 수 있습니다.
  • Q. 최대 풀링(max pooling)평균 풀링(average pooling) 을 설명해주세요.
    • 적당히 패딩을 적용해 입력 이미지의 가장자리를 포함하고 모든 점을 중심으로 하는 P_ij를 만들 수 있고,
      이 P_ij 내의 픽셀에 대해서 채널 k마다 독립적으로 H^2개 있는 픽셀값을 사용하여 하나의 픽셀값 u_ijk를 구할 수 있습니다.
    • 그 중에서 최대 풀링은 H^2개의 픽셀값 중 최대값을 고르는 방법, 평균 풀링은 픽셀값의 평균을 계산하여 픽셀값으로 사용하는 방법을 의미합니다.
  • Q. 풀링층의 특징을 설명해주세요.
    • 합성곱층과 마찬가지로 풀링층에도 2 이상의 스트라이드를 설정할 수 있으며 통상 이렇게 설정합니다.
    • 또한 합성곱층과 마찬가지로, 2층 신경망으로도 구성할 수 있고 층간의 결합이 국소적으로 제한되도록 구성된다.
      • BUT 이 경우 결합의 가중치는 합성곱층의 필터처럼 고정값으로 되어 있어 조절할 수 없다.
      • 따라서 풀링층에는 학습에 따라 변화할 수 있는 파라미터가 존재하지 않는다. 역전파법을 수행할 때 풀링층에는 델타에 대한 역전파 계산만을 수행한다.
  • Q. 정규화층에 사용되는 방법과 국소 콘트라스트 정규화(local contrast normalization) 에 대해서 설명해주세요.
    • 명암을 여러 방법으로 정규화하는 방법 중에 이전에 설명해드렸던 것은, 이미지의 집합(훈련 데이터)에 대한 통계치를 이용하는 방법이 있었는데 정규화나 백색화가 있습니다.
    • CNN에서는 대상 이미지로부터 학습 이미지의 픽셀 단위 평균을 뺀 다음 CNN의 입력으로 사용하는 경우가 있습니다.
    • 이러한 방법 이외에 국소 콘트라스트 정규화가 있는데, 이 방법은 이미지 한장 한장에 대해 개별적으로 처리하는 방법입니다.[국소 영역 내의 모든 채널의 픽셀을 대상으로 평균과 분산을 계산]
      • CNN뿐만 아니라 일반적인 이미지 처리 방법 중 하나 입니다. 합성곱 연산이나 풀링과 마찬가지로 한 개 층으로 이 처리를 구현할 수 있고 역전파 계산도 가능합니다.
      • 하지만 풀링층과 마찬가지로 이층의 가중치는 고정값이어서 학습이 가능한 파라미터가 없습니다.
      • 국소 콘트라스트 정규화에는 감산 정규화(subtractive normalization)제산 정규화(divisive normalization) 두 가지가 있습니다.
  • Q. 그러면 감산 정규화는 무엇인가요?
    • 감산 정규화는 입력 이미지의 각 픽셀 명암에서 P_ij(H x H 크기의 정사각형 모양의 영역)에 포함되는 픽셀의 명암값의 평균을 빼는 것을 의미합니다.
    • 이는 영역의 중앙부를 중요시하고 주변부의 영향력을 상대적으로 줄이기 위한 방법입니다. [영역의 중앙부에서 값이 최대가 되고 주변으로 갈수록 작아짐]
  • Q. 제산 정규화는요?
    • 제산 정규화도 마찬가지로 국소 영역 내에서 이루어지지만 픽셀값의 분산을 추가적으로 필요로 합니다.
    • 감산 정규화를 거친 입력 이미지의 픽셀값을 다시 분산의 제곱근표준편차로 나누어줍니다.
    • 감산 정규화를 그대로 하게 되면 명암의 차이가 적은(대비가 적은) 국소 영역일수록 작은 명암의 차이가 증폭되어서 이미지의 노이즈가 강조되는 결과가 일어납니다.
      • 따라서 입력 이미지 내에서 대비가 큰 부분에만 적용되도록 처리를 해줍니다.
728x90
반응형
Comments