Angela R. Borisova CONTEMPORARY LANGUAGES FOR...

7
Proceedings of International Scientific Conference ―Defense Technologies‖, Faculty of Artillery, Air Defense and Communication and Information Systems ISSN 2367-7902 372 Angela R. Borisova, CONTEMPORARY LANGUAGES FOR PROGRAMMING ARTIFICAL INTELLIGENCE Angela R. Borisova ANGELA.BORISOVA@ABV.BG Abstract: Almost all social networks use Artificial intelligence for enhancing user performance nowadays. By choosing a programming language, providing proper data, and applying a suitable algorithm, a program could be raised up that, like a human, will learn how to respond to specific situations. The most popular programing languages to AI are presented in the paper and some examples are shown. Keywords: Artificial Intelligence, Machine Learning, Deep Learning, Python, R, Java, Lisp, JavaScript. СЪВРЕМЕННИ ЕЗИЦИ ЗА ПРОГРАМИРАНЕ НА ИЗКУСТВЕН ИНТЕЛЕКТ Ангела Р. Борисова ANGELA.BORISOVA@ABV.BG Абстракт: В днешно време почти всички социални мрежи използват изкуствен инте- лект. Избирайки език за програмиране, предоставяйки подходящи данни и прилагайки подходящ алгоритъм, може да се създаде програма, която като човек ще се научи как да отговаря в конк- ретна ситуация. В настоящия доклад са представени някои от най-известните езици за прог- рамиране на изкуствения интелект. 1. Изкуственият интелект и някои от неговите подкатегории – Machine Learning и Deep Learning В нашето съвремие понятието „Изкуствен интелект― придоби изключително важно значение. Изкуствения интелект навлиза все повече в обкръжаващата ни среда, като доказателство за това са автономните превозни средства, алгоритмите в социалните мрежи, бързите отговори при он- лайн запитванията от потребители и много други[10]. Едно от най-актуалните приложения на изкуствения интелект се явява това в изследването на програмни кодове в киберсигурността и вземане на решение, че даден такъв е злонамерен [9]. В изкуствения интелект трите основни тер- мина са: Artificial intelligence (AI), Machine Learning (ML) и Deep Learning (DL). Те често пъти биват взаимозаменяеми, но има съществена ралика между тях. AI традиционно се отнася до из- куствено създаване на човекоподобна интелигентност, която може да учи, разсъждава, планира,

Transcript of Angela R. Borisova CONTEMPORARY LANGUAGES FOR...

Page 1: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 372

Angela R. Borisova,

CONTEMPORARY LANGUAGES FOR PROGRAMMING

ARTIFICAL INTELLIGENCE

Angela R. Borisova

[email protected]

Abstract: Almost all social networks use Artificial intelligence for enhancing user performance

nowadays. By choosing a programming language, providing proper data, and applying a suitable

algorithm, a program could be raised up that, like a human, will learn how to respond to specific

situations. The most popular programing languages to AI are presented in the paper and some examples

are shown.

Keywords: Artificial Intelligence, Machine Learning, Deep Learning, Python, R, Java,

Lisp, JavaScript.

СЪВРЕМЕННИ ЕЗИЦИ ЗА ПРОГРАМИРАНЕ

НА ИЗКУСТВЕН ИНТЕЛЕКТ

Ангела Р. Борисова

[email protected]

Абстракт: В днешно време почти всички социални мрежи използват изкуствен инте-

лект. Избирайки език за програмиране, предоставяйки подходящи данни и прилагайки подходящ

алгоритъм, може да се създаде програма, която като човек ще се научи как да отговаря в конк-

ретна ситуация. В настоящия доклад са представени някои от най-известните езици за прог-

рамиране на изкуствения интелект.

1. Изкуственият интелект и някои от неговите подкатегории – Machine

Learning и Deep Learning

В нашето съвремие понятието „Изкуствен интелект― придоби изключително важно значение.

Изкуствения интелект навлиза все повече в обкръжаващата ни среда, като доказателство за това

са автономните превозни средства, алгоритмите в социалните мрежи, бързите отговори при он-

лайн запитванията от потребители и много други[10]. Едно от най-актуалните приложения на

изкуствения интелект се явява това в изследването на програмни кодове в киберсигурността и

