Можливо, ви чули, як це говорило, що нейронні мережі - це " універсальні аппроксиматори функцій ". По суті, теорема Кібенко говорить, що для будь-якого відображення функції, що відповідає дійсності, ви можете наблизити її до нейронної мережі з сигмоїдними активаційними функціями. Насправді виявляється, що нейронні мережі дозволяють обчислити будь-яку функцію, яку можна обчислити машиною Тюрінга (тобто все, що ви можете написати алгоритм для обчислення). На жаль, ці докази говорять лише про те, що за деякої кінцевої конфігурації нейронів і ваг можна наблизити будь-яку функцію.
Ця теорія - це все добре і безглуздо, але ваше питання, здається, більше відповідає принципам того, як насправді закодувати обчислення якоїсь функції в набір нейронів і ваг. Для ілюстрації розглянемо простий приклад - ексклюзивний або. XOR приймає два входи, передає ці входи. Коли активований один і лише один з входів, тоді активується вихідний вузол. Якщо активований або обидва входи, ні вузол виводу не активований.
Зауважте, що три приховані вузли роблять різні речі. Найбільш лівий і правий більшість вузлів просто проходять через активацію вхідних вузлів відношення. Середній нейрон приймає два входи і якось заперечує їх, якщо вони обоє. Це розумне поєднання та рекомбінація входів - це по суті те, як робиться робота в нейронній мережі.
Очевидно, що для більш складних функцій комбінування та рекомбінація повинні здійснюватися більш розумними та складними способами, але це, по суті, те, що відбувається на низькому рівні. Божевільна річ, що це насправді все, що потрібно для обчислення будь-якої обчислювальної функції! Потім знову тюрінг машини виявляються оманливо простими ...
Проблема полягає в тому, що насправді у нас немає способу магічного генерування нейронної мережі, яка обчислює якусь довільну функцію. Докази свідчать лише про те, що там є якась мережа, яка могла б це зробити. Коли ми тренуємо наші нейронні мережі, ми просто намагаємось знайти мережу, яка є досить тісною.
У контексті розпізнавання зображень ви можете уявити структури кодування в мережу. Наприклад, щоб розпізнати число '1', ви можете уявити приховані вузли, які очікують, що стовпець пікселів буде в основному або всі активовані, а сусідні пікселі будуть вимкнені. Цей прихований вузол міг би бути досить хорошим у розпізнаванні прямої лінії в цьому конкретному стовпчику. Складіть їх достатньо, і досить скоро у вас з'явиться купа вузлів, які роблять це в достатній кількості вашого зображення, що якщо я покажу мережі один, досить активованих прихованих вузлів прямої лінії буде активовано, що вказує на "1". Проблемою, звичайно, стає узагальнення мережі, щоб вона могла розпізнати різноманітний набір входів.
Сподіваємось, це допоможе вам зрозуміти більш-менш поняття того, як нейронна мережа може виконувати обчислення. Однак ви натрапили на досить важливу точку щодо нейронних мереж: загалом важко зрозуміти, чому мережа виплюнула певний вихід, особливо якщо ви вважаєте, що мережі для розпізнавання зображень зазвичай досить великий, що люди мають важкий час, щоб зрозуміти кожну з рухомих частин машини. Подальше ускладнення питання полягає в тому, що загалом більшість нейронних мереж фактично не мають жодного прихованого вузла для кожної невеликої функції, що мережа могла б дізнатися про дані. Натомість виявлення чогось типу прямої для класифікації числа '1' відбуватиметься нецентралізовано у багатьох прихованих вузлах. Інші алгоритми,
Якщо ви шукаєте більше читання, я настійно рекомендую ознайомитись з цим підручником в аї наркоман. Це провідає вас через основи роботи нейронної мережі і навіть дає простий приклад коду для отримання нейронних мереж для керування цистерною до мети. Навчальний посібник, однак, не охоплює зворотного розповсюдження, що, безумовно, є найпоширенішим способом навчання нейронних мереж, а натомість використовує простий генетичний алгоритм. Як тільки він почне говорити про генетику, я думаю, ви можете перестати читати ...