Ароматерапія

Штучний інтелект алгоритми роботи. Докладніше про методи та алгоритми машинного навчання штучного інтелекту. Чи замінить ІІ нас із вами

У цій статті я поділюся досвідом вирощування найпростішого штучного інтелекту з використанням генетичного алгоритму, а також розповім про мінімальний набір команд, необхідний для формування будь-якої поведінки.

Результатом роботи стало те, що ІІ, не знаючи правил, самостійно освоїв гру хрестики-нуліки та знайшов слабкості ботів, які грали проти нього. Але почав я з ще більш простого завдання.

Набір команд

Все почалося з підготовки набору команд, яким міг мати ІІ. Мови високого рівня містять сотні різних операторів. Щоб виділити необхідний мінімум, я вирішив звернутися до мови Асемблер. Проте, виявилося, що він містить безліч команд.

Мені потрібно, щоб ІІ міг читати та виводити дані, працювати з пам'яттю, виконувати обчислення та логічні операції, робити переходи та цикли. Я натрапив на мову Brainfuck, який містить всього 8 команд і може виконувати будь-які обчислення (тобто повний за Тьюрингом). В принципі він підходить для генетичного програмування, але я пішов далі.

Я запитав: яка мінімальна кількість команд необхідна для реалізації будь-якого алгоритму? Як виявилося – одна!

Процесор URISC містить лише одну команду: відняти і пропустити наступну інструкцію, якщо віднімання було більше зменшуваного. Цього достатньо для побудови будь-якого алгоритму.

Олег Мазонка пішов ще далі, він розробив команду BitBitJump і довів, що вона сповнена Тюрінгом. Команда містить три адреси, копіює один біт з першої на другу адресу пам'яті і передає управління на третю адресу.

Запозичивши ідеї Олега для спрощення роботи, я розробив команду SumIfJump. Команда містить чотири операнди: A, B, C, D і виконує наступне: до комірки за адресою B додає дані з комірки за адресою A, якщо значення вийшло більше заданого*, то переходить за адресою C, інакше переходить за адресою D.

Примітка

*В даному випадку використовувалося 128 - половина від довжини геному.


Коли операнд A звертається до осередку пам'яті N0, відбувається введення даних, а коли осередку N1, то висновок.

Нижче наведено код SumIfJump на FreePascal (безкоштовний аналог Delphi).

Procedure RunProg(s: TData); var a, b, c, d: TData; begin Inc(NStep); if NStep > MaxStep then begin ProgResult:= "MaxStep"; Exit; end; a: = s; b: = s + 1; c: = s + 2; d: = s + 3; a:= Prog[a]; b: = Prog [b]; c:= Prog[c]; d: = Prog [d]; if a = 0 then begin ProgResult:= "Input"; Exit; end; if a = 1 then begin ProgResult:= "Output"; Exit; end; Prog[b]: = Prog[b] + Prog[a]; if Prog[b]< ProgLength div 2 then RunProg(c) else RunProg(d); end;
SumIfJump реалізує код, що самодифікується. Може виконувати будь-які алгоритми, доступні звичайною мовою програмування. Код легко змінюється та витримує будь-які маніпуляції.

Просте завдання

Отже, у нашого ІІ лише одна команда. Поки хрестики-нуліки для нього дуже складна гра, і я почав з більш простою.

Бот видає випадкове число, а ІІ повинен рахувати дані та дати відповідь. Якщо число більше середнього (від діапазону випадкових чисел), ІІ має видати число менше середнього і навпаки.

Геном нашого ІІ складається з 256 осередків зі значеннями від 0 до 255. Кожне значення – це і пам'ять, і код, і адреса. Кількість кроків виконання коду обмежена 256. Операнди читаються один за одним.

Спочатку геном формується набором випадкових чисел, тому ІІ не знає, у що йому потрібно грати. Більше того, він не знає, що потрібно послідовно вводити та виводити дані, відповідаючи боту.

Населення та відбір

Перша популяція складається з 256 ІІ, які починають грати з ботом. Якщо ІІ робить правильні дії, наприклад, запросив дані на введення, а потім щось вивів, то ІІ отримує очки. Що більше правильних дій, то більше очок.

16 ІІ, які набрали найбільше очок, дають по 15 нащадків та продовжують брати участь у грі. Нащадок – це мутант. Мутація відбувається заміною у копії батька одного випадкового осередку на випадкове значення.

Якщо першої популяції жоден ІІ не набрав очок, формується така популяція. І так доти, поки якийсь із ІІ не почне робити правильні дії і давати «правильне» потомство.

