operator01.jpg



안녕하세요? 교주  jHWkRD7U-JMY1ZsyMYcpRynAc025IiHAaXuuRNuwyo0ksSkY6zxs8kzriniUO5TDBbIo0yPFIEtOjhvtWO8iXn-ZTGBVtN1g_wHgSwqyxcU4Jin3gpk 입니다.

Neural Network 시리즈 3부입니다.

바로 강의 시작하겠습니다.



ANN0201.png 


우선 MATLAB에서 Start -> Toolboxes -> Neural Network -> Neural Network Start (nnstart)를 클릭하시거나 

또는 command window에서 >>nnstart를 입력하셔서 Neural Network Start 다이알로그를 띄웁니다.

각 Tool에 대한 설명은 지난 시간에 드렸구요

각 Tool은 사용방법이 매우매우 유사하므로 한가지 Tool만 사용하실 줄 아시면 나머지 Tool의 사용에도 문제가 없으실 거구요

위의 4가지 Tool중 저는 Pattern Recognition Tool로 실습을 해보고 사용방법을 익혀 보겠습니다.

Pattern Recognition Tool 버튼을 클릭 해주세요~


ANN0301.png

(그림을 클릭하시면 큰 그림을 보실 수 있습니다.)


그러면 Pattern Recognition Tool에 대한 간단한 설명을 해주는 Page가 나옵니다.

한번씩들 읽어보시구요 ^^ Output Layer의 Neuron이 Sigmoid처럼 생긴것에 주목하세요~

Next를 눌러 다음 페이지로 넘어갑시다.


ANN0302.png


이번 강좌에서는 MATLAB에서 제공하는 Example Data Set으로 강좌를 진행하겠습니다.

여러분이 직접 데이터 셋을 만드는 방법은 잠시후에 설명드릴께요~ ^^

위의 화면에서 좌측 하단에 있는 Load Example Data Set 버튼을 눌러 주세요..


ANN0303.png


보시다시피 MATLAB에서 기본적으로 NN Tool을 연습하기 위한 예제 데이터들을 제공하고 있습니다.

각 예제 data를 선택하시면 오른쪽에 각  data에 대한 설명이 나오구요~

저는 Iris Flowers(붓꽃) 데이터를 사용하겠습니다.

설명을 읽어보시면 각 아이리스의 꽃잎과 꽃받침의 길이와 넓이를 가지고 3가지 종류의 아이리스로 분류하는 NN을 Train 시키는 것이 목적입니다.

Import 버튼을 누르세요~


ANN0304.png


그러면 MATLAB Workspace에 irisInputs와 irisTargets가 Load된 것을 확인할 수 있습니다.

Input data 크기(4x150)과 Target의 크기(3x150)에 주목하세요


ANN0305.png

Input data는 150개의 Sample을 가지고 있습니다. 각 Sample은 4개의 element로 구성되어 있습니다. 이해가 가시나요?

Pattern Recognition의 경우 Supervised Training이므로 Input data의 Sample의 개수와 Target의 Sample의 개수는 정확히 일치 해야합니다.

Sample의 개수가 맞지 않으면 Training을 진행할 수 없어요 ;;

즉 나중에 여러분이 직접 Data set을 구성하실 때 Sample Size만 잘 맞춰주시면 되요 o(^o^)o


Target data set의 경우 3개의 카테고리(3개의 Class)중 해당하는 순서의 element를 1로 체우시면 됩니다.

예를 들어 Input data가 [5.1; 3.5; 1.4; 0.2] 인 녀석은 첫번째 종에 속한다고 한다면 Target sample은 [1; 0; 0] 이 될 것입니다.


다시 NN Tool 화면으로 돌아옵시다.


ANN0306.png


이제 빨간색 박스안의 내용이 무슨 말인지 이해가 가시죠? =(=^ㅅ^=)=

row와 column의 방향을 잘 못잡으시면 엉뚱한 결과가 나오니 주의하세요..

자~ 다시 Next 버튼을 눌러 다음 페이지로 갑시다.


ANN0307.png


Training은 말그대로 Neural Network를 학습시키는데 사용되는 Data set입니다.

그런데 잘 생각해보세요. 사용가능한 모든 data set을 Network Training에 사용한다면 어떤 결과가 나올까요?

아마 100% Target으로 정확히 분류하도록 Network를 학습시킬 것입니다. 100% 정확하게!! 그럼 좋은 거 아닌가? 

아니아니아니죠~!! 위의 경우는 Network를 Over Training 시키는 결과를 가지고 옵니다. 

마치 장님이 코끼리 다리만 만져보고 '코끼리는 기둥처럼 생긴 녀석이구만' 하고 결론 내리는 것과 같습니다.

Over Training을 방지하기 위해서 Validation data set으로 검증을 합니다.

즉 Validation data로 학습된 Neural Network가 학습에 사용된 data set 이외의 경우에도 분류를 잘하는지 확인하는 거죠~

Testing data set으로는 최종적으로 학습된 Neural Network의 성능을 평가하구요~

어떻게 돌아가는지 조금 이해가 되시나요? ^^

Training / Validation / Testing data 셋의 크기는 여러분들이 마음대로 조정할 수 있구요~ 

저는 모두 Default로 두고 다음 페이지로 넘어가겠습니다.


ANN0308.png


Hidden Layer의 Neuron의 개수도 정할 수 있구요

(GUI에서는 Hidden Layer를 몇단계로 구성할지 어떤 Neuron을 사용할 지 정할 수 없지만 Coding을 하시면 이것도 바꿀 수 있습니다.)

Training을 시켰는데 분류의 성능이 좋지 못하다면 Hidden Layer의  Neuron의 개수를 늘이면 성능이 향상됩니다.

다이알로그의 하단 부분을 보시면 NN이 어떤 구조로 형성되어있는지 쉽게 확인하실 수 있습니다.

W는 Synapse의 연결강도를 나타내는 Weighting Vector 이고 b는 bias를 나타납니다.

Hidden Layer의 Neuron의 개수도 저는 10개 그대로 두고 Next 버튼을 누르겠습니다. ^^


ANN0309.png


드디어 Training 버튼이 보이는 군요 o(^o^)o

번개 모양의 Training 버튼을 폭풍 클릭!!


ANN0310.png


학습 진행 상황을 볼 수 있는  Neural Network Training 창이 뜨구요~

27번의 Iteration 만에 학습을 종료했네요 ^^ 

(물론 학습을 종료하는 조건도 여러분들이 모두다 지정할 수 있어요)

다시 메인 NN Tool로 돌아와보면


ANN0311.png


학습된 Network의 성능을 확인할 수 있습니다.

오른쪽의 Result를 보시면 MSE(Mean Square Error)와 %E가 보이는데 MSE와 %E 의 E가 Error의 약자이므로 MSE, %E는 작을 수록 좋습니다.

Result의 Plot Confusion 버튼을 클릭 해보세요


ANN0312.png


그러면 Training / Validation / Testing / 모든 데이터 각각에 대한 4개의 Confusion Matrix가 나타납니다.

위의 표를 어떻게 읽는지 설명드리겠습니다.


(이하 생략)

생략된 내용은 VIP 게시판에서 확인 할 수 있습니다.

http://www.matlabinuse.com/index.php?mid=VIP_ONLY&page=1&document_srl=10688


profile