Зниження ваги нейронної мережі

Чи існують якісь алгоритми/методи прийняття навченої моделі та зменшення її кількості ваг з якомога меншим негативним ефектом до її остаточної продуктивності?

Скажімо, у мене дуже велика (занадто велика) модель, яка містить X вагових коефіцієнтів, і я хочу зменшити її, щоб мати 0,9 * X вагові коефіцієнти з якомога меншим пошкодженням остаточної продуктивності (або, можливо, навіть найвищого можливого виграшу в деяких випадках ).

Зменшення ваги відбувається або шляхом зміни базової архітектури моделі та видалення шарів, або за рахунок зменшення глибини об’єкта у згаданих шарах. Очевидно, що після зменшення буде потрібно дещо відрегулювати решту ваг.

машинне

2 відповіді 2

Ви можете перевірити:

І нещодавніша стаття на цю тему:

Однак мені не вдалося знайти реалізацію цих двох. Тож вам потрібно буде реалізувати це самостійно.

Прочитавши деякі корисні коментарі та відповіді, я самостійно прочитав цілеспрямоване читання.

Як зазначалося в інших відповідях, цей процес називається Обрізка і, як і багато інших ідей у ​​галузі нейронної мережі, це не нове. З того, що я можу сказати, це бере свій початок у роботі LeCun 1990 року з милою "Оптимальний збиток мозку" (У статті наводяться деякі попередні роботи з мінімізації мережі з кінця 80-х, але я не зайшов так далеко в кролячу нору). Основною ідеєю було наблизити зміну втрат, спричинених видаленням карти об’єктів, та мінімізувати її:

Де C - функція витрат, D - наш набір даних (з х зразків та y міток), а W - ваги моделі (W0 - вихідні ваги). hi - результат, отриманий з параметра i, який може бути як повною картою об'єктів у шарах згортки, так і окремим нейроном у щільних шарах.

Більше останні роботи на цю тему включають:

У цій роботі вони пропонують наступний ітеративний процес обрізки CNN ненажерливо:

Вони представляють і перевіряють кілька критеріїв процесу обрізки. Першим і найбільш природним для використання є обрізка оракула, який бажає мінімізувати різницю в точності між повноцінними та обрізаними моделями. Однак це дуже дорого обчислювати, вимагаючи || W0 || оцінки на наборі даних тренінгу. Більш евристичні критерії, які є набагато ефективнішими в обчисленні:

  • Мінімальна вага - Припускаючи, що згорткове ядро ​​з низькою нормою L2 виявляє менш важливі ознаки, ніж ті, що мають високу норму.
  • Активація - Припускаючи, що значення активації карти об’єктів є меншим для менш імпотентних об’єктів.
  • Збільшення інформації - IG (y | x) = H (x) + H (y) - H (x, y), де H - ентропія.
  • Розширення Тейлора - На основі розширення Тейлора ми безпосередньо наближаємо зміну функції втрат від видалення певного параметра.

2016 - Динамічна хірургія мережі для ефективних DNN На відміну від попередніх методів, які виконують це завдання жадібно, вони включають сплайсинг з'єднань у весь процес, щоб уникнути неправильної обрізки та зробити це як постійне обслуговування мережі. За допомогою цього методу, без будь-якої втрати точності, вони ефективно стиснути кількість параметрів у LeNet-5 та AlexNet у коефіцієнт 108 × та 17,7 × відповідно.

Цифри та багато з того, що я написав, базується на оригінальних роботах. Інше корисне пояснення можна знайти за таким посиланням: Обрізання глибоких нейронних мереж, щоб зробити їх швидкими та маленькими.

Хорошим інструментом для модифікації навчених моделей Кераса є Керас-хірург. В даний час це дозволяє прості методи: видаляти нейрони/канали зі шарів, видаляти шари, вставляти шари та замінювати шари.

Я не знайшов жодного методу для фактичного процесу обрізки (критерії випробування, оптимізація тощо)