Блог - Просто про складне

Штучний мозок, а що всередині?

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

Коли ми бачимо кінцевий результат, чи то написану в стилі відомого музиканта композицію, чи синтезований комп’ютерним алгоритмом голос, то це здається дивом, якоюсь загадкою. Але насправді ніякого чаклунства немає - всім правлять математика та програмування. З їхньою допомогою вчені намагаються відтворити людський мозок, розробити математичну модель людського розуму.

Нейрон — основа будь-якого розуму.


Як відомо з біології, мозок будь-якої живої істоти (у тому числі й людини) складається з величезної мережі нервових клітин — нейронів. Через крихітні відросткі, що називають дендритами, нейрони отримують інформацію ззовні. Далі через аксони вони пропускають імпульси — слабкі електричні сигнали. Ці сигнали несуть інформацію. Так відбувається «мислення». Якщо утрирувати цей процес, це виглядає так: надійшов сигнал «гаряче» — спрацював оціночний механізм, а далі пішов у м’язи сигнал — «прибрати руку». Штучний інтелект працює за тим самим принципом і будується на штучних нейронах.

У біології нейрон — дуже складний пристрій, який має не лише виконувати функцію передачі сигналів, а й підтримувати свою життєдіяльність. Зі штучними нейронами все простіше: їх функціональність зводиться до підсумовування вхідних імпульсів, їх оцінки та передачі сигналу далі за своїм аксоном. Якщо сумарні вхідні імпульси перевищують граничне значення, вихідний імпульс формується, а ті, що не перевищують, імпульс не формується.
Будуємо математичну модель нейрона.
Тепер, знаючи принцип роботи нейронів, можна побудувати математичну модель нейронної мережі. Припустимо, ми маємо набір вхідних параметрів — x〖_1〗, x〖_2〗, x〖_3〗…, x〖_n〗 і кожен з цих параметрів має свою вагу — w〖_1〗, w〖_2〗, w 〖_3〗…, w〖_n〗. Значення кожного вхідного сигналу множиться на ваговий коефіцієнт, після чого отримане значення передається функцію активації. У результаті наш суматор працює за такою формулою:
S=x〖_1〗*w〖_1〗+x〖_2〗*w〖_2〗+x〖_3〗*w〖_3〗+.x〖_n〗*w〖_n〗. Ось ця проста формула визначає роботу мозку і її відносно просто запрограмувати.

Давайте розглянемо конкретний приклад: ви збираєтеся піти на риболовлю і розмірковуєте, йти на неї чи ні. Давайте оцінимо низку чинників, які впливають на успіх такого заходу. Перша обставина — сонячна погода. Клювання йде краще в похмуру погоду. При яскравому сонці риба йде на глибину, тому сигнал цієї умови вказуємо як x01=0 для яскравої погоди, і x1=1 для похмурої. Друга обставина — атмосферний тиск. При високому тиску велика риба стає млявою і не клює. Отже — x02=0 при високому і x22=1 при низькому тиску. Третій чинник — швидкість вітру. Чим сильніший вітер, тим більше хвилі і гірша рибалка — x 3 = 1 для слабкого вітру і x 3 = 0 для сильного. Четвертий чинник — зміна погоди. Коли різко змінюється погода x04=0, риба відчуває зміну температури навколишнього середовища і апетит у неї знижується. Кожен фактор має своє значення ваги. Припустимо, найбільш важливе значення має тиск і вітер — w〖_3〗= 5, w〖_2〗= 4, а інші два фактори мають менший вплив на прийняття рішення — w〖_1〗= w〖_4 〗= 1. Припустимо, день був безвітряний і похмурий x=3=1, x=1=1, тиск був високим x=2=0, а погода не змінювалася x=4=0.

Запишемо нашу формулу з урахуванням факторів, щоб дізнатися зважене значення сигналу:

S=1*1+0*4+1*5+0*1
S=6

Функції активації


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

Y=f (S)

Як функцію активації можуть використовуватися кілька стандартних функцій. По-перше, можна використовувати функцію Хевісайда (вона ж — функція одиничного стрибка). Це найпростіший варіант, який дуже легко програмувати.

Інший варіант функції - сигмоїдальна або логістична. Вона визначається виразом: Y = 1 / (1 + exp ^ ((-aS))). В даному випадку параметр a визначає ступінь крутості функції. Чим більша зважена сума S, тим ближчий вихід Y
буде до одиниці (при цьому ніколи її не досягаючи). І навпаки, що менше зважена сума S, то сильніший вихід нейрона Y прагнутиме нулю.



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

Для побудови реалістичнішої моделі нервової клітини використовується функція гіперболічного тангенсу. Така функція використовується найчастіше біологами.
Y=th (S).


Різновидності нейронних мереж


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

Навчання нейронної мережі


Будь-яка нейронна мережа сама по собі неефективна. Її можливості розкриваються лише після навчання. Як саме відбувається навчання нейронної мережі та що це таке?

У нашій задачі з риболовлею ми примусово задали ваги факторів та граничне значення, спираючись на власний досвід. Ми розглядали цю ситуацію як роботу нейронної мережі лише з одним нейроном. Але як би ми вчинили, якби наша нейронна мережа була складнішою та містила, наприклад, сто нейронів? Інтуїтивно ми розуміємо, що чим більше нейронів, тим мережа «розумніша». Але якщо ми візьмемо, наприклад, сто осіб, далеких від інженерії, то вони не зможуть спроектувати літак. Тому збільшувати кількість обчислювальних елементів не має сенсу — це зробить нашу нейронну мережу лише важкою. Міняти суматор теж немає сенсу — він виконує лише одну функцію. Функція активації також стабільна, і залишаються лише ваги зв’язків. Саме їх потрібно коригувати в процесі навчання нейронної мережі. Ми маємо знайти такі вагові коефіцієнти, щоб вихідний сигнал нас влаштовував. У цьому полягає суть навчання. Навчання людського мозку відбувається дуже схоже: як регулятор ваг виступають синапси (місце з'єднання дендритів з аксонами). Вони змінюють свою пропускну здатність, посилюючи чи послаблюючи сигнал. Якщо навчити мережу лише одному тестовому сигналу, то наша нейронна мережа запам’ятає правильну відповідь і працюватиме некоректно. Наприклад, мережа розпізнала обличчя людини на фотографії, проте інше обличчя вона вже не сприймає, оскільки є деякі відмінності. Тому для навчання завжди використовується деяка вибірка вхідних значень і вже нею коригуються ваги. Коли нейронну мережу буде навчено, вона проходить тестування. Тестова вибірка, на якій перевіряють мережу, є своєрідною «контрольною роботою», яка дає зрозуміти, наскільки скориговані ваги зв’язків.
Допустимо, ми розробляємо штучний інтелект, який прогнозує погоду. У цьому випадку для навчання ми повинні взяти реальні дані про погодні умови за минулі дати: інформацію про температурні перепади, атмосферний тиск, опади тощо. Для навчання гри в шахи можна використовувати іншу програму, яка звертається до бази даних зіграних ігор.

Існує також особливий варіант навчання нейронної мережі без вчителя. У цьому випадку мережа самостійно поділяє вхідні сигнали, і при цьому не має еталонних сигналів для порівняння. Припустимо, завдання такої мережі - визначити на фотографії літак. У міру навчання мережа починає групувати сигнали, що подаються на вхід, на класи. Мережа виділяє ознаки, якими може відрізнити транспорт: колеса, вікна, крила. Цей процес називається кластеризацією. Самонавчальна система має необмежені можливості і максимально повторює біологію людини. Адже більшість навичок прийшли до вас після самостійного навчання. Згадайте себе, коли ви вперше вчилися читати і усвідомили, що чотири похилих палички — це літера «М». Ось, метро — літера «М», а ось магазин, у назві якого теж літера «М». А ось просто чотири гілочки на землі, як смішно вони лежать — ну точно літера «М»!

Висновок


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