본문 바로가기
Computer Science/기계학습

[Convolutional neural network] 2

by 큌 2024. 6. 18.
반응형

MLP(DNN) vs. CNN

 이 모델은 어떤 모델에 해당합니까?

 출력 치수가 1이면 어떻게 합니까?

NN은 (블랙박스) 특징 추출기와 같은 역할을 합니다 ("표현 학습")

트레이닝 CNNS

행렬 곱셈으로 구현

• 컨볼루션 연산은 기본적으로 필터와 입력의 로컬 영역 사이에서 점 곱을 수행합니다

• 일반적인 구현은 이 사실을 이용하여 컨볼루션 레이어의 순방향 패스를 하나의 큰 행렬 곱셈으로 공식화하는 것입니다 • 많은 메모리를 사용할 수 있고 행렬 곱셈의 매우 효율적인 구현이 있습니다

CNN을 위한 역전파

• 컨볼루션 레이어 – 컨볼루션 연산을 위한 백워드 패스도 컨볼루션입니다. 이는 1차원의 경우에서 쉽게 도출할 수 있습니다

• 풀링 레이어

– max(x, y) 연산에 대한 백워드 패스는 순방향 패스에서 가장 높은 값을 가지는 입력으로 그래디언트를 라우팅하는 것으로 단순한 해석을 합니다. 따라서 풀링 레이어의 순방향 패스 동안에는 max 활성화 인덱스를 추적하는 것이 일반적입니다 -> 표준 역전파 사용 가능

CNN 교육

• 구배 계산을 위한 역전파 – 파라미터 업데이트를 위한 SGD, Adam 등 • (Trainable) 매개변수: – 각 레이어에 대한 커널 패치(커널 가중치) – 각 커널에 대한 바이어스 • 하이퍼파라미터 – 예를 들어 커널 크기, 레이어당 커널 수, 스트라이드, 패딩, 네트워크 깊이 – 활성화 함수

트레이닝 대 추론

훈련된 모델을 사용하여 효율적인 구축에서 새로운 관찰 결과 예측

메모리 요구사항

• 교육시간

– 모델 파라미터

– 모든 레이어에 대한 활성화 맵(=피처 맵=레이어 출력) – 모형 모수의 구배

– 구현 및 최적화기에 따른 기타(예: 모멘텀) – 구현 오버헤드(컨볼루션 등의 경우) • 추론시간

– 모델 파라미터

– 활성화 맵(단, 수명이 짧음: 전달 패스가 새 레이어로 이동하면 폐기됨) – 구현 오버헤드

필터 시각화

• 교육 전후 1층 필터

DNN 정규화

• DNN은 특히 과적합되기 쉽습니다

• 중량 감소(중량 규범 기반 정규화)

• 조기정지

• 중도탈락

• 배치 정규화

• 데이터 증강

• 그 외 다수

기억: 중도 탈락

• 드롭아웃(dropout): 특정 확률로 반복될 때마다 숨겨진 단위의 일부가 무작위로 드롭됩니다(p=0.5가 일반적) – 충분한 용량으로 모델에 중복 표현이 가능합니다 교육 중에만 중도탈락이 필요합니다

CNN에서 탈락

• 컨볼루션 레이어보다 완전히 연결된 레이어에서 더 효과적입니다

• 각 컨볼루션 계층의 활성화 함수 다음에 사용됨: CONV->RELU->DROP, 훨씬 낮은 속도(예: 0.1 또는 0.2)로

• 배치 정규화는 CNN에서 드롭아웃을 부분적으로 대체할 수 있습니다

리콜: 배치 정규화

• 일반적으로 Fully Connected 또는 Convolutional 레이어 뒤에 삽입되며, 활성화 전에 삽입됩니다 • 테스트 시: 교육 중에 보이는 값의 평균을 사용합니다

ConvNets에 대한 배치 정규화

완전 접속 네트워크를 위한 BN

<컨볼루션 네트워크용 BN>

예: 채널당 평균 및 분산(미니 batch의 모든 픽셀 및 모든 샘플 across)

기타 정규화 방법

• LayerNorm, InstanceNorm, GroupNorm 등.

데이터셋 확대(데이터 증강)

• 기계 학습 모델을 더 잘 일반화하는 가장 좋은 방법은 더 많은 데이터로 학습시키는 것입니다

• 실제로 우리가 가지고 있는 데이터의 양은 제한적입니다

