CNN (Convolutional Neural Networks)
= ConvNet, DCN(Deep Convolution Network)
큰 이미지를 다루기 위해서는 더 큰 input을 다뤄야 하고 더 큰 모델이 필요하다.
CNN을 이용하면 더 큰 input을 다룰 수 있다.
주로 후반부에는 DNN과 결합하여 사용한다.
CNN vs. DNN
- operation
- DNN : linear operation + non-linear operation
- CNN : convolution + non-linear operation
- task
- DNN : loss를 제일 낮추는 weight + bias를 학습
- CNN : loss를 제일 낮추는 filter 학습
- input size
- DNN : 일반적인 linear transformation은 input size가 정해지면 그를 벗어나는 것을 input으로 들일 수 없다.
- CNN : Convolution은 input size가 달라져도 동일한 filter를 이용할 수 있다.
Computer Vision Problem : Find Edges
CNN을 이용하면 vertical edge나 horizontal edge 등을 찾는 문제를 해결할 수 있다.
여러가지 Techniques
- padding
- padding을 하지 않으면 edge에 대해 convolution 연산을 적용할 수 없기 때문에 output의 크기가 작아진다.
- valid : no padding
- same : output size = input size가 되도록 패딩
- stride
- 모든 pixel에 대해 연산을 수행하는 것이 아니라 듬성듬성 수행한다.
- default는 모든 pixel에 대해 수행하는 것으로 strid = 1로 볼 수 있다.
- 주로 size를 줄이고 싶을 때 사용한다.
- stride를 하면 output size가 줄어든다.
Convolution + Non-Linear
CNN은 linear transformation 대신 convolution 연산을 수행한다.
bias와 non-linear 연산은 각 element에 대해 broadcasting으로 적용한다.(element-wise operation)
Non-linear 연산까지 지는 결과를 activation maps라 한다.
'Computer Science > AL, ML' 카테고리의 다른 글
[CNN] CNN의 구조와 Notation (0) | 2022.06.06 |
---|---|
[CNN] Local Connectivity & Weight Sharing (0) | 2022.06.06 |
[Convolution] 2D Convolution, 1D Convolution (0) | 2022.06.06 |
[Convolution] Padding (0) | 2022.04.21 |
[Convolution] 여러가지 Convolution (0) | 2022.04.21 |
댓글