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=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.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representationhttps://www.coursera.org/learn/machine-learning/lecture/czmip/unsupervised-learning-introduction

Unsupervised Learning: Introduction

image

unsupervised learning은 labeled된 데이터가 없으므로 그냥 x 값만 있다. 


https://www.coursera.org/learn/machine-learning/lecture/93VPG/k-means-algorithm

K-Means Algorithm

image
image

k mean algorithm에서 k는 총그룹 갯수이다. 뮤 는 centroid를 말한다. x 에 가장 가가운 centroid index를 c라고 한다. 즉 x i 는 i 번째 데이터를 말하며 이에 가장 가까운 centroid index를 c i 라고 한다. 위 알고리즘의 과정을 설명하면 우선 m개의 data set에서 요소 하나씩 가져온다 이는 x i 이며 이 요소에 가장 가까운 cluster centroid index를 c i 에 저장한다. 그다음 단계는 총 갯수 k 인  mu 를 처음부터 순환하며 본인의 index와 같은 x 들의 평균값을 구하고 이를 새로운 mu 값으로 갱신한다. 즉 cluster centroid 위치를 갱신하는 것이다.


https://www.coursera.org/learn/machine-learning/lecture/G6QWt/optimization-objective

K-Means Optimization Objective

image
image


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

K-Means Random Initialization

image

k means 알고리즘을 사용하는데에는 최초 시작 centroids를 지정해 주어야 하는데 training set에서 무작위로 k 숫자 만큼 선택하는 것을 추천한다.

image


https://www.coursera.org/learn/machine-learning/lecture/Ks0E9/choosing-the-number-of-clusters

K-Means Choosing the Number of Clusters

사실 cluster ( 그룹 )의 숫자는 개발자가 지정해 주어야 한다. 자동으로 지정할수 있는 방법은 없다.

image

cluster의 숫자에 따른 cost 값을 볼때 왼쪽 그래프와 같이 급격한 변화가 있다면 그 지점의 값만큼의 cluster 를 만든다. 오른쪽과 그래프와 같이 특별한 변화가 없는경우 개발자가 적당히 선택해야 한다. 


https://www.coursera.org/learn/machine-learning/lecture/0EJ6A/motivation-i-data-compression

Motivation I: Data Compression

image

2d dimensions의 data를 1d 바꾸어서 단순화하는 작업이다. 녹색선을 z1이라고 보고 이에 대응하는 각 데이터를 이용한다.

image

3차원의 데이터를 2차원에 project해서 새로운 데이터를 만들고 이를 이용한다. 3차원의 데이터를 z1, z2 벡터로 이루어진 평면에 project해서 얻은 데이터를 이용한다는 의미이다.


https://www.coursera.org/learn/machine-learning/lecture/t6pYD/motivation-ii-visualization

Motivation II: Visualization

image

예를 들어 위와 같은 데이터가 있다고 했을 때 이를 한번에 알아 보기가 힘들가 그래서 여러차원의 데이터를 dimensionality reduction작업을 통해 2차원, 3차원의 데이터로 바꾸고 이를 시각화 하는 것을 Visualization 한다고 한다.

image
image

2차원으로 줄여서 시각화 한 예를 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/GBFTt/principal-component-analysis-problem-formulation

Principal Component Analysis Problem Formulation

image

pca 는 어떤 형태가 되는 지 보여준다. 위의경우는 2d를 1d로 바꿔주는 과정이다.

image
image

위의 그림은 linear regression과 pca와의 차이를 보여주고 있다.


https://www.coursera.org/learn/machine-learning/lecture/ZYIPa/principal-component-analysis-algorithm

Principal Component Analysis Algorithm

image

