мний компроміс.
Для забезпечення необхідної точності і узагальнюючої здатності можна використовувати нейронну мережу з двома прихованими шарами, розмірність яких менше, ніж при використанні тришарової мережі. Однак нейронні мережі, які мають кілька прихованих шарів, навчаються значно повільніше.
Так само одним з недоліків методу градієнтного спуску є застрявання в небажаних локальних мінімумах. Для нейтралізації цього недоліку можна використовувати метод важкого кульки.
Виходячи з наведених міркувань можна зробити висновки:
- нейронна мережа з одним прихованим шаром дозволяє здійснити будь-яке відображення вхідних сигналів у вихідні;
- число нейронних елементів в проміжному шарі повинно бути менше числа тренувальних зразків;
- потужність нейронної мережі можна збільшувати як за рахунок числа нейронів в шарі, так і за рахунок числа шарів. Якщо на нейронну мережу накладається обмеження п.2 і вона не може вирішити поставлене завдання, то необхідно збільшувати число прихованих шарів;
- випадкова ініціалізація вагових коефіцієнтів нейронної мережі повинна проходити в досить вузькому діапазоні значень.
3. Розробка програми моделювання нейронної мережі
. 1 Вибір інструментарію для моделювання
Об'єктно-орієнтоване програмирование в даний час стало домінуючою парадигмою програмування, витіснивши структурні, процедурно-орієнтовані способи програмування, розроблені на початку 1970-х років. Мова Java являє собою повністю об'єктно-орієнтована мова, і не ньому неможливо програмувати в процедурному стилі.
Для подальшої роботи необхідно визначитися з термінологією об'єктно-орієнтованого програмування. Найбільш важливим терміном є клас. Клас - це шаблон, або проект, за яким буде зроблений об'єкт. Зазвичай клас порівнюється з формою для випічки печива. Об'єкт - це саме печиво. Конструювання об'єкта на основі деякого класу називається створенням екземпляра цього класу.
Як побачимо далі, всі коди, які створюються в мові Java, знаходяться всередині класів. Стандартна бібліотека мови Java містить кілька тисяч класів, призначених для вирішення різних завдань, наприклад, для створення користувальницького інтерфейсу, календарів і т.д. Незважаючи на це, програмісти продовжують створювати свої власні класи на мові Java, щоб описати об'єкти, характерні для розроблювального додатка, а також адаптувати класи зі стандартної бібліотеки для своїх потреб.
Інкапсуляція - це ключове поняття при роботі з об'єктами. Формально інкапсуляція - це просто об'єднання даних та операцій над ними в одному пакеті і приховування даних від користувача об'єкта. Дані в об'єкті називаються полями екземпляра, а функції та процедури, що виконують операції над даними, - його методами. У зазначеному об'єкті, тобто екземплярі класу, поля примірники мають певні значення. Безліч цих значень називається поточним станом об'єкта. Застосування будь-якого методу до якого-небудь об'єкту може змінити його стан.
Розглянемо відмінності між об'єктно-орієнтованим програмуванням і традиційним процедурним. У процедурно-орієнтованому програмуванні спочатку формується завдання, а потім
за допомогою покрокового уточнення вихідна задача розбивається на все більш дрібні підзадачі, поки вони не стануть настільки простими, що їх можна буде реалізувати безпосередньо (програмування зверху вниз) ж
створюються процедури, призначені для вирішення простих завдань; потім ці процедури об'єднуються в більш складні, поки програма не стане робити саме те, що потрібно (програмування знизу вгору).
Більшість програмістів, звичайно, використовують змішані стратегії зверху вниз і знизу вгору. При дослідженні процедур потрібно дотримуватися такого ж правила, як і при об'єктно-орієнтованому програмуванні: шукайте дієслова, або дії, в описі завдання. Істотна відмінність полягає в тому, що при об'єктно-орієнтованому програмуванні (ООП) у проекті спочатку виділяються класи, і лише потім визначаються їхні методи.
Для вирішення невеликих завдань розбивка програми на процедури цілком виправдано. Однак при розробці великих проектів класи та методи мають дві переваги. Класи надають зручний механізм кластеризації методів. Простенький Web-браузер для своєї реалізації може зажадати +2000 функцій і 100 класів, тобто в середньому 20 методів у класі. Програмісту набагато легше зрозуміти саме останню структуру. Крім того, її легше розподілити в команді програмістів. Цьому сприяє також інкапсуляція: класи приховують деталі уявлення даних від будь коду, крім своїх методів. Як показано на малюнку 3.1, це означає, що, якщо помилка програмування спотворює дані...