1.Related work

Mobilenet V2 - Related work

Develop of NN architecture

-model design

-hyperparameter optimization

-network pruning

-connectiviy learning(?) > shufflenet (?)

-genetic algorithms to optimizer

-reinforcement learning to architectural search

>> too complex

 

2. Architecture Strategy

a.  우린 각각의 NN 의 각 layer가 manifold of interest 를 form 한다고 알고있습니다. (명확하진 않지만 통속적으로)

b.  그 때 manifold of interest 는 더 적은 차원의 subspace 에 embedding 될 수 있다고 오랫동안 가정해왔습니다.

c.  CNN 에서 독립적인 d개의 체널 pixel 을 보면 information 이 이 곳에 Some manifolod를 형성하며 encoded 되어 있습니다.

d. mobilenet v1 에서도 보앗듯이 width multiplyer  manifold of interest 가 dense 하게 span 할 때까지 dimensinality 를 감소시킵니다.

e. 하지만 이것은 NN 이 non-linear transformation 을 포함할 때 깨지게 됩니다. ( 이 논문에서 실험하였음)

f.  Relu 를 예를 들자면, 아래와 같이 Relu 의 output 형태를 보면 1차원이기 때문에  output space 를 보면 , piecewise linear curve 를 형성합니다.

 

 

f -2 . 이것을 다르게 해석하면 Deep network 는 최종 output activation 에 의해  오직 1차원적인 classifier 로서 동작하게됩니다. 이때 output domain 에서 생각해보면 non-zero volume (finte?) 을 형성하게됩니다.

g. 우리는 추가적으로 input manifold 가 low-dimensional subspace 에 embedding 될 수 있다면,  Relu transformation 이

그 information 을 preserve 하는 것을 증명하였습니다.  필요조건이 있는데[그것의 복잡도를 포함하기 위한 set of expressible functions 찾을 수 있다면

 

 

이어서 이 정리에 대한 내용만 설명해보자면

S 는 compact, fB = Relu(BX) : Rn => Rm, P(B) = pdf on Matrix 

>> 결론,  fb 로 부터 유도(collapse~축소)된 m 차원공간 space 의 average n-volume 은, 

V - (Nm,n)/ (2^m) V = V(1-(Nm,n)/ (2^m)) = Vol(S) * 0.xxx 즉  처음 정의한 S 라는 compact 공간에 Embedding 된다.

 

 

#summary for bottleneck

1. If the manifold of interest remains non-zero volume after ReLU transformation, it corresponds to a linear transformation.

2. ReLU is capable of preserving complete information about the input manifold, but only if the input manifold lies in a low-dimensional subspace of the input space.

(3). Experimental evidence suggests that using linear layers is crucial as it prevents nonlinearities from destroying too much information

 

1.  manifold of interest 가 RELU이후 non zero volume 을 남긴다면, 이것은 linear transform에 대응됨

2. RELU 는 information 을 preserve 할 수 있는 가능성이있다, 하지만 오직 input manifold 가 low -dimensinal subspace 의 lie 될 때만

3. Exprimental 이 증명한다, Linear layer 이 information 이 destroy 되는 것을 막아준다고. 

ex

>Bottleneck 은 일종의 최적으로 압축된  Manifold 로 Encoding 된 정보의 집합

ex)CNN , Image recognition 은 2번가정에 매우 적합할 수 밖에 없다.

 

 

#Inverted Residuals

기존에 있던 Residual bolck 을 반대로 하는것이다.

Residual 에 대해서 먼저 이야기 하자면, Residual 이 사용되는 가장 큰이유는 앞서말한 정보 파괴를 막기 위해 Residual 을 만들어 주게 된다.

하지만 이논문에서는 이것을 반대로 뒤집어서 하게되는데,

첫번째 가정이 inverted residual  block 을 돌리기 이전에 이미 bottleneck 을 만든다는 것이다.

 이미 축소된 subspace 로 embedding 시키고 그것을 residual 하게되면 메모리, 연산량 측면에서 많은 이점을 갖게된다.

왜 굳이 conv 할때 expand 하는지에 대해서 묻는다면?

이 channel expand 의 역할은 비선형을 포함 할 수 있도록 도와주는 Detail 의 역할을 한다고한다.

결론적으로 채널수 / memory 수를 비교해보면 더  bottleneck 을 만들어 놨다는 것을 알 수 있다.

 

 

이것을 보면 Stride 가 1/2 일 때  block 이 상이 한데,

Stride 2 는 Residual 이 없는 것을 확인 할 수 있다.

그 말인 즉슨,  Resolution 자체가 줄어들 때는, 체널을 넓늘려가며 충분히 information을 담는 parameter 자체는 늘어나도록 

