https://www.youtube.com/watch?v=hjx-zwVdfjc&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=13

RNN W2L01 : Word Representation

image

위 그림은 특별히 features (각 단어의 특성)이 적용되지 않는 one hot vector의 모습이다.

image

이 강의에서는 300개의 특성을 각 단어마다 부여했다.

image

t-SNE를 사용해서 300개의 특성을 단순화해서 2d 면에서 단어간의 관계를 보여 주고 있다. 


https://www.youtube.com/watch?v=Qu-cvY4HP4g&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=14

RNN W2L02 : Using Word Embeddings

image

orange 와 apple, durian은 비슷한 featurized 단어이며 farmer, cultivator도 같은 부류의 단어이다. 그러므로 문장 첫 두 단어가 사람이름을 추측할수 있다. 다른 외부 의 수많은 자료를 통해 위와 같은 관계의 일반화된 규칙을 만들어 찾아낼수 있고 이를 다시 작은 프로젝트에 이용할수 있는데 이를 word embeddings이라고 한다.

image
image

face verification에서 사용했던 encoding과 word embedding은 거의 같은 개념이다.


https://www.youtube.com/watch?v=upto_vdrXFI&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=15

RNN W2L03 : Properties of Word Embeddings

image
image

sim은 두 벡터의 유사성을 계산하는 함수이다. 두 벡터간의 거리를 측정하는 유클리드 기하학을 이용한 거리 측정 방법, 코싸인 유사도를 이용할수 있다.

image

위와 같은 알고리즘으로 word emebedding에 필요한 단어간의 유사성을 찾아낼수 있다. (우측 내용과 같은)


참고자료) cosine similarity

https://www.youtube.com/watch?v=if6tjHAT6iM

image
image
image

money money money…. 의 문장과 money money laundering이 서로 더 유사하다고 볼수 있지만 벡터의 특성상 유클리드 기하학을 이용한 방법은 이를 알아 내지 못한다.  

image
image
image

문장에 각단어의 횟수가 각 dimension에 대응하는 좌표가 되므로 그 값이 음수가 될수 없으며 최소값은 0이다. 


https://www.youtube.com/watch?v=VkjSaOZSZVs&index=16&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L04 : Embedding matrix

image

embedding matrix는 vocabulary에 있는 모든 단어에 대한 features값들이 있는 matrix이다. 이를 사용하는데 vector곱을 통해 가져오는 방법을 보여주고 있다. 그러나 실제로는 한단어에 대한 feature 칼럼에 접근해서 칼럼을 쭉 아래로 한 줄 가져오면 된다. 


https://www.youtube.com/watch?v=xtPXjvwCt64&index=17&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L05 : Learning word embeddings

이 강의에서는 문장 빈칸에 들어갈 알맞은 단어를 고르는 문제를 다루고 있다.

image

처음부터 끝까지의 모든 단어를 가지고 예측할수도 있지만 간단하게 마지막 4단어를 이용해도 좋은 결과를 낼수 있다.

image

4단어를 이용하기도 하지만 때로는 앞4, 뒤4 단어를 함께 보기도 한다. 마지막 1단어 , 근처의 한단어를 보기도 한다. 


https://www.youtube.com/watch?v=jak0sKPoKu8&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=18

RNN W2L06 : Word2Vec

Word2Vec skip grams에 대해서 설명한다

image

한 단어를 context 단어로 선정하고 그 단어를 중심으로 일정 크기 window안에서 ( 근처 5단어, 근처 10단어 내에서)  무작위로 단어를 뽑는다. 

image

Oc는 one shot vector이며 E는 embedding matrix이다 이들의 곱으로 ec를 구한다. 그리고 이를 softmax에 넣어 결과를 얻는다. 

image

Word2Vec skip grams의 단점은 10,000 vocabulary는 괜찮을지 모르나 그 크기가 커지면 속도에 문제가 생긴다. 시그마 과정때문에 속도가 느려질수 있으므로 전체에 대해 합을 구하지 않고 일부만 하는 방법으로 단점을 극복할수 있다. 오른쪽 참조

context 단어를 선정할때 무작위로 해도 좋지만 자주 등장하는 단어에 너무 자원이 집중되지 않도록 고려해야 한다. 

 참고자료) word2vec https://www.youtube.com/watch?v=64qSgA66P-8


https://www.youtube.com/watch?v=vYTihV-9XWE&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=19

