참고: https://youtu.be/63Y4tP_soXc?si=MngM7gRrS5H7IY2F
CNN 이론을 이해하기 위해서는 Convolution이 어떤 것인지 먼저 알아야하는데...
비전공자들은 사실 쉽지않은 개념이다. 본인도 전공과목인 신호와 시스템에서 배웠을 때도 함수의 곱을 이해하는 것조차 쉽지않기 때문에 시간이 필요했던 것으로 기억한다.
참고: https://youtu.be/_L-GifnxJZQ?si=LCmOgPvYhMytneZS&t=1452
여기서 설명하는 convolution은 연속시간계에서 이루어지는 것이고, digital system에서는 또 다르다.
위의 장표에서 보듯이 두개의 함수 f(t)와 g(t)가 있다고 하고, 각각 아래와 같이 생겼다고 가정하자.
사진에서의 x(t)를 우리는 f(t)라 하고, h(t)를 g(t)라고 하면 된다. (여기서 변수는 x가 아니고 t이다)
식에서 보듯이 하나의 함수, g(t)를 g(x-t)로 바꿔야 하는데,
t -> -t 의미는 y축으로 반전,
-t -> x-t 의미는 x값 만큼 수평이동을 의미한다. 그래서 f(t)와 g(x-t)를 각각 아래와 같이 그릴 수 있다.
그러면 f(t) x(곱하기) g(x-t) 란 것은 t 값이 변하면서 두 함수의 값을 곱한 것을 의미하는데,
t가 변하면서 그래프가 아래처럼 바뀌는 것을 예상하면 대략적인 감을 잡을 수 있다.1) t <= 0 인 경우,
2) 0 < t <= 1 인경우
3) 1 < t <= 2 인 경우
4) 2 < t <= 3 인 경우
5) 3 < t 인 경우
각각의 경우에 따라 f(t), g(t)를 구해주고 적분을 해주면 된다.
여기에서 답은 아래와 같이 계산된다.
물론 t > 3 일때는 0이다.
한번에 이해하지 못해도 전현 상관없다. 이런 단어가 있다 정도만 알아도 된다.
이번에 알지 못해도 앞으로의 글들에서 깨달을 수 있기에 걱정하지 말라고 하고 싶다.
이제, 이런 컨볼루션 개념을 가지고 행렬 연산에 어떻게 적용하는지 살펴보자.
슬라이드에서 f(x)는 4x4 행렬이고, g(x)는 3x3 행렬이므로 직접 연산이 불가능하다.
그렇지만, f(x)의 행렬을 부분적으로 떼어낸다면 가능해진다. convolution을 여기에 이용하는 것이다.
f(x)에서 3x3 행렬을 떼어내면 위의 음영부분처럼 4개로 만들수 있고 이를 g(x)와 곱하고 합을 구하면 1개의 요소가 만들어지며, 4개의 음영부분이 있으므로 요소는 총 4개가 만들어져 2x2 행렬로 표현할 수 있다.
Convolutional Neural Network에서 맨 앞 한글자 C에 대해서 알아본 시간이었다.
다음 글에서는 CNN에 대해서 알아보자.
'AI > TensorFlow 학습' 카테고리의 다른 글
11. TensorFlow 2.x - CNN CIFAR 10 예제 (0) | 2024.08.05 |
---|---|
10. TensorFlow 2.x - CNN 소개 (0) | 2024.08.05 |
8. TensorFlow 2.x - Neural Network Fashion MNIST 예제 (0) | 2024.08.01 |
7. TensorFlow 2.x - Neural Network MNIST 예제 (0) | 2024.07.31 |
6. TensorFlow 2.x - Deep Learning 소개 (0) | 2024.07.31 |