JavaRush /Блоги Java /Random-TG /Омӯзиши мошинҳо барои таҳиягарони Java, Қисми 1

Омӯзиши мошинҳо барои таҳиягарони Java, Қисми 1

Дар гурӯҳ нашр шудааст
Алгоритм омӯзиши мошинсозӣ созед ва аввалин вазифаи пешгӯии худро бо истифода аз Java таҳия кунед. Мошинҳои худидоракунанда, системаҳои шинохти чеҳра ва ёварони овозӣ ҳама бо истифода аз технологияҳои омӯзиши мошинсозӣ ва чаҳорчӯба таҳия шудаанд. Ва ин танҳо мавҷи аввал аст. Дар тӯли 10 соли оянда насли нави маҳсулот ҷаҳони моро тағир дода, равишҳои навро ба таҳияи барномаҳо, маҳсулот ва замимаҳо фароҳам меорад. Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 1 - 1Ҳамчун як барномасози Java, шумо мехоҳед, ки ин мавҷро ҳоло ба даст оред, ки ширкатҳои технологӣ ба омӯзиши мошинсозӣ сармоягузорӣ мекунанд. Он чизе, ки шумо имрӯз меомӯзед, шумо метавонед барои панҷ соли оянда истифода баред. Аммо аз куҷо оғоз кардан лозим аст? Ҳадафи ин мақола ҷавоб додан ба ин савол аст. Шумо таассуроти аввалинро дар бораи принсипҳои омӯзиши мошинсозӣ тавассути пайравӣ ба дастури кӯтоҳи мо оид ба татбиқ ва омода кардани алгоритми омӯзиши мошинҳо пайдо хоҳед кард. Пас аз омӯхтани сохтори алгоритми омӯзишӣ ва хусусиятҳое, ки шумо метавонед онро барои таълим додан, баҳо додан ва интихоб кардани функсияе, ки беҳтарин пешгӯиро таъмин мекунад, истифода баред, шумо дар бораи чӣ гуна истифода бурдани чаҳорчӯбаи JVM (Weka) фаҳмед. сохтани қарорҳои омӯзиши мошинсозӣ. Ин мақола ба омӯзиши мошинҳои назоратшаванда тамаркуз мекунад, зеро он принсипест, ки дар таҳияи барномаҳои интеллектуалӣ бештар истифода мешавад.

Омӯзиши мошинсозӣ ва зеҳни сунъӣ

Омӯзиши мошинсозӣ аз соҳаи зеҳни сунъӣ ба вуҷуд омадааст, ки ҳадафи он сохтани мошинҳое мебошад, ки метавонанд ба зеҳни инсон тақлид кунанд. Ҳарчанд истилоҳи "омӯзиши мошинсозӣ" дар илми информатика пайдо шудааст, зеҳни сунъӣ як соҳаи нави илм нест. Санҷиши Тюринг , ки аз ҷониби риёзидон Алан Тюринг дар аввали солҳои 50-уми асри 20 таҳия шудааст, яке аз аввалин озмоишҳоест, ки барои муайян кардани он, ки як мошини ҳисоббарор дорои зеҳни ҳақиқӣ аст. Тибқи санҷиши Тюринг, компютер мавҷудияти зеҳни инсонро тавассути тақлид кардани шахс исбот мекунад, бе он ки шахс дарк мекунад, ки ӯ бо мошин сӯҳбат мекунад.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 1 - 2
Бисёр равишҳои маъмули омӯзиши мошинсозӣ имрӯз ба ғояҳое асос ёфтаанд, ки даҳсолаҳо доранд. Аммо даҳсолаи охир дар компютерсозӣ (ва платформаҳои ҳисоббарории тақсимшуда) барои татбиқи алгоритмҳои омӯзиши мошинҳо қудрати кофӣ овард. Аксарияти онҳо миқдори зиёди зарбкунии матритсаҳо ва дигар ҳисобҳои математикиро талаб мекунанд. Бист сол пеш, технологияҳои ҳисоббарорӣ, ки ба чунин ҳисобҳо имкон медиҳанд, вуҷуд надоштанд, аммо ҳоло онҳо ба воқеият табдил ёфтанд. Алгоритмҳои омӯзиши мошинсозӣ ба барномаҳо имкон медиҳанд, ки раванди беҳтар кардани сифатро анҷом диҳанд ва қобorятҳои худро бидуни дахолати инсон васеъ кунанд. Барномае, ки бо истифода аз омӯзиши мошинсозӣ таҳия шудааст, қодир аст мустақилона рамзи худро навсозӣ ё васеъ кунад.

