본문 바로가기

728x90

ML

(12)
DeepLearning 2-2-1 1. Mini-batch - vectorization으로 for loop 없이 더 빠르고 효율적인 계산이 가능했다 - 그럼에도 불구하고 만약 데이터가 매우 커진다면 한번 gradient descent하는데 whole training set에 대해 학습을 해야 하기 때문에 시간이 많이 걸릴 것이다. - 따라서 매우 큰 training set을 전부다 학습하기 전에 그 과정에서 의미있는 gradient descent를 수행하기 위한 방법으로 minibatch가 있다. - giant training set을 baby training set들로 나눠서 차례로 학습하고 gradient descent를 수행해 나가는 것이다. - 전체 training set을 mini batch로 나누어서 tain을 진행하다가 전체..
DeepLearning 2-1-2 training 속도를 빠르게 할 수 있는 테크닉들을 알아보자. x input 벡터들의 평균이 0이 되도록 원점으로 training set을 이동시킨다. feature x1 이 feature x2보다 더 넓은 편차를 갖기 때문에 이를 조정해준다 (normalization) (training, test set모두 동일한 뮤와 시그마로 normalization을 거쳐야 한다.) normalization을 거치지 않은 데이터와 거친 데이터에 대해 gradient descent과정을 살펴보면 다음과 같다. 더 빠르게 최적화가 진행될 수 있다. unit이 두개인 layer가 9개 있는 model을 생각해보자. 만약 w[l]의 모습이 [[1.5, 0], [0 ,1.5]]라면 y는 엄청나게 explode하게 된다. ..
DeepLearning 2-1-1 처음부터 목적에 알맞은 layer 수, hidden units의 수 learning rate등의 hyperparameter 값들을 설정할 수는 없다. 여러번의 실험과 검증을 반복하면서 최고의 성능을 낼 수 있는 조건들을 찾아 설계가 진행된다. 데이터를 train/dev/test set으로 분리해서 각 목적에 맞게 사용한다. 데이터를 나누는 비율을 data가 충분히 크다면 98/1/1 의 비율도 적절하다. train set으로 학습을 하고나면 test set으로 bias가 없는지 variance는 어떤지 검증을 하게 된다. 순서대로 underfitting, 적당한 fitting, overfitting이 된다. train set error 가 1% dev set error가 11% 라면 overfitting..
Deep Learning 1-4-2 - 하나의 layer만 떼서 forward, backward propagation을 구현을 해보자. - 우측으로 layer들을 거치면서 y^을 구한다. - 이제 cost를 가지고 왼쪽으로 layer들을 거치면서 각 weight, bias를 갱신한다. - 각 layer들의 계산 결과인 z, w, b를 cache에 저장해두면 나중에 backward propagation할때 유리하다. - deep neural network에서 backward propagation을 살펴보자. - 모든 과정을 정리하면 위와 같다. - w,b말고도 다른 parameter들이 필요하다. 이를 hyper parameter라고 한다. - learning rate alpha. activation function, #hidden laye..
Deep Learning 1-4-1 - 이제까지는 logistic regression, 1, 2 hidden layers만 살펴보았다. 이제부터는 더 deep한 hiden layers를 살펴보자 - deep neural network를 표현하는 notation을 살펴본다 - n[l] : l layer의 unit의 수 - a[l] : l layer에서 activation = g[l](z[l]) - deep neural network에서 forward propagation을 살펴보자. - 여기서 for loop는 layer수 만큼 발생한다. - 연산과정에서 matrix의 크기들이 맞는지 살펴보자. - w[l], dw[l] : (n[l], n[l-1]) - b[l], db[l] : (n[l], 1) - face regonition을 예로 들어 ..
Deep Learning 1-3-2 - 우리는 그동안 activation function으로 sigmoid 함수를 사용했었다. sgmoid 보다 더 나은 선택지들을 알아보자. - tanh function이 sigmoid보다는 더 좋은 성능을 보이지만 마지막 output layer에 대해서는 sigmoid를 사용한다. 왜냐하면 binary classification의 결과는 0 또는 1 이어야 하기 때문이다. - tan는 z가 커지거나 작아질때 기울기가 0에 가까워진다는 단점이 있다. - 그래서 다른 선택지로 ReLU가 있다. 가장 많이 쓰이는 activation function이다. - 그렇다면 왜 neural network는 non-linear activation function을 사용해야 할까? - 실제로 sigmoid(z)를 그냥 z..
Deep Learning 1-3-1 - Neural Network는 이전 시간에서 배운 neuron(logistic regression unit)들을 쌓은 것이다. - neuron에서 y^, 즉 a를 구하고 Loss를 계산했다. - 그림에서의 neural network는 layer[1]에서 결과들을 가지고 layer[2]에서 한번더 계산해서 y^을 구한다. - Loss를 가지고 backward하면서 gradient를 구한다. - x1,x2,x3들이 input features이다. 이 layer를 input layer라고 부른다. - hidden layer : 학습도중에 값들이 관찰되지 않기 때문에 hidden이라고 부른다. - 결과값을 반환하는 layer를 output layer라고 한다. - 위 그림은 2 layer Neural Netw..
Deep Learning 1-2-2 강의를 듣고 정리한 내용입니다. vectorization으로 코드상의 for loop를 줄이고 big dataset에 대해 더 효율적인(빠른) 계산이 가능하도록 한다. vectorization으로 for loop로 적은 코드를 더 효율적으로 만들 수 있다. forward propagation 과정을 vectorization으로 표현해 보자. backward propagation 과정을 vectorization으로 표현해 보자. broadcasting으로 python code를 더 빠르게 할 수 있다. for loop 없이 matrix 연산을 더 빠르게 구할 수 있다. 3 by 4인 A를 1 by 4인 cal로 나누는 것은 broadcasting으로 구현한 코드이다. broadcast의 다른 예를 보여준다..

728x90