Нейронна мережа для множинної регресії на виході


14

У мене є набір даних, що містить 34 колонки введення та 8 вихідних стовпців. Один із способів вирішити проблему - взяти 34 входи та побудувати індивідуальну модель регресії для кожного вихідного стовпчика. Мені цікаво, чи можна вирішити цю проблему, використовуючи лише одну модель, особливо за допомогою нейронної мережі.

Я використовував багатошаровий персептрон, але для цього потрібні кілька моделей, як і лінійна регресія. Чи може послідовність навчання до послідовності 1 бути життєздатним варіантом? Я спробував використовувати TensorFlow, схоже, він не може обробляти знаки з плаванням.

Будь-яка пропозиція вирішити цю проблему за допомогою лише однієї єдиної моделі, спеціально за допомогою нейронної мережі, буде вдячна.

  1. Ілля Суцкевер, Oriol Vinyals, & Quoc V. Le (2014). Послідовність навчання послідовності за допомогою нейронних мереж. Удосконалення систем нейронної обробки інформації , 27. ( pdf )

Що проблема?
TEG

2
(Для будь-яких потенційних близьких виборців. Це питання не програмування. Це було б поза темою щодо переповнення стека .)
gung - Відновити Моніку

Чи можете ви тут уточнити варіант "послідовність до послідовності"? Я не знаю, чи це буде знайоме людям, які працюють без мереж, але це не мені.
gung - Відновіть Моніку

Послідовність моделювання послідовності за допомогою RNN. paper.nips.cc/paper/…
sjishan

Ви можете спробувати MultiOutputRegressor (). Це спрацьовує для
подібних

Відповіді:


7

Нейронна мережа з кількома результатами приймає форму Якщо ваш результат має розмірність , то матиме розмір .

Y=γ+V1Γ1+ϵV1=a(γ2+V2Γ2)V2=a(γ3+V3Γ3)VL1=a(γL+XΓL)
N×8[γ1,Γ1](pV1+1)×8

Що означає, що ви припускаєте, що кожен результат поділяє ВСІ параметри в прихованих шарах і має лише різні параметри для взяття верхньої похідної змінної та відношення її до результату.

Це реалістичне припущення для вашого контексту?


5

Спочатку я подумав, що коментар generic_user був стоп-шоу, але я просто зрозумів, що це не так:

Якщо я треную d різних мереж на d різних вихідних даних, то кожна з них буде підходити до цього виміру, не враховуючи інших.

Але якщо я треную одну мережу з d виходами і використовую всі виходи для зворотного розповсюдження, то кожна вага в кожному шарі мережі буде відрегульована так, щоб усі d виходи були більш точними.

Тобто: кожен мережевий параметр буде коригуватись сумою градієнтів (як змінюється кожен вихід із " хитанням " у цьому параметрі) таким чином, що коригування його у вибраному напрямку вгору або вниз призводить до більш точного виводу в цілому - навіть якщо коригувати значення Вага таким чином призводить до того, що деякі розміри вихідних даних є менш точними.

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

Можливо, ви зможете зробити краще, ніж повністю пов'язана мережа, змусивши вашу архітектуру відображати будь-які відомі відносини у виході, так само як глибокі мережі краще, ніж дрібні, використовуючи "композиційні" зв'язки між входами .


Багатоваріантна регресія передбачає наявність деякої (невідомої) матриці коваріації, яка пов'язує ці цільові змінні між собою. Ви припускаєте, що достатньо лише одного щільного шару для зйомки цієї коваріації без необхідності явного включення прихованих шарів?
thecity2

Я припускаю, що приховані шари повинні захоплювати частину цієї коваріації. Один тільки щільний вихідний шар - це лише купа паралельних лінійних регресорів через функцію активації. Не може бути встановлено взаємозв'язок між виходами, коли не існує прихованого шару, щоб вони взаємно налаштовувались і приймали як вхід / передачу як вхід до інших вихідних вузлів.
Павло Комаров

0

Ви можете зробити це лише однією нейронною мережею. Але ваша нейронна мережа повинна виглядати приблизно так:
вхідний шар: 34 вузли (по одному на вхідний стовпець)
вихідний шар: 8 вузлів (по одному на вихідний стовпець)

Ви можете додати стільки і великих розмірів, скільки захованих шарів ви хочете в нейронну мережу. Таким чином, Нейронна мережа виводить 8 передбачуваних значень і кожне значення буде різною регресією входів.


який пакет мов так підтримує ??
Arpit Sisodia

0

Мені було цікаво те саме; ось мої ідеї:

Я припускаю, що якщо результати мають загальні приховані схеми, то навчання може отримати користь від одночасного вивчення регресії для всіх результатів.

Було б цікаво спробувати архітектуру, де ви будуєте нейронну мережу для кожного виводу, але всі нейронні мережі ділять деякі шари (наприклад, перші половини шарів). Тоді ви могли б тренувати кожну нейронну мережу одночасно: всередині навчального циклу кожна нейромережа тренується один крок (з однією партією) послідовно.

Це було б аналогічно передачі знань, але з тією різницею, що при передачі знань кожна нейромережа повністю навчається, перш ніж використовувати частину її для тренування іншої нейронної мережі.

Надіюсь, хтось раніше про це думав, але я не маю на це посилання.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.