RNN W2L07 : Negative Sampling

image

이 강의는 문장의 빈칸에 들어갈 알맞은 단어를 찾는 알고리즘에 대해 이야기 한다.

우선 context단어의 바로 인접한 단어에는 1을 배정한다. 그리고 임의의 k 개 만큼의 상관 없는 단어를 뽑아 0을 배정한다. 이때 이 단어가 skip grams의 window에 있는 단어라도 상관없다. 그냥 0을 배정한다. k의 갯수는 vocabulary sample data set이 작은 경우 5 -20 큰경우에는 2-5로 한다. 

image

일반 word2vec 에서 softmax를 이용해서 해당 단어만의 vector (theta weight)을 얻는 것이 목적인데 이는 너무 많은 자원을 소모한다. 그러므로 그 대신에 간단한 sigmoid를 이용한다. 

E는 features 값들이 있는 matrix이다. 

theta t 는 target 단어의 features vector이다.

image

negative sample을 선정하는데 일반문장에 많이 등장하는 단어 감안해서 뽑는 방법에 대한 설명이다. 

glove 에 대해서는 나중에 다시 확인이 필요하다.

https://www.youtube.com/watch?v=yjm19W5QDtA&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=20

RNN W2L08 : GloVe word vectors

stanford RNN 강좌에서의 glove 내용 부분

 https://youtu.be/ASn7ExxLZws?t=2294

모두의 연구소에서 설명한 내용 in korean

https://www.youtube.com/watch?v=uZ2GtEe-50E&list=PLWKf9beHi3Tg50UoyTe6rIm20sVQOH1br&index=28


https://www.youtube.com/watch?v=5aNUPwtuL5I&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=21

RNN W2L09 : Sentiment Classification

데이터를 통해 사람의 감정상태를 예측, 분류하는 작업을 sentiment classification이라고 한다.

image

sentiment classification의 단점은 데이터의 갯수가 대체로 적다는데 있다. 10000 – 100000 단어수 정도로 적으며 때로는 더 적을수도 있다.

image

위위그림에서의 문제를 많은 수의(100 billions 정도) 데이터를 이용해서 만든 words embeddings를 이용해서 해결할수 있다. 위의 그림은 단순히 단어 각각이 가진 features값들을 더하거나 평균내서 예측값을 뽑아내는 간단한 알고리즘이며 이런경우 좋지 않은 의미의 문장 안에서 사용된 좋은 의미의 단어 ( 위의 예시에서는 good ) 사용마저도 사람이 좋게 표현하고 있다고 잘못 판단할수 있다. 이를 해결하게 위해서는 RNN을 사용한다.  

image


https://www.youtube.com/watch?v=fg8ijSPHyx0&index=22&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W2L10 : Debiasing word embeddings

편견이 들어있는 데이터를 통해 학습된 model은 편견을 가지게된다.

image
image

이 강의에서 각 단어는 300개의 features를 가지고 있다. 2단계에서는 편견이 들어있는 1 dimension feature를 찾아서 그 부분의 값을 neutralize한다.  

image

neutralized feature 값이 반영된 특정단어에 대해 다른 단어들을 조정한다. 여기의 예시에서는 grandfather와 grandmother가 babysitter에 대해 같은 거리에 있게 조정 한다. 

https://www.youtube.com/watch?v=efWlOCE_6HY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L01 : Why Sequence Models

RNN의 사용예시를 보여준다.

image


https://www.youtube.com/watch?v=XeQN82D4bCQ&index=2&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L02 : Notation

image

(i) 는 example number이다. <t> 는 한 example에서 몇번째 단어인지를 나타낸다. T (i) x 는 i example에서의 총 단어수 이다.

image

30000 ~ 50000 vocabulary 수가 일반적인 비즈니스에서 사용된다. 때때로 1 mil이 사용되기도 한다. vector옆 숫자는 vocabulary 목록에서의 인덱스 번호이다. 


https://www.youtube.com/watch?v=2E65LDnM2cA&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=3

RNN W1L03 : RNN Model

image

위 그림은 왜 일반 neural network를 사용할 수 없는지를 설명한다.

image

