[Study] Data Science
-
[딥러닝] GAN(Generative Adversarial Nets)[Study] Data Science/머신러닝&딥러닝 2022. 9. 11. 12:39
이전까지 딥러닝에서 주목할만한 성공은 고차원의 민감한 입력값에 대해서도 잘 구별을 해낼 수 있는 Discriminative model이었다. Deep generative model의 경우, 확률적인 계산의 어려움 뿐만 아니라 piecewise(구간에 따라 달리 적용하는) linear unit의 이점을 활용하기 어려웠기 때문에 영향력이 적었다. 본 논문에서는 이러한 문제점을 회피할 수 있는 새로운 generative model 추정 과정을 제안하고 있다. 1. GAN의 구조 먼저 들어가기에 앞서, 생성모델(generative model)이란 각 클래스에 대한 분포를 학습하는 모델이다. 예를 들어 이미지 데이터를 놓고 생각해본다면, 실제 이미지 데이터의 분포를 근사함으로써 통계적으로 평균적인 특징을 가지는 ..
-
[딥러닝] Transformer 이해하기[Study] Data Science/머신러닝&딥러닝 2022. 8. 28. 15:47
이라는 논문에서 등장한 Transfomer의 구조에 대해서 알아보고자 한다. Seq2Seq 모델의 대표라고도 할 수 있는 RNN의 경우, 이전의 정보를 압축하여 담고 있는 hidden state에 종속적이기 때문에 병렬 처리가 불가능하다는 단점이 있었다. 또한 입력으로 들어오는 시퀀스(ex. 소스 문장 등)를 정해진 크기의 벡터로 압축해서 다시 뱉어내는데, 고정된 크기로 압축하다보니 정보가 유실되는 한계점도 있었다. 따라서 본 논문에서는 Attention 매커니즘을 활용한 Transformer라는 모델을 제안한다. 1. Overview 개괄적인 구조는 위와 같이 Encoder-Decoder 구조이다. Encoder와 Decoder 모듈을 하나의 레이어로 인식하여 N번 반복하여 쌓을 수 있으며, 논문에서는..
-
[딥러닝] LSTM 구조 이해하기[Study] Data Science/머신러닝&딥러닝 2022. 8. 26. 13:46
RNN은 순차적인 데이터를 입력받아 결과 값을 도출하는 대표적인 딥러닝 모델이다. RNN 모델을 최적화하는 과정에서 경사하강법이 사용되며, 이 때 연속해서 곱해지는 미분값들이 1보다 작은 경우, 최종 값이 0에 가까운 값으로 수렴함으로써 먼 과거의 정보가 현재의 셀에 영향을 미치지 못하는 'Gradient Vanishing' 문제가 발생할 수 있다. RNN의 기본적인 구조는 가져가면서, 위와 같은 문제점을 해결하기 위해 등장한 모델이 바로 'LSTM'이다. 다음에서 LSTM의 구조와 특징을 알아보고자 한다. 1. LSTM의 전반적 구조 세부 구조들을 들여다보기에 앞서 LSTM 구조에서 등장하는 요소들의 기본적인 의미를 살펴보고자 한다. ht-1 : 이전 step(t-1)에서의 hidden state, s..
-
[딥러닝] GoogLeNet[Study] Data Science/머신러닝&딥러닝 2022. 8. 19. 16:59
CNN 기반의 구조인 GoogLeNet에 대해 간단히 리뷰해보고자 한다. 1. 배경과 기본 아이디어 논문에서 말하고 있는 GoogLeNet 구조의 등장배경은 아래와 같다. CNN의 기본 구조는 합성곱 계층(convolutional layers) 다음에 하나 이상의 완전 연결 계층(fully-connected layer)이 쌓이는 형태이다. 최근의 대용량의 데이터셋을 다루기 위해 이러한 Neural Networks의 퍼포먼스를 향상시키는 것이 필요한데, 이 때 가장 직관적인 방법은 네트워크의 깊이 또는 너비를 늘리는 것이다. 다만, 해당 방법의 단점으로는 1) 모델의 크기가 커지면서 파라미터 수 또한 증가되며, 이는 오버피팅의 가능성을 높인다는 점, 이로 인해 결과적으로 학습을 까다롭게 만든다는 점 2) ..
-
[딥러닝] pytorch로 CNN 구현하기[Study] Data Science/머신러닝&딥러닝 2022. 7. 30. 13:43
1. 합성곱 연산 본격적으로 들어가기에 앞서, CNN의 기본이 되는 연산인 'Convolution'에 대해 살펴보고자 한다. Convolution(합성곱) 연산은 이미지 위에서 stride 값만큼 filter(또는 kernel)을 이동시키면서, 겹쳐지는 부분의 각 원소들을 곱한 후 모두 더한 값을 출력으로 하는 연산이다. 이러한 합성곱 연산은 이미지 분류를 하는데 있어, 기계가 자칫 다른 값으로 판단할 뻔한 값을 합성곱을 통해 이미지들의 특징을 추출해서 같은 값으로 잘 분류해내는데 도움을 준다. 아래와 같은 이미지가 주어졌다고 할 때, 사람의 경우 동일한 알파벳 Y로 판단할 수 있지만, 기계가 보기에는 다른 값으로 판단하기 쉽다. 특히 각각의 이미지가 동일한 값을 나타내고 있는지를 확인하기 위해 다층퍼셉..
-
[딥러닝] minibatch를 통한 다변량 선형회귀[Study] Data Science/머신러닝&딥러닝 2022. 6. 26. 16:22
지난 강의에서는 하나의 입력값으로 하나의 출력값을 예측하는 기본적인 선형회귀 문제에 대해 파이토치로 구현하는 방법을 살펴봤다면, 입력값이 여러개이면서 하나의 출력값을 도출하는 '다변량선형회귀'에 대해 살펴보고자 한다. 1. 다변량 선형회귀 입력변수가 여러개라면, 아래와 같이 weight도 여러개가 된다. 다만 입력변수가 늘어날 때마다, 선형회귀식 H(x)를 무한정 곱할 수 없기 때문에, 행렬의 곱을 활용하여 식을 간결하게 표현할 수 있다. 이를 코드로 나타낼 때, 2가지 사항에 유의해야 한다. w의 개수도 입력변수의 수만큼 늘어나기 때문에, w값을 초기화할 때 입력변수의 크기에 잘 맞추어 주어야 한다. 또한 matmul() 함수를 사용해 입력벡터와 weight의 곱을 한 번에 정의할 수 있다. x_tra..
-
[딥러닝] Pytorch로 구현한 Linear Regression[Study] Data Science/머신러닝&딥러닝 2022. 6. 25. 13:20
Pytorch를 통해 Linear Regression 문제를 풀어보고자 한다. 본 글은 '모두를 위한 딥러닝 시즌2-Pytorch' 편을 참고하였다. 1. 가설 너무나도 익숙한 선형회귀의 방정식은 학습데이터를 가장 잘 맞는 직선을 찾는 일이다. "가장 잘 맞는 직선을 찾는다"는 것은 곧 직선을 잘 표현할 수 있게끔하 하는 Weight(직선의 기울기)와 bias(절편)을 찾는 것과 같다고 할 수 있다. 2. 비용함수 예측 값이 실제 값과 차이가 크지 않을 때, W와 b가 적합하다고 할 수 있다. 따라서, 이를 측정하기 위해 비용함수(cost function)을 정의하게 된다. 주로 Linear Regression에서 쓰이는 cost function은 MSE(Mean Squared Error)이다. 예측값과..
-
[Pytorch] reshape / view[Study] Data Science/Python 라이브러리 2022. 3. 17. 22:28
Pytorch에서 reshape와 view는 공통적으로 tensor의 모양을 변경하는데 사용할 수 있다. 각각의 차이를 알아보기 위해 아래와 같이 임의의 t를 설정했다. 0~11사이의 값을 reshape 했기 때문에, 2*3 matrix가 빠짐없이 채워지므로, 결과적으로 2*2*3형태의 numpy array가 생성될 것이다. t = np.arange(12).reshape(-1,2,3) t t를 텐서형태로 변환하여, shape을 확인해보면 torch.size([2,2,3]) 결과가 나온다. floatT = torch.FloatTensor(t) floatT.shape #torch.Size([2, 2, 3]) 텐서형태로 변환된 floatT에 대해 view함수를 취해보면 기존의 3차원에서 2차원으로 변경되는 것..