Какво е машинно обучение? Интелигентност, получена от данни

Дефинирано машинно обучение

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

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

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

Приложения на машинното обучение

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

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

Автоматичната реч в текст работи доста добре за хора с основните акценти, но не толкова добре за хора с някои силни регионални или национални акценти; ефективността зависи от обучителните комплекти, използвани от продавачите. Автоматичният анализ на настроенията в социалните медии има сравнително добър процент на успех, вероятно защото обучителните набори (напр. Рейтинги на продукти на Amazon, които свързват коментар с цифров резултат) са големи и лесни за достъп.

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

Други системи за скрининг на резюме, които се използват в момента, могат да имат предубеждения за обучение, които ги карат да надграждат кандидати, които са „като“ настоящите служители по начини, които законно не би трябвало да имат значение (напр. Млади, бели, мъже кандидати от престижни англоговорящи квартали, които играят колективните спортове са по-склонни да преминат прожекцията). Изследователските усилия на Microsoft и други се фокусират върху премахването на неявни пристрастия в машинното обучение.

Автоматичната класификация на изображенията на патологията и рентгенологията е достигнала до степен, в която може да помогне (но не и да замени) патолозите и рентгенолозите за откриване на определени видове аномалии. Междувременно системите за идентификация на лицето са едновременно противоречиви, когато работят добре (поради съображения за поверителност) и обикновено не са толкова точни за жени и цветнокожи хора, колкото за белите мъже (поради пристрастия в обучаваната популация).

Алгоритми за машинно обучение

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

Нека обсъдим най-често срещаните алгоритми за всеки вид проблем.

Класификационни алгоритми

Класификационен проблем е контролиран учебен проблем, който изисква избор между два или повече класа, обикновено предоставящи вероятности за всеки клас. Като изключим невронните мрежи и задълбоченото обучение, които изискват много по-високо ниво на изчислителни ресурси, най-често срещаните алгоритми са Naive Bayes, дърво на решенията, логистична регресия, K-най-близки съседи и машина за поддръжка на вектор (SVM). Можете също така да използвате ансамблеви методи (комбинации от модели), като Random Forest, други методи за пакетиране и усилващи методи като AdaBoost и XGBoost.

Регресионни алгоритми

Проблемът с регресията е контролиран учебен проблем, който изисква от модела да предскаже число. Най-простият и бърз алгоритъм е линейната (най-малките квадрати) регресия, но не бива да спирате дотук, защото често ви дава посредствен резултат. Други често срещани алгоритми за регресия на машинното обучение (с изключение на невронни мрежи) включват Naive Bayes, дърво на решенията, K-най-близките съседи, LVQ (Learning Vector Quantization), LARS Lasso, Elastic Net, Random Forest, AdaBoost и XGBoost. Ще забележите, че има известно припокриване между алгоритмите за машинно обучение за регресия и класификация.

Алгоритми за клъстериране

Проблемът с клъстерирането е проблем за учене без надзор, който изисква от модела да намери групи от подобни точки от данни. Най-популярният алгоритъм е K-Means Clustering; други включват клъстериране със средно изместване, DBSCAN (базирана на плътност пространствена клъстеризация на приложения с шум), GMM (модели на Гаусова смес) и HAC (йерархична агломеративна клъстеризация).

Алгоритми за намаляване на размерността

Намаляването на размерността е проблем без учет, който се подчинява на модела да пусне или комбинира променливи, които имат малък или никакъв ефект върху резултата. Това често се използва в комбинация с класификация или регресия. Алгоритмите за намаляване на размерността включват премахване на променливи с много липсващи стойности, премахване на променливи с ниска дисперсия, Дърво на решенията, Случайна гора, премахване или комбиниране на променливи с висока корелация, Премахване на обратни характеристики, Избор на предни характеристики, Анализ на фактор и PCA (Анализ на основен компонент).

Методи за оптимизация

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

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

