Чому використання псевдо-маркування нетривіально впливає на результати?


19

Я розглядав напівконтрольовані методи навчання і натрапив на поняття "псевдо-маркування".

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

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

Межі прийняття рішень методами напівнагляду

Зображення з Wikimedia Commons від Techerin CC BY-SA 3.0

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

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

Чи правильно я вважаю, що пояснення, втілене діаграмою, бракує? Або щось мені не вистачає? Якщо немає, то є користь від псевдо-міток, враховуючи попередньо перенавчання рішення кордону має ідеальну точність по порівнянні з псевдо-лейбл?

Відповіді:


16

Псевдо-маркування не працює над заданою іграшковою проблемою

Олівер та ін. (2018 р.) Оцінювали різні алгоритми навчання з напівконтролем. На їх першому малюнку показано, як псевдомаркування (та інші методи) виконують ту саму проблему з іграшкою, що і у вашому запитанні (називається набором даних "двомісячні"):

введіть тут опис зображення

Сюжет показує мічені та не марковані точки даних, а також межі прийняття рішень, отримані після навчання нейронної мережі, використовуючи різні методи напівонагляду. Як ви підозрювали, псевдо-маркування в цій ситуації не працює добре. Вони кажуть, що псевдомаркування "є простим евристичним, який широко використовується на практиці, ймовірно, через його простоту та загальність". Але: "Хоча інтуїтивно зрозуміла, вона, тим не менш, може давати неправильні результати, коли функція прогнозування створює нецільові цілі для [неозначених даних], як показано на рис. 1."

Чому і коли працює псевдо-маркування?

Псевдо-маркування було введено Lee (2013), тож ви можете знайти більше деталей там.

Припущення про кластер

Теоретичне обгрунтування, яке дав Лі для псевдомаркування, полягає в тому, що воно схоже на регуляризацію ентропії. Регуляризація ентропії (Grandvalet та Bengio 2005) - це ще одна напівпідконтрольна методика навчання, яка спонукає класифікатора робити впевнені прогнози щодо не маркованих даних. Наприклад, ми вважаємо за краще, щоб незазначеній точці було присвоєно високу ймовірність перебування в певному класі, а не дифузні ймовірності, поширювані на кілька класів. Мета полягає в тому, щоб скористатися припущенням, що дані кластеризуються відповідно до класу (називається "кластерним припущенням" в навчанні з наглядом). Отже, точки поблизу мають однаковий клас, а точки в різних класах є більш широко відокремленими, так що справжні межі рішення проходять через області низької щільності вхідного простору.

Чому псевдо-маркування може бути невдалим

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

Де це працює

Лі (2013) показав, що псевдо-маркування може допомогти у наборі даних MNIST (зі 100-3000 міченими прикладами). На рис. 1 цього документу ви бачите, що нейронна сітка, що навчається на 600 примірниках (без жодного напівконтрольованого навчання), вже може відновити структуру кластерів серед класів. Здається, що псевдо-маркування потім допомагає вдосконалити структуру. Зауважте, що це на відміну від двомісячного прикладу, коли декількох мічених точок було недостатньо для вивчення правильних кластерів.

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

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

Грандватлет і Бенджо (2005) повідомили, що псевдо-маркування перебуває під наглядом на навчанні наборів даних CIFAR-10 і SVHN (з прикладами мічених 4000 і 1000 відповідно). Як зазначено вище, це набагато більше мічених даних, ніж 6 мічених точок у двомісячній проблемі.

Список літератури

  • Грандвалет і Бенджо (2005) . Напівконтрольне навчання методом мінімізації ентропії.

  • Лі (2013) . Псевдо-мітка: простий та ефективний напівконтрольований метод навчання для глибоких нейронних мереж.

  • Олівер та ін. (2018) . Реалістичне оцінювання напівконтрольованих алгоритмів навчання.


5

Що ви, можливо, не помічаєте, як працює самопідготовка:

  1. Це ітеративний, а не одноразовий.

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

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

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

