목록Machine Learning (57)
elevne's Study Note

시계열분석은 시간에 따라 변하는 데이터를 사용하여 추이를 분석하는 것이다. (e.g., 주가/환율 변동 및 기온/습도 변화 등) 시계열 데이터는 규칙적 시계열과 불규칙적 시계열로 나눌 수 있다. 규칙적 시계열은 트렌드와 분산이 불변하는 데이터, 불규칙적 시계열은 트렌드 혹은 분산이 변화하는 시계열 데이터이다. 시계열 데이터를 잘 분석한다는 것은 불규칙성을 갖는 시계열 데이터에 특정한 기법이나 모델을 적용하여 규칙적인 패턴을 찾거나 예측하는 것을 의미한다. 시계열 분석은 독립변수를 사용하여 종속변수를 예측하는 일반적인 머신러닝에서, 시간을 독립변수로 사용한다는 특징이 있다. 대표적인 예들로 AR, MA, ARMA, ARIMA 모형이 있다. AR (Auto Regressive) AR, 자기회귀 모델은 이전 ..

Image Segmentation (이미지 분할) 은 신경망을 훈련시켜 이미지를 픽셀 단위로 분할하는 것이다. Image Segmentation 의 대표적인 예로 Fully Convolutional Network, Convolutional & Deconvolutional Network, U-Net, PSPNet, DeepLabv3/DeepLabv3+ 등이 있다. Fully Convolutional Network 완전연결층의 한계는 고정된 크기의 입력만 받아들이며, 완전연결층을 거친 후에는 위치 정보가 사라진다는 것이다. 이러한 문제를 해결하기 위해 완전연결층을 1 x 1 합성곱으로 대체하는 것이 Fully Convolutional Network 이다. 이는 CNN 기반 모델들을 변형시켜 이미지 분할에 적..

객체 인식, Object Detection 은 이미지나 영상 내에 있는 객체를 식별하는 컴퓨터 비전 기술이다. 이미지, 영상 내의 객체가 존재하는 Bounding Box 를 검출하고, 그 객체가 무엇인지 분류하는 작업을 수행하는 것이다. 이러한 기술은 자율주행, CCTV 등에서 활용될 수 있다. 딥러닝을 이용한 객체 인식 알고리즘은 크게 1-stage detector 과 2-stage detector 로 나눌 수 있다. 1-stage detector 은 분류와 위치 검출을 동시에 진행하는 방법이고, 2-stage detector 은 두 문제를 순차적으로 진행하는 방법이다. 1-stage detector 은 객체 인식은 비교적 빠르지만 정확도가 낮고, 2-stage detector 은 느리지만 정확도가 높..

이제 ResNet 모델을 구성할 차례였다. ResNet 의 전체 네트워크 구성을 위해 이를 구성하는 기본 블록과 병목 블록을 따로 정의한다. 우선 아래와 같이 기본 블록을 작성한다. 이는 ResNet18, ResNet34 에서 사용되며 합성곱 (3x3) 두 개로 구성된다. class BasicBlock(nn.Module): expansion = 1 def __init__(self, in_channels, out_channels, stride = 1, downsample = False): super().__init__() self.conv1 = nn.Conv2d(in_channels, out_channels, kernel_size = 3, stride = stride, padding = 1, bias = ..

GoogLeNet 은 주어진 하드웨어 자원을 최대한 효율적으로 이용하며 학습 능력은 극대화할 수 있는 깊고 넓은 신경망이라고 한다. GoogLeNet 에는 Inception 모듈이라는 것이 추가되었다. Inception 모듈에서는 특징을 효율적으로 추출하기 위해 1 x 1, 3 x 3, 5 x 5 합성곱 연산을 각각 수행한다. 3 x 3 Max pooling 은 입력과 출력의 높이와 너비가 같아야 하므로 풀링 연산에서는 드물게 패딩을 추가해야 한다고 한다. 이러한 GoogLeNet 에 적용된 해결 방법은 Sparse Connectivity 이다. (이를 위해 사용되는 것이 Inception Module) CNN 은 Convolution, Pooling, FC 들이 서로 Dense (밀집) 하게 연결되어 ..

저번 시간에는 모델 정의 및 데이터를 불러오는 파트까지 실습을 진행해보았다. 그 후, 모델에 사용할 최적화 함수와 손실 함수를 정의해야 했다. optimizer = optim.Adam(model.parameters(), lr=1e-7) criterion = nn.CrossEntropyLoss() model = model.to(device) criterion = criterion.to(device) 그 후, 훈련을 진행하며 모델에 대한 정확도를 측정하기 위한 함수도 작성해둔다. def calculate_accuracy(y_pred, y): top_pred = y_pred.argmax(1, keepdim=True) correct = top_pred.eq(y.view_as(top_pred)).sum() acc..

VGGNet 은 2015 년 "Very deep convolutional networks for large-scale image recognition" 논문에서 처음 발표되었다. 이는 합성곱층의 파라미터 수를 줄이고 훈련 시간을 개선하기 위해 탄생되었다. 네트워크를 깊게 만드는 것이 성능에 어떠한 영향을 주는지 확인하고자 하였던 것이다. 네트워크 계층의 총 개수에 따라 여러 유형의 VGGNet 이 있다. 그 중 하나인 VGG16 에는 총 1 억 3300 만 개의 파라미터가 있으며, 여기서 모든 합성곱 커널의 크기는 3 x 3, Max pooling 커널의 크기는 2 x 2, Stride 는 2 로 설정되어있다. 실습으로는 VGGNet 중 가장 간단한 구조를 지니고있는 VGG11 을 사용해보았다. 이전과 ..

AlexNet 은 ImageNet 영상 데이터베이스를 기반으로 한 화상 인식 대회인 ILSVRC 2012 에서 우승한 CNN 구조이다. AlexNet 은 합성곱층 총 5 개와 완전연결층 3 개로 이루어져 있으며 맨 마지막 완전연결층은 카테고리 1000 개를 분류하기 위해 Softmax 활성화함수를 사용하고 있다. 전체적으로 GPU 두 개를 기반으로 한 병렬 구조인 점을 제외하면 LeNet 과 크게 다르지 않다고 한다. AlexNet 에서는 학습 가능한 변수가 총 6600 만 개가 있고, 네트워크에 대한 입력은 227 x 227 x 3 크기의 RGB 이미지이며, 각 클래스에 해당하는 1000 x 1 확률 벡터를 출력한다. AlexNet 의 첫 번째 합성곱층 커널의 크기는 11 x 11 x 3 이며, Str..