pca 작업을 하기 전에 사전작업이 필요하다. 일단 mean normalization 작업을 통해서 각 데이터의 위치를 조정해서 전체 평균점이 0이 되게 한다. 위의 그림에서 첫번째 [ 안의 내용이 이에 해당한다.두번째 [ 의 작업은 feature scaling 작업에 대한 설명이다. 

image

위의 그림에서  u 는 벡터이고 z i 는 각각 새로 만들어진 축상의 값이다. 각각 2차원에서 1차원으로 3차원에서 2차원으로 차원이 낮아( dimension reduction ) 지는 것을 알수 있다.

image

pca 알고리즘은 두단계로 이루어져 있다. 1. covariance matrix를 구한다. x 한행과 x 한행의 transepose의 곱들을 다 더해서 행의 총갯수 m으로 나눈다. 

2. 1번에서 구해진 값을 sigma 변수에 넣고 이를 svd( singular value decomposition ) 또는 eig 함수에 넣어서 eigenvectors값을 구한다. 

위 그림에서 u1, u2 등등은 차원을 낮추면서 새로 생기게 되는 vector들이다. 위위그림에서 u1을 확인해볼것

image
image


https://www.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representation

Reconstruction from Compressed Representation

image

왼쪽그림은 dimension reduction은 보여주고 오른쪽 그림은 reconstruction을 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/S1bq1/choosing-the-number-of-principal-components

Choosing the Number of Principal Components

image

principal components의 숫자를 정한다는 이야기는 몇차원의 맞출것인가 하는 말과 같다.

우선 이를 결정하는 데 중요한 요소는 차원을 줄임에도 불구하고 데이터가 본래 가지고 있는 분별력을 유지해야 한다는 점이다. 즉 전체 분별정도 (전체 분산)과 projection error squares의 총합의 관계을 확인하면 되는데 여기서 한단계 더 나아가 평균값을 비교한다. 위의 그림에서 보듯이 m으로 나누어준다. 위의 예시를 보면 99% 분산 정도가 유지 되었다. 이렇게 볼수 있다. 보통 90% 이상이 유지 되는 것을 추천한다.

분산개념 이해를 위한 참고 자료) https://needjarvis.tistory.com/43

image

왼쪽의 방법을 통해 k = 1부터 원하는 값이 나올때까지 k값을 늘려가며 확인할수도 있다. 

또는 좀더 쉽게 오른쪽 처럼 svd 함수의 결과로 나오는 S matrix를 이용할수 도 있다.

S matrix 는 대각선만 값이 있고 나머지는 다 0을 요소로 갖는 특성을 가진다. 위 그림과 같이 s k까지 요소를 더한 값을 전체 s 요소들을 더한 값으로 나누고 결과값이 0.99 ( 또는 원하는 수치 ) 이상이 되는지 확인한다.

image


https://www.coursera.org/learn/machine-learning/lecture/RBqQl/advice-for-applying-pca

Advice for Applying PCA

overfitting을 보완하기 위해 pca를 쓰는 것은 좋지 못하다는 이야기이다. 그대신 regularization을 사용하기를 추천한다.

pca를 통해 약간 변화된 데이터를 이용하기 보다 본래 데이터를 이용해 우선 작업 시도하는 것을 추천한다.

https://www.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representationhttps://www.coursera.org/learn/machine-learning/lecture/czmip/unsupervised-learning-introduction

Unsupervised Learning: Introduction

image

unsupervised learning은 labeled된 데이터가 없으므로 그냥 x 값만 있다. 


https://www.coursera.org/learn/machine-learning/lecture/93VPG/k-means-algorithm

K-Means Algorithm

image
image

k mean algorithm에서 k는 총그룹 갯수이다. 뮤 는 centroid를 말한다. x 에 가장 가가운 centroid index를 c라고 한다. 즉 x i 는 i 번째 데이터를 말하며 이에 가장 가까운 centroid index를 c i 라고 한다. 위 알고리즘의 과정을 설명하면 우선 m개의 data set에서 요소 하나씩 가져온다 이는 x i 이며 이 요소에 가장 가까운 cluster centroid index를 c i 에 저장한다. 그다음 단계는 총 갯수 k 인  mu 를 처음부터 순환하며 본인의 index와 같은 x 들의 평균값을 구하고 이를 새로운 mu 값으로 갱신한다. 즉 cluster centroid 위치를 갱신하는 것이다.


https://www.coursera.org/learn/machine-learning/lecture/G6QWt/optimization-objective

K-Means Optimization Objective

image
image


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

K-Means Random Initialization

image

k means 알고리즘을 사용하는데에는 최초 시작 centroids를 지정해 주어야 하는데 training set에서 무작위로 k 숫자 만큼 선택하는 것을 추천한다.

image


https://www.coursera.org/learn/machine-learning/lecture/Ks0E9/choosing-the-number-of-clusters

K-Means Choosing the Number of Clusters

사실 cluster ( 그룹 )의 숫자는 개발자가 지정해 주어야 한다. 자동으로 지정할수 있는 방법은 없다.

image

cluster의 숫자에 따른 cost 값을 볼때 왼쪽 그래프와 같이 급격한 변화가 있다면 그 지점의 값만큼의 cluster 를 만든다. 오른쪽과 그래프와 같이 특별한 변화가 없는경우 개발자가 적당히 선택해야 한다. 


https://www.coursera.org/learn/machine-learning/lecture/0EJ6A/motivation-i-data-compression

Motivation I: Data Compression

image

2d dimensions의 data를 1d 바꾸어서 단순화하는 작업이다. 녹색선을 z1이라고 보고 이에 대응하는 각 데이터를 이용한다.

image

3차원의 데이터를 2차원에 project해서 새로운 데이터를 만들고 이를 이용한다. 3차원의 데이터를 z1, z2 벡터로 이루어진 평면에 project해서 얻은 데이터를 이용한다는 의미이다.


https://www.coursera.org/learn/machine-learning/lecture/t6pYD/motivation-ii-visualization

Motivation II: Visualization

image

예를 들어 위와 같은 데이터가 있다고 했을 때 이를 한번에 알아 보기가 힘들가 그래서 여러차원의 데이터를 dimensionality reduction작업을 통해 2차원, 3차원의 데이터로 바꾸고 이를 시각화 하는 것을 Visualization 한다고 한다.

image
image

2차원으로 줄여서 시각화 한 예를 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/GBFTt/principal-component-analysis-problem-formulation

Principal Component Analysis Problem Formulation

image

pca 는 어떤 형태가 되는 지 보여준다. 위의경우는 2d를 1d로 바꿔주는 과정이다.

image
image

위의 그림은 linear regression과 pca와의 차이를 보여주고 있다.


https://www.coursera.org/learn/machine-learning/lecture/ZYIPa/principal-component-analysis-algorithm

Principal Component Analysis Algorithm

image

pca 작업을 하기 전에 사전작업이 필요하다. 일단 mean normalization 작업을 통해서 각 데이터의 위치를 조정해서 전체 평균점이 0이 되게 한다. 위의 그림에서 첫번째 [ 안의 내용이 이에 해당한다.두번째 [ 의 작업은 feature scaling 작업에 대한 설명이다. 

image

위의 그림에서  u 는 벡터이고 z i 는 각각 새로 만들어진 축상의 값이다. 각각 2차원에서 1차원으로 3차원에서 2차원으로 차원이 낮아( dimension reduction ) 지는 것을 알수 있다.

image

pca 알고리즘은 두단계로 이루어져 있다. 1. covariance matrix를 구한다. x 한행과 x 한행의 transepose의 곱들을 다 더해서 행의 총갯수 m으로 나눈다. 

2. 1번에서 구해진 값을 sigma 변수에 넣고 이를 svd( singular value decomposition ) 또는 eig 함수에 넣어서 eigenvectors값을 구한다. 

위 그림에서 u1, u2 등등은 차원을 낮추면서 새로 생기게 되는 vector들이다. 위위그림에서 u1을 확인해볼것

image
image


https://www.coursera.org/learn/machine-learning/lecture/X8JoQ/reconstruction-from-compressed-representation

Reconstruction from Compressed Representation

image

왼쪽그림은 dimension reduction은 보여주고 오른쪽 그림은 reconstruction을 보여준다.


https://www.coursera.org/learn/machine-learning/lecture/S1bq1/choosing-the-number-of-principal-components

Choosing the Number of Principal Components

image

principal components의 숫자를 정한다는 이야기는 몇차원의 맞출것인가 하는 말과 같다.

우선 이를 결정하는 데 중요한 요소는 차원을 줄임에도 불구하고 데이터가 본래 가지고 있는 분별력을 유지해야 한다는 점이다. 즉 전체 분별정도 (전체 분산)과 projection error squares의 총합의 관계을 확인하면 되는데 여기서 한단계 더 나아가 평균값을 비교한다. 위의 그림에서 보듯이 m으로 나누어준다. 위의 예시를 보면 99% 분산 정도가 유지 되었다. 이렇게 볼수 있다. 보통 90% 이상이 유지 되는 것을 추천한다.

분산개념 이해를 위한 참고 자료) https://needjarvis.tistory.com/43

image

왼쪽의 방법을 통해 k = 1부터 원하는 값이 나올때까지 k값을 늘려가며 확인할수도 있다. 

또는 좀더 쉽게 오른쪽 처럼 svd 함수의 결과로 나오는 S matrix를 이용할수 도 있다.

S matrix 는 대각선만 값이 있고 나머지는 다 0을 요소로 갖는 특성을 가진다. 위 그림과 같이 s k까지 요소를 더한 값을 전체 s 요소들을 더한 값으로 나누고 결과값이 0.99 ( 또는 원하는 수치 ) 이상이 되는지 확인한다.

image


https://www.coursera.org/learn/machine-learning/lecture/RBqQl/advice-for-applying-pca

Advice for Applying PCA

overfitting을 보완하기 위해 pca를 쓰는 것은 좋지 못하다는 이야기이다. 그대신 regularization을 사용하기를 추천한다.

pca를 통해 약간 변화된 데이터를 이용하기 보다 본래 데이터를 이용해 우선 작업 시도하는 것을 추천한다.

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갯수를 맞춘다.

기존의 UIView에 기능을 추가 해서 사용하는 방법으로는 subclass를 만들어 사용하는 것과 expension을 이용 확대하는 방법이 있다.

단 expension의 경우 stored property를 새로 추가 할수 는 없다. (참조 https://docs.swift.org/swift-book/LanguageGuide/Extensions.html    Extensions can add new computed properties, but they cannot add stored properties, or add property observers to existing properties.)



하부 subclass에서 상부의 init()을 이용하는 경우 사용하기 전에 먼저 subclass에서 추가된 property의 값이 할당이 되어야 수행된다. 

Swift has a very clear, specific sequence of operations that are done in initializers. Let’s start with some basic examples and work our way up to a general case.

Let’s take an object A. We’ll define it as follows.

class A {
    var x: Int
    init(x: Int) {
        self.x = x
    }
}

Notice that A does not have a superclass, so it cannot call a super.init() function as it does not exist.

OK, so now let’s subclass A with a new class named B.

class B: A {
    var y: Int
    init(x: Int, y: Int) {
        self.y = y
        super.init(x: x)
    }
}

This is a departure from Objective-C where [super init] would typically be called first before anything else. Not so in Swift. You are responsible for ensuring that your instance variables are in a consistent state before you do anything else, including calling methods (which includes your superclass’ initializer).

subclass 를 이용 추가 property를 사용하는 예시들

class ViewController: UIViewController {

    var imageURL: NSURL?

    // this is a convenient way to create this view controller without a imageURL
    convenience init() {
        self.init(imageURL: nil)
    }

    init(imageURL: NSURL?) {
        self.imageURL = imageURL
        super.init(nibName: nil, bundle: nil)
    }

    // if this view controller is loaded from a storyboard, imageURL will be nil

    /* Xcode 6
    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
    */

    // Xcode 7 & 8
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

class UIGridCell:UIView {

   var id:String=“”

   override init(frame: CGRect) {

       super.init(frame: frame) // calls designated initializer

   }

   convenience init(id: String) {

       self.init(frame: CGRect.zero)

       self.id = id

   }

   required init?(coder aDecoder: NSCoder) {

       super.init(coder: aDecoder)

   }

}