코딩뚠뚠

[머신러닝 공부] Tiny ML -3 / 머신러닝 빠르게 훑어보기 본문

공부/ML&DL

[머신러닝 공부] Tiny ML -3 / 머신러닝 빠르게 훑어보기

로디네로 2021. 11. 1. 22:50
반응형

 

 

Tiny ML 세번째 단원 : 머신러닝 빠르게 훑어보기 이다.

 

앞서 HW, SW 사전 준비물들을 준비했으니 본격적으로 시작해보자.

 

 

 


 

 

Chapter3. 머신러닝 빠르게 훑어보기

 

머신러닝은 고급수학등의 수많은 개념의 집합으로 여겨져 어렵게 느껴질 수 있다.

 

그러나 사용하는 입장에서는 도구세트 정도로 생각하고 사용할 수 있다.

"

그래서 이 책에서는 딥러닝의 이론,수학 보다는

임베디드장치에 대해 모델을 최적화하는 방법에 대해 설명한다고 한다.

 

"

 

 


 

 

- 머신러닝이란 '실제로' 무엇인가

 

공정 데이터를 이용한 예측 시스템을 예로 들어 설명한다.

 

기본적으로 머신러닝은 컴퓨터를 사용해 과거 관측치를 이용해 이후를 예측하는 기술.

 

프로그래머는 데이터를 특수한 종류의 알고리즘에 공금하고 알고리즘이 스스로 규칙을 찾게한다.

 

Training(훈련) -> 모델구축 -> Inference(추론)

 

또한 머신러닝의 방법 중 가장 인기있는 방식은 '딥러닝' 으로 이는 뇌가 작동하는 방식에 대한 개념을 기본으로 한다.

 

머신러닝과 딥러닝 차이는 아래 포스팅 참고

 

[머신러닝 공부] 머신러닝 딥러닝 확실한 차이

머신러닝과 딥러닝의 확실한 차이를 확실히 알아보려 한다. 대부분 '머신러닝과 딥러닝 차이' 검색어를 치면 아래 사진과 같이 나온다. 나는 이 그림만 보고는 대체 머신러닝과 딥러닝이 뭐가

dbstndi6316.tistory.com

 

이 책에서는 주로 딥러닝을 중심으로 다룬다고 한다.

 

 


 

- 딥러닝 워크플로

 

실제로 어떤 시나리오를 거쳐서 시스템이 완성될까?

 

목표결정 -> 데이터셋 수집 -> 모델 아키텍쳐 설계 -> 모델 훈련 -> 모델 변환 -> 추론 -> 평가

 

위의 작업을 거쳐 완성된다.

 

 

1. 목표 결정

 

'예측할 대상'을 정확하게 설정한다. 

 

classificaion(분류) 문제인지 regression(회귀) 문제인지 등등, 자신의 상황에 따른 목표를 정화히 설정한다.

 

 

 

2. 데이터셋 수집

 

문제해결과 관련된 정보만 사용해 모델을 훈련하는것이 가장 좋다. (도메인지식 중요)

 

데이터의 양이 얼마나 필요한지 정확히 아는 것은 어렵지만 많을수록 좋다.

 

레이블링 과정이 필요하다. (정상/비정상) (A/B/C/D/E)

 

 

 

3. 모델 아키텍쳐 설계

 

딥러닝 모델 아키텍처에는 다양한 종류가 있으며 아래 사이트에서 종류들을 볼 수도 있다.

 

https://modelzoo.co

 

modelzoo.co

위와 같이 온라인에서 기존에 개발된 아키텍처를 기반으로 모델을 선택하여 사용할 수 있다.

 

최신의 모델이 내 연구에 가장 적합하다고 할수는 없다. 

 

내가 가진 데이터의 유형, 실행할 장치의 제약 조건을 고려해야 하기 때문이다.

 

 

 

4. 모델 훈련

 