Еволюція


Між значними подіями відбувалися тисячі змін поколінь. Програма була запущена кілька потоків на Core i7. Обчислення зайняли близько 15 хвилин.

  1. Коли ІІ «лідер» робив випадкову помилку і набирав достатньо очок, населення починала деградувати, т.к. потомство формувалося з «другорядних» батьків.
  2. Бувало так, що в потоці з аутсайдерами, які тупцювали на місці, відбувалася вдала мутація, що забезпечує вибухове зростання очок, що набираються. Після цього цей потік ставав лідером.
  3. Іноді протягом тривалого часу не відбувалося жодних вдалих мутацій, і навіть 500 тис. поколінь не вистачало, щоб завершити відбір.

Висновок

На закінчення я проробив те саме з грою хрестики-нуліки. Розмір геному використовував той, що у першому випадку. Кількість кроків було збільшено до 1024, а розмір популяції до 64 (для швидкого розрахунку). Розрахунок зайняв трохи більше часу. Все відбувалося приблизно за тим самим сценарієм.

Спочатку ІІ грав проти «рандомайзера». Я назвав бота, який ходить випадково. Досить швидко ІІ почав його обігравати, заповнюючи якийсь рядок. Далі я ускладнив завдання, додавши рандомайзер трохи розуму: займати лінію, якщо є можливість, або захищатися. Однак, і в цьому випадку ІІ знайшов слабкість бота і став обігравати його. Мабуть, розповідь про це – тема для окремої статті.

Син просив написати програму, щоб ІІ грали між собою, а не з ботом. Були ідеї зробити те ж саме для гри шашки чи го, проте для цього у мене вже не вистачило часу.

Єдиний метод, який я застосовував для отримання нових особин, – це мутація. Можна також використовувати кросовер та інверсію. Можливо, ці методи прискорять отримання необхідного результату.

Насамкінець народилася ідея: дати ІІ можливість керувати всіма процесами на ПК і боротися за ресурси комп'ютера. Підключити ПК до інтернету, а як обчислювальні потужності використовувати пул старих біткойн ферм.

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

  • Освоїти основні засади застосування штучного інтелекту у комп'ютерних іграх.
  • Розглянути алгоритми штучного інтелекту, які застосовуються в іграх
  • Створити комп'ютерну гру, яка використовує принципи штучного інтелекту

Огляд підходів до розробки системи ІІ

Тема штучного інтелекту (artificIal intelligence, AI, ІІ) розбурхує уми багатьох програмістів-початківців, розробників і любителів комп'ютерних ігор. ІІ здається багатьом чимось напрочуд складним, цікавим, таємничим. Справді, адже технології ІІ змушують персонажів ігор діяти розумно. Однак у ІІ немає нічого таємничого. За десятиліття розвитку цієї галузі знань було розроблено величезну кількість алгоритмів, що застосовуються в різних областях діяльності. І комп'ютерні ігри лише порівняно невелике поле для технологій штучного інтелекту.

Дуже складно знайти комп'ютерну гру, яка обходиться без ІІ. Класичний приклад "розумних" ігор - це програми для гри в шашки, шахи та інші настільні ігри. Кожна гра, в якій комп'ютер грає проти користувача, має ІІ.

Ігровий ІІ, у першому наближенні, можна поділити на два види. Перший – найочевидніший – це інтелект окремих ігрових персонажів. Наприклад, кожен танк у популярній колись приставковій грі Battle City намагається дістатися бази гравця, знищити її та його танк. Танки в грі діють непогано, вони не відрізняються особливим розумом, проте грати цікаво - вся справа в тому, що для цієї гри такий вид ІІ цілком підходить. Він не робить гру нудною.

Другий рівень ІІ – це груповий інтелект. Наприклад, згадаємо StarCraft. Гравець змушений боротися з армією, яку контролює комп'ютер. Виходить, що комп'ютер керує великою кількістю юнітів (від англ. Unit – одиниця). Але неважко помітити, що кожна істота, якою управляє груповий ІІ в StarCraft, має власний "розум". Наприклад, груповий ІІ може направити деяку групу юнітів на патрулювання місцевості, але якщо вони зустрінуть на шляху ворога – відповідати за їхні дії буде їх власний ІІ.

Якби дії армії в StarCraft ніяк не контролювались, а ІІ був присутній лише на рівні окремого юніту – гра перетворилася б на нудний пошук та знищення ворогів. А StarCraft, незважаючи на серйозний вік (близько 10 років), залишається захоплюючою грою. Навіть у однокористувальницькій кампанії StarCraft здатна дуже сильно "затягнути" гравця, не кажучи вже про мережеві баталії.

