Глава 3. Вводим нелинейность: теперь не только взвешенные суммы
141
Как видно из вывода, это достаточно простая модель с относительно небольшим
количеством (83) весовых коэффициентов. Форма выходного сигнала
[null,
3]
соответствует унитарному представлению категориального целевого признака.
Используемая для последнего слоя функция активации, а именно
многомерная
логистическая функция
(softmax), создана специально для задач многоклассовой
классификации. Математическое определение многомерной логистической функции
можно записать в псевдокоде следующим образом:
softmax([x1, x2, …, xn]) =
[exp(x1) / (exp(x1) + exp(x2) + … + exp(xn)),
exp(x2) / (exp(x1) + exp(x2) + … + exp(xn)),
...,
exp(xn) / (exp(x1) + exp(x2) + … + exp(xn))]
В отличие от сигмафункции активации многомерная логистическая функция
активации применяется не поэлементно, преобразование каждого из элементов вход
ного вектора зависит от всех остальных элементов. А именно: берется экспонента
каждого из элементов входного вектора (функция
exp
с основанием
e
= 2,718). Полу
ченное делится на сумму экспонент всех элементов. Что это нам дает? Вопервых,
гарантирует, что все числа находятся в интервале от 0 до 1. Вовторых, означает,
что сумма всех элементов выходного вектора равна 1. Такое свойство желательно,
поскольку: 1) выходные сигналы можно интерпретировать как соответствующие
классам оценки вероятностей и 2) выходные сигналы должны удовлетворять этому
свойству для совместимости с категориальной перекрестной энтропией в качестве
функции потерь. Втретьих, это определение гарантирует, что больший элемент во
входном векторе соответствует большему элементу в выходном. Для примера, допу
стим, что в результате умножения на матрицу и прибавления смещения в последнем
плотном слое получается такой вектор:
[-3, 0, -8]
Его длина равна 3, поскольку плотный слой содержит три нейрона. Обратите
внимание, что элементы представляют собой вещественные числа, не ограниченные
никаким диапазоном. Многомерная логистическая функция активации преобразует
этот вектор в такой:
[0.0474107, 0.9522698, 0.0003195]
Можете проверить это сами, запустив следующий код TensorFlow.js (например,
в консоли инструментов разработчика на странице
js.tensorflow.org
):
const x = tf.tensor1d([-3, 0, -8]);
tf.softmax(x).print();
Три элемента из результата многомерной логистической функции: 1) находятся
в интервале
[0,
1]
, 2) равны в сумме 1 и 3) упорядочены таким же образом, как
и элементы входного вектора. Благодаря этим свойствам выходной сигнал можно
интерпретировать как вероятности, которые модель назначает всем возможным
классам. В предыдущем фрагменте кода наибольшая вероятность соответствует
второй категории, а наименьшая — первой.
142
Do'stlaringiz bilan baham: |