[기고] 스마트 센서에 내장된 AI, On-Edge 머신 러닝

Embedding AI in Smart Sensors On-Edge Machine Learning

2020-10-29     디일렉

로베르토 무라(Roberto Mura)
카스텔레토 소프트웨어 MEMS 알고리즘 팀
산타클라라 전략 플랫폼 및 IoT 엑셀런스 센터
ST마이크로일렉트로닉스

2018년 스마트 센서 시장 규모는 약 308억 2천만 달러였으며, 2024년 말이면 859억 3천만 달러에 이를 것으로 예상된다(2019부터 2024년까지 연평균 성장률 18.82%). IoT 애플리케이션, 차량 자동화, 스마트 웨어러블 시스템의 인기와 지속적인 보급에 힘입어, MEMS 센서는 다양한 애플리케이션 분야에서 필수 요소로 인식되고 있으며, 성능과 효율성에서 높아진 기대치에 부응하고 있다. 도시, 스마트 자동차, 가정 및 ‘지능형’ 시스템 세트에서 쉽게 찾아볼 수 있는 각종 첨단 기술에 커넥티드 MEMS 디바이스를 활용하는 경우가 증가했다. 수집되는 데이터 양이 증가함에 따라 인공지능(AI) 기술은 많은 애플리케이션의 인텔리전스 능력과 기능성을 한층 더 강화하는 데 중요한 역할을 하고 있다. ST는 2016년부터 시스템 성능을 개선하여 시스템 및 애플리케이션의 복잡성이 증가하는 문제를 해결할 방편으로 AI 분야의 하위 개념인 머신 러닝(ML)에 투자해왔다. 그렇다면 ML (머신 러닝) 이란 정확히 무엇이고, 다양한 애플리케이션의 복잡한 문제를 해결하는 데 ML을 어떻게 활용할 수 있을까?

머신 러닝
AI 접근법

머신 러닝은 인공 지능의 하위 분야이다. 머신 러닝이 채용된 시스템은 명시적 프로그래밍에 의존하는 것이 아니라, 경험을 통해 의사 결정 능력을 학습하고 개선할 수 있다. 학습 절차는 관찰, 데이터 또는 지침(Instruction)으로 시작된다. 이를 통해 시스템은 데이터 패턴을 이해하는 한편, 수신한 관찰 결과와 피드백을 토대로 의사 결정 능력을 점진적으로 보완한다. 이러한 방식으로 시스템은 자동으로 학습할 수 있으며, 인간은 최소한으로 개입하면 된다.

