컴퓨터공학/인공지능

[인공지능] 6장. 컨볼루션 신경망과 컴퓨터 비전3

NIMHO 2023. 4. 15. 23:45
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

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 컨볼루션 신경망의 시각화

두 가지 시각화를 시도한다.

- 컨볼루션층에 있는 커널을 시각화

- 컨볼루션층이나 풀링층이 추출해 주는 특징맵을 시각화

728x90

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 데이터셋에 대해 실험한 결과 미세 조정 방식이 우수함

728x90