Омӯзиши назоратшаванда ва омӯзиши беназорат

Омӯзиши назоратшаванда ва беназорат ду равиши маъмултарин барои омӯзиши мошинсозӣ мебошанд. Ҳарду имконот талаб мекунанд, ки ба мошин миқдори зиёди сабтҳои маълумотро таъмин кунанд, то муносибатҳо барқарор кунанд ва аз онҳо омӯхта шаванд. Чунин маълумоти ҷамъшуда одатан "вектори хусусият" номида мешавад . Масалан, мо як бинои истикоматй дорем. Дар ин ҳолат, вектори хусусият метавонад дорои чунин хусусиятҳо бошад: майдони умумии хона, шумораи ҳуҷраҳо, соли сохта шудани хона ва ғайра. Дар омӯзиши назоратшаванда , алгоритми омӯзиши мошинсозӣ барои ҷавоб додан ба саволҳои марбут ба векторҳои хусусият омӯзонида мешавад. Барои омӯзонидани алгоритм ба он маҷмӯи векторҳои хусусият ва тамғакоғазҳои алоқаманд дода мешавад. Нишони алоқаманд аз ҷониби шахс (муаллим) дода мешавад ва дар он "ҷавоб" -и дуруст ба саволи додашуда мавҷуд аст. Алгоритми омӯзишӣ векторҳои хусусият ва тамғакоғазҳоро барои дарёфти сохтори дохилӣ ва муносибатҳои байни онҳо таҳлил мекунад. Бо хамин машина ба саволхо дуруст чавоб доданро ёд мегирад. Ҳамчун мисол, мо метавонем як барномаи муайяни интеллектуалиро барои тиҷорати амволи ғайриманқул баррасӣ кунем. Онро бо истифода аз вектори хусусиятҳо, аз ҷумла андоза, шумораи ҳуҷраҳо ва соли сохташуда барои маҷмӯи хонаҳо омӯхтан мумкин аст. Шахсе бояд дар асоси ин омилҳо ба ҳар як хона тамға бо нархи дурусти хона таъин кунад. Бо таҳлor ин маълумот, як барномаи интеллектуалӣ бояд худро таълим диҳад, ки ба саволи "Ман барои ин хона чӣ қадар пул гирифта метавонам?"
Ба хондан дар бораи Java таваҷҷӯҳ доред? Ба гурӯҳи Java Developer ҳамроҳ шавед !
Пас аз ба итмом расидани раванди омодагӣ, маълумоти нави воридотӣ дигар қайд карда намешавад. Мошин бояд ба саволҳо дуруст ҷавоб диҳад, ҳатто барои векторҳои хусусияти номаълум ва тамғанашуда. Дар омӯзиши беназорат, алгоритм барои пешгӯии ҷавобҳо бидуни тамғагузории одамон (ё ҳатто бе савол додан) тарҳрезӣ шудааст. Ба ҷои муайян кардани нишона ё натиҷа, алгоритмҳои омӯзишии беназорат маҷмӯи маълумот ва қудрати ҳисоббарориро барои кашф кардани муносибатҳои қаблан номаълум истифода мебаранд. Масалан, дар маркетинги маҳсулоти истеъмолӣ, омӯзиши бидуни назорат метавонад барои муайян кардани муносибатҳои пинҳонӣ ё гурӯҳбандии муштариён истифода шавад, ки дар ниҳоят метавонад ба такмил додани барномаи маркетинг ё эҷоди барномаи нав мусоидат кунад. Дар ин мақола, мо ба омӯзиши мошинҳои назоратшаванда тамаркуз хоҳем кард; ин дар айни замон усули маъмултарин истифода мешавад.

