В настоящее время я изучаю алгоритм обучения персептрона и алгоритм кармана.
Я проверил некоторые существующие исходные коды на Java, и большинство из них выглядят примерно так: Perceptron - Github
Что я действительно не понимаю, так это то, почему количество ошибочных классификаций (globalError
в связанном исходном коде) можно посчитать на уровне эпох.Итак, при условии, что у меня есть 100 точек, которые являются линейно разделимыми.
Я начинаю свою первую эпоху и правильно классифицирую свои первые две точки.Теперь я смотрю на свой третий пункт, и классификация не верна.Я обновляю свои веса и устанавливаю счетчик ошибочной классификации на 1. Но, изменяя веса, первые две точки могут фактически не классифицироваться как правильные с моими новыми весами.Так что на самом деле мои новые веса могут привести к 1,2 или 3 ошибкам в моих первых трех пунктах.Разве мне не нужно проверять все свои тренировочные данные на предмет неправильной классификации каждый раз, когда я обновляю свои веса?
Я спрашиваю об этом, потому что я пытаюсь понять, когда обновлять веса в кармане, используя карман.алгоритм.Считаю ли я ошибочные классификации для всех своих тренировочных данных за эпоху или каждый раз, когда обновляю веса?
Не зная точно Python, но глядя на этот пример кармана Python , он выглядит для меня какнеправильная классификация учитывается на уровне эпохи, а не после каждого обновления веса, что для меня было бы противоречиво.