이 컨셉은 매우 효과적이다. 시스템은 머신 러닝의 지원을 받아 스스로 프로그래밍(학습 및 지능화)할 수 있다. 일반적으로 시스템은 데이터와 프로그램은 실행하여 출력값을 도출한다. 시스템은 머신 러닝의 지원으로 데이터와 출력값을 실행하여 프로그램을 생성한다. 이렇게 생성된 프로그램은 기존 프로그래밍과 함께 사용할 수 있다. 이런 방식은 여러 다양한 애플리케이션 분야에서 널리 사용되는 중이다. 행동 인식, 안면 인식, 음성 인식이 대표적인 예이다.
그림
여러 애플리케이션 분야에서 다양한 머신 러닝 방식이 사용되고 있다. 지도 학습 (supervised learning)에서는 입력값 (예: '빨간색' 같은 객체의 기능성)과 출력값('사과' 같은 객체 자체)의 관계를 나타내는 '알려진' 규칙과 특성이 시스템에 전송된다. 비지도(unsupervised) 학습에서는 입력값만 시스템에 전송되며, ML 알고리즘은 고유한/구분가능한 클래스 및 패턴을 찾아내는 작업을 담당한다. 반면 강화 학습에서는 시스템(예: 도로 조건에 대한 입력값을 수신할 수 있는 자율주행 자동차)이 연속적인 입력값을 수신하고, 자가 학습과 제시된 '성공(success)' 기준에 따라 지속적으로 진화한다. 대부분의 머신 러닝 애플리케이션 분야에서 가장 많이 연구되고 사용되며 가장 완성도 높은 방식은 지도 학습이다. 지도 학습은 비지도 학습보다 훨씬 다루기 쉽다[4]. 어떠한 방식을 선택하든, 머신 러닝의 정확도를 양호한 수준까지 끌어올리기 위해 알고리즘을 학습시키려면 상당한 양의 데이터가 필요하다. 또한 입력 데이터를 제대로 관리해야 한다. 우선 '훈련 데이터'를 정리하고 분류해야 한다. 그 다음, 이 데이터를 토대로 범주를 나눌 수 있다. 이런 작업은 한 개체의 특성을 분류한 후, 예측 결과를 산출하는 일련의 규칙이 구현된 시스템에 이를 입력했을 때 이뤄진다. 예를 들어, '빨간색'과 '원형'이란 특성을 시스템에 입력하면 '사과'라는 출력값이 산출된다. 마찬가지로 학습 알고리즘은 동일한 집합으로 분류된 다수의 개체(예: 다수의 사과)를 입력한 경우 적용되는 자체 규칙을 자율적으로 생성할 수 있고, 시스템은 사과에 '원형' 및 '빨간색' 같은 공통 속성이 있다는 사실을 발견한다. 정확하고 효율적인 ML 알고리즘을 개발하려면 우수한 데이터군 (datasets)이 필수이다. 머신 러닝이 제 기능을 하려면 대규모 데이터군(datasets)를 신중하게 수집하고 준비해야 한다. 다시 말해 머신 러닝을 사용하기에 앞서 데이터를 수집, 정리, 준비해야 한다. 그렇지 않으면 학습 데이터에 오류(잘못된 데이터), 이상한 값, 잡음이 가미되어 시스템이 올바른 기본 모델을 인지하기가 더 어려워진다. 데이터 준비는 중복 데이터 제거, 오류 수정, 결측값 해결과 같은 단계로 구성될 수 있다. 경우에 따라 데이터 정규화 또는 데이터 형식 변환 작업이 필요하다. 그렇다면 체계적인 ML용 학습 데이터군이 중요한 이유는 무엇일까? 기본적으로 이러한 데이터군은 ML 알고리즘을 가장 정확한 방법으로 학습시키는 데 필요한 정보로 구성돼야 한다.  이러한 정보는 데이터, 측정 가능한 개별적 속성 또는 관찰된 특성에서 추출할 수 있다. 기록된 데이터를 근원적 현상에 결부시킨 속성을 특성(features)이라고 한다. 효과적인 ML 알고리즘을 확보하려면 유익하고 뚜렷하며 독자적인 특성을 선별해야 한다. 모델 설계에서는 특성 선별과 데이터 정리가 무엇보다 중요하다. 그리고 모델을 제대로 설계하면 모델 일반화(즉, 머신 러닝 모델이 학습한 개념을 아직 학습하지 않은 구체적 예시나 데이터로 일반화)가 정상적으로 이뤄진다.
그림
데이터 준비와 특성 선별 외에도, ML 모델의 성능 저하 원인인 과소적합이나 과적합 같은 고질적인 문제로 인해 ML 모델의 품질이 저하되기도 한다. 통계에서 적합도(Goodness of Fit)란 모델의 예측치가 관측치(true)에 얼마나 근접하고 있는지 가늠하는 척도이다. '신호' 대신 '잡음'을 학습한 모델은 '과적합' 모델로 분류된다. 학습 데이터군에는 적합하지만 새로운 데이터군에는 적합하지 않기 때문이다. 이러한 상황을 파악하는 한 가지 방법은 편향-분산 방식을 사용하는 것이다(위 그림 참조). 회귀와 같은 기본적인 ML 알고리즘을 예로 들 수 있다. 그림 2를 보면 너무 단순한 (과도 편향) 모델과 너무 복잡한 (과도 분산) 모델 간의 절충점을 명확히 알 수 있다. 일반적으로는 편향으로 인한 오차를 줄일 수 있지만, 그 대신 분산으로 인한 오차가 증가하기도 한다. 또는 그 반대의 상황도 가능하다. 과적합의 주요 문제는 학습 데이터의 품질은 우수하지만, 학습에 사용되지 않은 새 데이터의 품질은 수준 미달이라는 것이다. 이러한 문제를 해결하기 위해 기존의 데이터 집합을 별도의 학습용 하위 집합과 테스트용 하위 집합으로 나눌 수 있다. 이에 따르면 과적합이란 학습용 데이터군에 너무 큰 비중을 뒀을 때 나타나는 현상을 의미한다. 일반적으로 과적합 상태에서는 새로운 데이터(테스트용 데이터군)에 유효하지 않은 복잡한 관계가 야기된다. 반면 과소적합이란 학습용 데이터군에 너무 적은 비중을 뒀을 때 나타나는 현상을 뜻한다. 과소적합 상태에서는 학습용 데이터군와 테스트용 데이터군 모두에 적합하지 않은 알고리즘이 생성된다. 과적합 상태를 인지하면 도움이 될 수 있지만, 그렇다고 문제가 쉽게 해결되는 것은 아니다. 다행히 시도해 볼 수 있는 방법이 몇 가지 있다. 가장 흔히 사용되는 방법은 다음과 같다. 교차 검증: 과적합을 예방하는 데 효과적인 방법이다. 교차 검증의 핵심은 학습 데이터를 사용하여 여러 개의 작은 학습-테스트 데이터를 생성하는 것이다. 그림 3에 보이는 것처럼 학습-테스트 데이터를 사용하여 ML 모델을 조정하고 검증한다. 조기 종료: 머신 러닝 모델이 과적합 현상을 보이기 전까지 실행해야 할 반복 학습 횟수에 관한 지침으로 삼을 수 있는 규칙이다. 표준 k-폴드 교차 검증에서 데이터는 폴드(Fold)라고 하는 k 하위 집합으로 나뉜다. 그 다음 k-1 폴드는 알고리즘을 반복적으로 학습시키는 데 사용하고, 나머지 폴드는 테스트용 데이터군('홀드아웃 폴드(Holdout Fold)'라고 함)으로 사용한다.
그림