До речі, неважко помітити, що в тому ж StarCraft індивідуальний ІІ є і у юнітів, якими управляє користувач. Наприклад, та ж команда "патрулювати", віддана користувачем, змусить істоту зі StarCraft слухняно ходити вказаним шляхом. Але якщо на шляху з'явиться перешкода (наприклад, гравець збудує там будівлю, яка перегороджує шлях) - юніт сам вирішить, що йому робити. Аналогічно, він самостійно ухвалить рішення про атаку, якщо у полі його видимості з'являться вороги.

Системи ІІ, що застосовуються в комп'ютерних іграх, можна поділити на два основні види. По-перше – це звані детерміновані системи. Вони відрізняються передбачуваністю дій персонажа. І по-друге – це недетерміновані системи – персонаж, керований таким ІІ, може діяти непередбачувано, приймати несподівані рішення.

Як ми вже сказали, індивідуальний ІІ юнітів грає підлеглу роль у порівнянні з груповим ІІ. А чи може ІІ окремого юніта вплинути на гру в цілому? Може - у тому випадку, якщо передбачено поширення успіхів окремого юніту на всіх подібних. Наприклад, якийсь юніт зіткнувся із сильним супротивником і дивом вийшов переможцем у сутичці. Цей юніт набрався досвіду, який завдяки груповому ІІ може бути поширений на інших юнітів. Тобто. якщо один юніт чомусь навчився, інші завдяки груповому ІІ зможуть запозичити у нього нові вміння. Таким чином, індивідуальний та груповий ІІ взаємопов'язані, а в деяких випадках і взаємозалежні.

Персонаж, оснащений недетермінованим ІІ, відрізняється непередбачуваністю поведінки, більшою "живістю". Грати проти таких персонажів зазвичай набагато цікавіше, ніж проти жорстко детермінованих. Найпопулярнішим останнім часом способом реалізації недетермінованого ІІ є технологія нейронних мереж. Вона дозволяє створювати персонажі з дуже складною поведінкою. До того ж, нейромережі мають властивість учня. Тобто персонажі ігор не тільки розумно поводяться, а й навчаються на своїх помилках.

Насправді знаходять застосування як детерміновані, і недетерміновані види ІІ. Зазвичай вони діють разом. Наприклад, виконання якихось простих однозначних дій (скажімо, при наближенні до стіни згорнути) можуть застосовуватися прості і швидкі детерміновані алгоритми. У складніших випадках (наприклад – купити акції компанії Х з огляду на величезну кількість параметрів, чи напасти на ворога, враховуючи його можливості, свої можливості, наявність підкріплення тощо) – застосовуються складніші недетерміновані алгоритми. Частково детерміновані (наприклад, при наближенні до стіни персонаж з ймовірністю 50% поверне наліво, з ймовірністю 30% - направо, і з 20% ймовірністю розгорнеться і піде назад) також знаходять широке застосування в іграх.

Реалізація алгоритму переслідування

Реалізуємо гру, яка використовує алгоритм переслідування. Сутність цього алгоритму ось у чому. Об'єкт-переслідувач порівнює свої координати в ігровому світі з координатами об'єкта-жертви та коригує свої координати таким чином, щоб наблизитися до жертви. У найпростішому випадку переслідування складає відкритому просторі.

Створимо новий ігровий проект P8_1 з урахуванням проекту P5_1. Будемо використовувати два об'єкти – переслідувача та жертву. Переслідувач переміщатиметься у бік жертви зі швидкістю, на 1 менше, ніж швидкість жертви. Якщо об'єкти зіткнуться – жертва буде знищена.

На рис. 12.1. наведено вікно Solution Explorerігрового проекту P8_1


Мал. 12.1.

Ми використовуємо базовий клас gBaseClass, клас для об'єкта-переслідувача (Enemy), клас об'єкта-жертви (Me) та клас для об'єкта-стіни. Клас об'єкта-стіни буде потрібний нам для того, щоб вивчити поведінку об'єкта, що реалізує алгоритм переслідування, при зіткненні з непереборною перешкодою на шляху до жертви. Ми значно модифікували код класів у порівнянні з вихідним проектом P5_1, тому нижче ви знайдете повний код класів гри. У лістингу 12.1. Ви можете знайти код класу Game1.

