junecnol:

https://www.youtube.com/watch?v=-FfMVnwXrZ0&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=32

C4W4L01 What is face recognition

https://www.youtube.com/watch?v=96b_weTZb2w&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=33

C4W4L02 One Shot Learning

얼굴인식 알고리즘의 경우 한 사람의 이미지가 하나만 있거나 적은수의 이미지를 가지고 있고 부족한 데이터를 가지고 문제를 해결해야 한다. 

알고리즘 d 는 두 이미지 얼굴간의 차이점을 찾아내는 알고리즘이다. 결과값이 일정보다 크면 다른 사람으로 보고 일정값보다 작으면 같은 사람으로 본다. 

https://www.youtube.com/watch?v=6jfw8MuKwpI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=34

C4W4L03 Siamese Network

image

x1, x2 같은 알고리즘을 거쳐 나온 vector값 f(x1) , f(x2)값을 encoding of images라고 한다. x1, x2가 같은 사람인 경우 d()값은 작게 나와야 하며 , 다른 사람인 경우 크게 나와야 한다.

image

https://www.youtube.com/watch?v=d2XB5-tuCWU&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=35

C4W4L04 Triplet loss

많은 수의 데이터가 없을때 보다 효과적인 loss function이 필요한 경우 사용한다.

image

d 는 얼마나 두 이미지가 많은 차이점을 가지는지를 확인한다.

alpha를 좀더 두 그룹을 확연히 구분하기위해 사용되며 margin이라 부른다.

image
image


https://www.youtube.com/watch?v=0NSLgoEtdnw&index=36&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L05 Face Verification

앞 강의의 triple loss를 대체 할수 있는 방법

image

위의 사람은 회전문을 통해 들어오려는 새로운 사람이며 아래 사람은 기존 데이터베이스에 있는 사람이다. 두사람이 이용하는 알고리즘은 정확히 같다. 속도 개선을 위해 기존의 데이터베이스에 있는 사람의 계산값은 미리 계산해서 준비해 둔다. 

image

같은 사람이라고 예측되면 1을 되돌리고 아닌 경우 0을 되돌린다. 


https://www.youtube.com/watch?v=R39tWYYKNcI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=37

C4W4L006 What is neural style transfer?

이미지의 특성을 파악하고 이를 다른 이미지에 적용하는 기술을 neural style transfer라고 한다. 

image


https://www.youtube.com/watch?v=ChoV5h7tw5A&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=38

C4W4L07 What are deep CNs learning?

image

9 patched filter 하나가 하나의 layer unit의 기능을 수행한다.

image
image
image
image
image
image


https://www.youtube.com/watch?v=xY-DMAJpIP4&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=39

C4W4L08 Cost Function


https://www.youtube.com/watch?v=b1I5X3UfEYI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=40

C4W4L09 Content Cost Function

어느 위치인지는 모르겠지만 content cost를 계산하는 hidden layer L 을 만든다. 이 강의 에서는 기존의 network 를 이용한다. cost function안의 a는 vector이다.

아래 사항은 나중에 확인하기로 한다.

아래 사항은 나중에 확인하기로 한다.


https://www.youtube.com/watch?v=QgkLfjfGul8&index=41&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L10 Style Cost Function

https://www.youtube.com/watch?v=Cn8AtS-9Nwc&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=42

C4W4L11 1D and 3D Generalizations

junecnol:

https://www.youtube.com/watch?v=-FfMVnwXrZ0&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=32

C4W4L01 What is face recognition

https://www.youtube.com/watch?v=96b_weTZb2w&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=33

C4W4L02 One Shot Learning

얼굴인식 알고리즘의 경우 한 사람의 이미지가 하나만 있거나 적은수의 이미지를 가지고 있고 부족한 데이터를 가지고 문제를 해결해야 한다. 

알고리즘 d 는 두 이미지 얼굴간의 차이점을 찾아내는 알고리즘이다. 결과값이 일정보다 크면 다른 사람으로 보고 일정값보다 작으면 같은 사람으로 본다. 

https://www.youtube.com/watch?v=6jfw8MuKwpI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=34

C4W4L03 Siamese Network

image

x1, x2 같은 알고리즘을 거쳐 나온 vector값 f(x1) , f(x2)값을 encoding of images라고 한다. x1, x2가 같은 사람인 경우 d()값은 작게 나와야 하며 , 다른 사람인 경우 크게 나와야 한다.

image

https://www.youtube.com/watch?v=d2XB5-tuCWU&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=35

C4W4L04 Triplet loss

많은 수의 데이터가 없을때 보다 효과적인 loss function이 필요한 경우 사용한다.

image

d 는 얼마나 두 이미지가 많은 차이점을 가지는지를 확인한다.

alpha를 좀더 두 그룹을 확연히 구분하기위해 사용되며 margin이라 부른다.

image
image


https://www.youtube.com/watch?v=0NSLgoEtdnw&index=36&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L05 Face Verification

앞 강의의 triple loss를 대체 할수 있는 방법

image

위의 사람은 회전문을 통해 들어오려는 새로운 사람이며 아래 사람은 기존 데이터베이스에 있는 사람이다. 두사람이 이용하는 알고리즘은 정확히 같다. 속도 개선을 위해 기존의 데이터베이스에 있는 사람의 계산값은 미리 계산해서 준비해 둔다. 

image

같은 사람이라고 예측되면 1을 되돌리고 아닌 경우 0을 되돌린다. 


https://www.youtube.com/watch?v=R39tWYYKNcI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=37

C4W4L006 What is neural style transfer?

이미지의 특성을 파악하고 이를 다른 이미지에 적용하는 기술을 neural style transfer라고 한다. 

image


https://www.youtube.com/watch?v=ChoV5h7tw5A&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=38

C4W4L07 What are deep CNs learning?

image

9 patched filter 하나가 하나의 layer unit의 기능을 수행한다.

image
image
image
image
image
image


https://www.youtube.com/watch?v=xY-DMAJpIP4&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=39

C4W4L08 Cost Function


https://www.youtube.com/watch?v=b1I5X3UfEYI&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=40

C4W4L09 Content Cost Function

어느 위치인지는 모르겠지만 content cost를 계산하는 hidden layer L 을 만든다. 이 강의 에서는 기존의 network 를 이용한다. cost function안의 a는 vector이다.

아래 사항은 나중에 확인하기로 한다.

아래 사항은 나중에 확인하기로 한다.


https://www.youtube.com/watch?v=QgkLfjfGul8&index=41&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W4L10 Style Cost Function

https://www.youtube.com/watch?v=Cn8AtS-9Nwc&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=42

C4W4L11 1D and 3D Generalizations

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

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/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/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