본문 바로가기

딥러닝스터디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-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 09-1,2: NonLinear Functions & Weight Initialization 딥러닝 공부 13일차 ReLU function 시그모이드 함수의 문제점 이제 우리는 새로운 함수인 ReLU함수를 배울 것입니다. 배우기 앞서서 새로움 함수가 필요하다는 것은 기존에 쓰던 함수가 맘에 안드는 부분이 있다는 것이겠죠. 지금까지 잘 사용해왔던 시그모이드 함수의 문제점을 살펴보겠습니다. 지금까지 우리는 연산과정에서 인풋데이터를 시그모이드함수를 거쳐 출력을 하게 되었었습니다. 그리고 최적의 가중치와 편향을 찾기위해 역전파방법을 사용하게 되었는데요. 이 역전파방법을 수행함에 있어서, 그림에서 시그모이드함수의 파랑색 박스 부분에서는 미분계수를 구하고 역연산하는 과정에서 문제가 발생하지 않습니다. 하지만 빨간박스테투리부근으로 가면 갈 수록, 미분계수가 0에 가까워지는 현상이 발생하게되고 이는 역전파방법.. 2023. 8. 9.
Lec 08-2: MultiLayer Perceptron(MLP) & Backpropagation 딥러닝 공부 12일차 BackPropagation(역전파) 인공 신경망을 열심히 만들고 돌렸는데, 예측값과 실제값이 다를 경우에 우리는 입력값을 다시 조정하여서 적절한 W 와 b 값을 다시 찾아야합니다. 하지만 이런 과정은 결코 쉽지않았고 과거의 DNN의 큰 문제로 남겨져 있었습니다. 하지만 현재, 이러한 문제는 BackPropagation, 역전파라는 방법으로 해결할 수 있습니다. 인공 신경망의 이해(Neural Network Overview) 예제를 위해 사용될 인공신경망입니다. 입력층이 2개, 은닉층이 2개, 출력층이 2개입니다. z는 이전층의 모든 입력이 각각의 가중치와 곱해진 값들의 합을 의미합니다. 이 값은 아직 활성화함수를 거치기 전 상태입니다. 이제 h값을 통해 활성화함수를 거치게 됩니다... 2023. 8. 8.
728x90