오른쪽 다이어그램과 왼쪽 다이어그램은 같은 내용이다. 다만 왼쪽은 과정을 풀어서 설명한 것이다.waa는 전단계의 a값에 곱해져서 이번단계의 계산에 사용되는 weight이며 a1, a2, a3…. 등에 쓰이며 모두 같은 값이다. wax는 입력값에 적용되는 weights이며 여러군데에서 사용되는데 모두 같은 값이다. wya는 해당 layer에서 출력되는 값을 구하기 위해 사용되는 weights이며 여러군데에서 사용되는데 모두 같은 값이다. 이 강의에서 Tx와 Ty는 같다고 가정한다. 일반 RNN의 단점으로 전단계의 정보는 이번단계에서 사용될수 있지만 나중에 오는 정보를 이번 단계에서 사용할수 없다는 것을 들수 있다. 이를 해결하기 위한 방법으로 bidirectional RNN을 사용한다. 

image

a 값을 위한 g 함수로 tanh, ReLU를 사용하는 경우가 많다. y값의 경우는 sigmoid를 사용하는 경우가 많다. 

image

waa와 wax를 합쳐서 wa matrix를 만들었다. 전체적인 vectorization을 보여주고 있다.


https://www.youtube.com/watch?v=esgbmJ6SnSY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=4

RNN W1L04 : Backpropagation through time

image

빨간선인 back prop 과정을 보여준다. 가장 중요한 부분은 빨간 동그라미 부분이다. loss fucntion은 logistic regression과 같다. 각 layer에서 나오는 y hat value와 실제 값을 비교해서 얻어진 loss의 총합이 최종 cost가 된다. 이 과정을 backpropagation through time이라고 한다.


https://www.youtube.com/watch?v=G5kW3V6qHuk&index=5&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L05 : Different types of RNNs

image
image
image

many to many의 경우 Tx와 Ty의 수가 같은 경우와 다른 경우가 있다. 


https://www.youtube.com/watch?v=1rOCxV0fSyM&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=6

RNN W1L06 : Language Model and sequence generation

image

이 강의 에서 P() 는 () 안의 문장이 실제로 사용될수 있는 확률을 알려준다. 

image

각 단어 하나 하나를 하나 하나의 y<>로 구분한다. 이를 tokenize한다고 한다. 문장끝은 <EOS> token으로  생각한다. 문장 부호도 token으로 생각하는 경우가 있다. 기존의 vocabulary에 없는 단어의 경우는 <UNK> token으로 치환한다.  

image

우측 하단은 각각 단어별 가능 확률의 곱으로 확률이 만들어 짐을 확인한다. 두번째 단어이후로는 conditional probability인 것을 확인한다.


https://www.youtube.com/watch?v=CKrxdgqBheY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=7

RNN W1L07 : Sampling novel Sequences

image
image

character level model의 경우 더많은 자원을 필요로 하며 앞쪽의 글자의 영향력이 뒤쪽에 잘 전달되지 않는 문제가 있다. 


https://www.youtube.com/watch?v=3Hn_hEPtciQ&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=8

RNN W1L08 : Vanishing gradients with RNNs

image

network가 너무 깊거나 RNN의 경우 초반부의 내용이 뒷부분에 영향을 주지 못하는 문제를 가지고 있다. 

RNN과 많은 layer를 가진 network의 경우 vanishing gradient, exploding gradient 문제에 취약하다. exploding gradient의 경우 결과중에 NAN 값으로 표현되는 경우가 많아서 인지 하기가 쉬우며 clipping gradient를 통해 손쉽게 해결이 가능하다. 그러나 vanishing gradient의 경우 찾아내기 쉽지않다. 해결 방법으로는 gated recurrent unit GRU를 사용하거나 LSTM을 사용해 해결한다. 


https://www.youtube.com/watch?v=xSCy3q2ts44&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=9

RNN W1L09 : Gated Recurrent Unit GRU

image

위 그림은 일반 RNN의 모습을 보여준다.

image

왼쪽 상단의 다이어그램의 보라색 박스와 오른쪽 수식의 보라색 대괄호는 같은 내용이다. 보라색 부분을 보면 GAMMA u의 값이 0이면 전단계의 C<t-1> 그대로 유지되고 값이 1이면 새로운  tilda C<t> 의 값이 저장된다. GAMMA u 값이 스위치 역활을 하게 된다. C<t> 와 tilda C<t> 와 GAMMA u 는 모두 같은 사이즈의 vector이며 보라색 박스 안에서 * 연산은 elementwise 연산이 된다. 

image