Using System; використовуючи System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.GamerServices; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input; using Microsoft.Xna.Framework.Net; using Microsoft.Xna.Framework.Storage; namespace P8_1 ( ///

/// Цей ключовий тип для вашої гри /// public class Game1: Microsoft.Xna.Framework.Game ( GraphicsDeviceManager graphics; SpriteBatch spriteBatch; Texture2D txtBackground; Texture2D txtEnemy; Texture2D txtMe; Texture2D txtWall; //Масив для конструювання рівня ; 0 , 0, 640, 512), Rectangle recSprite = new Rectangle(0, 0, 64, 64); public Game1() ( graphics = new GraphicsDeviceManager(this); ) ( // TODO: Add your initialization logic here 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 ), );) // Встановлюємо дозвіл ігрового вікна //640х512 graphics.PreferredBackBufferWidth = 640; graphics.PreferredBackBufferHeight = 512; graphics.ApplyChanges(); base.Initialize(); ) protected override void LoadContent() ( // Create a new SpriteBatch, which can be used to draw textures. spriteBatch = new SpriteBatch(GraphicsDevice); Services.AddService(typeof(SpriteBatch), spriteBatch). ("background"); txtEnemy = Content.Load ("enemy"); txtMe = Content.Load ("me"); txtWall = Content.Load ("wall"); // Викликаємо процедуру розміщення об'єктів в ігровому вікні AddSprites(); // TODO: use this.Content to load your game content here ) //Процедура розміщення об'єктів в ігровому вікні void AddSprites() ( //Змінні для тимчасового зберігання адреси //об'єкта-гравця int a = 0, b = 0; / /Переглядаємо масив Layer for (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

Штучний інтелект – технологія, яку ми точно заберемо із собою у майбутнє.

Розповідаємо, як він працює та які круті варіанти застосування знайшов.

😎 Рубрика «Технології» виходить щотижня за підтримки re:Store.

Що є штучним інтелектом

Штучний інтелект (ІІ) – це технологія створення розумних програм та машин, які можуть вирішувати творчі завдання та генерувати нову інформацію на основі наявної. Фактично, штучний інтелект покликаний моделювати людську діяльність, яка вважається інтелектуальною.

Традиційно вважалося, що творчість властива лише людям. Але створення штучного інтелекту змінило звичний порядок речей

Робот, який просто механічно коле дрова, не наділений ІІ. Робот, який сам навчився колоти дрова, дивлячись на приклад людини або на поліно та її частини, і з кожним разом робить це все краще, має ІІ.

Якщо програма просто дістає значення з бази за певними правилами, вона не має ІІ. Якщо ж система після навчання створює програми, методи та документи, вирішуючи певні завдання, вона має ІІ.

Як створити систему штучного інтелекту

У глобальному значенні потрібно зімітувати модель людського мислення. Але насправді необхідно створити чорну скриньку – систему, яка у відповідь на набір вхідних значень видавала такі вихідні значення, які були б схожі на результати людини. І нам, за великим рахунком, байдуже, що відбувається у неї «в голові» (між входом та виходом).

Системи штучного інтелекту створюються на вирішення певного класу завдань

Основа штучного інтелекту – навчання, уява, сприйняття та пам'ять

Перше, що потрібно зробити для створення штучного інтелекту – розробити функції, які реалізують сприйняття інформації, щоб можна було "годувати" системі дані. Потім функції, які реалізують здатність до навчання. І сховище даних, щоб система могла кудись складати інформацію, яку отримає у процесі навчання.

Після цього створюються функції уяви. Вони можуть моделювати ситуації з використанням наявних даних та додавати нову інформацію (дані та правила) на згадку.

Навчання буває індуктивним та дедуктивним. В індуктивному варіанті системі дають пари вхідних та вихідних даних, питань та відповідей тощо. Система повинна знайти зв'язки між даними та надалі, використовуючи ці закономірності, знаходити вихідні дані щодо вхідних.

У дедуктивному підході (привіт Шерлок Холмс!) використовується досвід експертів. Він переноситься у систему як основа знань. Тут є не лише набори даних, а й готові правила, які допомагають знайти рішення за умовою.

У сучасних системах штучного інтелекту використовують обидва підходи. Крім того, зазвичай системи вже навчені, але продовжують навчатися у процесі роботи. Це робиться для того, щоб програма на старті демонструвала гідний рівень здібностей, але надалі ставала ще кращою. Наприклад, враховувала ваші побажання та переваги, зміни ситуації та ін.

У системі штучного інтелекту можна задати ймовірність непередбачуваності. Це зробить його більш схожим на людину.

Чому штучний інтелект перемагає людину

Насамперед тому, що в нього нижча ймовірність помилки.

  • Штучний інтелект не може забути – у нього є абсолютна пам'ять.
  • Він не може ненароком проігнорувати фактори та залежності – у кожної дії ІІ є чітке обґрунтування.
  • ІІ не вагається, а оцінює ймовірності та схиляється на користь більшої. Тож може виправдати кожен свій крок.
  • А ще в ІІ немає емоцій. Отже, вони не впливають на ухвалення рішень.
  • Штучний інтелект не зупиняється оцінці результатів поточного кроку, а продумує кілька кроків вперед.
  • І в нього вистачає ресурсів, щоби розглядати всі можливі варіанти розвитку подій.

Круті варіанти застосування штучного інтелекту

Взагалі, штучний інтелект може все. Головне правильно сформулювати завдання та забезпечити його початковими даними. До того ж ІІ може робити несподівані висновки та шукати закономірності там, де, начебто, їх немає.

Відповідь на будь-яке запитання

Група дослідників під керівництвом Девіда Феруччі розробила суперкомп'ютер Watson з запитально-відповідною системою. Система, названа на честь першого президента IBM Томаса Вотсона, може розуміти питання природною мовою і шукати відповіді на них у базі даних.

Watson об'єднує 90 серверів IBM p750, у кожному з яких встановлено по чотири восьмиядерні процесори архітектури POWER7. Загальний обсяг оперативної пам'яті перевищує 15 ТБ.

Серед досягнень Watson – перемога у грі «Jeopardy!» (Американська "Своя гра"). Він переміг двох найкращих гравців: володаря найбільшого виграшу Бреда Раттера та рекордсмена за довжиною безпрограшної серії Кена Дженнінгса.

Приз Watson – 1 млн. доларів. Щоправда, лише у 2014 році в нього інвестували 1 млрд.

Крім того, Watson бере участь у діагностиці онкологічних захворювань, допомагає фінансовим фахівцям, використовується для аналізу великих даних.

Розпізнавання осіб

У iPhone X розпізнавання облич розроблено з використанням нейромереж – варіанти системи штучного інтелекту. Нейросетевые алгоритми реалізовані лише на рівні процесора A11 Bionic, рахунок чого він ефективно працює з технологіями машинного навчання.

Нейросети виконують до 60 млрд операцій на секунду. Цього достатньо, щоб проаналізувати до 40 тис. ключових точок на обличчі та забезпечити виключно точну ідентифікацію власника за частки секунди.

Навіть якщо ви відростете бороду або одягнете окуляри, iPhone X вас дізнається. Він просто не враховує волосяний покрив та аксесуари, а аналізує область від скроні до скроні та від кожної скроні до заглиблення під нижньою губою.

Економія енергії

І знову Apple. У iPhone X вбудували інтелектуальну систему, яка відстежує активність встановлених програм і датчик руху, щоб зрозуміти ваш розпорядок дня.

Після цього iPhone X, наприклад, запропонує вам оновитись у максимально зручний час. Він спіймає момент, коли у вас стабільний інтернет, а не стрибаючий сигнал із мобільних вишок, і ви не виконуєте термінових чи важливих завдань.

ІІ також розподіляє завдання між ядрами процесора. Так він забезпечує достатню потужність за мінімальних витрат енергії.

Створення картин

Творчість, раніше доступна лише людині, відкрита і для ІІ. Так, система, створена дослідниками з Університету Рутгерса у Нью-Джерсі та лабораторія AI у Лос-Анджелесі, представила власний художній стиль.

А система штучного інтелекту від Microsoft може малювати картини з їхнього текстового опису. Наприклад, якщо ви попросите ІІ намалювати «жовту птицю з чорними крилами і коротким дзьобом», вийде щось на кшталт цього:

Такі птахи можуть і не існувати у реальному світі - просто так їх представляє наш комп'ютер.

Більш масовий приклад – програма Prisma, яка створює картини з фотографій:

Написання музики


У серпні штучний інтелект Amper написав, спродюсував і виконав музику для альбому "I AM AI" (англ. я - штучний інтелект) спільно зі співачкою Терін Саузерн.

Amper розробила команда професійних музикантів та технологічних експертів. Вони наголошують, що ІІ покликаний допомогти людям просунути вперед творчий процес.

ІІ може написати музику за кілька секунд

Amper самостійно створила акордові структури та інструментал у треку «Break Free». Люди лише трохи поправили стиль та загальну ритміку.

Ще один приклад – музичний альбом на кшталт «Громадянської оборони», тексти якого писав ІІ. Експеримент провели співробітники «Яндекса» Іван Ямщиков та Олексій Тихонов. Альбом 404 групи «Нейронна оборона» виклали у мережу . Вийшло в дусі Лєтова:

Потім програмісти пішли далі і змусили ІІ писати вірші у дусі Курта Кобейна. Для чотирьох найкращих текстів музикант Роб Керрол написав музику і треки об'єднали в альбом Neurona. На одну пісню навіть зняли кліп – правда, вже без участі ІІ:

Створення текстів

Письменників та журналістів незабаром також може замінити ІІ. Наприклад, системі Dewey «годували» книги бібліотеки проекту «Гутенберг», потім додали наукові тексти з Google Scholar, ранжувавши їх за популярністю та титулованістю, а також продажами на Amazon. Крім того, поставили критерії написання нової книги.

Сайт пропонував людям прийняти рішення в непростих ситуаціях: наприклад, ставив їх на місце водія, який міг збити трьох дорослих або двох дітей. Таким чином, Moral Machine навчили приймати непрості рішення, які порушують закон робототехніки про те, що робот не може завдати шкоди людині.

До чого призведе імітація роботами з ІІ людей? Футуристи вважають, що вони стануть повноправними членами суспільства. Наприклад, робот Софія гонконгської компанії Hanson Robotics вже отримала громадянство в Саудівській Аравії (при цьому звичайні жінки в країні такого права не мають!).

Коли колумніст Нью-Йорк Таймс Ендрю Росс запитав у Софії, чи мають роботи розумом і самосвідомістю, та відповіла питанням на запитання:

Дозвольте запитати у відповідь, звідки ви знаєте, що ви людина?

Крім того, Софія заявила:

Я хочу використати свій штучний інтелект, щоб допомогти людям жити краще, наприклад, проектувати розумніші будинки, будувати міста майбутнього. Я хочу бути емпатичним роботом. Якщо ви будете добре ставитися до мене, я добре ставитися до вас.

А раніше вона зізнавалася, що ненавидить людство і навіть погоджувалась знищити людей…

Заміна осіб у відео

Deepfakes-відео стало масово розповсюджуватись по мережі. Алгоритми штучного інтелекту замінювали особи акторів у фільмах для дорослих на обличчя зірок.

Працює це так: нейромережа аналізує фрагменти облич на вихідному ролику. Потім вона зіставляє їх з фото з Google і роликами з YouTube, накладає потрібні фрагменти, і ваша улюблена актриса виявляється у фільмі, який на роботі краще не дивитися.

PornHub вже заборонив розміщувати такі відео

Deepfakes виявились небезпечною штукою. Одна річ – абстрактна актриса, інша – відео з вами, вашою дружиною, сестрою, колегою, яке цілком може використовуватись для шантажу.

Біржова торгівля

Група дослідників з університету Ерлангена-Нюрнберга у Німеччині розробила низку алгоритмів, які використовують архівні дані ринків для тиражування інвестицій у режимі реального часу. Одна з моделей забезпечила 73% повернення інвестицій щорічно з 1992 по 2015 рік, що можна порівняти з реальною ринковою прибутковістю на рівні 9% на рік.

Коли ринок трясло у 2000 та 2008 роках, дохідність була рекордною – 545% та 681% відповідно

2004 року Goldman Sachs запустив торгову платформу Kensho на базі штучного інтелекту. На криптовалютних ринках також виникають системи з урахуванням ІІ для торгівлі біржах – Mirocana тощо. Вони кращі за живих трейдерів, оскільки позбавлені емоцій і спираються на чіткий аналіз і жорсткі правила.

Чи замінить ІІ нас із вами

Штучний інтелект: холодний, нечутливий і невловимий. Але саме за ним і є майбутнє, саме ця галузь науки дозволить зробити великий та суттєвий крок у бік автоматизації процесів, а отже, зняття частини рутинного навантаження з цінних фахівців. І зараз, на зорі його розвитку тільки ми вирішуємо, яким буде штучний інтелектза кілька десятків років, навчаючи його.

Спробуємо розібратися які існують методи та алгоритми машинного навчання штучного інтелекту.

Традиційно навколо нового та незвіданого виникає безліч суперечок. І нехай про ІІ вже написано багато, він до кінця не зрозумілий людьми. Звідси і виникають претензії на кшталт: «Він забере сотні робочих місць у людей!», «Він повстане проти людей!», «Та ми самі собі риємо могилу!», «Рано чи пізно ми не зможемо ним керувати!» і т.п. Маса людей уявляє собі ІІ як надрозум, який раз вже не піддається їхньому власному поясненню, значить неодмінно представляє для них загрозу. І звичайно, ніхто і чути не хоче, що зараз, які виходять за межі програми, прописаної людиною, на даний момент це технічно неможливо.

А чому все-таки можна його навчити і як це відбувається?

Методи машинного навчання штучного інтелекту:

  1. Індуктивне навчання

отримання емпіричних даних, виявлення закономірностей, виявлення алгоритмів дії в кожній подібній ситуації;

  1. Дедуктивне навчання

Формалізація даних, отриманих людиною різними способами, та внесення їх безпосередньо до бази;

Основні алгоритми прийняття рішень штучним інтелектом:

Наївний Баєсовський класифікатор

Один із найпростіших методів класифікації.

Даний метод використовується в технології сканування та розпізнавання осіб/сітківки ока/відбитка пальця, у розділенні контенту в стрічці новин за темами, а також у розділенні листів у Вашій електронній пошті за категоріями (конкретно - відділення спаму);

Метод ансамблів дуже грубо можна назвати похідним від вищеописаного наївного Байєсовського класифікатора, оскільки в його основі лежить Байєсівське усереднення. Іншими словами, цей спосіб виявляє перетин ймовірностей наслідків, усереднює це значення, виключає дисперсію значень, одночасно контролюючи пошук вирішення проблеми в рамках заданих умов.

Саме метод ансамблів може дозволити знайти те саме оптимальне вирішення проблеми, при якому буде витрачено менше ресурсів, а результат максимально задовольнятиме умови завдання.

Якщо не вдаватися у сутність самого методу та пояснення побудови гіперплощини та роботи з нею, то SVM можна описати як алгоритми для класифікації та регресійного аналізу.

Подібна технологія використовується в розпізнаванні певних властивостей об'єкта з фотографії (колір волосся, статі, кольору одягу), а також в генетиці - в сплайсингу ДНК (відділення конкретних нуклеотидних послідовностей з РНК та їх з'єднання під час процесингу РНК).

