복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.
▶6.4 컨볼루션 신경망 프로그래밍
6.4.3 패션 인식
6.4.4 자연 영상 인식
딥러닝 프로그래밍에서 주로 사용하는 자연 영상 데이터베이스
- ImageNet
- MSCoCo
- CIFAR : 작아서 MNIST 다음에 주로 사용한다.
CIFAR-10
- airplace, automobile, bird, cat, deer, dog, frog, horse, ship, truck의 10종류
- 영상은 32*32 맵으로 표현한다.
CIFAR을 인식하는 컨볼루션 신경망
- CIFAR-10은 텐서 구조가 이미 (32*32*3)이어서 reshape 적용할 필요 없다.
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
6.4.5 학습된 모델 저장과 재활용
학습된 모델 저장
- 학습에 많은 시간이 걸리므로 저장해 두고 필요할 때 불러 쓸 필요성
- save 함수로 간단히 달성(신경망의 구조 정보와 가중치 저장해 준다. HDF5 파일 형식 사용)
cnn.save("my_cnn.h5")
▶6.5 컨볼루션 신경망의 시각화
두 가지 시각화를 시도한다.
- 컨볼루션층에 있는 커널을 시각화
- 컨볼루션층이나 풀링층이 추출해 주는 특징맵을 시각화
▶6.6 딥러닝의 규제 (Regularization)
딥러닝의 전략
- 충분히 큰 신경망 구조를 사용하되, 다양한 규제 기법을 적용하여 과잉 적합을 방지한다.
- 데이터 증대, 드롭아웃, 가중치 감쇠, 앙상블, 배치 정규화 등의 다양한 규제 기법이 있음
6.6.1 데이터 증대
과잉 적합을 방지하는 가장 확실한 방법은 큰 훈련 집합 사용한다.
- 대부분 상황에서 데이터를 늘리는 일은 많은 비용이 소요된다.
- 딥러닝에서는 주어진 데이터를 인위적으로 늘리는 데이터 증대(data augmentation)를 적용한다.
- 영상을 이동, 회전 또는 좌우 반전
- 명암 조정 등
- 텐서플로는 훌륭한 함수 제공
증대된 영상으로 신경망 학습
- 온라인과 오프라인 두 종류(현대 딥러닝은 온라인을 주로 사용)
- 온라인은 학습을 진행하면서 실시간으로 샘플 생성한다.
- 오프라인은 한꺼번에 생성하여 디스크에 저장한 다음 사용한다.
6.6.2 드롭아웃
드롭아웃 (dropout)
- 일정 비율의 가중치를 임의로 선택하여 불능으로 만들고 학습하는 규제 기법
- 불능이 될 에지는 샘플마다 독립적으로 정하는데 난수를 이용하여 랜덤 하게 선택한다.
6.6.3 가중치 감쇠
과잉 적합에서는 가중치 값이 아주 큰 현상이 나타난다.
가중치 감쇠(weight decay)는 성능을 유지한 채로 가중치 크기를 낮추는 규제 기법
표준 손실 함수(평균제곱오차 MSE)
가중치 감쇠를 적용한 MSE
가중치 감쇠를 위한 텐서플로 프로그래밍
- 세 가지 매개변수
- Kernel_regularizer(가중치에 적용)
- Bias_regularizer(바이어스에 적용)
- Activity_regularizer(활성 함수 결과에 적용)
- 적용 예
- 가중치에 L2, 활성 함수 결과에 L1을 적용하라는 지시 (람다로 0.01을 사용)
from tensorflow.keras import regularizers
model.add(Dense(64, input_dim=64, kernel_regularizer=regularizers.l2(0.01),
activity_regularizer=regularizers.l1(0.01)))
6.6.4 성능 평가 쟁점
성능 평가의 중요성
- 하이퍼 매개변수 최적화나 모델 선택에서 중요하다.
- 현장 설치 여부를 정할 때 중요하다.
객관적인 성능 평가 방법
- 교차 검증
- 데이터를 분할하여 여러 번 반복함으로써 통계적 신뢰성을 높인다.
- 제거 조사 (ablation study)
- 여러 선택 사항이 있을 때, 선택 사항을 하나씩 빼고 성능을 측정해 봄으로써 선택 사항 각각의 기여도를 평가한다.
▶6.7 전이 학습
전이 학습의 원리
- 인간의 전이 학습
- C 언어에 능숙한 학생은 파이썬을 금방 배운다.
- 채소를 잘 가꾸는 사람은 꽃도 잘 가꾼다.
← 겉모습은 달라도 원천적인 개념과 사용법을 공유하기 때문이다.
- 딥러닝에도 같은 원리가 적용된다.
- 자연 영상으로 학습한 신경망을 새나 개의 종을 분류하거나 자율주행에서 차선과 보행자 인식에 사용된다.
전이 학습
- 어떤 도메인의 데이터로 학습한 모델을 다른 도메인의 데이터를 인식하는데 활용하여 성 능 향상을 꾀하는 기법
- 데이터가 부족하여 스크래치 학습으로 높은 성능을 달성하기 어려운 상황에 주로 사용한다.
- ex) cub200-2011은 200종의 새 영상을 가지는데 부류 별로 60장가량에 불과하여 과잉 적합 우려
→ ImageNet으로 예비 학습(pre_trained)된 모델을 cub200-2011로 전이하는 전이 학습
많이 쓰는 예비 학습 모델
VGG, Inception, ResNet
- VGG: 3*3의 작은 마스크 사용
- Inception(GoogLeNet): 네크워 크 속의 네트워크(NIN) 구현
- ResNet: 잔류 학습
6.7.2 전이 학습 프로그래밍 : 새의 품종 분류
미세 조정 방식과 동결 방식
- 미세 조정(fine-tuning) 방식
- 컨볼루션층과 완전연결층의 가중치를 동시에 수정
- 학습률을 낮게 유지하여 조금씩 수정
- 동결 방식
- 컨볼루션층의 가중치를 동결하여 수정이 일어나지 않게 제한
- 49행 뒤에 다음 행을 추가하면 됨
base_model.trainable=False
- CUB 데이터셋에 대해 실험한 결과 미세 조정 방식이 우수함
'컴퓨터공학 > 인공지능' 카테고리의 다른 글
[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전4 (1) | 2023.05.07 |
---|---|
[인공지능] 1, 2장. 인공지능 (1, 2장 볼만한 내용) (0) | 2023.04.16 |
[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전2 (0) | 2023.04.13 |
[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전1 (1) | 2023.04.13 |
[인공지능] 5장. 딥러닝과 텐서플로3 (0) | 2023.04.12 |