[ComputerSystem] Convolutional Neural Network
Convolutional Neural Network
✅ 컨볼루션 신경망
1️⃣ DMLP와 CNN의 비교
- 완전연결구조란 ? dense
- cnn은 2차원이니까 가중치도 2배로 많아짐
- 완전연결 : 학습이 매우 느리고 오버피팅 우려.
- 희소연결, 부분연결 : 복잡도 낮추고, 좋은 특징 추출
2️⃣ CNN
- 가변 크기의 입력 : 어느 크기의 이미지가 와도 상관 없음
✅ 컨볼루션층
1️⃣ 컨볼루션 연산
- 커널 = filter
- 커널 하나가 은닉노드 하나랑 똑같은 개념?
- 커널 안 값들을 뭐로 설정해놔야 제일 좋은 특징들을 찾아낼까 고민하는 것
- 한 레이어에 커널을 여러 개 사용
- 커널 마다 추출하는 엣지가 다름
- 커널 값을 어떻게 설정하는지에 따라 특징들이 달라짐 -> ex) 블러효과
- 곱해서 더하는 건 affine 연산이라고 함. 딥러닝이 하는 건 다 어핀 연산
- 커널의 값이 가중치와 같은 개념
2️⃣ 가중치 공유(묶인 가중치)
3️⃣ 다중 특징 맵 추출
- 입력 -> 커널 -> 특징 맵
- 목적함수 : 정답이랑 예측값의 차이니까 작아지는 방향으로 수정해야 함
4️⃣ 특징 학습
- 목적함수 미분 -> 미분값이 작아지는 방향으로 값을 수정 -> 그래디언트
5️⃣ 큰 보폭에 의한 다운 샘플링
- 스트라이드..
- 스트라이드를 지정 안 하면 한 칸씩 촘촘촘촘 감
6️⃣ 텐서에 적용
- 컬러는 입력이 3차원
- 3차원 짜리가 여러개 -> 4차원이 됨.
- 3차원이상의 데이터를 텐서라고 함
- 케라스는 이걸 다 싸가지고 2D하면 2차원, 3D하면 3차원 이렇게 됐던 거임
- 전이학습은 파이토치
7️⃣ 3차원 구조의 데이터에 적용
- 입력 : 3차원
- 특징맵 : 2차원
- 컬러면 그에 맞게 변함
8️⃣ 풀링 연산
- 이 값들의 통계 요약
- summary
- 특징1.흑백 대비
- 언제 넣는지 정해진 건 없음
- 특징2.스트라이드3 맥스풀링 : 작은 노이즈한 값에 대해서 둔감해짐
✅ 전체 구조
1️⃣ 빌딩 블록
- 히든 레이어 한층 : 커널.활성함수.풀링
- 히든 레이어 한층 : 컨볼루션층 -> 활성함수(주로 ReLU) -> 풀링층
2️⃣ 초창기 CNN 사례로서 LeNet-5
✅ AlexNet
1️⃣ 구조
2️⃣ 학습에 성공한 요인
- 외부요인 : ImageNet -> 대용량 DB, GPU를 사용한 병렬처리
- 내부요인 : ReLU, 지역반응 정규화 기법, 오버피팅 방지하는 여러 규제 기법
✅ 딥러닝은 왜 강력한가?
1️⃣ 전체 과정을 동시에 최적화
- 데이터로부터 스스로 학습
- 데이터가 적은 경우 오히려 svm이 나음
2️⃣ 깊이의 중요성
- 히든레이어를 또 쌓는다는 의미는 다른 특징을 더 찾아보겠다는 의미
- 필터를 추가하는 건 같은 레벨에서 더 세밀하게 찾아보겠다는 의미