/>
3.3 Детальний опис мереж
Таким чином, в нашому завданні використовуються дві різні нейронних мережі: реплікатор і аппроксіматор. Опишемо докладно структуру цих мереж, які були навчені для використання в задачі оптимізації.
. 3.1 Реплікатор
Кількість нейронів на кожному шарі репликатора наступне:
590320 60320590
Формула для обчислення виходу по входу:
де V - вхідний вектор,
- матричне множення, - сігмоідной функція активації.
Кожен вхідний і вихідний вектор нормується за середнім значенням і дисперсії. Тобто перед стисненням із компонент вектора віднімаються середні значення і далі вони діляться на дисперсію, а після відновлення кожна компонента вектора множиться на дисперсію і додається до середнього значення.
Для генерації компонувань крила слід виділити безліч стислих векторів. І використовувати тільки розтискати частина репликатора, тобто:
де Vc - стиснений вхідний вектор.
3.3.2 Аппроксіматор
Аппроксіматор - це нейронна мережа, яка апроксимує функції аеродинамічних параметрів для крила і являє собою чотиришарову мережу персептронного типу. Перші дві компоненти вхідного вектора аппроксіматора: число Маха і кут атаки. Далі йдуть 17 компоненти вектора, що відповідають за подання компоновки крила в плані і параметрів фюзеляжу, без використання компоненти Y0, яка характеризує розташування крила на фюзеляжі. А після них ідуть компоненти 10-ти незалежних перетинів крила, по 61 значенню в кожному. Кожен вхідний і вихідний вектор нормується за середнім значенням і дисперсії. У цій нейронної мережі дві нелінійних приховані прошарки. Кількість нейронів на кожному шарі:
768768 8
Формула для обчислення виходу по входу:
де V - вхідний вектор,
- матричне множення,
- сігмоідной функція активації.
Вихідний вектор аппроксіматора складається з: і шести службових змінних.
4. Прискорення розрахунків
Нейрони в одному шарі нейронної мережі повністю незалежні один від одного, що дозволяє виконувати процес навчання на паралельній архітектурі. Для отримання прийнятного часу навчання необхідно збільшити обчислювальну потужність в 250-500 разів відносно одного CPU. Для подолання цього бар'єру продуктивності застосовувалася технологія CUDA.
. 1 CUDA
Зростання частот універсальних процесорів уперся в фізичні обмеження і високе енергоспоживання, і збільшення їх продуктивності все частіше відбувається за рахунок розміщення декількох ядер в одному чіпі. Продукція, зараз процесори містять лише до чотирьох ядер (подальше зростання не буде швидким) і вони призначені для звичайних додатків, використовують MIMD - множинний потік команд і даних. Кожне ядро ??працює окремо від інших, виконуючи різні інструкції для різних процесів.
Спеціалізовані векторні можливості (SSE2 і SSE3) для четирехкомпонентних (одинарна точність обчислень з плаваючою точкою) і двокомпонентних (подвійна точність) векторів з'явилися в універсальних процесорах через зрослі вимог графічних додатків, в першу чергу. Саме тому для певних завдань застосування GPU вигідніше, адже вони спочатку зроблені для них.
Отже, перерахуємо основні відмінності між архітектурами CPU і GPU. Ядра CPU створені для виконання одного потоку послідовних інструкцій з максимальною продуктивністю, а GPU проектуються для швидкого виконання великого числа паралельно виконуваних потоків інструкцій. Універсальні процесори оптимізовані для досягнення високої продуктивності єдиного потоку команд, обробного і цілі числа і числа з плаваючою крапкою. При цьому доступ до пам'яті випадковий. У відеочіпів робота проста та розпаралеленого спочатку. Відеочіп приймає на вході групу полігонів, проводить всі необхідні операції, і на виході видає пікселі. Обробка полігонів і пікселів незалежна, їх можна обробляти паралельно, окремо один від одного. Тому, через споконвічно паралельної організації роботи в GPU використовується велика кількість виконавчих блоків, які легко завантажити, на відміну від послідовного потоку інструкцій для CPU. відрізняється від CPU ще й за принципами доступу до пам'яті. У GPU він пов'язаний і легко передбачуваний - якщо з пам'яті читається тексель текстури, то через деякий час прийде час і для сусідніх текселей.
Є безліч відмінностей і в підтримці багатопоточності. CPU виконує 1-2 потоки обчислень на одне процесорне ядро, а відеочипи можуть підтримувати до 1024 потоків на кожен мультипроцесор, яких в чіпі кілька штук. І якщо перемикання з одного потоку на інший для CPU коштує сотні тактів, то GPU перемикає декілька потоків за один такт.