Дълбоко обучение срещу машинно обучение: Разберете разликите

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

Обяснено машинно обучение

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

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

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

Класификационен проблем е контролиран учебен проблем, който изисква избор между два или повече класа, обикновено предоставящи вероятности за всеки клас. Като изключим невронните мрежи и задълбоченото обучение, които изискват много по-високо ниво на изчислителни ресурси, най-често срещаните алгоритми са 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 (Анализ на основен компонент).

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

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

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

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

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

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

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

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

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

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

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

Функционално инженерство за машинно обучение

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

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

Някои от трансформациите, които хората използват, за да конструират нови характеристики или да намалят размерността на векторите на характеристики, са прости. Например извадете Year of Birthот Year of Deathи конструирате Age at Death, което е основна независима променлива за анализ на живота и смъртността. В други случаи конструирането на характеристики може да не е толкова очевидно.

Разделяне на данни за машинно обучение

Обичайната практика за контролирано машинно обучение е разделянето на набора от данни на подмножества за обучение , валидиране и тест . Един от начините за работа е да се присвоят 80% от данните към набора от данни за обучение и 10% всеки за наборите от данни за проверка и тестване. (Точното разделяне е въпрос на предпочитание.) По-голямата част от обучението се извършва спрямо набора от данни за обучение, а прогнозирането се извършва спрямо набора от данни за валидиране в края на всяка епоха.

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

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

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

Библиотеки за машинно обучение

В Python Spark MLlib и Scikit-learn са отличен избор за библиотеки за машинно обучение. В R някои опции за пакет за машинно обучение са CARAT, randomForest, e1071 и KernLab. В Java добрият избор включва Java-ML, RapidMiner и Weka.

Обяснено дълбоко обучение

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

Идеите за „изкуствени“ невронни мрежи датират от 40-те години на миналия век. Основната концепция е, че мрежа от изкуствени неврони, изградени от взаимосвързани прагови превключватели, могат да се научат да разпознават модели по същия начин, по който го правят животинският мозък и нервната система (включително ретината).

Backprop

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

Неврони в изкуствени невронни мрежи

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

Активиращи функции в невронни мрежи

През 40-те и 50-те години изкуствените неврони са използвали функция за стъпково активиране и са били наричани персептрони . Съвременните невронни мрежи могат да кажат, че използват персептрони, но всъщност имат гладки активиращи функции, като логистична или сигмоидна функция, хиперболична тангента или Ректифицирана линейна единица (ReLU). ReLU обикновено е най-добрият избор за бързо сближаване, въпреки че има проблем с невроните, които „умират“ по време на обучение, ако скоростта на обучение е твърде висока.

[Също така на: 6 начина да се провали машинното обучение]

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

Топологии на невронната мрежа

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

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

Обучение на невронни мрежи

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

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

Оптимизатори за невронни мрежи

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