A Step by Step Backpropagation Example

Delta rule – Wikipedia

설명 동영상

https://youtu.be/UJwK6jAStmg

미분 연쇄법칙 설명 동영상

https://youtu.be/sPzy-K0Hyr4?t=40

계산 과정을 보여주는 동영상

https://youtu.be/0e0z28wAWfg

계산 과정을 하나씩 보여주는 문서자료

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

delta rule ( andrew ng class에서 나오는 공식 ) 유도과정을 보여준다.

https://en.wikipedia.org/wiki/Delta_rule

https://www.coursera.org/learn/machine-learning/lecture/na28E/cost-function

Neural networks Cost Function

image

L은 신경망 내의 총 layer 수

s subscript 는 해당 layer의 유닛 갯수

s L subscript는 L이 신경망내 총 layer수이므로 마지막 layer의 인덱스의 숫자와 같다.

R superscript는 superscript수 크기만큼의 vector이다. 그러므로 R K superscript는 K 크기만큼의 vector라는이야기이다. 우측 하단의경우 K 크기의 vector가 마지막 결과로 나오게 되고 이때 unit의 갯수는 K가 된다. 경우에 따라서는 3개는 지정된 그룹으로 보고 구분하게 되면 자동적으로 나머지도 하나의 그룹이 되므로 3개만 구분해도 된다. 

image

우측상단에 j는 1부터 시작된다는 것에 유념한다. 쎄타 0는 biased parameter이므로 regularization 작업에서 제외된다.

https://www.coursera.org/learn/machine-learning/supplement/afqGa/cost-function

Neural networks Cost Function

image
image


https://www.coursera.org/learn/machine-learning/lecture/1z9WW/backpropagation-algorithm

Neural networks  Backpropagation Algorithm

image

neural network에서 손실함수는 위와 같다. 이때 이를 각각 unit의 쎄타값으로 편미분하게 되면 각각에 해당하는 최소점을 찾을수 있고 이를 통해 손실을 줄여가는 과정을 만들수 있다.

gradient descent를 하기 이전에 이해를 위해 아래 용어를 이해한다.

image
image

소문자 델타는 각 unit에의해 만들어진 손실크기를 말한다. 

위 그림 하단의 소문자 델타 구하는 공식을 delta rule을 이용한 것이고 유도 과정은 https://en.wikipedia.org/wiki/Delta_rule 과 같다.

image

삼각형 델타는 한 unit에서의 조정 쎄타값이다. 실제로 적용될 값은 하단의 D값이 된다. 

유도과정은  https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/ 를 참조 한다. 중간 지점에 delta rule을 참조 한다.

deltal rule 유도 과정 참조 https://en.wikipedia.org/wiki/Delta_rule

https://www.coursera.org/learn/machine-learning/supplement/pjdBA/backpropagation-algorithm

neural network Backpropagation Algorithm

image
image
image

참고 사항

https://youtu.be/sPzy-K0Hyr4?t=40

https://mattmazur.com/2015/03/17/a-step-by-step-backpropagation-example/

https://en.wikipedia.org/wiki/Delta_rule


https://www.coursera.org/learn/machine-learning/lecture/du981/backpropagation-intuition

neural network Backpropagation Intuition

image

소문자 델타는 다음 단계 레이어들의 소문자 델타들에 각각의 쎄타를 곱한 합과 같다. 위의 그림 우측 상단 참조


https://www.coursera.org/learn/machine-learning/lecture/60Uxp/implementation-note-unrolling-parameters

neural network Implementation Note: Unrolling Parameters

https://www.coursera.org/learn/machine-learning/supplement/v88ik/implementation-note-unrolling-parameters

neural network Implementation Note: Unrolling Parameters

image
image

여러개의 matrix를 하나로 합쳤다가 필요시에 다시 나누는 방법을 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/Y3s6r/gradient-checking

neural network Gradient Checking