• 한 가지 해결책은 가짜 데이터를 만들어 교육 세트에 추가하는 것입니다

이미지 데이터 확대: 잘라내기

• Training(트레이닝) : 트레이닝 영상의 사각형 단면을 무작위로 마스킹(0으로 설정) • 테스트: 전체 이미지 사용

• 소규모 데이터 세트에서 매우 잘 작동하며, ImageNet과 같은 대규모 데이터 세트에서는 덜 일반적입니다

이미지 데이터 확대: 믹스업

한 쌍의 이미지와 그 라벨의 볼록한 조합 • 교육: 이미지의 무작위 혼합에 대한 교육 • 테스트: 원본 이미지 사용

이미지 쌍과 해당 레이블의 볼록한 조합

정규화 – 실제

• 훈련: 일종의 무작위성(잡음)을 추가합니다 • 테스트: 소음 평균(한계치)

배치 정규화 및 데이터 증강은 거의 항상 좋은 아이디어입니다. 완전하게 연결된 큰 레이어의 경우 드롭아웃을 고려해 보십시오.

명명된 CNNS LeNet [LeCun et al., 1998]

• Convolutional Networks의 첫 번째 성공적인 애플리케이션은 1990년대 Yann LeCun에 의해 개발되었습니다.

• 이 중 가장 잘 알려진 것은 우편번호, 숫자 등을 읽는 데 사용된 LeNet 아키텍처입니다.

• [CONV-POOL-CONV-POOL-FC-FC]

AlexNet [Krizhevsky et al. 2012]

• 컴퓨터 비전에서 컨벌루션 네트워크를 대중화한 최초의 작업

• 8계층 CNN (5 Conv + 3 FC)

• ILSVRC 2012에서는 2위(26%의 오차로 2위 대비 상위 5위 오차 16%)를 크게 앞질렀습니다

• ReLU 최초 사용

• 방대한 데이터 증강

• 탈락 0.5

• 배치사이즈 128

• SGD 모멘텀 0.9

• 학습률 0.05, 검증 정확도가 거의 변하지 않을 때 수동으로 10 감소

VGGnet [Simonyan and Ziserman, 2014]

• ILSVRC 2014 분류 준우승, 현지화 1위

• 작은 필터, 더 깊은 네트워크 – 3x3 커널만 사용 – 매개 변수 감소 – 16개 또는 19개 레이어 포함

• FC7 기능(4096-dim)을 다른 작업에 잘 일반화 – 전이 학습 허용

VGGNet in detail (VGG16)

• 대부분의 메모리(및 계산 시간)는 초기 Conv 계층에서 사용됩니다

• 대부분의 매개변수는 마지막 FC 계층에 있습니다 – 첫 번째 FC 계층에는 총 140M개의 매개변수 중 100M개가 포함되어 있습니다

매우 심층적인 아키텍처에서의 최적화 어려움

• 체인 규칙으로 인해 그래디언트가 역전파됨에 따라 사라질 정도로 작아질 수 있습니다. 따라서 하위 계층은 매우 느리게 학습됩니다(훈련이 어렵습니다)

• 예를 들어, 34계층 네트워크는 18계층 네트워크보다 높은 교육 오류를 가집니다

• 솔루션: 보다 직접적인 연결을 추가하는 새로운 심층 아키텍처(그래디언트가 흐르게 하고 아이덴티티를 표현하기 쉽게 함) – 잔류 연결, 건너뛰기 연결, 촘촘한 연결

잔류 연결

• 추가를 통한 연결 건너뛰기

• 각 레이어를 재파라미터화하여 ID를 쉽게 표현할 수 있습니다. ID 연결은 기본적으로 정보를 보존합니다

• 이를 통해 심층 네트워크를 훨씬 쉽게 훈련할 수 있습니다 ResNet [He et al., 2015]

• ILSVRC 및 COCO 2015 전 대회에서 1위를 휩쓸었습니다

• 잔여 연결을 사용한 매우 심층적인 네트워크 – 100 계층 이상의 네트워크를 어렵지 않게 교육

• ResNet은 또한 양호한 일반화 능력을 보여줍니다

• 모든 CONV 계층 후 배치 정규화

• 네트워크 끝에 완전히 연결된 계층이 없습니다

• 미니 배치 크기 256, 무게 감소 1e-5, SGD+모멘텀(0.9), 학습률 0.1, 점진적으로 10으로 나눈 값

• 사용된 드롭아웃 없음

촘촘한 연결

