Lecture 5 Convolutional Neural Networks
CNN
CNN의 역사
- "perceptron"을 구현한 최초의 기계
- Perceptron"은 우리가 배운 Wx + b와 유사한 함수 사용 → 하지만 출력 값이 1 또는 0임
- 가중치 w를 update하는 rule 존재 → Backprop 과 유사 (그 당시에는 backprob이라는 개념이 없어서 가중치를 이리저리 조절하면서 맞춤)
- Frank Rosenblatt의 Mark I Perceptron machine (1957)
- 최초의 Multilayer Perceptron Network → 이 시점에 neural network와 비슷한 모양 하기 시작 BUT Backprob 같은 학습 알고리즘 안 존재Widrow와 Hoff가의 Adaline and Madaline (1960)
- Rumelhart가 최초의 Backporp 제안(1986)
- 우리에게 익숙한 Chain rule과 Update rule을 볼 수 있음
- 최초로 network를 학습시키는 것에 관한 개념 정립
- BUT 그 이후 NN 더 크게 못만듦
- Geoff Hinton 과 Ruslan Salakhutdinov의 DNN 학습가능성(2006)
- 효과적 BUT backprop위한 아주 세심한 초기화 필요해짐 → 초기화를 위해선 전처리 과정 +RBM을 이용해서 각 히든레이어 가중치를 학습 필요
- NN 열풍 (2012)
- NN이 음성 인식에서 아주 좋은 성능 보임
- Hinton lab의 Alex Krizhevsky에서 영상 인식에 관한 landmark paper(2012)
- ImageNet Classification에서 최초로 NN을 사용 → 결과 놀라움
- Alexnet - ImageNet benchmark의 Error 극적으로 감소시킴
- 1980의 neocognitron
- simple/complex cells의 아이디어를 사용한 최초의 NN
- Fukishima는 simple/complex cells을 교차시킴
- Simple cells은 학습가능한 parameters 가지고 있음
- Complex cells은 pooling과 같은 것으로 구현했는데 작은 변화에 Simple cells보다 좀 더 강인
- Yann LeCun이 최초로 NN을 학습시키기 위해 Backprob과 gradient-based learning을 적용(1998)
그렇다면 오늘날의 ConvNets은 어떻게 사용되나?
- AlexNet의 ImageNet 데이터 분류 결과 ex> 꽃 검색 시에 학습된 특징이 유사한 것을 매칭시키는데 아주 강력함
- Detection - 영상 내에 객체가 어디에 있는지 잘 찾아냄
- ex>버스나 보트 찾아내고 네모박스를 정확히 그림
- segmentation - 단지 네모박스 치는 것이 아닌 나무나 사람 등을 구별하는데 픽셀 하나 하나에 레이블링 하는 것
- 자율 주행 자동차에도 이용
- 비디오에도 활용 - 단일 이미지의 정보뿐 아니라 시간적 정보도 같이 활용
- pose recognition - 어깨나 팔꿈치 같은 다양한 관절 인식 가능
- 게임도 가능
Fully Connected Layer
- FC Layer에서 하는 일은 어떤 벡터를 가지고 연산을 하는 것
- 아래 그림을 설명하자면 입력으로 32 x 32 x 3 의 이미지 존재 → 이 이미지를 길게 펴서 3072차원의 벡터로 만들고 가중치 W를 벡터와 곱함 (=Wx)
- 그리고 activation 얻음
- Convolution Layer와의 차이는 Convolution Layer는 기존의 구조를 보존시킨다는 것
Convolution Layer
- 어떻게 수행하나?
- 필터는 입력의 깊이만큼 확장됨 → 하나의 필터는 아주 작은 부분만 취할 수 있음(3232중에 55만 취함) 하지만 깊이는 전체 깊이 취함
- 필터를 이미지의 어떤 공간에 겹쳐 놓고 내적 수행
- 그리고 필터의 각 w와 이에 해당하는 이미지 픽셀을 곱해줌
- 필터가 553이라는 것은 그만큼 곱연산을 한다는 것
- Convolution은 이미지의 좌상단부터 시작하고 필터의 중앙에 값을 모음
- 그리고 필터의 모든 요소를 가지고 내적을 수행하게 되면 하나의 값 얻음
- 그리고 슬라이딩함
- 어떻게 슬라이딩할지 선택 가능한데 슬라이딩 여부와 상관없이 입력 값 두개 뽑아서 연산 수행도 가능
ConvNet
- 활성화 함수(RELU)가 산재된 컨볼루션 레이어 시퀀스
"Spatial dimension”
- 내적 수행 → 슬라이드 필터를 한칸씩 옮겨가면서 슬라이딩 실행
- 움직이는 칸은 stride라고 함
- 상황에 따라 출력의 사이즈가 어떻게 될 것인지 알 수 있음
- 입력의 차원이 N이고 필터 사이즈가 F이고 스트라이드가 몇이다 라고 주어지면
- → 출력의 크기는 (N - F) / stride + 1
- zero-pad - 출력의 사이즈를 의도대로 만들어 주기 위해서 사용
- 이미지 가장자리에 0을 채워넣어서 좌 상단의 자리에서도 필터연산을 수행할 수 있게함
- CNN에는 Conv Layer와 Pooling Layer 존재
- Pooling Layer는 Representation들을 더 작고 관리하게 쉽게 해줌
- 작아지면 파라미터의 수가 줄게 되어 이득 + 공간적인 불변성 얻을 수 있음
- Max pooling
- 각 공간에서 가장 큰 값을 뽑는 것
- 사용하는 이유 : Max pooling은 그 지역이 어디든, 어떤 신호에 대해 "얼마나" 그 필터가 활성화 되었는지를 알려줌
Lecture 9 CNN Architecture
AlexNet
- 최초의 Large scale CNN
- ImageNet Classification Task을 아주 잘 수행
- 2012년에 등장해서는 기존의 non-딥러닝 모델들을 능가하는 놀라운 성능을 보여줌
- AlexNet의 기본 구조 = conv - pool - normalization 구조가 두 번 반복
VGG
- 훨씬 더 깊어졌고 그리고 더 작은 필터를 사용한다는 것
- AlexNet에서는 8개의 레이어였지만 VGGNet은 16에서 19개의 레이어를 가짐
- 작은 필터를 유지해 주고 주기적으로 Pooling을 수행하면서 전체 네트워크를 구성
- 왜 작은 필터를 사용하는가? 필터의 크기가 작으면 파라미터의 수가 더 적기 때문에 큰 필터에 비해 레이어를 조금 더 많이 쌓을 수 있음 = 작은 필터를 사용하면 Depth를 더 키울 수 있다
- 모델 성능을 위해서 앙상블 기법을 사용
- VGG의 마지막 FC-Layer인 FC7
- 이미지넷 1000 class의 바로 직전에 위치한 레이어
- 4096 사이즈의 레이어인데 아주 좋은 feature represetation을 가지고 있음
- 다른 데이터에서도 특징(feature) 추출이 잘되며 다른 Task에서도 일반화 능력이 뛰어남
Google Net
- 대표 특징: 효율적인 계산에 관한 그들의 특별한 관점이 있다는 것과 높은 계산량을 아주 효율적으로 수행하도록 네트워크를 디자인했다는 점
- Inception module을 사용
- 앞서 봤던 모델들과는 다르게 FC-Layer 없음 → 파라미터를 줄이기 위해서
Inception
- 만들어지게된 배경 - "a good local network typology” 를 디자인 하기 위해
- "network within a network” 라는 개념으로 local topology를 구현했고 이를 쌓아올림
- 내부에는 동일한 입력을 받는 서로 다른 다양한 필터들이 "병렬로" 존재
- 이전 레이어의 입력을 받아서 다양한 Conv 연산을 수행하는 것
ResNet
- ResNet Block을 하나씩 쌓아 올리는 구조
- ResNet의 경우 모델 Depth가 50 이상일 때 Bottleneck Layers를 도입
- 실제 레이어 → 입력 x에 대한 잔차인 변화량만을 학습
- 출력 → input X와 변화량AlexNet
'Group Study (2024-2025) > Machine Learning 심화' 카테고리의 다른 글
[ML 심화] 6주차 스터디 - YOLO (0) | 2024.11.12 |
---|---|
[ML 심화] 5주차 스터디 - Object Detection: 2-stage-detector (0) | 2024.11.05 |
[ML심화 ] 4주차 스터디 (0) | 2024.10.29 |
[ML심화] 2주차 스터디 - Loss Function, Optimization, Back Propagation, Neural Network (9) | 2024.10.08 |
[ML심화]1주차 스터디 (1) | 2024.10.01 |