вземане на решение, че даден такъв е злонамерен [9]. В изкуствения интелект трите основни тер-

мина са: Artificial intelligence (AI), Machine Learning (ML) и Deep Learning (DL). Те често пъти

биват взаимозаменяеми, но има съществена ралика между тях. AI традиционно се отнася до из-

куствено създаване на човекоподобна интелигентност, която може да учи, разсъждава, планира,

Page 2: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 373

възприема, навигира и обработва естествен език [1]. Реализирани са огромен брой приложения с

изкуствен интелект в сферите на сервизните роботи, целенасоченото лечение, транспорта, здрав-

ната диагностика, обществената безопасност, образованието и развлеченията, но областите им на

приложение тепърва ще се разрастват все повече през следващите години. Благодарение на AI

технологиите се повишава производителността. Това включва машини, които могат да изпълня-

ват нови задачи, като например усъвършенствани роботи, интелигентни асистенти, самоуправля-

ващи се автомобили, подкрепящи хората в ежедневието им.

Днес компаниите инвестират десетки милиарди долари всяка година, за да развият Machine

Learning, което го прави повсеместно средство за анализ и интерпретация на данни. Някои ком-

пании като Google и Facebook използват алгоритми за машинно обучение, за да показват рекла-

ми, други като Amazon и Apple използват машинно обучение за обработка на говорим език и за

синтезиране на реалистични звукови гласове, трети пък като Tesla го използват за разработване

на превозни средства със самостоятелно управление.

Deep Learning e подмножество на Machine Learning, включващо невронните мрежи като ос-

новна технология за анализ на данни. След като e съставен алгоритъм на базата на Deep Learning,

той може да се използва за решаване на проблеми в реалния свят, като откриване на болести, ав-

то-управление на автомобили, намиране на плевели или вредители в поле или намиране на неиз-

правности в машините.

2. Python

Цялостният език Python може да се нарече и платформа, която може да бъде използвана

както за научноизследователска и развойна дейност, така и за разработване на производствени

системи [2]. Python e един от най-често използваните езици за програмиране, когато става въпрос

за изкуствен интелект. Това е така, заради многото му вградени библиотеки и предварително

вкоренени инструменти за прилагане на Machine Learning алгоритми и модели, които внасят лес-

нота при писането на програми. Някои от по-известните библиотеки на Python, с отворен код са:

―TensorFlow‖, ―KERAS‖, ―PYTORCH‖, ―CAFFE2‖, ―Hebel‖, ―Seeborn‖, ―Chainer‖, ―SymPy‖,

―Theano‖, ―Matplotlib‖, ―Scipy‖, ―Pandas‖, ―MILK‖, ―Bob‖, ―Pybrain‖, ―Pipenv‖, ―NumPy‖, ―Ramp‖,

―NuPIC‖, ―Scikit-learn‖ [6].

Tensorflow е framework, написан на Python, съставен на базата на Deep learning. На фигура

1 е показан програмен фрагмент, служещ за разработване на конволюционни невронни мрежи за

откриване на обекти чрез използване на една от вградените в Python библиотеки, а именно

TensorFlow.

Page 3: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 374

Фигура 1. Разработка на модел с TensorFlow [3]

3. Език ―R‖ Езикът „R― се използва за проучване и за изграждане на Machine learning модели. Той е ста-

тистически, мощен език за програмиране, с отворен код, с помощта, на който се изчисляват и

графично изобразяват различни данни. Паралелно с това, R е и развойна среда за разработване на

проекти. Писането на програми с R е много лесно и интуитивно, защото не се изисква компили-

ране след всяка стъпка, а кода се изпълнява по време на писането. R използва алгоритъм за ма-

шинно обучение, наречен „KNN― ( k-nearest neighbors) [4].

KNN е най-простия алгоритъм за машинно обучение, изграден на базата на сходство между

обектите. Класификацията на обект към съответен клас зависи от принадлежността на най-

близкия до него обект.

На фигура 2 е показан пример за КNN алгоритъм, който цели да събере информация за соци-

ално-икономически профил на дадено физическо лице, относно отпускане на банков кредит и на

базата на събраната информация, да изгради модел за машинно обучение, който предвижда, дали

заемът на кандидата може да бъде одобрен или не.

Фигура 2. Модел на алгоритъм KNN за отпускане на кредит [5]