Невронни мрежи и дълбоко обучение

Невронните мрежи са вдъхновени от архитектурата на биологичната зрителна кора. Дълбокото обучение е набор от техники за обучение в невронни мрежи, който включва голям брой „скрити“ слоеве за идентифициране на характеристики. Скритите слоеве идват между входния и изходния слой. Всеки слой е изграден от изкуствени неврони, често със сигмоидни или ReLU (Rectified Linear Unit) функции за активиране.

В мрежата за обратна връзка невроните са организирани в отделни слоеве: един входен слой, произволен брой скрити обработващи слоеве и един изходен слой, а изходите от всеки слой преминават само към следващия слой.

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

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

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

Пробивът в зрителното поле на невронната мрежа беше LeNet-5 на Yann LeCun от 1998 г., седемстепенна конволюционна невронна мрежа (CNN) за разпознаване на ръчно написани цифри, дигитализирани в изображения с размери 32x32 пиксела. За да анализира изображения с по-висока разделителна способност, мрежата ще се нуждае от повече неврони и повече слоеве.

Конволюционните невронни мрежи обикновено използват слоеве, обединяване, ReLU, напълно свързани и слоеве за загуба, за да симулират визуална кора. Конволюционният слой по същество взема интегралите на много малки припокриващи се области. Обединяващият слой изпълнява форма на нелинейно вземане на проби. ReLU слоевете, които споменах по-рано, прилагат функцията за ненасищане на активиране f(x) = max(0,x).

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

Обработката на естествен език (NLP) е друга основна област на приложение за задълбочено обучение. В допълнение към проблема с машинния превод, адресиран от Google Translate, основните NLP задачи включват автоматично обобщение, разрешаване на съвместни препратки, анализ на дискурса, морфологична сегментация, разпознаване на име на обект, генериране на естествен език, разбиране на естествен език, маркиране на част от говора, настроение анализ и разпознаване на речта.

В допълнение към CNN, NLP задачите често се адресират с повтарящи се невронни мрежи (RNN), които включват модела Long-Short Term Memory (LSTM).

Колкото повече слоеве има в дълбока невронна мрежа, толкова повече изчисления са необходими за обучение на модела на процесор. Хардуерните ускорители за невронни мрежи включват графични процесори, TPU и FPGA.

Укрепващо обучение

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

Например, AlphaGo на DeepMind, за да се научи да играе (действието) играта Go (околната среда), първо се научи да имитира човешки играчи на Go от голям набор от исторически игри (обучение на чираци). След това подобри играта си чрез проби и грешки (засилване на обучението), като играе голям брой Go игри срещу независими случаи на себе си.

Роботизираният контрол е друг проблем, който е атакуван с дълбоки методи за засилване на усилването, което означава обучение с подсилване плюс дълбоки невронни мрежи, като дълбоките невронни мрежи често са CNN, обучени да извличат функции от видеокадри.

Как да използвам машинното обучение

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

Почистване на данни за машинно обучение

В природата няма такова нещо като чисти данни. За да бъдат полезни за машинно обучение, данните трябва да се филтрират агресивно. Например ще искате да:

  1. Погледнете данните и изключете всички колони, в които има много липсващи данни.
  2. Погледнете данните отново и изберете колоните, които искате да използвате ( избор на функция ) за вашата прогноза. Това е нещо, което може да искате да промените, когато повторите.
  3. Изключете всички редове, в които все още липсват данни в останалите колони.
  4. Коригирайте очевидните печатни грешки и обединете еквивалентни отговори Например САЩ, САЩ, САЩ и Америка трябва да бъдат обединени в една категория.
  5. Изключете редове, които имат данни, които са извън обхвата. Например, ако анализирате пътувания с такси в Ню Йорк, ще искате да филтрирате редове с пикапи или отпадащи географски ширини и дължини, които са извън граничното поле на столичния район.

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

Кодиране и нормализиране на данни за машинно обучение

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

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