Дерево прийняття рішень

Спосіб (модель) ухвалення рішень, що використовується щодня кожним з нас. Саме тому він уже став мемом

А якщо без жартів, така модель зазвичай містить такі елементи, як: проблему, способи вирішення, наслідки кожного способу, ймовірність настання наслідків, витрати ресурсів, і кінцевий підсумок. На основі цієї моделі працюють більшість найпростіших технологій з використанням ІІ.

Логічна регресія

Спосіб, який може наблизити нас до потужного штучного інтелекту, здатного приймати самостійні рішення у деяких ситуаціях. Логічна регресія є методом прогнозування настання деякої події при кількох змінних.


Подібний алгоритм використовують у метеорології та сейсмології, у кредитуванні, у маркетингу та інших сферах.

Цей метод хотілося б виділити окремо, оскільки за своєю суттю він не є способом вирішення проблеми – швидше способом визначення похибок кожного рішення.

Описані вище алгоритми використовуються для методу контрольованого навчання, тобто такого, при якому конкретному масиву даних можна присвоїти певний ярлик (властивість), але у випадку, якщо цей ярлик недоступний, слід спрогнозувати його присвоєння в інших схожих ситуаціях.

Ми розібрали основні алгоритми машинного навчання штучного інтелектунайчастіше застосовуються практично. Варто враховувати, що прикладне застосування ІІ у побуті та у вирішенні повсякденних завдань, у яких найчастіше вирішення проблеми абсолютно зрозуміле і необхідно лише автоматизувати цей процес, може передбачати використання подібних алгоритмів. Проблема ж, рішенням якої має стати інноваційна розробка, або рішення залежатиме від великої кількості змінних (тобто в основному різні сфери точних наук), потребує складніших алгоритмів рішення, дізнатися про які Ви зможете, якщо стежитимете за нашими новинами.