신경을 썻고, Stride 1  ,Resolution 자체가 유지될 때는, Inverted Residual 을 넣어 원래 정보를 유지시키는 대 집중 하고, 그안에서 더 높은차원의 data 를 expand and squeeze 를 사용해서 추출해서 detail 로 사용 했다고 보면 된다. 

 

Q 64 >96 160 >320 의 역할은 무엇일까. 오히려 체널을 bottleneck 을 했다가 다시 넓히는 이유가 있을까?

 

 

결론 : impressive as our ecg signal 

'Machine.Learning > ML- Models' 카테고리의 다른 글

Mobilenet V1  (0) 2021.01.25
Generative vs Discriminative  (0) 2019.12.22

1.introduction

key = improve of efficiency

 

Related work

method1 : 네트워크자체를 경량화

-Enception and Xception

-Extremely Factorized networks

-Squeezenet

 

method2 : fatorizing pretrained NN

-distilling

-hashing , pruning

-vector quantization

 

mobilenetv1 의 소개와 Related work 시작이다, 

다양한 deeplearning이 발전되면서 당연히 네트워크를 어떻게 효율적으로 만드느냐에 대해서도 발전이되어왔다.

첫번째 방법으로서는 네트워크자체를 경량화하는 방법이있다. 1x1 3x3 등을 섞어서 가볍고 깊은 네트워크를 사용하는 inception 과 그것을 더 개선한 Xception 등이있습니다. Squeezenet 같은 경우에도 그러한 부분을 개선함

 

 

2. Key Architecture

 

a.1x1 convolution (= pointwise convolution) (출처 hwiyong.tistory.com/45)

  1. Channel 수 조절
  2. 연산량 감소(Efficient)
  3. 비선형성(Non-linearity)

 

network 차수는 높아지면서, parameter 는 낮아진다. 

>> 예를 들면 어떤 문제를 f 를 x,y,z의 대한 함수로 근사할 때 

f = x^4 +y^4 +z^4 + x^2yz + xy^2z + xyz^2  대신
f = x^10 + y^10+ z^10 ( 소량의 term ,but high degree) 를 놓는 것이라 생각한다.

 

다만 뭐가 f 에 더 정확하다고 볼수는 없다, 그러나  더 강하게 휘면서도 simple 해진다고 본다. 명확히 분류의 경계가 있는 문제에 대해서는  좋아 질 수 밖에 없다. 

 

b.depthwise convutions

위의 1 by 1 point wise conv 과 모티브는 비슷하다.  depth 가 깊어지고, parameter 는 작아지는(width 가 작아지는)

효과가 있다.

일종의 3 by 3 by #c  의 conv filter 를 가진 cnn 이 3 by 3by 1    * 1 by 1by c 의 두개의 Matrix factorization

로 분해 가 되면서 2개의 cnn 이 원래의 conv filter 역할 을 대체 하는 것이다.

cnn
deptwise

 

 

 

 

test for mnist

원래 CNN

conv1 = nn.Conv2d(1, 6, 5, 1)  # 6@24*24
# activation ReLU
pool1 = nn.MaxPool2d(2)  # 6@12*12
bn1 = nn.BatchNorm2d(6)
conv2 = nn.Conv2d(6, 16, 5, 1)  # 16@8*8
# activation ReLU
bn2 = nn.BatchNorm2d(16)
pool2 = nn.MaxPool2d(2)  # 16@4*4


self.conv_module = nn.Sequential(
conv1,
nn.ReLU(),
bn1,
pool1,
conv2,
nn.ReLU(),
bn2,
pool2
)

deptwiseconv

super(depthwisecnn, self).__init__()
conv1 = nn.Conv2d(1, 1, 5, 1)  # 1@24*24
conv1_2 = nn.Conv2d(1, 6, 1, 1)  # 6@24 24
bn2 = nn.BatchNorm2d(6)

# activation ReLU
pool1 = nn.MaxPool2d(2)  # 16@12*12

conv2 = nn.Conv2d(6, 6, 5, 1)  # 6@8 8
conv2_2 = nn.Conv2d(6, 16, 1, 1)  # 16@8*8
bn3 = nn.BatchNorm2d(16)

# activation ReLU
pool2 = nn.MaxPool2d(2)  # 16@4*4
self.conv_module = nn.Sequential(
  conv1,
  conv1_2,
  nn.ReLU(),
  bn2,
  pool1,
  conv2,
  conv2_2,
  nn.ReLU(),
  bn3,
  pool2
)

# of params

acc 97.16 > 87 (deptwise)

 

*with batch norm

depthwise cnn 이 배치놈의 효과를 많이 받는다. (cnn 은 layer 하나로 처리하는것에 최적화되어있는듯)

97.98 > 97.16 (deptwise)

 

 

 

'Machine.Learning > ML- Models' 카테고리의 다른 글

mobilenet v2, mobilenet v3  (0) 2021.01.28
Generative vs Discriminative  (0) 2019.12.22

