Адудосто – Показать, что корректировка весов приводит к ошибке текущей итерации к 0.5.

Вопрос или проблема

Я пытаюсь решить следующую задачу, но застрял.

Итак, для адебуст $err_t = \frac{\sum_{i=1}^{N}w_i \Pi (h_t(x^{(i)}) \neq t^{(i)})}{\sum_{i=1}^{N}w_i}$

и $\alpha_t = \frac{1}{2}ln(\frac{1-err_t}{err_t})$

Весы для следующей итерации равны $w_i’ = w_i exp(-\alpha_t t^{(i)} h_t(x^{(i)}))$ и это предполагает, что $t$ и $h_t$ принимают значение либо $-1$, либо $+1$.

Мне нужно показать, что ошибка по отношению к новым весам $w_i’$ равна $\frac{1}{2}$. То есть, $err_t’ = \frac{\sum_{i=1}^{N}w_i’ \Pi (h_t(x^{(i)}) \neq t^{(i)})}{\sum_{i=1}^{N}w_i’} = \frac{1}{2}$

То есть мы используем слабого учащегося итерации t и оцениваем его согласно новым весам, которые будут использоваться для обучения $t+1$-го слабого учащегося.

Я упростил это так, что $w_i’=w_i \sqrt{\frac{err_t}{1-err_t}}$, если $w_i$ был правильно классифицирован, и $w_i’=w_i \sqrt{\frac{1-err_t}{err_t}}$, если $w_i$ был классифицирован неправильно. Затем я попытался подставить это в уравнение для $err_t’=\frac{1}{2}$ и получил $\frac{err_t}{1-err_t} \frac{\sum_{i=1}^{N}w_i \Pi (h_t(x^{(i)}) = t^{(i)})}{\sum_{i=1}^{N}w_i \Pi (h_t(x^{(i)}) \neq t^{(i)})} = 1$, но в этот момент я как бы натолкнулся на тупик и теперь я задаюсь вопросом, как можно показать исходный вопрос.

Спасибо за любую помощь!

Вы почти у цели. Количество $err_t/(1-err_t)$ – это именно то, что вам нужно. Может быть легче увидеть, если вы подумаете о $$\sum_{i=1}^N w_i \Pi(h_t(x^{(i)})=t^{(i)})$$ как о $$\sum_{i:\ x^{(i)}\text{ правильно классифицирован}} w_i$$ (просто используя индикаторную функцию, чтобы сократить диапазон суммирования).

Для упрощения давайте определим некоторые переменные следующим образом:

$W_C := \sum_{i=1}^{N}w_i \Pi (h_t(x^{(i)}) = t^{(i)})$

$W_I := \sum_{i=1}^{N}w_i \Pi (h_t(x^{(i)}) \neq t^{(i)})$

Таким образом, $err_t = W_I/(W_C+W_I)$

$a := \sqrt{\frac{err_t}{1-err_t}} = \sqrt{\frac{W_I}{W_C}}$

Теперь для новых весов у нас есть

$W’_C := \sum_{i=1}^{N}w’_i \Pi (h_t(x^{(i)}) = t^{(i)}) = aW_C$

$W’_I := \sum_{i=1}^{N}w’_i \Pi (h_t(x^{(i)}) \neq t^{(i)}) = (1/a)W_I$

Теперь, на финальном этапе:

$err’_t = \frac{W’_I}{W’_I + W’_C} = \frac{(1/a)W_I}{(1/a)W_I + aW_C} \overset{\times a}{=} \frac{W_I}{W_I + a^2W_C} = \frac{W_I}{W_I + \frac{W_I}{W_C}W_C}=\frac{1}{2}$

Ответ или решение

Обоснование того, что корректировка весов в Adaboost приводит к ошибке текущей итерации, равной 0.5

Adaboost (Adaptive Boosting) — это алгоритм, который использует ансамблевый подход для повышения точности классификации через итеративную коррекцию весов. В данной задаче нам нужно установить, что обновление весов после итерации приводит к ошибке в 0.5.

Формулы, используемые в алгоритме

  1. Ошибка текущей итерации (err_t) определяется как:

    [
    errt = \frac{\sum{i=1}^{N}w_i \Pi(ht(x^{(i)}) \neq t^{(i)})}{\sum{i=1}^{N}w_i}
    ]

    где ( w_i ) — веса, ( h_t(x^{(i)}) ) — предсказание текущего слабого классификатора, а ( t^{(i)} ) — истинный класс.

  2. Коэффициент Альфа (α) для текущего слабого классификатора задается как:

    [
    \alpha_t = \frac{1}{2} \ln\left(\frac{1-err_t}{err_t}\right)
    ]

  3. Обновление весов для следующей итерации определяется следующей формулой:

    [
    w_i’ = w_i \cdot \exp(-\alpha_t t^{(i)} h_t(x^{(i)}))
    ]

Обозначения для упрощения

Для упрощения записи мы введем следующие обозначения:

  • ( WC := \sum{i=1}^{N}w_i \Pi(h_t(x^{(i)}) = t^{(i)}) ) — сумма весов правильно классифицированных объектов.
  • ( WI := \sum{i=1}^{N}w_i \Pi(h_t(x^{(i)}) \neq t^{(i)}) ) — сумма весов неправильно классифицированных объектов.

Следовательно, ошибка может быть выражена как:

[
err_t = \frac{W_I}{W_C + W_I}
]

Соотношение весов в следующей итерации

Теперь обновления весов можно выразить в терминах ( W_C ) и ( W_I ):

  • Если объект классифицируется правильно, то:

    [
    w_i’ = w_i \sqrt{\frac{err_t}{1 – err_t}} \text{ (если правильно классифицирован)}
    ]

  • Если объект классифицируется неправильно, то:

    [
    w_i’ = w_i \sqrt{\frac{1 – err_t}{err_t}} \text{ (если неправильно классифицирован)}
    ]

Теперь мы можем рассчитать новые веса:

  • Для правильно классифицированных объектов:

    [
    W’_C = a W_C \quad \text{где}\ a = \sqrt{\frac{err_t}{1 – err_t}} = \sqrt{\frac{W_I}{W_C}}
    ]

  • Для неправильно классифицированных объектов:

    [
    W’_I = \frac{1}{a} W_I \quad \text{где}\ \frac{1}{a} = \sqrt{\frac{1 – err_t}{err_t}} = \sqrt{\frac{W_C}{W_I}}
    ]

Вычисление новой ошибки

Теперь можно выразить новую ошибку:

[
err’_t = \frac{W’_I}{W’_I + W’_C} = \frac{\frac{1}{a} W_I}{\frac{1}{a} W_I + a W_C}
]

Умножая числитель и знаменатель на ( a ):

[
err’_t = \frac{W_I}{W_I + a^2 W_C} = \frac{W_I}{W_I + \frac{W_I}{W_C} W_C} = \frac{1}{2}
]

Таким образом, мы получили соотношение, показывающее, что:

[
err’_t = \frac{1}{2}
]

Заключение

Таким образом, обновление весов в алгоритме Adaboost корректирует оценку ошибки на текущей итерации к значению 0.5. Это критически важно, так как позволяет системе акцентировать усилия на более сложных для классификации объектах в следующих итерациях. Такое поведение делает Adaboost мощным инструментом для построения надежных классификаторов, способных комбинировать результаты множеств слабых классификаторов в один сильный.

Этот процесс способствует не только повышению точности, но и стабилизации результатов, что в свою очередь позволяет эффективно справляться с задачами машинного обучения.

Оцените материал
Добавить комментарий

Капча загружается...