CNN case study

Posted 2016. 6. 14. 06:48

강의 : https://youtu.be/KbNbWTnlYXs


이번 스터디는 CNN에 대한 연구 사례이다.

각각의 방법들이 어떻게 network을 구성하는지를 알 수 있다.


사실, layer 구성이 왜 이렇게 하는지 잘 이해되지 않는다.

아래 유명한 분들이 어떤 network를 제안했는지가 있는데, 시간이 된다면 하나하나 봐야 겠다.


LeNet-5 [LeCun et al., 1998]


AlexNet [krizhevsky et al., 2012]


GoogLeNet [Szegedy et al., 2014]


ResNet [He et al., 2015]

=> 3.6 % top 5 error


Convolutional Neural Networks for Sentence Classification [Yoon kim, 2014]

: 내가 공부할 부분이다.


DeepMind's AlphaGo

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
ConvNet의 Conv 레이어 만들기  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09
Write your message and submit

CNN : Max pooling 과 Full Network

Posted 2016. 6. 14. 06:41

강의 : https://youtu.be/2-75C-yZaoA


pooling : sampling이라고 보면 된다. 그 sampling을 통해 추출된 데이터를 층층히 쌓아 사용한다.


max pooling은 각 filter size에서 가장 큰 값을 사용하는 것이다.


1 1 2 4

5 6 7 8

3 2 1 0

1 2 3 4


2 x 2 filters and stride 2 일때의 max polling 값


6 8

3 4


Fully Connected Layer(FC Layer) : (CONV RELU POOL) + ... 이런 layer를 연달아 연결한 형태로 볼 수 있다. <= 맞게 이해한 것인가?;;;


http://cs.stanford.edu/people/karpathy/convnetjs/demo/cifar10.html

여기를 보면 각각의 layer가 어떻게 작동하는지 이해할 수 있다고 한다.(나는 잘 모르겠다.)

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
ConvNet의 Conv 레이어 만들기  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09
Write your message and submit

ConvNet의 Conv 레이어 만들기

Posted 2016. 6. 14. 06:33

뒤로 갈수록 이해하기 어려워진다.

오늘 공부한 내용은 Convolutional Nerual Network에 대한 내용이다.


강의는 https://youtu.be/Em63mknbtWo 를 참고.


CNN은 고양이를 통한 실험에서 시작되었다고 한다.

고양이에게 이미지를 보여주고, 뉴런이 활성화되는 부분을 관찰하니, 이미지의 부분 부분 마다 활성화되는 곳이 달랐다는 것이다.(Hubel & Wiesel, 1959)


전체적인 그림은 하나의 이미지를 잘라서 아래처럼 구성하는 것이다.

CONV RELU CONV LERU POLL CONV RELU ... FC(fully connected nerual network) 


32 X 32 X 3의 이미지가 있다면, 이미지의 일부분만 처리하는데(filter)

이런 filter를 사용해서 하나의 숫자(one number)로 만든다. =wx + b를 사용해서(=ReLU(Wx + b)

ex) filter size : 5 X 5 X 3,  w1x1 + w2x2 + w3x3 + ... + w25x25 + b


이렇게 필터를 통해 하나의 숫자로 만드는 과정을 이미지에서 stride size에 따라 추출한다.

stride size = 1이라는 것은 N X N 사이즈에서 1씩 shift한다는 의미이다.


7 X 7 이미지에서 3 X 3 filter, stride 2로 뽑는다면 3 X 3이 나온다.


즉, (N -F ) / stride + 1


실제로 사용할 때는 0 padding을 써서 사방에 0을 추가한 뒤 같은 size를 얻도록 하여 사용한다.

=> filter 사용으로 이미지가 작아지는 것을 방지


이런 filter를 여러개 적용하는 것이 convolution layer가 되고, 이를 계산하면 activation maps(x, y, 6)이 이렇게 계산된다.


