https://www.youtube.com/watch?v=eqEc66RFY0I&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=7

image

64 * 64 크기의 이미지를 data로 하는 경우 data를 vector로 바꾸는 예시를 보여주고 있다. red 값들에 이어서 green 값들을 이어서 넣어주고 blue값들도 연결해서 하나의 긴 vector를 만들었다.

image

이강의는 각각의 고양이 사진들을 가지고 고양이가 있는 사진을 찾는 알고리즘을 만드는 것이 목적이다. 각각의 고양이 사진은 x vector가 되며 이들의 rgb data가 vector에 들어가게 된다. x.shape = (nx, m) 은 python에서 vector를 만드는 것을 보여준것이다. 

n 은 features의 총갯수 (여기서는 rgb 값 총갯수)

m은 데이터 표본 갯수 (여기서는 고양이 사진 총갯수)

https://www.youtube.com/watch?v=hjrYrynGWGA&index=8&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

image

우상단의 알고리즘은 b를 x0로 생각한 경우이다. 결과적으로 좌측과 같은 내용이다. 다만 이 강의에서는 좌측 알고리즘을 이용한다. 


https://www.youtube.com/watch?v=SHEPb1JHw5o&index=9&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Logistic Regression Cost Function

image

loss function은 데이터 표본 하나에 대한 loss를 구한다.

cost function은 데이터 표본들 전체에 대한 총 loss를 구한다.

위그림에서 -log y hat , -log(1-y hat) 과 y 값을 비교하는데 y hat이라는데 주의한다. x가 아니고 y이다. 일반 log 함수 그래프가 아닌 log 함수를 y=x축에 대칭한 그래프라는 것에 유의한다.


https://www.youtube.com/watch?v=uJryes5Vk1o&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=10

Gradient Descent

image
image

위그림에서 하단의 알고리즘은 b를 x0가 아닌 따로 때어내서 생각하는 경우를 보여주고 있다.


https://www.youtube.com/watch?v=GzphoJOVEcE&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=11

Derivatives

image


https://www.youtube.com/watch?v=5H7M5Vd3-pk&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=12

More Derivative Examples

image
image


https://www.youtube.com/watch?v=hCP1vGoCdYU&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=13

Computation Graph 

image


https://www.youtube.com/watch?v=nJyUyKN-XBQ&index=14&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Derivatives With Computation Graphs

image

각각의 값들이 cost 함수에 최종적으로 어느 정도로 영향을 미치는지 계산하는 과정을 보여주고 있다. 

dj/dv를 구하기 위해서는 v를 일단 0.001증가 했을때 최종적으로 J가 얼만큼 변화하는지 확인한다. 위의경우에 0.003만큼 증가했다. 즉 dj/dv는 3이 된다. 또 dj/da를 구하기 위해서는 우선 a가 0.001변화하는 동아 dv가 얼만큼 변화하는 지를 본다. 위의경우 0.001변화했다. 즉 dv/da는 1일된다. 그리고 chain rule 을 이용 dj/dv 와 dv/da의 곱을 통해서 dj/da를 구한다. 위의경우 3 * 1이 된다. 

코딩할때의 팁으로 dj/da의 값을 저장하는 변수의 이름을 간단하게 da로 한다. 모든 경우 dj를 공통으로 들어가므로 생략하기로 한다.

image


https://www.youtube.com/watch?v=z_xiwjEdAC4&index=15&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Logistic Regression Gradient Descent 

image

적당한 w1, w2, b를 구함으로써 최종적으로 L 함수값을 최대한 낮추는 것이 개발자의 최종 목적이다. 그렇게 하기 위한 과정을 순서대로 아래에 보여준다.

image

우선 L함수에 대해 da를 구한다. a 값이 L에 미치는 정도를 구한다.

image

dJ/dz 를 구한다. 

참고자료) https://math.stackexchange.com/a/78578

