[AI] CNN


AI CNN


입력 tensor의 공간정보를 무시하는 Flatten Later

  • fnn(feedforward neural network)로 학습할떄는 입력데이터가 1차원의 벡터로 변환
  • 그래서 이미지의 가로세로 공간적인 정보를 무시하고 무조건 납작하게 하는 Flatten 레이어를 사용
  • 28X28의 흑백이미지는 flatten layer를 통과하면 784길이의 벡터가 된다

CNN(Convolutional Neural Network)

  • 이미지 처리에 특환된 신경망
  • Flatten layer를 사용하지 않고 이미지의 정보 그대로 활용
  • 데이터 처리는 fnn에서와 마찬가지로 가중합을 한 뒤 비선형 함수(relu)활용

cnn

  • 2가지 처리영역이 존재
    1. feature extraction 영역
      • convolution과 pooling라는 2가지 연산을 통해 수행
      • 이미지 형태로 그대로 네트워크가 받아 들임
      • 그 위를 어떤 작은 네모 필터가 돌아다니면서 정보를 추출하여 다음으로 넘기고 추출된 정보(feature)중 핵심적인 것만을 남기고 불필요한 정보는 버리는 샘플링 작업이 있음
      • 추출 및 샘플링 이 두 과정을 여러번 반복하다 보면 이미지에서 주요한 특징만 남음
    2. task 수행 영역
      • 추출된 정보를 다시 1차원으로 누르고 Dense레이어 원하는 대로 연결 다음 softmax로 원하는 수만큼 분류를 한다든지 하는 역할을 수행

Convolution

  • 이미지로부터 feature를 추출하는 연산
  • conv필터가 입력 image를 상화좌우로 훑으며 주요한 특징이 있는지 찾아내는 과정
  • conv 필터가 여러개 설정하면 그만큼 이미지로부터 다양한 특징을 추출 가능
  • convolved feature라고 부름
  • 이미지를 pixel단위 훑을때 겹쳐지는 pixel과 가중치를 곱해서 그 가중합의 결과를 다음을 ㅗ넘김
  • convolution연산이 이미지로부터 특징을 추출하는 역할
  • 입력 tesnor와 convolution필터가 가중합을 한 뒤 , relu와 같은 activation function을 취해주면 됩니다

Color image

  • 컬러이미지는 3차원 텐서이므로 conv를 적용하기 위해 conv 필터 또한 3차원으로 생겨야함
  • FNN에서 Dense layer에 노드를 여러 개 두어 서로 다른 가중합 및 feature 추출을 진행하듯이, CNN에서도 서로 다른 필터를 여러 개 두어 입력 이미지로부터 여러 feautre를 추출 가능
  • conv필터를 많이 두면 둘수록 더 다양한 feature를 꺼낼 수 있음

Pooling

  • conv필터가 연산이 끝난 뒤, 결과로부터 정보를 추리하는 Pooling 연산이 이어짐
  • pooling 진행하면 가로세로 차원크기가 축소되는 subsampling 효과
  • pooling연산은 feature map(pooling 대상영역)을 역시 상하좌우를 훑으며 핵심적인 정보만을 영역별로 샘플링
  • 주로 영역 내 가장 큰 값만을 나머지 값을 버리는 maxpooling 방식을 적용(강력한 특징만 남김)
  • conv 연산이 추출한 feature 정보를 단순화하면서 차원을 줄이지만 공간위치정보는 그대로 유지한다는 특징

Summary

Feature Learning

  1. 이미지로부터 convolution연산을 통해 특징을 학습
  2. Activation function을 거쳐 non-linearity 적용
  3. Pooling으로 공간정보를 유지하면서도 차원을 축소

Task수행

  1. conv와 pooling으로 도출된 고차원의 feature를 분류를 하기 위해 납잡하게 1차원으로 펼침
  2. Class수만큼 분류되도록 Dense로 연결
  3. Class수만큼 probability로 표현

참고