기존의 GRU에서 좀더 확장된 알고리즘이며 보다 많이 사용된다. GAMMA r은 relevance gate이다. 이와 비슷한 역할을 하는 알고리즘으로 LSTM을 들수 있다. Full GRU 설명하는데 수식 왼쪽의 notation이 대신 사용되기도 한다. 


https://www.youtube.com/watch?v=5wh4HWWfZIY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=10

RNN W1L10 : Long Short Term Memory (LSTM)

image
image

gates 계산에 C<t-1>을 넣어서 하는 경우도 있는데 이를 peephole connection이라고 한다. LSTM가 GRU보다 먼저 개발된 알고리즘이다. LSTM은 gate 가 GRU보다 많기 때문에 자원소비가 좀더 있지만 좀더 강력하고 유연하다. LSTM은 보다 간단하기에 대형 network 제작에 좀더 유리하다. 전반적으로 LSTM을 좀더 사용하낟. 


https://www.youtube.com/watch?v=bTXGpATdKRY&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI&index=11

RNN W1L11 : Bidirectional RNN

기본 RNN의 경우 전단계의 데이터가 현단계에 적용될수 있지만 이후단계의 정보는 적용될수 없다. 이를 보완 하기 위한 방법으로 Bidirectional RNN를 사용하며 일반 RNN, LSTM, GRU에 사용될수 있다.

image
image

단하나의 순환 단계가 없는 acyclic graph 형태이다. y hat <3>를 계산하는경우 노란색의 방향으로 계산된다. x<1>  , a-><1> , x<2>  , a-><2> 와 반대방향으로 부터에서의 x<4>  , a-><4> 가 같이 들어와서 상단 수식에 의해 계산된다.  


https://www.youtube.com/watch?v=U7wN1x8zsG8&index=12&list=PL1w8k37X_6L_s4ncq-swTBvKDWnRSrinI

RNN W1L12 : Deep RNNs

기존의 RNN보다 층이 여러층으로 늘어났다. 각 층은 세로 가로로 연결되어 있다. 

보통은 3층(가로로도 연결된 층)을 초과해서는 만들지 않는다. 하단부에 가로 세로로 연결된 층을 만들고 상단부에는 세로로만 쌓여있는 network를 만들기도 한다.  

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=-bvTzZCEOdM&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=12

C4W2L01 Why look at case studies?

image

자주 사용되는 cnn 종류를 보여주고 있다.


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

C4W2L02 Classic Network

image
image
image


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

C4W2L03 Resnets

residual block 바로 다음 단계나 여러 단계를 스킵하고 나갈수 있는 알고리즘이다.

image
image

residual block 이 없는 network를 plain network라고 한다. resnet은 layer수가 증가해도 training error가 증가 하지 않는다.


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

C4W2L04 Why ResNets Work

image

a l layer에서 a l+2 로 진행하는 과정에서 그사이의 a l+1의 weights, biased constant가 0인경우 바로 a l이 바로 전달 되므로 많은 수의 layers를 가진 network라도 성능이 저하 되지 않는 것 같다.  identity function is easy for residual block to learn

image

중간 중간에 pooling layer를 통해 depth가 조정된다.


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

C4W2L05 Network In Network

image

그림 하단 6 * 6 * 32 과 1 * 1 * 32 처럼 우선 channel 수는 맞춰준다. 각 대응하는 요소에 1을 곱하고 전부를 더해 하나의 값을 얻는다. 즉 여러 channel의 데이터를 압축해서 하나의 값으로 만든다. 이런 filter의 갯수를 여럿 만들수도 있다. 이런경우 32 channel의 데이터가 filter갯수 만큼의 channel로 바뀌게 된다. 즉 filter가 10개면 10 channel로 바뀌게 된다. one by one convolution을 nested network라고 하기도 한다. one by one convolution은 channel의 변경에 유용하게 사용된다. fully connected layer와 기능이 비슷하지만 같지는 않다.  

참고 자료) one by one convolution https://youtu.be/UIojaQy8SFQ

https://stackoverflow.com/a/39367644/3151712

image

192 에서 축소되어서 32로 만들수도 있고 같은 크기를 유지할수도 있다.


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

C4W2L06 Inception Network Motivation

image
image

inception module을 이용한 방법의 문제는 계산작업에 많은 비용이 든다는 것이다.