2019년, ML 과 수학 공부를 위해 모대학원 수학과에 입학하고

강의 도중 ML 강의의 가장 기본이 된다고 하는 Andrew ng 강의노트를 Study 하고 재밌는 실험을 해보았다.

Andrew Ng 의 강의 노트에서는 머신러닝을 학습하기위해

사용되는 모델들을 Generative 한 모델과 Discriminative 한 모델로 분류 하는데,

Discriminative 한 모델은 판별적인 모델로서, 우리가 가지고 있는 데이타로 특정문제에 대해 답을 직접적으로 찾아내는

보다 직관적인 학습방법을 통해 학습을 진행하고 솔루션을 찾아낸다.

그렇기 떄문에 목적이 있는 클러스터링이나 분류 등 판별문제에 대해서는 강한 면모를 보인다. 

 

Generative 한 모델은 생성적 모델로서 데이터 자체가 어떤 분포를 가지고 있는지 학습하고, 그 분포에 따라서 

우리가 찾는 문제가 O일지 X지에 대해서 확률적으로 계산한다.

 

언뜻 보기에는 비슷해보이지만 두 모델은 생각보다 큰 차이를 가진다.  그 내용과 실험등에 대해서 이어서 설명하겠다.

Definition and Examples of Generative

  • Generative : providing a model of how the data is actually generated P(X|Y) & P(X)

  • Generative algorithms : make structural assumption on the model Estimate parameters of P(X|Y), P(X) directly from training data

  • Naïve Bayes

  • Gaussian mixture models

  • Gans - Generative Adversarial Networks

Definition and Examples of Discriminative

  • Discriminative : simply providing classification splits P(Y|X)

  • Discriminative algorithms : classify points without providing a model of how the points are actually generated

  • ‌Logistic regression

  • Decision Tree

  • Scalar Vector Machine

 

 

Generative Model 중 대표적인 Naive Bayes 알고리즘의 경우

P(x | y) 를 위와같이 sum up 한다. (l 은 라플라스 계수이다.) 결국 조건부확률 정의를 이용하여 카운트 하는 방식이다.

 

그리고 최종적으로 우리가 원하는 P(y | x)를 구해낼 때 Bayes Theorem 을 위와 같이 사용하게된다.

P(y | x) * P (x) = P(x | y) * p (y)  

 

P(y = T| x) = (P(x | y=T) * P(y=T)) / (p(x | y = T) * P(y=T) + p(x|y=F) * P(y=F))  < 훈련된과 가정을 통해 모두 통해서 모두 구해 낼수 있다.

 

이 때 모델이 Generative 하다라고 부르는 이유는 p(x|y=F) , p(x | y=T) 이항 들 때문이고, 이것들이 Generative 모델의 핵심이다.,

이 것을 DisCreate Variable 의 X 마다 sumup 을 통해 확률을 지정할 수도 있고,

이 것을 Contininous Variable 의 X 마다 sumup 또는 특정 분포를 따를것이다 라는 가정을 통해 확률을 지정할 수 있다.

 

 

반대로 Discriminative model 은 단순하다.

p(y=T | x) 를 구하기 위해서

위와 같은 cost function과 sigmoid function h(x) 를 정의한다.

cost function 을 위와 같이 정의하면 costfunction 은 주어진 x,y 에 대해서 h(x) 가 y 에 가까울 수록 최소가된다.

h(x) 를 결정하는것은 seta 인데 seta 가 결국 우리가 훈련시킬 변수이다.

 

이 cost function 은 seta 에 대해서 convex 함수이고, 특정 seta 값을 가질때 J(세타) 는 최소점을 가질 것이고,

그점을 찾기위해서

그라디언트 방향으로 세타를 업데이트 시키다보면 , 어느정도에서 수렴하게되는데,

그 점이 주어진 x 에 대해서 y를 얻기 위한 최적의 세타이다.

 

 

 

우리는 다시 주재로 돌아가서, Generative 모델과 Discriminative 모델중 어떤게 더 좋을까? 라는 주제로 돌아가자,

 

그러기 위해서는 가장 좋은 방법은 여러가지 dataset 들에 대해서 가장 simple 한 로지스틱/나이브베이시안을  돌려보고 비교해볼 것이다.

 

이것은 까다로운(?) 분포의 dataset 이다. O 와  X 를 분류하는 것이 우리의 목표이다.

 

위 직선은 로지스틱 레그레이션을 돌린 결과로, 수렴된 세타 값을 통해 분류기준이 어떻게 되었는지 plot 을 해보면,

