Я реализовал Алгоритм обучения Перцептрона в Python, как показано ниже. Даже с 500 000 итераций он все равно не сходится.Почему Алгоритм обучения Перцептрону не сходится?
У меня есть матрица данных обучения X с целевым вектором Y и весовой вектор w для оптимизации.
Мое правило обновление:
while(exist_mistakes):
# dot product to check for mistakes
output = [np.sign(np.dot(X[i], w)) == Y[i] for i in range(0, len(X))]
# find index of mistake. (choose randomly in order to avoid repeating same index.)
n = random.randint(0, len(X)-1)
while(output[n]): # if output is true here, choose again
n = random.randint(0, len(X)-1)
# once we have found a mistake, update
w = w + Y[n]*X[n]
Является ли это так? Или почему он не сходится даже после 500 000 итераций?
Хотелось бы, чтобы я мог это доказать, но для любого распознавателя должно быть бесконечное количество целей, которые невозможно обучить (или Курт Гёдель будет иметь какую-то заднюю педаль). – msw
только боковое примечание - случайная выборка из примера с кратким рассмотрением крайне неэффективна, вы должны просто перебирать все примеры и обновлять каждую классификацию. – lejlot
В вашем правиле обновления персептрона также отсутствует параметр скорости обучения, который может повлиять на конвергенцию весов. – bogatron