На фигура 3 е представена същинска част от програмен фрагмент за изграждане на модел на

машинно обучение с помощта на алгоритъм KNN.

Page 4: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 375

Фигура 3. Изграждане на модел с алгоритъм KNN, написан на R [5]

Изборът на броя на най-близките съседи, т.е. определянето на стойността на k, играе същест-

вена роля при определянето на ефикасността на модела. По този начин изборът на k ще определи

доколко добре данните могат да бъдат използвани за обобщаване на резултатите от kNN алгори-

тъма.

4. Java Java e лесен за програмиране, хетерогенен ( способен да прехвърля съдържанието на раз-

лични приложения от едни софтуерни и хардуерни платформи на други) и използващ динамична

памет, обектно-ориентиран език. Някои от по-известните работни програми, написани на Java и

използвани за изследване, разработване и експоатация на Machine Learning, са ―Weka‖, ―MOA‖

(Massive On-line Analysis), ―Encog Machine Learning Framework‖, ―Java-ML‖, ―MLlib(Spark)‖,

―H2O‖, ―Signa‖, ―RapidMiner‖, ―Smile‖. За пример е взета библиотеката, Encog Machine Learning

Framework. Encog е усъвършенстван фреъймлърк за машинно обучение, който поддържа различ-

ни усъвършенствани алгоритми (невронни мрежи и генетични алгоритми) и класове за поддръж-

ка и обработка на данни. Освен от Java, Encog се използва и от C# и от Silverlight. За изграждане

на невронни мрежи се използват три основни библиотеки: DeepLearning4j, Neuroph и Arbiter.

Проста невронна мрежа може да се създаде с помощта на обектите BasicLayer и BasicNetwork. На

фигура 5, елемент 1 и 2 е представена примерна невронна мрежа, написана на Java. В елемент 1 е

показана програмирана част включваща : входен слой с два неврона, скрит слой с три неврона и

изходен слой с един неврон. В елемент 2 се вижда, добавяне на функция на активация към кода.

Фигура 4. Невронна мрежа, написана на Java [6]

Page 5: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 376

Фигура 5. Encog Persistence [6]

На фигура 5 елемент 1 е изобразен програмен фрагмент, включващ библиотекта Enlog

Persistance, чиято цел е да придаде устойчивост на кода. Фигура 5, елемент 2, създаване на нев-

ронна мрежа, включваща метод trainAndSave, обучаваща се с XOR оператор. Фигура 5, елемент

3, следва запазване на невронна мрежа във файл Encog EG. Фигура 5, елемент 4, зареждане и

оценка на вече съществуващата невронна мрежа, с помощта на метода loadAndEvaluate.

Encog използва GPU(Graphics processing unit), благодарение, на което ускорява бързодейст-

вието на системата. Java е лесен за използване инструмент, създаден за проектиране на различни

софтуерни приложения, които да бъдат защитени и сигурни.

5. Lisp Lisp все още се използва като език за програмиране на изкуствен интелект, но неговата попу-

лярност все повече намалява, заради развитието на съвременните езици, разполагащи с множест-

во библиотеки и най-нови техники. Основна конструкция за работа на Lisp е списъкът, самата

програма е списък. На фигура 6 е представен начина, по който се дефинира променлива, в случая

„employee― и нейните характеристики (slots) – name, address, serial-number, department, selary във

фрейм (използва се за представяне на по-обща информация на клас обекти с общи характеристи-

ки). Фигура 7 показва просвояване на стойност на вече декларираната променлива ―employee‖.

Фигура 6. Дефиниране на променлива във фрейм [7]

Page 6: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 377

Фигура 7. Присвояване на стойност на вече дефинираната променлива [7]

6. JavaScript

JavaScript е функционален и обектно-ориентиран език, чиято задача е вмъкване на динамич-

ност в приложенията. JavaScript е много по-лесен за използване в сравнение с някои от другите

езици за програмиране, като например Python. Javascript отваря нови хоризонти за приложенията,

благодарение на многото му вградените инструменти. Някои от по-известните работни програми,

използвани в машиното обучение с JavaScript са:

На първо място отново е TensorFlow (както и при Python), изписван TensorFlow.js. На след-