Омӯзиши мошинҳои назоратшаванда

Ҳама омӯзиши мошинсозӣ ба маълумот асос ёфтааст. Барои лоиҳаи омӯзиши мошинсозӣ, шумо бояд маълумотро бо маркерҳо тавре қайд кунед, ки ба саволи додашуда ҷавобҳои пурмазмун диҳад. Дар зер, дар Ҷадвали-1 ҳар як сабти иттилооти хона "нархи хона" нишон дода шудааст. Бо муайян кардани робитаи байни маълумоти сабт ва нархи хона, алгоритм бояд дар ниҳоят метавонад нархи бозории хонаҳоеро, ки ба рӯйхат дохил нашудаанд, пешгӯӣ кунад. (Лутфан қайд кунед, ки майдони хона бо метри мураббаъ ва нархи хона бо евро нишон дода шудааст).
Љадвали 1. Рўйхати хонањо
Имзо Имзо Имзо Нишон
Майдони хона Шумораи ҳуҷраҳо Синну соли хона Нархи тахминии хона
90 м2 / 295 фут 2 хона 23 сола 249 000 евро
101 м2 / 331 фут 3 хона не 338 000 евро
1330 м2 / 4363 фут 11 ҳуҷра 12 сол 6.500.000 €
Дар марҳилаҳои аввал, шумо эҳтимол маълумотро дастӣ нишон медиҳед, аммо дар ниҳоят шумо барномаи худро таълим медиҳед, ки онро мустақилона иҷро кунад. Эҳтимол шумо аллакай дидаед, ки ин равиш бо муштариёни почтаи электронӣ кор мекунад, ки дар он ҷо барои интиқол додани почтаи электронӣ ба ҷузвдони Спам, шумо ба саволи "Оё ин почтаи электронӣ спам аст?" Вақте ки шумо ҷавоб медиҳед, шумо барномаро таълим медиҳед, ки паёмҳои электрониро дидан намехоҳед. Филтри спам-и барнома барои қайд кардани паёмҳо аз як манбаъ ё дорои мундариҷаи якхела ва идора кардани онҳо тибқи қоидаҳои мувофиқ омӯзонида шудааст. Маҷмӯи додаҳои тамғагузорӣшуда танҳо барои мақсадҳои омодагӣ ва санҷиш талаб карда мешавад. Пас аз ба итмом расидани ин қадам, алгоритми омӯзиши мошинсозӣ дар маълумоти номбаршуда кор мекунад. Масалан, шумо метавонед як алгоритми пешгӯиро сабти нави маълумот дар бораи хона таъмин кунед ва он бояд ба таври худкор нархи интизории хонаро дар асоси “дониш”-и аз маълумоти омодагӣ гирифташуда пешгӯӣ кунад.

Чӣ тавр мошин пешгӯиро меомӯзад

Мушкилоти омӯзиши мошинҳои назоратшаванда пайдо кардани функсияи мувофиқи пешгӯӣ барои саволи додашуда мебошад. Аз ҷиҳати математикӣ мушкил пайдо кардани функсияест, ки тағирёбандаро ҳамчун вуруд қабул мекунад хва арзиши пешбинишударо бармегардонад у. Ин вазифаи гипотезаҳо (hθ)натиҷаи раванди омодагӣ мебошад. Аксар вақт функсияи гипотезаро функсияи мақсад ё функсияи пешгӯӣ низ меноманд.
y = h θ (x)
Дар аксари ҳолатҳо, хон массиви маълумот аст. Дар мисоли мо, ин як массиви дученакаи элементҳоест, ки хонаро муайян мекунад, ки аз шумораи ҳуҷраҳо ва майдони хона иборат аст. Массиви чунин арзишҳо вектори хусусият мебошад. Бо нишон додани вазифаи мушаххаси ҳадаф, мо метавонем онро барои пешгӯии ҳар як вектори хусусият истифода барем х. Барои пешгӯии нархи хона, шумо бояд функсияи ҳадафро бо истифода аз вектори хусусияти {101.0, 3.0}иборат аз майдони хона ва шумораи ҳуҷраҳо даъват кунед:
// целевая функция h (результат процесса обучения)
Function<Double[], Double> h = ...;

