인공지능/공부

인공지능 Overfitting, Convolution, CNN

이게될까 2023. 12. 16. 23:49
728x90
728x90

Overfitting

과도하게 training data를 따라는 모습이다.

overfitting은 traning data에 과도하게 optimized 되어 training data만 예측을 잘 하고, test data에는 오히려 낮은 점수를 보이는 것이다.

optimized Point를 잡는 것이 중요하다.

그래서 우린 데이터를 나누기로 결정한다.

validation data는 검증 데이터이다.

데이터 불균형이 있는경우 (ex 100 10 100 -> 100 100 100)우린 데이터를 돌리기, 좌우대칭, 자르기, 밝기 변동 등을 활용해 데이터를 늘릴 수 있다.

네트워크가 너무 특정화되거나 커지면 오버피팅이 발생한다. 또한 weight가 너무 특화되거나 너무 큰 경우 발생한다. weight decay는 가중치가 커지지 않도록 방지하는 기술이다. 이 것은 하이퍼 파라미터로 커질수록 제제하는 강도도 커진다. 가중치가 너무 커지는 것을 방지하여 오버피팅을 피하고, 새로운 데이터에 대해 더 잘 일반화 하도록 도와준다.

Ridge - 제곱, Lasso - 절대값

alpha가 높으면 더 많은 정규화, 오버피팅의 위험이 줄고, 네트워크의 변동성이 감소된다.

Co- Adaptaion = 노드의 역할이 동일해진다.

여러개의 노드들이 같은 모습(parameter)를 가지는 것을 말한다.
그럼 노드들이 동일한 feature를 보게 된다. 노드들이 독립적인 것들을 볼 수록 높은 효과를 가지는데 여기선 좋은 효과를 가지지 못하게 된다. 그래서 각각의 노드를 지우게 된다.

Drop-out

co-adaptation을 방지하여 오버피팅을 막고 랜덤으로 node를 지워서 ensemble와 같은 효과를 가지게 된다.
테스트 할 땐 drop out 없이 테스트 하는데 방식이 살짝 다르다.

drop out를 사용할 때 test data나 validation data 계산 방법

 

 

728x90

Convolution

image(2D) convolution

우린 Convolution을 통해 feature의 유사성을 찾을 수 있다. 우린 필터의 값을 학습을 통해 찾을 수 있고, 필요할 때 마다 다양한 필터들을 사용하면 된다.

Stride

듬성듬성 걸어가면서 이 layer의 out을 줄여준다.

Padding

input 크기를 유지하고 싶을 때 사용한다.

Dilation - 팽창

내가 보고자 하는 영역을 증대해준다. 나도 이건 한번도 써본 적이 없다. 

3D Convolution

3D convolution에서는 채널 수가 동일해야 한다. 그리고 필터의 개수가 출력의 채널 수이다.

CNN

image data를 1열로 나열해서 FCN으로 진행시

image data를 FCN으로 진행 시 파라미터 수도 폭팔적으로 증가하고, 복잡도도 증가한다. 그리고 공간적 정보, RGB 정보, 픽셀 사이의 거리 정보도 사라지게 된다. 

그래서 우린 Convolution을 활용하여 CNN 후 FCN을 진행하게 된다.

그래서 Convolutional layer를 의미있는 피쳐 뽑기라고 부르고, 학습 동안 필터를 학습하고, 필터를 통해 의미있는 정보, 중요한 정보를 뽑아낸다.(deep feature)

Convolution layer의 기본 구성
Pooling layer

보통 2,2크기로 해서 max값만 가지고 간다. 필요한 것만 가지고 간다 라는 마인드 이다.

local connectivity

CNN의 특징으로 파라미터가 공유되어 학습할 파라미터가 적은 것이다.

Receptive Field - 수용영역

필터의 크기가 커질수록 receptive field가 커지지만 파라미터의 수가 증가한다.

파라미터 개수 = (필터의)(h*w*c +1)*n 

1*1 Convolution

크기는 같게, 채널 수 증감 가능하다. 깊은 뉴럴 넷에서는 1*1 conv는 낮은 복잡도를 유지해주고, 차원을 줄일 수 있게 해준다.

Group Convolution

group Convolution은 input을 group 개수대로 잘라서 각각 필터를 적용하여 뒤에서 합치는 것이다. 파라미터의 개수가 (1,1,6,4)일 때 보다 반이 줄어드는 이점이 있다.

2023.12.02 - [인공지능/공부] - 인공지능 MNIST - CNN pytorch validation, 정규화

 

인공지능 MNIST - CNN pytorch validation, 정규화

import torch import torch.nn as nn import torch.nn.functional as f import torch.optim as optim from torch.utils.data import TensorDataset from torch.utils.data import DataLoader import numpy as np import matplotlib.pyplot as plt import pandas as pd import

yoonschallenge.tistory.com

 

실습코드이다.

728x90