On-Edge의 머신 러닝
MEMS 센서 프레임워크

오늘날에는 IoT에 기반한 수많은 사용 사례를 어디서든 쉽게 찾아볼 수 있다. 가정에서는 보안, 에너지 소비, 가전 기기를 관리하는 장치를 사용한다. 공장에서는 예측 유지보수를 통해 운영 및 비용을 최적화한다. 도시에서는 교통을 통제하고 공공 안전을 위해 IoT를 적용한다. 물류 회사는 운송물을 추적하고, 차량을 관리하며, 운행 경로를 최적화한다. 식당에서는 냉장 보관 및 조리 단계에서 식품 안전을 유지하며, 소매업체는 스마트 디지털 간판을 설치하고 첨단 결제 시스템을 구현한다. 그 밖에도 새로운 사용 사례가 속속 등장하고 있다. 오늘날에는 모든 분야에서 머신 러닝이 각광받는다. 센서, 특히 MEMS 센서는 어디서든 쉽게 찾아볼 수 있다. 하지만 네트워크 시스템에 상당한 데이터 처리용량 (bandwidth)과 컴퓨팅 성능이 뒷받침돼야 한다. 센서에서 수집한 원시 데이터가 강력한 중앙 원격 인텔리전스(클라우드)로 전송되기 때문이다. 수백만 개의 엔드포인트에서 수집한 오디오, 비디오나 이미지 파일을 처리해야 하는 경우, 이와 같은 모델의 응답 능력은 떨어질 수 밖에 없다. 이러한 과제를 해결하는 데 있어 클라우드 기반의 중앙 집중식 환경만으로는 오늘날 소비자가 기대하는 규모와 속도로 서비스를 제공할 수 없다. 응답 속도 조건을 충족하고 더 나은 사용자 경험을 제공하려면 on-edge 솔루션을 지원해야 한다. on-edge 패러다임이란 MCU가 사용되는 (확장 가능한) 로컬 컴퓨팅 환경을 의미한다[5]. 하지만 edge 컴퓨팅을 구현하면 클라우드 솔루션에 비해 어떤 이점이 있을까? 클라우드와 애플리케이션 프로세서면 IoT 시스템을 구축하기에 충분하지 않을까?
그림
지난 수십 년 동안 MCU의 컴퓨팅 성능은 괄목할 만한 속도로 발전한 데다 발전 속도는 날을 거듭할수록 탄력을 받고 있으며, 많은 경우 전력 소모량 역시 유의미하게 감소했다. 그러나 클라우드 컴퓨팅 패러다임 때문에 대부분의 IoT 응용 사례에서 MCU의 용도는 센서에서 수집한 데이터를 취합하여 클라우드 인프라로 전송하는 것이 고작이다. 오늘날의 마이크로컨트롤러는 클럭 속도가 일반적으로 수백 MHz이고 비교적 큰 메모리 용량을 갖추고 있다는 점을 고려했을 때, 이와 같은 MCU의 활용도는 날로 저하될 수밖에 없다. 다시 말해, MCU는 대부분의 시간 동안 유휴 상태에 머물러 있다. 그림 4를 보면 이와 같은 사실을 명확히 알 수 있다. 위 그래프에는 MCU의 전반적인 컴퓨팅 시간이 제시되어 있다. 자주색 부분은 MCU가 활성 상태인 시간(예: 네트워크 연결, 센서 데이터 수집, 디스플레이 업데이트, 타이머, 기타 인터럽트)을 나타낸다. 파란색 부분은 MCU가 유휴 상태인 시간을 나타낸다.  많은 시간 동안 컴퓨팅 성능이 활용되지 않는 장치가 현실 세계에 수백만 개나 배치되어 있다고 상상해 보라. 분산 방식에서는 최신 'on-edge' 컴퓨팅 기능을 활용하여 데이터 전송에 필요한 대역폭과 클라우드 서버의 처리 용량을 크게 줄일 수 있다. 또한 수준 높은 해석 또는 익명화를 동원하여 개인 소스 데이터를 미리 분석하고 서비스 제공업체에 제공하므로 관리면에서 사용자 데이터보다 유리하다.
그림
ST는 ML 및 DL 구현에 on-edge 컴퓨팅을 지향하고 있다. ST의 새로운 인공 지능 솔루션 제품군 덕분에 이제 광범위한 STM32 마이크로컨트롤러 포트폴리오를 사용해 사전 학습형 ML 알고리즘을 구성하고 실행할 수 있다. 또한, ST는 머신 러닝 기술을 고급 관성 센서에 통합하여 다양한 애플리케이션(예: 매우 수준 높은 성능과 개선된 모바일 및 웨어러블용 배터리 수명을 겸비한 적응식 행동 추적 애플리케이션)을 개발했다. LSM6DSOX(IMU) 같은 고급 센서는 부착형 STM32 또는 애플리케이션 중심 시스템이 초저전력 상태에서 우수한 성능과 정확도를 유지하는 AI 실행 상태로 전환할 수 있는 머신 러닝 코어 및 고급 디지털 기능을 탑재하고 있으므로 배터리 작동식 IoT, 게임, 웨어러블 기술 및 가전제품에 이상적이다.

