이 블로그는 개인의 공부 목적으로 작성된 블로그입니다. 왜곡된 정보가 포함되어 있을 수 있습니다.
공간정보
지난 포스팅에서 우리는 ANN을 통해 XOR과 같은 다양한 문제를 해결할 수 있다는 것을 알게 되었다.
이미지 분류 문제를 생각해보자.
이미지는 3차원정보(채널,가로,세로)를 가지고 있으므로 이것도 ANN와 같이 신경망을 통해 지도학습을 한다면 어느정도 해결 할 수 있어 보인다. 그런데 우리가 이미지를 인식할때를 생각해보자 $(0,0)~(0,n)$ 또는 $(3,0)~(3,n)$으로 이미지를 읽는가? 그렇지 않다 우리는 공간적인 정보를 사용해서 이미지를 인식한다. 그러면 ANN을 통해 학습하면 ANN도 결국에는 공간정보를 통해 인식하는 것과 같은 효과가 되지 않을까?
많은 에폭을 거치면 어느정도 가능하다. 그러나 공간정보를 활용한 CNN을 사용하면 기존 ANN보다 효과적으로 학습 할 수 있다.
CNN
기존의 ANN은 위치 정보를 기억하지 못한다는 문제가 있다. Convolutional Network는 이를 해결한 신경망의 형태이다.
기존의 ANN은 각각의 노드에서 연결된 노드로 이동하면 가중치와 연산을 한뒤 합쳐진뒤, 활성화함수를 통해 처리되는 것과 달리 CNN은 다음 과정을 통해 진행된다.
- Convoluntion (합성곱)
- activate function
- pooling (생략 가능)
- 1~3을 반복하면서 크기를 줄임(결국에는 1차원으로 수렴)
- ANN과 같은 fully connected Neural Network 으로 처리
각각의 단계를 살펴 보자
합성곱 계층
합성곱 연산 $\circledast $을 진행한다.
필터: 커널이라고 부르기도 하며, 가로 세로 방향의 2차원의 형태이다.
패딩: 합성곱 연산을 진행하기 전에 주변(border)을 0으로 채우는 것(0으로 하는것이 관례)
스트라이드: 필터를 적용하는 윈도우의 size
아래 사진은 input $5*5$ 에 대해서 filter는 $3*3$ 크기를 가지고 stride값은 $1$ padding 은 $0$을 가지는 경우의 결과이다.
편향값 또한 넣을 수 있는데 scalr 값으로 넣는다.(모든 칸에 동일하게 처리됨)
3차원으로 확장
3차원의 데이터의 경우를 생각해보자. 이미지는 3차원의 형태로 되어 있기 때문에 3차원으로서의 Convolution 연산이 곧 이미지 하나에 대한 연산이라고 생각해도 무방하다.
위 그림을 예시로 들어보자 만약 input image가 $3*5*5$ 라고 생각해보자 그렇다면 우리는 각각의 채널에 사용할 별개의 3개의 필터(필터 더미라고 하겠다)가 필요하다. convolution 연산의 결과로는 $3*2*2$을 생성한다. 이때우리는 $2*2$ 형태로 변환할 수 있다(합연산) 3차원 데이터가 convolution 결과로 2차원 데이터를 생성한것이다. 그렇다면 2차원 데이터가 어떤의미를 가질까? ANN에서 각각의 노드들이 역활이 있는 것처럼 이러한 2차원 데이터의 경우도 이미지를 처리하는데 있어서 역활을 가지게 된다. 따라서 우리는 다양한 2차원 데이터를 생성하여 각각의 2차원 데이터에게 역활을 주어 효율성을 올릴 수 있다.
이렇게 하려면 $n$개의 필터더미가 필요하고 각각 convolution 연산을 진행하여 2차원 데이터 여러장, 즉 3차원 데이터를 가질 수 있게 된다.
아래 사진과 같이 진행된다.
4차원으로 확장
이미 예상했겠지만 ANN은 행렬단위로 여러개의 연산을 동시에 진행한다. 위의 예시도 결국 하나의 이미지에 대한 연산이므로 실제로는 4차원의 형태로 input 들어오게 된다. 위 화면과 거이 동일하게 진행된다. 단지 input가 output이 batch size 만큼 생긴다.
활성화 함수
convolution 결과로 나온 값에 대해서 활성화함수를 진행한다. (각각의 노드 값들이 활성화 함수 통과)
sigmoid함수는 gradient vanishing 문제가 있어서.... hidden layer의 경우 relu함수를 사용한다.
Pooling
image의 크기를 줄이는 연산으로 필요시에 사용할 수 있다. 아래와 같은 max pooling(최대 풀링)을 사용하는 것이 일반적이고, averge pooling(평균 풀링)도 사용한다고 한다.
이러한 풀링 연산은 입력의 변화하여도 영향을 적게 받는다는 점에서 어느정 noise을 흡수 할 수 있다(하지만 noise를 채택하는 경우도 존재)
이러한 convolution 연산과 pooling 연산이 반복되면 반복될수록 이미지의 크기가 감소하여 나중에 결국 1차원 데이터가 되고 이후에는 우리가 알던 ANN의 형태로 진행된다.
학습과정
오차역전파법을 사용하여 뒷부분의 신경망의 가중치를 업데이트하고 우리가 사용했던 filter의 가중치값을 업데이트하는 방식으로 학습이 진행된다.
'AI > 기계학습' 카테고리의 다른 글
[기계학습] Artificial Neural Network 2 (0) | 2023.12.03 |
---|---|
[기계학습] Artificial Neural Network 1 (1) | 2023.11.27 |