목록인공지능 (41)
juuuding
이번 주제에서는 컴퓨터 비전의 "이미지 분류, 객체 감지, 신경 스타일 전이" 등의 문제를 해결해나갈 것이다. 컴퓨터 비전의 가장 큰 걸림돌은 입력의 크기가 아주 크다는 것이다. 예를 들어 64크기의 컬러 이미지가 입력으로 들어온다고 하면 64*64*3의 크기가 입력으로 들어온다. 이러한 걸림돌을 가진 문제들을 해결하기 위해서는 컨볼루션 연산을 잘 구현해야한다. Edge detection example 예시로 이미지에서 수직 엣지를 감지하는 것에 대한 컨볼루션 연산을 해보겠다. 여기서는 6x6 grayscale 이미지에 3x3 필터로 연산을 하여 4x4 행렬을 생성된다. 입력 이미지를 보면 왼쪽에 수직 경계선이 있는데, 이 수직 경계선을 찾아내기 위해 수직 경계를 가진 필터를 적용하였다. 그 결..
Hyperparameter tuning Tuning Process 하이퍼파라미터는 중요도에 따라서 튜닝을 진행해주어야 한다. 아래는 하이퍼파라미터 별 중요도 순으로 나열한 목록이다. ① learning rate② momentum(0.9), #hidden units, mini-batch size③ #layers, learning rate decay④ Adam: beta1(0.9), beta2(0.999), epsilon(10^-8) 이제 이 하이퍼파라미터들을 선택하는 방법에 대해 알아보자. 하이퍼파라미터를 탐색하는 방법에는 그리드, 랜덤 탐색이 있다. 결론적으로 랜덤 탐색을 사용하는 것이 좋은데, 그 이유는 여러 하이퍼파라미터 중 어떤 것이 중요한지 모르기 때문이다. 참고로 하이퍼파라미터 수가 적을..
cs231n 전체 내용 정리 필기본
Mini-batch gradient descent mini-batch란 총 m개의 훈련 예제가 있다고 가정했을 때 일정한 크기(n)로 훈련 예제를 나누어서 여러 개의 부분으로 나누어 놓은 것을 의미한다. 예를 들어 100000개의 훈련 예제가 있다고 가정했을 때 미니 배치의 크기를 1000으로 설정하면 100개의 서로 다른 미니 배치가 생긴다. 이러한 미니 배치를 가지고 경사 하강을 하는 것을 "mini-batch gradient descent"라고 한다. 반대로 batch gradient descent가 있는데 이것은 모든 훈련 예제를 가지고 동시에 경사 하강을 진행하는 방식이다. 즉 이제까지 하던 경사하강 방식이다. mini-batch gradient descent는 각 배치를 벡터화시켜 경사 하..
✏️ 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 로지스틱 회귀는 ..