Едно от най-важните умения на интелигентните агенти е способността да се учат. Познаваме различни начини на учене. Ако логично извлечем ново правило от вече познато правило (например за повишаване на ефективността на процеса), говорим за аналитично или дедуктивно обучение. Изучаването на обща функция/правило от конкретни двойки вход-изход се нарича индуктивно обучение. В зависимост от естеството на обратната връзка, която получава машината, обучението може да бъде разделено, както следва:
Учене под наблюдение
Агентът наблюдава няколко примерни двойки вход-изход и се научава как да създаде адекватен изход за входа. Надеждността на такъв обучен алгоритъм силно зависи от размера и качеството на набора от данни за обучение.
Можем да сравним този процес с начина, по който родителите учат малките деца да разпознават различни неща. Напр. ще им покажат книга с картинки за животни, където ще посочат снимката на всяко животно и ще я маркират правилно („куче“, „котка“, „кон“ и др.). По този начин детето се научава да разпознава отделни животни, дори ако ги вижда на друга снимка или на живо.
Учене без надзор
Агентът се опитва да намери някои модели във входните данни без изрична обратна връзка (не знае „правилните отговори“). Важно е да се групират такива входове, които са сходни по някакъв начин („клъстериране“), както и да се изготвят правила за асоцииране, които описват отделни групи данни и връзките между тях.
Ако покажем такъв алгоритъм напр. няколко различни снимки на кучета, така че той ще може да каже, че всички те си приличат по някакъв начин (две очи, четири крака, опашка и т.н.) и да ги постави в една група, въпреки че няма да може да ги обозначи като кучета.
Полууправлявано обучение
Ето само няколко добре маркирани примера за въвеждане и машината трябва да направи каквото може с обширна колекция от немаркирани входове. Понякога има и случаен шум в данните, т.е. неточности, чието откриване изисква методи на преподаване без учител.
Укрепващо обучение
Агентът е определил определени правила за поведение (например правила за играта, която трябва да играе). Той се учи чрез проби и грешки от поредица от награди или наказания, които получава за резултатите от своите решения (награда за победа, наказание за загуба и т.н.). Той зависи от това кои от действията преди наградата/наказанието са били най-отговорни за резултата.
Индукция на дървото на решенията
Една от най-простите и успешни форми на машинно обучение е индукцията на дърво на решенията. Това е функция, която приема за вход вектор от стойности, атрибути и връща решение, единична изходна стойност. Ще стигнем до това решение, като извършим поредица от тестове. Всеки възел в дървото съответства на тест за стойността на един от входните атрибути, докато клоновете от възела са маркирани с възможни стойности на този атрибут. Входовете се обработват от корена на дървото през съответните клонове до листния възел, указвайки стойността, която трябва да се върне от функцията.
Регресия
Друга форма на индуктивно обучение е регресията. Става въпрос за намиране на функцията, която най-добре описва връзката между входовете и изходите, т.е. напасването на тяхната графика на зависимост.
Най-простият пример е линейна регресия, която търси функция от вида f (x) = w0x + w1. В графиката на зависимостта на входа от изхода той има формата на регресионна линия. Коефициентите w0 и w1 също се наричат маси. При линейна регресия алгоритъмът търси стойности на масата, така че сумата от грешки в секунда да е възможно най-малка. Под грешка имаме предвид разликата между действителната стойност на изхода и стойността, предвидена за дадения вход от регресионната линия. За един вход можем да изчислим квадрата на грешката като (y - w0x - w1) 2, където x е стойността на входа и y е действителният изход (а не прогнозираният). Сумата от квадратите на грешките за всички входове също се използва за означаване на R2.
Функция, описваща връзката между входовете и изходите, може да бъде напр. линеен експоненциален, полином и др.
Пример за линейна регресия:
f (x) = 0,872x + 10, R2 = 0,666
Пример за експоненциална регресия:
f (x) = 23 * e 0,0161x, R2 = 0,667
Пример за полиномиална регресия от 2-ра степен:
f (x) = 17,8 + 0,364 x + 0,0053 x 2, R2 = 0,684
Пример за полиномиална регресия от 3-та степен:
f (x) = 19,8 + 0,084x + 0,0126 x 2 - 0,0000497x 3, R 2 = 0,685
Пример за полиномиална регресия от 4-та степен:
f (x) = 16,6 + 0,744x - 0,0167 x 2 + 0,000403x 3 - 0,00000226x 4, R 2 = 0,687
Класификация
Монтажът може да се използва и за класификация, т.е. разделяне на входовете на класове (групи входове със сходни свойства). Линията, която разделя класовете в графиката, се нарича граница на решението.
Възможността на тренировъчния алгоритъм се изразява чрез крива на обучение, показваща точността на прогнозите на тренираната програма като функция от размера на обучения набор. В същото време теорията за изчислителното обучение казва, че е малко вероятно хипотезата, създадена от програма, която е в съответствие с достатъчно голям набор, да бъде твърде неправилна.
Ако границата на решението е права линия, ние я наричаме линеен разделител. Класификатор, използващ линеен сепаратор, се нарича още линеен класификатор, а данните, които позволяват такъв сепаратор, се наричат линейни сепаратори. Този тип класификатор може да бъде обучен чрез просто правило за актуализиране на коефициентите, определящи неговата граница на решение, за да се поберат линейно разделими данни. Други подходи включват напр. логистична регресия, която използва сепаратор, дефиниран от логистична функция и също така работи за линейно неразделни данни.
Възможността на тренировъчния алгоритъм се изразява чрез крива на обучение, показваща точността на прогнозите на тренираната програма като функция от размера на обучения набор. В същото време теорията за изчислителното обучение казва, че е малко вероятно хипотезата, създадена от програма, която е в съответствие с достатъчно голям набор, да бъде твърде неправилна.
Линейно разделими
Този тип класификатор може да бъде обучен чрез просто правило за актуализиране на коефициентите, определящи неговата граница на решение, за да се поберат линейно разделими данни. Други подходи включват напр. логистична регресия, която използва разделител, дефиниран от логистична функция и също работи за линейно неразделни данни:
Линейно неразделни
Този тип класификатор може да бъде обучен чрез просто правило за актуализиране на коефициентите, определящи неговата граница на решение, за да се поберат линейно разделими данни. Други подходи включват напр. логистична регресия, която използва разделител, дефиниран от логистична функция и също работи за линейно неразделни данни:
Изкуствени невронни мрежи
В момента относително нова концепция, изкуствените невронни мрежи, е много популярна. Това са опростени модели на невронни мрежи в мозъка на животните. Основната функция на изкуствения неврон е да изчисли претеглената сума от неговите входове и да върне стойност от определен диапазон (често от 0 до 1) въз основа на някаква активираща (трансферна) функция. За да регулирате изхода на неврона, т.нар предразсъдък, константа, която невронът добавя към претеглената сума на входовете, преди да приложи функция за активиране. Поради съществуването на тази константа, моделът на невронната мрежа е по-гъвкав и може да бъде по-добре адаптиран към входните данни. Използваните входящи тегла и стойността на предразсъдъците се актуализират по време на учебния процес, който може да се проведе със или без учител. Състои се от 3 основни стъпки:
- Инициализиране на тежести - Теглото има случайни стойности в началото, равни на някои малки числа (например -1 до 1). По същия начин стойността на предразсъдъците на всеки неврон е много малка в началото.
- Изчисляване на продукцията - Изчислява се претеглената сума на входните стойности и се добавя стойността на предразсъдъците. Резултатът се предава на активиращата функция, която притиска стойността си до определен диапазон (например от 0 до 1). Изборът на функция за активиране зависи от естеството на очакваните данни. Напр. при линейна класификация можем да използваме така наречения модел на неврона. праг логическа единица. Основната му операция е да изчисли претеглената сума на входовете и след това да върне 1, ако тази сума надвишава определен праг, в противен случай връща 0.
- Изчисляване на грешки и настройка на теглото - Първо изчисляваме грешката, т.е. разликата между изхода, върнат от модела, и очаквания изход. След това мрежовите тегла и стойности на пристрастия се коригират така, че изходът на модела от следващата итерация (повторение) да е по-близо до очаквания изход и грешката да бъде намалена. Колко значителни трябва да бъдат промените в стойностите, може да се определи предварително с помощта на константа, определяща скоростта на обучение от всяка итерация (обикновено число от 0 до 1).
Стъпки 2 и 3 се повтарят, докато грешката бъде сведена до минимум до възможно най-малката стойност или вече няма начин за намаляване на грешката. Алтернативно, обучението може да бъде прекратено дори след достигане на определен максимален брой итерации.
Внедряване на Python:
Изтегли
# Импортиране на използвани модули
внос произволен, numpy
def initialize_weight ():
# Задаване на "семе" за произволен генератор
random.seed (1)
# Генерирайте произволни първоначални тегла
# (присвояване на случайни числа от интервала [-1,1) към матрицата 3x1)
тегло = numpy.random.uniform (ниско = -1, високо = 1, размер = (3, 1))
възвръщаемо тегло
# Функция за активиране (в този случай това е сигмоидна функция)
def sigmoid (x):
връщане 1/(1 + numpy.exp (-x))
# Друга спомагателна функция (извеждане на сигмоидната функция)
def производни_сигмоидни (x):
връщане x * (1 - x)
# Функция за изчисляване на изхода с помощта на претеглена сума, предразсъдъци и функция за активиране
def find_output (входове, тегла, предразсъдъци):
връщане на сигмоид (numpy.dot (входове, тегла) + предразсъдъци)
# Обучение по невронна мрежа
def обучение (входове, очакван_изход, тежести, предразсъдъци, скорост на обучение, брой_на_изложение):
за итерация в обхват (pocet_iteracii):
# Намерете резултатите от учебните материали
изчисляван_изход = търсене_изход (входове, тегла, предразсъдъци)
# Изчисляване на грешки
грешка = деривация_сигмоид (изчисляван_изход) * (очакван_изход - изчислен_изход)
# Фактори за регулиране на теглото и стойност на предразсъдъците
факторH = numpy.dot (inputs.T, грешка) * скорост на обучение
факторP = грешка * скорост на обучение
# Регулиране на тежестите и стойностите на предразсъдъците
тегло + = фактор Н
предразсъдъци + = факторP
# Междинно изявление на процедурата
if ((iteracia% 1000) == 0):
print ("Итерация", итерация)
print ("Изчислен резултат:", vypocitany_vystup.T)
печат ("Очакван резултат:", очакван_изход.T)
печат ()
# Случайни първоначални тегла за мрежата
тегло = инициализиране_тегло ()
# Комплект за обучение
входове = numpy.array ([[1, 1, 1],
[1, 0, 0],
[0, 0, 1]])
# Набор за цел и тест
очакван_изход = numpy.array ([[1, 0, 1]]). T
тест = numpy.array ([1, 0, 1])
# Обучение по невронна мрежа
научена_тежест = обучение (входове, очакван_изход, тежести, предразсъдъци = 0,001, скорост на обучение = 0,98, брой_написки = 100000)
# Тествайте мрежата в тестовата мрежа
точност = (find_output (тест, научена_тежест, пристрастие = 0,01)) * 100
print ("Точност на модела:", точност [0], "%")
Ресурси, полезни връзки, литература
RUSSELL, S. J. - NORVIG, P.: Изкуствен интелект: модерен подход (3-то издание). Upper Saddle River, САЩ: Prentice Hall, 2003. ISBN 0-13-790395-2
- Изкуствено хранене Кърмене и хранене Консултации за кърмене и хранене MAMA и Ja консултации
- Tajch Klinger, изкуствен воден резервоар, плувно езеро
- Храненето на кърмачета напредва, трябва да се основава на млечна мазнина
- Стивън Хокинг и най-добрите му поговорки
- Световни резултати на словашкия лекар Подобрява живота на диабетиците с храна - Начало - Новини