Интелигентни алгоритми и изкуствен интелект. Изкуствен интелект

Първо, какво е изкуствен интелект? AI се отнася до набор от алгоритми и посока на изследване за автоматизиране на задачи, решавани от човешкия мозък, както и симулиране на дейности човешки мозъкза подобряване на решаването на компютърни проблеми. Например:

  • Разпознаване на образи, анализ на визуална информация.
  • Разпознаване на звукова информация.
  • Разсъждение, вземане на решения.
  • Креативност, интуиция.

Основната идея е, че мозъкът решава много проблеми по-добре от компютъра, така че има смисъл да използваме същия подход в програмирането, който нашият мозък използва за решаване на проблеми. Благодарение на този подход, например, компютърът беше „научен“ да играе шах и дори да победи известни гросмайстори, въпреки че първоначално тази задача беше труден проблем: броят на комбинациите в една шахматна игра е толкова голям, че компютърът не може да пребройте ги за цялото съществуване на Вселената. Проблемът беше решен с изобретяването на евристични алгоритми. Същността на евристиката е, че ние не изчисляваме всички опции; ние по някакъв начин избираме кои опции да анализираме.

Сега за някои типични области на AI.

  • Овладейте основните принципи за използване на изкуствения интелект в компютърни игри.
  • Помислете за алгоритми за изкуствен интелект, приложими в игрите
  • Създайте компютърна игра, използвайки принципите на изкуствения интелект

Преглед на подходите за разработване на AI система

Тема за изкуствения интелект ( изкуствен интелект, AI, AI) вълнува умовете на много начинаещи програмисти, разработчици и любители на компютърни игри. AI изглежда на мнозина нещо изненадващо сложно, интересно и мистериозно. Всъщност AI технологиите принуждават героите в играта да действат интелигентно. Въпреки това, няма нищо мистериозно в AI. През десетилетията на развитие на тази област на знанието са разработени огромен брой алгоритми, които са приложими в голямо разнообразие от области на дейност. А компютърните игри са само сравнително малко поле за технологиите с изкуствен интелект.

Много е трудно да се намери компютърна игра, която да няма AI. Класически пример за „умни“ игри са програмите за игра на пулове, шах и други настолни игри. Всяка игра, в която компютърът играе срещу потребителя, е оборудвана с AI.

Игралният AI, в първо приближение, може да бъде разделен на два типа. Първият - и най-очевиден - е интелигентността на отделните герои в играта. Например, всеки танк в популярната някога конзолна игра Battle City се опитва да стигне до базата на играча и да я унищожи и да унищожи танка му. Танковете в играта действат некоординирано, не са особено умни, но е интересно да се играе - целият въпрос е, че този тип AI е доста подходящ за тази игра. Това не прави играта скучна.

Второто ниво на AI е груповата интелигентност. Например, спомнете си StarCraft. Играчът е принуден да се бие срещу компютърно контролирана армия. Оказва се, че компютърът управлява голям брой единици (от английски Unit - единица). Но е лесно да се види, че всяко същество, контролирано от група AI в StarCraft, има свой собствен „ум“. Например груповият AI може да изпрати определена група от единици да патрулират в района, но ако срещнат враг по пътя, техният собствен AI ще бъде отговорен за техните действия.

Ако действията на армията в StarCraft не бяха контролирани по никакъв начин и AI присъстваше само на ниво отделна единица, играта щеше да се превърне в скучно търсене и унищожаване на врагове. А StarCraft, въпреки сериозната си възраст (около 10 години), си остава една вълнуваща игра. Дори в кампания за един играч, StarCraft е способен много да „влачи“ играча, да не говорим за онлайн битки.

Между другото, лесно е да забележите, че в същия StarCraft единиците, контролирани от потребителя, също имат индивидуален AI. Например, същата команда "патрул", дадена от потребителя, ще накара създанието на StarCraft да върви послушно по зададения път. Но ако по пътя се появи препятствие (например играчът построи там сграда, блокираща пътя) - единицата сама ще реши какво да прави. По същия начин той ще реши самостоятелно да атакува, ако враговете се появят в полето му на зрение.