backpropagation을 통해 구현된 손실최소화 과정이 제대로 작동하는지 확인하는 작업 중의 하나가 gradient checking이다. backpropagation를 제대로 구현했다고 해도 때때로 bug가 생길수 있으므로 하는 확인 작업이다. 

image

위 그림은 gradient checking의 기본 원리를 보여준다. 그림 하단은 실제 octave 코드로 구현한 모습.

image

backpropagation 값과 gradient checking 과정을 통해 나온 값이 비슷해야 한다.

image

octave로 구현한 모습이다. DVec는 backpropagation 를 통해 구해진 값이다. gradApprox를 gradient checking를 통해 구해진 값이다.

image

gradient checking 는 비용이 많이 드는 작업이므로 backpropagation이 정확한지 유무만 확인하고 정지 한다는 내용이다. 

https://www.coursera.org/learn/machine-learning/supplement/fqeMw/gradient-checking

neural network Gradient Checking

image
image


https://www.coursera.org/learn/machine-learning/lecture/ND5G5/random-initialization

neural network Random Initialization

image

위 그림은neural network에서 각각의 쎄타값을 모두 0으로 설정하고 시작한다 모든 쎄타값이 계속 같은 값으로 변화해가는 것을 보여준다. 그러므로 랜덤값으로 초기화해 주고 작업을 수행해야 한다. 아래 그림은 랜덤 값을 구하는 과정을 보여준다.

image

rand(10, 11)은 0부터 1까지의 랜덤값을 가지는 10*11크기의 matrix를 만들어준다. 

위에서 엡실론은 쎄타값은 범위이며 이 범위안의 값만이 matrix에 들어가게 된다. 

https://www.coursera.org/learn/machine-learning/supplement/KMzY7/random-initialization

neural network Random Initialization


https://www.coursera.org/learn/machine-learning/lecture/Wh6s3/putting-it-together

neural network Putting It Together

neural network의 내용을 처음 부터 끝까지 총정리 한 내용이다.

network 구조를 결정하는 단계를 보여준다. 마지막 최종 결과는 각 클래스의 가능성을 수치로 보여주게 된다. 예를 들어 최종결과가 5라면 벡터의 5번째 수치가 가장 높게 나오게 된다. 그림 우측 하단참조.

보통은 각 hidden layer내의 unit갯수를 맞춘다.

https://www.coursera.org/learn/machine-learning/lecture/gFpiW/multiclass-classificationhttps://www.coursera.org/learn/machine-learning/lecture/OAOhO/non-linear-hypotheses

Non-linear Hypotheses

https://www.coursera.org/learn/machine-learning/lecture/ka3jK/model-representation-i

neural networks Model Representation I

image
image

3층구조로 되어있다. 첫번째는 input layer, 두번째는 hidden layer, 마지막은 output layer가 된다. 

image

우측 상단 내용은 superscript는 몇번째 layer인지를 알려준다. subscript는 몇번째 unit인지 알려준다는 이야기이다.

그림 하단의 내용은 현layer의 unit 수 * (전단계unit수+1) 의 dimension의 matrix가 된다는 이야기이다. 

https://www.coursera.org/learn/machine-learning/supplement/Bln5m/model-representation-i

Model Representation I

image
image


https://www.coursera.org/learn/machine-learning/lecture/Hw3VK/model-representation-ii

neural networks  Model Representation II

image

위의 그림은 복잡한 수식을 좀 정리해서 보여준다.

a의 경우는 g(z()) 이라고 축약해서 보여준다. 즉 features x값과 쎄타값을 곱한 결과를 g()에 넣어 계산해서 나온 결과를 a 2라고 한다. 다시 이 a 2를 쎄타2와 곱한다. 곱해서 얻을 결과를 g()에 넣어 나온결과를 a 3라고 한다.  위의 그림에서 a 3는 최종결과이며 h쎄타() 이다. 

image

neural networks 에서 마지막 부분만을 잘라서 본다면 이는 logistic regression 과 동일하다, 위의 그림 참조

image

여러겹의 hidden layer가 추가된 예시를 보여준다.