세타를 normal 로 갖는 직선이될것이다. (공간에서는 plane , 보통 (세티^T)x = b 인 plane 이라고한다.

이 plane 기준으로 o 와 x 를 나누었을때, costfunction 이 최소화 된다. 결과는 0.6정도였던가.

 

이모델을 좀더 발전시켜서 2차원 poly rogistic Regression 으로 돌릴 수도있다.

그러기위해 가장 간편하게 X 의 dataset 의 차원을 아래와 같이 2차 항 까지 늘려주면된다.

X = { 1, x1, x2 }   >> X = {1, x1, x2 ,  x1^2, x2^2, x1*x2 }

 

 

이 문제에 대한 소스는 모두 아래 git 에 올려놓았다.

https://github.com/Sangil55/logregVsNavBayes

 

 

반대로 이모델에 Naive Bayesian 을 돌려보자.

 

일단 data 를 보면 x1,x2 모두 data 자체가 discrete 하다. 그런 dataset 에 대해서 navie bayesian 을 돌리기 위해서는

data 자체를 discrete 하게 만드는 방법과,  p(x|y) 가 특정 분포를 띌 것이라고 assumpt하는 방법이있다.

1.p(x|y) 가 특정 분포를 띌 것이라고 assumption

 

우리가 받은 dataset 을 통해 Y = true 일때 뮤와 시그마를 구해낼 수 있다. (평균과 분산)

우리는 그 데이타가 가우시안을 띌거라고 assumption 을 하자

그렇게 assumption 을 하면, 미리 구해낸 뮤와 시그마를 통해 

p(x|y=true) 의 분포를 위의 식 모델을 통해 바로 구해낼 수 있는 것이다.!

그렇다면 특정 x 가 들어왔을때 y = true 일 확률을 베이시안을 구해낼 수 있을 뿐더러 

이 모델이 왜 Discriminative 보다 강력한 면이 있는가하면, 위 확률 분포를 통해 특정 점을 sampling 을 할 수 있다는 점이다.

이 개념은 후에 생성적 모델 ( 학습된 결과를 통해 비슷한 data 를 generate)  하는 응용으로 이루어진다.

 

 아무튼 그가정을 통해 구해낸 평균과 /분산을 통해 문제를 분류해낸 결과는 아래와 같다.

 

두번째 그림이 Naive Bayesian 을 multinomial normal distribution 을 따른 다고 가정하고,

원래 의 평균/분산이 기존과 다르다고 생각하고 아래그림 처럼 확률분포를 modify 하기도 쉽다.

 

 

Naive Baysian 의 경우 좀더 discreate 한 data 에 대해서 좀더 잘 맞기 떄문에

우리는 data 자체를 discretize 하기도 하고, 그방법은 아래와 같이 여러가지이다.

  

 

그중에 가장 간단한 Equal width Interval 을 구현해보면

 

 

아래와같이 격자무니 data 가 만들어졌다.

소스는 github에 있다.

http://github.com/sangil55

 

이 결과는 NB-eqaul width discretize 한 결과가 dicision Tree 와 매우 비슷하다는 직관을 불러일으켰다.

 

그래서 NB vs Dicision Tree 라는 주제로 리서치를 해보았더니,

 

 

https://thesai.org/Downloads/Volume4No11/Paper_5-Performance_Comparison_between_Na%C3%AFve_Bayes.pdf

 

위와같이 누군가가 성능을 비교해노았다.

요역하면 NB 가 낮은 차원에비해 Dicision Tree 급에 높은 성능을 보인다. 라는 결론이다.

결국 결론내자면 NB는 낮은 차원으로도 높은 차원의 Data 도 분석해낼 수 있다는 것이다.

이것이 또한 generative model 의 강점이기도하다.

 

 

한편 Andrew ng 도 비슷한주재로 분석해본 페이퍼가있는데,

 

Andrew Ng

 

  1. Logistic-Regression has lower asymptotic Erro  2.Bayes converges to its asymptotic Error more quickly
    이 페이퍼를 요약하자면, Logistic Regression 이 보다 general 한경우에 더 작은 수렴 error을 갖는다.
    결국 data fit 이 잘된다라는 내용이다., 그리고 NB 의 경우 더작은 data 를 통해서도 좋은 학습률을 갖는다.

Ref - http://ai.stanford.edu/~ang/papers/nips01-discriminativegenerative.pdf

 

간단히 이번테스트에서 결론을  내보면 아래와 같다.

 

Generative

Strong assumption

Discriminative

Weak assumption

Advantages

stronger modeling assumptions

requires less training data to learn “well”

Can take Domain knowledge

Less danger on overfitting

Can generate sampling data

Act as high dimension model 

Simple to imply

don’t need data pre-conception

Various algorithms

significantly more robust to

deviations from modeling assumptions

Efficient for general Discrimination Problem

Disadvantages

Hard to implement

Asymptotic Error is higher

Danger on overfitting

 

'Machine.Learning > ML- Models' 카테고리의 다른 글

mobilenet v2, mobilenet v3  (0) 2021.01.28
Mobilenet V1  (0) 2021.01.25

+ Recent posts