Усі три рівні працюють на тій самій дошці оголошень, що й у практиці. Код генерації
таблиці бери з першої частини зошита без змін — інакше числа не збігатимуться.
Функцію навчити_перцептрон теж бери з практики: писати її заново не треба.
рівень 1Рівень 1 — База
У практиці ми навчали перцептрон із одного-єдиного старту. Перевір обіцянку теореми збіжності: вона стверджує, що на роздільних даних правило зупиниться хоч би з яких ваг ти почав.
- Запусти
навчити_перцептронна тих самих 569 оголошеннях із чотирьох різних стартів:[0, 0],[1, 1],[-1, 1]і[5, -5], зсув усюди0. - Для кожного випиши: скільки епох знадобилось, скільки виправлень було в першій епосі, які кінцеві ваги.
- Для кожного набору кінцевих ваг порахуй, під яким кутом стоїть межа: відношення
-w1 / w2— це нахил прямоїдовідкова = k · ціна.
Зроблено, якщо: є таблиця з чотирьох рядків, у якій остання епоха всюди має нуль
виправлень, кінцеві ваги різні, а нахили -w1 / w2 всі лежать між 1.7 і 2.3 — тобто
прямі різні, але всі проходять у тому самому вузькому проміжку між класами.
рівень 2Рівень 2 — Плюс
Теорема збіжності обіцяє скінченну кількість кроків, але не каже, скільки саме. Оцінка зростає, коли запас між класами меншає. Перевір це експериментом.
- Візьми ті самі 569 оголошень і посунь клас приманок ближче до чесних: заміни ціну
кожної приманки на
ціна + доля * (0.56 * довідкова - ціна), дедоляпробігає значення0.0, 0.2, 0.4, 0.6, 0.8, 0.95. Придоля = 0дані не змінились, придоля = 0.95приманки майже впритул до чесних, але ще з правильного боку. - Для кожного значення
долянавчи перцептрон із нульових ваг і запиши, скільки виправлень він зробив усього (сума по всіх епохах) до зупинки. - Один прогін дуже шумний: кількість виправлень залежить від порядку, у якому
трапляються приклади. Тому для кожної
долязроби 20 прогонів із різним перемішуванням рядків (rng.permutation) і бери середнє. - Побудуй графік: по горизонталі
доля, по вертикалі середня кількість виправлень. Вісьyзроби логарифмічною — інакше остання точка розчавить решту.
Зроблено, якщо: є графік із шести точок, на якому середня кількість виправлень
зростає з наближенням класів і при доля = 0.95 перевищує значення при доля = 0
щонайменше в сто разів, і два-три речення про те, чому дані лишаються роздільними
при будь-якій доля < 1, а робота правила при цьому росте на порядки. Окремо назви,
чому одного прогону тут замало.
рівень 3Рівень 3 — Виклик
У розділі 8 лекції ми зібрали XOR із трьох нейронів, виписавши ваги руками. Зроби те саме для дошки оголошень — і теж руками.
Задача: побудувати з трьох нейронів зі сходинкою класифікатор, який ловить обидва
види приманок — і занижені, і завищені ціни, — на повних 1 100 оголошеннях
(X_усі, y_усі з практики). Одна пряма з цим не впорається, бо шахрайство лежить
по обидва боки від чесних оголошень; смуга з двох прямих — упорається.
- Підбери два нейрони прихованого шару так, щоб
h1спрацьовував на «ціна помітно нижча за довідкову», аh2— на «ціна помітно вища за довідкову». - Вихідний нейрон має реалізувати АБО над
h1іh2— випиши його ваги й зсув. - Порахуй точність усієї конструкції на 1 100 оголошеннях і порівняй із трьома
числами: точністю моделі «усе чесне», точністю
LogisticRegressionіз практики і точністю одного перцептрона, навченого правилом Розенблата на тих самих даних.
Зроблено, якщо: є таблиця чотирьох точностей із реальними числами, ручна конструкція перемагає всі три і написано два-три речення про те, чому правило Розенблата не могло знайти ці ваги само — з посиланням на те, що для прихованих нейронів правильної відповіді ніхто не задає.
Підказки
- У рівні 1 нахил
-w1 / w2має сенс лише тоді, колиw2не нуль. Якщо ваги вийшли такими, що межа вертикальна, — це вже сигнал, що щось не так зі стартом. - У рівні 2 не забудь, що після зсуву цін дані треба перебудувати повністю, а не
дописати колонку: у матриці
Xперша колонка — саме ціна. І ставепохіз великим запасом (кілька тисяч), інакше придоля = 0.95цикл обірветься раніше за збіжність і числа збрешуть. - У рівні 3 «помітно нижча» й «помітно вища» — це два пороги на відношенні
ціна / довідкова. Подивись у практиці, у яких межах це відношення лежить у чесних оголошень, і став пороги трохи ззовні від них. - Нейрон зі сходинкою на порозі відношення виглядає як
w1·ціна + w2·довідкова + b, де відношення ніде явно не рахується. Пороговий нейрон уміє порівнювати ціну з часткою довідкової — саме тому ваги мають різні знаки.