# Машинско учење

**Машинско учење** е гранка од вештачка интелигенција и научна дисциплина која се занимава со дизајнирање и создавање на алгоритми кои овозможуваат компјутерските системи да ја подобруваат својата работа со помош на емпириски податоци, т.е. податоци добиени преку механички сензори, база на податоци и сл. по пат на експерименти и набљудување.

Областа од машинското учење бара одговор на тоа како да се создаде компјутерски систем кој ја подобрува својата работа од стекнатите искуства во текот на неговото постоење и делување, како и на тоа кои се фундаменталните закони кои ги карактеризираат процесите на учење. Овие прашања покриваат широк ранг на задачи за учење кои придонесуваат во голем број области од реалниот живот, за пример се: дизајнот на автономен мобилен робот кој учи да маневрира во просторот во кој се наоѓа со помош на неговото стекнато искуство, податочно рударење на медицински записи на заболени пациенти со цел да се проучат дијагнози за ново-заболени пациенти, пребарувач кој автоматски се прилагодува на потребите на своите корисници.

## Концепт на учење

Компјутерот кој учи користи т.н. тренинг податоци (примери) со помош на кои ги изучува одликите на проблемот кој треба да го реши. Податоците се состојат од преброиво, конечно множество примери од доменот на проблемот кои ја илустрираат врската помеѓу влезните параметри и излезот (одговорот). Најголем напор во машинското учење се прави во автоматизација на учењето за препознаваат комплексни шаблони (patterns) и носење на интелигентна одлука заснована на спроведените податоците. Проблемот во ваквиот пристап е тоа што множеството на можни одговори за проблемот кој се решава е преголемо, но влезните тренинг податоци покриваат само дел од ова множество поради нивната ограниченост во однос на квантитет. Поради ова најчесто се дава некоја апроксимација и генерализација за решението на проблемот со што компјутерскиот систем би бил способен да даде прифатливи одговори дури и во ситуации кога на влез добива непознати параметри кои не се наоѓаат во тренинг множеството.

Машинско учење како подполе на AI
## Генерализација

Генерализација е способност на алгоритам за машинско учење да дава прецизен излез за нови примери кои претходно не се забележани во тренинг множеството. Најпрво, алгоритмот се тренира со преброиво, конечно множество од примери (тренинг множество) со цел да се оспособи алгоритмот да врши генерализација од искуството добиено преку тренинг примерите. При тренингот алгоритмот одделува клучни информации од тренинг примерите со кои добива слика за нивната дистрибуцијата во доменот, како и генералната дистрибуција на сите параметри во доменот на проблемот.

## Човечка интеракција

Некои системи кои користат алгоритми за машинско учење се дизајнираат да работат без никаква интеракција со човекот, додека други воведуваат честа колаборација помеѓу човекот и машината. Како и да е, човечката интуиција не може да биде целосно отстранета бидејќи дизајнерот на системот мора да специфицира како податоците ќе бидат претставени и кои механизми ќе се користат за извлекување на клучни информации и одлики на податоците.

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

Алгоритмите за машинско учење може да бидат организирани во таксономија, засновано на саканиот излез на алгоритмот.

* **Надгледувано учење** генерира функција која го мапира влезот во посакуваниот излез. За пример, во проблем на класификација, алгоритмот апроксимира функција со мапирање на влезен вектор во класи според спроведените тренинг примери.
* **Ненадгледувано учење** моделира множество на влезови во кластери (групи).
* **Полунадгледувано учење** ги комбинира надгледуваното и ненадгледуваното учење и најчесто во тренинг примерот се вклучени податоци спроведени од човекот но и податоци добиени со податочно рударење.
* **Засилено учење** дава делумна автономност во делувањето со тоа што претходно се врши набљудување и проучување на околината. Секоја акција има некоја последица по околината која зависно од акцијата дава позитивна, негативна повратна врска или помош до машината која учи така што таа може да ги контролира своите наредни акции.
* **Трансдукција** е учење со кое машината се обидува да го предвиди излезот засновано на тренинг влезовите, излезите и тест влезовите.
* **Учење како да се учи** овозможува машината сама да учи од своите претходни искуства и да ја подобрува секоја своја следна акција. Уште се нарекува и учење на мета ниво.

## Видови на имплементација

### Дрво на одлука

Овој начин на учење користи дрво на одлука како предикатен модел (начин на претставување на проблем со кој се прави обид најдобро да се претстави веројатноста за можниот излез) кој ги мапира одкритијата за некој елемент од дрвото во заклучоци за целната вредност на тој елемент.
### Правило на асоцијација