(CONV + RELU) + (CONV + RELU) + (CONV + RELU) + ...


이런 형태가 CNN이라고 한다.


* 이번 블로그는 주저리 주저리 적어놓은 글이되었다. 좀 더 내용을 이해한다면 수정해야겠다.

* 그리고, 글로만 설명하기에는 부족함을 느낀다. 그림을 그려야 하나 싶다.

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
ConvNet의 Conv 레이어 만들기  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09
Write your message and submit

lec 10-4 레고처럼 넷트웍 모듈을 마음껏 쌓아 보자 : https://youtu.be/YHsbHjTBx9Q


제목처럼 여러 형태로 조립해서 딥네트워크를 구성해볼 수 있다는 내용이다.


- feedforword neural network : 쭉쭉 위로 쌓는 형태


- fast forword : 중간 출력을 몇단을 건너띄고 연결하는 형태


- convolutional nerual network : split & merge를 통해 network를 구성하는 형태


- recurrent nerual network : forword + 옆으로? 나가는 형태


이번 강의는 내가 글로 정리하는 것보다는 강의자료의 그림을 보고 이해하는 것이 좋을 것 같다.


강의 자료 : http://hunkim.github.io/ml/lec10.pdf

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
ConvNet의 Conv 레이어 만들기  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09
Write your message and submit

Dropout & Ensemble

Posted 2016. 6. 9. 05:59

김성훈 교수님의 강의를 보면서 딥러닝을 공부중.

정리를 하지 않고 보다 보니, 나중에 무얼 봤는지 조차 기억나지 않아서 간단히 블로그에 남긴다.


lec10-3: Dropout 과 앙상블 : https://youtu.be/wTxMsp22llc


overfitting : training dataset에 model이 fit된 상태


solution for overfitting

- more training data

- reduce the number of features (딥러닝에서는 상관없다고 함)

- regularization


여기서는 regualarization에 대해서 좀 더 설명


cost + (lamda)(sigma) w^2


여기서 (lamda)를 regularization strength라고 한다.

(lamda)의 값에 따라 강도를 이 0이면 끄는 것이고, 값에 따라 영향력이 달라진다고 보면 된다.

이것을 l2reg라고 한다.


(tensorflow code)

l2reg = 0.001 & tf.reduce_sum(tf.square(W))


그리고, NN(neural networks)에서는 overfitting을 해결하는 다른 방법이 있는데, 그것이 dropout이다.

딥네트워크에서 몇몇 노드를 끊어버리는 방법이다.

(단, 학습시에만 dropout을 사용하고, 실제로 적용할 때는 dropout을 사용하지 않는다.)


(tensorflow code)

dropout_rate = tf.placeeholder("float")

_L1 = tf.nn.relu(tf.add(tf.matmul(X, W1), B1)) <= 이렇게 한 노드를 넣어서 

L1 = tf.nn.dropout(_L1, dropout_rate)


# train

sess.run(optimizer, feed_dict={X: batch_xs, batch_ys, dropout_rate : 0.7})


# evaluation

sess.run(optimizer, feed_dict={X: batch_xs, batch_ys, dropout_rate : 1})


마지막으로는 ensemble이 있다.

머신이 많고, 학습 데이터도 충분할 때 사용하는 방법이다.

training set 마다 초기값이 달라 결과도 조금씩 다르고, 모드 학습시킨 다음에 결합하는 것이다.

=> 여러명의 전문가에게 결과를 얻는 것을 보면 된다.

'Computer > DeepLearning' 카테고리의 다른 글

CNN case study  (0) 2016.06.14
CNN : Max pooling 과 Full Network  (0) 2016.06.14
ConvNet의 Conv 레이어 만들기  (0) 2016.06.14
레고처럼 넷트웍 모듈을 마음껏 쌓아 보자  (0) 2016.06.09
Dropout & Ensemble  (0) 2016.06.09
Write your message and submit