https://www.coursera.org/learn/machine-learning/supplement/YlEVx/model-representation-ii

neural networks Model Representation II

image
image


https://www.coursera.org/learn/machine-learning/lecture/rBZmG/examples-and-intuitions-i

neural networks Examples and Intuitions I

인공신경망으로 xor 논리 연산을 구현 하는 방법

image
image

g() 는 sigmoid funciton이고 공식은 아래와 같다

image

e -4 거듭 제곱의 값은 0.01832 이고 1/1+0.01832 은 0.99 이다. 결론적으로 z 가 4인 경우 0.99 가 된다는 의미이다. 위위그림의 4.0를 기준점으로 정한이유.

or 논리연산을 인공신경망으로 구현한 예시는 아래와 같다.

image

https://www.coursera.org/learn/machine-learning/supplement/kivO9/examples-and-intuitions-i

neural networks Examples and Intuitions I

image


https://www.coursera.org/learn/machine-learning/lecture/solUx/examples-and-intuitions-ii

neural networks Examples and Intuitions II

image

위 그림은 이미 공부한 두개의 unit을 하나로 합쳐서 좀더 복잡한 논리 연산을 구현한 것을 보여준다. 

https://www.coursera.org/learn/machine-learning/supplement/5iqtV/examples-and-intuitions-ii

neural networks  Examples and Intuitions II

image


https://www.coursera.org/learn/machine-learning/lecture/gFpiW/multiclass-classification

Multiclass Classification

https://www.coursera.org/learn/machine-learning/supplement/xSUml/multiclass-classification

Multiclass Classification

image
image

https://www.coursera.org/learn/machine-learning/supplement/1tJlY/cost-functionclassification and representation

https://www.coursera.org/learn/machine-learning/lecture/RJXfB/hypothesis-representation

이 강의에서 이야기하는 logistic regression은 2개의 영역으로 구분되는 logistic regresstion을 이야기한다는 것을 전제한다. 여러가지의 영역으로 구분될수 있지만 여기서는 간단하게 2개만 생각한다. 최종적으로 나오는 logistic regression 을 h theta(x) 라고 했을때 이는 0과 1사이의 값을 갖는다. (아래 그림의 우측참조) 이렇게 0과 1사이의 값을 가지게 하는 함수는 g(x) 이며 그 공식은 아래그림 좌측과 같다. 세타 transepose matrix에 x features matrix를 곱한 결과는 아래 그래프에서 z라고 하며 이 z값의 0을 기준으로 값이 0.5 이상 이하가 된다. 즉 이 이야기는 이를 기준점으로 probability가 0.5 이상 이하가 된다는 것이다. 세타 transepose matrix에 x features matrix를 곱한 결과 즉 z 값이 0 이상이냐 아니냐에 따라 어느 영역에 속하는지 결정된다고 정할수 있다. 어떤 데이터가 주어졌을때 두 그룹으로 나눌수 있는 경계선 (decision boundary) 함수를 찾고 여기에 데이터를 넣었을때 나오는 값이 0보다 큰지 작은지에 따라 어느 영역에 속하게 되는지 결정된다고 할수 있다. 우리는 이 경계선이 되는 함수를 찾아 내는것이 목적이다.  

logistic regression에서도 각 feature간의 범위 간격 차가 너무 큰경우 feature scaling 작업을 해준다

image

여러개의 항목들로 구분되는 classification 도 있겠지만 이 강의에서는 yes, no로 구분되는 단 두가지의 항목으로 구분되는 classification을 다룬다. 위의 그래프를 보면 1, 0 단 두가지의 경우를 다룬다. 

image

위의 예시의 경우 1, 0 두가지 항목으로 구분되는 경우이며 각각의 probability를 더하면 1이 된다는 점에 유의한다. 우측하단 참조


https://www.coursera.org/learn/machine-learning/lecture/WuL1H/decision-boundary

Decision Boundary

image
image