Правилото на асоцијација се користи како метод на учење за да се одкријат интересни врски помеѓу параметри во големи бази на податоци.
### Вештачки невронски мрежи

Вештачка невронска мрежа е алгоритам за учење, најчесто наречен “невронска мрежа”, кој е инспириран од структурата и функционалниот аспект на биолошка невронска мрежа. Пресметувањата се структурирани во однос на интерконектирани групи на вештачки неврони кои се поделени по слоеви и секој слој врши одредена измена на влезните параметри. Постојат три поголеми групи на неврони и тоа: Влезни неврони (слој), во овој слој од неврони се дефинираат директните влезови во невронската мрежа кои се добиваат од надворешниот свет и се спроведуваат во невронската мрежа за обработка. Скриени неврони (слој) или уште наречен и среден слој, ова е слој од неврони каде влезот е индиректен и се добива од претходните слоеви во скриениот слој или пак директно од влезниот слој кога се работи за неврони од скриениот слој кој се поставени на самиот почеток на скриениот слој. Последниот слој е излезниот слој во кој се дефинирани неврони кои даваат излез од обработката извршена врз спроведениот влез. Модерните невронски мрежи се алатки за не-линеарно статистичко податочно моделирање. Тие најчесто се користат за моделирање на комплексни врски помеѓу влезот и излезот, за изнаоѓање шеми во податоците и карактеризирање на статистчката структура за непозната заедничка веројатносна распределба на повеќе набљудувани променливи.
### Генетско програмирање

Генетско програмирање е алгоритамски заснована еволутивна методологија инспирирана од биолошката еволуција за изнаоѓање компјутерски програми кои извршуваат кориснички-дефинирани задачи. Тоа е специјализација на генетски алгоритми каде секој поединец е компјутерски програм. Оваа техника се користи за оптимизација на популација на компјутерски програми според правилото на соодветност одредено од способноста на програмата да изведува дадена задача.
### Програмирање со индуктивна логика

Програмирање со индуктивна логика е начин на учење кој користи логичко програмирање како униформна репрезентација за примери, основно знаење и хипотези. Со спореведување на основно знаење на одреден проблем и множество на пирмери претставени како логичка база на податоци од факти, овој начин на учење се обидува да изведе хипотеза во форма на логичка програма која ги опфаќа сите позитивни но не негативните примери.
### Векторски потпорни машини

Векторски потпорни машини се множество на поврзани надгледувани методи за учење кои користат класификација и регресија. За дадено множество од тренинг примери, секој од примерите се маркира како припадник на една од две категории. Со помош на векторско-потпорните машини се прави модел со кој се предвидува дали даден влезен пример припаѓа во една или друга категорија.
### Кластери

Анализата со кластери (групи) или уште наречено кластерирање (групирање) е поделба на множество податоци во подмножества наречени кластери така што сите набљудувани податоци во одредена група се на некој начин слични по природа. Кластерирањето е метод на ненадгледувано учење и често употребуван метод за статистичка анализа на податоци.
### Баесови мрежи

Баесова мрежа, уште наречена и мрежа на верување е веројатносен графички модел кој претставува множество на случајни променливи и нивните условни независности со помош на насочен ацикличен граф (DAG). За пример, Баесова мрежа може да ја претставува врската меѓу одредени болести и симптоми. Доколку се знаат симптомите, мрежата може да се искористи за да се пресмета вреојатноста за присуство на некоја од различните болести. Постојат ефикасни алгоритми кои со помош на Баесова мрежа извлекуваат знаење за одредени проблеми.
## Практична примена

* Машинска перцепција
* Компјутерска визија
* Обработка на природни јазици
* Препознавање на синтаксички облици
* Пребарувачи
* Медицинска дијагноза
* Биоинформатика
* Врска мозок-машина
* Хемоинформатика
* Препознавање на лажни платежни картички
* Анализа на берзи
* Класификација на ДНК-низи
* Низно рударење
* Препознавање на говор и ракопис
* Препознавање на облици во компјутерска визија
* Индустрија за игри
* Софтверско инженерство
* Динамички адаптивни web сајтови
* Локомоторен систем кај роботи
* Финансиски пресметки
* Мониторинг на здравје кај пациенти
* Сентиментална анализа (рударење на мисли)

## Идна примена

* Автономни машини за операции
* Фирми контролирани од машини
* Автономни машински агенти

## Наводи

1. Tom Mitchell, The Discipline of Machine Learning.