참고자료 ) https://math.stackexchange.com/questions/2585977/understanding-partial-derivative-of-logistic-regression-cost-function

image

이번엔 dJ/dw1, dJ/dw2 등등을 구하고 이를 gradient descent에 이용한다.


https://www.youtube.com/watch?v=qsIrQi0fzbY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=17

Vectorization

image

vector 연산을 이용한 방법 – 오른쪽

일반 for loop을 이용한 방법 – 왼쪽 

vector를 이용한 방법이 훨씬 빠르다.

image

python을 이용한 두 가지 연산의 속도 비교

image

vector를 이용한 연산은 SIMD single instruction multiple data를 이용하기 때문에 속도가 빠르다. 

또 vector는 병렬 처리가 가능하기 때문 빠르다.


https://www.youtube.com/watch?v=pYWASRauTzs&index=18&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

More Vectorization Examples

항상 vector연산으로 표현가능하다면 vector 연산을 최대한 사용해서 for loop 이용을 줄인다. 

image

좌측과 우측의 내용은 같다. 우측은 다만 vector로 표현된것이다.

image

좌측과 우측 상단은 같은 내용이다. 우측 하단은 numpy에서 제공하는 유용한 method의 예시를 보여준것이다. 우선 라이브러리에서 유용하게 사용할 수 있는 vector 연산 method가 있는지 확인해 보는 것이 팁이다.

image

for loop으로 표현된 코드이다.

image

vector를 이용 하나의 for loop 를 없애는 과정이다.


https://www.youtube.com/watch?v=okpqeEUdEkY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=19

Vectorizing Logistic Regression (C1W2L13)

image

x superscript는 하나 하나의 데이터표본 이다. 이들을 X matrix로 만든다. w는 weight들을 모아논 vector이다. 이를 transpose해서 row vector로 만든다. 이들를 numpy의 dot 연산 한다. 그리고 b는 모든 elements에 더해지는 biased constant 이다. 이를 꼭 vector의 상태로 만들지 않고 그냥 더하기만 해도 numpy가 알아서 vector로 교환해서 각각의 elements에 더해준다.z 는 결과 vector이고 이를 sigmod 함수처리하면 결과는 a 로 이루어진 vector가 나오게 된다.


https://www.youtube.com/watch?v=2BkqApHKwn0&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=20

Vectorizing Logistic Regression’s Gradient Computation (C1W2L14)

image

위 그림에서 a는 y hat 즉 계산된 예상 y값이다. 

image


https://www.youtube.com/watch?v=tKcLaGdvabM&index=21&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Broadcasting in Python (C1W2L15)

python에서 기본적으로 matrix, vector연산할때 행,렬의 갯수가 안 맞는 경우 스스로 크기를 맞추어서 연산 가능하게 해주는 기능을 broadcastin이라고 한다.

image
image


https://www.youtube.com/watch?v=V2QlTmh6P2Y&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=22

A Note on Python/Numpy Vectors (C1W2L16)

python의 broadcasting 기능으로 때때로 bug발견하기 힘들때가 있다. 원래 사이즈가 달라서 연산이 불가능하면 에러가 나야 하지만 스스로 사이즈를 변경하므로 에러가 발생하기 않고 계속 진행된다. 이런경우 버그를 찾기 힘들다. 그래서 이런 문제를 줄이기 위한 팁을 알려준다.

image

(5, ) 와 같은 rank 1 array 를 사용하지 않는다. 명확하게 (5, 1) 형태이든 (1, 5) 이런 형태이든 벡터라도 명확하게 표기되게 사용한다. 중간 중간에 assert를 이용 사이즈를 확인한다. 진행중에 rank 1 array가 만들어 진다면 그림 하단 처럼 reshape를 이용 명확하게 바꾸어 준다.


https://www.youtube.com/watch?v=k_S5fnKjO-4&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=24

Explanation of Logistic Regression’s Cost Function (C1W2L18)

image
image
image

https://www.youtube.com/watch?v=eqEc66RFY0I&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=7