머신 러닝 코어
향상된 on-edge 패러다임

최근 몇 년 새 관성 센서의 에너지 소비량이 급격히 감소하면서 새로운 애플리케이션에도 기회의 문이 열렸다. ST는 시스템의 에너지 소비량을 한층 더 줄이고 인텔리전스를 센서 자체에 이식하여 메인 프로세서의 작업 부담을 완화한 프로그래밍 및 구성 방식의 내장형 디지털 모듈을 출시했다. 이 모듈은 통계에 근거한 의사 결정 트리 (AI) 방식을 통해 상황을 인식하도록 설계됐다. 덕분에 센서 차원의 인간 행동 인식(정지, 보행, 차량 동작 등), 휴대 위치 감지(손목, 주머니, 테이블 등) 또는 기계 활동 및 움직임 인식 같은 복잡한 알고리즘을 구현할 수 있다. 센서 자체도 디지털 모듈의 모든 구성 방식을 활용하고 사용자 요구 사항을 충족시키도록 쉽게 프로그래밍할 수 있다.

관성 모듈 LSM6DSOX에 내장되는 이 모듈은 머신 러닝 코어(Machine Learning Core: MLC)라고 한다. 머신 러닝 코어의 기본 개념은 입력 패턴에 따라 모델을 제작하는 기능을 활용하여 실리콘에 데이터 구동 알고리즘을 구현하는 것인데, 이와 같은 개념의 장점은 전력 소비량이 최소화된다는 것이다. 기존의 on-edge 소프트웨어 솔루션에서 하드웨어 아키텍처는 저전력 MCU, 사용자 프로그램용 비휘발성 메모리, 데이터 및 프로그래밍용 메모리, 그리고 공통 인터페이스(SPI, I²C 등)로 구성된다. 이러한 유형의 솔루션을 사용하는 경우 애플리케이션이 인터페이스에서 센서와 액추에이터로 읽어오거나 쓰고, 알고리즘 연산 작업을 실행하며, 예를 들어 Bluetooth 통신 프로토콜을 통해 엔드포인트(컴퓨터/스마트폰)에 연결할 수 있다. 이 솔루션의 전체적인 전력 소비량은 [7]에 나타난 것처럼 쉽게 추산할 수 있다. 기존의 순정 소프트웨어 솔루션과 동일한 유형의 알고리즘을 구현하도록 재구성된 LSM6DSOX 내장 알고리즘을 마이크로컨트롤러에서 센서로 이식하면 전력 소비량을 25배나 줄여준다. 게다가 마이크로컨트롤러에서 실행할 때와 동일한 고품질 알고리즘과 정확히 동일한 성능이 보장된다.
ST는
현재 ST는 전체 라이브러리 및 소프트웨어 포트폴리오를 센서 프레임워크에 이식하여 사용자 입장에서 전체 프로세스를 간소화하고 AI 기능을 개선하는 데 힘쓰고 있다. 행동 인식 알고리즘의 경우, 인식하려는 행동(보행, 달리기, 차량 이동, 정지 등)에 수반된 패턴부터 분석한다. 이때의 분석 목적은 MLC가 센서 데이터에서 현재 행동에 관한 결과값을 직접 산출하는 것이다. 사용자는 최대 3개의 센서에서 수집한 데이터를 알고리즘용 입력값으로 구성하며, 애플리케이션 대역폭에 따라 FIR 및 IIR 필터의 계수를 설정할 수 있다. 원시 데이터와 필터링된 데이터는 특성 블록용 입력값으로 사용할 수 있다. 특성 블록은 데이터의 통계를 산정하고 다양한 통계적 특성을 출력하도록 구성할 수 있다. 출력 알고리즘을 학습시키고 개선할 목적으로 최대 12개의 특성까지 구성이 가능하다. 가장 중요한 값은 평균, 분산, 에너지, PTP(Peak to Peak) 및 제로크로스(Zero-cross)이며, 이 값들은 사용된 센서(예: 가속도 센서)의 단일 축(또는 모듈)에 각기 적용된다. 필터 및 특성 구성이 완료되면 소프트웨어 도구는 MLC 구성용 장치에 로드할 구성 파일과 데이터 마이닝 도구용으로 표준화된 파일을 출력할 수 있다. 이렇게 확보한 파일은 실리콘에 구현된 MLC 알고리즘과 호환된다. 데이터 마이닝 도구는 해당 응용 분야에 가장 적합한 특성의 하위 집합을 보완하거나 인식할 수 있을 뿐만 아니라, 의사 결정 트리와 상대적 통계 성능도 출력한다.
그림
데이터 마이닝 도구의 정교화 및 피드백이 완료되면 데이터를 다시 처리하고 특성 세트를 최적화할 수 있다. 그리고 성능이 예상과 일치하면 STM 소프트웨어 도구가 생성한 구성 파일을 통해 의사 결정 트리를 MLC에 로드할 수 있다. 이와 함께 그림 7에서처럼, 확보한 의사 결정 트리의 출력값 및 MLC 알고리즘 흐름의 최종 결과에서 계층을 추출해 추가할 수 있다. 이때 구성 가능한 메타 분류자를 추가하면 출력값을 필터링하여 더 안정적이고 견고한 솔루션의 확보가 가능하다(그림 8 참조). 이 작업은 거짓 양성 데이터 및 문제를 해결하는 데 특히 유용하다. 그림 9에 제시된 두 가지 사례는 ST가 개발해 이미 인간 행동 인식(Human-Activity Recognition)과 체육 활동 인식(Gym Recognition)으로 널리 알려진 라이브러리의 구성 요소이다. 다음 표에서 MLC 방식의 성능 측면의 잠재력을 볼 수 있는데, 이 경우 앞서 언급한 전력 소비량 이점이 1/10로 감소한다. 자세한 내용은 [8]을 참조하면 된다.