AI системите, използвани в компютърните игри, могат да бъдат разделени на два основни типа. Първо, това са така наречените детерминирани системи. Те се отличават с предсказуемостта на действията на героя. И второ, това са недетерминирани системи - герой, управляван от такъв AI, може да действа непредсказуемо и да взема неочаквани решения.

Както вече казахме, ИИ на отделните единици играе подчинена роля в сравнение с груповия ИИ. Може ли AI на отделна единица да повлияе на играта като цяло? Може - в случай, че успехите на отделна единица се разпределят на всички подобни. Например, някаква единица се изправи срещу силен враг и като по чудо излезе победител в битката. Тази единица е натрупала опит, който благодарение на груповия AI може да бъде прехвърлен на други единици. Тези. ако една единица е научила нещо, други, благодарение на груповия AI, ще могат да приемат нови умения от нея. По този начин индивидуалният и груповият ИИ са взаимосвързани и в някои случаи взаимозависими.

Характер, оборудван с недетерминиран AI, се характеризира с непредсказуемост на поведението и по-голяма „жизненост“. Играта срещу такива герои обикновено е много по-интересна, отколкото срещу строго определени. Популярни в напоследъкНачин за прилагане на недетерминиран AI е технологията на невронната мрежа. Тя ви позволява да създавате герои с много трудно поведение. Освен това невронните мрежи имат способността да се обучават. Това означава, че героите на играта не само се държат интелигентно, но и се учат от грешките си.

На практика се използват както детерминистични, така и недетерминирани видове ИИ. Обикновено те действат заедно. Например, за извършване на някои прости недвусмислени действия (да речем, навиване при приближаване до стена), могат да се използват прости и бързи детерминирани алгоритми. В по-сложни случаи (например дали да закупите акции на компания X, като вземете предвид огромен брой параметри, дали да атакувате врага, като вземете предвид неговите възможности, нечии възможности, наличието на подкрепления и т.н.), повече използват се сложни недетерминирани алгоритми. Частично детерминистичните (например, когато се приближава до стена, герой има 50% шанс да завие наляво, 30% шанс да завие надясно и 20% шанс да се обърне и да се върне назад) също се използват широко в игрите.

Изпълнение на алгоритъма за преследване

Нека реализираме игра, използвайки алгоритъм за преследване. Същността на този алгоритъм е следната. Преследващият обект сравнява координатите си в света на играта с координатите на обекта жертва и настройва координатите си по такъв начин, че да се доближи до жертвата. В най-простия случай преследването се провежда в открито пространство.

Нека създадем нов проект за игра P8_1 въз основа на проект P5_1. Ще използваме два обекта - преследвачът и жертвата. Преследвачът ще се движи към жертвата със скорост 1 по-малка от скоростта на жертвата. Ако предметите се сблъскат, жертвата ще бъде унищожена.

На фиг. 12.1. показан прозорец Изследовател на решенияпроект за игра P8_1.


Ориз. 12.1.

Използваме базов клас, наречен gBaseClass, клас за обекта преследвач (Enemy), клас за обекта жертва (Me) и клас за обекта стена. Ще ни е необходим класът на стената, за да проучим поведението на обект, който изпълнява алгоритъма за преследване, когато се сблъска с непреодолимо препятствие по пътя към жертвата. Променихме значително кода на класа от оригиналния проект P5_1, така че по-долу ще намерите пълния код за класовете на играта. В листинг 12.1. можете да намерите кода за клас Game1.