위의 그림에서 그래프는 x1 , x2와의 관계그래프라는 점에 유의한다. 우리의 최종목적은 경계 함수 즉 decision boundary 함수를 찾아 내는 것이다. 그리고 이를 찾아내면 그 함수를 기준으로 데이터가 어느 영역에 속하는 알수 있기도 하며 이를 통해 새로운 데이터가 어느 영역에 속하게 되는지 예측 할수도 있다. 


https://www.coursera.org/learn/machine-learning/lecture/1XG8G/cost-function

Cost Function

logistic regression에서는 기존의 cost function을 사용할수 없다. 

image

 linear regression에서 사용한 cost function을 사용할수 없다. 예상값을 구하는 함수 h 쎄타(x) 에서 복작한 계산을 하기 때문에 (위그림 중간 참조) 예상값과 계수 벡터의 관계함수가 좌측 하단의 그림처럼 여러개의 local minimum구간을 가지기 때문이다. 그래서 다른 수식을 사용한다. 

image
image

y=1일때 y=0 일때의 각각의 cost function (이 함수는 단 하나 데이터 예측값과 실제값을 이용해서 손실을 계산하는 함수이다)이 필요한것에 유의한다. 

https://www.coursera.org/learn/machine-learning/supplement/bgEt4/cost-function

Cost Function

image
image


https://www.coursera.org/learn/machine-learning/lecture/MtEaZ/simplified-cost-function-and-gradient-descent

Simplified Cost Function and Gradient Descent

image

바로전 강의에 따르면 logistic regression은 y=1 y=0일때 각각 다른 cost function (이 함수는 단 하나 데이터 예측값과 실제값을 이용해서 손실을 계산하는 함수이다)을 이용하게 되는데 이를 하나의 함수로 정리하는 과정을 위에서 설명하고 있다.

image

하나로 정리된 함수(이 함수는 단 하나 데이터 예측값과 실제값을 이용해서 손실을 계산하는 함수이다) 와 이를 시그마를 이용 여러데이터에 대한 손실값을 구하는 J()를 보여주고 있다.


참고자료 : udemy tensorflow with python 

05 introduction to neural network

위의 cost function을 cross entropy라고 부르기도 한다.

image

logistic regression에서도 손실을 최소화하는 방법으로 gradient descent 방법을 이용한다.

https://www.coursera.org/learn/machine-learning/supplement/0hpMl/simplified-cost-function-and-gradient-descent

Simplified Cost Function and Gradient Descent

image
image


https://www.coursera.org/learn/machine-learning/lecture/licwf/advanced-optimization

Advanced Optimization

image

gradient descent가 아닌 다른 방법으로 cost ( loss ) 를 줄일수 있으며 그 예로 그림의 좌측하단을 참조할수 있다. 또 이런 방법은 각 프로그래밍 언어의 라이브러리에서 찾아 사용할수도 있다. 이 강의에서는 octave 언어를 이용한 예시를 들고 있다. ( octave 습득후 나중에 확인 요망 )

언어를 떠나 일반적인 기본 형식은 아래와 같다고 할수 있다. 

image

https://www.coursera.org/learn/machine-learning/supplement/cmjIc/advanced-optimization

Advanced Optimization

image


https://www.coursera.org/learn/machine-learning/lecture/68Pol/multiclass-classification-one-vs-all

Multiclass Classification: One-vs-all

여러개의 항목으로 구분 짓는 방법이다.

각 항목을 구분해내는 과정이 필요하다. 즉 n 항목인 경우 n 개의 과정이 필요하다.

image
image

각 항목에 해당하는 과정을 다 거치고 각 항목별의 probability 값을 얻은후 가장 높은 값을 얻은 항목으로 구분된다.

https://www.coursera.org/learn/machine-learning/supplement/HuE6M/multiclass-classification-one-vs-all

Multiclass Classification: One-vs-all

image


https://www.coursera.org/learn/machine-learning/supplement/VTe37/the-problem-of-overfitting

The Problem of Overfitting

image


https://www.coursera.org/learn/machine-learning/lecture/B1MnL/cost-function

Cost Function ( overfitting 된 경우 cost function J(쎄타)를 조정 )

image

overfitting 된 경우 (우측상단그림 참조) hypothesis 그래프가 어느정도 일관성있게 (좌측상단 그림) 조정해야 하는데 이때 cost function 공식을 상단그림 밑부분처럼 수정을 해준다. 

image

overfitting을 조정하는 방법으로는 위와 같은 방법이 있다. 

regulaization parameter가 너무 크면 그래프는 상수함수 그래프처럼 평평해진다. 아래그림 참조

image

https://www.coursera.org/learn/machine-learning/supplement/1tJlY/cost-function

Cost Function

image


https://www.coursera.org/learn/machine-learning/lecture/QrMXd/regularized-linear-regression

Regularized Linear Regression

image

overfitting을 보완하는 작업이다.

image

위의 공식을 다시 정리하면 아래와 같다

image
image

regularizatioin을 normal equation에 적용하면 위와 같이 된다.

https://www.coursera.org/learn/machine-learning/lecture/QrMXd/regularized-linear-regression

Regularized Linear Regression

image


https://www.coursera.org/learn/machine-learning/lecture/4BHEy/regularized-logistic-regression

Regularized Logistic Regression 의 regularization 작업

logistic regression 에서의 cost function은 아래와 같다.

image

linear regression을 regularization할때와 비슷한게 조정한다면 아래와 같이 된다

image
image

로그에 대하여 참조 자료

로그의 기본 https://youtu.be/9xneD86OfPk

로그의 성질 https://youtu.be/wWJepvwnDRo

로그의 밑변환 공식밑 추가 성질 https://youtu.be/AOBl11we2sQ

상용로그 https://youtu.be/Xf0KGTsXsnE

로그함수의 그래프 https://youtu.be/I_H04p9HHcI

image
image
image
image
image
image
image
image
image
image
image
image
image

https://www.coursera.org/learn/machine-learning/lecture/6Nj1q/multiple-features

image

세타에 superscript t 를 붙인것은 세타 벡터의 transpose vector 를 의미한다. 그 뒤에 x는 두 matrix를 multiplication한다는 의미이다.

https://www.coursera.org/learn/machine-learning/supplement/WKgbA/multiple-features

Multiple Features

image


https://www.coursera.org/learn/machine-learning/lecture/Z9DKX/gradient-descent-for-multiple-variables

image
image

https://www.coursera.org/learn/machine-learning/supplement/aEN5G/gradient-descent-for-multiple-variables

Gradient Descent For Multiple Variables

image


https://www.coursera.org/learn/machine-learning/lecture/xx3Da/gradient-descent-in-practice-i-feature-scaling

image

두 features의 범위차이가 너무 크면 효율성이 떨어진다. 두 features 를 비슷하게 맞춰주는 것이 좋다. 

image

-1 에서 1 사이의 범위를 추천하지만 실제는 -3 에서 3 정도면 괜찮다고 봐야한다. (너무 크거나 작으면 안된다)

image

분모 s는 training set에서 최대값에서 최소값을 뺀값이다. 분모에 있는 u는 training set에서의 평균값이다.

https://www.coursera.org/learn/machine-learning/supplement/CTA0D/gradient-descent-in-practice-i-feature-scaling

image


https://www.coursera.org/learn/machine-learning/lecture/3iawu/gradient-descent-in-practice-ii-learning-rate

image

cost function value는 매번 iteration할때마다 줄어야 한다. 증가한다면 뭔가 잘못된거고 보통 이런경우 learning rate을 낮춰서 설정해 준다.

image
image

10단위로 설정해 보고 중간에 0.3 , 0.03 이런 식으로 가장 적절한 learning rate을 찾아 간다.

https://www.coursera.org/learn/machine-learning/supplement/TnHvV/gradient-descent-in-practice-ii-learning-rate

Gradient Descent in Practice II – Learning Rate

image
image


https://www.coursera.org/learn/machine-learning/lecture/Rqgfz/features-and-polynomial-regression

image

상황에따라서는 다른 공식을 사용해야 하는 경우가 생긴다. 위의 경우는 

image

와 같이 이차방정식를 이용할수 도 있고 근방정식을 이용할수도 있다.  상황에 따라 

Polynomial Regression를 이용할수 있다.

https://www.coursera.org/learn/machine-learning/supplement/ITznZ/features-and-polynomial-regression

Features and Polynomial Regression

We can improve our features and the form of our hypothesis function in a couple different ways.

Polynomial Regression

Our hypothesis function need not be linear (a straight line) if that does not fit the data well.

We can change the behavior or curve of our hypothesis function by making it a quadratic, cubic or square root function (or any other form).

One important thing to keep in mind is, if you choose your features this way then feature scaling becomes very important.


https://www.coursera.org/learn/machine-learning/lecture/2DKxQ/normal-equation

Normal Equation

image

위 그림은 training set을 normal equation을 이용해서 loss를 최소화하는 경우 data를 어떻게 matrix, vector로 바꾸는지 보여준다. 그림하단에는 normal equation이 있다. 이 공식을 이용하는데는 matrix inverse가 필요하다. 이 개념을 이해하기 위해서는 아래 참조 링크를 확인한다.

참고사항) matrix inverses 에 대한 설명

I 를 identity matrix라고 했을때

어떤 matrix에 곱해져서 identity matrix를 만들수 있는 matrix를 matrix inverse라고 한다.

https://www.khanacademy.org/math/precalculus/precalc-matrices/intro-to-matrix-inverses/v/inverse-matrix-part-1

image

matrix inverse를 수행하는 octave함수는 pinv()이다. 우측 하단은 normal equation은  feature scaling이 필요치 않다는 내용이다.

image

우측하단은 feature의 수가 10000이상일때 gradient descent를 이용하라고 추천한다. 그러나 이는 컴퓨터 성능에 따라 달라질수 있다.

normal equation을 사용할수 없을 때도 있다. classification algorithm, logical regression 에 사용할수 없다. 이와는 다르게 gradient descent는 거의 모든 곳에 사용가능하다.

https://www.coursera.org/learn/machine-learning/supplement/bjjZW/normal-equation

image

https://www.coursera.org/learn/machine-learning/lecture/zSiE6/normal-equation-noninvertibility

Normal Equation Noninvertibility


image

normal equation을 사용하는 중에 inverse가 불가능한 경우가 있다.

이런때 octave를 사용하는 작업이라면 pinv를 사용하면 문제가 없다.

image

inverse가 불가능하게 만드는 대부분의 이유와 해결책은 위와 같다. 

https://www.coursera.org/learn/machine-learning/supplement/66bi5/normal-equation-noninvertibility

Normal Equation Noninvertibility

image


octave programming language기본 사용법 설명

https://www.coursera.org/learn/machine-learning/lecture/9fHfl/basic-operations

https://www.coursera.org/learn/machine-learning/lecture/SZJIc/moving-data-around

https://www.coursera.org/learn/machine-learning/lecture/Y6uuC/computing-on-data

그래프 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/I7gx3/plotting-data

제어구문 사용 방법 https://www.coursera.org/learn/machine-learning/lecture/LRQnl/control-statements-for-while-if-statement

https://www.coursera.org/learn/machine-learning/lecture/WnQWH/vectorization

Vectorization

machine learning에서는 matrix와 vector사용이 성능에 중요한 부분을 차지 한다. 반복루프로 같은 기능을 구현할수는 있으나 성능에 문제가 생긴다. 그러므로 각 프로그래밍 언어에서 제공하는 matrix, vector library를 이용하는것을 추천한다. 반복루프작업을 vector를 이용해 간단하게 만드는 작업을 vectorization이라고 한다.

image

위의 예시는 예상값을 구하는 작업을 vectorize 한 예

아래는 gradient descent를 vectorize 한 예이다.

image