위 그림을 설명하면 cell 이 28 * 28 * 32 이므로 계산횟수는 28 * 28 * 32인데 각 cell은 5 * 5 필터와 본래 데이터 하나하나의 곱의 합이다. 그런 channel이 192개 이므로 5 * 5 * 192를 최종적으로 곱해준다.

그 해결 방법은 one by one convolution을 이용하는 것이다.

image


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

C4W2L07 Inception Network

image
image

inception network는 여러개의 inception module 로 구성된다.


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

C4W2L08 Using Open Source Implementation

이미 개발되어있는 알고리즘 , 모델을 이용하여 개발하는 과정의 간략한 설명


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

C4W2L09 Transfer Learning

image

이미 다른 사람이 training한 model을 이용하는 것을 transfer라고 한다. 때때로 framework는 trainableparameter , freeze 변수를 통해 training할 layer를 설정할수 있다. 이를 이용해서 전체를 freeze 해 놓고 필요한 부분만 training할수 있다. 또 일부를 freeze하고 나머지는 training할수도 있다. 또 전부를 training할수도 있다. 각자 경우에 따라 선택한다. 


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

C4W2L10 Data Augmentation

여러형태로 데이터를 변형해서 다수의 데이터를 얻어내는 방법을 설명한다.

기존의 color shifting방법도 있고 alex net이 개발한 pca color agumentation 방법도 있다.


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

C4W2L11 State of Computer Vision

그림 상단은 현재 상태에서의 각 분야별 데이터양 정도. speech recognition이 많은 데이터를 가지고 있고 object detection 분야는 데이터가 적다. 데이터가 적은 경우 hand engineering 작업이 더 필요하다. 이를 통해 부족한 데이터 부분을 보완한다.

여러개의 네트워크를 이용 각각 처리한 다음 결과를 종합함으로써 성능을 개선할수 있다. 그러나 production에서는 자원을 많이 필요로 하므로 사용하지 않는다.

하나의 이미지를 변형해서 총 10개의 크롭된 이미지를 얻는 방법을 설명한다. 이도 production에서는 사용하지 않는다.

data researcher가 아닌경우 기존의 network, model을 이용하는 것이 나을수 있다. 

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

C4W1L02 Edge Detection Examples

image
image
image

* 는 convulution 연산을 의미한다. convulution 연산을 수행하는 함수는 중앙하단에 나와있다. 

image


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

C4W1L03 More Edge Detection

image
image

숫자가 크면 밝은 영역을 나타낸다.

image

좌상단의 filter외에도 다양한 filter가 있으며 실제 machine learing의 과정을 통해 다른 filter를 구할수도 있다. 45, 70, 73도 기울어진 선분을 찾아낼수 있는 filter를 만들수도 있다.


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

C4W1L04 Padding

image

padding 없이 그냥 작업을 하면 점점 결과 matrix가 작아진다. 또한 모서리 부분에서 충분한 정보를 얻을수 없다. n – f +1 은 결과 matrix size를 계산하는 방법이다.

image

filter의 크기는 보통 홀수로 한다. 짝수도 가능하지만 때로는 정중앙 cell이 요긴할때가 있다. 


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

C4W1L05 Strided Convolutions

image
image

strided convolution은 이동을 한칸씩하지 않는다. 점프한다.

image
image
image

실제 다른 분야에서는 cross-correlation이라고 하는 알고리즘을 machine learining에서는 관습상 convolution알고 한다.

참고) https://datascience.stackexchange.com/a/40545

https://dsp.stackexchange.com/q/27451


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

C4W1L06 Convolutions Over Volumes

image

위 그림에서 처럼 channel의 수와 filter의 층수가 맞아야 한다. 

image
image

하나의 channel때 처럼 한칸씩이동하거나 strided된 경우 점프하면서 이동한다. 

image

우측 하단에 윗 filter는 r matrix만 값이 있으므로 red 색의 세로선을 탐색한다. 그 아래 filter는 모든 색에 대해서 세로선을 탐색한다. 

image

색깔별 탐색할수 도 있지만 추가 filter를 통해 세로, 가로선을 같이 동시에 탐색할수도 있다. 물론 다른 특성을 찾는 filter를 사용해도 된다. 


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

C4W1L07 One Layer of a Convolutional Net

image

1개의 convolution neural network layer를 보여주고 있다. filter를 weight이라고 생각할수 있다. filter와 convolution 연산으로 하고 나서 b vector를 더해준다. 그리고 나서 ReLU연산을 한다. 

