Как стать автором
Поиск
Написать публикацию
Обновить

Комментарии 5

как выбирать, сколько итераций бустинга делать? В примере одну, а на деле? И не переборщить, чтоб не было переобучения.

Есть несколько вариантов. Можно задать максимальное число шагов. По их прошествии алгоритм смотрит, на каком из предыдущих шагов можно было уже закончить на самом деле, когда погрешность была меньше (да, так бывает, что лучший скор проскакивается). Либо можно отложить валидационную выборку и ориентироваться по ней. Если скор на ней не улучшается, а ухудшается, причём стабильно, значит мы проскочили минимум и нужно остановиться. В общих чертах как-то так.

А в целом как-раз то, что в бустинге отдельные деревья не глубокие, а то и вообще "пеньки", как-раз и уберегает в какой-то степени от переобучения.

Чтобы не было проблемы переобучения, помогает переписывание некоторых базовых функций: активации и нормализации. Через добавление в них флуктуации, которая масштабируется относительно сигнала.

В этом случае модель ни когда не сходится к идеальному решению (его не существует), и всегда будет оставаться некоторый шум, что заставляет модель при обучении искать обобщающий результат. Этот подход, позволил избавиться от проблемы переобучения, так как в итоге она будет колебаться вокруг маленького шума, который не даёт скатиться к переобучению.

Флуктуации - это естественный процесс, который опирается на теорию хаоса. При этом результат остаётся стабильным и качество обучения возрастает.

Я бы расширил эту тему разделив подобные предсказания на три группы:

1) базовая -ошибка предсказания на уровне нейронов, это наши веса

2) локальная ошибка предсказания, это как раз одна модель predict coding

3) глобальная ошибка предсказания , это то что описано, тот же RL

Смысл в том, что на каждом уровне считается своя ошибка. Глобальная, корректировки модель и так вниз по иерархии. Это как делает мозг. Химическая коррекция на уровне нейрона, локальная на уровне слоя VI неокортекса в каждой области, и глобальная базальным гаеглиями. Последняя опирается на задачу поддержки гомеостаза организма.

В случае выше, физиологический гомеостаз заменяется на понятие наших целей (что мы хотим получить в качестве результата модели).

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

Например у нас архитектура из трёх моделей. Глобальная ошибка корректирует все локальные модели исходя из глобальной ошибки. Но что, если из этих трёх моделей, одна плохо предсказала, но в целом глобальная ошибка снизилась? В этом случае глобальная ошибка, усилит проблему локальной модели, у которой ошибка предсказания увеличилась. В этом случае глобальное подкрепление ее усилит.

Например, условно архитектура из 3ех моделей:

Модель 1: локальная ошибка снизилась -1

Модель 2: локальная ошибка выросла +1

Модель 3: локальная ошибка снизилась -3.

Глобальная допустим показала, что ошибка снизилась. И в целом мы корректируем веса все три модели, с учётом положительной динамики уменьшения ошибки. В этом случае, у модели 2 ошибка вырастет сильнее.

На самом деле, надо учитывать локальные ошибки предсказания так же. Абстрактно:

Err_локальная*Err_глобальная

Чтобы каждая вносила свой вес.

Как это сделать для локальных моделей? Это уже давно изучено : ошибка предсказания predict Coding.

Я сейчас, когда связал эти глобальную и локальную ошибки, это ускорило обучение архитектуры. Так как ошибки разного уровня вносят свой вклад в общую корректирующую ошибку.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий