본문 바로가기
머신러닝-딥러닝/study

(ch.1) Image Classification - GoogLENet

by 복복씨 2020. 12. 30.

" 망이 넓고, 깊을 수록 성능이 좋다." 

 

구글넷은 이 점을 지적했음

 

깊고 넓은 네트워크 정말 좋기만 해 ?

 

 

1. 학습 시키는데 오래걸린다. -> 연산량이 많고, 파라메터가 많다.

 

-파라메터 수를 어떻게 하면 줄일 수 있을까?

A : 1x1 conv, Tensor factorization

1x1 conv : 여러개의 입력 feature가 있을 때, 채널 방향으로 연산을 하여서 filter의 개수만큼 output이 생성되어서 width와 height는 변하지 않음에도 채널의 크기를 filter의 개수만큼 자유롭게 변화시킬 수 있다. 이를 통해 채널 수를 줄일 수 있다면 당연히 파라미터 수도 줄겠죠.

Tensor factorization : 행렬을 분해해 다른 행렬로 factorization 하는 경우

파라미터 개수 6 -> 9

 

-연산을 효율적으로 하려면 어떻게 해야할까?

A : matrix 연산이 dense 해야한다.

주로 CNN에서는 kernel을 stride만큼 옮겨가면서 닷프로덕트(?)를 하는 metrics연산이 제일 많은 비중을 차지한다.

이런 metrics 연산이 너무 sparse하게 된다면 연산의 효율성이 떨어져서 고성능 GPU로 빨리하기 위해서는 메트릭스 연산이 dense해야한다.

 

 

2. 학습이 어렵다 -> gradient vanishing, over fitting

 

- 깊은 layer까지 정보가 전달되려면 어떻게 해야할까?

A : auxiliary layer

auxiliary layer를 만들어서 얘가 오차나 label값을 알려줌

 

- Overfitting이 덜되는 general한 구조는 어떻게 만들어야 할까?

A : sparse한 convolution

메트릭스는 dense해야지 연산이 효율적인데,

오버피팅이 덜 되게 하려면 네트워크 자체는 sparse해야함.

 

 

 

3. Inception Module

 

Sparse convolution & dense metrics

subsampling - invarient한 특성을 얻음, convoultion - input feature의 detail한 특성을 뽑아내는데 유리

concatenation 미국식 [kənˌkætəˈneɪʃn] 영국식  (사물·사건의) 연속

-여기서 나온 모든 피쳐를 이어서 붙이는것, 하나의 metrics로 만듬

 

마지막에 concatenation을 통해 dense하게 함.. 1x1 Convolutions은 NIN 모델의 효과 (Non-linear)한 특성을 살릴 수 있음. 1x1은 dimesion을 reduction할 수 있음. 어떻게? 아까 스크롤 위로 올려봐.. 이러면 연산량을 줄일 수 있고, pooling에서는 채널은 줄어들지 않음

 

 

 

4. GoogLENet 구조

Alexnet 에 비해 parameter가 1/12로 줄음!!, 더 적은 연산량 + 더 높은 정밀도