Я разработал программу обработки изображений, которая идентифицирует то, что цифре присваивается образ чисел. Каждое изображение было 27x27 пикселей = 729 пикселей. Я беру каждое значение R, G и B, что означает, что у меня есть 2187 переменных из каждого изображения (+1 для перехвата = всего 2188).как обрабатывать большое количество функций машинное обучение
Я использовал формулу ниже градиентного спуска:
Repeat {
θj = θj−α/m∑(hθ(x)−y)xj
}
Где θj
является коэффициент по переменной J; α
- скорость обучения; hθ(x)
- гипотеза; y
- действительная величина, а xj
- значение переменной j. m
- количество обучающих наборов. hθ(x)
, y
предназначены для каждого набора тренировок (т. Е. Для этого является знак суммирования). Далее гипотеза определяется как:
hθ(x) = 1/(1+ e^-z)
z= θo + θ1X1+θ2X2 +θ3X3...θnXn
С этим и 3000 учебных изображений, я был в состоянии обучать свою программу в течение чуть более часа и при испытании на поперечном наборе проверки, он был в состоянии определить правильный изображение ~ 67% времени.
Я хотел улучшить, что таким образом я решил попытаться полином степени 2.
Однако число переменных подскакивает от 2188 до 2,394,766 на изображение! Мне требуется час, чтобы сделать 1 шаг градиентного спуска.
Итак, мой вопрос в том, как это огромное количество переменных обрабатывается машинным обучением? С одной стороны, у меня недостаточно места, чтобы даже удерживать столько переменных для каждого набора тренировок. С другой стороны, я в настоящее время храню 2188 переменных на один образец обучения, но мне нужно выполнить O (n^2), чтобы получить значения каждой переменной, умноженной на другую переменную (то есть значения полинома до степени 2).
Так что любые предложения/советы приветствуются.
Вы должны взглянуть на стохастические (мини-партии) градиентного спуска по этому вопросу. –