Backpropagation - Neural network를 학습시키기 위해 backpropagation 이라는 방법을 사용할 것인데, 다음과 같이 작동한다. Backpropagation procedure - feedforward 연산 수행 - 모델의 출력 결과와 바람직한 결과(desired output)를 비교 - 오류를 계산 - 오류를 각각의 weights로 분산시키기위해 feedforward 연산을 역방향으로 수행(backpropagation) - 이 결과값을 이용하여 weights를 업데이트하고 더 나은 모델을 얻는다. - 최선의 모델을 얻을 때 까지 위 과정을 반복. - feedforward부터 recap해보자. - 우리는 하나의 파랑 점(y = 1)을 input으로 집어넣을 경우 그 좌표를 X..
Feedforward - 입력을 출력으로 변환하는데 사용되는 process neural networks. - 우리는 지금까지 neural network가 뭔지 알아봤으니, 그걸 어떻게 학습(train) 시킬지에 대해 알아보자 - 학습은 우리가 가진 데이터를 모델링 하기위해서 edges에 어떤 인자(parameters)들을 가질 것인지를 의미한다. - 그렇기때문에 이를 알아보기위해선 input을 통해 output이 리턴되는 프로세스를 자세히 살펴봐야한다. - X1과 X2를 input으로, y =1 즉 파란점인 모델의 경우 - w1과 w2는 edges에 있는 weights이고, B는 note에 있는 bias이다. - w1의 값이 w2보다 더 크므로 굵은선으로 표시됨. - 빨강영역에 있는 점인데 해당 점은 파..
Neural Network Architecture - 앞서 배운 내용을 토대로 Neural Networks(또는 Multi-layer Perceptrons)를 구현해보도록 하자. - 먼저 두가지의 퍼셉트론을 어떻게 결합하는지에 대해 알아보도록 하자. Combining Regions - 비선형 모델을 그리기위해서는 간단하다. 약간의 트릭임 - 이와같이 두개의 선을 사용한 경계가 커브로 역할을 하는것과 같다. - 우리가 알다시피 선형 모델(일차방정식)은 전체 확률 공간이다. - 즉, 모든 점에 있어서 그 점이 파랑(또는 빨강)일 확률을 리턴할 수 있다는 것. - 동일한 한 점에 대해 파랑일 확률을 첫번째 선형모델로는 0.7이라는 확률을, 두번째 선형모델로는 0.8을 얻었다 가정하면 - 우리는 이 두개의 점을..
Non-linear Data - 현실에는 비선형 데이터들이 더 많다. - 즉, 직선으로 양분할 수 없는 수치를 가진 데이터들이 더 많이 존재한다는 의미. - 이런 곡선을 나타내어 분류함에 있어 딥러닝이 무한한 가능성을 지니고 있다 할 수 있음. Non-linear Models - 위와같은 데이터들을 분류하기에 직선으로만 영역을 이분하는것은 오류를 범할 가능성이 크다. - 따라서 우리는 곡선을 표현하는방법을 알아보게 될 것인데 - 여전히 Gradient Descent 알고리즘을 이용하여 영역을 나눠볼 것임 - 위와같이 영역을 나눠서 빨강일 가능성이 더 높은 영역과 파랑일 가능성이 더 높은 영역으로 - 곡선으로 경계를 나누는 방법에 대해 알아보도록 하자.
Perceptron vs Gradient Descent 공통점 - 잘못 분류된(misclassified) 점의 경우 경계에게 더 가까이 와야한다는 신호를 보냄(추상적으로 말해서) 차이점 · Perceptron Algorithm - 잘못 분류된(misclassified) x의 weight에 대해서만 변경 - y(label) = 1 또는 0 그리고 yHat(prediction) = 1 또는 0 - 따라서 옳게 분류된 경우 y - yHat = 0 - 옳게 분류된 경우 해당 점에대해 아무것도 수행하지 않음 · Gradient Descent Algorithm - 모든 weights를 바꾼다 (Wi += learningRate * (y - yHat) * Xi) - yHat의 값이 0부터 1사이의 값. - 옳게 분류..
Implementing Gradient Descent - Gradient descent 알고리즘을 직접 구현해보도록하자. - 여기 에서 repo를 클론해서 notebook상에서 gradient-descent 폴더 내의 GradientDescent.ipynb 오픈 Instructions - sigmoid : sigmoid 함수를 구현 - output_formula : prediction 값을 리턴하는 함수 구현 - error_formula : 해당 점에서의 error 값을 리턴하는 함수 구현 - update_weights : 매 gradient descent step별 새롭게 weights를 갱신하는 함수를 구현 - 위 함수들을 구현하고 train 함수를 실행하면 연속적인 gradient descent s..
Gradient Descent Algorithm - pseudo code를 작성해보도록 하자. - 랜덤한 weights에서 시작하여(W1, ..., Wn, b) 전체 확률 함수가 sig(Wx + b)로 주어진다. - 그리고 모든 점의 error를 계산하고, 앞서 해온것과 동일하게 - 점이 제대로 분류가 되어있으면 error 값은 작고, 점이 잘못 분류(misclassified)되어있으면 error 값은 크다. - 그 다음 좌표상의 모든 점(X1, ..., Xn)에 대해 learning rate를 고려하여 Weights를 업데이트 - Weights를 업데이트한다는말은 즉, W'과 b'을 구한다는 얘기이고 - 이는 이와같이 구할 수 있다. - 근데 우리는 이미 우측의 편미분값에 대해 앞서 yHat과 y의 관..
Gradient Descent - Gradient Descent를 그래프상에 표현해보면 위와같다. - 각 축은 weights와 error로 구성되어있고, 그 위에 면의 형태로 펼쳐져 있음. - inputs으로는 W1과 W2가, Error function은 E로 주어진다. - E의 gradient(경사도)는 W1과 W2에 대하여 편미분한 벡터값의 합에 의해 주어진다. - 이 그라디언트는 error function을 가장 높게 상승(∇E)시키고자 할 경우 움직여야 할 방향(direction)을 말해준다. - 즉 가장 가파른 기울기를 가진 방향(∇E)을 알려주게 된다는 의미. - 그러므로 우리가 그 그라디언트의 음수값(-∇E)을 얻게된다면, 이것이 error function을 가장 감소시키는 방향이 된다. -..
Logistic Regression - 머신러닝에서 가장 인기있고 유용한 알고리즘 중 하나. - Logistic Regression 즉, 논리 회귀 알고리즘이다. - 그리고 이것의 흐름도는 다음과 같다. - 데이터 수집 (Take your data) - 랜덤 모델 선택 (Pick a random model) - 에러 계산 (Calculate the error) - 에러 최소화 및 더 나은 모델 탐색 (Minimize the error, and obtain a better model) - Cross-Entropy : 일어나는 사건의 가능성을 측정한 것. - 좋은 네트워크는 낮은 엔트로피를 갖음. - 이말은 곧 발생한 사건과 알려진(known) 확률 사이에 상관관계가 있다는 의미이다. - Cross-Entr..
Cross-Entropy - Cross-Entropy : 일어나는 사건의 가능성을 측정한 것. - 좋은 네트워크는 낮은 엔트로피를 갖음. - 이말은 곧 발생한 사건과 알려진(known) 확률 사이에 상관관계가 있다는 의미이다. - Cross-Entropy는 error function을 계산할때 사용되며 이를 통해 각 네트워크(모델)를 비교하고 - 어떤것이 더 나은지 알 수 있다. 그러므로 더 나은 네트워크(모델)에 가까워 질 수 있다. - Error function은 해당 네트워크(모델)가 얼마나 잘 작동하는지 를 - 네트워크를 비교하고, 더 나은 네트워크에 가깝게 접근하기위해 수학적으로 계산을 한 것이다. - 이때 이 Error function은 기술적으로 cross-entropy를 사용하여 얻어낼 수..