Як отримати постійний вихід з нейронної мережі в реальному значенні?


14

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

Мої запитання:

1. Should I still scale the input features using feature scaling? What range?
2. What transformation function should I use in place of the sigmoid?

Я хочу спочатку реалізувати його PyBrain, який описує ці типи шарів .

Тому я думаю, що для початку у мене повинні бути 3 шари (вхідний, прихований та вихідний), які є всіма лінійними шарами? Це розумний спосіб? Або ж я міг би "розтягнути" сигмоподібну функцію в межах від 5 до 5?


1
Звичайно, ви можете використовувати сигмоїд . Наприклад, почніть з логістичної функції, помножте на 10, відніміть 5 ...[,][5,5]
cbeleites незадоволений SX

Чи є певна причина, що ви уникаєте використання двох прихованих шарів? Це, здавалося б, було найпростішим способом досягти отримання реального значення постійного виводу з нейронної мережі. "Будь-яка функція може бути наближена до довільної точності мережею з двома прихованими шарами" (згадується в примітках з тексту слайду 26 машинного навчання Мітчелла: cs.cmu.edu/afs/cs.cmu.edu/project/theo-20/ www / mlbook / ch4.pdf )
Кріс Сімокат

@ChrisSimokat: Ні, але більшість того, що я читав до цього часу, говорить про один прихований шар як розумний вихідний пункт. Чи може одна мережа прихованого шару не наближати жодну функцію?
Користувач

1
@ChrisSimokat: Можливо, мені чогось не вистачає, але я думав, що один прихований шар не дорівнює "одношаровому перцептрону", ні?
Користувач

1
Ні, ти нічого не пропускаєш, я просто, мабуть, недостатньо уважно читав про це.
Кріс Сімокат

Відповіді:


12

1 . Чи варто все-таки масштабувати функції введення за допомогою масштабування функцій? Який діапазон?

Масштабування нічого не погіршує. Прочитайте цю відповідь з нейромережі Шарле FAQ: Тема: Чи слід нормалізувати / стандартизувати / змінити масштаб даних? .

2 . Яку функцію перетворення я повинен використовувати замість сигмоїди?

Ви можете використовувати логістичний сигмоїд або тан як функцію активації. Це не має значення. Вам не доведеться змінювати алгоритм навчання. Вам просто потрібно масштабувати результати своєї навчальної програми до діапазону функції активації вихідного шару ( або ), і коли ви тренували свою мережу, ви повинні масштабувати результат своєї мережа до[0,1][1,1][5,5] . Вам дійсно нічого іншого не потрібно змінювати.


Який правильний спосіб масштабувати вихід нейронної мережі до діапазону [-5,5]?
Користувач

3
e[a,b][c,d]eaba(dc)+c

2
Але оскільки сигмоїд нелінійний, при рівномірному відборі розподілу значення сигмоїду ми, мабуть, отримаємо щось близьке до 1 або близьке до 0. Що означає, що ми повинні навчитися нашій мережі вибирати значення в середині більш ретельно. Чи сигмоїд + масштабування справді хороший вибір?
Smarty77

0

Відмова від відповідальності: представлений підхід не є можливим для постійних значень, але я вважаю, що він має певну вагу при прийнятті рішень для проекту Smarty77 наводить хороший момент щодо використання масштабованої сигмоїдної функції. За своєю суттю сигмоїдна функція створює ймовірність, яка описує коефіцієнт успішності вибірки (тобто 95 із 100 фотографій із цими ознаками успішно «собачі»). Описаний кінцевий результат є двійковим, і навчання, використовуючи «бінарну перехресну ентропію», описує процес поділу діаметрально протилежних результатів, який по суті відштовхує результати в середньому діапазоні. Континуум виходу є лише для масштабування на основі кількості зразків (тобто результат 0,9761 означає, що 9761 із 10000 зразків, що показують ті чи подібні тріати, є "собакою"), але кожен результат сам по собі все-таки повинен вважатися двійковим, а не довільно детальним. Таким чином, його не слід помиляти і застосовувати, оскільки це реальні цифри, і тут вони не можуть бути застосовані. Хоча я не впевнений у використанні мережі, я б нормалізував вихідний вектор wrt сам. Це можна зробити за допомогою softmax. Для цього також знадобиться 11 лінійних виходів (бункерів) з мережі (по одному на кожен вихід -5 до +5), по одному для кожного класу. Це дасть значення впевненості, що будь-який "смітник" є правильною відповіддю. Цю архітектуру можна було б відстежувати за допомогою гарячого кодування, при цьому 1 вказує правильний бункер. Результат інтерпретується потім таким чином, як жадібна стратегія чи ймовірнісний вибір. Однак, щоб переробити її на суцільну змінну, впевненість кожного індексу може бути використана як вага для розміщення маркера на рядковій лінії (аналогічно поведінці сигмоподібної одиниці), але це також підкреслює основне питання: якщо мережа досить впевнена, результат -2 або +3, але абсолютно впевнений, що це не інше, чи є +1 життєздатним результатом? Спасибі за вашу увагу. Удачі у вашому проекті.

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