Існують також інші алгоритми, які є більш потужними, якщо ви можете їх використовувати. Я вважаю, що ви описуєте, це самопідготовка, яку легко кодувати, але ви використовуєте єдиний класифікатор, який повторно переглядає ту саму інформацію. Для спільного тренінгу використовуються кілька класифікаторів, які кожен розглядають різну інформацію для кожної точки. (Це дещо аналогічно випадковим лісам.) Існують також інші напівнаглядові методи - такі, які явно кластеризують - хоча жодна загальна «це завжди працює, і це переможець».

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

Найпопулярнішим моментом, коли я шукаю огляди навчальних досліджень на напівконтрольній основі, є: Напівконтрольне вивчення літератури з 2008 року. Це ще століття тому, комп'ютерне, але воно говорить про те, що я тут згадував.

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

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

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

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

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


2
Чи можете ви розширити, на яких типах класифікаторів / ситуацій він би працював? Я розумію, що більшість класифікаторів, які працюють на подібних показаних даних, полягають у тому, що саме точки, далекі від межі прийняття рішення (проти близьких до відомих точок), отримають високу впевненість, тому ці дистальні хвости будуть впевнено неправильно класифіковані у приклад. (Крім того, будь-які посилання / подальші читання, на які ви могли б вказувати щодо ефективного використання псевдоматеріалів та пов'язаних з ними методів, будуть вдячні.)
RM

@RM Відредаговано. Як це?
Уейн

1

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

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

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

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

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

Перегляньте один, бананоподібні дані

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

Приклад другий, 2D нормально розподілені дані] =

Код для прикладу 1 (приклад 2 досить схожий, що я тут не дублюю):

import numpy as np
from sklearn.ensemble import RandomForestClassifier
import matplotlib.pyplot as plt
import seaborn

np.random.seed(2018-10-1)
N = 1000

_x = np.linspace(0, np.pi, num=N)
x0 = np.array([_x, np.sin(_x)]).T
x1 = -1 * x0 + [np.pi / 2, 0]

scale = 0.15
x0 += np.random.normal(scale=scale, size=(N, 2))
x1 += np.random.normal(scale=scale, size=(N, 2))

X = np.vstack([x0, x1])

proto_0 = np.array([[0], [0]]).T # the single "labeled" 0
proto_1 = np.array([[np.pi / 2], [0]]).T # the single "labeled" 1

model = RandomForestClassifier()
model.fit(np.vstack([proto_0, proto_1]), np.array([0, 1]))
for itercount in range(100):
    labels = model.predict_proba(X)[:, 0]
    labels += (np.random.random(labels.size) - 0.5) / 10 # add some noise
    labels = labels > 0.5
    model = RandomForestClassifier()
    model.fit(X, labels)

f, axs = plt.subplots(1, 2, squeeze=True, figsize=(10, 5))

axs[0].plot(x0[:, 0], x0[:, 1], '.', alpha=0.25, label='unlabeled x0')
axs[0].plot(proto_0[:, 0], proto_0[:, 1], 'o', color='royalblue', markersize=10, label='labeled x0')
axs[0].plot(x1[:, 0], x1[:, 1], '.', alpha=0.25, label='unlabeled x1')
axs[0].plot(proto_1[:, 0], proto_1[:, 1], 'o', color='coral', markersize=10, label='labeled x1')
axs[0].legend()

axs[1].plot(X[~labels, 0], X[~labels, 1], '.', alpha=0.25, label='predicted class 0')
axs[1].plot(X[labels, 0], X[labels, 1], '.', alpha=0.25, label='predicted class 1')
axs[1].plot([np.pi / 4] * 2, [-1.5, 1.5], 'k--', label='halfway between labeled data')
axs[1].legend()
plt.show()

1

Ось моя здогадка (я теж мало знаю про цю тему, просто хотів додати свої два центи до цієї дискусії).

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

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

Що я маю на увазі, вам потрібно зробити це:

labelleddataclusteringclassification

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

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

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

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

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