Серия лекций CS231n 2016

Привет, ребята. Добро пожаловать в эту серию постов среднего размера, которые я буду писать в качестве резюме для курса Stanford CS231n по сверточным нейронным сетям (2016). Для простоты и во избежание исторических примеров и достижений в этой серии постов я пропустил первую лекцию, в которой рассказывается об истории сверточных нейронных сетей и компьютерного зрения. Вы можете найти это здесь:

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

То, как компьютеры видят и интерпретируют информацию об изображении, представляет собой матрицу чисел. Итак, скажем, очень простое изображение размером 3 * 4 с 3 значениями пикселей (R, G, B) может быть представлено для подачи на компьютер в виде матрицы 3 * 4 * 3. очевидно, что изображения реального мира намного сложнее и больше, чем 3*4, но идея передачи изображения на компьютер остается прежней: это матрица чисел. И с классификацией изображений наша цель состоит в том, чтобы передать эту матрицу чисел и предсказать метку класса или категорию (капитан Джек Воробей или хомяк).

Теперь есть много способов сделать это. чтобы понять красоту CNN, нам нужно сначала понять недостатки других классификаторов. Подход на основе данных заключается в получении данных об изображениях и ярлыках. Затем, используя эти данные, наш классификатор обучается с помощью машинного обучения, и, наконец, с использованием обученной модели делаются прогнозы. Алгоритмы, такие как ближайший сосед (NN) K ближайших соседей (k-NN), намного проще и проще в реализации, чем CNN. Классификатор ближайших соседей запоминает все обучающие данные, а затем во время тестирования сравнивает входные данные с каждым обучающим примером, чтобы вычислить наиболее подходящее изображение. Ну, никаких реквизитов для угадывания, поскольку размер обучающих данных увеличивает сравнения и, следовательно, время во время прогнозирования также увеличивается (линейно). Точно так же для K-NN большинство голосов делается для всех «k» соседних классов или меток. Один из способов, которым это лучше, чем обычный ближайший сосед, заключается в том, что выбросы k-NN обрабатываются лучше, поскольку пропущенная классифицированная точка данных не окажет большого влияния на прогноз, потому что правильно классифицированные точки данных вокруг него превосходят прогноз.

Если вам интересно, как устанавливается сходство изображений без обучения нейронной сети, ответ — мы используем расстояния L1 или L2 для вычисления сходства. L1 или манхэттенское расстояние просто вычисляет поэлементную разницу между тестовым изображением и матрицей изображения поезда. Затем эти значения складываются, чтобы получить окончательную сумму. если изображения идентичны на 100%, эта сумма будет равна 0. L2 или евклидово расстояние вычисляется путем взятия суммы квадратов разности между значениями двух матриц. Как мы увидим позже, это также станет принципом для функции потерь в нашей CNN (взятие квадрата означает большие потери, которые более жестко наказывают сеть за неправильные прогнозы).

увидев эти методы, мы можем догадаться, являются ли метрики точностью или синхронизацией, эти классификаторы нельзя использовать для решения реальных проблем. Вот где CNN вступают в игру (каламбур полностью предназначен: P). Прелесть нейронных сетей в том, что они похожи на кубики лего. каждый слой может быть полностью/частично соединен со следующим или предыдущим слоем, и мы можем складывать слой за слоем для добавления функциональности. На самом деле для подписи к изображению используйте CNN и RNN вместе.

Теперь мы рассмотрим линейную классификацию и то, как она использует веса и смещение для лучшей классификации изображений. Давайте рассмотрим изображение, которое имеет всего 4 значения пикселя (в основном матрица 2 * 2). Наша линейная классификация зависит от выбора случайной матрицы (весовой матрицы W) для начала и умножения ее на матрицу сглаженного изображения. К этому мы добавляем некоторые значения смещения, и вот оно! Наше первое предсказание того, каким, по мнению классификатора, может быть изображение. Это даст нам матрицу оценок, а самая высокая оценка — это предсказанный класс. Излишне говорить, что это будет очень плохо, и капитан Джек Воробей будет классифицирован как хомяк.

Таким образом, наш линейный классификатор делает это снова и снова для всего набора данных, с каждым разом улучшая прогноз. С геометрической точки зрения все обучающие примеры (изображения) будут точками в 12-мерном пространстве (поскольку у нас есть 4 пикселя, каждый из которых имеет 3 значения (R, G, B), поэтому 4 * 3). И оценки, которые мы получаем, являются градиентами по некоторой линии, которой присваивается нулевая оценка для этого конкретного класса или метки. Следовательно, наши линейные классификаторы на самом деле изучают, как выглядит изображение, а не запоминают как классификатор ближайшего соседа. Однако один недостаток заключается в том, что линейные классификаторы плохо локализуют формы и текстуры. Они хороши с цветами и пикселями, но не с формами. Итак, для синего хомяка и капитана Джека Воробья в синем костюме хомяка это будет довольно запутанно (снова).

Наконец, возвращаясь к нашему линейному классификатору, где он классифицировал кошку как собаку на картинке, нам нужна некоторая математическая функция, чтобы минимизировать разницу между фактическими и прогнозируемыми значениями (ФУНКЦИЯ ПОТЕРИ). На основе этого будет выполнена ОПТИМИЗАЦИЯ для обновления весов, чтобы сделать модель наиболее общей, и, наконец, мы коснемся Конв. сетей. Обо всем этом будет в следующем посте. Спасибо за прочтение, все картинки в этом посте взяты с http://cs231n.stanford.edu/syllabus.html.