image
image

https://www.youtube.com/watch?v=3PyJA9AfwSk&index=8&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF

C4W1L08 Simple Convolutional Network Example

image

점점 filter를 거친 결과 matrix는 그 크기가 작아진다. 그렇지만 depth는 깊어진다.

최종적으로 logistic regression이나 softmax의 과정을 거친다.

image

convolutional network는 보통 위의 세가지 layer로 구성된다.


https://www.youtube.com/watch?v=8oOgPUO-TBY&list=PLkDaE6sCZn6Gl29AoE31iwdVwSG-KnDzF&index=9

C4W1L09 Pooling Layers

image

해당 필터내에서 최대값을 찾아서 모아 새로 matrix를 만든다.

image
image
image
image
image

자주 사용하는 filter 크기는 2또는 3, 자주 사용하는 stride크기는 2

트레이닝할 weight 이 없다. 러닝 과정이 없다.


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

C4W1L10 CNN Example

image

conv과 pooling을 각각 구분해서 각각의 layer로 생각하는 경우도 있지만 pooling의 경우 parameters가 없기 때문에 그냥 conv와 pooling을 묶어서 하나의 layer라고 생각하기도 한다. 

image


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

C4W1L11 Why Convolutions

cnn이 아닌 다른 방법으로 하는 경우 엄청난 수의 weights, biased constant등 계산이 복잡하게 된다. 위의 그림에서 32 * 32 *3 의 이미지의 경우 cnn을 사용하지 않는 경우 14mil parameters를 생각해야 한다. 그렇지만 cnn의 경우 filter size 5 * 5에 biased constant하나를 더해주고 filter갯수를 곱하면 156의 parameters만 생각하면 된다. 이렇게 줄어들수 있는 이유는 parameter sharing 덕분이다 아래 그림 참조. 같은 모양의 parameter matrix를 이동해 가면서 계속 반복 적용하기 때문이다. 

convolution layer, fully connected layer 둘다 weights, biased constant를 이용 계산한다. 


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

Deep L-Layer Neural Network (C1W4L01)

image
image


https://www.youtube.com/watch?v=qzPQ8cEsVK8&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=37

Forward and Backward Propagation (C1W4L02)

image
image
image


https://www.youtube.com/watch?v=a8i2eJin0lY&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=38

Forward Propagation in a Deep Network (C1W4L03)

image
image

위의 그림은 위위그림과 거의 같다. 다만 layer들을 순차적으로 반복 진행하는 부분을 위해 for loop을 추가 해주고 맨위공식에 vectorization된 변수를 수정했다.


https://www.youtube.com/watch?v=yslMo3hSbqE&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=39

Getting Matrix Dimensions Right (C1W4L04)

image

위 그림은 단 하나의 데이터표본을 예로 어떻게 matrix의 크기가 유지되어야하는지 보여주고 있다. 최종공식은 우측녹색 [ 를 참조한다.

image

단하나가 아닌 여러개의 데이터표본의 경우를 예로 들고 있다. 위위의 그림과 유사하나 m이 1대신에 들어간것을 여러군데에서 확인할수 있다. 


https://www.youtube.com/watch?v=5dWp1mw_XNk&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=40

Why Deep Representations? (C1W4L05)


https://www.youtube.com/watch?v=B7-iPbddhsw&index=41&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr

Building Blocks of a Deep Neural Network (C1W4L06)

forward propagation할때 z값을 cache해서 저장한다음 backward propagation 계산에 사용한다.

위위 그림의 내용을 좀더 확장한 내용이다. cache할때 z값뿐만아니라 w, b값도 같이 저장해 주면 좋다.


https://www.youtube.com/watch?v=VTE2KlfoO3Q&list=PL1w8k37X_6L9t36xF0lt0kpHWJemk3uwr&index=42

Parameters vs Hyperparameters (C1W4L07)

최적의 parameters w , b를 구하는 것이 개발자의 최종 목적이다. parameters를 구하는 과정에서 최적의 parameters는 hyperparameter에 따라 변경된다. 위그림은 다양한 hyperparameter의 예들을 보여준다. hyperparameter 를 구하는 과정에서 많은 시행 착오를 거쳐야한다. 실질적 경험( empirical process )만이 최적의 hyperparameter 를 최단시간내에 구할수 있다. 


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

What does this have to do with the brain? (C1W4L08)