Използване на системата; използване на System.Collections.Generic; използване на Microsoft.Xna.Framework; използване на Microsoft.Xna.Framework.Audio; използване на Microsoft.Xna.Framework.Content; използване на Microsoft.Xna.Framework.GamerServices; използване на Microsoft.Xna.Framework.Graphics; използване на Microsoft.Xna.Framework.Input; използване на Microsoft.Xna.Framework.Net; използване на Microsoft.Xna.Framework.Storage; пространство от имена P8_1 ( ///

/// Това е основният тип за вашата игра ///публичен клас Game1: Microsoft.Xna.Framework.Game ( GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D txtBackground; Texture2D txtEnemy; Texture2D txtMe; Texture2D txtWall; //Масив за конструиране на нивото public int[,] Layer; Rectangle recBackround = new Rectangle( 0, 0, 640, 512); Rectangle recSprite = new Rectangle(0, 0, 64, 64); public Game1() ( graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; ) protected override void Initialize ( ) ( // TODO: Добавете вашата логика за инициализация тук Layer = new int ( ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ( 0, 0, 0, 0, 1, 0, 0, 0, 0, 0), (0, 0, 0, 0, 1, 0, 0, 0, 0, 0), (0, 0, 0, 0, 1, 6, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0), (0, 0, 0, 0, 0, 0, 0, 0, 0, 0), ( 0 , 0, 0, 0, 0, 0, 0, 0, 5, 0 ), ( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), ); //Задайте разделителната способност на прозореца на играта //640x512 graphics.PreferredBackBufferWidth = 640; graphics.PreferredBackBufferHeight = 512; graphics.ApplyChanges(); base.Initialize(); ) protected override void LoadContent() ( // Създаване на нов SpriteBatch, който може да се използва за рисуване на текстури. spriteBatch = new SpriteBatch(GraphicsDevice); Services.AddService(typeof(SpriteBatch), spriteBatch); txtBackground = Content.Load ("заден план"); txtEnemy = Съдържание.Зареждане ("враг"); txtMe = Съдържание.Зареждане ("аз"); txtWall = Content.Load ("стена"); //Извикване на процедурата за подреждане на обекти в прозореца на играта AddSprites(); // TODO: използвайте this.Content, за да заредите съдържанието на вашата игра тук ) //Процедура за подреждане на обекти в прозореца на играта void AddSprites() ( //Променливи за временно съхраняване на адреса //на обекта на играча int a = 0, b = 0; // Прегледайте слоя на масива за (int i = 0; i< 8; i++) { for (int j = 0; j < 10; j++) { //Если элемент с индексом (i,j) равен 1 - //устанавливаем в соответствующую позицию элемент с //номером 1, то есть - стену if (Layer == 1) Components.Add(new GameObj.Wall(this, ref txtWall, new Vector2(j, i), recSprite)); if (Layer == 5) Components.Add(new GameObj.Enemy(this, ref txtEnemy, new Vector2(j, i), new Rectangle(0, 0, 32, 32))); //Если обнаружен объект игрока - запишем его координаты if (Layer == 6) { a = i; b = j; } } } //Последним установим объект игрока - так он гарантированно //расположен поверх всех остальных объектов Components.Add(new GameObj.Me(this, ref txtMe, new Vector2(b, a), new Rectangle(0, 0, 32, 32))); } protected override void UnloadContent() { } protected override void Update(GameTime gameTime) { base.Update(gameTime); } protected override void Draw(GameTime gameTime) { spriteBatch.Begin(); //выведем фоновое изображение spriteBatch.Draw(txtBackground, recBackround, Color.White); //Выведем игровые объекты base.Draw(gameTime); spriteBatch.End(); } } } Списък 12.1. Код на клас Game1

В тази статия ще споделя опита си от отглеждането на най-простия изкуствен интелект (AI) с помощта на генетичен алгоритъм и също така ще говоря за минималния набор от команди, необходими за генериране на всяко поведение.

Резултатът от работата беше, че AI, без да знае правилата, самостоятелно усвои играта tic-tac-toe и откри слабостите на ботовете, които играха срещу него. Но започнах с още по-проста задача.

Набор от команди

Всичко започна с подготовката на набор от команди, които AI би могъл да има. Езици високо нивосъдържат стотици различни оператори. За да подчертая необходимия минимум, реших да се обърна към асемблерния език. Оказа се обаче, че съдържа и много команди.

Имах нужда от AI, за да мога да чета и извеждам данни, да работя с памет, да извършвам изчисления и логически операции, да правя преходи и цикли. Попаднах на езика Brainfuck, който съдържа само 8 команди и може да извършва всякакви изчисления (т.е. той е Turing complete). По принцип е подходящ за генетично програмиране, но аз отидох по-далеч.

Чудех се: какъв е минималният брой команди, необходими за прилагане на всеки алгоритъм? Както се оказа, беше само един!

URISC процесорът съдържа само една инструкция: изваждане и пропускане на следващата инструкция, ако субтрахендът е по-голям от умаленото. Това е достатъчно за изграждане на всеки алгоритъм.

Олег Мазонка отиде още по-далеч; той разработи командата BitBitJump и доказа, че тя е завършена по Тюринг. Инструкцията съдържа три адреса, копира един бит от първия на втория адрес на паметта и прехвърля управлението на третия адрес.

Заимствайки идеите на Олег, за да опростя работата, разработих командата SumIfJump. Командата съдържа четири операнда: A, B, C, D и прави следното: към клетката на адрес B добавя данни от клетката на адрес A, ако стойността е по-голяма от зададената стойност*, тогава отива на адрес C, в противен случай отива на адрес D.

Забележка

*В този случай е използвано 128 - половината от дължината на генома.


Когато операнд А осъществи достъп до място в паметта N0, възниква въвеждане на данни, а когато операнд А осъществи достъп до място в паметта N1, възниква изход.

По-долу е кодът SumIfJump във FreePascal (безплатен аналог на Delphi).

Процедура RunProg(s: TData); var a, b, c, d: TData; начало Inc(NStep); ако NStep > MaxStep тогава започнете ProgResult:= "MaxStep"; Изход; край; a:= s; b:= s + 1; c:= s + 2; d:= s + 3; a:= Прог[a]; b:= Прог[b]; c:= Прог[c]; d:=Prog[d]; ако a = 0 тогава започнете ProgResult:= "Вход"; Изход; край; ако a = 1 тогава започнете ProgResult:= "Изход"; Изход; край; Прог[b] := Прог[b] + Прог[a]; ако Prog[b]< ProgLength div 2 then RunProg(c) else RunProg(d); end;
SumIfJump прилага самопроменящ се код. Може да изпълнява всякакви алгоритми, налични в конвенционален език за програмиране. Кодът се променя лесно и издържа на всякакви манипулации.

Проста задача

И така, нашият AI има само една команда. Засега тик-так е много трудна игра за него, затова започнах с по-проста.

Ботът произвежда произволно число и AI трябва да прочете данните и да даде отговор. Ако числото е по-голямо от средното (от диапазона от произволни числа), AI трябва да произведе число, по-малко от средното и обратно.

Геномът на нашия AI се състои от 256 клетки със стойности от 0 до 255. Всяка стойност е памет, код и адрес. Броят на стъпките за изпълнение на кода е ограничен до 256. Операндите се четат един след друг.

Първоначално геномът се генерира от набор от произволни числа, така че AI не знае какво трябва да играе. Освен това той не знае, че трябва да въвежда и извежда данни последователно, когато отговаря на бота.

Популация и селекция

Първата популация се състои от 256 AI, които започват да играят с бота. Ако AI изпълни правилните действия, например поиска данни за въвеждане и след това изведе нещо, тогава AI получава точки. Колкото повече правилни действия, толкова повече точки.

Всеки от 16-те AI, които набират най-много точки, произвежда по 15 потомци и продължава да участва в играта. Потомъкът е мутант. Мутацията възниква чрез замяна на една произволна клетка в копие на родителя с произволна стойност.

Ако никой AI не събере точки в първата популация, се формира следващата популация. И така нататък, докато един от ИИ започне да извършва правилните действия и да създаде „правилното“ потомство.

Еволюция


Между значимите събития се случиха хиляди смени на поколенията. Програмата беше стартирана в множество нишки на Core i7. Изчисленията отнеха около 15 минути.

  1. Когато „лидерът“ на AI направи случайна грешка и не отбеляза достатъчно точки, населението започна да деградира, т.к. потомството се формира от „вторични“ родители.
  2. Случи се, че в поток с аутсайдери, които отбелязваха време, настъпи успешна мутация, осигуряваща експлозивно увеличение на спечелените точки. След което този поток стана водещ.
  3. Понякога не са настъпили успешни мутации за дълго време и дори 500 хиляди поколения не са достатъчни, за да завърши селекцията.

Заключение

Накрая направих същото и с играта тик-так. Използваният размер на генома беше същият като в първия случай. Броят на стъпките е увеличен до 1024, а размерът на населението до 64 (за по-бързо изчисление). Изчислението отне малко повече време. Всичко се случи по приблизително същия сценарий.

Първоначално изкуственият интелект играе срещу „рандомизатор“. Така нарекох бота, който ходи на случаен принцип. Много бързо AI започна да го бие, попълвайки някакъв ред. След това усложних задачата, като добавих малко интелигентност към рандомайзера: заемете линията, ако е възможно, или защитавайте. В този случай обаче AI откри слабостите на бота и започна да го побеждава. Може би една история за това е тема за отделна статия.

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

Единственият метод, който използвах за получаване на нови индивиди, е мутацията. Можете също да използвате кросоувър и инверсия. Може би тези методи ще ускорят получаването на необходимия резултат.

В крайна сметка се роди идея: да се даде възможност на AI да управлява всички процеси на компютър и да се конкурира за компютърни ресурси. Свържете компютъра си с интернет и използвайте набор от стари биткойн ферми като изчислителна мощност...

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

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

„Искам да правя AI. Какво си струва да изучавате? Какви езици трябва да използвам? В какви организации да уча и работя?

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

Зависи от основното ви обучение. На първо място, имате нужда от математическа култура (познания по статистика, теория на вероятностите, дискретна математика, линейна алгебра, анализ и т.н.) и желание да учите много бързо. При прилагането на AI методи ще е необходимо програмиране (алгоритми, структури от данни, ООП и т.н.).

Различните проекти изискват познаване на различни езици за програмиране. Бих препоръчал да знаете поне Python, Java и всеки функционален език. Опитът с различни бази данни и разпределени системи ще бъде полезен. Необходими са познания по английски език, за да научите бързо най-добрите практики в индустрията.

Препоръчвам да уча в добро руски университети! Например MIPT, MSU и HSE имат съответните отдели. Предлага се голямо разнообразие от тематични курсове на Coursera, edX, Udacity, Udemy и други MOOC платформи. Някои водещи организации имат свои собствени програми за обучение в областта на AI (например Школата за анализ на данни в Yandex).

Приложни проблеми, решени с AI методи, могат да бъдат намерени на голямо разнообразие от места. Банки, финансов сектор, консултации, търговия на дребно, електронна търговия, търсачки, пощенските услуги, игралната индустрия, индустрията на системите за сигурност и, разбира се, Avito - всички се нуждаят от специалисти с различни квалификации.

Повишаване Понижаване

Имаме финтех проект, свързан с машинно обучение и компютърно зрение, в който първият му разработчик написа всичко на C++, след това дойде разработчик и пренаписа всичко на Python. Така че езикът не е най-важното тук, тъй като езикът е преди всичко инструмент и от вас зависи как да го използвате. Просто на някои езици проблемите се решават по-бързо, а на други по-бавно.

Трудно е да се каже къде да уча - всички наши момчета са учили сами, за щастие има интернет и Google.

Повишаване Понижаване

Мога да ви посъветвам да се подготвите от самото начало за това, че ще трябва да учите много. Независимо какво се има предвид под „правене на AI“ – работа с големи данни или невронни мрежи; развитие на технология или поддръжка и обучение на определена вече разработена система.

Нека вземем актуалната професия Data Scientist в името на спецификата. Какво прави този човек? Като цяло той събира, анализира и подготвя големи данни за използване. Това са тези, върху които AI расте и се обучава. Какво трябва да знае и може един Data Scientist? Статичният анализ и математическото моделиране са по подразбиране и на нивото на плавност. Езици - да речем, R, SAS, Python. Също така би било хубаво да имате известен опит в разработката. Е, най-общо казано, добрият специалист по данни трябва да се чувства уверен в базите данни, алгоритмите и визуализацията на данни.

Не може да се каже, че такъв набор от знания може да се получи във всеки втори технически университет в страната. Големи компанииза които развитието на AI е приоритет, разбират това и разработват подходящи програми за обучение за себе си - има например Училището за анализ на данни от Yandex. Но трябва да сте наясно, че това не е мащабът, в който идвате на курсове „от улицата“, а ги напускате като готов младши. Слоят е голям и има смисъл да се изучава дисциплина, когато основите (математика, статистика) вече са покрити, поне в рамките на университетската програма.

Да, ще отнеме доста време. Но играта си заслужава свещта, защото един добър Data Scientist е много обещаващ. И много скъпо. Има и още един момент. Изкуственият интелект, от една страна, вече не е просто обект на шум, а технология, която напълно е достигнала етапа на производителност. От друга страна, AI все още се развива. Това развитие изисква много ресурси, много умения и много пари. Засега това е нивото на висшата лига. Сега ще кажа очевидното, но ако искате да сте в челните редици на атаката и да управлявате напредъка със собствените си ръце, насочете се към компании като Facebook или Amazon.

В същото време технологията вече се използва в редица области: в банкирането, телекомите, гигантските индустриални предприятия и търговията на дребно. И вече имат нужда от хора, които могат да го поддържат. Gartner прогнозира, че до 2020 г. 20% от всички фирми в развити странище наема специални служителиза обучение на невронните мрежи, използвани в тези компании. Така че има още малко време да се научите сами.

Повишаване Понижаване

ИИ сега се развива активно и е трудно да се предвиди десет години предварително. През следващите две до три години ще доминират подходи, базирани на невронни мрежи и GPU изчисления. Лидер в тази област е Python с интерактивната среда Jupyter и библиотеките numpy, scipy и tensorflow.

Има много онлайн курсове, които предоставят основно разбиране на тези технологии и основни принципи AI, например курсът на Андрю Нг. И по отношение на преподаването на тази тема Русия сега е най-ефективна самообразованиеили в местна група по интереси (например в Москва знам за съществуването на поне няколко групи, където хората споделят опит и знания).

Повишаване Понижаване

Повишаване Понижаване

Днес най-бързо прогресиращата част от изкуствения интелект са може би невронните мрежи.
Изучаването на невронни мрежи и AI трябва да започне с овладяване на два клона на математиката - линейна алгебра и теория на вероятностите. Това е задължителен минимум, непоклатимите стълбове на изкуствения интелект. Кандидатите, които искат да разберат основите на AI, при избора на университет, според мен, трябва да обърнат внимание на факултетите със силно математическо училище.

Следващата стъпка е да се проучат проблемите на проблема. Има огромно количество литература, както учебна, така и специализирана. Повечето публикации по темата за изкуствения интелект и невронните мрежи са написани на английски език, но се публикуват и материали на руски език. Полезна литература може да се намери например в публичната дигитална библиотека arxiv.org.

Ако говорим за области на дейност, тук можем да подчертаем обучението на приложни невронни мрежи и разработването на напълно нови версии на невронни мрежи. Ярък пример: сега има такава много популярна специалност - „учен по данни“ (Data Scientist). Това са разработчици, които по правило изучават и подготвят определени набори от данни за обучение на невронни мрежи в специфични области на приложение. В заключение бих искал да подчертая, че всяка специализация изисква отделен път на подготовка.

Повишаване Понижаване

Преди да започнете специализирани курсове, трябва да изучавате линейна алгебра и статистика. Бих препоръчал да започнете вашето потапяне в AI с учебника „Машинно обучение. Науката и изкуството за изграждане на алгоритми, които извличат знания от данни“ е добър учебник за начинаещи. В Coursera си струва да слушате уводните лекции на К. Воронцов (подчертавам, че те изискват добро познаване на линейната алгебра) и курса „Машинно обучение“ в Станфордския университет, преподаван от Андрю Нг, професор и ръководител на Baidu AI Група/Google мозък.

По-голямата част е написана на Python, следвана от R и Lua.

Ако говорим за образователни институции, по-добре е да се запишете на курсове в катедрите по приложна математика и компютърни науки, има подходящи образователни програми. За да тествате способностите си, можете да участвате в състезания на Kaggle, където големи световни марки предлагат своите калъфи.

Повишаване Понижаване

Във всеки бизнес, преди да започнете проекти, би било добре да получите теоретична основа. Има много места, където можете да спечелите официална магистърска степен в тази област или да подобрите квалификацията си. Например Skoltech предлага магистърски програми в областите „Компютърни науки и инженерство“ и „Наука за данни“, което включва курсове по „Машинно обучение“ и „Обработка на естествен език“. Можете също така да споменете Института по интелигентни кибернетични системи на Националния изследователски ядрен университет MEPhI, Факултета по изчислителна математика и кибернетика на Московския държавен университет и катедрата по интелигентни системи на MIPT.

Ако вече имате официално образование, има редица курсове, достъпни на различни MOOC платформи. Например EDx.org предлага курсове за изкуствен интелект от Microsoft и Колумбийския университет, последният от които предлага микромагистърска програма на разумна цена. Бих искал специално да отбележа, че обикновено можете да получите самите знания безплатно; плащате само за сертификата, ако е необходим за вашата автобиография.

Ако искате да се „потопите“ дълбоко в темата, редица компании в Москва предлагат едноседмични интензивни курсове с практически занятия и дори предлагат оборудване за експерименти (например newprolab.com), но цената на такива курсове започва от няколко десетки хиляди рубли.

Сред компаниите, които разработват изкуствен интелект, вероятно познавате Yandex и Sberbank, но има много други с различни размери. Например, тази седмица Министерството на отбраната откри военния иновационен технополис ERA в Анапа, една от темите на който е разработването на AI за военни нужди.

Повишаване Понижаване

Преди да изучаваме изкуствения интелект, трябва да решим един фундаментален въпрос: дали да вземем червеното хапче или синьото.
Червеното хапче е да станете разработчик и да се потопите в жестокия свят на статистически методи, алгоритми и постоянно разбиране на неизвестното. От друга страна, не е нужно веднага да се втурвате в „заешката дупка“: можете да станете мениджър и да създадете AI, например като ръководител на проекти. Това са два коренно различни пътя.

Първият е страхотен, ако вече сте решили, че ще пишете алгоритми с изкуствен интелект. Тогава трябва да започнете с най-популярната посока днес - машинното обучение. За да направите това, трябва да познавате класическите статистически методи за класификация, групиране и регресия. Също така ще бъде полезно да се запознаете с основните мерки за оценка на качеството на разтвора, техните свойства... и всичко, което ви попадне.

Едва след усвояване на базата си струва да се изучават по-специализирани методи: дървета на решенията и ансамбли от тях. На този етап трябва да се потопите дълбоко в основните методи за изграждане и обучение на модели - те са скрити зад едва приличните думи просене, подсилване, подреждане или смесване.

Също така си струва да научите за методите за контролиране на преквалификацията на модела (друго „инг“ - пренастройване).

И накрая, много джедайско ниво - получаване на високоспециализирани знания. Например, дълбокото обучение ще изисква овладяване на основни градиентни архитектури и алгоритми. Ако се интересувате от проблеми с обработката на естествен език, препоръчвам да изучавате повтарящи се невронни мрежи. И бъдещите създатели на алгоритми за обработка на снимки и видео трябва да погледнат добре конволюционните невронни мрежи.

Последните две споменати структури са градивните елементи на популярните днес архитектури: състезателни мрежи (GAN), релационни мрежи и мрежести мрежи. Следователно ще бъде полезно да ги изучавате, дори ако не планирате да научите компютъра да вижда или чува.

Напълно различен подход към изучаването на AI - известен още като "синьото хапче" - започва с намирането на себе си. Изкуственият интелект ражда куп задачи и цели професии: от мениджъри на AI проекти до инженери по данни, способни да подготвят данни, да ги почистват и да изграждат мащабируеми, натоварени и устойчиви на грешки системи.

Така че, с „мениджърски“ подход, първо трябва да оцените вашите способности и опит и едва след това да изберете къде и какво да учите. Например, дори без математически ум, можете да проектирате AI интерфейси и визуализации за интелигентни алгоритми. Но се пригответе: след 5 години изкуственият интелект ще започне да ви троли и да ви нарича „хуманист“.

Основните ML методи са реализирани под формата на готови библиотеки, достъпни за връзка различни езици. Най-популярните езици в ML днес са: C++, Python и R.

Има много курсове както на руски, така и на английски езици, като курсовете Yandex School of Data Analysis, SkillFactory и OTUS. Но преди да инвестирате време и пари в специализирано обучение, мисля, че си струва да „вникнете в темата“: гледайте отворени лекции в YouTube от конференции на DataFest през последните години, вземете безплатни курсове от Coursera и Habrahabr.

моб_инфо