Other Activation Functions - 이전에 gradient descent로는 해결이 안되었던 문제를 해결하려면 sigmoid function이 아닌 - 다른 activation function을 사용하여야한다. - 바로 "Hyperbolic Tangent" 이다. - sigmoid function과 유사한 그래프를 보이지만, 기울기가 다르다. - 이 작은 차이가 neural networks에 엄청난 영향을 미친다. - 또 다른 activation function으로는 Rectified Linear Unit(ReLU)가 있다. - 이건 매우 간단하다. - 만약 positive일 경우 동일한 값을 리턴, negative일 경우 0을 리턴한다. - 이 방법은 positive의 경우 미분했을때 ..
Dropout - 만약 우리가 운동을 하는데 자기가 더 많이 사용하는 손(오른손잡이 와 같이)으로만 운동을 한다면? - 한쪽 팔뚝만 굵어지는 일이 생기게 된다. - 한쪽 팔뚝만 키우려고 운동하는 사람은 없지 않은가? 따라서 성공한 운동이 되었다고 볼 수 없다. - 마찬가지로 네트워크를 학습하는 과정에서도 한쪽의 weight이 더 큰 경우 - 특정 방향으로 편향되어 네트워크가 진행되는 경향이 생길 수 있다. - 따라서 이와같은 경우를 방지하고자, 특정 unit을 끄고(turn off) 나머지 네트워크 학습을 진행하곤 한다. - 이를 구현하는 방법으로는 각 노드들이 연산에서 (순방향 및 역방향 모두) 제외될 확률을 주는 알고리즘을 통해 - 랜덤하게 특정 노드들을 연산에서 제외시킨다. - 위의 경우 0.2로 ..
Early Stopping - 위의 모델들의 epoch에 따른 training set과 testing set의 모델변화 추이를 봐보자. - 우측으로 갈 수록 training set에 대해 정확하다 못해 너무 지엽적이게 된다. - 우리는 적절한 일반화가 잘 된 모델을 찾는것이 목표이기 때문에 - 맨 우측 모델은 너무 세부적이라 일반화에 실패한 모델이 되어버린다. - 이는 testing set을 적용시켜봤을때 하나도 들어맞는것이 없게 되며 - 마치 training set을 단순 암기 한 모델정도 뿐이다. - 따라서 우리의 목표는 Training Error도 적고, Testing Error도 적은 지점을 찾는것이다. - 모델 복잡도 그래프를 봐보면 특징이 있다. - Testing error의 경우 기울기가 급..
Training Optimization - deep neural network를 구현하는 방법과, 우리의 데이터에 가장 fit하게 들어맞게 학습하는 방법에 대해 알아본다. - 여러 조건에 의해 예를들면, 데이터의 분포가 too noisy한다던지, 나쁜 모델을 선택했다던지 등의 변수에 의해 - 최초에 의도한대로 설계한 네트워크가 한번에 구현되는것은 매우 어려운 일이다. - 따라서 최적의 모델을 찾아가는 과정에 대해 알아보자. Testing - 좌, 우 모델중 우리가 이상적으로 생각하는 모델은 우측이다. - 그러나 이번엔 조금 다른 개념을 도입하여 모델을 분류해보려한다. - 데이터를 Training point와 Testing point로 나눠서 모델을 평가하려한다. - Training set을 바탕으로 모델..
Implementing backpropagation - 위는 output layer의 error term을 구하는 방법이다. - 또한 위는 hidden layer의 error term을 구하는 방법이다. - 지금부터 하나의 hidden layer와 하나의 output unit을 가진 네트워크에 대해 예를 들어보자. backpropagation을 통한 weight들을 업데이트하는 알고리즘 · 각 layer에 대한 weight step들을 0으로 설정 - input → hidden weights = 0 - hidden → output weights = 0 · 각 training data들에 대해 - 네트워크를 통해 순서대로 yHat을 구함 - 그리고나서, output unit에서 error gradient를..
Backpropagation - multiple layers와 gradient descent를 이용한 네트워크 학습에대해 더 알아보자. - 우리가 만든 네트워크를 이용하여 최초의 시도로 output을 뽑아낸 뒤, - 얼만큼 이 값이 잘못된지를 반영하여 weights를 다시 설정하여야 하지 않겠는가? - 따라서 input → hidden → output 으로 이어지는 네트워크 flow에서 - weights를 다시 바로잡기위해 역행하며 정보를 전달하는 과정을 Backpropagation이라 함. - gradient descent를 사용하여 hidden layer의 weights를 업데이트하려면 - 각 hidden unit이 최종 output에 얼마나 많은 오차를 남겼는지를 알아야한다. - 각 layer의 o..
Implementing the hidden layer - 이전에 XOR 퍼셉트론을 사용해서 추가적으로 units의 layer를 추가하면 - 우리의 네트워크 모델이 선형적으로 해결할 수 없는 문제점에 대한 해결이 가능했다. - 위 사진에서 보듯, multi-layer 퍼셉트론의 개념은 - Input unit → Hidden unit → Output unit 으로 이어지는 구조를 가지고있다. - hidden layer에 대한 activation이 output layer의 input으로 사용된다. - 이와같은 구조로 이어지게 된다. - 이 hidden layer의 수가 많을수록 정교한 네트워크를 형성하게되고 - 이 개념이 딥러닝의 핵심이 된다. Implementing the hidden layer - 신경망 ..
Implementing Gradient Descent - weights를 업데이트 하는 알고리즘은 위와같다. - 단일 weight에 대한 업데이트 알고리즘인데, 이를 네트워크가 학습하여 - 다중 weights에 대한 업데이트를 진행할 수 있도록 하려면 어떻게해야할까? - 전에 진행했던 데이터를 기반으로 대학에 입할 할 수 있는지 없는지를 예측하는 프로그램을 만들어보자. - 단일 output layer와 단일 unit을 가진 프로그램을 먼저 만들어보도록 하자. - sigmoid function을 output unit activation으로 사용할 것임. - 세개의 input unit이 있다고 생각할 수 있지만(GRE score, GPA, Rank) - 먼저 데이터를 사용가능하도록 변형을 해줘야한다. - r..
Mean Squared Error Function - 이전에 다뤄본 내용은 Log-Loss 에 관한 오류 최소화 방법이었다. - 신경망 네트워크에는 오류를 최소화하기 위한 여러 방법들이 존재하는데, - 이번에 다뤄볼 내용은 Mean squared error function이다. - 이는 prediction 과 label의 차 에 대한 제곱의 평균을 의미함. Gradient Descent with Squared Errors - 우리가 만들어 나갈 neural network에 들어갈 weights를 찾는법에 대해 고민해보자. - weights의 최종 목표는 prediction이 실제 값에 최대한 근사하도록 만드는것이다. - 이 오차율을 측정하기위해 error 값을 두고, 얻어낸 prediction이 얼마나 ..