Written by coh at home

[Maixbot]AI concept review with CNN 본문

Advanced/Maixbot Project

[Maixbot]AI concept review with CNN

och 2023. 7. 7. 13:38

AI, ML, Deep Learning은 무슨 차이일까.

집합으로 나타낸다면 ML은 AI의 부분집합이고 DL은 ML의 부분집합이다. 

 

AI는 가장 큰 범주로서 그냥 쉽게 모든 AI 기술이다. 

자율주행차를 보고 AI기술이 사용되었다고 말하는 것과 같다.

 

근데 이런 AI를 구현하기 위한 많은 방법들이 존재하고 ML과 DL이 이에 해당한다.

ML은 코드로 명시되지 않은 동작을 학습하여 수행하는 알고리즘을 작성하는 방법이고 

DL은 ML의 일부분인 인공신경망을 활용하여 많은 데이터를 학습하고 성능을 뽑아내는 방법이다. 

 

일반적인 ML과 DL의 차이는.. 

사진에 대한 classifier를 만드는 경우를 생각해보면 

ML은 사람이 인식할 수 있는 feature를 뽑아서 학습을 시킨다.

반면에 딥러닝은 컴퓨터가 인식하는 feature를 찾고 학습을 한다.

 

DL의 학습의 단계를 살펴보면

training과 test로 나뉜다. test는 성능을 평가하는 것이니 training에 대해 집중해보겠다.

간결한 모델은

 

Data 입력 ->  Neural Network -> Loss function확인 후 재학습 결정.

Loss 는 정답과 예측값의 차이값을 의미한다. 가장 많이 알려진 것으로 MSE(Mean Square error)가 있다. 

가장 Loss가 작은 방정식을 얻어낸 후 이 방정식에서 최적값은 어떻게 구할까?

보통 미분했을 때 기울기가 0이 되는 최대, 최소값을 구하게 될 것이다. 그리고 이때 사용되는 것으로 가장 많이 알려진 경사하강법이 있고

경사하강법은 미분 해서 기울기가 음수면 좌표를 오른쪽으로 양수면 왼쪽으로 옮기면서 미분값이 0이 되는 지점을 찾는 방법이다.

근데 문제는

1. 옮기는 값이 작으면 학습시간 커짐.

2. local optimal value에 빠질 수 있음

 

따라서 적절히 알고리즘을 짜는 것이 중요하다.

 

이제 가장 대표적인 CNN을 알아보고 개념정리는 끝내려고 한다. 사실 이것때문에 글작성..

convolution은 feature extraction을 위한 method이고 filter(kernel)을 통하여 new matrix를 만들어 낸다.

보통 한 장의 이미지에 대해 여러 개의 kernel(미분 등등) 을 적용하여 많은 channel을 만들어 낸다.

 

또한 학습데이터 크기가 큰 경우 pooling으로 데이터를 줄이기도 한다. 학습시간을 줄이고 특징 추출하는 데에 유용하다.

음.. convolution과 pooling을 통해 feature map을 얻으면 이것을 1차원으로 flatten(평탄화)시켜준다 (width * height * channel) by 1 matrix로 만들고 드디어 학습시킬 neural network에 넣는 것이다. 

 

이후 output에서 softmax방법을 적용하여 가장 높은 확률을 선택하면 CNN의 대략적인 설명이 끝난다. 

유명한 CNN모델을 살펴보자. 5 by 5 커널을 사용하고 pooling을 통해 size가 줄어드는 것을 확인할 수 있다. 

 

음.. convolution을 한 후 padding하여 데이터 원본크기를 유지하는 방법도 있다.

VGG-16 model이 이에 해당하고 보통 0을 padding 하여 CNN의 성능을 높인다. 

 

'Advanced > Maixbot Project' 카테고리의 다른 글

[Maixbot]Analog output  (0) 2023.07.10
[Maixbot]Analog IO  (0) 2023.07.10
[Maixbot]Digital Input  (0) 2023.06.28
[Maixbot]Simple Example, Output  (0) 2023.06.28
[Maixbot]Pin number.  (0) 2023.06.28