- 실전 머신러닝 적용
1. 딥러닝 신경망 구조 (네트워크)
- 합성곱 신경망(CNN)
- 순환 신경망(RNN)
- 생성적 적대 신경망(GAN)

- 합성곱 신경망 | CNN
[CNN을 구성하는 방법]
이미지 처리에 특화된 머신러닝
- 합성곱 계층(Convolution layer)

👉 위 예제를 기준으로
- 🟦 입력 : 5*5
- 그림자(Filter 또는 Kernel) : 3*3
- 간격(Stride) : 1
- ⬜️ 출력 | 특성맵(Feature map): 3*3
→ 그런데 이렇게 연산을 하게 되면 합성곱 연산의 특성상 출력값인 특성 맵의 크기가 줄어들기 때문에 padding(여백)을 주게된다.

- 🟦 입력 : 5*5 + padding(2)
- 그림자(Filter 또는 Kernel) : 3*3
- 간격(Stride) : 1
- ⬜️ 출력 | 특성맵(Feature map): 5*5
→ 추가로 여러개의 필터를 이용하여 합성곱 신경망의 성능을 높일 수 있다. 그리고 이미지는 3차원(가로, 세로, 채널)이므로 아래와 같은 모양이 된다

- 입력 이미지 크기: 10*10*3
- 필터의 크기 : 4*4*3
- 필터의 개수(w1, w2) : 2
- 출력 특성 맵의 크기: 10*10*2(필터의 갯수)
[CNN 구성하기]
합성곱 신경망은 합성곱 계층(Convolution layer)과 완전연결 계층(Dense layer)을 함께 사용한다.

+ 풀링 계층(Pooling layer)은 특성 맵의 중요부분을 추출하여 저장하는 역할이다.
- Pooling
- Max Pooling : Pool size가 주어질때 Pool size에서 가장 큰 값을 추출
- Average Pooling : : Pool size가 주어질때 Pool size에서 평균값을 추출

CNN 구성 과정 이미지를 다시 보자면, 풀링을 통과한 특성 맵은 2차원이고(필터의 갯수가 2개 이상↑) / 완전연결 계층은 1차원이므로 연산이 불가능 하다.
이것을 가능하게 하기위해 평탄화 계층(Flatten layer)를 사용해서 2차원을 1차원으로 펼치는 작업을 하게 된다.

이렇게 되면서 연산이 가능해 지면서 점점 노드의 수를 줄여 나아가고 마지막에 앞서 배운 Softmax 활성화 함수를 통과하고 출력층으로 결과를 출력하게 된다.
[CNN 활용의 예]
- 물체 인식(Object Detection)
- YOLO (You Only Look Once) | Computer Vision 알고리즘
- 이미지 분할(Segmentation)
- 윤곽선 인식
- 자율주행 물체인식
- 자세 인식(Pose Detection)
- 화질개선(Super Resolution)
- Style Transfer
- 사진 색 복원(Colorization)
[CNN 종류]
- AlexNet (2012) : Dropout과 Image augmentation 기법을 효과적으로 적용
- VGGNet (2014) : 엄청 Deep한 모델
- GoogLeNet(=Inception V3) (2015) : 하나의 계층에서도 다양한 종류의 필터, 풀링을 도입 → 계층를 두텁게 확장

- ResNet (2015) : 계층은 점점 더 깊어져 역전파 기울기가 줄면서 학습이 잘되지 않는 현상을 일종의 지름길(Shortcut=Skip connection)을 만들어 개선
2. 전이 학습 | Transfer Learning
과거에 문제를 해결하면서 축적된 경험을 토대로 그것과 유사한 문제를 해결하도록 신경망을 학습시키는 방법을 전이 학습이라고 한다.
+ '학습' 의 개념에 제일 가까움
- 학습 속도 ↑ : 빠른 수렴
- 정확도 ↑
- 상대적으로 적은 데이터 셋
3. 순환 신경망 | RNN
길이에 관계없이 입력과 출력을 받아들일 수 있는 구조 + 필요에 따라 다양하고 유연하게 구조를 만들 수 있다는 점이 장점이다.

👉 One-hot encoding 된 X값 → RNN → Y
4. 생성적 적대 신경망 | GAN
서로 적대(Adversarial)하는 관계의 2가지 모델(생성 모델과 판별 모델)을 동시에 사용하는 기술이다.
- 생성 모델 : 거짓값을 가진 모델들을 생성
- 판별 모델 : 참과 거짓값을 구분할 수 있는 모델
👉 이렇게 두 모델이 대립하면서(Adversarial) 발전해 에폭(Epoch)이 지날 때마다 랜덤 이미지(참/거짓)가 점점 학습돼 우리가 원하는 모델을 제공해 준다.
예) 위조지폐 VS 진짜화폐 : 위조화폐와 진짜 화폐를 학습해 나아가면서 위조화폐를 걸러내는 정확도를 높여간다.
[GAN 종류]
- CycleGAN
- StarGAN
- CartoonGAN
- DeepFake
- BeautyGAN
- Toonify Yourself
'woncoding > TIL' 카테고리의 다른 글
| TIL | 10.19.수 [머신러닝 / Django] (0) | 2022.10.20 |
|---|---|
| TIL | 10.18.화 [Django] (0) | 2022.10.19 |
| TIL | 10.14.금 [Django🐢] (0) | 2022.10.14 |
| TIL | 10.13.목 [머신러닝 / Django🐢] (0) | 2022.10.14 |
| TIL | 10.12.수 [머신러닝 / Django🐢] (0) | 2022.10.12 |