Softmax регрессия

Это вторая часть из пяти статей:

  1. Обучение архитектурного классификатора: мотивация
  2. Обучение архитектурного классификатора: регрессия Softmax
  3. Обучение архитектурного классификатора: глубокие нейронные сети
  4. Обучение архитектурного классификатора: сверточные сети
  5. Обучение архитектурного классификатора: трансферное обучение

Личная побочная цель этого проекта - познакомиться с фреймворками глубокого обучения, поэтому, хотя sklearn и тому подобное могут иметь модуль логистической регрессии, я буду делать это вручную в TensorFlow. Вы также увидите tf.slim и Keras.

Работая с концепцией, что лучше начать с более простой и понятной модели и добавлять сложность только в случае необходимости, я начну с попытки простой логистической регрессии / регрессии softmax. Короче говоря, цель логистической регрессии - сделать прогноз, взяв входное изображение и умножив все его характеристики (в данном случае пиксели) на набор положительных или отрицательных весов, а затем добавив немного смещения.

Это должно звучать знакомо любому, имеющему некоторый математический опыт, это уравнение линии: y = mx + b, за исключением того, что в этом случае наша линия существует в ОЧЕНЬ многомерном пространстве (m, x и b являются многомерными матрицами вместо скаляров, которые вы использовали в школе). Это имеет некоторый интуитивный смысл, если учесть, что мы пытаемся провести линию или гиперплоскость в пространстве, которая может отделить изображения одного класса от изображений другого.

Эти веса представляют собой изученную вероятность того, что пиксель положительно или отрицательно повлияет на принадлежность изображения к определенному классу в целом. Таким образом, значение пикселя, умноженное на изученный вес, дает своего рода «голос» за окончательный результат. Затем с помощью функции softmax эти голоса преобразуются в вероятности того, что изображение принадлежит заданному классу. Хотя я использовал термины логистический и softmax как синонимы, это основное различие между логистической регрессией и softmax, softmax выполняет то же самое, что и логистика, но в нескольких классах.

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

Это простая модель, поэтому я позволю ноутбуку говорить здесь:

В итоге, мы можем добиться большего. В лучшем случае точность даже после более длительных периодов обучения составила около 57%. Вот тензорный график точности для 5000 эпох:

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

Так что, если мы расширим этот классификатор одного нейрона до глубокой нейронной сети? Это будет в моем следующем посте:

Далее: архитектурный классификатор - глубокие нейронные сети

Https://upscri.be/hackernoon/