// определяем целевой вектор с площадью дома=101 и количеством комнат=3
Double[] x = new Double[] { 101.0, 3.0 };

// и предсказываем цену дома (метка)
double y = h.apply(x);
Дар codeи сарчашма аз Мисол-1, арзишҳо дар массив хвектори хусусиятҳои хонаро ифода мекунанд. Арзише у, ки аз ҷониби функсияи ҳадаф бармегардад, нархи пешбинишудаи хона мебошад. Ҳадафи омӯзиши мошинсозӣ муайян кардани функсияи ҳадафест, ки бо параметрҳои номаълуми вуруд то ҳадди имкон дақиқ кор хоҳад кард. Дар омӯзиши мошинсозӣ, функсияи мақсаднок (hθ)баъзан модел номида мешавад. Ин модел натиҷаи раванди таълим аст.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 1 - 3
Дар асоси намунаҳои тамғаи таълимӣ, алгоритми омӯзиш сохторҳо ё намунаҳоро дар маълумоти омӯзиш ҷустуҷӯ мекунад. Ҳамин тавр, ӯ моделеро месозад, ки умуман барои маълумот хуб аст. Чун қоида, раванди таълим хусусияти ҷустуҷӯӣ дорад. Дар аксари мавридҳо, раванд бо истифода аз вариантҳои гуногуни алгоритмҳо ва конфигуратсияҳои омӯзиш борҳо такрор карда мешавад. Дар натиҷа, ҳамаи моделҳо аз рӯи нишондиҳандаҳои кор арзёбӣ карда мешаванд, ки дар байни онҳо беҳтарин интихоб карда мешавад. Ва ин модел барои ҳисоб кардани арзишҳои тахминӣ барои маълумоти дар оянда номбаршуда истифода мешавад.

Регрессияи хатӣ

Барои таълим додани мошин ба “фикр кардан”, шумо аввал бояд алгоритми омӯзиширо, ки шумо истифода мебаред, интихоб кунед. Масалан, регрессияи хатӣ. Ин яке аз соддатарин ва маъмултарин алгоритмҳои омӯзиши мошинҳои назоратшаванда мебошад. Алгоритм тахмин мекунад, ки муносибати байни хусусиятҳои воридотӣ ва аломатҳои натиҷа хатӣ аст. Функсияи регрессияи хаттии умумии дар поён овардашуда арзиши пешбинишударо тавассути ҷамъбасти ҳамаи унсурҳои вектори хусусияти зарб ба параметр θ (тета) бармегардонад . Ин параметр дар ҷараёни таълим барои мутобиқ кардан ё "танзим" кардани функсияи регрессия дар асоси маълумоти омӯзишӣ истифода мешавад.
h θ (x) = θ 0 * 1 + θ 1 * x 1 + ... θ n * x n
Дар функсияи регрессияи хатӣ параметри тета ва параметрҳои хусусият бо зерхатҳо рақамгузорӣ карда мешаванд. Зернавис мавқеи параметр (θ)ва параметри хусусиятро (х)дар вектор муайян мекунад. Аҳамият диҳед, ки хусусияти x 0 як истилоҳи доимӣ аст ва 1барои мақсадҳои ҳисоббарорӣ муҳим аст. Дар натиҷа, индекси параметрҳои муҳим ба монанди майдони хона аз x 1 оғоз меёбад . Ҳамин тавр, агар ба x 1 арзиши якуми вектори хусусият (майдони хона) дода шавад, он гоҳ x 2 арзиши навбатии (шумораи ҳуҷраҳо) ва ғайраро мегирад. Мисоли-2 татбиқи Java-и функсияи регрессияи хатиро нишон медиҳад, ки ба таври математикӣ ҳамчун h θ (x) ишора шудааст. Барои соддагӣ, ҳисобҳо бо истифода аз double. Дар усули apply(), пешбинӣ шудааст, ки элементи якуми массив ба 1.0 баробар бошад ва берун аз ин функсия муқаррар карда шавад. Мисоли 2: Регрессияи хатӣ дар Java
public class LinearRegressionFunction implements Function<Double[], Double> {
 private final double[] thetaVector;