ващо място ―Brain.js‖, ―stdlib-js‖, ―machinelearn.js‖, ―math.js‖, ―face-api.js‖, ―R-js‖ и ―natural‖.

За пример е изследван ―Brain.js‖. Библиотеката Brain.js улеснява писането на Machine

Learning и Deep Learning, благодарение на множеството му заложени функционалности. В при-

мера на фигура 8 е представена графика на обучение на мрежа, като са комбинирани данни за

обучение и тест в един масив, чрез използване на CrossValidate (валидиране на модела, оценка на

това как резултатите от статистическия анализ ще се обобщят до независим набор от данни).

CrossValidate предоставя начин за обучение на по-големи масиви данни. Вътрешно създава мно-

жество невронни мрежи и след обучението предоставя достъп до мрежата с най-добра точност.

Фигура 8.Обучение на невронна мрежа [8]

7. Заключение

Машините с изкуствен интелект започнаха да заместват човека в много области, като напри-

мер наукта и техниката. Това обаче води със себе си до негативни резултати по отношение на

трудовата заетост в човешките ресурси, като много от кадрите ще станат непотребни и могат да

загубят работа си. Също така, машините все още не са достигнали достатъчна зрялост по начин,

по който да заместят истински човешки мозък. Работата по изграждане на истински изкуствен

интелект продължава в научните среди, като езиците за програмиране следват тази тенденция.

Page 7: Angela R. Borisova CONTEMPORARY LANGUAGES FOR …aadcf.nvu.bg/scientific_events/dtf2019/AngelaRBorisova.pdf · Lisp, JavaScript. СЪВРЕМЕННИ ... лайн запитванията

Proceedings of International Scientific Conference ―Defense Technologies‖,

Faculty of Artillery, Air Defense and Communication and Information Systems

ISSN 2367-7902 378

Създават се нови езици и подходи за алгоритмизация, получаването на знания и оформянето на

машинен интелект. Разгледаните езици за програмиране в изкуствения интелект показват посо-

ките на развитие, като се повишава удобството при използването им чрез добавена функционал-

ност, но с това се увеличава и сложността им.

References

1. Интернет източник: Artificial Intelligence and Machine Learning: Policy Paper,

URL: https://www.internetsociety.org/resources/doc/2017/artificial-intelligence-and-machine-

learningpolicypaper/?gclid=Cj0KCQjwqs3rBRCdARIsADe1pfTA69Nv1TDuU33irZpblBeHZF

C51xpsTJ7R08wyJqnAnuOTnfytL5UaAnjeEALw_wcB

2. Интернет източник: Your First Machine Learning Project in Python Step-By-Step –

URL: https://machinelearningmastery.com/machine-learning-in-python-step-by-step/

3. Интернет източник: TensorFlow Meetup, Riadh Ayachi, URL:

https://www.researchgate.net/publication/334626389_TensorFlow_Meetup/stats

4. Интернет източник: Machine Learning in R for beginners, URL:

https://www.datacamp.com/community/tutorials/machine-learning-in-r

5. Интернет източник: KNN Algorithm: A Practical Implementation Of KNN Algorithm In R,

URL: https://www.edureka.co/blog/knn-algorithm-in-r/

6. Heaton, Jeff, ―Programming Neural Networks with Encog3 in Java‖, Heaton Research Inc.,

2011, ISBN: 978-1-60439-021-6

7. Интернет източник: Machine Learning in Lisp, URL: https://www.cs.unm.edu/~luger/ai-

final2/LISP/CH%2019_Machine%20Learning%20in%20Lisp.pdf

8. Интернет източник: Machine Learning with brain.js and Tensorflow.js, URL:

https://golb.hplar.ch/2019/01/machine-learning-with-brain-and-tensorflow-js.html

9. Nikolov, L., „Network Infrastructure for Cybersecurity Analysis―, Proceedings of International

Scientific Conference ―Defense Technologies‖, Shumen, 2018, ISSN 2367-7902, URL:

http://aadcf.nvu.bg/scientific_events/dft2018

10. Slavyanov, K.O. ―An algorithm of fuzzy inference system for human resources selection tools‖,

Proceedings of the International Scientific Conference ―Society. Integration. Education‖, Vol. V,

2018, ISSN 1691-5887, p. 445-454, http://dx.doi.org/10.17770/sie2018vol1.3311