Поговорим о точности ранга 1 и ранга 5.

искусственный интеллект

С нашей точки зрения, компьютер — это хорошо подогнанная, точно работающая машина, которая работает строго по инструкциям, данным программистом. Несмотря на то, что после запуска продукта часто возникают непонятные вопросы, мы обычно проверяем программы, которые не идеальны, и не принимаем это как должное. Поскольку мы считаем, что если программа будет тщательно разработана и учтены всевозможные непредвиденные обстоятельства, эта проблема неопределенности будет устранена.

Однако когда дело доходит до машинного обучения, особенно глубокого обучения, многие результаты предоставляются в виде вероятностей. Возьмем в качестве примера классификацию изображений. Обычно модель предсказывает вероятность того, что изображение принадлежит к каждой категории, а не напрямую дает определенный результат. Это как синоптик предсказывает завтрашнюю погоду: вероятность солнечного дня больше или меньше, а вероятность дождя больше или меньше. Подсчитано, что если прогноз погоды будет таким, многие люди сойдут с ума. Вопрос в том, если прогноз погоды говорит, что завтра будет солнечно, обязательно ли завтра будет солнечно? На самом деле это все еще вопрос вероятности. Хотя у нас достаточно данных о погоде, и прогнозы погоды становятся все более и более точными, мы все же не можем гарантировать, что они будут точными каждый раз.

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

Используя модель, обученную на наборе данных CIFAR-10 для вывода, вероятность каждой категории выглядит следующим образом:

Среди них вероятность категории Лягушка наибольшая, и мы думаем, что категория, к которой относится эта картинка, — это Лягушка.

Метод расчета точности модели также очень прост:

  • Шаг № 1: Рассчитайте вероятность метки класса для каждого входного изображения в наборе данных.
  • Шаг № 2: Определите, равна ли истинная метка предсказанной метке класса с наибольшей вероятностью.
  • Шаг № 3: Подсчитайте, сколько раз шаг № 2 верен, затем разделите на общее количество тестовых изображений.

Эта мера также называется точностью ранга 1, что также является очень интуитивной мерой. Однако почти все недавние работы по моделям машинного обучения, оцененные в наборе данных ImageNet, дают точность не только 1-го, но и 5-го ранга.

Как следует из названия, точность ранга 5 выбирает 5 категорий с наибольшей вероятностью, и пока одна из этих 5 категорий совпадает с истинной меткой, результат прогноза верен. Точность ранга 5 рассчитывается следующим образом:

  • Шаг № 1: Рассчитайте вероятность метки класса для каждого входного изображения в наборе данных.
  • Шаг № 2: Отсортируйте вероятности предсказанных меток классов в порядке убывания.
  • Шаг № 3: Определите, присутствует ли истинная метка в первых 5 предсказанных метках шага № 2.
  • Шаг № 4: подсчитайте, сколько раз шаг № 3 верен, затем разделите на общее количество тестовых изображений.

Кодовая реализация rank-1 и rank-5 тоже очень проста:

def rank5_accuracy(preds, labels):
  # initialize the rank-1 and rank-5 accuracies
  rank1 = 0
  rank5 = 0

  # loop over the predictions and ground-truth labels
  for (p, gt) in zip(preds, labels):
    # sort the probabilities by their index in descending
    # order so that the more confident guesses are at the
    # front of the list
    p = np.argsort(p)[::-1]

    if gt in p[:5]:
      rank5 += 1

    if gt == p[0]:
      rank1 +=1

  # compute the final rank-1 and rank-5 accuracies
  rank1 /= float(len(labels))
  rank5 /= float(len(labels))

  return (rank1, rank5)

Некоторые друзья могут подумать, что это машинное обучение слишком ненадежно! Даже если вы не можете дать точный результат, вы также можете дать 5 неоднозначных ответов. В небольшом наборе данных, таком как CIFAR-10, из-за небольшого количества общих категорий немного глупо подсчитывать коэффициент точности ранга 5, но, учитывая крупномасштабный набор данных, такой как ImageNet, существуют тысячи категорий. некоторые более мелкие категории, такие как следующие две картинки:

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

В идеале точность ранга 1 должна увеличиваться вместе с точностью ранга 5, но в сложных наборах данных это не всегда так. Поэтому мы также проверяем точность ранга 5, чтобы убедиться, что наша сеть все еще «обучается», когда точность ранга 1 стагнирует.

В приведенных выше примерах есть полные коды. Нажмите, чтобы прочитать исходный текст и перейти к примеру кода, который я создал на github.

Кроме того, я читаю книгу «Глубокое обучение компьютерному зрению с помощью Python», и, отвечая на ключевое слово «компьютерное зрение» в фоновом режиме публичного аккаунта WeChat, вы можете скачать электронную версию этой книги бесплатно.

прошлый обзор

  1. Стоя на плечах гигантов: трансферное обучение
  2. Используйте методы увеличения данных, чтобы улучшить возможности обобщения модели.
  3. Компьютерное зрение и глубокое обучение, достаточно прочитать эту книгу

image