일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- body-parser
- 선형회귀
- 연결리스트
- downheap
- bodyparser
- ML
- 삽입식 힙
- 분리연쇄법
- pytorch
- MSE
- 선형조사법
- 딥러닝
- 이중해싱
- 경사하강법
- 알고리즘
- Loss함수
- 상향식 힙
- vsCode
- 해시테이블
- upheap
- nodejs
- 힙정렬
- urlencoded
- POST
- 이중연결리스트
- 개방주소법
- 2차조사법
- anaconda
- Today
- Total
LittleDeveloper
Pytorch로 시작하는 딥러닝 입문- 7. CNN 본문
1. CNN의 탄생
1) MLP의 한계:
◾ 앞선 딥러닝 모델 → 하나의 은닉층을 가진 MLP(다층 퍼셉트론)
◾ MLP의 장점이자 단점=> ‘학습데이터’에서 완벽한 모델 생성 ▶ 과적합!!
◾ Gradient Vanishing 문제
2) MLP ? ----> DNN ! (by 사전학습, RELU, GPU)
*DNN : 2개 이상의 Hidden Layer를 가진 다층 신경망(Deep Neural Network)
3) DNN의 한계 ▶ 데이터량이 많은 이미지와 영상 처리가 어려움
Why? 데이터의 변형 및 왜곡에 취약함 + 공간정보 손실(픽셀들 간의 연관성)
✅ 데이터 손실(평탄화)
✅ 매우 높은 시간 복잡도
✅ Parameter 수 ⬆
▶ DNN으로는 이 모든 문자를 A라고 분류하기 어렵지만, CNN은 쉽게 가능하다!
2. CNN이란?
1) CNN (Convolutional Neural Network) - 시각적 이미지를 분석하는데 사용되는 깊은 인공신경망의 한 종류
- CNN은 변환 불변성 특성에 기초, 이미지 및 비디오 인식, 추천 시스템, 이미지 분류, 의료 이미지 분석에 응용됨
- CNN은 다른 이미지 분류 알고리즘에 비해 상대적으로 전처리를 거의 사용하지 않음.
- 3차원 텐서 사용 --> 이미지가 (높이, 너비, 채널)을 가짐.
-> 네트워크가 기존 알고리즘에서 수작업으로 제작된 여러 필터 역할을 스스로 학습한다는 것을 의미함.
3. CNN의 원리
1) kernel: 입력된 이미지에서 특징을 추출하기 위해 도입됨.
커널? -> 공업수학 라플라스 변환에서 계산을 편하게 하기 위해 e^(-st)를 커널로 사용함!
▶ 가중치: 커널 행렬의 원소들
▶ MLP은 훨씬 적은 수의 가중치를 사용, 공간적 구조 정보를 보존한다는 특징
▶ Feature Map은 은닉층의 비선형 함수를 지나게 됨
▶ 편향은 하나의 값만 존재, 커널이 적용된 결과의 모든 원소에 더해짐.
2) Convolution(합성곱)
- 하나의 함수와 또 다른 함수를 반전 이동한 값을 곱한 다음, 구간에 대해 적분하여 새로운 함수를 구하는 수학 연산자 (라플라스 변환 계산을 용이하게 함.)
-> 시간이 지나면서 타우 영역에 있는 하나의 함수가
같은 영역에 있는 또 다른 함수 위를 지나가게 됨!!
->Feature Map 생성(Convolved Feature)
* 컨볼루션은 주로 filter연산을 통해 이미지의 특정을 추출할 수 있다.
-> 어떤 커널을 쓰느냐에 따라 이미지 데이터가 다양하게 나옴 (필터가 적용된 것처럼 나옴)
* Kernel의 이동 범위 ▶ Stride
3) Padding: 특성 맵의 크기가 입력의 크기와 동일하게 유지하기 위한 작업
ex ) 패딩 후(7x7에 3 × 3의 커널을 사용하여 1 스트라이드로 합성곱을 한 후의 특성 맵은 기존의 입력 이미지의 크기와 같은 5 × 5가 됨.
4) Pooling: 크고 복잡한 데이터를 축소하기 위한 작업
* 특성 맵을 다운샘플링하여 특성 맵의 크기를 줄이는 연산
-> 데이터 차원 감소로 인한 계산효율성 향상, 메모리 요구량의 감소
✅ max pooling
✅ average pooling
* Pooling vs 합성곱 연산 : Pooling은 학습할 가중치가 없음, 연산 후에 채널 수 불변
참고자료: https://wikidocs.net/62306
'AI' 카테고리의 다른 글
Pytorch로 시작하는 딥러닝 입문- 6. 인공신경망 (0) | 2022.03.09 |
---|---|
AI 실무교육 2주차 (1) Neural Network 기초 (feat. Pytorch) (0) | 2022.01.16 |
모두의 딥러닝 4장 경사하강법 (0) | 2022.01.09 |
모두의 딥러닝 3장 선형회귀법 (1) | 2022.01.08 |
AI 실무교육 1주차 (2) 가상환경 세팅(feat. Anaconda) (0) | 2022.01.08 |