Мы всегда хотели написать о потере кросс-энтропии. Это всего лишь естественное продолжение нашей популярной статьи об активации Softmax. Они лучшие друзья. Было так странно писать о Softmax без упоминания кросс-энтропии! Мы также прислушиваемся к нашим читателям в нашей статье Голосование за статью. Наша цель - написать как можно больше учебных пособий по ML, DL, обучению с подкреплением и науке о данных для начинающих. Следующий шаг - написать статьи о машинном обучении и написать о машинном обучении на китайском и японском языках! Если вам нравятся идеи, проголосуйте в нашей статье о конвейере. Как обычно, если вы хотите, вы можете написать нам по электронной почте, чтобы получить копию статьи. Хотите стать стипендиатом Uniqtech? Напишите нам hi@uniqtech.co, мы бесплатно предоставим вам несколько статей в обмен на ваши отзывы и / или подписку по электронной почте. Предположим, вы знаете, что такое Softmax. Если нет, прочтите нашу предыдущую статью. Это самый популярный в Интернете.
Есть двоичная перекрестная потеря энтропии и перекрестная потеря энтропии нескольких классов. Давайте сначала поговорим о кросс-энтропийной потере, а о двоичной, надеюсь, вспомним позже. Итак, теперь вы знаете свой Softmax, ваша модель предсказывает вектор вероятностей[0.7, 0.2, 0.1]
Сумма 70% 20% 10% составляет 100%, первая запись наиболее вероятна. И да, ваш истинный ярлык гласит [1, 0, 0]
- определенно кошка, а не собака на входе 2 и определенно не птица на входе 3. Итак, насколько хорошо предсказание вероятности вашей модели сработало? Поможет немного линейной алгебры - в частности, скалярное произведение! Скалярное произведение - это сумма умножения двух векторов по каждой записи. Псевдокод - это [0.7, 0.2,0.1] dot [1,0,0].transpose
, то есть векторная точка размером 1 на 3 a вектор 3 на 1 = 1x1 = число. 0.7 *1 + 0.2 * 0 + 0.1 * 0= 0.7
. Обратите внимание, что неправильная запись всегда будет равна нулю, потому что все, что умножено на ноль, равно нулю. И на истинном ярлыке всегда есть только одна запись: 1 [1,0,0], [0,1,0], or [0,0,1]
ты можешь быть только кошкой, собакой или птицей, не может иметь всего этого!
Чтобы вычислить, насколько похожи два вектора, вычислите их скалярное произведение! - сказал нам Uniqtech :)
Почему мы делаем случайные вычисления? Разве мы не делаем перекрестную потерю энтропии? Вышеупомянутый подход - это один из способов измерить сходство между двумя векторами. Фактически, это используется в системах рекомендаций фильмов и книг, называемых совместной фильтрацией! Подробнее об этом в другой статье. Перекрестная энтропия - еще один способ измерить, насколько хорош ваш вывод Softmax. Вот насколько похож ваш выходной вектор Softmax по сравнению с истинным вектором [1,0,0], [0,1,0],[0,0,1]
, например, если есть только три класса. Напоминаем, что Softmax предназначен для задач классификации нескольких классов. Для задач регрессии вы можете использовать MSL среднеквадратичных потерь. Для задач классификации с несколькими классами потеря кросс-энтропии - отличный кандидат и, возможно, самый популярный!
См. Снимок экрана ниже, чтобы увидеть красивую функцию потери кросс-энтропии. Это из видео Udacity, на которое мы также будем ссылаться. Но давайте сначала рассмотрим это вместе несколько минут. Другое название этого - категориальная кросс-энтропийная потеря.
S (y) - это результат вашей функции softmax. Это предсказание, поэтому мы также можем назвать его y_hat. L - чистая правда! Одна метка с горячим кодированием истинного класса, только одна запись - одна, остальные - нули. Для каждой записи в вашем векторе вывода на шаге 1 Softmax берет журнал этой первой записи, обычно меньше одного числа, поэтому он очень отрицательный, например, log_base_2 из 0,7 является отрицательным 0,5145731728297583 и 2 до -0,5145731728297583-й степени составляет 0,7 , Шаг 2 запись умножается на основную истину log(0.7)*1
, а затем Шаг 3 мы делаем это для каждой записи log(0.2)*0
, которая, конечно, равна нулю, а затем log(0.1)*0
, которая также равна нулю, затем шаг 4 из-за большой сигмы, суммируемой просто в перед L_i Log (S_i) мы суммируем все потери, что составляет -0,5145731728297583, на шаге 5 мы умножаем на -1 из-за большого отрицательного знака спереди и превращаем убыток в положительное число 0,5145731728297583
Легко помнить, что журнал применяется только к выходным данным Softmax, потому что основная истина с горячим кодированием почти всегда имеет нулевые записи, и мы не можем получить журнал из нуля.
Как и в случае с средними квадратами потерь, мы можем воспользоваться потерями, см. 1 / N на скриншоте ниже. Благодаря этому функция потерь работает нормально, даже если количество точек данных велико. На скриншоте ниже y - истинная истина, а y_hat - прогноз. То же, что и выше, только с 1 / N для расчета среднего.
Двоичная кросс-энтропия (потеря журнала)
Потеря бинарной кросс-энтропии выглядит сложнее, но на самом деле это легко, если вы подумаете о ней правильно.
Помните, что в бинарной классификации может быть только два состояния мира: либо y, либо основная истина равна единице или нулю.
Если y = 0, первый член равен нулю, поэтому мы вычисляем только (1-y) * log (1-y_hat). Поскольку y равно нулю, (1-y) = 1–0 = 1. Таким образом, этот член представляет собой просто log (1 – y_hat).
Если y = 1, то второй член равен нулю, действует только первый член.
См. Ниже изображение бинарной кросс-энтропии в дикой природе. Примером может служить статья ChexNet в Стэнфорде.
Кросс-энтропийная потеря при глубоком обучении
Какое место занимает функция кросс-энтропии в моем конвейере глубокого обучения? Он находится сразу после функции Softmax и принимает входные данные из вывода функции Softmax и истинную метку.
Теперь, когда вы много знаете о кросс-энтропийной потере, вы можете легко понять это видео ниже от специалиста по глубокому обучению Google.
Помните, что целью кросс-энтропийной потери является сравнение того, насколько хорошо выходное распределение вероятностей Softmax совпадает с однократно закодированной наземной меткой истинности данных. Одно горячее кодирование означает, что в каждом векторе-столбце только одна запись равна 1, остальные - нули. Обычно он используется при кодировании категориальных данных, когда все классы или категории независимы - например, объект не может одновременно быть кошкой, собакой и птицей.
Подпишитесь на нас, чтобы увидеть больше подобных статей!
Почему лог в формуле? Интуиция подсказывает нам, что для измерения сходства между двумя векторами мы можем использовать скалярное произведение двух векторов. Формула кросс-энтропии основана на теории информации, измеряет, насколько быстро информация может быть эффективно передана, например, в частности, кодирование, которое кодирует более частую информацию с небольшим количеством бит. Оказывается, рассчитывается с помощью журнала. log (1 / y), например.