• "DenseNet"으로 불리는 고밀도 연결 • 각 레이어를 모든 미래 레이어에 직접 연결합니다 손실 풍경 시각화: 연결 생략 및 생략

국소 최소값 주변의 손실에 대한 랜덤 방향 2D 그림 일반화 최적화

최적화 ≈ 교육 오류 감소

일반화 ≈ 테스트 오류 감소

• 잔여 연결로 대규모 네트워크 최적화에 큰 어려움 해결

• 현재 다양한 아키텍처가 ResNet을 기반으로 하고 있습니다 – Wide ResNet, ResNeXt, DenseNet...

• 사람들은 이제 최적화에 대한 관심을 줄이고 일반화 능력에 더 집중할 수 있습니다

네트워크 설계 자동화

기존의 인간이 만든 아키텍처를 능가할 수 있는 구조를 자동으로 찾습니다

• NASNet[2018]은 전체 모델을 검색하지 않고 반복되는 셀 모듈만 검색하려고 합니다(검색 공간 감소)

• EfficientNet [2019] 복합 계수를 사용하여 네트워크 깊이/폭/해상도를 균일하게 확장 이미지 생성 모델

• GAN: 생성적 적대 네트워크

• 확산모델

전이학습

• 대형 모델을 교육하려면 엄청난 데이터 세트와 컴퓨팅 리소스가 필요합니다…

• 제 프로젝트에 이미지 분류를 위한 더 작은 데이터 세트가 있다면 어떨까요? 심층 네트워크의 모든 하위 수준 기능을 반복 학습해야 할까요?

• 전이 학습에서 작업에 대해 훈련된 모델은 관련 작업에 대한 모델의 시작점(예: 초기화를 위해)으로 재사용됩니다

• 단계:

1. 사전 학습된 모델을 다운로드하거나 유사한 데이터가 있는 매우 큰 데이터 세트를 찾아서 큰 모델을 학습합니다

2. 학습 내용을 데이터 세트로 전송

• 자체 데이터 세트를 사용하여 일부 모델 매개 변수 미세 조정

전이학습

• 레이블 및 기능 공간이 유사한 더 큰 데이터 세트를 찾으면 전이 학습을 통해 성능이 크게 향상될 수 있습니다 – 더 큰 데이터 세트에서 전체 모델 학습 -> 사전 학습 – 자신의 작업에 맞게 마지막(하나 또는 몇 개) 레이어의 아키텍처 조정 – 작은 대상 데이터 세트에서 마지막 몇 개의 레이어만 훈련

 미세 조정(또는 사전 훈련된 가중치를 사용하여 네트워크를 초기화한 후 전체 네트워크를 다시 훈련할 수 있음)

• 다양한 작업에 대해 공개적으로 사용 가능한 사전 훈련된 모델을 찾을 수 있습니다

퓨샷 학습

• 클래스당 제한된 수의 샘플만을 사용한 학습 – 표기: 클래스당 N개의 샘플만 사용할 수 있는 경우

 N-shot 학습 – 예를 들어 클래스당 5개의 샘플이 사용 가능한 경우

5-shot 학습

• 퓨샷 학습을 위한 전이 학습 – 소수의 샘플에 대해 사전 훈련된 모델 미세 조정 – 메타 학습과 같은 접근 방식

• 제로샷 학습(Zero-shot learning) : 제로샷 일반화 기능이 있는 SAM(Segment Anything Model)과 같은 추가 교육 없이 작동합니다("이미지 분할을 위한 기초 모델")

요약

• CNN 아키텍처: CONV/POOL/FC 계층

• 심층 합성곱 네트워크를 위한 정규화 기법

• 많은 인기 있는 아키텍처와 가중치를 사용할 수 있습니다 – CNN을 사용한 전이 학습이 널리 사용되고 있습니다

• 최근에는 트랜스포머 기반 이미지 모델(ViT)이 CNN 기반 모델보다 성능이 뛰어납니다(실질적인 데이터 세트에서 학습할 때) • 비전-언어 사전 훈련과 멀티모달 훈련 또한 매우 인기가 있습니다

반응형

'Computer Science > 기계학습' 카테고리의 다른 글

[Transformer] 1  (0) 2024.06.18
[Recurrent neural network]  (0) 2024.06.18
[Convolutional neural network] 1  (0) 2024.06.18
CNN  (0) 2024.05.27
[Performance Evaluation] 2. Performance metrics for classification(2)  (0) 2024.04.22