IBM-ը բացում է CodeNet-ը մեքենայական ուսուցման համակարգերի համար, որոնք թարգմանում և հաստատում են կոդը

IBM-ը ներկայացրել է իր CodeNet նախաձեռնությունը, որի նպատակն է հետազոտողներին տրամադրել տվյալների բազա, որը թույլ է տալիս նրանց փորձարկել մեքենայական ուսուցման տեխնիկայի կիրառումը ծրագրավորման լեզուների թարգմանիչներ, կոդերի գեներատորներ և անալիզատորներ ստեղծելու համար: CodeNet-ը ներառում է 14 միլիոն կոդի օրինակների հավաքածու, որոնք լուծում են 4053 ընդհանուր ծրագրավորման խնդիր: Ընդհանուր առմամբ, հավաքածուն պարունակում է շուրջ 500 միլիոն տող կոդ և ընդգրկում է 55 ծրագրավորման լեզուներ, այնպես էլ ժամանակակից լեզուներ, ինչպիսիք են C++, Java, Python և Go, և ժառանգական լեզուներ, ներառյալ COBOL, Pascal և FORTRAN: Ծրագրի մշակումները բաշխվում են Apache 2.0 լիցենզիայի ներքո, իսկ տվյալների հավաքածուները նախատեսվում է բաշխել հանրային տիրույթի տեսքով:

Օրինակները ծանոթագրված են և իրականացնում են նույնական ալգորիթմներ տարբեր ծրագրավորման լեզուներով: Ակնկալվում է, որ առաջարկվող հավաքածուն կօգնի ուսուցանել մեքենայական ուսուցման համակարգեր և զարգացնել նորարարություններ թարգմանության և մեքենայական կոդի վերլուծության ոլորտում, ինչպես ImageNet-ի ծանոթագրված պատկերների տվյալների բազան օգնեց օրինաչափությունների ճանաչման և համակարգչային տեսողության համակարգերի զարգացմանը: Ծրագրավորման տարբեր մրցույթները նշվում են որպես հավաքածուի ձևավորման հիմնական աղբյուրներից մեկը։

Ի տարբերություն ավանդական թարգմանիչների, որոնք իրականացվում են թարգմանության կանոնների հիման վրա, մեքենայական ուսուցման համակարգերը կարող են գրավել և հաշվի առնել կոդերի օգտագործման համատեքստը: Ծրագրավորման մի լեզվից մյուսին փոխակերպելիս համատեքստը նույնքան կարևոր է, որքան մեկ մարդու լեզվից մյուսը թարգմանելիս: Համատեքստի նկատառման այս բացակայությունն այն է, ինչը խանգարում է կոդը փոխակերպվել ժառանգական լեզուներից, ինչպիսին է COBOL-ը:

Տարբեր լեզուներով ալգորիթմների ներդրման մեծ տվյալների բազա ունենալը կօգնի ստեղծել ունիվերսալ մեքենայական ուսուցման համակարգեր, որոնք կոնկրետ լեզուների միջև ուղղակի թարգմանության փոխարեն շահարկում են կոդի ավելի վերացական ներկայացումը՝ անկախ ծրագրավորման հատուկ լեզուներից: Նման համակարգը կարող է օգտագործվել որպես թարգմանիչ՝ փոխանցված ծածկագիրը աջակցվող լեզուներից որևէ մեկով թարգմանելով իր ներքին վերացական ներկայացման մեջ, որից հետո կոդը կարող է ստեղծվել մի քանի լեզուներով:

Համակարգը կկարողանա կատարել նաև երկկողմանի փոխակերպումներ: Օրինակ, բանկերը և պետական ​​կառույցները շարունակում են օգտագործել նախագծերը հնացած COBOL լեզվով: Մեքենայական ուսուցման վրա հիմնված թարգմանիչը կկարողանա COBOL կոդը վերածել Java-ի ներկայացման և, անհրաժեշտության դեպքում, Java-ի հատվածը հետ թարգմանել COBOL կոդի:

Լեզուների միջև թարգմանությունից բացի, նշվում են CodeNet-ի կիրառման այնպիսի ոլորտներ, ինչպիսիք են խելացի կոդի որոնման համակարգերի ստեղծումը և կլոնների հայտնաբերման ավտոմատացումը, ինչպես նաև օպտիմիզատորների և կոդերի ավտոմատ ուղղման համակարգերի մշակումը։ Մասնավորապես, CodeNet-ում ներկայացված օրինակները հագեցած են մետատվյալներով, որոնք նկարագրում են կատարողականի փորձարկման արդյունքները, արդյունքում ստացված ծրագրի չափը, հիշողության սպառումը և վիճակը, ինչը թույլ է տալիս տարբերակել ճիշտ կոդը սխալներով (ճիշտ կոդը սխալ կոդից տարբերելու համար. Հավաքածուն մասնավորապես ներառում է սխալներով օրինակներ, որոնց տեսակարար կշիռը կազմում է 29.5%)։ Մեքենայի ուսուցման համակարգը կարող է հաշվի առնել այս մետատվյալները՝ ստեղծելու ամենաօպտիմալ ծածկագիրը կամ վերլուծված կոդի հետընթացները հայտնաբերելու համար (համակարգը կարող է հասկանալ, որ ներկայացված կոդի ալգորիթմը օպտիմալ կերպով չի իրականացվել կամ պարունակում է սխալներ):

Source: opennet.ru

Добавить комментарий