Deep Learning 27

Representation Learning

표현 학습(Representation Learning)은 기계 학습의 한 분야로, 원시 데이터를 더 유용하거나 의미 있는 형태로 변환하는 과정임. 주로 고차원이고 복잡한 데이터를 저차원이면서유용한 형태의 데이터로 변환하는 과정을 포함 표현 학습의 목표는 원시 데이터로부터 더 유용한 특징이나 속성을 추출하여 해당 데이터에 내재된 패턴이나 구조를 더 잘 파악할 수 있도록 하는 것임 Representation Learning은 지도 학습과 비지도 학습 모두에 적용될 수 있음. 활용 사례 Feature Extraction : 이미지, 텍스트 또는 음성과 같은 데이터에서 의미있는 특징을 추출하여 해당 데이터의 표현을 개선 Auto Encoder : 인코더와 디코더로 구성되며, 입력을 저차원의 표현으로 압축하고 다..

Deep Learning 2023.12.01

이미지 전이학습(Image Transfer learning) 패키지 Timm

이미지 데이터 수가 많지 않을 때, 적은 데이터로 모델을 학습시키기 어렵기 때문에, ImageNet과 같은 대량의 데이터로 사전학습 되어있는 모델을 import 해서 모델을 학습시키는 경우가 많다. Torchvision 의 models 내에 있는 사전학습 모델들을 활용해도 좋지만, 생각보다 모델 종류가 많지 않다. Torchvision models list (링크 : https://pytorch.org/vision/0.9/models.html) AlexNet, VGG, ResNet, SqueezeNet, DenseNet, Inception-v3, GoogLeNet, ShuffleNet-v2, MobileNet-V2, MobileNet-V3, ResNeXt, Wide ResNet, MNASNet 최근에 알..

Deep Learning 2023.11.03

딥러닝 서버 세팅-우분투 설치 후 gpu 환경 설치

계정 생성 및 sudo 권한 부여 sudo adduser 아이디 sudo usermod -aG sudo 아이디 NVIDIA-DRIVER 찾기 ubuntu-drivers devices 명령어 실행하여, 아래와 같이 recommended 버전 확인 (아래 캡처에서는 535 버전으로 나옴) NVIDIA-DRIVER 설치 sudo apt install nvidia-driver-535 (535 대신 위에서 찾은 recommended version을 쓰면 됨) 시스템 재시작 (반드시 해줘야함) sudo reboot now NVIDIA-DRIVER 설치 확인 nvidia-smi 실행하여 아래와 같이 GPU 상태가 나오는지 확인. 아나콘다 다운로드 https://www.anaconda.com/download#downl..

Deep Learning 2023.10.31

Tensor를 detach() 하는 이유

모델을 학습시키면서 AUROC 지표를 뽑을 때, inference 결과를 저장해서 확인해야할 때가 있다. 그러면 예측 결과와 확률값, 타겟값(ground truth)을 numpy array 에 담거나 list 에 넣어서 저장해야 하는데, 이때 가끔 detach() 에러가 발생한다. detach 하는 이유는 주로 그래디언트 계산과 자동 미분(autograd) 시스템과 관련이 있음. 그래디언트 추적 중단: PyTorch와 같은 딥러닝 프레임워크에서는 기본적으로 텐서의 연산을 추적하여 그래디언트(미분)를 자동으로 계산함. 딥러닝 모델을 학습할 때 텐서에 대한 그래디언트를 추적하는 것은 중요하지만, 때로는 그래디언트를 추적하지 않아야 하는 경우가 있는데, 이때 .detach()를 사용하여 그래디언트 추적을 중단..

Deep Learning 2023.10.19

비전 트랜스포머(Vision Transformer, ViT) 개념, 설명

비전 트랜스포머 모델은 기존의 컨볼루션 신경망(Convolutional Neural Network, CNN) 아키텍처 대신에 트랜스포머의 셀프 어텐션(Self-Attention) 메커니즘을 사용하여 이미지를 처리하는 모델임. 특징 트랜스포머 구조 적용: 비전 트랜스포머는 트랜스포머 아키텍처와 유사한 구조를 사용. 이미지를 처리하기 위해 2D 그리드로 나타낸 후, 각 위치의 정보를 셀프 어텐션으로 처리하며, 이를 통해 이미지 내의 전역 및 지역적인 패턴을 파악할 수 있음. 패치 표현: 이미지는 작은 패치(patch)로 나뉘어 표현되는데, 패치는 1D 벡터로 펼쳐진 후, 트랜스포머의 입력값으로 사용함. 이렇게 사용하면 이미지의 공간 정보(Spatial Information)가 유지되면서 효율적인 처리가 가능..

Deep Learning 2023.10.10

트랜스포머(Transformer) 개념, 설명

트랜스포머는 2017년 구글에서 발표한 논문임. (원문 : Attention in all you need (https://arxiv.org/pdf/1706.03762.pdf) 트랜스포머 모델은 기존 RNN 구조(seq-to-seq )인 Encoder-Decoder 구조를 유지하면서 어텐션을 구현한 모델임. RNN 구조의 한계 RNN 기반 모델은 인코더에서 입력값을 하나의 벡터로 만들고, 디코더에서 벡터를 통해 출력값 시퀀스를 만들어내는 구조임. 인코더에서 입력시퀀스를 벡터로 압축할 때, 정보의 Loss가 발생할 수 있음. 장기 의존성 처리가 어렵고 입력/출력 길이가 고정되어 있음. 병렬화가 가능은 하지만, 제한되어 있음. (인코더와 디코더를 연결하기 위한 추가연산이 필요함) 이러한 문제점과 한계를 극복하..

Deep Learning 2023.10.09

Gradient clipping

그래디언트 클리핑(Gradient Clipping)은 딥러닝 모델을 학습할 때 그래디언트 값의 폭발적인 증가를 방지하기 위한 기법임. 위 그림의 original gradient를 보면 목표 minimum 을 넘어가는 것을 볼 수있는데, 이때 gradient 값에 특정 cut-off의 제한을 줘서 안정적으로 수렴시키는 방법임. 특히 순환 신경망 (Recurrent Neural Networks, RNN)과 같은 모델에서 주로 사용되는데, sequence 가 길어지면 gradient가 계속 곱해지기 때문에 기하급수적으로 증가할 수 있음. (모델 Layer가 깊어져도 마찬가지임) Gradient Exploding(그래디언트 폭발)은 가중치 업데이트 과정에서 그래디언트 값이 너무 커져 모델의 가중치가 불안정해지고..

Deep Learning 2023.10.06

Internal Covariate Shift와 Batch Normalization

Internal Covariate Shift는 Deep learning Network의 depth 가 증가하면서 학습 과정에서 발생하는 문제 중 하나로, 내부적인 데이터 분포 변화 현상 좀 더 자세히는, 학습 과정에서 계층별로 입력 데이터의 분포가 달라지는 현상이다. (Deep Neural Network 에서는 각 레이어의 가중치 업데이트가 이전 레이어의 출력에 의존하는 경우가 많음) 이로 인해 학습 초기 단계에서는 네트워크의 중간 레이어에서 출력 분포가 크게 변할 수 있는데, 이러한 현상이 Internal Covariate Shift의 핵심 개념이다. Internal Covariate Shift로 인한 문제 학습 속도 저하 (Slow Training): 내부 공변량 변화로 인해 각 레이어의 가중치 업데..

Deep Learning 2023.10.02

opencv

opencv(Open Source Computer Vision) 는 인텔에서 개발한 패키지로, Computer Vision 을 위한 딥러닝에 활용하는 이미지, 영상 데이터를 read, preprocessing 하는데 사용된다. 선을 따는 line detection 부터 객체 인식(object detection), 추적, 카메라 보정, 특징 추출(feature extraction) 등이 가능하다. 최근에는 자율주행뿐만 아니라, 객체 인식을 통한 딥러닝 모델에 많이 활용되고 있다. CT, MRI 등 Image processing 과 DL 모델 개발을 위해서는 필수적으로 알아야 할 Library이므로, 앞으로 꾸준히 공부가 필요할 듯 하다. Image Read import cv2 # Image Read (RG..

Deep Learning 2023.10.02

seq-to-seq

Seq2Seq(Sequence to Sequence) 는 시퀀스를 입력받아 다음 시퀀스를 예측하는 모델로, NLP 분야에서 많이 사용됨 시퀀스가 문장이라면 각각의 아이템은 단어를 나타내고, 동영상이라면 프레임 별 이미지이며, 입력과 출력이 길이가 같을 필요는 없음 Seq2Seq 모델은 크게 인코더(Encoder)와 디코더(Decoder)가 연결된 구조이며, 인코더는 입력한 시퀀스의 정보 압축해서 Context vector를 만들고, 디코더는 이 정보를 받아서 출력하는 역할임. import torch import torch.nn as nn import torch.optim as optim import random # 하이퍼파라미터 설정 input_size = 10 output_size = 10 hidden..

Deep Learning 2023.09.26