image

64 * 64 크기의 이미지를 data로 하는 경우 data를 vector로 바꾸는 예시를 보여주고 있다. red 값들에 이어서 green 값들을 이어서 넣어주고 blue값들도 연결해서 하나의 긴 vector를 만들었다.

image

이강의는 각각의 고양이 사진들을 가지고 고양이가 있는 사진을 찾는 알고리즘을 만드는 것이 목적이다. 각각의 고양이 사진은 x vector가 되며 이들의 rgb data가 vector에 들어가게 된다. x.shape = (nx, m) 은 python에서 vector를 만드는 것을 보여준것이다. 

n 은 features의 총갯수 (여기서는 rgb 값 총갯수)

m은 데이터 표본 갯수 (여기서는 고양이 사진 총갯수)

https://www.youtube.com/watch?v=hjrYrynGWGA&index=8&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

image

우상단의 알고리즘은 b를 x0로 생각한 경우이다. 결과적으로 좌측과 같은 내용이다. 다만 이 강의에서는 좌측 알고리즘을 이용한다. 


https://www.youtube.com/watch?v=SHEPb1JHw5o&index=9&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Logistic Regression Cost Function

image

loss function은 데이터 표본 하나에 대한 loss를 구한다.

cost function은 데이터 표본들 전체에 대한 총 loss를 구한다.

위그림에서 -log y hat , -log(1-y hat) 과 y 값을 비교하는데 y hat이라는데 주의한다. x가 아니고 y이다. 일반 log 함수 그래프가 아닌 log 함수를 y=x축에 대칭한 그래프라는 것에 유의한다.


https://www.youtube.com/watch?v=uJryes5Vk1o&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=10

Gradient Descent

image
image

위그림에서 하단의 알고리즘은 b를 x0가 아닌 따로 때어내서 생각하는 경우를 보여주고 있다.


https://www.youtube.com/watch?v=GzphoJOVEcE&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=11

Derivatives

image


https://www.youtube.com/watch?v=5H7M5Vd3-pk&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=12

More Derivative Examples

image
image


https://www.youtube.com/watch?v=hCP1vGoCdYU&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=13

Computation Graph 

image


https://www.youtube.com/watch?v=nJyUyKN-XBQ&index=14&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Derivatives With Computation Graphs

image

각각의 값들이 cost 함수에 최종적으로 어느 정도로 영향을 미치는지 계산하는 과정을 보여주고 있다. 

dj/dv를 구하기 위해서는 v를 일단 0.001증가 했을때 최종적으로 J가 얼만큼 변화하는지 확인한다. 위의경우에 0.003만큼 증가했다. 즉 dj/dv는 3이 된다. 또 dj/da를 구하기 위해서는 우선 a가 0.001변화하는 동아 dv가 얼만큼 변화하는 지를 본다. 위의경우 0.001변화했다. 즉 dv/da는 1일된다. 그리고 chain rule 을 이용 dj/dv 와 dv/da의 곱을 통해서 dj/da를 구한다. 위의경우 3 * 1이 된다. 

코딩할때의 팁으로 dj/da의 값을 저장하는 변수의 이름을 간단하게 da로 한다. 모든 경우 dj를 공통으로 들어가므로 생략하기로 한다.

image


https://www.youtube.com/watch?v=z_xiwjEdAC4&index=15&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Logistic Regression Gradient Descent 

image

적당한 w1, w2, b를 구함으로써 최종적으로 L 함수값을 최대한 낮추는 것이 개발자의 최종 목적이다. 그렇게 하기 위한 과정을 순서대로 아래에 보여준다.

image

우선 L함수에 대해 da를 구한다. a 값이 L에 미치는 정도를 구한다.

image

dJ/dz 를 구한다. 

참고자료) https://math.stackexchange.com/a/78578

참고자료 ) https://math.stackexchange.com/questions/2585977/understanding-partial-derivative-of-logistic-regression-cost-function

