Индуктивно програмирањеИндуктивно програмирање (ИП)је посебна област аутоматског програмирања, која покрива истраживање из вештачке интелигенције и програмирања, који се бави учењу обичних декларативних (логички или функционални) и често рекурзивних програма из непотпуних спецификација, као што је улаз/излаз примери или ограничења. У зависности од програмског језика који се користи, постоји неколико врста индуктивног програмирања. Индуктивно функционално програмирање, које користи функционалне програмске језике као што су Lisp или Haskell, а већина посебно индуктивно логичко програмирање, које користи логичке програмске језике као што су Prolog и друге логичке репрезентације као што је опис логике, су изражени, али и друге (програмирање) језичке парадигме се такође користе, као што је ограничење програмања или вероватноћа програмирања. ДефиницијаИндуктивно програмирање укључује све приступе који су укључени са програмима за учење или алгоритама из непотпуних (формалних) спецификација. Могући улази у IP систем су скуп у обуку улаза и одговарајућег излаза или функција излазних евалуација, описујући жељено понашање које је намењено програмима, трагови или акционе сцене које описују процес обрачуна посебних излаза, ограничења за програм која индукују о његовом времену ефикасности или комплексности, разне врсте предзнања као што су стандардни типови података, дефинисане функције које се користе, програмске шеме или шаблони описују проток података намењених програмима, хеуристика за вођење потраге за решењем или још предрасуда. Излаз на IP систем је програм у неком произвољном програмском језику који садржи уређај и петље или рекурзивне контролне структуре, или било коју другу врсту Тјурингове потпуности репрезентације језика. У многим апликацијама излазни програм мора бити тачан у вези са примерима и делимичним спецификацијама, и то доводи до разматрања индуктивног програмирања као посебна област унутар аутоматског програмирања или програм синтеза,[1][2] обично разлика од "дедуктивне' програм синтезе,[3][4][5] где је спецификација обично потпуна. У другим случајевима, индуктивно програмирање се посматра као још шире подручје где се неко декларативно програмирање или заступљеност језика може користи и чак може имати неки степен грешке у примерима, као код општег машинског учења, виша специфична област структуре рударства и подручје симболичке вештачке интелигенције. Специфичност је број примера или делимична спецификација која је потребна. Типично, индуктивне технике програмирања могу да се науче у само неколико примера. Разноликост индуктивног програмирања обично долази од апликација и језика који се користе: осим логичког програмирања и функционалног програмирања, остале програмске парадигме и заступање језика се користи или су предложене у индуктивном програмирању, као што су функционално логичко програмирање, ограничење програмирања, вероватноћа програмирања, абдуктив логика програмирања, модална логика, акциони језици, агент језици и многе врсте императивних језика. ИсторијаИстраживање о индуктивним синтезама рекурзивних функционалних програма почела је у раним 1970-им и доведена је на чврсте теоријске основе са првобитном тезом система Summers-а[6] и рада Biermann-а.[7] Ови приступи су подељени у две фазе: прва, улазно-излазни примери су претворени у не-рекурзивне програме (трагова) користећи мали скуп основних оператора; Друго, правилности у траговима су тражили да половина одустане у рекурзивном програму. Главни резултати до средине 1980-их је анкетирани Смит.[8] Због ограниченог напретка у погледу опсега програма који се може синтетизирати, истраживачке активности се значајно смањују у наредној деценији. Појава логичког програмирања донело је нови елан, али и нови правац у раним 1980-им, посебно због MIS система Shapiro[9] који на крају формира нову област индуктивног логиког програмирања (ИЛП).[10] Рани радови Plotkin-а,[11][12] и његов "рођак најмање опште генерализације (рног)", има огроман утицај на индуктивно логичко програмирање. Већина ILP радова бави се широком класом проблема, као што фокус није само рекурзиван логички програм, али је на машини учења симболичких хипотеза из логичких репрезентација. Међутим, било је неких охрабрујућих резултата на учење рекурзивних Prolog програма као што су quicksor од примера, заједно са одговарајућим знањем, на пример, са GOLEM-ом.[13] Али опет, после почетног успеха, заједница добија разочарано ограничење напретка индукције рекурзивних програма[14][15][16] са ILP мањим и мање се фокусира на рекурзивне програме и нагиње све више и више ка машинском учењу подешавање са применама у релационим подацима рударства и откривању знања.[17] У паралелном послу у ILP-у, Koza[18] је предложио генетичко програмирање у раним 1990-им као генерисање-и-тест заснован приступ програмима за учење. Идеја генетског програмирања је даље развијање у индуктивном програмирању система ADATE[19] и систематска-претрага базе система MagicHaskeller-а.[20] Ево опет, функционални програми се науче из комплета позитивних примера, заједно са излазом евалуација (фитнес) функција које одређују жељени улаз/излаз понашања програма за учење. Рани рад у основној индукцији (такође познат као граматичко закључивање) односи се на индуктивно програмирање, као преписивање система и логички програми могу се користити за представљање правила производње. У ствари, на почетку радова у индуктивном закључивању сматра основну индукцију и Lisp програм у основи као истим проблемом.[21] Резултати у смислу лакоћа учења су се односили на класичне концепте, као што је идентификација у-лимиту, као увођење у првобитном раду Gold-а.[22] У скорије време, проблем учење језика се обратио заједници индуктивног програмирања.[23][24] У последњих неколико година, класични приступи су настављени и напредовали са великим успехом. Дакле, проблем синтеза је преформулисан на позадину конструктора на бази термина корекција система узимајући у обзир модерне технике функционалног програмирања, као и умерено коришћење претраживача на бази стратегије и коришћења позадинског предзнања, као и аутоматски проналазак потпрограма. Многе нове и успешне примене недавно су се појавиле изнад програма синтрза, већина нарочито у области манипулације подацима, програмирање примера и когнитивног моделирања (види доле). Друге идеје су истражене са заједничким карактеристикама коришћења декларативног језика за представљање хипотеза. На пример, употреба вишег реда карактеристика, шема или структурираних раздаљина се заговара за боље руковање рекурзивних типова података и објеката;[25][26][27] апстракција је и истражена као снажнији приступ кумулативном учењу и функцији проналаска.[28][29] Једна моћна парадигма која је недавно коришћена за представљање хипотеза у индуктивном програмирању (углавном у облику генеративних модела) је пробабилистичко програмирање (и сродне парадигме, као што су стохастички логички програми и Бајесово логичко програмирање).[30][31][32][33] Област примене„Прва радионица о приступима и применама индуктивног програмирања (ППИП)”. Архивирано из оригинала 03. 03. 2016. г. Приступљено 13. 01. 2016. одржана у вези са ICML 2005 идентификовала је све апликације где је "учење програма или рекурзивних правила позвано, [...] најпре у домену софтверског инжењерства где је структура учења, софтверски асистенти и софтверски агенти могу помоћи да се ослободе програмери из рутинских задатака, дати програмску подршку за крајње кориснике, односно подршку почетним програмерима и програмирање тутор система. Остала подручја примене су учење језика, учење рекурзивних правила контроле за AI-планирање, учење рекурзивних концепата у веб-рударству или податак-формат трансформације ". Од тада, ове и многе друге области су показале да могу да буду успешне апликације за индуктивно програмирање, као што је крајње-корисничко развијање,[34] сродне области су програмирање примерима[35] и програмирања од стране демонстрације,,[36]и интелигентни туторски системи. Аутоматска манипулација подацима је такође било предмет неких "убица апликација" за индуктивно програмирање, као што је 'Flash Fill' алат[37][38] у Мајкрософт Екселу. Друге области у којима индуктивно закључивање је недавно примењено су стицање знања,[39] вештачка интелигенција,[40] појачавање учења и оцењивање теорије,[41][42] и когнитивне науке уопште.[43][33] Такође могу бити потенцијалне апликације у интелигентним агенатима, игре, роботика, персонализација, амбијентална интелигенција и људски интерфејс. Види још
Референце
Литература
Спољашње везе
|
Portal di Ensiklopedia Dunia