Штучний інтелект з алгоритмами нейрокібернетику
Вступ
Я зайнявся розробкою програм комплексу "Штучний інтелект" тому що
ІІ (Штучний інтелект) - це один із найбільш перспективних і швидко розвиваються галузей науки. І в результаті роботи був створений програмний комплекс, у складі якого:
Компонент нейронної мережі
Програма розпізнавання графічних образів на основі компонента НС (Нейронна мережа), здатна розпізнавати графічні файли:
Зразки розписів
Зразки іконок програм
Зразки цифр шрифту AWARD BIOS
Компонент експертної системи
Демонстраційна програма до компоненту ЕС (Експертної системи)
Детальний довідкова система
Проведено ряд експериментів з нейронної мережею, дані систематизовані.
Т.О. програмний комплекс містить можливості побудови програм на основі компонентів НС і ЕС, однак щоб не розкидатися я вважав за краще зупинитися на нейронні мережі в силу її наочності, достатньої складності і реальної можливості застосування. Я навмисно приділив так мало уваги експертним системам, на мою думку НС є набагато більш перспективним напрямом в області програмування ШІ.
Область застосування нейронних мереж
У літературі зустрічається значне число ознак, якими повинна володіти задача, щоб застосування НС було виправдано і НС могла б її вирішити:
відсутній алгоритм або не відомі принципи вирішення задач, але накопичена достатня кількість прикладів;
проблема характеризується великими обсягами вхідної інформації;
дані неповні або надлишкові, зашумлені, частково суперечливі.
Таким чином, НС добре підходять для розпізнавання образів і рішення задач класифікації, оптимізації і прогнозування. Нижче наведено перелік можливих промислових застосувань нейронних мереж, на базі яких або вже створені комерційні продукти, або реалізовані демонстраційні прототипи.
Банки та страхові компанії:
автоматичне зчитування чеків і фінансових документів;
перевірка достовірності підписів;
прогнозування змін економічних показників.
Адміністративний обслуговування:
автоматичне зчитування документів;
автоматичне розпізнавання штрихових кодів.
Нафтова та хімічна промисловість:
аналіз геологічної інформації;
ідентифікація несправностей обладнання;
розвідка покладів мінералів за даними аерофотозйомок;
аналіз складів домішок;
управління процесами.
Військова промисловість і аеронавтика:
обробка звукових сигналів (поділ, ідентифікація, локалізація, усунення шуму, інтерпретація);
обробка радарних сигналів (розпізнавання цілей, ідентифікація і локалізація джерел);
обробка інфрачервоних сигналів (локалізація);
автоматичне пілотування.
Промислове виробництво:
управління маніпуляторами;
керування процесами;
виявлення несправностей;
адаптивна робототехніка;
Біомедична промисловість:
аналіз рентгенограм;
виявлення відхилень у ЕКГ.
Крім того, слід додати, що в останні кілька років вся інформація про нейропрограммах зникла із засобів масової інформації - це говорить про інтереси військових у цій області і отже перспективність цих проектів.
Нейронні мережі - основні поняття і визначення
В основу штучних нейронних мереж покладені наступні риси живих нейронних мереж, що дозволяють їм добре справлятися з нерегулярними завдань:
простий обробляє елемент - нейрон;
дуже велике число нейронів бере участь в обробці інформації;
один нейрон пов'язаний з великим числом інших нейронів (глобальні зв'язку);
змінюються за вагою зв'язку між нейронами;
масована паралельність обробки інформації.
Прототипом для створення нейрона послужив біологічний нейрон головного мозку. Поведінка штучної нейронної мережі залежить як від значення вагових параметрів, так і від функції збудження нейронів. Відомі три основних види функції збудження: порогова, лінійна і сігмоідальная.
Нейронна мережа являє собою сукупність великої кількості порівняно простих елементів - нейронів, топологія з'єднань яких залежить від типу мережі. Щоб створити нейронну мережу для вирішення якої-небудь конкретного завдання, ми повинні вибрати, яким чином слід з'єднувати нейрони один з одним, і відповідним чином підібрати значення вагових параметрів на цих зв'язках. Чи може впливати один елемент на інший, залежить від встановлених з'єднань. Вага з'єднання визначає силу впливу.
Моделі нейронних мереж
Модель Маккалоха
Нейрони мають стану 0, 1 і порогову логіку переходу зі стану в стан. Пороговий вид функції не надає нейронної мережі достатню гнучкість при навчанні та налаштування на задану задачу.
Модель Розенблат
Розенблат ввів в модель Маккаллок і Піттса зв'язків здатність до модифікації, що зробило її навчатиметься. Ця модель була названа персептроном. Спочатку персептрон представляв собою одношарову структуру з жорсткою порогової функцією процесорного елемента і бінарних або багатозначними входами. Також слабко формалізований метод навчання персептрона.
Модель Хопфілда
Привабливість підходу Хопфілда полягає в тому, що нейронна мережу для конкретного завдання може бути запрограмована без навчальних ітерацій. Ваги зв'язків обчислюються на основі дозволу функції енергії, сконструйованої для цього завдання.
Модель мережі зі зворотним поширенням
Способом зворотного поширення (back propogation) називається спосіб навчання багатошарових НС. У таких НС зв'язку між собою мають тільки сусідні шари, при цьому кожен нейрон попереднього шару пов'язаний з усіма нейронами наступного шару (мал. на стор I). Нейрони зазвичай мають сігмоідальную функцію збудження. Перший шар нейронів називається вхідним і містить число нейронів відповідне розпізнається образу. Останній шар нейронів називається вихідним і містить стільки нейронів, скільки класів образів розпізнається. Між вхідним і вихідним шарами розташовується один або більш прихованих (тіньових) шарів. Визначення кількості прихованих шарів і числа нейронів у кожному шарі для конкретного завдання є неформальною завданням.
Принцип навчання такий нейронної мережі базується на обчисленні відхилень значень сигналів на вихідних процесорних елементах від еталонних і зворотному "прогоні" цих відхилень до породили їх елементів з метою корекції помилки. Ще в 1974 році
Поль Дж. Вербос винайшов значно більш ефективну процедуру для обчислення величини, яку називають похідною помилки за вагою, коли працював над своєю докторською дисертацією в Гарвардському університеті. Процедура, відома тепер як алгоритм зворотного поширення, стала одним з найбільш важливих інструментів у навчанні нейронних мереж. Однак цьому алгоритму властиві й недоліки, головний з яких - відсутність скільки-небудь прийнятних оцінок часу навчання. Розуміння, що мережа врешті-решт навчиться, мало втішає, якщо на це можуть піти роки. Тим не менше, алгоритм зворотного поширення має найширше застосування. Наприклад, успіх фірми NEC в розпізнаванні букв, було досягнуто саме завдяки алгоритму зворотного поширення. Мій приклад і є мережею з зворотним поширенням. Цей метод є досить складним і дуже наочним, тому я зупинюся на ньому детальніше.
Реалізація нейросети
Моя нейросети є програмною реалізацією, її параметри залежать від конкретної розв'язуваної задачі і можливостей комп'ютера. Для моєї демонстраційної завдання виявилося цілком достатньо двошаровою (без прихованих шарів) мережі, однак цілком припустимо ускладнювати мережу, підганяючи під поточну роботу.
Програма розпізнавання підписів.
Для своєї мережі я використав алгоритм зворотного поширення, і докладніше розповім, як мережа навчається і розпізнає приклади, на основі демонстраційної програми розпізнавання 10 сканованих розписів.
Програма складається з двох частин:
Алгоритм підготовки цифрового образу.
Алгоритми навчання і розпізнавання цього образу.
Алгоритм підготовки цифрового образу.
На малюнку (мал. на стор II) представлена матриця з розписом формату 125х85. Зразками послужили розпису деяких людей, згодом відскановані і приведені до однакового розміру. Перетворення матриці відбувається наступним чином: Припустимо у вхідному шарі нейросети 210 нейрона. Тоді потрібно перетворити двовимірну матрицю в одновимірну з 210 елементами, яку ми будемо називати цифровим чином (Можна навпаки підігнати під приклад число нейронів - залежить від смаку і від можливостей компілятора). Я вважаю суму зафарбованих точок по стовпцях, множимо на визначений коефіцієнт і записую вийшло число в потрібний елемент масиву, потім те ж саме проробляю з рядками, і записую в інші елементи масиву. Отримую одновимірний масив розміром +, тобто в даному випадку - 210. Програма розпізнає приклад, записаний у файл SAMPLE.BMP, який перетворюється за таким же алгоритмом. Цілком допустимо створити будь-який свій алгоритм перетворення.
Так само є демонстрація розпізнавання іконок до різних програмах - нейросети пізнає приклад і видає ім'я програми. Перетворення матриці здійснюється за таким же алгоритмом, що і для чисел, проте у вхідному шарі нейросети використовується вже 64 нейрона (формат іконки - 32х32).
Програма розпізнавання образів 10 цифр може послужити основою програми розпізнавання текстів (щось типу FineReader).
Алгоритми навчання і розпізнавання цього образу.
Ці цифрові образи передаються компоненту який навчається на них і стає здатним класифікувати подібні образи. Навчання, згідно з алгоритмом зворотного поширення проходить наступним чином: мережа робить спробу розпізнати цей образ, але якщо вона ще не достатньо навчена, то результат не буде відповідати істинному. Програма вловлює ці невідповідності намагається виправити їх, проганяючи еталонний зразок. Коли подібні невідповідності стають нижче будь-якого значення можна сказати, що мережа навчилася.
Компонент нейронної мережі
Компонент нейронної мережі містить основні процедури роботи з нейронної мережею, наприклад процедура розпізнавання, навчання мережі: прямого і зворотного ходу. Всі константи відкриті для зміни, параметри підібрані для різних видів застосувань. Компонент оформлений з використанням об'єктно-орієнтованої мови програмування Object Pascal. Компонент може використовуватися для Delphi версій 2,3,4 і C + + Builder
Оригінальний текст знаходиться в каталозі COMPONEN NN nnet.pas.
Використані методи:
Навчання мережі
Вибір оптимального варіанту (розпізнавання, прогнозування)
Збереження результатів навчання
Завантаження навченої мережі
Ініціалізація випадкових значень функцій мережі.
Властивості нейросети
Можливість зміни числа нейронів
Можливість зміни числа прихованих шарів
Можливість збереження навченої мережі в файл
Можливість завантаження без навчання
змінність лінійних коефіцієнтів перетворення
Довідкова система
Виконана в HTML форматі, містить опис двох видів ІВ:
Нейронна мережа
Експертна система
У розділі нейронної мережі наведено опис принципів функціонування НС, основні алгоритми реалізації, історична довідка. Дозволяє запускати демонстраційні програми. Нижче наведені основні теми довідки.
Що таке ШІ. Області застосування. Основні види, принципи
Все про експертних системах
Все про нейронних мережах
Принцип роботи нейронних мереж
Концепції експертних систем
Довідкова система оформлена інтерактивно, її можна викликати практично з будь-якої програми, отримати вичерпну відповідь на будь-яке питання.
Програма оболонка
Усі програми комплекси "Штучний інтелект" об'єднані єдиною програмою оболонкою - з-під неї можна викликати всі демонстраційні програми, довідку, переглянути вихідні тексти модулів. Для цього необхідно, щоб на комп'ютері було встановлено Browser HTM файлів і Delphi бажано версії 3. Я використовую програму роботи з реєстром Windows, програму, що сканує, зіставлені з розширеннями HTM, PAS, DPR, тому для повної і якісної роботи необхідно, щоб на комп'ютері, в каталозі, доступному по змінній оточення PATH перебувала програма Windows - start.exe.
Програма так само використовує асинхронне відтворення звуку WAW.
Практичне застосування програмного комплексу.
Перспективи використання.
Практично, дану програму можна використовувати за призначенням - розпізнавання образів, прогнозування і т.д., але я бачу ще кілька можливостей:
Розробка комерційних продуктів на основі моїх компонентів
Вивчення властивостей нейропрограмм, проведення експериментів
Навчання основам штучного інтелекту
Крім того вже дану програму можна з успіхом використовувати в реальних умовах.
Рис. 1. Модель мережі на основі зворотного поширення.
На малюнку зображена проста модель нейронної мережі. Дана мережа містить 5 нейронів у вхідному шарі і 3 у вихідному. Тобто з її допомогою можна за 5 ознакою визначити один з трьох класів.
Рис. 2. Формат підпису. Масштаб 28:1.
Приклад підпису, який розпізнає демонстраційна програма нейронної мережі. Збільшена в 28 разів. Приклад містить 10625 пікселів і є дуже великим. Мережа обробляє подібні приклади на межі, з шансом успішного розпізнавання 60-70%.
Рис. 3. Зовнішній вигляд нейрона.
Даний нейрон містить 11 входів, тобто може бути нейроном шару, якому передував шар з 11 нейронів. Кожен з входів має свій ваговий коефіцієнт, сам нейрон має деякий поріг спрацьовування, тому на вихід подається винятковий, характерний лише для даного нейрони сигнал.
Рис. 4. Залежність часу навчання НС від розмірів зразка.