ResNeXt
- inception이 계속 발달했으므로 이를 적용해 ResNeXtResNet을 발전시켜서 만듦
- multi-branch ResNet
- residual block은 Inception module과 다르게 각 path마다 모두 동일한 구조를 지니며 dimension 모두 같음
- split-transform-merge구조
- VGG/ResNets의 반복되는 layers 구조를 가짐
- Inception module은 hyper parameter가 많기 때문에 디자인하기 어렵다면 ResNeXt는 단순히 몇 개의 path를 사용하는지만 설정하기 때문에 상당히 간편
- cardinality (the size of the set of transformations)
- 똑같은 형태의 빌딩 블록(building block)의 개수
- cardinality는 네트워크의 층이 깊어(deeper)지거나 넓어(wider)지는 것보다 정확도를 얻는 것에 더 효과적
- Group convolution
- channel은 원래 전부 다 보는데 잘라서 보겠다
- filter size도 줄어듬 (절반)
- Alexnet에서 이미 했던 방법
- concatenation & addition are interchangeable
- Compression convolutional networks
- ResNeXt에서의 방법은 일련의 변환으로 addition을 이용하지만 각각이 독립적으로 훈련되는 것이 아니기때문에 앙상블로 보는 것은 적합하지 않음
SENet(Squeeze-and-Excitation Net)
- Standard convolution의 문제점: feature map의 중요도 표현에 제약
- 해결: 이 부분을 따로 학습하는 브랜치를 만듦
- squeeze: global average pooling → 채널을 한 숫자로 요약
- excitation: FC layer (ReLU-Sigmoid)
- 3 by 3 filter를 최대한1 by 1 filter로 바꿔보는 것이 기본 원리
- Fire module, squeezenet의 핵심을 잘 설명하는 모듈
- 어떤 network에도 다 넣을 수 있음
- 파라미터의 증가량에 비해 모델 성능 향상도가 매우 큼
xception (mobile하고 쌍둥이)
- Inception 가설
- channel 간의 관계를 찾는 것과 이미지의 지역 정보를 찾는 것을 완전히 분리하고자 함
- Inception에서의 연산량 줄일 수 있는 방안 탐색
- 극단적 분리 시도 -> depthwise convolution
- channel 하나당 필터 한개만
- depthwise separate convolution = depthwise convolution + 1x1 conv
- 채널을 반으로 줄이면 연산량은 ¼
- resolution 바껴도 parameter 수는 바뀌지 않음 (연산량은 바뀜)
Mobilenets
- 기존의 컨볼루션을 깊이별(depthwise)의 컨볼루션과 1x1의 위치별(pointwise) 컨볼루션으로 분리된 컨볼루션 방법 사용
- 깊이별 컨볼루션은 각 입력 채널마다 하나의 필터를 사용
- 위치별 컨볼루션은 깊이별 컨볼루션의 결과를 통합하는 1x1 conv 사용
- 두 컨볼루션에 모두 batchnorm과 ReLU비선형변환을 적용함,
- 기존의 컨볼루션은 입력을 필터링을 담당하고 통합하는 과정이 한번에 이루어지지만, 여기에서는 이를 필터링을 담당하는 층과 통합을 담당하는 층을 분리하여 망을 구성 → 모델의 크기와 계산을 줄일 수 있음!
shuffle Net V2
- 규칙을 가지고 셔플 (모든 그룹이 적절히 섞이도록)
Guidelines
1. Equal channel width minimizes memory access cost(MAC)
- 연산량과 파라미터 수를 줄이면 속도 빨라짐
- 모바일 사용시 배터리 사용에 용이 (파워소모)
- 연산량 1/10이라고 속도가 10배 아니고 메모리에 데이터를읽고 쓰는 양에 따라 다르므로 (mac) 하드웨어를 고려해서 만든 현실적인 방법
2. Excessive group convolution increase MAC
3. Network fragmentation reduces degree of parallelism
4. Element-wise operations are non-negligible
- inverted bottleneck 구조 사용
- Channel split
- unit의 시작점에서 채널을 2개의 branch로 분할
- 스플릿 이후 하나의 branch에서만 BN, ReLU 사용
- Concat / Shuffle / Split은 하나의 single operation
NASNet
- 강화학습을 기반으로 최적의 architecture을 찾는 연구
- RNN Controller와 이것을 학습시키는 강화학습 모델로 구성
- RNN Controller에게 리워드를 주면서 강화학습하면 스스로 트레이닝 되지만 800개의 gpu로 28일 동안 트레이닝해야하는 시간적 단점이 있음(search space가 너무 크므로)
- Search spade : 탐색공간, Network 구조를 구성하는 요소를 어떻게 정의하여 탐색하는지를 의미
- 시간을 단축 시키기 위한 제약 -> repeated modules작은 dataset에 적합한 모델 먼저 제안 후 그 모델을 학습하여 전이(Transferability)
- Convolution Cell이라는 단위를 사용하여 전체 network 대신 cell이 탐색 후, 이를 조합하여 네트워크 설계
- normal cell : 입력과 출력의 feature map과 가로, 세로 크기가 같은 Cell
- reduction cell : 가로, 세로 크기가 입력 feature map의 절반이 되는 Cell
- 둘의 차이는 stride
- RNN controller : one layer LSTM 구조 사용
- 각 layer마다 100개의 hidden unit을 가짐
- RNN controller 학습 강화학습 알고리즘 : REINFORCE rule
Controller Step
- 이전 block의 hidden state로 부터 hidden state 고른다.
- step1과 같은 보기에서 두번째 hidden state 고른다.
- step1에서 선택된 hidden state에 적용될 operation 고른다.
- step2에서 선택된 hidden state에 적용될 operation 고른다.
- 새로운 hidden state을 만들기 위해 step3, 4,를 합칠 방법을 고른다.(element-wise addition / concatenation between two hidden state)
NASnet
- combined operation이 전부 add operatio
- Convolution Cell은 depthwise-separable convolution(sep) 연산만 선택
- pooling 연산의 경우 대부분 3x3 pooling이 선택
Randomly Wired Neural Networks
네트워크의 정규한 패턴의 연결이 있는 Network Architectire를 랜덤하게 연결한 결과가 기존의 네트워크보다 성능이 좋거나 비슷함을 보임
automl zero
- 유전 프로그래밍과 비슷한 진화적 알고리즘 사
- 신경망 설계를 바닥부터 시작
- AutoML-Zero는 기초적인 수학 연산자만 가지고 진화를 시켰기 때문에 보다 확장 가능성 높음
- 시사점 : 앞으로는 다양한 방법으로 Network generator 를 디자인하는데 집중해보자
'DEEP LEARNING > Fundamental Concept' 카테고리의 다른 글
Semantic Segmentation (0) | 2020.03.30 |
---|---|
Object Detection (0) | 2020.03.25 |
Convolutional Neural Network (0) | 2020.03.03 |
Training Neural Networks (0) | 2020.02.24 |
Linear Regression & Logistic Regression (0) | 2020.02.12 |