본문 바로가기

ML & DL37

Lec 11-1 : RNN basics 딥러닝 공부 25일차 RNN을 Pytorch에서 구동하는 법은 두줄이면 끝납니다. 그림에서 볼 수 있듯이 rnn = torch.nn.RNN(input_size, hidden_size) outputs, _status = rnn(input_data) Input_data shape 위처럼 두줄이면 rnn을 가져다 쓸 수 있습니다. 이제 여기서 input data의 모양이 어떻게 구성이되는지, output shape도 어떻게 이루어져 있는지 알아보겠습니다. Input_size 우리가 살펴볼 글자는 hello 입니다. 여기서 글자수는 5개지만 실제로 사용되는 글자는 h, e, l, o 이렇게 4가지이므로, (-, -, 4) 괄호 안에들어가는 3가지중 맨 오른쪽에는 사용되는 글자 자체의 개수가 들어가게 됩니다. S.. 2023. 9. 25.
Lec 11-0 : RNN Intro 딥러닝 공부 24일차 RNN이 필요한 이유 우리는 기존에 배운 NN, CNN 으로 여러가지 일들을 해낼 수 있지만, Sequence Data 는 해결하지 못하는 문제점이 있습니다. 그래서 이러한 순차데이터(시계열데이터)를 잘 학습하기위한 도구로 등장한 것이 Recurrent Neural Network, RNN 입니다. Sequential data sequential data는 말그대로 시간의 관계성이 있는 데이터들을 의미하고 예를들어서 우리가 말을하는 문장, 단어들, 혹은 기상청 날씨 데이터 같은 것들을 말합니다. 추가로 RNN을 순환신경망(Recurrent) 또는 재귀신경망(Recursive) 라고 설명하면서 둘다 같은 모델이라고 설명하는 곳이 있는데, 순환신경망과 재귀신경망은 약간 다른 모델입니다. .. 2023. 9. 25.
Lec 10-4 : Resnet, Advance CNN 딥러닝 공부 23일차 CNN을 연구하면서 기존 모델들은 Layer를 깊게 쌓을수록 성능이 좋아질 것이라고 예상했지만 실제로는 20층 이상의 깊이로 갈 수록 오히려 성능이 떨어지는 현상이 존재하였습니다. 그래서 깊이가 깊어질수록 성능이 좋게 만들 수 있는 방법이 없을까해서 나온 방법이 바로 Resnet이라는 방법입니다. 사진과 같이 152층이라는 엄청나게 깊은 네트워크로 사람의 한계를 뛰어넘은 모습을 볼 수 있습니다. 하지만 이렇게 매우 깊은 네트워크에는 문제점이 존재합니다. 층이 깊어질수록 성능이 떨어지는 것을 보고 직관적으로 Gradient Vanishing/Explosion 이 발생할 수 있음을 짐작할 수 있고, 또한 Degradation 이라는 층이 깊어지면 오히려 성능이 안좋아지는 현상이 발생함을.. 2023. 9. 24.
Lec 10-3 : VGG, Advance CNN 딥러닝 공부 22일차 VGG-net Oxford VGG(Visual Geometry Group) 에서 만든 Network입니다. VGG는 Layer의 개수에 따라 VGG11 ~ VGG19 까지 만들 수 있도록 되어있습니다. torchvision.models.vgg 로 사용할 수 있습니다. 또한 3224224 입력을 기준으로 만들도록 되어 있습니다. VGG 코드 구현 모두 3*3 Conv, Stride = 1, Padding = 1 로 이루어져있어서 구조가 어려운 편은 아닙니다. import torch.nn as nn import torch.utils.model_zoo as model_zoo __all__ = [ 'VGG', 'vgg11', 'vgg11_bn', .. 2023. 9. 24.
Lec 10-2: CNN으로 MNIST 분류기 구현하기 딥러닝 공부 19일차, 21일차 오늘은 MNIST 손글씨 분류기를 CNN을 통해 구현해보는 시간을 가져보겠습니다. 먼저 필요한 도구들을 import 해줍시다. import torch import torch.nn as nn import torchvision.datasets as dsets import torchvision.transforms as transforms import torch.nn.init GPU 연산을 위한 설정을 해줍니다. device = 'cuda' if torch.cuda.is_available() else 'cpu' torch.manual_seed(777) if device == 'cuda': torch.cuda.manual_seed_all(.. 2023. 9. 23.
Deep Learning code 구현을 위한 Q&A 딥러닝 공부 18일차(+20일차) 그 동안 딥러닝 공부를 하면서 들었던 의문점들을 총 집합해서 공부하고 알아보겠습니다. 제가 들었던 의문이면 다른 사람들도 똑같이 의문을 가지지 않았을까 싶어 따로 정리해보려합니다. 도움이 되었으면 좋겠습니다~ Parameter VS Hiperparameter 파라미터는 한국어로 매개변수입니다. 파라미터는 모델 내부에서 결정되는 변수입니다. 또한 그 값은 데이터로부터 결정됩니다. 하이퍼 파라미터는 모델링할 때 사용자가 직접 세팅해주는 값을 뜻합니다. learning rate나 서포트 벡터 머신에서의 C, sigma 값, KNN에서의 K값 등등 굉장히 많습니다. 머신러닝 모델을 쓸 때 사용자가 직접 세팅해야 하는 값은 상당히 많습니다. 그 모든 게 다 하이퍼 파라미터입니다... 2023. 9. 23.
Lec 10-1: CNN - Convolution 연산 딥러닝 공부 17일차 합성곱 신경망(CNN, Convolution Neural Network)는 이미지 처리에 탁월한 성능을 보입니다. 합성곱 신경망은 크게 Convolution Layer(합성곱층) 과 Pooling Layer(풀링층)으로 구성되어있습니다. 합성곱연산이 필요한 이유 앞서 우리가 예제 코드로 해보았던 MNIST 처럼 글자를 분류하고 싶다고 가정해보겠습니다. 아래의 그림은 알파벳 Y를 정자로 쓴 글씨와 휘갈겨 쓴 글씨 두개를 2차원 행렬로 표현한 것입니다. 사람이 보기에는 둘다 y로 보이지만 기계의 입장에서는 각 픽셀마다 가진 값이 거의 상이하므로 완전히 다른값을 가진 입력으로 인식합니다. 이를 다층 퍼셉트론으로 분류한다면 이미지를 1차원 백터로 변환하고 입력층으로 사용해야합니다. 이미지를.. 2023. 8. 28.
Lec 09-3,4: Dropout & Batch Normalization 딥러닝 공부 15일차 이전에 Overfitting(과적합)을 방지할 수 있는 방법을 소개했었습니다. 다시 몇가지 적어보면 More training data Reduce the number of features Regularization Dropout 과적합을 방지하는 방법 중 하나인 Dropout에 대해서 오늘 공부해보겠습니다. Dropout dropout은 쉽게말하면 매 층마다 어떠한 확률로 일부는 버리고 남은 나머지들로 학습해나가는 것을 말합니다. 즉, 신경망의 일부를 사용하지 않는 방법입니다. 드롭아웃은 신경망 학습시에만 사용하고, 예측시에는 사용하지 않습니다. 학습시에 인공 신경망이 특정 뉴런 또는 특정 조합에 너무 의존적이게 되는 것을 방지해주고, 매번 랜덤 선택으로 뉴런들을 사용하지 않으므로 .. 2023. 8. 27.
728x90