목록분류 전체보기 (103)
juuuding

Mini-batch gradient descent mini-batch란 총 m개의 훈련 예제가 있다고 가정했을 때 일정한 크기(n)로 훈련 예제를 나누어서 여러 개의 부분으로 나누어 놓은 것을 의미한다. 예를 들어 100000개의 훈련 예제가 있다고 가정했을 때 미니 배치의 크기를 1000으로 설정하면 100개의 서로 다른 미니 배치가 생긴다. 이러한 미니 배치를 가지고 경사 하강을 하는 것을 "mini-batch gradient descent"라고 한다. 반대로 batch gradient descent가 있는데 이것은 모든 훈련 예제를 가지고 동시에 경사 하강을 진행하는 방식이다. 즉 이제까지 하던 경사하강 방식이다. mini-batch gradient descent는 각 배치를 벡터화시켜 경사 하..

※ 혼자 읽고 정리한 글이라 틀린 내용이 있을 수 있습니다. [ImageNet Classification with Deep ConvolutionalNeural Networks (AlexNet)]https://proceedings.neurips.cc/paper_files/paper/2012/file/c399862d3b9d6b76c8436e924a68c45b-Paper.pdf 💡 Introduction 객체 인식의 성능을 높이기 위해서는 큰 데이터셋과 강력한 모델 학습이 필요하다. 이 전까지의 간단한 작업들에서는 증강 기법을 사용하여 꽤나 적은 데이터로 잘 학습이 되었다. 하지만 실제 환경의 객체를 인식하기 위해서는 매우 큰 훈련 데이터셋이 필수다. 그래서 최신(2012년 기준)에 고해상도의 사이즈가 매..

※ 혼자 읽고 정리한 글이라 틀린 내용이 있을 수 있습니다. [Learning From Imbalanced Data With Deep Density Hybrid Sampling]https://ieeexplore.ieee.org/document/9723474 Abstract 1. 문제 대부분의 경우 모델을 학습할 때 훈련 데이터 세트에서 클래스 간의 샘플 수가 불균형하게 분포되어 있어, 분류기가 다수 클래스에 편향되어 소수 클래스의 성능이 저하되는 문제가 있다. 이를 해결하기 위해 이 논문에서는 DDHS라는 방법을 도입하여 불균형 데이터 세트에서 분류 성능을 향상시키고자 한다. 2. 기존 방법의 문제 - minority 클래스나 majority 클래스에만 집중을 하고 두 클래스 간 관계는..

✏️ Setting up your ML application Train/dev/test sets 모델의 하이퍼파라미터(계층 수, 은닉 유닛 수, 학습률, 활성화 함수)을 정한 후 코드로 구현하고 훈련을 시켜본 후 값을 조금 변경해보면서 성능이 어떤 값을 가진 모델이 제일 좋은지 측정하여야 한다. 최적의 하이퍼파라미터는 한 번에 구하는 것이 거의 불가능하며 수차례 반복 과정을 거쳐야 한다. 가장 최적의 성능을 가진 모델을 찾았다고 해도 이것이 다른 작업/분야에도 똑같이 적용되는 것이 아니며 모든 모델을 설계할 때마다 이러한 작업을 반복해야한다. 이렇게 작업을 반복하며 모델의 성능을 측정하여야 하는데, 이때 필요한 것이 train/dev/test set이다. 이 set은 자료들의 집합을 의미하는데 ..

Forward Propagation in a Deep Network deep neural network에서의 forward propagation을 벡터화 버전으로 표현하면 다음과 같다. [l]은 계층을 나타낸다. Z[l] = W[l]·A[l-1] + b[l] A[l] = g[l](Z[l]) 위의 식을 이용하면 한 계층에서 m개의 훈련 예제를 한 번에 계산할 수 있다. 신경망을 구현할 때는 이렇게 벡터화를 사용해서 반복 구문을 최대한 피하는 게 좋지만, 각 계층을 나타내는 반복문은 벡터화로 표현할 수 없다. 따라서 각 계층 별로는 반복문을 사용해주어야 한다. Getting your matrix dimensions right n[x]는 x번째 계층의 유닛 수를 의미한다. 훈련 예제는 총 m개가 ..

Neural Network Representation 다음 그림은 2계층 신경망의 표현법이다. 우선 2계층 신경망은 input, hidden, output layer로 이루어져 있다. 신경망의 계층을 셀 때는 input layer을 제외하고 hidden layer와 output layer 개수를 모두 합하여 총 계층 수를 계산하면 된다. 다음으로 신경망의 notation에 대해 알아보자. 신경망에서는 해당 변수가 어느 계층에 속하는지, 몇번째 유닛에 속하는지 정확히 표시하는 것이 중요하다. 위 그림에서 변수 위에 "[1]"처럼 대괄호로 표현된 것이 해당 변수가 몇계층에 속해있는지를 나타낸다. 그리고 변수 아래에 적힌 숫자는 해당 계층의 몇 번째 유닛인지를 나타낸다. 예를 들어 해당 유닛은 1계층의..

Binary classification 예를 들어 64x64x3 픽셀 값을 가진 사진을 고양이인지(1) 아닌지(0) 분류하는 모델을 만든다고 하자. 이 모델은 결과 값이 0 or 1 두가지로 나뉘기 때문에 "이진 분류(binary classification)"이라고 한다. 이때 input인 X에는 사진의 픽셀을 모두 펼친 값이 들어간다. (64*64*3,1). 이러한 shape을 가진 m개의 사진들이 모델의 훈련 예제 역할로서 X를 구성하게 되는데, 따라서 X의 shape은 (64*64*3, m)이 된다. 훈련을 위해서 각 훈련 예제들에 해당하는 label 값 Y도 필요한데, 한 예제 당 한 값씩 가지면 되므로 Y의 shape은 (1,m)이다. Logstic regression 로지스틱 회귀는 ..

지금까지 Mini-batch SGD(Stochastic Gradient Descent) 즉 데이터의 일부를 샘플링하여 순방향 전파로 loss 값을 구한 후 역전파로 경사를 계산하고, 이것을 이용하여 parameters을 update하는 방법을 사용해왔다. 이제 여기서 사용하는 nerual network를 훈련시키는 방법에 대해 알아볼 것이다. Overview 1. One time setup - activation functions (활성화 함수) - preprocessing (전처리) - weight initialization (가중치 초기화) - regularization (정규화) - gradient checking (경사 확인) 2. Training dynamics - babysitting the ..