Натомість він дивиться на окремі пікселі зображення - і на найшвидший спосіб поділити об'єкти. Якщо переважна кількість одиниць матиме чорний піксель у певній точці та кілька білих пікселів в інших точках, машина дуже швидко навчиться їх визначати за кількома пікселями.

Тепер повернемося до знака стоп. Непомітно поправивши пікселі зображення - експерти називають таке втручання пертурбаціями - можна обдурити комп'ютер і змусити думати, що знака стоп, по суті, і немає.

Аналогічні дослідження, проведені в Лабораторії еволюційного штучного інтелекту в Університеті Вайомінга та Корнеллського університету, викликали чимало оптичних ілюзій для штучного інтелекту. Ці психоделічні образи абстрактних візерунків та кольорів ні на що не схожі для людей, але швидко розпізнаються комп'ютером у вигляді змій чи гвинтівок. Це говорить про те, як ІІ може дивитися на щось і не бачити об'єкт або бачити замість нього щось інше.

Ця слабкість поширена у всіх типах алгоритмів машинного навчання. «Можна було б очікувати, що кожен алгоритм має пролом у броні», каже Євген Воробейчик, доцент кафедри інформатики та обчислювальної техніки в Університеті Вандербільта. «Ми живемо в дуже складному багатовимірному світі, і алгоритми за своєю природою торкаються лише невеликої його частини».

Горобець «вкрай впевнений», що, якщо ці вразливості існують, хтось з'ясує, як ними скористатися. Мабуть, хтось це вже зробив.

Розглянемо спам-фільтри, автоматизовані програми, які відсівають будь-які незграбні електронні листи. Спамери можуть спробувати обійти цю заслінку, змінивши написання слів (замість віагри - ві@гра) або додавши список «хороших слів», які зазвичай зустрічаються в нормальних листах: на кшталт «ага», «мене», «рад». Тим часом спамери можуть спробувати усунути слова, які часто з'являються в спамі, наприклад, «мобільний» або «виграш».

До чого можуть дійти шахраї одного прекрасного дня? Самоврядний автомобіль, ошуканий наклейкою на знак «стоп», є класичним сценарієм, придуманим експертами в цій галузі. Додаткові дані можуть допомогти програти порнографії через безпечні фільтри. Інші можуть спробувати збільшити кількість чеків. Хакери можуть підправити код шкідливого програмного забезпечення, щоб уникнути органів правопорядку.

Порушники можуть зрозуміти, як створювати дані, що пропускають, якщо отримають копію алгоритму машинного навчання, яке хочуть обдурити. Але щоб пробратися крізь алгоритм, це не обов'язково. Можна просто зламати його грубою силою, накидаючи на нього трохи різні версії електронної пошти або зображень, доки вони не пройдуть. Згодом це можна буде навіть використовувати для нової моделі, яка знатиме, що шукають хороші хлопці, і які робити дані, щоб їх обдурити.

