convolution neural network
convolution
하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자
: 사람은 이미지를 보거나 실생활을 할때 픽셀을 보지 않는다. 특정한 특징이 있는걸 감지한다.
컨볼루션 주요목적은 이미지에서 특징을 찾는것. 특징 맵 만들어서 픽셀간의 공간관계를 만든다. 동시에 신경망이 감지해서 특정한 이미지를 인식한다.
ReLU: 정류선형
컨볼루션하고 정류화하는 큰 단계. 비선형을 높이기 위함이다. 네트워크에 비선형을 높이는 이유는 이미지 자체는 굉장히 비선형적이다. 다른 객체를 인식하면 이미지에 비선형들이 많아진다. 색도 다양하고 크기도 다양하기 때문이다.
max pooling
: pooling은 convolution을 거쳐서 나온 activation maps가 있을때, 이를 이루는 convolution layer을 resizing하여 새로운 layer을 얻는것이다.
박스안에서 최댓값을 찾고 하나만 남겨둔다. 간격에 따라 오른쪽으로 넘겨준다. 과정을 반복해서 최댓값을 찾는다. 풀링을 하면서 찾는 특징이 아닌 정보를 75% 제거하게 된다. 최대픽셀, 최대값을 사용하기 때문에 왜곡을 설명할 수 있다.
ex. 이미지가 두장있는데 한 이미지에는 얼굴이 치우쳐져 있고 다른쪽을 움직이면서 풀링하면 풀링된 맵이 똑같아 지게 되는것이다. 공간이나 질감의 왜곡을 설명할 수 있게 되는것이다.
flattening
: 풀링된 특징맵을 한행씩 가지고 와서 세로로 길게 만든다. 이후에 인공신경망에 인식시킨다.
full connection
: 인공신경망은 속성과 특성을 다루고 더 잘 예측할 수 있게 해준다.
오차가 계산되고 역전파가 되어서 몇가지가 조정된다. 특징 감지기가 조정. 특정이 틀렸기 때문에 조정을 해서 다음에는 더 나아지길 바란다. 이 모든 건 경사하강법과 역전파를 통해 이루어진다. 계속해서 모든과정이 반복된다.
Summary
먼저 input 이미지에 다양한 특징 감지기를 적용한다. 특징 감지기는 필터라고도 불렸는데 그것으로 특징 맵을 만든다. 특징 맵은 컨볼루션 레이어를 이루어져있다.
컨볼루션 레이어 위에 ReLU, 정류화 선형 유닛을 적용해서 이미지의 선형을 없애고 비선형을 높인다. 그리고 풀링 레이어를 컨볼루션 레이어에 적용한다.
풀링 레이어는 많은 장점이 있다.
풀링 레이어의 주요 목적은 이미지에서 공간 불변성을 확실하게 하는 것이다.
그래서 뭔가 기울거나 비틀렸거나 이상적인 시나리오와 약간 달라도 특징을 인식할 수 있고 거기에 풀링하면 이미지의 크기를 상당히 줄일 수 있다. 풀링은 데이터나 모델이 데이터에 과적합되는 걸 방지한다. 많은 데이터를 제거하기 때문이다.
그러면서도 풀링은 찾는 주요 특징을 보존해준다. 구조화 방식과 사용한 풀링이 최대 풀링이기 때문
그리고 풀링한 이미지를 모두 하나의 긴 벡터 나열로 펼쳐서 인공 신경망에 입력한다.
그게 3단계 평탄화와, 4단계 완전 연결된 인공 신경망이라고 한다.
이곳에서 모든 특징이 네트워크를 통해 처리되고 최종 전결합층이 나오게 되는것이다.
이 층에서 변경하려는 분류에 대한 투표를 실시하게 되는데, 모든 건 순전파와 역전파를 통해 훈련되고 처리 과정과 수많은 반복, 에포크를 통해 마지막에는 아주 잘 정의된 신경망을 갖게 된다.
그리고 또 중요한 점은 인공 신경망에서 가중치만 훈련받는 게 아니라 특징 감지기도 훈련받고 똑같은 경사 하강법을 통해 조정되어서 최상의 특징 맵을 만들어낼 수 있다.
그렇게 완벽하게 훈련받아서 이미지를 인식하고 분류할 수 있는 컨볼루션 신경망이 완성되고 작동한다.
'데이터 분석일기 > deep learning' 카테고리의 다른 글
Computer Vision (1) | 2024.10.18 |
---|---|
TensorFlow vs PyTorch (22) | 2024.01.15 |
ANN (1) | 2023.11.03 |
CNN (Convolutional Neural Network) (0) | 2023.10.26 |
Deep Learning 개요 (0) | 2023.10.24 |