목록인공지능 (45)
juuuding

✏️ 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 ..

지난 시간 Neural Networks에 대해 알아보았고 이제 Convolutional Neural Networks를 학습할 것이다. 작동 방식을 학습하기 앞서 Convoltional Neural Networks의 역사에 대해 알아보자. History [Perceptron(~1957)] Mark 1 Perceptron 기계는 퍼셉트론 알고리즘의 첫 실행. 이 기계는 20*20 photocells를 사용하는 카메라와 연결되어 있었고 400 pixel 이미지의 결과를 냈다. 픽셀 값은 1 또는 0으로만 표현이 되었고, 역전파에서 사용한 것과 비슷한 update rule이 사용되었지만 역전파의 원리를 적용하지는 않았다. 이것으로 알파벳을 인식할 수 있었다. [Adaline/Madaline(~1960)] lin..

최적화를 하기 위해 w가 변화함에 따라 Loss 값이 어떻게 바뀌는 지 알아야 한다. gradient descent로 parameter 값이 변할 때 loss가 얼마나 변하는지 알아낼 수 있는데, 여기서 우리는 "Backpropagation" 과정을 이용하여 빠르고 쉽게 gradient descent를 계산해낼 수 있다. Backpropagation [Computational graphs] Backpropagation 과정을 잘 표현하기 위해 "Computational graph"라는 계산 과정을 그래프로 나타낸 그림을 이용할 것이다. 각 노드는 계산 과정을 나타내고 노드들은 엣지로 이어서 표현한다. [Backpropagation] 다음은 역전파(Backpropagation)의 간단한 예시이다. 우선 식..

Optimization Optimization은 loss를 최소화하는 best W를 찾기 위한 과정이다. 한 사람이 산의 한 꼭대기에 올라왔다고 생각해보자. 이 사람은 산의 가장 낮은 골짜기 부분으로 가야한다. 여기서 내려갈 때 아무런 길로 가는 것이 아니라, 가장 빠르게 골짜기로 향할 수 있는 길을 선택해야한다. 이것이 optimization의 기본 아이디어이다. 산의 높이는 해당 지점의 w로 인해 발생한 loss의 값을 의미한다. 다음으로 optimization을 하는 방법에 대해 알아보자. ① Random search import numpy as np bestloss=float("inf") # bestloss 변수에 float 형식에서 가장 큰 값 넣기 for num in range(1000): W..