160919_Installing-Ubuntu-alongside-other-pre-installed-OS.pdf


Windows와 Mac OS X에서 듀얼 부팅으로 Ubuntu를 설치하는 가이드입니다.



Posted by 헬벨

Supervised neural network의 exercise를 끝내고, Convolutional neural network의 exercise를 해보았다.
Neural network, 특히 CNN에 관심이 있다면 매우 훌륭한 tutorial이라고 생각된다.
Linear regression부터 차근차근 MATLAB으로 실습하면서 배울 수 있다.



여기서부터는 구현하면서 잡설

MNIST input -> Convolution -> Pooling -> Softmax 의 구성.
Softmax layer의 delta와 gradient를 구하는 것은 기존의 supervised neural network에서와 동일.
Pooling layer와 conv layer에 error를 전파하는 것을 개념적으로 이해하는것이 중요.
delta_pool = (Wd' * delta_softmax); % no activate function (pooling layer)
Pooling layer는 activation function이 없기 때문에 f’(z^L) 은 항상 1이다. (identical function)
Conv. layer는 아래와 같이 구한다.
delta_conv = delta_pool2 .* (activations .* (1 - activations));

이전의 supervised nn 실습에서는 W를 앞에 곱해주었는데, 여기서 delta_conv를 구할때는 W를 곱하지 않는다.
Conv layer의 filter는 fully connected layer의 W와 다르게 특정 neuron들에 묶여 있기 때문에, 
Conv. filter와 pooling error와의 연산은 filter gradient를 구할 때 한번에 다음과 같이 계산해준다. 
        Wc_grad(:,:,filterIdx) = Wc_grad(:,:,filterIdx) + ...
            conv2(images(:,:,imageIdx), ...
            rot90(delta_conv(:,:,filterIdx, imageIdx), 2), 'valid');
위에서도 말했듯이, convolution의 weight는 fully connected와 다르게 특정 뉴런들에 묶여 있으므로 fully connected와 계산이 다르게 된다.
정답 코드를 보면 conv_delta error와 이미지를 convolution해서 gradient를 구한다.
결국 미분해보면 같은 식으로 나올지 ?? (fully connected 는 미분식이 W^T * delta 인데..)

Tutorial의 exercise에서 시키는대로 구현해보았더니 iteration을 돌다가 발산해 버려서 할 수 없이 솔루션코드를 보고 문제점을 찾았더니, 
문제는 learning rate를 주는 부분에서 각 weight parameter별로 gradient의 2norm을 분모로 alpha를 나눈 값을 learning rate로 사용한다.
        if isempty(sum_gradients)
            sum_gradients = grad .^ 2;
        else
            sum_gradients = sum_gradients + grad .^ 2;
        end
        learning_rate = alpha ./ sqrt(1 + sum_gradients);
즉, 어떤 parameter의 gradient 값을 그대로 update에 사용하는 것이 아니라, normalization을 하여 사용하겠다는 것으로 생각된다.
(어떤 weight가 작은 값의 gradient 들이 나오다가 큰 값이 나오는 경우, 큰 값이 계속 나오던 경우보다 weight에 많이 반영하게 될 듯.)



결과: 


동일한 learning rate alpha를 준 경우 (발산한다)

        velocity = mom * velocity + alpha * grad;
        theta = theta - velocity;

>> cnnTrain
Epoch 1: Cost on iteration 1 is 638.789275
Epoch 1: Cost on iteration 2 is Inf
Epoch 1: Cost on iteration 3 is 1457.666470
Epoch 1: Cost on iteration 4 is 1581.362140
Epoch 1: Cost on iteration 5 is 1467.729831
Epoch 1: Cost on iteration 6 is 1894.806809
Epoch 1: Cost on iteration 7 is 1695.544653
Epoch 1: Cost on iteration 8 is 1877.625576
Epoch 1: Cost on iteration 9 is 1737.336655
Epoch 1: Cost on iteration 10 is 1739.594208
Epoch 1: Cost on iteration 11 is 1589.624996
Epoch 1: Cost on iteration 12 is 1731.826654
Epoch 1: Cost on iteration 13 is Inf
Epoch 1: Cost on iteration 14 is 2671.770646
Epoch 1: Cost on iteration 15 is 2860.173187
Epoch 1: Cost on iteration 16 is 3144.917557
Epoch 1: Cost on iteration 17 is 3525.974768
Epoch 1: Cost on iteration 18 is 2933.235133
Epoch 1: Cost on iteration 19 is 2893.149310
Epoch 1: Cost on iteration 20 is 3454.369426
Epoch 1: Cost on iteration 21 is 2851.723443
Epoch 1: Cost on iteration 22 is Inf
Epoch 1: Cost on iteration 23 is NaN
Epoch 1: Cost on iteration 24 is NaN
Epoch 1: Cost on iteration 25 is NaN
Epoch 1: Cost on iteration 26 is NaN
...



각 parameter마다 다르게 learning rate를 주는 경우

        velocity = mom * velocity + learning_rate .* grad;
        theta = theta - velocity;

>> cnnTrain
Epoch 1: Cost on iteration 1 is 609.508667
Epoch 1: Cost on iteration 2 is 25406.446805
Epoch 1: Cost on iteration 3 is 20452.159696
Epoch 1: Cost on iteration 4 is 8794.225061
Epoch 1: Cost on iteration 5 is 8655.889132
Epoch 1: Cost on iteration 6 is 3925.461289
Epoch 1: Cost on iteration 7 is 2139.816842
Epoch 1: Cost on iteration 8 is 1805.844468
Epoch 1: Cost on iteration 9 is 1275.379768
Epoch 1: Cost on iteration 10 is 1151.133646
Epoch 1: Cost on iteration 11 is 859.827331
Epoch 1: Cost on iteration 12 is 617.373896
Epoch 1: Cost on iteration 13 is 509.149070
Epoch 1: Cost on iteration 14 is 404.800826
Epoch 1: Cost on iteration 15 is 365.095783
Epoch 1: Cost on iteration 16 is 308.166993
Epoch 1: Cost on iteration 17 is 324.043019
Epoch 1: Cost on iteration 18 is 302.039560
Epoch 1: Cost on iteration 19 is 328.277577
Epoch 1: Cost on iteration 20 is 292.860982
...






결과
Accuracy is 0.980100


Posted by 헬벨

레옹을 오랜만에 다시보았다. 

결말부분의 레옹이 경찰들이 깔린 건물을 도망쳐 나올때 밝은 출구는 왠지 천국을 의미하는 것 같았다.



프로 중에 프로인 레옹이 뒤에서 총구를 겨누는 스탠 형사를 알아차리지 못 한건 그가 마틸다를 만나면서 인간이 되었다는 증거, 그만큼 청부업자로서의 감각이 무뎌진 것이 아니려나? 

사실, 합리적인 판단이라면 마틸다를 구하러 DEA 건물로 처들어가지도 못했겠지만.

영알못이지만 총을맞고 쓰러지는 레옹을 레옹의 시점으로 흔들리는 카메라를 이용해 표현한 것이 신기했다.


참 크리스마스와 잘 어울리는 영화라고 할 수 있겠다.

'일상 > 그외' 카테고리의 다른 글

[스포있음] 레옹을 다시봤다.  (3) 2015.12.25
네이버 동영상 광고 생략  (2) 2015.11.25
ALL YOUR BAYES ARE BELONG TO US  (0) 2014.07.02
Coupon Collector’s Problem  (2) 2013.11.14
Posted by 헬벨

가사도 좋고 기타도 좋고




When you try your best but you don't succeed
When you get what you want but not what you need
When you feel so tired but you can't sleep
Stuck in reverse


And the tears come streaming down your face
When you lose something you can't replace
When you love someone but it goes to waste
Could it be worse?

Lights will guide you home
And ignite your bones
And I will try to fix you

And high up above or down below
When you're too in love to let it go
But if you never try you'll never know
Just what you're worth

Lights will guide you home
And ignite your bones
And I will try to fix you

Tears stream down your face
when you lose something you cannot replace
Tears stream down your face
And I

Tears stream down your face
I promise you I will learn from my mistakes
Tears stream down your face
And I

Lights will guide you home
And ignite your bones
And I will try to fix you

'일상 > 음악' 카테고리의 다른 글

Coldplay - fix you  (2) 2015.12.16
Bb 블루스  (1) 2014.07.11
Posted by 헬벨

Windows 사용자는 여기로: http://hellbell.tistory.com/entry/Sublime-Text-3-Latex-Plugin-설치-in-Windows-7

OS X El Capitan을 사용함.


가정: MacTex은 이미 설치됨

MacTex: https://tug.org/mactex/ 에서 다운로드


1. Sublime text 3 를 설치한다. (http://www.sublimetext.com/3)

2. Sublime text 3 를 켜고, Package Control 을 설치한다. (패키지 컨트롤은 plugin들을 쉽게 설치할 수 있게 도와주는 애드온임)

설치 방법 : ctrl + ` 눌러서 console 창 띄우고 아래 링크에 있는 내용 복사하여 붙여넣고 엔터.

(https://packagecontrol.io/installation)

3. 이제 command+shift+p 를 누르고 “install ” 입력하고 엔터 -> latextools 입력하고 선택하여 설치.

4. 메뉴의 preferences -> package settings -> latextools -> reconfigure latextools and migrate settings. 으로 설정 완료.

5. 메뉴의 tools -> build system -> LaTex 선택하여 빌드 세팅 완료. 시험삼아 아무 tex파일이나 켜서 command + b (빌드 단축키)로 빌드해보자.

(여기까지는 Windows의 방법과 똑같다.)

6. Skim PDF viewer 설치 (http://skim-app.sourceforge.net)

6-1. 다운로드된 파일이라고 Skim이 열리지 않을 경우, finder에서 skim앱을 control + click하여 drop down 메뉴를 띄우고, 열기를 눌러 실행한다.

7. Skim을 실행하고, Preference -> sync tab으로 이동.

  • Check for file changes을 체크해제
  • Preset type은 Custom을 선택
  • Command에 /Applications/Sublime Text.app/Contents/SharedSupport/bin/subl 를 입력
  • Arguments에  "%file":%line 를 입력
8. 끝.
9. Forward search는 Sublime text에서 command+b 명령으로 빌드하면, skim viewer가 뜨면서 자동으로 현재 line이 강조 표시된다.
Inverse search는 skim앱에서 되돌아가 가고픈 부분을 command+shift+click하면 Sublime text로 돌아간다. 


Posted by 헬벨