Публикувано на 22.02.2017

Говоря за машинно обучение или машинно обучение Днес все още може да е нещо любопитно и за много непознати, но истината е, че присъства повече, отколкото си мислим. Използваме го ежедневно и несъзнателно, докато сърфираме в интернет, когато се консултираме с нашите социални мрежи или дори когато правим покупката.

Какво е машинно обучение?

Машинното обучение е вид изкуствен интелект, разработен така, че компютърните програми да могат да се учат от нашето поведение и използване на технологии. По този начин потребителското изживяване се подобрява и дори могат да се предложат нови помощни програми или услуги.

разпознаване

Тази система открива модели на поведение и приспособява програмата към нуждите на потребителя. Един от най-известните примери е Facebook, който използва машинно обучение, за да открие какво интересува потребителя и да му предложи свързано съдържание на стената му. Но това може да се направи една крачка напред, както ще обясним в този пост, и ще накараме системата да се научи да разпознава специфични движения или жестове и по този начин да създаде нова система за комуникация, където жестът е езикът между човека и машината.

В това малко видео ще видите как сме извършили целия процес, който обясняваме по-долу:

Защо машинното обучение е толкова популярно?

Сега имаме данни

За да бъде машинното обучение наистина ефективно, то се нуждае от голямо количество данни и то е качествено. Понякога е по-трудно да се получат тези данни, отколкото да се моделира самият алгоритъм.
С използването на големи данни, където се съхранява възможно най-много информация за обработка и извличане на филтрирани и подходящи данни, машинното обучение може да се развие бързо.

„Печели не кой има най-добрия алгоритъм, а кой има най-много данни“

При достатъчно и добре структурирани данни не е необходимо да се използва най-добрият алгоритъм, крайната точност ще варира само десети.

Сега имаме облачни изчисления

Една от основните причини, поради които машинното обучение отслабваше в миналото, беше високата му изчислителна цена.
Знаем, че за да бъде резултатът ефективен, трябва да се използва голям набор от данни, върху който ще се извършват умножения на матрици главно, за да се напаснат данните към определен модел, който да се обучи.

Капацитетът на оборудването обаче е ограничен, както при обработката, така и в паметта, което означава, че са издирвани други изчислително по-леки алтернативи. Днес това вече не е проблем, тъй като съществуват множество облачни услуги, които ви позволяват да работите с огромни количества данни и да извършвате обработка за броени минути, което може да отнеме хиляди години на един конвенционален компютър.

Сега разполагаме с инструменти и ресурси

Това вероятно е най-важният напредък през последните години. Не само са разработени нови инструменти и рамки за машинно обучение, като TensorFlow, Caffe, Keras, Torch, Deepnet и др .; Но също така са създадени множество публични ресурси за тестове и обучение в различни области като обработка на естествен език, класификация на изображения, разпознаване на текст и т.н.

Един от най-важните набори от данни, за които дори се провеждат състезания и който има глобално класиране, е популярният MNIST, набор от изображения с цифри от свободни ръце, на които е постигната точност от 99,7%. С други думи, точно сега е възможно една машина да може да идентифицира всяка цифра, написана от всеки, започвайки от предишно обучение с този набор от данни, тоест тя ще се провали средно 3 пъти от всеки 1000 опита.

Как да приложим машинно обучение в Neosentec?

Наред с други неща, ние го прилагаме за откриване на лица (например със Spooface) или за класифициране на изображения за проекти с добавена реалност, но искаме да се съсредоточим върху друг проект, много по-рядко срещан, с който играем в нашата лаборатория.

Откриване на жестове на носими устройства

Спомняте ли си филма „Доклад за малцинствата“, където главният герой контролираше множество екрани, като правеше жестове с ръце?
Вече е възможно да се направи нещо подобно с помощта на дълбочинни камери, като Kinect или Magic Leap, но и двете изискват използване на закрито, че жестовете са видими за камерите и очевидно предварителната инсталация на тези устройства.

Но представете си сега, че премахваме всички предишни ограничения и правим възможно управлението на всяко устройство с обикновена гривна, дори и да не се вижда. Това сме играли.

Процеса

Решихме да тренираме прост жест, известен като "Double-flip", в резултат на което се получи двоен завой в 2 посоки на една и съща ос.

Първата стъпка беше да се получат данните, за това използвахме носим прототип със сензори за акселерометър и жироскоп, способни да измерват силите и ъглите на завъртане в 3 измерения. С което получаваме 6 графики като показаните по-долу.

Зададохме продължителността на всеки жест за 2 секунди и започнахме да вземаме 1000 отрицателни проби (движения от всякакъв вид, които не включват тази, която искаме да открием) и те са означени като „отрицателни“.

По-късно направихме същото, но взехме 100 положителни проби, т.е. изпълнихме жеста, който искахме да тренираме 100 пъти, и ги обозначихме като "двойно обръщане".
За обучение използвахме библиотеката TensorFlow на Google, прилагайки прост алгоритъм за логистична регресия, комбинирайки нормализираните стойности на 6-те предходни графики, което доведе до матрица от 1100 проби x 1200 характеристики (200 на графика). Въпреки използването на прост алгоритъм и много ограничен брой проби, резултатите са напълно задоволителни, постигайки точност от 95%.

Както видяхме, възможностите, предлагани от машинното обучение, са практически безкрайни и могат да бъдат приложени към всеки сектор или проект, дори за идеи, нетипични като представените от нас.