결론
머신 러닝의 거듭된 발전 덕분에 광범위한 응용 분야 및 기술 영역(예: 이미지 인식, 패턴 인식, 센서 융합 등)의 혁신이 가능해졌다. 이러한 시스템과 애플리케이션의 복잡성이 심화됨에 따라 애플리케이션 요건에 맞게 클라우드, edge 및 센서 노드에 컴퓨팅을 내장한 아키텍처를 활용할 수 있다.

스마트 시스템용 센서와 MEMS 솔루션이 널리 보급됐으며, 그로 인해 확보 가능한 교육 및 테스트용 데이터가 크게 늘었고, 전력 소비량을 크게 줄인 채 우수한 성능 수준을 유지하면서 로컬 컴퓨팅을 활용할 수 있게 됐다.
그림7
클라우드 기반의 솔루션은 여전히 중요한 역할을 하지만, 완전한 중앙 집중식 구조는 실시간 센서 데이터 처리되어야 하는 단말(Edge devices)에 과도한 대기 시간 및 제한된 임무수행(Bandwidth)을 하게 된다. ST는 장치(MCU) 및 센서 자체에 ML 알고리즘 솔루션을 내장하고 있다. 이러한 솔루션은 on-edge 패러다임을 사용하고, 리소스 낭비를 막으면서 전력 소비량을 크게 줄일 수 있다는 확실한 이점이 있다.

* 영문원고는 EDN 웹사이트에서 확인할 수 있다

참고 자료
[1] mordorintelligence.com/industry-reports/global-smart-sensors-market-industry
[2] hackster.io/voske65/machine-learning-with-stm-mems-sensor-763494
[3] expertsystem.com/machine-learning-definition
[4] machinelearningmastery.com/basic-concepts-in-machine-learning
[5] towardsdatascience.com/why-machine-learning-on-the-edge-92fac32105e6
[6] blog.st.com/orlando-neural-network-iot/
[7] M. Castellano 외 Embedded Algorithms for Motion Detection and Processing, EmbeddedWorld2018
[8] st.com/content/st_com/en/campaigns/machine-learning-core
[9] github.com/STMicroelectronics/STMems_Machine_Learning_Core
[10] st.com/en/embedded-software/fp-ai-sensing1
[11] st.com/en/development-tools/stm32cubemx