https://www.youtube.com/watch?v=fXOsFF95ifk&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=25

Neural Network Overview (C1W3L01)

image

superscript [i]는 몇번째 layer인지를 말한다. superscript (i) 는 몇번째 데이터표본인지 말한다. 


https://www.youtube.com/watch?v=CcRkHl75Z-Y&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=26

Neural Network Representations (C1W3L02)

image

a 0 layer는 input layer이며 이는 총 layer 갯수를 말할때 포함시키지 않는다.

a 는 실제로 logistic regression연산( features 와 weight간의 product연산과 sigmoid나 tanh, ReLU 연산 )을 마친 계산 결과 값이다. superscript 숫자는 layer숫자를 나타낸다. 각 layer에 있는 w matrix를 보면 행갯수는 그 layer에서의 unit갯수이며 열갯수는 앞 단계 layer의 features갯수임에 유의한다.


https://www.youtube.com/watch?v=rMOdrD61IoU&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=27

Computing Neural Network Output (C1W3L03)

image
image

위 그림에서 transpose 는 row vector를 column vector로 만들어 주기 위해 사용되었다.

image


https://www.youtube.com/watch?v=xy5MOQpx3aQ&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=28

Vectorizing Across Multiple Examples (C1W3L04)

image

vectorization을 사용하기 전의 모습이다.

image

matrix로 만들어 정리할때 좌우로는 각각의 데이터표본에 대한 값을 가지게 하고 상하로는 node(unit)에 대한 값을 가지게 한다. 일정하게 규칙을 유지하는 것에 유의한다.


https://www.youtube.com/watch?v=kkWRbIb42Ms&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=29

Explanation For Vectorized Implementation (C1W3L05)

image

우선강의의 편의를 위해서 b가 없는 상태에서 개념을 확대해 나가는 방향으로 설명했다. b는 추가로 마지막에 더해주기만 하기 때문이다. 각각의 칼럼이 하나의 데이터표본에 대한 데이터이며 이것이 계속 유지되가는 점에 유의한다.

image


https://www.youtube.com/watch?v=Xvg00QnyaIY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=30

Activation Functions (C1W3L06)

image

activation function으로 sigmoid 대신 다른 함수를 대부분이용한다. sigmoid는 마지막 outlayer에서만 쓰거나 binary classification을 해야하는 경우만 사용한다. 대부분 tanh나 ReLU를 사용한다. 가끔 leaky relu를 사용하기도 한다. relu, leaky relu가 sigmoid보다 learning 속도가 빠르다. 

image


https://www.youtube.com/watch?v=NkOv_k7r6no&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=31

Why Non-linear Activation Functions (C1W3L07)

image

nn에서 activation func 없다면 우측 하단처럼 linear 결과가 나온다. 여러번 layer를 거치더라도 linear 결과가 나오게 되는데 그렇다면 여러겹의 layer를 만드는 이유가 없어지게 된다. 


https://www.youtube.com/watch?v=P7_jFxTtJEo&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=32

Derivatives Of Activation Functions (C1W3L08)

image
image
image

relu, leaky relu에서 z 값 0 은 0.00000 … 1 처럼 아주 작은 숫자로 생각하므로 그 점에서의 도함수 값은 1로 본다.


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

Gradient Descent For Neural Networks (C1W3L09)

image
image

numpy.sum 에서 사용된 keepdims 옵션값을 true로 하면 명확한 사이즈의 matrix가 된다. 두번째 옵션은 axis이다.


https://www.youtube.com/watch?v=yXcQ4B-YSjQ&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=34

Backpropagation Intuition (C1W3L10)

image

derivative 참고자료 )

시그모이드 도함수   https://math.stackexchange.com/questions/78575/derivative-of-sigmoid-function-sigma-x-frac11e-x

로지스틱 리그래션 cost 함수의 도함수   https://math.stackexchange.com/questions/2585977/understanding-partial-derivative-of-logistic-regression-cost-function


https://www.youtube.com/watch?v=yXcQ4B-YSjQ&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=34

Backpropagation Intuition (C1W3L10)

image
image
image

하단부분에 elementwise product임에 유의한다.


https://www.youtube.com/watch?v=6by6Xas_Kho&index=35&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Random Initialization (C1W3L11)

weight 값을을 다 0으로 하는 경우 계산이 진행되어도 계속 같은 값들을 가지게 된다. 그러므로 초기에 랜덤으로 작은 수의 초기값을 정해 주어야 한다. 초기값이 크면 아래그림에서 처럼 z값이 커지게 되고 그렇게 되면 sigmoid의 경우 기울기가 평평한 지점에서 값을 형성하게 된다. 그렇게 되면 z값이 크게 변경이 되더라도 sigmoid계산 값은 변화가 없으므로 최적값을 구하는 과정이 길어지게 된다. 아래 그림과 같이 0.01을 추천하고 있다.

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

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