Soohyun’s Machine-learning

Loss function + Convolutional Neural Networks 본문

Lectures/CS231N (ML basic)

Loss function + Convolutional Neural Networks

Alex_Rose 2017. 10. 16. 10:30

Loss functions



Hinge loss : (SVM 기반?)



잘 맞추면 0에 가깝게 되고, 못 맞추면 2에 가깝게 된다. 

 


cross-entropy loss  = negative log likelihood





 (theta) 


                                     ----------> parameter의 크기를 억제시킨다.




YOLO (visual recognition?? 인듯?)


x, y, w, h, c

             ----> condidence : 이 box 가 물체를 담고 있을 확률. 

                     c와 p를 곱하면 class 별 확률이 나온다. 그래서 이걸 기준으로 높은 것들을 보면 물건이 있을 확률이 높아진다. 




SSD (YOLO를 좀 더 정확하게 만든 것)


IoU (intersection uniton) : 겹치는 영역



Smooth L1 : -1~1 까지의 구간은 L2를 쓰고, 나머지는 L1을 쓰는 것 





activation function : 확률 구하는 부분


활성화 함수 -> monotonic function (단조 증가 함수)


1) unipolar 단극성 / bipolar 양극성

2) linear / nonlinear

3) contimuous 연속 / binary 이진






CNN


neuron fire : 

activation map : filter 를 적용해서 만들어진 전체 결과물.


- input에서 image의 channel과 filter의 채널수는 같아야 한다. 

- img size + (padding *2)는 stride에 dependent 하겠지만.. 뭐 어쨌든 filter를 거친 결과값이 정수형이 되게 해야한다. 

- filter를 거치고 나온 activation map의 마지막 shape은 4

ㄴ 이거 stride를 할 때, channel 3개를 전부 다 합쳐서 1개의 이미지값으로 보고, max pooling을 하는건가?

    그렇다면 output으로 나온 activation map이... 32 x 32 x 10 (필터 개수)가 되는 걸 이해할 수 있지만..


근데 그러면 초반에 32 x 32 x 3에서 (padding을 하기 전) channel 개수를 RGB로 해주는 건 왜지?


단순한 계산으로는 32 x 32 x 3에 패딩을 해서 36 x 36 x 3이 되고, 거기에서 max pooling을 10개의 5 x 5 필터로 해주니까

결과가 되는 output (activation map)은 32 x 32 x 30이 되어야 할 것 같은데.. 왜?? 



처음의 input image에서의 channel과 output 에서의 마지막 숫자는 다른 개념인건가?? 각 10개의 필터들의 값이 모여서 1개의 pixel을 구성하기 때문에?? (참고 : http://pythonkim.tistory.com/52)




rules of thumb : 경험에서 우러나 실용적으로 사용하는 수단이나 방침을 뜻함. 자신의 경험에 의거한 판단. 대략, 어림짐작, 눈대중.. 


pervasive : 퍼지는, 골고루 미치는, 보급하는, 스며드는


covariance : 공분산 

annoyance : 

holistic : 

subtle : 

twitch : 

tweak : 

convex hull : 

brittle : 

scalable : 

hand-specify : 

ingest : 

spit : 

concise : 

backwards :

afford : 

deploy : 

perspective : 

spurious : 

topology : 

equidistant : 

coordinate : 

insure : 

alleviate : 

manifold : 

disaparate : ??

hone : 

clutter : 

unravel : 

unwieldy : 

formalize : 

denote : 

formulation : 

compactify : 

preferable : 

weigh : 

snippet : 

spector : spector ?






plopping : 

spatial : 

dimension-wise :

intersperse : 

subtlety : 

hierarchy : 

compensate : 

compatible : 

interval : 

asymmetric : 

incorporate : 

muffled : 

allued : 


one filter = one activation map

convoultions of two layers? 

downsamples : 

terminology : 

convolutional outputs :

spatial dimension : 


five spatial locations horizontally :  (필터를 5번 가로로 슬라이딩 한다.)




example time : 


Input volume : 32 x 32 x 3

10 5x5 filters with stride 1, padding 2


output volume size? 






1개의 필터가 

32번 가로로 스트라이딩

32번 세로로 스트라이딩

32x32x3 이 이 필터 1개가 가지고 있는 값

(max pooling)


10개의 5x5 필터를 통과해서 나온 결과값

32 x 32 x 10

(32 x 32의 애들이 10개가 있당. 이 10개가 모여서 1개의 pixel값을 형성한다.

R,G,B에서 각각의 R값, G값, B값이 모여서 1개의 pixel 값을 형성하듯이!!)


그럼 여기에서 말하는 number of parameters 의 뜻은?

    ㄴ 이 연산을 수행하는 해당 convolution layer가 가진 parameters의 개수

        filter가 1번 연산을 할때마다 (epoch이 아님) 몇 개의 parameters 가 세팅되어져야 하는가..라는 측면인듯?

      

        필터의 사이즈가 5 x 5이고, 이게 1번 stride할 때, R,G,B 전부를 데려오므로 5 * 5 * 3이 된다.

         여기에 bias값인 1을 더해서 1번 stride할때마다 76개의 parameter를 사용하게 된다. 

 

         그래서 첫번째 위치 (1개의 픽셀을 만들기 위해서)를 10개의 filter가 거친다고 생각하면..

         1개의 pixel을 내놓기 위해서 이 연산이 가져야 하는 parameter의 개수는…


          (1번 stride시에 사용되는 parameter의 개수 + bias) * 필터의 개수 = 76 * 10 = 760개가 된다. 



Comments