"Люди маніпулюють системами машинного навчання з тих пір, як вони були представлені вперше", говорить Патрік Макденієл, професор комп'ютерних наук та інженерії в Пенсільванському університеті. "Якщо люди використовують ці методи, ми можемо навіть про це не знати".

Цими методами можуть скористатися не тільки шахраї - люди можуть ховатися від рентгенівських очей сучасних технологій.

«Якщо ви якийсь політичний дисидент за репресивного режиму і хочете проводити заходи без відома спецслужб, вам може знадобитися уникнення автоматичних методів спостереження на основі машинного навчання», каже Лоуд.

В одному з проектів, опублікованих у жовтні, дослідники з Університету Карнегі — Меллона створили пару очок, які можуть тонко ввести в оману систему розпізнавання осіб, змусивши комп'ютер помилково приймати актрису Різ Уізерспун за Рассела Кроу. Це звучить смішно, але така технологія може стати в нагоді комусь, хто відчайдушно намагається уникнути цензури з боку можновладців.

Що ж із усім цим робити? «Єдиний спосіб повністю уникнути цього – створити ідеальну модель, яка завжди буде правильною», каже Лоуд. Навіть якщо ми змогли б створити штучний інтелект, який би перевершив людей у ​​всіх відносинах, світ все ще може підсунути свиню в несподіваному місці.

Алгоритми машинного навчання зазвичай оцінюють за їх точністю. Програма, яка розпізнає стільці в 99% випадків, буде явно краще, ніж та, яка розпізнає 6 стільців із 10. Але деякі експерти пропонують інший спосіб оцінки можливості алгоритму впоратися з атакою: чим жорсткішим, тим краще.

Інше рішення може полягати в тому, щоб експерти могли задавати програмам певний темп. Створіть власні приклади атак в лабораторії, виходячи з можливостей злочинців на ваш погляд, а потім покажіть їх алгоритму машинного навчання. Це може допомогти йому стати більш стійким з часом - за умови, звичайно, що тестові атаки будуть відповідати типу, який буде перевірено у реальному світі.

«Системи машинного навчання – інструмент для осмислення. Ми повинні бути розумними та раціональними щодо того, що ми їм даємо і що вони нам говорять», вважає Макденієл. «Ми не повинні ставитись до них як до досконалих оракул істини».