특징(Feature) 뽑아내기 : 머신러닝에서 Feature란 모델이 학습되는 특정한 유형의 정보를 나타낸다.

정규화 : 일반적으로 부동소수점 텐서 형태인 데이터의 크기를 0과 1 사이로 맞춰주어 알고리즘이 효과적으로 동작하게한다.

이미지의 예를 들면 1/255를 각 8비트 값에 곱해주어 0~1로 정규화시켜준다.

 

모델 훈련 이란 모델이 입력을 가지고 올바른 출력을 생성하는 방법을 배우는 과정이다.

 

데이터를 네트워크에 공급하면 데이터는 각 레이어의 가중치와 편향을 포함하는 연산에 의해 변환된다.

 

가중치는 대부분 임의값으로 시작하고 편한은 일반적으로 0으로 시작한다. (초기화에도 여러 방법이 있다.)

 

가장 중요한 알고리즘은 역전파알고리즘(Backpropagation algorithm) 이다.

이 블로글에 포스팅 해놓지 않아 다른 링크를 첨부한다. 어려운 수식들이 있는것처럼 보이지만 결국 chain rule이다.

 

04-3) 역전파(BackPropagation) 이해하기

인공 신경망이 순전파 과정을 진행하여 예측값과 실제값의 오차를 계산하였을 때 어떻게 역전파 과정에서 경사 하강법을 사용하여 가중치를 업데이트하는지 직접 계산을 통해 이해해봅 ...

wikidocs.net

시간에 지남에 따라 출력이 원하는값이 되게 가중치와 편향을 조정하고 이는 에폭 단위로 진행된다.

 

학습이 완료되고 완벽한 모델은 손실이 0.0 정확도가 100이겠지만 이런 모델은 거의 없다.

 

훈련이 완벽하게 진행되지 않았다 = 모델이 수렴하지 못했다. 그 이유는? 과적합과 과소적합이다.

 

과적합(Overfitting) : 훈련 데이터를 입력으로 받을때는 정확하게 예측하나 Unseen Data에 대해선 작동하지 않는 상태.

- 모델 간소화, regularization, data augmentation, 방대한데이터수집 등을 이용해 해결

과소적합(Underfitting) : 충분한 패턴을 학습하지 못해 좋은 예측을 할 수 없는 상태.

- 파라미터가 더 많은 모델 사용, 모델의 제약을 줄여 해결

 

 

 

5. 모델 변환

 

이 책에서는 텐서플로 라이트를 사용하여 모델을 빌드하고 학습한다.

 

텐서플로 라이트는 출력을 생성하기 위해 인터프리터에 데이터를 변환하는 방법을 알려주는 일종의 명령어이다.

 

 

 

6. 추론

 

마이크로컨트롤러용 텐서플로 라이트 C++ 라이브러리를 사용해 모델을 로드하고 예측을 수행한다.

 

각 클래스에 대한 점수를 얻어 판단한다.

 

 

 

7. 평가

 

실제 성능이 원하는 것에 근접하는지 확인할 수 있다.

 

개발 환경과 실제 환경에서의 동작은 다를 수도 있다.

 

또한 과적합에도 쉽게 빠질 수 있기 때문에 실제 현장에 필요한 성능에 도달하려면 모델, 하드웨어, 소프트웨어에 걸친 반복적 개선작업이 필요하다.

 

 

 


 

 

마치며

 

3단원 '머신러닝 빠르게 훑어보기' 를 공부하며, 정말 얕지만 꼭 필요한것만 넣어놨다 라는 생각이 들었다.

 

물론 나도 많이 아는것은 아니지만.. 이 책에서 단 열장만에 설명해놓은 일련의 과정은 조금은 부족하지 않나 싶다.

 

TinyML 개발자가 되고 싶다면 아무리 만들어진 모델을 사용하는 것이라지만.. 이 책보다는 좀더 깊게 공부하는 편이 좋을 것 같다.

 

반응형