 LinearRegressionFunction(double[] thetaVector) {
 this.thetaVector = Arrays.copyOf(thetaVector, thetaVector.length);
 }

 public Double apply(Double[] featureVector) {
 // с целью упрощения вычислений первый элемент должен быть equals 1.0
 assert featureVector[0] == 1.0;

 // простое последовательное сложение
 double prediction = 0;
 for (int j = 0; j < thetaVector.length; j++) {
 prediction += thetaVector[j] * featureVector[j];
 }
 return prediction;
 }

 public double[] getThetas() {
 return Arrays.copyOf(thetaVector, thetaVector.length);
 }
}
Барои сохтани мисоли нав LinearRegressionFunction, шумо бояд параметрро муайян кунед θ. Ин параметр ё вектор барои мутобиқ кардани функсияи умумии регрессияи хатӣ ба маълумоти асосии омӯзиш истифода мешавад. Параметре, θки дар барнома истифода мешавад, дар ҷараёни таълим дар асоси мисолҳои омӯзишӣ ислоҳ карда мешавад. Сифати вазифаи мақсадноки омӯзонидашуда аз сифати маълумоте, ки барои омӯзиш омода шудааст, вобаста хоҳад буд. Дар мисоли дар поён овардашуда мо LinearRegressionFunctionпешгӯиҳои нархҳоро дар асоси андозаи хона истифода мебарем. Бо назардошти он, ки x 0 бояд доимӣ бо арзиши 1,0 бошад, функсияи ҳадаф бо истифода аз ду параметр оғоз карда мешавад θ, ки онҳо натиҷаи раванди таълим мебошанд. Пас аз сохтани як мисоли нав, нархи хона бо масоҳати 1330 метри мураббаъ ба таври зерин пешгӯӣ карда мешавад:
// тета вектор, используемый в этом примере, является результатом процесса обучения
double[] thetaVector = new double[] { 1.004579, 5.286822 };
LinearRegressionFunction targetFunction = new LinearRegressionFunction(thetaVector);

// создание вектора признаков со значениями x0=1 (для удобства вычислений) и //x1=площадь дома
Double[] featureVector = new Double[] { 1.0, 1330.0 };

// выполняем расчеты
double predictedPrice = targetFunction.apply(featureVector);
Дар расми зер шумо метавонед графики функсияи ҳадафи пешгӯиро бинед (хати кабуд). Он тавассути ҳисоб кардани функсияи ҳадаф барои ҳамаи арзишҳои майдони хона ба даст оварда мешавад. Диаграмма инчунин ҷуфтҳои минтақавии нархҳоро дар бар мегирад, ки барои омӯзиш истифода мешаванд.
Омӯзиши мошинсозӣ барои таҳиягарони Java, Қисми 1 - 4
Дар айни замон диаграммаи пешгӯӣ хеле хуб ба назар мерасад. Координатаҳои график (мавқеъ ва нишебии) аз ҷониби вектор муайян карда мешаванд θ { 1.004579, 5.286822 }. Аммо чӣ гуна шумо метавонед муайян кунед, ки кадом θвектор барои барномаи шумо мувофиқтар аст? Оё функсия беҳтар аст, агар шумо параметри якум ё шояд дуюмро тағир диҳед? Барои муайян кардани вектори беҳтарини тета, ба шумо як функсияи хидматрасон лозим аст, ки то чӣ андоза функсияи мақсаднок корро иҷро мекунад. ДАВОМ ДОРАД Тарҷума аз англисӣ. Муаллиф: Грегор Рот, Архитектори нармафзор, JavaWorld.
Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION