본문 바로가기

BARAM22

Lec 10-4 : Resnet, Advance CNN 딥러닝 공부 23일차 CNN을 연구하면서 기존 모델들은 Layer를 깊게 쌓을수록 성능이 좋아질 것이라고 예상했지만 실제로는 20층 이상의 깊이로 갈 수록 오히려 성능이 떨어지는 현상이 존재하였습니다. 그래서 깊이가 깊어질수록 성능이 좋게 만들 수 있는 방법이 없을까해서 나온 방법이 바로 Resnet이라는 방법입니다. 사진과 같이 152층이라는 엄청나게 깊은 네트워크로 사람의 한계를 뛰어넘은 모습을 볼 수 있습니다. 하지만 이렇게 매우 깊은 네트워크에는 문제점이 존재합니다. 층이 깊어질수록 성능이 떨어지는 것을 보고 직관적으로 Gradient Vanishing/Explosion 이 발생할 수 있음을 짐작할 수 있고, 또한 Degradation 이라는 층이 깊어지면 오히려 성능이 안좋아지는 현상이 발생함을.. 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.
Lec 08-2: MultiLayer Perceptron(MLP) & Backpropagation 딥러닝 공부 12일차 BackPropagation(역전파) 인공 신경망을 열심히 만들고 돌렸는데, 예측값과 실제값이 다를 경우에 우리는 입력값을 다시 조정하여서 적절한 W 와 b 값을 다시 찾아야합니다. 하지만 이런 과정은 결코 쉽지않았고 과거의 DNN의 큰 문제로 남겨져 있었습니다. 하지만 현재, 이러한 문제는 BackPropagation, 역전파라는 방법으로 해결할 수 있습니다. 인공 신경망의 이해(Neural Network Overview) 예제를 위해 사용될 인공신경망입니다. 입력층이 2개, 은닉층이 2개, 출력층이 2개입니다. z는 이전층의 모든 입력이 각각의 가중치와 곱해진 값들의 합을 의미합니다. 이 값은 아직 활성화함수를 거치기 전 상태입니다. 이제 h값을 통해 활성화함수를 거치게 됩니다... 2023. 8. 8.
Lec 08-1: Perceptron 딥러닝 공부 11일차 Perceptron(퍼셉트론) 본격적으로 퍼셉트론에 대해서 공부하기 전에, 인공 신경망에 대해서 조금 알아보겠습니다. 신경세포 중 뉴런에서 일어나는 일을 살펴보겠습니다. 뉴런은 신호를 전달 받아서 전달해주는 역할을 합니다. 사진상의 왼쪽부분이 신호를 전달 받는 부분이고 오른쪽 부분이 신호를 전달 해주는 부분입니다. 뉴런은 어떠한 임계치 이하의 값은 전달하지 않고, 임계치 이상의 신호만 전달하는 특징이 있습니다. 이 특징이 이제 배울 퍼셉트론의 주요한 성질로 사용될 것입니다. 기억해주세요~ 결론적으로 퍼셉트론은 다수 입력으로 하나의 결과를 내보내는 알고리즘입니다. 가볍게 입력이 두개인 퍼셉트론입니다. 보통 x를 입력값, y를 출력값이라고 합니다. 그래서 $y=W_{1}x_{1}+W_{.. 2023. 8. 8.
Lec 07-3: MNIST Introduction 딥러닝 공부 10일차 MNIST MNIST란? 숫자들에대한 손글씨 데이터셋이라고 보면 됩니다. MNIST 데이터는 아래의 링크에 공개되어져 있습니다. 데이터보러가기 MNIST는 숫자 0부터 9까지의 이미지로 구성된 손글씨 데이터셋입니다. 이 데이터는 과거에 우체국에서 편지의 우편 번호를 인식하기 위해서 만들어진 훈련 데이터입니다. 총 60,000개의 훈련 데이터와 레이블, 총 10,000개의 테스트 데이터와 레이블로 구성되어져 있습니다. 레이블은 0부터 9까지 총 10개입니다. 우선 MNIST 문제를 더 자세히 보겠습니다. 각각의 이미지는 아래와 같이 28 픽셀 × 28 픽셀의 이미지입니다. 28 x 28 = 784픽셀이기 때문에, 각 이미지를 총 784개의 원소를 가진 벡터로 만들어줄겁니다. 784차원.. 2023. 8. 7.
728x90