image

이번엔 dJ/dw1, dJ/dw2 등등을 구하고 이를 gradient descent에 이용한다.


https://www.youtube.com/watch?v=qsIrQi0fzbY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=17

Vectorization

image

vector 연산을 이용한 방법 – 오른쪽

일반 for loop을 이용한 방법 – 왼쪽 

vector를 이용한 방법이 훨씬 빠르다.

image

python을 이용한 두 가지 연산의 속도 비교

image

vector를 이용한 연산은 SIMD single instruction multiple data를 이용하기 때문에 속도가 빠르다. 

또 vector는 병렬 처리가 가능하기 때문 빠르다.


https://www.youtube.com/watch?v=pYWASRauTzs&index=18&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

More Vectorization Examples

항상 vector연산으로 표현가능하다면 vector 연산을 최대한 사용해서 for loop 이용을 줄인다. 

image

좌측과 우측의 내용은 같다. 우측은 다만 vector로 표현된것이다.

image

좌측과 우측 상단은 같은 내용이다. 우측 하단은 numpy에서 제공하는 유용한 method의 예시를 보여준것이다. 우선 라이브러리에서 유용하게 사용할 수 있는 vector 연산 method가 있는지 확인해 보는 것이 팁이다.

image

for loop으로 표현된 코드이다.

image

vector를 이용 하나의 for loop 를 없애는 과정이다.


https://www.youtube.com/watch?v=okpqeEUdEkY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=19

Vectorizing Logistic Regression (C1W2L13)

image

x superscript는 하나 하나의 데이터표본 이다. 이들을 X matrix로 만든다. w는 weight들을 모아논 vector이다. 이를 transpose해서 row vector로 만든다. 이들를 numpy의 dot 연산 한다. 그리고 b는 모든 elements에 더해지는 biased constant 이다. 이를 꼭 vector의 상태로 만들지 않고 그냥 더하기만 해도 numpy가 알아서 vector로 교환해서 각각의 elements에 더해준다.z 는 결과 vector이고 이를 sigmod 함수처리하면 결과는 a 로 이루어진 vector가 나오게 된다.


https://www.youtube.com/watch?v=2BkqApHKwn0&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=20

Vectorizing Logistic Regression’s Gradient Computation (C1W2L14)

image

위 그림에서 a는 y hat 즉 계산된 예상 y값이다. 

image


https://www.youtube.com/watch?v=tKcLaGdvabM&index=21&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Broadcasting in Python (C1W2L15)

python에서 기본적으로 matrix, vector연산할때 행,렬의 갯수가 안 맞는 경우 스스로 크기를 맞추어서 연산 가능하게 해주는 기능을 broadcastin이라고 한다.

image
image


https://www.youtube.com/watch?v=V2QlTmh6P2Y&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=22

A Note on Python/Numpy Vectors (C1W2L16)

python의 broadcasting 기능으로 때때로 bug발견하기 힘들때가 있다. 원래 사이즈가 달라서 연산이 불가능하면 에러가 나야 하지만 스스로 사이즈를 변경하므로 에러가 발생하기 않고 계속 진행된다. 이런경우 버그를 찾기 힘들다. 그래서 이런 문제를 줄이기 위한 팁을 알려준다.

image

(5, ) 와 같은 rank 1 array 를 사용하지 않는다. 명확하게 (5, 1) 형태이든 (1, 5) 이런 형태이든 벡터라도 명확하게 표기되게 사용한다. 중간 중간에 assert를 이용 사이즈를 확인한다. 진행중에 rank 1 array가 만들어 진다면 그림 하단 처럼 reshape를 이용 명확하게 바꾸어 준다.


https://www.youtube.com/watch?v=k_S5fnKjO-4&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=24

Explanation of Logistic Regression’s Cost Function (C1W2L18)

image
image
image

A Step by Step Backpropagation Example

A Step by Step Backpropagation Example

Delta rule – Wikipedia

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